mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-03-30 01:43:25 -07:00
Fix bugs, refactor quarry regions so you can access chests in lower quarry with ice grapples
This commit is contained in:
@@ -693,6 +693,7 @@ tunic_er_regions: Dict[str, RegionInfo] = {
|
||||
"Monastery Rope": RegionInfo("Quarry Redux"),
|
||||
"Lower Quarry": RegionInfo("Quarry Redux"),
|
||||
"Even Lower Quarry": RegionInfo("Quarry Redux"),
|
||||
"Even Lower Quarry Isolated Chest": RegionInfo("Quarry Redux"), # a region for that one chest
|
||||
"Lower Quarry Zig Door": RegionInfo("Quarry Redux"),
|
||||
"Rooted Ziggurat Entry": RegionInfo("ziggurat2020_0"),
|
||||
"Rooted Ziggurat Upper Entry": RegionInfo("ziggurat2020_1"),
|
||||
@@ -1470,15 +1471,17 @@ traversal_requirements: Dict[str, Dict[str, List[List[str]]]] = {
|
||||
[],
|
||||
"Quarry Monastery Entry":
|
||||
[],
|
||||
"Lower Quarry Zig Door":
|
||||
[["IG3"]],
|
||||
},
|
||||
"Lower Quarry": {
|
||||
"Even Lower Quarry":
|
||||
[],
|
||||
},
|
||||
"Even Lower Quarry": {
|
||||
"Lower Quarry":
|
||||
"Even Lower Quarry Isolated Chest":
|
||||
[],
|
||||
},
|
||||
"Even Lower Quarry Isolated Chest": {
|
||||
"Even Lower Quarry":
|
||||
[],
|
||||
"Lower Quarry Zig Door":
|
||||
[["Quarry", "Quarry Connector"], ["IG3"]],
|
||||
|
||||
@@ -891,15 +891,21 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
||||
rule=lambda state: has_ladder("Ladders in Lower Quarry", state, world)
|
||||
or has_ice_grapple_logic(True, IceGrappling.option_easy, state, world))
|
||||
|
||||
# nmg: bring a scav over, then ice grapple through the door, only with ER on to avoid soft lock
|
||||
regions["Even Lower Quarry"].connect(
|
||||
connecting_region=regions["Even Lower Quarry Isolated Chest"])
|
||||
# you grappled down, might as well loot the rest too
|
||||
lower_quarry_empty_to_combat = regions["Even Lower Quarry Isolated Chest"].connect(
|
||||
connecting_region=regions["Even Lower Quarry"],
|
||||
rule=lambda state: has_mask(state, world))
|
||||
|
||||
regions["Even Lower Quarry Isolated Chest"].connect(
|
||||
connecting_region=regions["Lower Quarry Zig Door"],
|
||||
rule=lambda state: state.has("Activate Quarry Fuse", player)
|
||||
or has_ice_grapple_logic(False, IceGrappling.option_hard, state, world))
|
||||
|
||||
# nmg: use ice grapple to get from the beginning of Quarry to the door without really needing mask only with ER on
|
||||
# don't need the mask for this either, please don't complain about not needing a mask here, you know what you did
|
||||
regions["Quarry"].connect(
|
||||
connecting_region=regions["Lower Quarry Zig Door"],
|
||||
connecting_region=regions["Even Lower Quarry Isolated Chest"],
|
||||
rule=lambda state: has_ice_grapple_logic(True, IceGrappling.option_hard, state, world))
|
||||
|
||||
monastery_front_to_back = regions["Monastery Front"].connect(
|
||||
@@ -1308,6 +1314,8 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
||||
lambda state: has_combat_reqs("Quarry", state, player))
|
||||
set_rule(monastery_front_to_back,
|
||||
lambda state: has_combat_reqs("Quarry", state, player))
|
||||
set_rule(lower_quarry_empty_to_combat,
|
||||
lambda state: has_combat_reqs("Quarry", state, player))
|
||||
|
||||
set_rule(zig_low_entry_to_front,
|
||||
lambda state: has_combat_reqs("Rooted Ziggurat", state, player))
|
||||
@@ -1318,9 +1326,9 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
||||
or (has_ability(prayer, state, world) and has_combat_reqs("Rooted Ziggurat", state, player)))
|
||||
set_rule(zig_low_back_to_mid,
|
||||
lambda state: (state.has(laurels, player)
|
||||
or has_ice_grapple_logic(True, IceGrappling.option_easy, state, world)
|
||||
or has_ice_grapple_logic(True, IceGrappling.option_easy, state, world))
|
||||
and has_ability(prayer, state, world)
|
||||
and has_combat_reqs("Rooted Ziggurat", state, player)))
|
||||
and has_combat_reqs("Rooted Ziggurat", state, player))
|
||||
|
||||
# only activating the fuse requires combat logic
|
||||
set_rule(cath_entry_to_elev,
|
||||
|
||||
@@ -44,14 +44,14 @@ def create_er_regions(world: "TunicWorld") -> Dict[Portal, Portal]:
|
||||
|
||||
portal_pairs = vanilla_portals(world, regions)
|
||||
|
||||
create_randomized_entrances(portal_pairs, regions)
|
||||
|
||||
set_er_region_rules(world, regions, portal_pairs)
|
||||
|
||||
for location_name, location_id in world.location_name_to_id.items():
|
||||
region = regions[location_table[location_name].er_region]
|
||||
location = TunicERLocation(world.player, location_name, location_id, region)
|
||||
region.locations.append(location)
|
||||
|
||||
create_randomized_entrances(portal_pairs, regions)
|
||||
|
||||
for region in regions.values():
|
||||
world.multiworld.regions.append(region)
|
||||
|
||||
@@ -233,7 +233,7 @@ location_table: Dict[str, TunicLocationData] = {
|
||||
"Quarry - [Lowlands] Upper Walkway": TunicLocationData("Lower Quarry", "Even Lower Quarry"),
|
||||
"Quarry - [West] Lower Area Below Bridge": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||
"Quarry - [West] Lower Area Isolated Chest": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||
"Quarry - [Lowlands] Near Elevator": TunicLocationData("Lower Quarry", "Even Lower Quarry"),
|
||||
"Quarry - [Lowlands] Near Elevator": TunicLocationData("Lower Quarry", "Even Lower Quarry Isolated Chest"),
|
||||
"Quarry - [West] Lower Area After Bridge": TunicLocationData("Lower Quarry", "Lower Quarry"),
|
||||
"Rooted Ziggurat Upper - Near Bridge Switch": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Upper Front"),
|
||||
"Rooted Ziggurat Upper - Beneath Bridge To Administrator": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Upper Back"),
|
||||
|
||||
@@ -178,7 +178,6 @@ class CombatLogic(Choice):
|
||||
option_off = 0
|
||||
option_bosses_only = 1
|
||||
option_on = 2
|
||||
# todo: fix unit test failures when default is not 0
|
||||
default = 2
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user