Skip to content

Commit

Permalink
Add First Version of Portal Storm Dungeons (#58500)
Browse files Browse the repository at this point in the history
Co-authored-by: TheShadowFerret <[email protected]>
  • Loading branch information
Ramza13 and TheShadowFerret authored Jul 1, 2022
1 parent 23bc5ff commit 8b678c8
Show file tree
Hide file tree
Showing 50 changed files with 1,139 additions and 261 deletions.
10 changes: 10 additions & 0 deletions data/json/effect_on_condition.json
Original file line number Diff line number Diff line change
Expand Up @@ -354,6 +354,16 @@
"deactivate_condition": { "not": { "u_has_bionics": "bio_leaky" } },
"effect": [ { "u_mod_healthy": -1, "cap": -200 } ]
},
{
"id": "EOC_DEATH_PORTAL_DUNGEON",
"type": "effect_on_condition",
"eoc_type": "AVATAR_DEATH",
"condition": { "compare_int": [ { "global_val": "var", "var_name": "portal_dungeon_level" }, "!=", { "const": 0 } ] },
"effect": {
"u_message": "Your ultimate fate is hard to sum up in words but suffice to say, the thing that used to be you wishes it had hidden from the storm.",
"popup": true
}
},
{
"id": "EOC_DEATH_SWITCH",
"type": "effect_on_condition",
Expand Down
11 changes: 11 additions & 0 deletions data/json/effects.json
Original file line number Diff line number Diff line change
Expand Up @@ -3504,5 +3504,16 @@
"id": "eyebot_depleted",
"int_add_val": 1,
"max_intensity": 10
},
{
"id": "weakened_inertia",
"type": "effect_type",
"name": [ "Weakened Inertia" ],
"desc": [ "Your body moves strangely easily, as if it weighted less." ],
"apply_message": "Reality as you know it is damaged, but for a change the outcome seems suspiciously beneficial.",
"remove_message": "Reality reasserts itself and your inertia returns to normal.",
"rating": "good",
"show_intensity": false,
"base_mods": { "dex_mod": [ 4, 0 ] }
}
]
4 changes: 4 additions & 0 deletions data/json/flags/trap.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,9 @@
{
"type": "json_flag",
"id": "CONVECTS_TEMPERATURE"
},
{
"type": "json_flag",
"id": "UNDODGEABLE"
}
]
20 changes: 20 additions & 0 deletions data/json/items/nether.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[
{
"type": "COMESTIBLE",
"id": "escape_stone",
"name": { "str_sp": "escape stone" },
"color": "magenta",
"use_action": {
"type": "effect_on_conditions",
"description": "Seems like a spatial distortion.",
"effect_on_conditions": [ "EOC_PORTAL_STORM_CELL" ]
},
"comestible_type": "FOOD",
"volume": "250 ml",
"weight": "10 g",
"symbol": "@",
"description": "Nothing about this is appealing but it doesn't feel malevolent.",
"flags": [ "NO_AUTO_CONSUME" ],
"fun": -10
}
]
95 changes: 95 additions & 0 deletions data/json/mapgen/portal_storm.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,101 @@
"update_mapgen_id": "portal_cell_cleanup",
"object": { "set": [ { "square": "item_remove", "x": 0, "y": 0, "x2": 5, "y2": 5 } ], "flags": [ "NO_UNDERLYING_ROTATE" ] }
},
{
"type": "mapgen",
"method": "json",
"update_mapgen_id": "portal_dungeon",
"object": {
"flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN", "NO_UNDERLYING_ROTATE" ],
"set": [
{ "square": "terrain", "id": "t_floor_warped", "x": 1, "y": 1, "x2": 23, "y2": 23 },
{ "line": "terrain", "id": "t_wall_warped", "x": 0, "y": 0, "x2": 0, "y2": 23 },
{ "line": "terrain", "id": "t_wall_warped", "x": 0, "y": 0, "x2": 23, "y2": 0 },
{ "line": "terrain", "id": "t_wall_warped", "x": 23, "y": 0, "x2": 23, "y2": 23 },
{ "line": "terrain", "id": "t_wall_warped", "x": 0, "y": 23, "x2": 23, "y2": 23 },
{ "point": "variable", "id": "dungeon_start", "x": 1, "y": 2 },
{ "point": "trap", "id": "tr_portal_dungeon_exit", "x": 1, "y": 1 },
{ "point": "trap", "id": "tr_portal_dungeon_next_level", "x": [ 1, 22 ], "y": 22 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 3, "x2": 22, "y2": 3 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 3 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 6, "x2": 22, "y2": 6 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 6 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 9, "x2": 22, "y2": 9 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 9 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 12, "x2": 22, "y2": 12 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 12 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 15, "x2": 22, "y2": 15 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 15 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 18, "x2": 22, "y2": 18 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 18 },
{ "line": "terrain", "id": "t_wall_warped", "x": 1, "y": 21, "x2": 22, "y2": 21 },
{ "point": "terrain", "id": "t_floor_warped", "x": [ 1, 22 ], "y": 21 },
{ "point": "terrain", "id": "t_wall_warped", "x": [ 2, 22 ], "y": [ 2, 22 ], "repeat": [ 65, 85 ] }
]
}
},
{
"type": "mapgen",
"method": "json",
"update_mapgen_id": "portal_dungeon_roof",
"object": {
"set": [ { "square": "terrain", "id": "t_warped_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": "portal_dungeon_cleanup",
"object": {
"set": [
{ "square": "item_remove", "x": 0, "y": 0, "x2": 23, "y2": 23 },
{ "square": "trap_remove", "id": "tr_null", "x": 0, "y": 0, "x2": 23, "y2": 23 },
{ "square": "creature_remove", "x": 0, "y": 0, "x2": 23, "y2": 23 }
],
"flags": [ "NO_UNDERLYING_ROTATE" ]
}
},
{
"type": "mapgen",
"method": "json",
"update_mapgen_id": "portal_dungeon_entrance",
"object": {
"rows": [
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaa001100aaaaaaaaa",
"aaaaaaaaa000000aaaaaaaaa",
"aaaaaaaaa100001aaaaaaaaa",
"aaaaaaaaa000000aaaaaaaaa",
"aaaaaaaaa001100aaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa",
"aaaaaaaaaaaaaaaaaaaaaaaa"
],
"palettes": [ "portal_storm_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": "trap", "id": "tr_portal_dungeon_entrance", "x": 11, "y": 11 },
{ "point": "variable", "id": "portal_dungeon_exit", "x": 12, "y": 11 }
]
}
},
{
"type": "mapgen",
"method": "json",
Expand Down
42 changes: 42 additions & 0 deletions data/json/monster_special_attacks/spells.json
Original file line number Diff line number Diff line change
Expand Up @@ -591,5 +591,47 @@
"max_radius": 5,
"lifespan": [ "5 seconds", "10 seconds" ]
}
},
{
"type": "SPELL",
"id": "mon_endless_hunger_revive",
"name": { "str": "Endless Hunger Revive" },
"description": "Revives the endless hunger.",
"valid_targets": [ "self", "ground" ],
"max_level": 1,
"flags": [ "SILENT", "NO_HANDS", "NO_LEGS" ],
"base_casting_time": 75,
"min_range": 15,
"max_range": 15,
"shape": "blast",
"effect": "effect_on_condition",
"effect_str": "EOC_PORTAL_STORM_DUNGEON_ENDLESS_HUNGER_RESPAWN"
},
{
"type": "effect_on_condition",
"id": "EOC_PORTAL_STORM_DUNGEON_ENDLESS_HUNGER_RESPAWN",
"effect": [ { "queue_eocs": "EOC_PORTAL_STORM_DUNGEON_ENDLESS_HUNGER_SPAWN", "time_in_future": [ "30 seconds", "1 minutes" ] } ]
},
{
"type": "SPELL",
"id": "mon_tainted_shadow_revive",
"name": { "str": "Tainted Shadow Revive" },
"description": "Revives the tainted shadow.",
"valid_targets": [ "self", "ground" ],
"max_level": 1,
"flags": [ "SILENT", "NO_HANDS", "NO_LEGS" ],
"base_casting_time": 75,
"min_range": 15,
"max_range": 15,
"shape": "blast",
"effect": "effect_on_condition",
"effect_str": "EOC_PORTAL_STORM_SHADOW_RESPAWN"
},
{
"type": "effect_on_condition",
"id": "EOC_PORTAL_STORM_SHADOW_RESPAWN",
"condition": { "x_in_y_chance": { "x": 8, "y": 10 } },
"effect": [ { "queue_eocs": "EOC_PORTAL_STORM_SHADOW_SPAWN", "time_in_future": [ "30 seconds", "1 minutes" ] } ],
"false_effect": [ { "u_lose_trait": "TAINTED_SHADOW" } ]
}
]
52 changes: 52 additions & 0 deletions data/json/monsters/nether.json
Original file line number Diff line number Diff line change
Expand Up @@ -1153,5 +1153,57 @@
],
"death_function": { "corpse_type": "NO_CORPSE", "message": "Your memory can't decide whether the %s was even there in the first place." },
"flags": [ "FLIES", "NO_BREATHE", "SEES", "HEARS", "RANGED_ATTACKER" ]
},
{
"id": "mon_endless_hunger",
"type": "MONSTER",
"name": { "str": "endless hunger" },
"description": "Your mind fills in large shifting images of predators to save you from its actual appearance.",
"default_faction": "nether",
"species": [ "NETHER" ],
"volume": "62500 ml",
"weight": "0 g",
"hp": 35,
"speed": 80,
"symbol": "O",
"color": "dark_gray",
"aggression": 100,
"morale": 100,
"melee_skill": 5,
"melee_dice": 2,
"melee_dice_sides": 2,
"melee_damage": [ { "damage_type": "cut", "amount": 10 } ],
"death_function": {
"effect": { "id": "mon_endless_hunger_revive", "hit_self": true },
"corpse_type": "NO_CORPSE",
"message": "Something about the %s disappearing feels off.."
},
"flags": [ "SEES", "HEARS", "NO_BREATHE", "PUSH_MON", "ALWAYS_VISIBLE" ]
},
{
"id": "mon_tainted_shadow",
"type": "MONSTER",
"name": { "str": "tainted shadow" },
"description": "Your shadow is host to something alien.",
"default_faction": "nether",
"species": [ "NETHER" ],
"volume": "62500 ml",
"weight": "0 g",
"hp": 35,
"speed": 100,
"symbol": "H",
"color": "dark_gray",
"aggression": 100,
"morale": 100,
"melee_skill": 5,
"melee_dice": 2,
"melee_dice_sides": 2,
"melee_damage": [ { "damage_type": "cut", "amount": 10 } ],
"death_function": {
"effect": { "id": "mon_tainted_shadow_revive", "hit_self": true },
"corpse_type": "NO_CORPSE",
"message": "Your shadow seemingly becomes normal again."
},
"flags": [ "SEES", "HEARS", "NO_BREATHE" ]
}
]
10 changes: 10 additions & 0 deletions data/json/mutations/mutations.json
Original file line number Diff line number Diff line change
Expand Up @@ -8014,5 +8014,15 @@
"category": [ "MEDICAL" ],
"threshreq": [ "THRESH_MEDICAL" ],
"hp_modifier_secondary": 0.3
},
{
"type": "mutation",
"id": "TAINTED_SHADOW",
"name": { "str": "Tainted Shadow" },
"description": "You shouldn't see this. This makes you spawn tainted shadows.",
"points": 0,
"player_display": false,
"purifiable": false,
"valid": false
}
]
10 changes: 10 additions & 0 deletions data/json/npcs/missiondef.json
Original file line number Diff line number Diff line change
Expand Up @@ -830,5 +830,15 @@
"place_liquids": [ { "liquid": "gasoline", "x": [ 5, 20 ], "y": [ 5, 20 ], "amount": 5, "repeat": 40 } ],
"place_fields": [ { "field": "fd_fire", "x": [ 5, 20 ], "y": [ 5, 20 ], "repeat": 40 } ]
}
},
{
"id": "MISSION_INVESTIGATE_PORTAL_DUNGEON",
"type": "mission_definition",
"name": { "str": "Investigate Strange Location" },
"goal": "MGOAL_GO_TO",
"description": "You could find this place upside down, dizzy and blindfolded. Its presence is too altered to allow the mercy of ignorance.",
"difficulty": 0,
"value": 0,
"start": { "assign_mission_target": { "var": { "global_val": "portal_dungeon" } } }
}
]
Loading

0 comments on commit 8b678c8

Please sign in to comment.