LTTP: ToH Crystal Switch Logic (#3172)

This commit is contained in:
Alchav
2024-04-18 15:33:41 -04:00
committed by GitHub
parent 6087ec539b
commit b372b9da20
5 changed files with 26 additions and 11 deletions

View File

@@ -18,7 +18,8 @@ from .StateHelpers import (can_extend_magic, can_kill_most_things,
can_shoot_arrows, has_beam_sword, has_crystals,
has_fire_source, has_hearts, has_melee_weapon,
has_misery_mire_medallion, has_sword, has_turtle_rock_medallion,
has_triforce_pieces, can_use_bombs, can_bomb_or_bonk)
has_triforce_pieces, can_use_bombs, can_bomb_or_bonk,
can_activate_crystal_switch)
from .UnderworldGlitchRules import underworld_glitches_rules
@@ -357,8 +358,10 @@ def global_rules(multiworld: MultiWorld, player: int):
if not (multiworld.small_key_shuffle[player] and multiworld.big_key_shuffle[player]):
add_rule(multiworld.get_location('Desert Palace - Prize', player), lambda state: state.multiworld.get_region('Desert Palace Main (Outer)', player).can_reach(state))
set_rule(multiworld.get_entrance('Tower of Hera Small Key Door', player), lambda state: state._lttp_has_key('Small Key (Tower of Hera)', player) or location_item_name(state, 'Tower of Hera - Big Key Chest', player) == ('Small Key (Tower of Hera)', player))
set_rule(multiworld.get_entrance('Tower of Hera Big Key Door', player), lambda state: state.has('Big Key (Tower of Hera)', player))
set_rule(multiworld.get_location('Tower of Hera - Basement Cage', player), lambda state: can_activate_crystal_switch(state, player))
set_rule(multiworld.get_location('Tower of Hera - Map Chest', player), lambda state: can_activate_crystal_switch(state, player))
set_rule(multiworld.get_entrance('Tower of Hera Small Key Door', player), lambda state: can_activate_crystal_switch(state, player) and (state._lttp_has_key('Small Key (Tower of Hera)', player) or location_item_name(state, 'Tower of Hera - Big Key Chest', player) == ('Small Key (Tower of Hera)', player)))
set_rule(multiworld.get_entrance('Tower of Hera Big Key Door', player), lambda state: can_activate_crystal_switch(state, player) and state.has('Big Key (Tower of Hera)', player))
if multiworld.enemy_shuffle[player]:
add_rule(multiworld.get_entrance('Tower of Hera Big Key Door', player), lambda state: can_kill_most_things(state, player, 3))
else: