mirror of
https://github.com/ArchipelagoMW/Archipelago.git
synced 2026-04-13 13:13:29 -07:00
Weird west garden dagger house edge case
This commit is contained in:
@@ -39,6 +39,24 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
|||||||
player = world.player
|
player = world.player
|
||||||
options = world.options
|
options = world.options
|
||||||
|
|
||||||
|
# input scene destination tag, returns portal's name and paired portal's region
|
||||||
|
def get_portal_info(portal_sd: str) -> Tuple[str, str]:
|
||||||
|
for portal1, portal2 in portal_pairs.items():
|
||||||
|
if portal1.scene_destination() == portal_sd:
|
||||||
|
return portal1.name, portal2.region
|
||||||
|
if portal2.scene_destination() == portal_sd:
|
||||||
|
return portal2.name, portal1.region
|
||||||
|
raise Exception("no matches found in get_portal_info")
|
||||||
|
|
||||||
|
# input scene destination tag, returns paired portal's name and region
|
||||||
|
def get_paired_portal(portal_sd: str) -> Tuple[str, str]:
|
||||||
|
for portal1, portal2 in portal_pairs.items():
|
||||||
|
if portal1.scene_destination() == portal_sd:
|
||||||
|
return portal2.name, portal2.region
|
||||||
|
if portal2.scene_destination() == portal_sd:
|
||||||
|
return portal1.name, portal1.region
|
||||||
|
raise Exception("no matches found in get_paired_portal")
|
||||||
|
|
||||||
regions["Menu"].connect(
|
regions["Menu"].connect(
|
||||||
connecting_region=regions["Overworld"])
|
connecting_region=regions["Overworld"])
|
||||||
|
|
||||||
@@ -521,7 +539,7 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
|||||||
|
|
||||||
wg_checkpoint_to_dagger = regions["West Garden South Checkpoint"].connect(
|
wg_checkpoint_to_dagger = regions["West Garden South Checkpoint"].connect(
|
||||||
connecting_region=regions["West Garden at Dagger House"])
|
connecting_region=regions["West Garden at Dagger House"])
|
||||||
wg_dagger_to_checkpoint = regions["West Garden at Dagger House"].connect(
|
regions["West Garden at Dagger House"].connect(
|
||||||
connecting_region=regions["West Garden South Checkpoint"])
|
connecting_region=regions["West Garden South Checkpoint"])
|
||||||
|
|
||||||
wg_checkpoint_to_before_boss = regions["West Garden South Checkpoint"].connect(
|
wg_checkpoint_to_before_boss = regions["West Garden South Checkpoint"].connect(
|
||||||
@@ -1053,16 +1071,8 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
|||||||
(state.has_all({red_hexagon, green_hexagon, blue_hexagon, "Unseal the Heir"}, player)
|
(state.has_all({red_hexagon, green_hexagon, blue_hexagon, "Unseal the Heir"}, player)
|
||||||
and state.has_group_unique("Hero Relics", player, 6)
|
and state.has_group_unique("Hero Relics", player, 6)
|
||||||
and has_sword(state, player))))
|
and has_sword(state, player))))
|
||||||
|
|
||||||
if options.ladder_storage:
|
if options.ladder_storage:
|
||||||
def get_portal_info(portal_sd: str) -> Tuple[str, str]:
|
|
||||||
for portal1, portal2 in portal_pairs.items():
|
|
||||||
if portal1.scene_destination() == portal_sd:
|
|
||||||
return portal1.name, portal2.region
|
|
||||||
if portal2.scene_destination() == portal_sd:
|
|
||||||
return portal2.name, portal1.region
|
|
||||||
raise Exception("no matches found in get_paired_region")
|
|
||||||
|
|
||||||
# connect ls elevation regions to their destinations
|
# connect ls elevation regions to their destinations
|
||||||
def ls_connect(origin_name: str, portal_sdt: str) -> None:
|
def ls_connect(origin_name: str, portal_sdt: str) -> None:
|
||||||
p_name, paired_region_name = get_portal_info(portal_sdt)
|
p_name, paired_region_name = get_portal_info(portal_sdt)
|
||||||
@@ -1213,7 +1223,6 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
|||||||
add_rule(dt_exit_to_main,
|
add_rule(dt_exit_to_main,
|
||||||
lambda state: has_combat_reqs("Dark Tomb", state, player))
|
lambda state: has_combat_reqs("Dark Tomb", state, player))
|
||||||
|
|
||||||
# todo: add rule for running past the enemies and into dagger house, with a can_reach for the entrance
|
|
||||||
set_rule(wg_before_to_after_terry,
|
set_rule(wg_before_to_after_terry,
|
||||||
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
||||||
set_rule(wg_after_to_before_terry,
|
set_rule(wg_after_to_before_terry,
|
||||||
@@ -1221,12 +1230,16 @@ def set_er_region_rules(world: "TunicWorld", regions: Dict[str, Region], portal_
|
|||||||
# laurels through, probably to the checkpoint, or just fight
|
# laurels through, probably to the checkpoint, or just fight
|
||||||
set_rule(wg_checkpoint_to_after_terry,
|
set_rule(wg_checkpoint_to_after_terry,
|
||||||
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
||||||
set_rule(wg_checkpoint_to_dagger,
|
|
||||||
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
|
||||||
set_rule(wg_dagger_to_checkpoint,
|
|
||||||
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
|
||||||
set_rule(wg_checkpoint_to_before_boss,
|
set_rule(wg_checkpoint_to_before_boss,
|
||||||
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player))
|
lambda state: has_combat_reqs("West Garden", state, player))
|
||||||
|
|
||||||
|
# for spots where you can go into and come out of an entrance to reset enemy aggro
|
||||||
|
if world.options.entrance_rando:
|
||||||
|
dagger_entry_paired_name, dagger_entry_paired_region = get_paired_portal("Archipelagos Redux, Archipelagos_house_")
|
||||||
|
set_rule(wg_checkpoint_to_dagger,
|
||||||
|
lambda state: state.has(laurels, player) or has_combat_reqs("West Garden", state, player)
|
||||||
|
or state.can_reach_entrance(dagger_entry_paired_name, player))
|
||||||
|
world.multiworld.register_indirect_condition(regions["West Garden at Dagger House"], dagger_entry_paired_region)
|
||||||
|
|
||||||
|
|
||||||
def set_er_location_rules(world: "TunicWorld") -> None:
|
def set_er_location_rules(world: "TunicWorld") -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user