2021-11-28 22:59:34 +01:00
from typing import List , Tuple , Optional , Callable , NamedTuple
2021-09-24 04:07:32 +02:00
from BaseClasses import MultiWorld
from . Options import is_option_enabled
EventId : Optional [ int ] = None
class LocationData ( NamedTuple ) :
region : str
name : str
code : Optional [ int ]
rule : Callable = lambda state : True
2021-10-09 11:58:38 +02:00
def get_locations ( world : Optional [ MultiWorld ] , player : Optional [ int ] ) - > Tuple [ LocationData , . . . ] :
2021-11-28 22:59:34 +01:00
location_table : List [ LocationData ] = [
2021-09-24 04:07:32 +02:00
# PresentItemLocations
LocationData ( ' Tutorial ' , ' Yo Momma 1 ' , 1337000 ) ,
LocationData ( ' Tutorial ' , ' Yo Momma 2 ' , 1337001 ) ,
LocationData ( ' Lake desolation ' , ' Starter chest 2 ' , 1337002 ) ,
LocationData ( ' Lake desolation ' , ' Starter chest 3 ' , 1337003 ) ,
LocationData ( ' Lake desolation ' , ' Starter chest 1 ' , 1337004 ) ,
LocationData ( ' Lake desolation ' , ' Timespinner Wheel room ' , 1337005 ) ,
LocationData ( ' Upper lake desolation ' , ' Forget me not chest ' , 1337006 ) ,
LocationData ( ' Lower lake desolation ' , ' Chicken chest ' , 1337007 , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
LocationData ( ' Lower lake desolation ' , ' Not so secret room ' , 1337008 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Lower lake desolation ' , ' Tank chest ' , 1337009 , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Upper lake desolation ' , ' Upper desolation Oxygen recovery room ' , 1337010 ) ,
LocationData ( ' Upper lake desolation ' , ' Upper desolation secret ' , 1337011 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Upper lake desolation ' , ' Upper desolation double jump cave floor ' , 1337012 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Upper lake desolation ' , ' Upper desolation double jump cave platform ' , 1337013 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Upper lake desolation ' , ' Fire-Locked sparrow chest ' , 1337014 ) ,
LocationData ( ' Upper lake desolation ' , ' Crash site pedestal ' , 1337015 ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Upper lake desolation ' , ' Crash site chest 1 ' , 1337016 , lambda state : state . has_all ( { ' Killed Maw ' , ' Gas Mask ' } , player ) ) ,
LocationData ( ' Upper lake desolation ' , ' Crash site chest 2 ' , 1337017 , lambda state : state . has_all ( { ' Killed Maw ' , ' Gas Mask ' } , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Upper lake desolation ' , ' Kitty Boss ' , 1337018 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Library ' , ' Library Basement ' , 1337019 ) ,
LocationData ( ' Library ' , ' Library warp gate ' , 1337020 ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Library ' , ' Librarian ' , 1337021 ) ,
LocationData ( ' Library ' , ' Reading nook chest ' , 1337022 ) ,
LocationData ( ' Library ' , ' Storage room chest 1 ' , 1337023 , lambda state : state . _timespinner_has_keycard_D ( world , player ) ) ,
LocationData ( ' Library ' , ' Storage room chest 2 ' , 1337024 , lambda state : state . _timespinner_has_keycard_D ( world , player ) ) ,
LocationData ( ' Library ' , ' Storage room chest 3 ' , 1337025 , lambda state : state . _timespinner_has_keycard_D ( world , player ) ) ,
LocationData ( ' Library top ' , ' Backer room chest 5 ' , 1337026 ) ,
LocationData ( ' Library top ' , ' Backer room chest 4 ' , 1337027 ) ,
LocationData ( ' Library top ' , ' Backer room chest 3 ' , 1337028 ) ,
LocationData ( ' Library top ' , ' Backer room chest 2 ' , 1337029 ) ,
LocationData ( ' Library top ' , ' Backer room chest 1 ' , 1337030 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Varndagroth tower left ' , ' Elevator Key not required ' , 1337031 ) ,
LocationData ( ' Varndagroth tower left ' , ' Ye olde Timespinner ' , 1337032 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Varndagroth tower left ' , ' Varndagroth left bottom floor ' , 1337033 , lambda state : state . _timespinner_has_keycard_C ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Varndagroth tower left ' , ' Left air vents secret ' , 1337034 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Varndagroth tower left ' , ' Left elevator chest ' , 1337035 , lambda state : state . has ( ' Elevator Keycard ' , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Varndagroth tower right (upper) ' , ' Varndagroth bridge ' , 1337036 ) ,
LocationData ( ' Varndagroth tower right (elevator) ' , ' Right Varndagroth elevator chest ' , 1337037 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Varndagroth tower right (upper) ' , ' Elevator card chest ' , 1337038 , lambda state : state . has ( ' Elevator Keycard ' , player ) or state . _timespinner_has_doublejump ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Varndagroth tower right (upper) ' , ' Air vents right ' , 1337039 , lambda state : state . has ( ' Elevator Keycard ' , player ) or state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Varndagroth tower right (upper) ' , ' Air Vents left ' , 1337040 , lambda state : state . has ( ' Elevator Keycard ' , player ) or state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Varndagroth tower right (lower) ' , ' Varndagroth right bottom floor ' , 1337041 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Varndagroth tower right (elevator) ' , ' Varndagroth ' , 1337042 , lambda state : state . _timespinner_has_keycard_C ( world , player ) ) ,
LocationData ( ' Varndagroth tower right (elevator) ' , ' Varndagroth Spider hell ' , 1337043 , lambda state : state . _timespinner_has_keycard_A ( world , player ) ) ,
LocationData ( ' Skeleton Shaft ' , ' Skeleton ' , 1337044 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Sealed Caves (Xarion) ' , ' Sealed cave shroom jump room ' , 1337045 , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
LocationData ( ' Sealed Caves (Xarion) ' , ' Sealed cave double shroom room ' , 1337046 ) ,
LocationData ( ' Sealed Caves (Xarion) ' , ' Sealed cave Mini jackpot room ' , 1337047 , lambda state : state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ,
LocationData ( ' Sealed Caves (Xarion) ' , ' Below sealed cave mini jackpot room ' , 1337048 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Sealed Caves (Xarion) ' , ' Sealed cave secret room ' , 1337049 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Sealed Caves (Xarion) ' , ' Sealed cave bottom left ' , 1337050 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Sealed Caves (Xarion) ' , ' Last chance before Xarion ' , 1337051 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Sealed Caves (Xarion) ' , ' Xarion ' , 1337052 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Sealed Caves (Sirens) ' , ' Upper sealed cave water hook ' , 1337053 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Sealed Caves (Sirens) ' , ' Upper sealed cave siren room right ' , 1337054 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Sealed Caves (Sirens) ' , ' Upper sealed cave siren room left ' , 1337055 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Sealed Caves (Sirens) ' , ' Upper sealed cave after sirens chest 2 ' , 1337056 ) ,
LocationData ( ' Sealed Caves (Sirens) ' , ' Upper sealed cave after sirens chest 1 ' , 1337057 ) ,
LocationData ( ' Military Fortress ' , ' Military bomber chest ' , 1337058 , lambda state : state . has ( ' Timespinner Wheel ' , player ) and state . _timespinner_has_doublejump_of_npc ( world , player ) ) ,
LocationData ( ' Military Fortress ' , ' Close combat room ' , 1337059 ) ,
LocationData ( ' Military Fortress ' , ' Military soldiers bridge ' , 1337060 ) ,
LocationData ( ' Military Fortress ' , ' Military giantess room ' , 1337061 ) ,
LocationData ( ' Military Fortress ' , ' Military giantess bridge ' , 1337062 ) ,
LocationData ( ' Military Fortress ' , ' Military B door chest 2 ' , 1337063 , lambda state : state . _timespinner_has_doublejump ( world , player ) and state . _timespinner_has_keycard_B ( world , player ) ) ,
LocationData ( ' Military Fortress ' , ' Military B door chest 1 ' , 1337064 , lambda state : state . _timespinner_has_doublejump ( world , player ) and state . _timespinner_has_keycard_B ( world , player ) ) ,
LocationData ( ' Military Fortress ' , ' Military pedestal ' , 1337065 , lambda state : state . _timespinner_has_doublejump ( world , player ) and ( state . _timespinner_has_doublejump_of_npc ( world , player ) or state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ) ,
LocationData ( ' The lab ' , ' Coffee break ' , 1337066 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' The lab ' , ' Lower trash right ' , 1337067 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' The lab ' , ' Lower trash left ' , 1337068 , lambda state : state . _timespinner_has_upwarddash ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' The lab ' , ' Below lab entrance ' , 1337069 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' The lab (power off) ' , ' Trash jump room ' , 1337070 ) ,
LocationData ( ' The lab (power off) ' , ' Dynamo Works ' , 1337071 ) ,
LocationData ( ' The lab (upper) ' , ' Blob mom ' , 1337072 ) ,
LocationData ( ' The lab (power off) ' , ' Experiment #13 ' , 1337073 ) ,
LocationData ( ' The lab (upper) ' , ' Download and chest room ' , 1337074 ) ,
LocationData ( ' The lab (upper) ' , ' Lab secret ' , 1337075 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' The lab (power off) ' , ' Lab Spider hell ' , 1337076 , lambda state : state . _timespinner_has_keycard_A ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Emperors tower ' , ' Dad \' s bottom ' , 1337077 ) ,
LocationData ( ' Emperors tower ' , ' Dad \' s courtyard floor secret ' , 1337078 , lambda state : state . _timespinner_has_upwarddash ( world , player ) and state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Emperors tower ' , ' Dad \' s courtyard chest ' , 1337079 , lambda state : state . _timespinner_has_upwarddash ( world , player ) ) ,
LocationData ( ' Emperors tower ' , ' Galactic sage room ' , 1337080 ) ,
LocationData ( ' Emperors tower ' , ' Bottom of Dad \' s right tower ' , 1337081 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Emperors tower ' , ' Wayyyy up there ' , 1337082 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Emperors tower ' , ' Dad \' s left tower balcony ' , 1337083 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Emperors tower ' , ' Dad \' s Chambers chest ' , 1337084 ) ,
LocationData ( ' Emperors tower ' , ' Dad \' s Chambers pedestal ' , 1337085 ) ,
# PastItemLocations
LocationData ( ' Refugee Camp ' , ' Neliste \' s Bra ' , 1337086 ) ,
LocationData ( ' Refugee Camp ' , ' Refugee camp storage chest 3 ' , 1337087 ) ,
LocationData ( ' Refugee Camp ' , ' Refugee camp storage chest 2 ' , 1337088 ) ,
LocationData ( ' Refugee Camp ' , ' Refugee camp storage chest 1 ' , 1337089 ) ,
LocationData ( ' Forest ' , ' Refugee camp roof ' , 1337090 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Forest ' , ' Forest bat jump ledge ' , 1337091 , lambda state : state . _timespinner_has_doublejump_of_npc ( world , player ) or state . _timespinner_has_forwarddash_doublejump ( world , player ) or state . _timespinner_has_fastjump_on_npc ( world , player ) ) ,
LocationData ( ' Forest ' , ' Forest green platform secret ' , 1337092 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Forest ' , ' Forest rats guarded chest ' , 1337093 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Forest ' , ' Waterfall chest 1 ' , 1337094 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Forest ' , ' Waterfall chest 2 ' , 1337095 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Forest ' , ' Forest batcave ' , 1337096 ) ,
LocationData ( ' Forest ' , ' In the moat ' , 1337097 ) ,
LocationData ( ' Left Side forest Caves ' , ' Before Serene single bat cave ' , 1337098 ) ,
LocationData ( ' Upper Lake Serene ' , ' Upper Serene rat nest ' , 1337099 ) ,
LocationData ( ' Upper Lake Serene ' , ' Upper Serene double jump cave platform ' , 1337100 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Upper Lake Serene ' , ' Upper Serene double jump cave floor ' , 1337101 ) ,
LocationData ( ' Upper Lake Serene ' , ' Upper Serene cave secret ' , 1337102 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Upper Lake Serene ' , ' Before Big Bird ' , 1337175 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Upper Lake Serene ' , ' Serene behind the vines ' , 1337103 ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Upper Lake Serene ' , ' Pyramid keys room ' , 1337104 ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Upper Lake Serene ' , ' Chicken ledge ' , 1337174 ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Lower Lake Serene ' , ' Deep dive ' , 1337105 ) ,
LocationData ( ' Lower Lake Serene ' , ' Under the eels ' , 1337106 ) ,
LocationData ( ' Lower Lake Serene ' , ' Water spikes room ' , 1337107 ) ,
LocationData ( ' Lower Lake Serene ' , ' Underwater secret ' , 1337108 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Lower Lake Serene ' , ' T chest ' , 1337109 ) ,
LocationData ( ' Lower Lake Serene ' , ' Past the eels ' , 1337110 ) ,
LocationData ( ' Lower Lake Serene ' , ' Underwater pedestal ' , 1337111 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment shroom jump room ' , 1337112 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment secret room ' , 1337113 ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment bottom left ' , 1337114 ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment single shroom room ' , 1337115 ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment jackpot room chest 1 ' , 1337116 , lambda state : state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment jackpot room chest 2 ' , 1337117 , lambda state : state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment jackpot room chest 3 ' , 1337118 , lambda state : state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ,
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment jackpot room chest 4 ' , 1337119 , lambda state : state . _timespinner_has_forwarddash_doublejump ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Caves of Banishment (upper) ' , ' Banishment pedestal ' , 1337120 ) ,
LocationData ( ' Caves of Banishment (Maw) ' , ' Last chance before Maw ' , 1337121 , lambda state : state . _timespinner_has_doublejump ( world , player ) ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Caves of Banishment (Maw) ' , ' Plasma Crystal ' , 1337173 , lambda state : state . has_any ( { ' Gas Mask ' , ' Talaria Attachment ' } , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Caves of Banishment (Maw) ' , ' Killed Maw ' , EventId , lambda state : state . has ( ' Gas Mask ' , player ) ) ,
LocationData ( ' Caves of Banishment (Maw) ' , ' Mineshaft ' , 1337122 , lambda state : state . has ( ' Gas Mask ' , player ) ) ,
LocationData ( ' Caves of Banishment (Sirens) ' , ' Wyvern room ' , 1337123 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Caves of Banishment (Sirens) ' , ' Upper banishment above sirens ' , 1337124 ) ,
LocationData ( ' Caves of Banishment (Sirens) ' , ' Under banishment sirens left ' , 1337125 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Caves of Banishment (Sirens) ' , ' Under banishment sirens right ' , 1337126 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Caves of Banishment (Sirens) ' , ' Underwater banishment sirens right ground ' , 1337172 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Caves of Banishment (Sirens) ' , ' Banishment water hook ' , 1337127 , lambda state : state . has ( ' Water Mask ' , player ) ) ,
LocationData ( ' Castle Ramparts ' , ' Castle bomber chest ' , 1337128 , lambda state : state . _timespinner_has_multiple_small_jumps_of_npc ( world , player ) ) ,
LocationData ( ' Castle Ramparts ' , ' Ramparts Freeze the engineer ' , 1337129 , lambda state : state . has ( ' Talaria Attachment ' , player ) or state . _timespinner_has_timestop ( world , player ) ) ,
LocationData ( ' Castle Ramparts ' , ' Ramparts Giantess guarded room ' , 1337130 ) ,
LocationData ( ' Castle Ramparts ' , ' Ramparts Knight and archer guarded room ' , 1337131 ) ,
LocationData ( ' Castle Ramparts ' , ' Ramparts pedestal ' , 1337132 ) ,
LocationData ( ' Castle Keep ' , ' Castle basement secret pedestal ' , 1337133 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Castle Keep ' , ' Clean the castle basement ' , 1337134 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Royal towers (lower) ' , ' Yas queen room ' , 1337135 , lambda state : state . _timespinner_has_pink ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Castle Keep ' , ' Castle basement giantess ' , 1337136 ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Castle Keep ' , ' Omelette chest ' , 1337137 ) ,
LocationData ( ' Castle Keep ' , ' Just an egg ' , 1337138 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Castle Keep ' , ' Under the twins ' , 1337139 ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Castle Keep ' , ' Killed Twins ' , EventId , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Castle Keep ' , ' Advisor jump ' , 1337171 , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Castle Keep ' , ' Twins ' , 1337140 , lambda state : state . _timespinner_has_timestop ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Castle Keep ' , ' Royal guard tiny room ' , 1337141 , lambda state : state . _timespinner_has_doublejump ( world , player ) or state . _timespinner_has_fastjump_on_npc ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Royal towers (lower) ' , ' Royal tower floor secret ' , 1337142 , lambda state : state . _timespinner_has_doublejump ( world , player ) and state . _timespinner_can_break_walls ( world , player ) ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Royal towers ' , ' Royal towers pre-climb gap ' , 1337143 ) ,
LocationData ( ' Royal towers ' , ' Royal towers long balcony ' , 1337144 ) ,
LocationData ( ' Royal towers (upper) ' , ' Next to bottom royal tower struggle juggle ' , 1337145 ) ,
LocationData ( ' Royal towers (upper) ' , ' Bottom royal tower struggle juggle ' , 1337146 , lambda state : state . _timespinner_has_doublejump_of_npc ( world , player ) ) ,
LocationData ( ' Royal towers (upper) ' , ' Top royal tower struggle juggle ' , 1337147 , lambda state : state . _timespinner_has_doublejump_of_npc ( world , player ) ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Royal towers (upper) ' , ' No struggle required ' , 1337148 , lambda state : state . _timespinner_has_doublejump_of_npc ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Royal towers ' , ' Right tower freebie ' , 1337149 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Royal towers (upper) ' , ' Royal towers left small balcony ' , 1337150 ) ,
LocationData ( ' Royal towers (upper) ' , ' Royal tower left royal guard ' , 1337151 ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Royal towers (upper) ' , ' Before Aelana ' , 1337152 ) ,
LocationData ( ' Royal towers (upper) ' , ' Killed Aelana ' , EventId ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Royal towers (upper) ' , ' Aelana \' s attic ' , 1337153 , lambda state : state . _timespinner_has_upwarddash ( world , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Royal towers (upper) ' , ' Aelana \' s pedestal ' , 1337154 ) ,
2021-11-28 15:33:51 -06:00
LocationData ( ' Royal towers (upper) ' , ' Aelana \' s chest ' , 1337155 ) ,
2021-09-24 04:07:32 +02:00
2021-11-28 22:59:34 +01:00
# 1337176 - 1337176 Cantoran
2021-09-24 04:07:32 +02:00
2021-11-28 22:59:34 +01:00
# 1337177 - 1337236 Reserved
# 1337237 - 1337238 GyreArchives
2021-09-24 04:07:32 +02:00
# PyramidItemLocations
2021-11-28 22:59:34 +01:00
LocationData ( ' Ancient Pyramid (right) ' , ' Transition chest 1 ' , 1337239 ) ,
LocationData ( ' Ancient Pyramid (right) ' , ' Transition chest 2 ' , 1337240 ) ,
LocationData ( ' Ancient Pyramid (right) ' , ' Transition chest 3 ' , 1337241 ) ,
# 1337242 - 1337245 GyreArchives
2021-09-24 04:07:32 +02:00
LocationData ( ' Ancient Pyramid (left) ' , ' Why not it \' s right there ' , 1337246 ) ,
LocationData ( ' Ancient Pyramid (left) ' , ' Conviction guarded room ' , 1337247 ) ,
LocationData ( ' Ancient Pyramid (right) ' , ' Pit secret room ' , 1337248 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Ancient Pyramid (right) ' , ' Regret chest ' , 1337249 , lambda state : state . _timespinner_can_break_walls ( world , player ) ) ,
LocationData ( ' Ancient Pyramid (right) ' , ' Killed Nightmare ' , EventId )
2021-11-28 22:59:34 +01:00
]
2021-09-24 04:07:32 +02:00
2021-11-28 22:59:34 +01:00
downloadable_locations : Tuple [ LocationData , . . . ] = (
2021-09-24 04:07:32 +02:00
# DownloadTerminals
2021-10-15 17:51:18 -05:00
LocationData ( ' Library ' , ' Library terminal 1 ' , 1337157 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' Library ' , ' Library terminal 2 ' , 1337156 , lambda state : state . has ( ' Tablet ' , player ) ) ,
2021-09-30 19:51:07 +02:00
# 1337158 Is Lost in time
2021-10-15 17:51:18 -05:00
LocationData ( ' Library ' , ' Library terminal 3 ' , 1337159 , lambda state : state . has ( ' Tablet ' , player ) ) ,
2021-11-28 22:59:34 +01:00
LocationData ( ' Library ' , ' V terminal 1 ' , 1337160 , lambda state : state . has_all ( { ' Tablet ' , ' Library Keycard V ' } , player ) ) ,
LocationData ( ' Library ' , ' V terminal 2 ' , 1337161 , lambda state : state . has_all ( { ' Tablet ' , ' Library Keycard V ' } , player ) ) ,
LocationData ( ' Library ' , ' V terminal 3 ' , 1337162 , lambda state : state . has_all ( { ' Tablet ' , ' Library Keycard V ' } , player ) ) ,
2021-10-15 17:51:18 -05:00
LocationData ( ' Library top ' , ' Backer room terminal ' , 1337163 , lambda state : state . has ( ' Tablet ' , player ) ) ,
2021-09-24 04:07:32 +02:00
LocationData ( ' Varndagroth tower right (elevator) ' , ' Medbay ' , 1337164 , lambda state : state . has ( ' Tablet ' , player ) and state . _timespinner_has_keycard_B ( world , player ) ) ,
LocationData ( ' The lab (upper) ' , ' Chest and download terminal ' , 1337165 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' The lab (power off) ' , ' Lab terminal middle ' , 1337166 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' The lab (power off) ' , ' Sentry platform terminal ' , 1337167 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' The lab ' , ' Experiment 13 terminal ' , 1337168 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' The lab ' , ' Lab terminal left ' , 1337169 , lambda state : state . has ( ' Tablet ' , player ) ) ,
LocationData ( ' The lab (power off) ' , ' Lab terminal right ' , 1337170 , lambda state : state . has ( ' Tablet ' , player ) )
)
2021-11-28 22:59:34 +01:00
gyre_archives_locations : Tuple [ LocationData , . . . ] = (
LocationData ( ' The lab (upper) ' , ' Ravenlord post fight (pedestal) ' , 1337237 , lambda state : state . has ( ' Merchant Crow ' , player ) ) ,
LocationData ( ' Library top ' , ' Ifrit post fight (pedestal) ' , 1337238 , lambda state : state . has ( ' Kobo ' , player ) ) ,
LocationData ( ' The lab (upper) ' , ' Ravenlord pre fight ' , 1337242 , lambda state : state . has ( ' Merchant Crow ' , player ) ) ,
LocationData ( ' The lab (upper) ' , ' Ravenlord post fight (chest) ' , 1337243 , lambda state : state . has ( ' Merchant Crow ' , player ) ) ,
LocationData ( ' Library top ' , ' Ifrit pre fight ' , 1337244 , lambda state : state . has ( ' Kobo ' , player ) ) ,
LocationData ( ' Library top ' , ' Ifrit post fight (chest) ' , 1337245 , lambda state : state . has ( ' Kobo ' , player ) ) ,
)
cantoran_locations : Tuple [ LocationData , . . . ] = (
LocationData ( ' Left Side forest Caves ' , ' Cantoran ' , 1337176 ) ,
)
if not world :
return ( * location_table , * downloadable_locations , * gyre_archives_locations , * cantoran_locations )
if is_option_enabled ( world , player , " DownloadableItems " ) :
location_table . extend ( downloadable_locations )
if is_option_enabled ( world , player , " GyreArchives " ) :
location_table . extend ( gyre_archives_locations )
if is_option_enabled ( world , player , " Cantoran " ) :
location_table . extend ( cantoran_locations )
return tuple ( location_table )
2021-09-30 19:51:07 +02:00
2021-09-24 04:07:32 +02:00
2021-09-25 02:31:32 +02:00
starter_progression_locations : Tuple [ str , . . . ] = (
2021-09-24 04:07:32 +02:00
' Starter chest 2 ' ,
' Starter chest 3 ' ,
' Starter chest 1 ' ,
' Timespinner Wheel room '
)