From 6dd6fed3b4917c47e19ffdd412c4f3c9904afbba Mon Sep 17 00:00:00 2001 From: SariusSkelrets Date: Wed, 24 Jul 2024 19:45:36 -0400 Subject: [PATCH] First iteration of the Abyssal Hunger dungeon --- .../eocs/abyssal_hunger_eocs.json | 75 ++++++ data/mods/Xedra_Evolved/eocs/misc_eoc.json | 21 +- .../mapgen/abyssal_hunger_zone.json | 184 +++++++++++++++ data/mods/Xedra_Evolved/monsters/monster.json | 222 +++++++++++++++++- 4 files changed, 481 insertions(+), 21 deletions(-) create mode 100644 data/mods/Xedra_Evolved/eocs/abyssal_hunger_eocs.json create mode 100644 data/mods/Xedra_Evolved/mapgen/abyssal_hunger_zone.json diff --git a/data/mods/Xedra_Evolved/eocs/abyssal_hunger_eocs.json b/data/mods/Xedra_Evolved/eocs/abyssal_hunger_eocs.json new file mode 100644 index 0000000000000..5580ff091b9ca --- /dev/null +++ b/data/mods/Xedra_Evolved/eocs/abyssal_hunger_eocs.json @@ -0,0 +1,75 @@ +[ + + { + "type": "effect_on_condition", + "id": "EOC_ENTER_ABYSSAL_HUNGER_ZONE", + "effect": [ + { "u_location_variable": { "global_val": "original_loc" } }, + { "u_location_variable": { "global_val": "dungeon_loc" }, "z_adjust": 6, "z_override": true }, + { "u_location_variable": { "global_val": "dungeon_roof_loc" }, "z_adjust": 7, "z_override": true }, + { "revert_location": { "global_val": "dungeon_loc" }, "key": "abyssal_hunger_zone", "time_in_future": "infinite" }, + { "revert_location": { "global_val": "dungeon_roof_loc" }, "time_in_future": "infinite", "key": "abyssal_hunger_zone" }, + { "mapgen_update": "abyssal_hunger_roof", "target_var": { "global_val": "dungeon_roof_loc" } }, + { "mapgen_update": "abyssal_hunger_roof", "target_var": { "global_val": "dungeon_loc" } }, + { "u_teleport": { "global_val": "dungeon_start" }, "fail_message": "Something is very wrong!", "force": true }, + { "math": [ "abyssal_hunger_level", "=", "1" ] }, + { "u_message": "You were devoured by the Abyssal Hunger!" } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ENTER_ABYSSAL_HUNGER_NEXT_LEVEL", + "condition": { "math": [ "abyssal_hunger_level", "<", "5" ] }, + "effect": [ + { "math": [ "abyssal_hunger_level", "++" ] }, + { "mapgen_update": "portal_dungeon_cleanup", "target_var": { "global_val": "dungeon_loc" } }, + { "u_teleport": { "global_val": "dungeon_start" }, "fail_message": "Something is very wrong!", "force": true }, + { "mapgen_update": "abyssal_hunger_zone_regular", "target_var": { "global_val": "dungeon_loc" } }, + { "u_message": "You progress through the insides of the being that swallowed you." } + ], + "false_effect": [ + { "math": [ "abyssal_hunger_level", "++" ] }, + { "mapgen_update": "portal_dungeon_cleanup", "target_var": { "global_val": "dungeon_loc" } }, + { "u_teleport": { "global_val": "dungeon_start" }, "fail_message": "Something is very wrong!", "force": true }, + { "mapgen_update": "abyssal_hunger_zone_brain", "target_var": { "global_val": "dungeon_loc" } }, + { "u_message": "You progress through the insides of the being that swallowed you." } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ABYSSAL_HUNGER_EXIT", + "condition": { "math": [ "abyssal_hunger_level", "!=", "0" ] }, + "effect": [ + { "run_eocs": "EOC_ABYSSAL_HUNGER_EXIT" }, + { "u_spawn_item": "abyssal_hunger_shard" } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_ABYSSAL_HUNGER_EXIT", + "condition": { "math": [ "abyssal_hunger_level", "!=", "0" ] }, + "effect": [ + { "mapgen_update": "portal_dungeon_cleanup", "target_var": { "global_val": "dungeon_loc" } }, + { + "u_teleport": { "global_val": "original_loc" }, + "success_message": "You return to where you performed the ritual.", + "fail_message": "Something is very wrong!", + "force": true + }, + { "math": [ "abyssal_hunger_level", "=", "0" ] } + ] + }, + { + "id": "EOC_DEATH_ABYSSAL_HUNGER", + "type": "effect_on_condition", + "eoc_type": "AVATAR_DEATH", + "condition": { "math": [ "abyssal_hunger_level", "!=", "0" ] }, + "effect": [ + { + "u_message": "It is unclear if you were slain by an immune system or digested but suffice to say, you are no more.", + "popup": true + }, + { "run_eocs": "EOC_ABYSSAL_HUNGER_EXIT" } + ] + } +] diff --git a/data/mods/Xedra_Evolved/eocs/misc_eoc.json b/data/mods/Xedra_Evolved/eocs/misc_eoc.json index 2c07355d15850..cc78749965ef5 100644 --- a/data/mods/Xedra_Evolved/eocs/misc_eoc.json +++ b/data/mods/Xedra_Evolved/eocs/misc_eoc.json @@ -238,24 +238,5 @@ "type": "effect_on_condition", "id": "EOC_REMOVE_LUNA_MISSION", "effect": { "remove_active_mission": "MISSION_KILL_LUNA_ATTUNED" } - }, - - - - { - "type": "effect_on_condition", - "id": "EOC_ENTER_ABYSSAL_HUNGER_ZONE", - "effect": [ - - - - - - - - - - - ] - } + } ] diff --git a/data/mods/Xedra_Evolved/mapgen/abyssal_hunger_zone.json b/data/mods/Xedra_Evolved/mapgen/abyssal_hunger_zone.json new file mode 100644 index 0000000000000..70491a50dfd14 --- /dev/null +++ b/data/mods/Xedra_Evolved/mapgen/abyssal_hunger_zone.json @@ -0,0 +1,184 @@ +[ + { + "type": "palette", + "id": "abyssal_hunger_palette", + "terrain": { "0": "t_abyssal_flesh_floor", "1": "t_abyssal_flesh_wall", "B": "t_abyssal_brain", "T": "f_shard_location" } + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "portal_dungeon_roof", + "object": { + "set": [ { "square": "terrain", "id": "t_abyssal_flesh_roof", "x": 0, "y": 0, "x2": 23, "y2": 23 } ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN", "NO_UNDERLYING_ROTATE" ] + } + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "abyssal_hunger_zone_regular", + "object": { + "rows": [ + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaa1111111111111111aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1111111111111111aaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa" + ], + "palettes": [ "abyssal_hunger_palette" ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN", "NO_UNDERLYING_ROTATE" ], + "set": [ { "square": "furniture", "id": "f_null", "x": 0, "x2": 23, "y": 0, "y2": 23 }, + { "point": "variable", "id": "dungeon_start", "x": 1, "y": 2 }, + { "point": "trap", "id": "tr_abyssal_hunger_next_level", "x": [ 1, 22 ], "y": 22 } ], + "place_monster": [ { "group": "GROUP_ABYSSAL_HUNGER_CELLS", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 12, 16 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "abyssal_hunger_zone_brain", + "object": { + "rows": [ + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaa1111111111111111aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa10000BB00BB00001aaaa", + "aaaa10000BB00BB00001aaaa", + "aaaa1000BBBTTBBB0001aaaa", + "aaaa1000BBBBBBBB0001aaaa", + "aaaa1000BBBBBBBB0001aaaa", + "aaaa1000BBBBBBBB0001aaaa", + "aaaa10000BBBBBB00001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1000000000000001aaaa", + "aaaa1111111111111111aaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa", + "aaaaaaaaaaaaaaaaaaaaaaaa" + ], + "palettes": [ "abyssal_hunger_palette" ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN", "NO_UNDERLYING_ROTATE" ], + "set": [ { "square": "furniture", "id": "f_null", "x": 0, "x2": 23, "y": 0, "y2": 23 }, + { "point": "variable", "id": "dungeon_start", "x": 1, "y": 2 }, + { "point": "trap", "id": "tr_portal_dungeon_next_level", "x": [ 1, 22 ], "y": 22 } ], + "place_monster": [ { "group": "GROUP_ABYSSAL_HUNGER_CELLS", "x": [ 5, 18 ], "y": [ 5, 18 ], "repeat": [ 22, 26 ] } ] + } + }, + { + "type": "trap", + "id": "tr_abyssal_hunger_next_level", + "name": "Swirling vortex", + "color": "blue", + "copy-from": "tr_swirling_vortex", + "action": "spell", + "spell_data": { "id": "abyssal_hunger_next_level" } + }, + { + "type": "SPELL", + "id": "abyssal_hunger_next_level", + "name": "abyssal hunger next level", + "copy-from": "trap_base", + "effect_str": "EOC_PORTAL_STORM_DUNGEON_NEXT_LEVEL" + }, + { + "type": "furniture", + "id": "f_shard_location", + "name": "shard-filled brain chunk", + "description": "A chunk of brain matter holding some shards akin to the one you are looking for. Examine to pick one.", + "//": "On examine, activates the EOC cthat grants the player the shard before sending them back to the ritual point.", + "symbol": "S", + "color": "dark_gray", + "move_cost_mod": -1, + "coverage": 0, + "required_str": -1, + "flags": [ "NOCOLLIDE", "NO_PICKUP_ON_EXAMINE", "TRANSPARENT" ], + "examine_action": { "type": "effect_on_condition", "effect_on_conditions": [ "EOC_ABYSSAL_HUNGER_GRANT_SHARD" ] } + }, + { + "type": "terrain", + "id": "t_abyssal_flesh_wall", + "name": "warped flesh wall", + "description": "Cold to the touch, the deformed flesh of this monstrous being churns as it perceives your presence.", + "symbol": "LINE_OXOX", + "color": "magenta_red", + "move_cost": 0, + "coverage": 100, + "roof": "t_nm_floor_flesh", + "connect_groups": "WALL", + "connects_to": "WALL", + "flags": [ + "NOITEM", + "SUPPORTS_ROOF", + "WALL", + "NO_SCENT", + "AUTO_WALL_SYMBOL", + "BLOCK_WIND" + ], + "looks_like": "t_nm_wall_flesh", + "bash": { + "str_min": 99999, + "str_max": 99999, + "sound": "please report the bug allowing you to destroy these walls on github.", + "sound_fail": "whump!", + "ter_set": "t_abyssal_flesh_floor", + "items": [ { "item": "meat_tainted", "count": [ 1, 1 ] } ] + } + }, + + + + { + "type": "terrain", + "id": "t_abyssal_flesh_floor", + "name": "warped flesh floor", + "description": "Walking over the innards of this monstrous beast, you can feel it move underneath your feet.", + "symbol": ".", + "color": "magenta_white", + "move_cost": 1, + "connect_groups": "INDOORFLOOR", + "flags": [ + "TRANSPARENT", + "SUPPORTS_ROOF", + "INDOORS", + "FLAT" + ], + "looks_like": "t_nm_floor_flesh" + }, + { + "type": "terrain", + "id": "t_abyssal_flesh_roof", + "name": "warped flesh roof", + "description": "A section of flat, flesh-like rooftop.", + "symbol": ".", + "color": "magenta", + "move_cost": 2, + "flags": [ "FLAT" ] + } + ] diff --git a/data/mods/Xedra_Evolved/monsters/monster.json b/data/mods/Xedra_Evolved/monsters/monster.json index 931630a1b1b02..7877ad51bdec9 100644 --- a/data/mods/Xedra_Evolved/monsters/monster.json +++ b/data/mods/Xedra_Evolved/monsters/monster.json @@ -480,6 +480,226 @@ } ] + }, + { + "type": "MONSTER", + "id": "mon_grasping_globule", + "name": { "str": "grasping globule" }, + "description": "A large, irregular mass of greenish slime, leaking toxic gas wherever it goes. It forms tendrils as it percieves you, likely to keep you close to itself as you succumb to its gas.", + "default_faction": "nether", + "bodytype": "blob", + "species": [ "NETHER" ], + "volume": "240 L", + "weight": "300 kg", + "hp": 150, + "speed": 120, + "material": [ "flesh" ], + "symbol": "O", + "color": "black_green", + "aggression": 100, + "morale": 100, + "melee_skill": 5, + "melee_dice": 5, + "melee_dice_sides": 3, + "melee_damage": [ + { + "damage_type": "bash", + "amount": 3 + } + ], + "emit_fields": [ + { + "emit_id": "fd_toxic_gas", + "delay": "1 s" + } + ], + "dodge": 2, + "harvest": "exempt", + "corpse_type": "NO_CORPSE", + "vision": 70, + "vision_night": 70, + "special_attacks": [ + { + "id": "grab" + }, + [ + "ACID_BARF", + 10 + ], + { + "id": "grab_drag", + "cooldown": 3 + }, + { + "id": "drag_followup" + } + ], + "flags": [ + "SEES", + "HEARS", + "STUMBLES", + "GRABS", + "BASHES", + "GROUP_BASH", + "NO_BREATHE", + "PUSH_MON" + ], + "grab_strength": 40 + }, + { + "type": "MONSTER", + "id": "mon_bashing_globule", + "name": { "str": "bashing globule" }, + "description": "A large, irregular mass of reddish slime, forming appendages to bash its targets. It wanders blindly, seeking something to crush with its mass.", + "default_faction": "nether", + "bodytype": "blob", + "species": [ "NETHER" ], + "volume": "240 L", + "weight": "300 kg", + "hp": 200, + "speed": 140, + "material": [ "flesh" ], + "symbol": "O", + "color": "black_red", + "aggression": 100, + "morale": 100, + "melee_skill": 5, + "melee_dice": 6, + "melee_dice_sides": 7, + "melee_damage": [ + { + "damage_type": "bash", + "amount": 7 + } + ], + "dodge": 2, + "harvest": "exempt", + "corpse_type": "NO_CORPSE", + "vision": 5, + "vision_night": 5, + "flags": [ + "SEES", + "HEARS", + "STUMBLES", + "BASHES", + "GROUP_BASH", + "NO_BREATHE", + "PUSH_MON" + ] + }, + { + "type": "MONSTER", + "id": "mon_spewing_globule", + "name": { "str": "spewing globule" }, + "description": "This mass of slime quivers as you approach. Beneath the surface, you see shapes trying to find a way out of it.", + "default_faction": "nether", + "bodytype": "blob", + "species": [ "NETHER" ], + "volume": "875 L", + "weight": "200 kg", + "hp": 300, + "speed": 85, + "material": [ "flesh" ], + "symbol": "O", + "color": "white_magenta", + "aggression": 100, + "morale": 100, + "harvest": "exempt", + "corpse_type": "NO_CORPSE", + "special_attacks": [ + { + "type": "spell", + "spell_data": { + "id": "mucus_spawn", + "hit_self": true + }, + "cooldown": 20, + "monster_message": "%s spews mucus at you!" + }, + { + "type": "spell", + "spell_data": { + "id": "small_globule_spawn", + "hit_self": true + }, + "cooldown": 5, + "monster_message": "%s opens itself, and some small globules crawl out of it!" + } + ], + "flags": [ + "SEES", + "HEARS", + "NO_BREATHE", + "IMMOBILE", + "PUSH_MON", + "SMELLS" + ], + "vision_day": 83, + "vision_night": 83 + }, + { + "type": "MONSTER", + "id": "mon_mall_globule", + "name": { "str": "small globule" }, + "description": "This small, swift ball of slime moves to attack you without hesitation. Despite its size and lack of strength, its speed must not be underestimated.", + "default_faction": "nether", + "bodytype": "blob", + "species": [ "NETHER" ], + "volume": "18 L", + "weight": "20 kg", + "hp": 10, + "speed": 135, + "material": [ "flesh" ], + "symbol": "O", + "color": "white", + "aggression": 100, + "morale": 100, + "melee_skill": 2, + "melee_dice": 3, + "melee_dice_sides": 2, + "melee_damage": [ + { + "damage_type": "bash", + "amount": 2 + } + ], + "harvest": "exempt", + "corpse_type": "NO_CORPSE", + "flags": [ + "SEES", + "HEARS", + "NO_BREATHE", + "SMELLS" + ], + "vision_day": 83, + "vision_night": 83 + }, + { + "type": "MONSTER", + "id": "mon_mucus", + "name": { "str": "mucus" }, + "description": "A mass of mucus, produced to hinder your movements.", + "default_faction": "nether", + "bodytype": "blob", + "species": [ "NETHER" ], + "volume": "875 L", + "weight": "200 kg", + "hp": 30, + "speed": 0, + "//": "The goal is to make it immobile without the flag, so others can push them.", + "material": [ "flesh" ], + "symbol": "O", + "color": "light_gray", + "aggression": 100, + "morale": 100, + "harvest": "exempt", + "corpse_type": "NO_CORPSE", + "flags": [ + "SEES", + "HEARS", + "NO_BREATHE" + ], + "vision_day": 0, + "vision_night": 0 } - ]