1058 lines
66 KiB
Python
1058 lines
66 KiB
Python
from .Types import HatDLC, HatType, LocData, Difficulty, HitType
|
|
from typing import Dict, TYPE_CHECKING
|
|
from .Options import TasksanityCheckCount
|
|
|
|
if TYPE_CHECKING:
|
|
from . import HatInTimeWorld
|
|
|
|
TASKSANITY_START_ID = 2000300204
|
|
|
|
|
|
def get_total_locations(world: "HatInTimeWorld") -> int:
|
|
total = 0
|
|
|
|
if not world.is_dw_only():
|
|
for name in location_table.keys():
|
|
if is_location_valid(world, name):
|
|
total += 1
|
|
|
|
if world.is_dlc1() and world.options.Tasksanity:
|
|
total += world.options.TasksanityCheckCount
|
|
|
|
if world.is_dw():
|
|
if world.options.DWShuffle:
|
|
total += len(world.dw_shuffle)
|
|
if world.options.DWEnableBonus:
|
|
total += len(world.dw_shuffle)
|
|
else:
|
|
total += 37
|
|
if world.is_dlc2():
|
|
total += 1
|
|
|
|
if world.options.DWEnableBonus:
|
|
total += 37
|
|
if world.is_dlc2():
|
|
total += 1
|
|
|
|
return total
|
|
|
|
|
|
def location_dlc_enabled(world: "HatInTimeWorld", location: str) -> bool:
|
|
data = location_table.get(location) or event_locs.get(location)
|
|
|
|
if data.dlc_flags == HatDLC.none:
|
|
return True
|
|
elif data.dlc_flags == HatDLC.dlc1 and world.is_dlc1():
|
|
return True
|
|
elif data.dlc_flags == HatDLC.dlc2 and world.is_dlc2():
|
|
return True
|
|
elif data.dlc_flags == HatDLC.death_wish and world.is_dw():
|
|
return True
|
|
elif data.dlc_flags == HatDLC.dlc1_dw and world.is_dlc1() and world.is_dw():
|
|
return True
|
|
elif data.dlc_flags == HatDLC.dlc2_dw and world.is_dlc2() and world.is_dw():
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def is_location_valid(world: "HatInTimeWorld", location: str) -> bool:
|
|
if not location_dlc_enabled(world, location):
|
|
return False
|
|
|
|
if not world.options.ShuffleStorybookPages and location in storybook_pages.keys():
|
|
return False
|
|
|
|
if not world.options.ShuffleActContracts and location in contract_locations.keys():
|
|
return False
|
|
|
|
if location not in world.shop_locs and location in shop_locations:
|
|
return False
|
|
|
|
data = location_table.get(location) or event_locs.get(location)
|
|
if world.options.ExcludeTour and data.region == "Time Rift - Tour":
|
|
return False
|
|
|
|
# No need for all those event items if we're not doing candles
|
|
if data.dlc_flags & HatDLC.death_wish:
|
|
if world.options.DWExcludeCandles and location in event_locs.keys():
|
|
return False
|
|
|
|
if world.options.DWShuffle and data.region in death_wishes and data.region not in world.dw_shuffle:
|
|
return False
|
|
|
|
if location in zero_jumps:
|
|
if world.options.DWShuffle and "Zero Jumps" not in world.dw_shuffle:
|
|
return False
|
|
|
|
difficulty: Difficulty = Difficulty(world.options.LogicDifficulty)
|
|
if location in zero_jumps_hard and difficulty < Difficulty.HARD:
|
|
return False
|
|
|
|
if location in zero_jumps_expert and difficulty < Difficulty.EXPERT:
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def get_location_names() -> Dict[str, int]:
|
|
names = {name: data.id for name, data in location_table.items()}
|
|
id_start: int = TASKSANITY_START_ID
|
|
for i in range(TasksanityCheckCount.range_end):
|
|
names.setdefault(f"Tasksanity Check {i+1}", id_start+i)
|
|
|
|
for (key, loc_id) in death_wishes.items():
|
|
names.setdefault(f"{key} - Main Objective", loc_id)
|
|
names.setdefault(f"{key} - All Clear", loc_id+1)
|
|
|
|
return names
|
|
|
|
|
|
ahit_locations = {
|
|
"Spaceship - Rumbi Abuse": LocData(2000301000, "Spaceship", hit_type=HitType.umbrella_or_brewing),
|
|
|
|
# 300000 range - Mafia Town/Battle of the Birds
|
|
"Welcome to Mafia Town - Umbrella": LocData(2000301002, "Welcome to Mafia Town"),
|
|
"Mafia Town - Old Man (Seaside Spaghetti)": LocData(2000303833, "Mafia Town Area"),
|
|
"Mafia Town - Old Man (Steel Beams)": LocData(2000303832, "Mafia Town Area"),
|
|
"Mafia Town - Blue Vault": LocData(2000302850, "Mafia Town Area"),
|
|
"Mafia Town - Green Vault": LocData(2000302851, "Mafia Town Area"),
|
|
"Mafia Town - Red Vault": LocData(2000302848, "Mafia Town Area"),
|
|
"Mafia Town - Blue Vault Brewing Crate": LocData(2000305572, "Mafia Town Area", required_hats=[HatType.BREWING]),
|
|
"Mafia Town - Plaza Under Boxes": LocData(2000304458, "Mafia Town Area"),
|
|
"Mafia Town - Small Boat": LocData(2000304460, "Mafia Town Area"),
|
|
"Mafia Town - Staircase Pon Cluster": LocData(2000304611, "Mafia Town Area"),
|
|
"Mafia Town - Palm Tree": LocData(2000304609, "Mafia Town Area"),
|
|
"Mafia Town - Port": LocData(2000305219, "Mafia Town Area"),
|
|
"Mafia Town - Docks Chest": LocData(2000303534, "Mafia Town Area"),
|
|
"Mafia Town - Ice Hat Cage": LocData(2000304831, "Mafia Town Area", required_hats=[HatType.ICE]),
|
|
"Mafia Town - Hidden Buttons Chest": LocData(2000303483, "Mafia Town Area"),
|
|
|
|
# These can be accessed from HUMT, the above locations can't be
|
|
"Mafia Town - Dweller Boxes": LocData(2000304462, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Ledge Chest": LocData(2000303530, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Yellow Sphere Building Chest": LocData(2000303535, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Beneath Scaffolding": LocData(2000304456, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - On Scaffolding": LocData(2000304457, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Cargo Ship": LocData(2000304459, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Beach Alcove": LocData(2000304463, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Wood Cage": LocData(2000304606, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Beach Patio": LocData(2000304610, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Steel Beam Nest": LocData(2000304608, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Top of Ruined Tower": LocData(2000304607, "Mafia Town Area (HUMT)", required_hats=[HatType.ICE]),
|
|
"Mafia Town - Hot Air Balloon": LocData(2000304829, "Mafia Town Area (HUMT)", required_hats=[HatType.ICE]),
|
|
"Mafia Town - Camera Badge 1": LocData(2000302003, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Camera Badge 2": LocData(2000302004, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Chest Beneath Aqueduct": LocData(2000303489, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Secret Cave": LocData(2000305220, "Mafia Town Area (HUMT)", required_hats=[HatType.BREWING]),
|
|
"Mafia Town - Crow Chest": LocData(2000303532, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Above Boats": LocData(2000305218, "Mafia Town Area (HUMT)", hookshot=True),
|
|
"Mafia Town - Slip Slide Chest": LocData(2000303529, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Behind Faucet": LocData(2000304214, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Clock Tower Chest": LocData(2000303481, "Mafia Town Area (HUMT)", hookshot=True),
|
|
"Mafia Town - Top of Lighthouse": LocData(2000304213, "Mafia Town Area (HUMT)", hookshot=True),
|
|
"Mafia Town - Mafia Geek Platform": LocData(2000304212, "Mafia Town Area (HUMT)"),
|
|
"Mafia Town - Behind HQ Chest": LocData(2000303486, "Mafia Town Area (HUMT)"),
|
|
|
|
"Mafia HQ - Hallway Brewing Crate": LocData(2000305387, "Down with the Mafia!", required_hats=[HatType.BREWING]),
|
|
"Mafia HQ - Freezer Chest": LocData(2000303241, "Down with the Mafia!"),
|
|
"Mafia HQ - Secret Room": LocData(2000304979, "Down with the Mafia!", required_hats=[HatType.ICE]),
|
|
"Mafia HQ - Bathroom Stall Chest": LocData(2000303243, "Down with the Mafia!"),
|
|
|
|
"Dead Bird Studio - Up the Ladder": LocData(2000304874, "Dead Bird Studio - Elevator Area"),
|
|
"Dead Bird Studio - Red Building Top": LocData(2000305024, "Dead Bird Studio - Elevator Area"),
|
|
"Dead Bird Studio - Behind Water Tower": LocData(2000305248, "Dead Bird Studio - Elevator Area"),
|
|
"Dead Bird Studio - Side of House": LocData(2000305247, "Dead Bird Studio - Elevator Area"),
|
|
|
|
"Dead Bird Studio - DJ Grooves Sign Chest": LocData(2000303901, "Dead Bird Studio - Post Elevator Area",
|
|
hit_type=HitType.umbrella_or_brewing),
|
|
|
|
"Dead Bird Studio - Tightrope Chest": LocData(2000303898, "Dead Bird Studio - Post Elevator Area",
|
|
hit_type=HitType.umbrella_or_brewing),
|
|
|
|
"Dead Bird Studio - Tepee Chest": LocData(2000303899, "Dead Bird Studio - Post Elevator Area",
|
|
hit_type=HitType.umbrella_or_brewing),
|
|
|
|
"Dead Bird Studio - Conductor Chest": LocData(2000303900, "Dead Bird Studio - Post Elevator Area",
|
|
hit_type=HitType.umbrella_or_brewing),
|
|
|
|
"Murder on the Owl Express - Cafeteria": LocData(2000305313, "Murder on the Owl Express"),
|
|
"Murder on the Owl Express - Luggage Room Top": LocData(2000305090, "Murder on the Owl Express"),
|
|
"Murder on the Owl Express - Luggage Room Bottom": LocData(2000305091, "Murder on the Owl Express"),
|
|
|
|
"Murder on the Owl Express - Raven Suite Room": LocData(2000305701, "Murder on the Owl Express",
|
|
required_hats=[HatType.BREWING]),
|
|
|
|
"Murder on the Owl Express - Raven Suite Top": LocData(2000305312, "Murder on the Owl Express"),
|
|
"Murder on the Owl Express - Lounge Chest": LocData(2000303963, "Murder on the Owl Express"),
|
|
|
|
"Picture Perfect - Behind Badge Seller": LocData(2000304307, "Picture Perfect"),
|
|
"Picture Perfect - Hats Buy Building": LocData(2000304530, "Picture Perfect"),
|
|
|
|
"Dead Bird Studio Basement - Window Platform": LocData(2000305432, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Cardboard Conductor": LocData(2000305059, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Above Conductor Sign": LocData(2000305057, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Logo Wall": LocData(2000305207, "Dead Bird Studio Basement"),
|
|
"Dead Bird Studio Basement - Disco Room": LocData(2000305061, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Small Room": LocData(2000304813, "Dead Bird Studio Basement"),
|
|
"Dead Bird Studio Basement - Vent Pipe": LocData(2000305430, "Dead Bird Studio Basement"),
|
|
"Dead Bird Studio Basement - Tightrope": LocData(2000305058, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Cameras": LocData(2000305431, "Dead Bird Studio Basement", hookshot=True),
|
|
"Dead Bird Studio Basement - Locked Room": LocData(2000305819, "Dead Bird Studio Basement", hookshot=True),
|
|
|
|
# Subcon Forest
|
|
"Contractual Obligations - Cherry Bomb Bone Cage": LocData(2000324761, "Contractual Obligations"),
|
|
"Subcon Village - Tree Top Ice Cube": LocData(2000325078, "Subcon Forest Area"),
|
|
"Subcon Village - Graveyard Ice Cube": LocData(2000325077, "Subcon Forest Area"),
|
|
"Subcon Village - House Top": LocData(2000325471, "Subcon Forest Area"),
|
|
"Subcon Village - Ice Cube House": LocData(2000325469, "Subcon Forest Area"),
|
|
"Subcon Village - Snatcher Statue Chest": LocData(2000323730, "Subcon Forest Area", paintings=1),
|
|
"Subcon Village - Stump Platform Chest": LocData(2000323729, "Subcon Forest Area"),
|
|
"Subcon Forest - Giant Tree Climb": LocData(2000325470, "Subcon Forest Area"),
|
|
|
|
"Subcon Forest - Ice Cube Shack": LocData(2000324465, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Gravestone": LocData(2000326296, "Subcon Forest Area",
|
|
required_hats=[HatType.BREWING], paintings=1),
|
|
|
|
"Subcon Forest - Swamp Near Well": LocData(2000324762, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Tree A": LocData(2000324763, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Tree B": LocData(2000324764, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Ice Wall": LocData(2000324706, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Treehouse": LocData(2000325468, "Subcon Forest Area", paintings=1),
|
|
"Subcon Forest - Swamp Tree Chest": LocData(2000323728, "Subcon Forest Area", paintings=1),
|
|
|
|
"Subcon Forest - Burning House": LocData(2000324710, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Burning Tree Climb": LocData(2000325079, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Burning Stump Chest": LocData(2000323731, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Burning Forest Treehouse": LocData(2000325467, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Spider Bone Cage A": LocData(2000324462, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Spider Bone Cage B": LocData(2000325080, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Triple Spider Bounce": LocData(2000324765, "Subcon Forest Area", paintings=2),
|
|
"Subcon Forest - Noose Treehouse": LocData(2000324856, "Subcon Forest Area", hookshot=True, paintings=2),
|
|
|
|
"Subcon Forest - Long Tree Climb Chest": LocData(2000323734, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER], paintings=2),
|
|
|
|
"Subcon Forest - Boss Arena Chest": LocData(2000323735, "Subcon Forest Area"),
|
|
|
|
"Subcon Forest - Manor Rooftop": LocData(2000325466, "Subcon Forest Area",
|
|
hit_type=HitType.dweller_bell, paintings=1),
|
|
|
|
"Subcon Forest - Infinite Yarn Bush": LocData(2000325478, "Subcon Forest Area",
|
|
required_hats=[HatType.BREWING], paintings=2),
|
|
|
|
"Subcon Forest - Magnet Badge Bush": LocData(2000325479, "Subcon Forest Area",
|
|
required_hats=[HatType.BREWING], paintings=3),
|
|
|
|
"Subcon Forest - Dweller Stump": LocData(2000324767, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER], paintings=3),
|
|
|
|
"Subcon Forest - Dweller Floating Rocks": LocData(2000324464, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER], paintings=3),
|
|
|
|
"Subcon Forest - Dweller Platforming Tree A": LocData(2000324709, "Subcon Forest Area", paintings=3),
|
|
|
|
"Subcon Forest - Dweller Platforming Tree B": LocData(2000324855, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER], paintings=3),
|
|
|
|
"Subcon Forest - Giant Time Piece": LocData(2000325473, "Subcon Forest Area", paintings=3),
|
|
"Subcon Forest - Gallows": LocData(2000325472, "Subcon Forest Area", paintings=3),
|
|
|
|
"Subcon Forest - Green and Purple Dweller Rocks": LocData(2000325082, "Subcon Forest Area", paintings=3),
|
|
|
|
"Subcon Forest - Dweller Shack": LocData(2000324463, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER], paintings=3),
|
|
|
|
"Subcon Forest - Tall Tree Hookshot Swing": LocData(2000324766, "Subcon Forest Area",
|
|
required_hats=[HatType.DWELLER],
|
|
hookshot=True,
|
|
paintings=3),
|
|
|
|
"Subcon Well - Hookshot Badge Chest": LocData(2000324114, "The Subcon Well",
|
|
hit_type=HitType.umbrella_or_brewing, paintings=1),
|
|
|
|
"Subcon Well - Above Chest": LocData(2000324612, "The Subcon Well",
|
|
hit_type=HitType.umbrella_or_brewing, paintings=1),
|
|
|
|
"Subcon Well - On Pipe": LocData(2000324311, "The Subcon Well", hookshot=True,
|
|
hit_type=HitType.umbrella_or_brewing, paintings=1),
|
|
|
|
"Subcon Well - Mushroom": LocData(2000325318, "The Subcon Well",
|
|
hit_type=HitType.umbrella_or_brewing, paintings=1),
|
|
|
|
"Queen Vanessa's Manor - Cellar": LocData(2000324841, "Queen Vanessa's Manor",
|
|
hit_type=HitType.dweller_bell, paintings=1),
|
|
|
|
"Queen Vanessa's Manor - Bedroom Chest": LocData(2000323808, "Queen Vanessa's Manor",
|
|
hit_type=HitType.dweller_bell, paintings=1),
|
|
|
|
"Queen Vanessa's Manor - Hall Chest": LocData(2000323896, "Queen Vanessa's Manor",
|
|
hit_type=HitType.dweller_bell, paintings=1),
|
|
|
|
"Queen Vanessa's Manor - Chandelier": LocData(2000325546, "Queen Vanessa's Manor",
|
|
hit_type=HitType.dweller_bell, paintings=1),
|
|
|
|
# Alpine Skyline
|
|
"Alpine Skyline - Goat Village: Below Hookpoint": LocData(2000334856, "Alpine Skyline Area (TIHS)"),
|
|
"Alpine Skyline - Goat Village: Hidden Branch": LocData(2000334855, "Alpine Skyline Area (TIHS)"),
|
|
"Alpine Skyline - Goat Refinery": LocData(2000333635, "Alpine Skyline Area (TIHS)", hookshot=True),
|
|
"Alpine Skyline - Bird Pass Fork": LocData(2000335911, "Alpine Skyline Area (TIHS)", hookshot=True),
|
|
|
|
"Alpine Skyline - Yellow Band Hills": LocData(2000335756, "Alpine Skyline Area (TIHS)", hookshot=True,
|
|
required_hats=[HatType.BREWING]),
|
|
|
|
"Alpine Skyline - The Purrloined Village: Horned Stone": LocData(2000335561, "Alpine Skyline Area"),
|
|
"Alpine Skyline - The Purrloined Village: Chest Reward": LocData(2000334831, "Alpine Skyline Area"),
|
|
"Alpine Skyline - The Birdhouse: Triple Crow Chest": LocData(2000334758, "The Birdhouse"),
|
|
|
|
"Alpine Skyline - The Birdhouse: Dweller Platforms Relic": LocData(2000336497, "The Birdhouse",
|
|
required_hats=[HatType.DWELLER]),
|
|
|
|
"Alpine Skyline - The Birdhouse: Brewing Crate House": LocData(2000336496, "The Birdhouse"),
|
|
"Alpine Skyline - The Birdhouse: Hay Bale": LocData(2000335885, "The Birdhouse"),
|
|
"Alpine Skyline - The Birdhouse: Alpine Crow Mini-Gauntlet": LocData(2000335886, "The Birdhouse"),
|
|
"Alpine Skyline - The Birdhouse: Outer Edge": LocData(2000335492, "The Birdhouse"),
|
|
|
|
"Alpine Skyline - Mystifying Time Mesa: Zipline": LocData(2000337058, "Alpine Skyline Area"),
|
|
"Alpine Skyline - Mystifying Time Mesa: Gate Puzzle": LocData(2000336052, "Alpine Skyline Area"),
|
|
"Alpine Skyline - Ember Summit": LocData(2000336311, "Alpine Skyline Area (TIHS)", hookshot=True),
|
|
"Alpine Skyline - The Lava Cake: Center Fence Cage": LocData(2000335448, "The Lava Cake"),
|
|
"Alpine Skyline - The Lava Cake: Outer Island Chest": LocData(2000334291, "The Lava Cake"),
|
|
"Alpine Skyline - The Lava Cake: Dweller Pillars": LocData(2000335417, "The Lava Cake"),
|
|
"Alpine Skyline - The Lava Cake: Top Cake": LocData(2000335418, "The Lava Cake"),
|
|
"Alpine Skyline - The Twilight Path": LocData(2000334434, "Alpine Skyline Area", required_hats=[HatType.DWELLER]),
|
|
"Alpine Skyline - The Twilight Bell: Wide Purple Platform": LocData(2000336478, "The Twilight Bell"),
|
|
"Alpine Skyline - The Twilight Bell: Ice Platform": LocData(2000335826, "The Twilight Bell"),
|
|
"Alpine Skyline - Goat Outpost Horn": LocData(2000334760, "Alpine Skyline Area"),
|
|
"Alpine Skyline - Windy Passage": LocData(2000334776, "Alpine Skyline Area (TIHS)", hookshot=True),
|
|
"Alpine Skyline - The Windmill: Inside Pon Cluster": LocData(2000336395, "The Windmill"),
|
|
"Alpine Skyline - The Windmill: Entrance": LocData(2000335783, "The Windmill"),
|
|
"Alpine Skyline - The Windmill: Dropdown": LocData(2000335815, "The Windmill"),
|
|
"Alpine Skyline - The Windmill: House Window": LocData(2000335389, "The Windmill"),
|
|
|
|
"The Finale - Frozen Item": LocData(2000304108, "The Finale"),
|
|
|
|
"Bon Voyage! - Lamp Post Top": LocData(2000305321, "Bon Voyage!", dlc_flags=HatDLC.dlc1),
|
|
"Bon Voyage! - Mafia Cargo Ship": LocData(2000304313, "Bon Voyage!", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Toilet": LocData(2000305109, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Bar": LocData(2000304251, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Dive Board Ledge": LocData(2000304254, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Top Balcony": LocData(2000304255, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Octopus Room": LocData(2000305253, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Octopus Room Top": LocData(2000304249, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Laundry Room": LocData(2000304250, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Ship Side": LocData(2000304247, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"The Arctic Cruise - Silver Ring": LocData(2000305252, "Cruise Ship", dlc_flags=HatDLC.dlc1),
|
|
"Rock the Boat - Reception Room - Suitcase": LocData(2000304045, "Rock the Boat", dlc_flags=HatDLC.dlc1),
|
|
"Rock the Boat - Reception Room - Under Desk": LocData(2000304047, "Rock the Boat", dlc_flags=HatDLC.dlc1),
|
|
"Rock the Boat - Lamp Post": LocData(2000304048, "Rock the Boat", dlc_flags=HatDLC.dlc1),
|
|
"Rock the Boat - Iceberg Top": LocData(2000304046, "Rock the Boat", dlc_flags=HatDLC.dlc1),
|
|
"Rock the Boat - Post Captain Rescue": LocData(2000304049, "Rock the Boat", dlc_flags=HatDLC.dlc1,
|
|
required_hats=[HatType.ICE]),
|
|
|
|
"Nyakuza Metro - Main Station Dining Area": LocData(2000304105, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2),
|
|
"Nyakuza Metro - Top of Ramen Shop": LocData(2000304104, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Yellow Overpass Station - Brewing Crate": LocData(2000305413, "Yellow Overpass Station",
|
|
dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.BREWING]),
|
|
|
|
"Bluefin Tunnel - Cat Vacuum": LocData(2000305111, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Pink Paw Station - Cat Vacuum": LocData(2000305110, "Pink Paw Station",
|
|
dlc_flags=HatDLC.dlc2,
|
|
hookshot=True,
|
|
required_hats=[HatType.DWELLER]),
|
|
|
|
"Pink Paw Station - Behind Fan": LocData(2000304106, "Pink Paw Station",
|
|
dlc_flags=HatDLC.dlc2,
|
|
hookshot=True,
|
|
required_hats=[HatType.TIME_STOP, HatType.DWELLER]),
|
|
}
|
|
|
|
act_completions = {
|
|
"Act Completion (Time Rift - Gallery)": LocData(2000312758, "Time Rift - Gallery", required_hats=[HatType.BREWING]),
|
|
"Act Completion (Time Rift - The Lab)": LocData(2000312838, "Time Rift - The Lab"),
|
|
|
|
"Act Completion (Welcome to Mafia Town)": LocData(2000311771, "Welcome to Mafia Town"),
|
|
"Act Completion (Barrel Battle)": LocData(2000311958, "Barrel Battle"),
|
|
"Act Completion (She Came from Outer Space)": LocData(2000312262, "She Came from Outer Space"),
|
|
"Act Completion (Down with the Mafia!)": LocData(2000311326, "Down with the Mafia!"),
|
|
"Act Completion (Cheating the Race)": LocData(2000312318, "Cheating the Race", required_hats=[HatType.TIME_STOP]),
|
|
"Act Completion (Heating Up Mafia Town)": LocData(2000311481, "Heating Up Mafia Town", hit_type=HitType.umbrella),
|
|
"Act Completion (The Golden Vault)": LocData(2000312250, "The Golden Vault"),
|
|
"Act Completion (Time Rift - Bazaar)": LocData(2000312465, "Time Rift - Bazaar"),
|
|
"Act Completion (Time Rift - Sewers)": LocData(2000312484, "Time Rift - Sewers"),
|
|
"Act Completion (Time Rift - Mafia of Cooks)": LocData(2000311855, "Time Rift - Mafia of Cooks"),
|
|
|
|
"Act Completion (Dead Bird Studio)": LocData(2000311383, "Dead Bird Studio",
|
|
hit_type=HitType.umbrella_or_brewing),
|
|
|
|
"Act Completion (Murder on the Owl Express)": LocData(2000311544, "Murder on the Owl Express"),
|
|
"Act Completion (Picture Perfect)": LocData(2000311587, "Picture Perfect"),
|
|
"Act Completion (Train Rush)": LocData(2000312481, "Train Rush", hookshot=True),
|
|
"Act Completion (The Big Parade)": LocData(2000311157, "The Big Parade", hit_type=HitType.umbrella),
|
|
"Act Completion (Award Ceremony)": LocData(2000311488, "Award Ceremony"),
|
|
"Act Completion (Dead Bird Studio Basement)": LocData(2000312253, "Dead Bird Studio Basement", hookshot=True),
|
|
"Act Completion (Time Rift - The Owl Express)": LocData(2000312807, "Time Rift - The Owl Express"),
|
|
"Act Completion (Time Rift - The Moon)": LocData(2000312785, "Time Rift - The Moon"),
|
|
"Act Completion (Time Rift - Dead Bird Studio)": LocData(2000312577, "Time Rift - Dead Bird Studio"),
|
|
|
|
"Act Completion (Contractual Obligations)": LocData(2000312317, "Contractual Obligations", paintings=1),
|
|
|
|
"Act Completion (The Subcon Well)": LocData(2000311160, "The Subcon Well",
|
|
hookshot=True, hit_type=HitType.umbrella_or_brewing, paintings=1),
|
|
|
|
"Act Completion (Toilet of Doom)": LocData(2000311984, "Toilet of Doom",
|
|
hit_type=HitType.umbrella_or_brewing, hookshot=True, paintings=1),
|
|
|
|
"Act Completion (Queen Vanessa's Manor)": LocData(2000312017, "Queen Vanessa's Manor",
|
|
hit_type=HitType.umbrella, paintings=1),
|
|
|
|
"Act Completion (Mail Delivery Service)": LocData(2000312032, "Mail Delivery Service",
|
|
required_hats=[HatType.SPRINT]),
|
|
|
|
"Act Completion (Your Contract has Expired)": LocData(2000311390, "Your Contract has Expired",
|
|
hit_type=HitType.umbrella),
|
|
|
|
"Act Completion (Time Rift - Pipe)": LocData(2000313069, "Time Rift - Pipe", hookshot=True),
|
|
"Act Completion (Time Rift - Village)": LocData(2000313056, "Time Rift - Village"),
|
|
"Act Completion (Time Rift - Sleepy Subcon)": LocData(2000312086, "Time Rift - Sleepy Subcon"),
|
|
|
|
"Act Completion (The Birdhouse)": LocData(2000311428, "The Birdhouse"),
|
|
"Act Completion (The Lava Cake)": LocData(2000312509, "The Lava Cake"),
|
|
"Act Completion (The Twilight Bell)": LocData(2000311540, "The Twilight Bell"),
|
|
"Act Completion (The Windmill)": LocData(2000312263, "The Windmill"),
|
|
"Act Completion (The Illness has Spread)": LocData(2000312022, "The Illness has Spread", hookshot=True),
|
|
|
|
"Act Completion (Time Rift - The Twilight Bell)": LocData(2000312399, "Time Rift - The Twilight Bell",
|
|
required_hats=[HatType.DWELLER]),
|
|
|
|
"Act Completion (Time Rift - Curly Tail Trail)": LocData(2000313335, "Time Rift - Curly Tail Trail",
|
|
required_hats=[HatType.ICE]),
|
|
|
|
"Act Completion (Time Rift - Alpine Skyline)": LocData(2000311777, "Time Rift - Alpine Skyline"),
|
|
|
|
"Act Completion (The Finale)": LocData(2000311872, "The Finale", hookshot=True, required_hats=[HatType.DWELLER]),
|
|
"Act Completion (Time Rift - Tour)": LocData(2000311803, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
|
|
"Act Completion (Bon Voyage!)": LocData(2000311520, "Bon Voyage!", dlc_flags=HatDLC.dlc1, hookshot=True),
|
|
"Act Completion (Ship Shape)": LocData(2000311451, "Ship Shape", dlc_flags=HatDLC.dlc1),
|
|
|
|
"Act Completion (Rock the Boat)": LocData(2000311437, "Rock the Boat", dlc_flags=HatDLC.dlc1,
|
|
required_hats=[HatType.ICE]),
|
|
|
|
"Act Completion (Time Rift - Balcony)": LocData(2000312226, "Time Rift - Balcony", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Act Completion (Time Rift - Deep Sea)": LocData(2000312434, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True, required_hats=[HatType.DWELLER, HatType.ICE]),
|
|
|
|
"Act Completion (Nyakuza Metro Intro)": LocData(2000311138, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Act Completion (Yellow Overpass Station)": LocData(2000311206, "Yellow Overpass Station",
|
|
dlc_flags=HatDLC.dlc2,
|
|
hookshot=True),
|
|
|
|
"Act Completion (Yellow Overpass Manhole)": LocData(2000311387, "Yellow Overpass Manhole",
|
|
dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE]),
|
|
|
|
"Act Completion (Green Clean Station)": LocData(2000311207, "Green Clean Station", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Act Completion (Green Clean Manhole)": LocData(2000311388, "Green Clean Manhole",
|
|
dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE, HatType.DWELLER]),
|
|
|
|
"Act Completion (Bluefin Tunnel)": LocData(2000311208, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Act Completion (Pink Paw Station)": LocData(2000311209, "Pink Paw Station",
|
|
dlc_flags=HatDLC.dlc2,
|
|
hookshot=True,
|
|
required_hats=[HatType.DWELLER]),
|
|
|
|
"Act Completion (Pink Paw Manhole)": LocData(2000311389, "Pink Paw Manhole",
|
|
dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE]),
|
|
|
|
"Act Completion (Rush Hour)": LocData(2000311210, "Rush Hour",
|
|
dlc_flags=HatDLC.dlc2,
|
|
hookshot=True,
|
|
required_hats=[HatType.ICE, HatType.BREWING]),
|
|
|
|
"Act Completion (Time Rift - Rumbi Factory)": LocData(2000312736, "Time Rift - Rumbi Factory",
|
|
dlc_flags=HatDLC.dlc2),
|
|
}
|
|
|
|
storybook_pages = {
|
|
"Mafia of Cooks - Page: Fish Pile": LocData(2000345091, "Time Rift - Mafia of Cooks"),
|
|
"Mafia of Cooks - Page: Trash Mound": LocData(2000345090, "Time Rift - Mafia of Cooks"),
|
|
"Mafia of Cooks - Page: Beside Red Building": LocData(2000345092, "Time Rift - Mafia of Cooks"),
|
|
"Mafia of Cooks - Page: Behind Shipping Containers": LocData(2000345095, "Time Rift - Mafia of Cooks"),
|
|
"Mafia of Cooks - Page: Top of Boat": LocData(2000345093, "Time Rift - Mafia of Cooks"),
|
|
"Mafia of Cooks - Page: Below Dock": LocData(2000345094, "Time Rift - Mafia of Cooks"),
|
|
|
|
"Dead Bird Studio (Rift) - Page: Behind Cardboard Planet": LocData(2000345449, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Near Time Rift Gate": LocData(2000345447, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Top of Metal Bar": LocData(2000345448, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Lava Lamp": LocData(2000345450, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Above Horse Picture": LocData(2000345451, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Green Screen": LocData(2000345452, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: In The Corner": LocData(2000345453, "Time Rift - Dead Bird Studio"),
|
|
"Dead Bird Studio (Rift) - Page: Above TV Room": LocData(2000345445, "Time Rift - Dead Bird Studio"),
|
|
|
|
"Sleepy Subcon - Page: Behind Entrance Area": LocData(2000345373, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Near Wrecking Ball": LocData(2000345327, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Behind Crane": LocData(2000345371, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Wrecked Treehouse": LocData(2000345326, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Behind 2nd Rift Gate": LocData(2000345372, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Rotating Platform": LocData(2000345328, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Behind 3rd Rift Gate": LocData(2000345329, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Frozen Tree": LocData(2000345330, "Time Rift - Sleepy Subcon"),
|
|
"Sleepy Subcon - Page: Secret Library": LocData(2000345370, "Time Rift - Sleepy Subcon"),
|
|
|
|
"Alpine Skyline (Rift) - Page: Entrance Area Hidden Ledge": LocData(2000345016, "Time Rift - Alpine Skyline"),
|
|
"Alpine Skyline (Rift) - Page: Windmill Island Ledge": LocData(2000345012, "Time Rift - Alpine Skyline"),
|
|
"Alpine Skyline (Rift) - Page: Waterfall Wooden Pillar": LocData(2000345015, "Time Rift - Alpine Skyline"),
|
|
"Alpine Skyline (Rift) - Page: Lonely Birdhouse Top": LocData(2000345014, "Time Rift - Alpine Skyline"),
|
|
"Alpine Skyline (Rift) - Page: Below Aqueduct": LocData(2000345013, "Time Rift - Alpine Skyline"),
|
|
|
|
"Deep Sea - Page: Starfish": LocData(2000346454, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1),
|
|
"Deep Sea - Page: Mini Castle": LocData(2000346452, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1),
|
|
"Deep Sea - Page: Urchins": LocData(2000346449, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1),
|
|
|
|
"Deep Sea - Page: Big Castle": LocData(2000346450, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Deep Sea - Page: Castle Top Chest": LocData(2000304850, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Deep Sea - Page: Urchin Ledge": LocData(2000346451, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Deep Sea - Page: Hidden Castle Chest": LocData(2000304849, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Deep Sea - Page: Falling Platform": LocData(2000346456, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Deep Sea - Page: Lava Starfish": LocData(2000346453, "Time Rift - Deep Sea", dlc_flags=HatDLC.dlc1,
|
|
hookshot=True),
|
|
|
|
"Tour - Page: Mafia Town - Ledge": LocData(2000345038, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Mafia Town - Beach": LocData(2000345039, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Dead Bird Studio - C.A.W. Agents": LocData(2000345040, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Dead Bird Studio - Fragile Box": LocData(2000345041, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Subcon Forest - Giant Frozen Tree": LocData(2000345042, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Subcon Forest - Top of Pillar": LocData(2000345043, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Alpine Skyline - Birdhouse": LocData(2000345044, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: Alpine Skyline - Behind Lava Isle": LocData(2000345047, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
"Tour - Page: The Finale - Near Entrance": LocData(2000345087, "Time Rift - Tour", dlc_flags=HatDLC.dlc1),
|
|
|
|
"Rumbi Factory - Page: Manhole": LocData(2000345891, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
"Rumbi Factory - Page: Shutter Doors": LocData(2000345888, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Rumbi Factory - Page: Toxic Waste Dispenser": LocData(2000345892, "Time Rift - Rumbi Factory",
|
|
dlc_flags=HatDLC.dlc2),
|
|
|
|
"Rumbi Factory - Page: 3rd Area Ledge": LocData(2000345889, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Rumbi Factory - Page: Green Box Assembly Line": LocData(2000345884, "Time Rift - Rumbi Factory",
|
|
dlc_flags=HatDLC.dlc2),
|
|
|
|
"Rumbi Factory - Page: Broken Window": LocData(2000345885, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
"Rumbi Factory - Page: Money Vault": LocData(2000345890, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
"Rumbi Factory - Page: Warehouse Boxes": LocData(2000345887, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
"Rumbi Factory - Page: Glass Shelf": LocData(2000345886, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
"Rumbi Factory - Page: Last Area": LocData(2000345883, "Time Rift - Rumbi Factory", dlc_flags=HatDLC.dlc2),
|
|
}
|
|
|
|
shop_locations = {
|
|
"Badge Seller - Item 1": LocData(2000301003, "Badge Seller"),
|
|
"Badge Seller - Item 2": LocData(2000301004, "Badge Seller"),
|
|
"Badge Seller - Item 3": LocData(2000301005, "Badge Seller"),
|
|
"Badge Seller - Item 4": LocData(2000301006, "Badge Seller"),
|
|
"Badge Seller - Item 5": LocData(2000301007, "Badge Seller"),
|
|
"Badge Seller - Item 6": LocData(2000301008, "Badge Seller"),
|
|
"Badge Seller - Item 7": LocData(2000301009, "Badge Seller"),
|
|
"Badge Seller - Item 8": LocData(2000301010, "Badge Seller"),
|
|
"Badge Seller - Item 9": LocData(2000301011, "Badge Seller"),
|
|
"Badge Seller - Item 10": LocData(2000301012, "Badge Seller"),
|
|
"Mafia Boss Shop Item": LocData(2000301013, "Spaceship"),
|
|
|
|
"Yellow Overpass Station - Yellow Ticket Booth": LocData(2000301014, "Yellow Overpass Station",
|
|
dlc_flags=HatDLC.dlc2),
|
|
|
|
"Green Clean Station - Green Ticket Booth": LocData(2000301015, "Green Clean Station", dlc_flags=HatDLC.dlc2),
|
|
"Bluefin Tunnel - Blue Ticket Booth": LocData(2000301016, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Pink Paw Station - Pink Ticket Booth": LocData(2000301017, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
hookshot=True, required_hats=[HatType.DWELLER]),
|
|
|
|
"Main Station Thug A - Item 1": LocData(2000301048, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_0"),
|
|
"Main Station Thug A - Item 2": LocData(2000301049, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_0"),
|
|
"Main Station Thug A - Item 3": LocData(2000301050, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_0"),
|
|
"Main Station Thug A - Item 4": LocData(2000301051, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_0"),
|
|
"Main Station Thug A - Item 5": LocData(2000301052, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_0"),
|
|
|
|
"Main Station Thug B - Item 1": LocData(2000301053, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_1"),
|
|
"Main Station Thug B - Item 2": LocData(2000301054, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_1"),
|
|
"Main Station Thug B - Item 3": LocData(2000301055, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_1"),
|
|
"Main Station Thug B - Item 4": LocData(2000301056, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_1"),
|
|
"Main Station Thug B - Item 5": LocData(2000301057, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_1"),
|
|
|
|
"Main Station Thug C - Item 1": LocData(2000301058, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_2"),
|
|
"Main Station Thug C - Item 2": LocData(2000301059, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_2"),
|
|
"Main Station Thug C - Item 3": LocData(2000301060, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_2"),
|
|
"Main Station Thug C - Item 4": LocData(2000301061, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_2"),
|
|
"Main Station Thug C - Item 5": LocData(2000301062, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_2"),
|
|
|
|
"Yellow Overpass Thug A - Item 1": LocData(2000301018, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_13"),
|
|
"Yellow Overpass Thug A - Item 2": LocData(2000301019, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_13"),
|
|
"Yellow Overpass Thug A - Item 3": LocData(2000301020, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_13"),
|
|
"Yellow Overpass Thug A - Item 4": LocData(2000301021, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_13"),
|
|
"Yellow Overpass Thug A - Item 5": LocData(2000301022, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_13"),
|
|
|
|
"Yellow Overpass Thug B - Item 1": LocData(2000301043, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_5"),
|
|
"Yellow Overpass Thug B - Item 2": LocData(2000301044, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_5"),
|
|
"Yellow Overpass Thug B - Item 3": LocData(2000301045, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_5"),
|
|
"Yellow Overpass Thug B - Item 4": LocData(2000301046, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_5"),
|
|
"Yellow Overpass Thug B - Item 5": LocData(2000301047, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_5"),
|
|
|
|
"Yellow Overpass Thug C - Item 1": LocData(2000301063, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_14"),
|
|
"Yellow Overpass Thug C - Item 2": LocData(2000301064, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_14"),
|
|
"Yellow Overpass Thug C - Item 3": LocData(2000301065, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_14"),
|
|
"Yellow Overpass Thug C - Item 4": LocData(2000301066, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_14"),
|
|
"Yellow Overpass Thug C - Item 5": LocData(2000301067, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_14"),
|
|
|
|
"Green Clean Station Thug A - Item 1": LocData(2000301033, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_4"),
|
|
"Green Clean Station Thug A - Item 2": LocData(2000301034, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_4"),
|
|
"Green Clean Station Thug A - Item 3": LocData(2000301035, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_4"),
|
|
"Green Clean Station Thug A - Item 4": LocData(2000301036, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_4"),
|
|
"Green Clean Station Thug A - Item 5": LocData(2000301037, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_4"),
|
|
|
|
# This guy requires either the yellow ticket or the Ice Hat
|
|
"Green Clean Station Thug B - Item 1": LocData(2000301028, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE], nyakuza_thug="Hat_NPC_NyakuzaShop_6"),
|
|
"Green Clean Station Thug B - Item 2": LocData(2000301029, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE], nyakuza_thug="Hat_NPC_NyakuzaShop_6"),
|
|
"Green Clean Station Thug B - Item 3": LocData(2000301030, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE], nyakuza_thug="Hat_NPC_NyakuzaShop_6"),
|
|
"Green Clean Station Thug B - Item 4": LocData(2000301031, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE], nyakuza_thug="Hat_NPC_NyakuzaShop_6"),
|
|
"Green Clean Station Thug B - Item 5": LocData(2000301032, "Green Clean Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.ICE], nyakuza_thug="Hat_NPC_NyakuzaShop_6"),
|
|
|
|
"Bluefin Tunnel Thug - Item 1": LocData(2000301023, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_7"),
|
|
"Bluefin Tunnel Thug - Item 2": LocData(2000301024, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_7"),
|
|
"Bluefin Tunnel Thug - Item 3": LocData(2000301025, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_7"),
|
|
"Bluefin Tunnel Thug - Item 4": LocData(2000301026, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_7"),
|
|
"Bluefin Tunnel Thug - Item 5": LocData(2000301027, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_7"),
|
|
|
|
"Pink Paw Station Thug - Item 1": LocData(2000301038, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.DWELLER], hookshot=True,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_12"),
|
|
"Pink Paw Station Thug - Item 2": LocData(2000301039, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.DWELLER], hookshot=True,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_12"),
|
|
"Pink Paw Station Thug - Item 3": LocData(2000301040, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.DWELLER], hookshot=True,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_12"),
|
|
"Pink Paw Station Thug - Item 4": LocData(2000301041, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.DWELLER], hookshot=True,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_12"),
|
|
"Pink Paw Station Thug - Item 5": LocData(2000301042, "Pink Paw Station", dlc_flags=HatDLC.dlc2,
|
|
required_hats=[HatType.DWELLER], hookshot=True,
|
|
nyakuza_thug="Hat_NPC_NyakuzaShop_12"),
|
|
|
|
}
|
|
|
|
contract_locations = {
|
|
"Snatcher's Contract - The Subcon Well": LocData(2000300200, "Contractual Obligations"),
|
|
"Snatcher's Contract - Toilet of Doom": LocData(2000300201, "Subcon Forest Area", paintings=1),
|
|
"Snatcher's Contract - Queen Vanessa's Manor": LocData(2000300202, "Subcon Forest Area", paintings=1),
|
|
"Snatcher's Contract - Mail Delivery Service": LocData(2000300203, "Subcon Forest Area", paintings=1),
|
|
}
|
|
|
|
# Don't put any of the locations from peaks here, the rules for their entrances are set already
|
|
zipline_unlocks = {
|
|
"Alpine Skyline - Bird Pass Fork": "Zipline Unlock - The Birdhouse Path",
|
|
"Alpine Skyline - Yellow Band Hills": "Zipline Unlock - The Birdhouse Path",
|
|
"Alpine Skyline - The Purrloined Village: Horned Stone": "Zipline Unlock - The Birdhouse Path",
|
|
"Alpine Skyline - The Purrloined Village: Chest Reward": "Zipline Unlock - The Birdhouse Path",
|
|
|
|
"Alpine Skyline - Mystifying Time Mesa: Zipline": "Zipline Unlock - The Lava Cake Path",
|
|
"Alpine Skyline - Mystifying Time Mesa: Gate Puzzle": "Zipline Unlock - The Lava Cake Path",
|
|
"Alpine Skyline - Ember Summit": "Zipline Unlock - The Lava Cake Path",
|
|
|
|
"Alpine Skyline - Goat Outpost Horn": "Zipline Unlock - The Windmill Path",
|
|
"Alpine Skyline - Windy Passage": "Zipline Unlock - The Windmill Path",
|
|
|
|
"Alpine Skyline - The Twilight Path": "Zipline Unlock - The Twilight Bell Path",
|
|
}
|
|
|
|
# act completion rules should be set automatically as these are all event items
|
|
zero_jumps_hard = {
|
|
"Time Rift - Sewers (Zero Jumps)": LocData(0, "Time Rift - Sewers",
|
|
required_hats=[HatType.ICE], dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - Bazaar (Zero Jumps)": LocData(0, "Time Rift - Bazaar",
|
|
required_hats=[HatType.ICE], dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Big Parade (Zero Jumps)": LocData(0, "The Big Parade",
|
|
hit_type=HitType.umbrella,
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - Pipe (Zero Jumps)": LocData(0, "Time Rift - Pipe", hookshot=True, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - Curly Tail Trail (Zero Jumps)": LocData(0, "Time Rift - Curly Tail Trail",
|
|
required_hats=[HatType.ICE], dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - The Twilight Bell (Zero Jumps)": LocData(0, "Time Rift - The Twilight Bell",
|
|
required_hats=[HatType.ICE, HatType.DWELLER],
|
|
hit_type=HitType.umbrella_or_brewing,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Illness has Spread (Zero Jumps)": LocData(0, "The Illness has Spread",
|
|
required_hats=[HatType.ICE], hookshot=True,
|
|
hit_type=HitType.umbrella_or_brewing, dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Finale (Zero Jumps)": LocData(0, "The Finale",
|
|
required_hats=[HatType.ICE, HatType.DWELLER],
|
|
hookshot=True,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Pink Paw Station (Zero Jumps)": LocData(0, "Pink Paw Station",
|
|
required_hats=[HatType.ICE],
|
|
hookshot=True,
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
}
|
|
|
|
zero_jumps_expert = {
|
|
"The Birdhouse (Zero Jumps)": LocData(0, "The Birdhouse",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Lava Cake (Zero Jumps)": LocData(0, "The Lava Cake", dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Windmill (Zero Jumps)": LocData(0, "The Windmill",
|
|
required_hats=[HatType.ICE],
|
|
misc_required=["No Bonk Badge"],
|
|
dlc_flags=HatDLC.death_wish),
|
|
"The Twilight Bell (Zero Jumps)": LocData(0, "The Twilight Bell",
|
|
required_hats=[HatType.ICE, HatType.DWELLER],
|
|
hit_type=HitType.umbrella_or_brewing,
|
|
misc_required=["No Bonk Badge"],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Sleepy Subcon (Zero Jumps)": LocData(0, "Time Rift - Sleepy Subcon", required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Ship Shape (Zero Jumps)": LocData(0, "Ship Shape", required_hats=[HatType.ICE], dlc_flags=HatDLC.dlc1_dw),
|
|
}
|
|
|
|
zero_jumps = {
|
|
**zero_jumps_hard,
|
|
**zero_jumps_expert,
|
|
"Welcome to Mafia Town (Zero Jumps)": LocData(0, "Welcome to Mafia Town", dlc_flags=HatDLC.death_wish),
|
|
|
|
"Down with the Mafia! (Zero Jumps)": LocData(0, "Down with the Mafia!",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Cheating the Race (Zero Jumps)": LocData(0, "Cheating the Race",
|
|
required_hats=[HatType.TIME_STOP],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"The Golden Vault (Zero Jumps)": LocData(0, "The Golden Vault",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Dead Bird Studio (Zero Jumps)": LocData(0, "Dead Bird Studio",
|
|
required_hats=[HatType.ICE],
|
|
hit_type=HitType.umbrella_or_brewing,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Murder on the Owl Express (Zero Jumps)": LocData(0, "Murder on the Owl Express",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Picture Perfect (Zero Jumps)": LocData(0, "Picture Perfect", dlc_flags=HatDLC.death_wish),
|
|
|
|
"Train Rush (Zero Jumps)": LocData(0, "Train Rush",
|
|
required_hats=[HatType.ICE],
|
|
hookshot=True,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Contractual Obligations (Zero Jumps)": LocData(0, "Contractual Obligations",
|
|
paintings=1,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Your Contract has Expired (Zero Jumps)": LocData(0, "Your Contract has Expired",
|
|
hit_type=HitType.umbrella,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
# No ice hat/painting required in Expert
|
|
"Toilet of Doom (Zero Jumps)": LocData(0, "Toilet of Doom",
|
|
hookshot=True,
|
|
hit_type=HitType.umbrella_or_brewing,
|
|
required_hats=[HatType.ICE],
|
|
paintings=1,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Mail Delivery Service (Zero Jumps)": LocData(0, "Mail Delivery Service",
|
|
required_hats=[HatType.SPRINT],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - Alpine Skyline (Zero Jumps)": LocData(0, "Time Rift - Alpine Skyline",
|
|
required_hats=[HatType.ICE],
|
|
hookshot=True,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Time Rift - The Lab (Zero Jumps)": LocData(0, "Time Rift - The Lab",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Yellow Overpass Station (Zero Jumps)": LocData(0, "Yellow Overpass Station",
|
|
required_hats=[HatType.ICE],
|
|
hookshot=True,
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
|
|
"Green Clean Station (Zero Jumps)": LocData(0, "Green Clean Station",
|
|
required_hats=[HatType.ICE],
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
}
|
|
|
|
snatcher_coins = {
|
|
"Snatcher Coin - Top of HQ (DWTM)": LocData(0, "Down with the Mafia!", snatcher_coin="Snatcher Coin - Top of HQ",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of HQ (CTR)": LocData(0, "Cheating the Race", snatcher_coin="Snatcher Coin - Top of HQ",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of HQ (HUMT)": LocData(0, "Heating Up Mafia Town", snatcher_coin="Snatcher Coin - Top of HQ",
|
|
hit_type=HitType.umbrella, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of HQ (TGV)": LocData(0, "The Golden Vault", snatcher_coin="Snatcher Coin - Top of HQ",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of HQ (DW: BTH)": LocData(0, "Beat the Heat", snatcher_coin="Snatcher Coin - Top of HQ",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Tower": LocData(0, "Mafia Town Area (HUMT)", snatcher_coin="Snatcher Coin - Top of Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Tower (DW: BTH)": LocData(0, "Beat the Heat", snatcher_coin="Snatcher Coin - Top of Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Tower (DW: CAT)": LocData(0, "Collect-a-thon", snatcher_coin="Snatcher Coin - Top of Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Tower (SSFOS)": LocData(0, "She Speedran from Outer Space",
|
|
snatcher_coin="Snatcher Coin - Top of Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Tower (DW: MJ)": LocData(0, "Mafia's Jumps", snatcher_coin="Snatcher Coin - Top of Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Under Ruined Tower": LocData(0, "Mafia Town Area",
|
|
snatcher_coin="Snatcher Coin - Under Ruined Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Under Ruined Tower (DW: CAT)": LocData(0, "Collect-a-thon",
|
|
snatcher_coin="Snatcher Coin - Under Ruined Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Under Ruined Tower (DW: SSFOS)": LocData(0, "She Speedran from Outer Space",
|
|
snatcher_coin="Snatcher Coin - Under Ruined Tower",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Red House (DBS)": LocData(0, "Dead Bird Studio - Elevator Area",
|
|
snatcher_coin="Snatcher Coin - Top of Red House",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Top of Red House (DW: SB)": LocData(0, "Security Breach",
|
|
snatcher_coin="Snatcher Coin - Top of Red House",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Train Rush": LocData(0, "Train Rush", snatcher_coin="Snatcher Coin - Train Rush",
|
|
hookshot=True, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Train Rush (10 Seconds)": LocData(0, "10 Seconds until Self-Destruct",
|
|
snatcher_coin="Snatcher Coin - Train Rush",
|
|
hookshot=True, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Picture Perfect": LocData(0, "Picture Perfect", snatcher_coin="Snatcher Coin - Picture Perfect",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Swamp Tree": LocData(0, "Subcon Forest Area", snatcher_coin="Snatcher Coin - Swamp Tree",
|
|
hookshot=True, paintings=1,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Swamp Tree (Speedrun Well)": LocData(0, "Speedrun Well",
|
|
snatcher_coin="Snatcher Coin - Swamp Tree",
|
|
hookshot=True, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Manor Roof": LocData(0, "Subcon Forest Area", snatcher_coin="Snatcher Coin - Manor Roof",
|
|
hit_type=HitType.dweller_bell, paintings=1,
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Giant Time Piece": LocData(0, "Subcon Forest Area",
|
|
snatcher_coin="Snatcher Coin - Giant Time Piece",
|
|
paintings=3, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Goat Village Top": LocData(0, "Alpine Skyline Area (TIHS)",
|
|
snatcher_coin="Snatcher Coin - Goat Village Top",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Goat Village Top (Illness Speedrun)": LocData(0, "The Illness has Speedrun",
|
|
snatcher_coin="Snatcher Coin - Goat Village Top",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Lava Cake": LocData(0, "The Lava Cake", snatcher_coin="Snatcher Coin - Lava Cake",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Windmill": LocData(0, "The Windmill", snatcher_coin="Snatcher Coin - Windmill",
|
|
dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Windmill (DW: WUW)": LocData(0, "Wound-Up Windmill", snatcher_coin="Snatcher Coin - Windmill",
|
|
hookshot=True, dlc_flags=HatDLC.death_wish),
|
|
|
|
"Snatcher Coin - Green Clean Tower": LocData(0, "Green Clean Station",
|
|
snatcher_coin="Snatcher Coin - Green Clean Tower",
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
|
|
"Snatcher Coin - Bluefin Cat Train": LocData(0, "Bluefin Tunnel",
|
|
snatcher_coin="Snatcher Coin - Bluefin Cat Train",
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
|
|
"Snatcher Coin - Pink Paw Fence": LocData(0, "Pink Paw Station",
|
|
snatcher_coin="Snatcher Coin - Pink Paw Fence",
|
|
dlc_flags=HatDLC.dlc2_dw),
|
|
}
|
|
|
|
event_locs = {
|
|
**zero_jumps,
|
|
**snatcher_coins,
|
|
"HUMT Access": LocData(0, "Heating Up Mafia Town"),
|
|
"TOD Access": LocData(0, "Toilet of Doom"),
|
|
"YCHE Access": LocData(0, "Your Contract has Expired"),
|
|
"AFR Access": LocData(0, "Alpine Free Roam"),
|
|
"TIHS Access": LocData(0, "The Illness has Spread"),
|
|
|
|
"Birdhouse Cleared": LocData(0, "The Birdhouse", act_event=True),
|
|
"Lava Cake Cleared": LocData(0, "The Lava Cake", act_event=True),
|
|
"Windmill Cleared": LocData(0, "The Windmill", act_event=True),
|
|
"Twilight Bell Cleared": LocData(0, "The Twilight Bell", act_event=True),
|
|
"Time Piece Cluster": LocData(0, "The Finale", act_event=True),
|
|
|
|
# not really an act
|
|
"Nyakuza Intro Cleared": LocData(0, "Nyakuza Free Roam", dlc_flags=HatDLC.dlc2),
|
|
|
|
"Yellow Overpass Station Cleared": LocData(0, "Yellow Overpass Station", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Green Clean Station Cleared": LocData(0, "Green Clean Station", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Bluefin Tunnel Cleared": LocData(0, "Bluefin Tunnel", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Pink Paw Station Cleared": LocData(0, "Pink Paw Station", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Yellow Overpass Manhole Cleared": LocData(0, "Yellow Overpass Manhole", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Green Clean Manhole Cleared": LocData(0, "Green Clean Manhole", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Pink Paw Manhole Cleared": LocData(0, "Pink Paw Manhole", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
"Rush Hour Cleared": LocData(0, "Rush Hour", dlc_flags=HatDLC.dlc2, act_event=True),
|
|
}
|
|
|
|
# DO NOT ALTER THE ORDER OF THIS LIST
|
|
death_wishes = {
|
|
"Beat the Heat": 2000350000,
|
|
"Snatcher's Hit List": 2000350002,
|
|
"So You're Back From Outer Space": 2000350004,
|
|
"Collect-a-thon": 2000350006,
|
|
"Rift Collapse: Mafia of Cooks": 2000350008,
|
|
"She Speedran from Outer Space": 2000350010,
|
|
"Mafia's Jumps": 2000350012,
|
|
"Vault Codes in the Wind": 2000350014,
|
|
"Encore! Encore!": 2000350016,
|
|
"Snatcher Coins in Mafia Town": 2000350018,
|
|
|
|
"Security Breach": 2000350020,
|
|
"The Great Big Hootenanny": 2000350022,
|
|
"Rift Collapse: Dead Bird Studio": 2000350024,
|
|
"10 Seconds until Self-Destruct": 2000350026,
|
|
"Killing Two Birds": 2000350028,
|
|
"Snatcher Coins in Battle of the Birds": 2000350030,
|
|
"Zero Jumps": 2000350032,
|
|
|
|
"Speedrun Well": 2000350034,
|
|
"Rift Collapse: Sleepy Subcon": 2000350036,
|
|
"Boss Rush": 2000350038,
|
|
"Quality Time with Snatcher": 2000350040,
|
|
"Breaching the Contract": 2000350042,
|
|
"Snatcher Coins in Subcon Forest": 2000350044,
|
|
|
|
"Bird Sanctuary": 2000350046,
|
|
"Rift Collapse: Alpine Skyline": 2000350048,
|
|
"Wound-Up Windmill": 2000350050,
|
|
"The Illness has Speedrun": 2000350052,
|
|
"Snatcher Coins in Alpine Skyline": 2000350054,
|
|
"Camera Tourist": 2000350056,
|
|
|
|
"The Mustache Gauntlet": 2000350058,
|
|
"No More Bad Guys": 2000350060,
|
|
|
|
"Seal the Deal": 2000350062,
|
|
"Rift Collapse: Deep Sea": 2000350064,
|
|
"Cruisin' for a Bruisin'": 2000350066,
|
|
|
|
"Community Rift: Rhythm Jump Studio": 2000350068,
|
|
"Community Rift: Twilight Travels": 2000350070,
|
|
"Community Rift: The Mountain Rift": 2000350072,
|
|
"Snatcher Coins in Nyakuza Metro": 2000350074,
|
|
}
|
|
|
|
location_table = {
|
|
**ahit_locations,
|
|
**act_completions,
|
|
**storybook_pages,
|
|
**contract_locations,
|
|
**shop_locations,
|
|
}
|