Files
dockipelago/worlds/sonic_heroes/test_mapping.py
Jonathan Tinney 7971961166
Some checks failed
Analyze modified files / flake8 (push) Failing after 2m28s
Build / build-win (push) Has been cancelled
Build / build-ubuntu2204 (push) Has been cancelled
ctest / Test C++ ubuntu-latest (push) Has been cancelled
ctest / Test C++ windows-latest (push) Has been cancelled
Analyze modified files / mypy (push) Has been cancelled
Build and Publish Docker Images / Push Docker image to Docker Hub (push) Successful in 5m4s
Native Code Static Analysis / scan-build (push) Failing after 5m2s
type check / pyright (push) Successful in 1m7s
unittests / Test Python 3.11.2 ubuntu-latest (push) Failing after 16m23s
unittests / Test Python 3.12 ubuntu-latest (push) Failing after 28m19s
unittests / Test Python 3.13 ubuntu-latest (push) Failing after 14m49s
unittests / Test hosting with 3.13 on ubuntu-latest (push) Successful in 5m0s
unittests / Test Python 3.13 macos-latest (push) Has been cancelled
unittests / Test Python 3.11 windows-latest (push) Has been cancelled
unittests / Test Python 3.13 windows-latest (push) Has been cancelled
add schedule I, sonic 1/frontiers/heroes, spirit island
2026-04-02 23:46:36 -07:00

136 lines
19 KiB
Python

from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from worlds.sonic_heroes import SonicHeroesWorld
from .constants import *
from .logicfunctions import *
#Team Sonic
def create_logic_mapping_dict_seaside_hill_sonic(world: SonicHeroesWorld):
return \
{
"(BobsledAnyORHeightFlyJump)ANDRuinsNoTriggerSonicSH": lambda state: (can_bobsled(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True)) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"BobsledAnySonicSH": lambda state: can_bobsled(world, SONIC, SEASIDEHILL, state),
"BreakThingsANDDashRingANDTripleSpringSonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) and has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"BreakThingsAND(DashRingORHeightFlyNoJumpSolo)ANDSingleSpringSonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) and (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True)) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state),
"(BreakThingsANDSingleSpring)OR(((EggPawnNoWeaponANDHoverFrame)ORSmallStonePlatform)ANDHeightJumpANDParkour)ORHeightFlyOR(HeightJumpANDThundershoot)SonicSH": lambda state: (can_break_things(world, SONIC, SEASIDEHILL, state) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state)) or (((has_egg_pawn_obj(world, SONIC, SEASIDEHILL, state, weapon = EggPawnWeapon.NONE) and can_hover_frame(world, SONIC, SEASIDEHILL, state)) or has_small_stone_platform_obj(world, SONIC, SEASIDEHILL, state)) and can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_thundershoot(world, SONIC, SEASIDEHILL, state)),
"(BreakThingsANDTripleSpring)ORHeightFlyJumpOR(HeightFlyNoJumpSoloANDParkour)SonicSH": lambda state: (can_break_things(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)),
"(BreakThingsANDTripleSpring)OR(HeightJumpANDParkour)ORHeightFlyOR(HeightJumpANDThundershoot)SonicSH": lambda state: (can_break_things(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state)) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_thundershoot(world, SONIC, SEASIDEHILL, state)),
"BreakThingsOR((EggPawnNoWeaponOREggPawnBazooka)ANDHeightJumpANDHoming0)ORHeightFlyOR((KillEggPawnNoWeaponANDKillEggPawnBazooka)ANDHeightJumpANDTornadoHover)OR(HeightFlyNoJumpSoloJumpANDParkour)OR(HeightJumpANDThundershoot)SonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) or ((has_egg_pawn_obj(world, SONIC, SEASIDEHILL, state, weapon = EggPawnWeapon.NONE) or has_egg_pawn_obj(world, SONIC, SEASIDEHILL, state, weapon = EggPawnWeapon.LASERGUN)) and can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_homing_attack(world, SONIC, SEASIDEHILL, state, level_up = 0)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or ((can_kill_egg_pawn_nothing(world, SONIC, SEASIDEHILL, state) and can_kill_egg_pawn_nothing(world, SONIC, SEASIDEHILL, state)) and can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_tornado_hover(world, SONIC, SEASIDEHILL, state)) or (can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True, jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_thundershoot(world, SONIC, SEASIDEHILL, state)),
"BreakThingsORFlyingAnyOR(HeightJumpANDThundershoot)SonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) or can_fly(world, SONIC, SEASIDEHILL, state) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_thundershoot(world, SONIC, SEASIDEHILL, state)),
"((BreakThingsORHeightFlyOR(HeightJumpANDHoming0))ANDSingleSpring)ORFlyingAnyOR(TripleSpringANDParkour)SonicSH": lambda state: ((can_break_things(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_homing_attack(world, SONIC, SEASIDEHILL, state, level_up = 0))) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state)) or can_fly(world, SONIC, SEASIDEHILL, state) or (has_triple_spring_obj(world, SONIC, SEASIDEHILL, state) and can_parkour(world, SONIC, SEASIDEHILL, state)),
"BreakThingsORHeightFlyOR(HeightJumpAND(ParkourORSpeedChar))SonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and (can_parkour(world, SONIC, SEASIDEHILL, state) or has_char(world, SONIC, SEASIDEHILL, state, speed = True))),
"BreakThingsORHeightFlyOR(HeightJumpAND(ThundershootORTornadoHover))SonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and (can_thundershoot(world, SONIC, SEASIDEHILL, state) or can_tornado_hover(world, SONIC, SEASIDEHILL, state))),
"BreakThingsSonicSH": lambda state: can_break_things(world, SONIC, SEASIDEHILL, state),
"CannonFlyingSonicSH": lambda state: can_cannon_flying(world, SONIC, SEASIDEHILL, state),
"CannonObjAND((HeightComboFlyJumpThundershootANDSmallStonePlatform)ORHeightJump)SonicSH": lambda state: has_cannon_obj(world, SONIC, SEASIDEHILL, state) and ((can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True) and has_small_stone_platform_obj(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True)),
"CannonObjSonicSH": lambda state: has_cannon_obj(world, SONIC, SEASIDEHILL, state),
"CannonPowerSonicSH": lambda state: can_cannon_power(world, SONIC, SEASIDEHILL, state),
"CannonSpeedSonicSH": lambda state: can_cannon_speed(world, SONIC, SEASIDEHILL, state),
"DashPanelOR(DashRingANDHeightFly)ORSpeedCharSonicSH": lambda state: has_dash_panel_obj(world, SONIC, SEASIDEHILL, state) or (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True)) or has_char(world, SONIC, SEASIDEHILL, state, speed = True),
"DashPanelORSpeedCharSonicSH": lambda state: has_dash_panel_obj(world, SONIC, SEASIDEHILL, state) or has_char(world, SONIC, SEASIDEHILL, state, speed = True),
"DashRampANDDashRingANDHeightFlyNoJumpSoloSonicSH": lambda state: has_dash_ramp_obj(world, SONIC, SEASIDEHILL, state) and has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True),
"DashRampANDGlideANDRuinsNoTriggerANDTripleSpringSonicSH": lambda state: has_dash_ramp_obj(world, SONIC, SEASIDEHILL, state) and can_glide(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"DashRampANDRuinsNoTriggerAND((HeightComboFlyJumpThundershootANDRuinsNoTrigger)ORHeightFlyJump)SonicSH": lambda state: has_dash_ramp_obj(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state) and ((can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True)),
"DashRampANDRuinsTriggerSonicSH": lambda state: has_dash_ramp_obj(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj_and_trigger_obj(world, SONIC, SEASIDEHILL, state),
"DashRampSonicSH": lambda state: has_dash_ramp_obj(world, SONIC, SEASIDEHILL, state),
"(DashRingAND(DashPanelORHeightJump))ORHeightFlyNoJumpSoloOR(HeightJumpANDGlide)SonicSH": lambda state: (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and (has_dash_panel_obj(world, SONIC, SEASIDEHILL, state) or can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True))) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_glide(world, SONIC, SEASIDEHILL, state)),
"DashRingANDFlyingAnyANDSingleSpringSonicSH": lambda state: has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and can_fly(world, SONIC, SEASIDEHILL, state) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state),
"(DashRingANDHeightComboFlyJumpThundershootANDHeightFlyNoJumpSolo)ORHeightFlyOR(HeightJumpANDParkourANDTornadoHover)SonicSH": lambda state: (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True) and can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state) and can_tornado_hover(world, SONIC, SEASIDEHILL, state)),
"(DashRingAND(HeightFlyNoJumpSoloJump))ORHeightFlySonicSH": lambda state: (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and (can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True, jump_valid = True))) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True),
"DashRingANDHeightFlyNoJumpSoloSonicSH": lambda state: has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True),
"((EggFlapperGreenShotOREggFlapperRed)ANDHeightJumpANDHoming0ANDHomingHover)ORFlyingAnyOR(HeightJumpANDTornadoHover)ORTripleSpringSonicSH": lambda state: ((has_egg_flapper_obj(world, SONIC, SEASIDEHILL, state, weapon = EggFlapperWeapon.SHOT) or has_egg_flapper_obj(world, SONIC, SEASIDEHILL, state)) and can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_homing_attack(world, SONIC, SEASIDEHILL, state, level_up = 0) and can_homing_hover(world, SONIC, SEASIDEHILL, state)) or can_fly(world, SONIC, SEASIDEHILL, state) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_tornado_hover(world, SONIC, SEASIDEHILL, state)) or has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"(EggFlapperRedANDHeightJumpANDHoming0ANDHomingHover)ORFlyingAnyOR(HeightJumpANDTornadoHover)SonicSH": lambda state: (has_egg_flapper_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_homing_attack(world, SONIC, SEASIDEHILL, state, level_up = 0) and can_homing_hover(world, SONIC, SEASIDEHILL, state)) or can_fly(world, SONIC, SEASIDEHILL, state) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and can_tornado_hover(world, SONIC, SEASIDEHILL, state)),
"FlyingAnyANDRuinsNoTriggerSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"FlyingAnyANDRuinsTriggerSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj_and_trigger_obj(world, SONIC, SEASIDEHILL, state),
"FlyingAnySonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state),
"(FlyingCharORGlideORHoming0)ANDRainbowHoopsANDTripleSpringSonicSH": lambda state: (has_char(world, SONIC, SEASIDEHILL, state, flying = True) or can_glide(world, SONIC, SEASIDEHILL, state) or can_homing_attack(world, SONIC, SEASIDEHILL, state, level_up = 0)) and has_rainbow_hoops_obj(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"FlyingFullANDRuinsNoTriggerSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"(FlyingFull)OR(DashRingAND(HeightJumpANDRuinsNoTrigger)OR(HeightFly))SonicSH": lambda state: (can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True)) or (has_dash_ring_obj(world, SONIC, SEASIDEHILL, state) and (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state)) or (can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True))),
"FlyingFullORTripleSpringSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True) or has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"FlyingFullSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True),
"FlyingOneCharORRuinsNoTriggerSonicSH": lambda state: can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True, orcondition = True) or has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"GlideANDRuinsNoTriggerANDTripleSpringSonicSH": lambda state: can_glide(world, SONIC, SEASIDEHILL, state) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state) and has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"HeightComboFlyJumpThundershootANDRuinsNoTriggerSonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"(HeightComboFlyJumpThundershootANDSingleSpring)ORFlyingOneCharSonicSH": lambda state: (can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state)) or can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True, orcondition = True),
"HeightComboFlyJumpThundershootSonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, fly_valid = True, jump_valid = True, thundershoot_valid = True),
"(HeightComboThundershootANDParkour)ORHeightFlyJumpSonicSH": lambda state: (can_get_height(world, SONIC, SEASIDEHILL, state, combo_finisher_valid = True, thundershoot_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True),
"(HeightFlyAND(RainbowHoopsORSingleSpring))ORFlyingOneCharOR(HeightJumpANDSingleSpringANDTornadoHover)OR((HeightFlyJumpOR(HeightThundershootANDParkour))ANDRuinsNoTriggerANDSingleSpring)SonicSH": lambda state: (can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) and (has_rainbow_hoops_obj(world, SONIC, SEASIDEHILL, state) or has_single_spring_obj(world, SONIC, SEASIDEHILL, state))) or can_fly(world, SONIC, SEASIDEHILL, state, speedreq = True, powerreq = True, orcondition = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state) and can_tornado_hover(world, SONIC, SEASIDEHILL, state)) or ((can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, thundershoot_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state))) and has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state)),
"HeightFlyANDRuinsTriggerSonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) and has_moving_ruins_obj_and_trigger_obj(world, SONIC, SEASIDEHILL, state),
"HeightFlyJumpANDRuinsTriggerSonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True) and has_moving_ruins_obj_and_trigger_obj(world, SONIC, SEASIDEHILL, state),
"HeightFlyJumpOR(HeightThundershootANDParkour)SonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, thundershoot_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)),
"HeightFlyNoJumpSoloOR(BreakThingsANDSingleSpring)SonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True) or (can_break_things(world, SONIC, SEASIDEHILL, state) and has_single_spring_obj(world, SONIC, SEASIDEHILL, state)),
"HeightFlyOR(HeightFlyNoJumpSoloANDParkour)ORTripleSpringSonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True) and can_parkour(world, SONIC, SEASIDEHILL, state)) or has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
"HeightFlyOR(HeightJumpAND(ParkourORTornadoHover))SonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or (can_get_height(world, SONIC, SEASIDEHILL, state, jump_valid = True) and (can_parkour(world, SONIC, SEASIDEHILL, state) or can_tornado_hover(world, SONIC, SEASIDEHILL, state))),
"(HeightFlyORTripleSpring)AND(HeightFlyJumpORHeightFlyNoJumpSoloORSingleSpring)SonicSH": lambda state: (can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True) or has_triple_spring_obj(world, SONIC, SEASIDEHILL, state)) and (can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True) or can_get_height(world, SONIC, SEASIDEHILL, state, fly_solo_no_jump_valid = True) or has_single_spring_obj(world, SONIC, SEASIDEHILL, state)),
"HeightFlySonicSH": lambda state: can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True),
"RuinsNoTriggerANDHeightFlyJumpSonicSH": lambda state: has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state) and can_get_height(world, SONIC, SEASIDEHILL, state, fly_valid = True, jump_valid = True),
"RuinsNoTriggerSonicSH": lambda state: has_moving_ruins_obj(world, SONIC, SEASIDEHILL, state),
"RuinsTriggerSonicSH": lambda state: has_moving_ruins_obj_and_trigger_obj(world, SONIC, SEASIDEHILL, state),
"SingleSpringSonicSH": lambda state: has_single_spring_obj(world, SONIC, SEASIDEHILL, state),
"TripleSpringSonicSH": lambda state: has_triple_spring_obj(world, SONIC, SEASIDEHILL, state),
}