mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-04-11 16:38:16 -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"),
|
"Monastery Rope": RegionInfo("Quarry Redux"),
|
||||||
"Lower Quarry": RegionInfo("Quarry Redux"),
|
"Lower Quarry": RegionInfo("Quarry Redux"),
|
||||||
"Even 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"),
|
"Lower Quarry Zig Door": RegionInfo("Quarry Redux"),
|
||||||
"Rooted Ziggurat Entry": RegionInfo("ziggurat2020_0"),
|
"Rooted Ziggurat Entry": RegionInfo("ziggurat2020_0"),
|
||||||
"Rooted Ziggurat Upper Entry": RegionInfo("ziggurat2020_1"),
|
"Rooted Ziggurat Upper Entry": RegionInfo("ziggurat2020_1"),
|
||||||
@@ -1470,15 +1471,17 @@ traversal_requirements: Dict[str, Dict[str, List[List[str]]]] = {
|
|||||||
[],
|
[],
|
||||||
"Quarry Monastery Entry":
|
"Quarry Monastery Entry":
|
||||||
[],
|
[],
|
||||||
"Lower Quarry Zig Door":
|
|
||||||
[["IG3"]],
|
|
||||||
},
|
},
|
||||||
"Lower Quarry": {
|
"Lower Quarry": {
|
||||||
"Even Lower Quarry":
|
"Even 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":
|
"Lower Quarry Zig Door":
|
||||||
[["Quarry", "Quarry Connector"], ["IG3"]],
|
[["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)
|
rule=lambda state: has_ladder("Ladders in Lower Quarry", state, world)
|
||||||
or has_ice_grapple_logic(True, IceGrappling.option_easy, 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(
|
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"],
|
connecting_region=regions["Lower Quarry Zig Door"],
|
||||||
rule=lambda state: state.has("Activate Quarry Fuse", player)
|
rule=lambda state: state.has("Activate Quarry Fuse", player)
|
||||||
or has_ice_grapple_logic(False, IceGrappling.option_hard, state, world))
|
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(
|
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))
|
rule=lambda state: has_ice_grapple_logic(True, IceGrappling.option_hard, state, world))
|
||||||
|
|
||||||
monastery_front_to_back = regions["Monastery Front"].connect(
|
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))
|
lambda state: has_combat_reqs("Quarry", state, player))
|
||||||
set_rule(monastery_front_to_back,
|
set_rule(monastery_front_to_back,
|
||||||
lambda state: has_combat_reqs("Quarry", state, player))
|
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,
|
set_rule(zig_low_entry_to_front,
|
||||||
lambda state: has_combat_reqs("Rooted Ziggurat", state, player))
|
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)))
|
or (has_ability(prayer, state, world) and has_combat_reqs("Rooted Ziggurat", state, player)))
|
||||||
set_rule(zig_low_back_to_mid,
|
set_rule(zig_low_back_to_mid,
|
||||||
lambda state: (state.has(laurels, player)
|
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_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
|
# only activating the fuse requires combat logic
|
||||||
set_rule(cath_entry_to_elev,
|
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)
|
portal_pairs = vanilla_portals(world, regions)
|
||||||
|
|
||||||
|
create_randomized_entrances(portal_pairs, regions)
|
||||||
|
|
||||||
set_er_region_rules(world, regions, portal_pairs)
|
set_er_region_rules(world, regions, portal_pairs)
|
||||||
|
|
||||||
for location_name, location_id in world.location_name_to_id.items():
|
for location_name, location_id in world.location_name_to_id.items():
|
||||||
region = regions[location_table[location_name].er_region]
|
region = regions[location_table[location_name].er_region]
|
||||||
location = TunicERLocation(world.player, location_name, location_id, region)
|
location = TunicERLocation(world.player, location_name, location_id, region)
|
||||||
region.locations.append(location)
|
region.locations.append(location)
|
||||||
|
|
||||||
create_randomized_entrances(portal_pairs, regions)
|
|
||||||
|
|
||||||
for region in regions.values():
|
for region in regions.values():
|
||||||
world.multiworld.regions.append(region)
|
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 - [Lowlands] Upper Walkway": TunicLocationData("Lower Quarry", "Even Lower Quarry"),
|
||||||
"Quarry - [West] Lower Area Below Bridge": TunicLocationData("Lower Quarry", "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 - [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"),
|
"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 - Near Bridge Switch": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Upper Front"),
|
||||||
"Rooted Ziggurat Upper - Beneath Bridge To Administrator": TunicLocationData("Rooted Ziggurat", "Rooted Ziggurat Upper Back"),
|
"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_off = 0
|
||||||
option_bosses_only = 1
|
option_bosses_only = 1
|
||||||
option_on = 2
|
option_on = 2
|
||||||
# todo: fix unit test failures when default is not 0
|
|
||||||
default = 2
|
default = 2
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user