Files
Grinch-AP/worlds/grinch/Locations.py

1251 lines
39 KiB
Python
Raw Normal View History

2025-07-25 19:33:51 -04:00
from typing import NamedTuple, Optional
from .RamHandler import GrinchRamData
from BaseClasses import Location, Region
2025-07-25 16:24:08 -04:00
2025-07-25 19:33:51 -04:00
class GrinchLocationData(NamedTuple):
2025-07-25 16:24:08 -04:00
region: str
location_group: Optional[list[str]]
id: Optional[int]
update_ram_addr: list[GrinchRamData]
reset_addr: Optional[list[GrinchRamData]] = (
None # Addresses to update once we find the item
)
2025-07-25 19:33:51 -04:00
class GrinchLocation(Location):
game: str = "The Grinch"
2025-07-25 16:24:08 -04:00
@staticmethod
def get_apid(id: int):
base_id: int = 42069
return base_id + id if id is not None else None
def __init__(
self, player: int, name: str, parent: Region, data: GrinchLocationData
):
address = None if data.id is None else GrinchLocation.get_apid(data.id)
super(GrinchLocation, self).__init__(
player, name, address=address, parent=parent
)
self.code = data.id
self.region = data.region
self.type = data.location_group
self.address = self.address
2025-09-26 17:11:48 -04:00
def get_location_names_per_category() -> dict[str, set[str]]:
categories: dict[str, set[str]] = {}
for name, data in grinch_locations.items():
if data.location_group is None:
continue
2025-09-26 17:11:48 -04:00
for group in data.location_group: # iterate over each category
categories.setdefault(group, set()).add(name)
return categories
2025-07-25 16:24:08 -04:00
grinch_locations = {
# Going to use current map id as indicator whether or not you visited a location
# Visitsanity
"WV - First Visit": GrinchLocationData(
"Whoville",
["Visitsanity", "Whoville"],
100,
[GrinchRamData(0x010000, value=0x07)],
),
"WV - Post Office - First Visit": GrinchLocationData(
"Post Office",
["Visitsanity", "Whoville", "Post Office"],
101,
[GrinchRamData(0x010000, value=0x0A)],
),
"WV - City Hall - First Visit": GrinchLocationData(
"City Hall",
["Visitsanity", "Whoville", "City Hall"],
102,
[GrinchRamData(0x010000, value=0x08)],
),
"WV - Clock Tower - First Visit": GrinchLocationData(
"Clock Tower",
["Visitsanity", "Whoville", "Clock Tower"],
103,
[GrinchRamData(0x010000, value=0x09)],
),
"WF - First Visit": GrinchLocationData(
"Who Forest",
["Visitsanity", "Who Forest"],
104,
[GrinchRamData(0x010000, value=0x0B)],
),
"WF - Ski Resort - First Visit": GrinchLocationData(
"Ski Resort",
["Visitsanity", "Who Forest", "Ski Resort"],
105,
[GrinchRamData(0x010000, value=0x0C)],
),
"WF - Civic Center - First Visit": GrinchLocationData(
"Civic Center",
["Visitsanity", "Who Forest", "Civic Center"],
106,
[GrinchRamData(0x010000, value=0x0D)],
),
"WD - First Visit": GrinchLocationData(
"Who Dump",
["Visitsanity", "Who Dump"],
107,
[GrinchRamData(0x010000, value=0x0E)],
),
"WD - Minefield - First Visit": GrinchLocationData(
"Minefield",
["Visitsanity", "Who Dump", "Minefield"],
108,
[GrinchRamData(0x010000, value=0x11)],
),
"WD - Power Plant - First Visit": GrinchLocationData(
"Power Plant",
["Visitsanity", "Who Dump", "Power Plant"],
109,
[GrinchRamData(0x010000, value=0x10)],
),
"WD - Generator Building - First Visit": GrinchLocationData(
"Generator Building",
["Visitsanity", "Who Dump", "Generator Building"],
110,
[GrinchRamData(0x010000, value=0x0F)],
),
"WL - South Shore - First Visit": GrinchLocationData(
"Who Lake",
["Visitsanity", "Who Lake", "South Shore"],
111,
[GrinchRamData(0x010000, value=0x12)],
),
"WL - Submarine World - First Visit": GrinchLocationData(
"Submarine World",
["Visitsanity", "Who Lake", "Submarine World"],
112,
[GrinchRamData(0x010000, value=0x17)],
),
"WL - Scout's Hut - First Visit": GrinchLocationData(
"Scout's Hut",
["Visitsanity", "Who Lake", "Scout's Hut"],
113,
[GrinchRamData(0x010000, value=0x13)],
),
"WL - North Shore - First Visit": GrinchLocationData(
"North Shore",
["Visitsanity", "Who Lake", "North Shore"],
114,
[GrinchRamData(0x010000, value=0x14)],
),
"WL - Mayor's Villa - First Visit": GrinchLocationData(
"Mayor's Villa",
["Visitsanity", "Who Lake", "Mayor's Villa"],
115,
[GrinchRamData(0x010000, value=0x16)],
),
# Need to find mission completion address for handful of locations that are not documented.
# Missions that have value are those ones we need to find the check for
# Whoville Missions
"WV - Post Office - Shuffling The Mail": GrinchLocationData(
"Post Office",
["Whoville Missions", "Missions", "Whoville", "Post Office"],
201,
[GrinchRamData(0x0100BE, binary_bit_pos=0)],
),
"WV - Smashing Snowmen": GrinchLocationData(
"Whoville",
["Whoville Missions", "Missions", "Whoville"],
200,
[GrinchRamData(0x0100C5, value=10)],
),
"WV - Painting The Mayor's Posters": GrinchLocationData(
"Whoville",
["Whoville Missions", "Missions", "Whoville"],
202,
[GrinchRamData(0x0100C6, value=10)],
),
"WV - Launching Eggs Into Houses": GrinchLocationData(
"Whoville",
["Whoville Missions", "Missions", "Whoville"],
203,
[GrinchRamData(0x0100C7, value=10)],
),
"WV - City Hall - Modifying The Mayor's Statue": GrinchLocationData(
"City Hall",
["Whoville Missions", "Missions", "Whoville", "City Hall"],
204,
[GrinchRamData(0x0100BE, binary_bit_pos=1)],
),
"WV - Clock Tower - Advancing The Countdown-To-Xmas Clock": GrinchLocationData(
"Clock Tower",
["Whoville Missions", "Missions", "Whoville", "Clock Tower"],
205,
[GrinchRamData(0x0100BE, binary_bit_pos=2)],
),
"WV - Squashing All Gifts": GrinchLocationData(
"Whoville",
["Whoville Missions", "Missions", "Giftsanity", "Whoville"],
206,
[GrinchRamData(0x01005C, value=500, byte_size=2)],
),
# Who Forest Missions
"WF - Making Xmas Trees Droop": GrinchLocationData(
"Who Forest",
["Who Forest Missions", "Missions", "Who Forest"],
300,
[GrinchRamData(0x0100C8, value=10)],
),
"WF - Sabotaging Snow Cannon With Glue": GrinchLocationData(
"Who Forest",
["Who Forest Missions", "Missions", "Who Forest"],
301,
[GrinchRamData(0x0100BE, binary_bit_pos=3)],
),
"WF - Putting Beehives In Cabins": GrinchLocationData(
"Who Forest",
["Who Forest Missions", "Missions", "Who Forest"],
302,
[GrinchRamData(0x0100CA, value=10)],
),
"WF - Ski Resort - Sliming The Mayor's Skis": GrinchLocationData(
"Ski Resort",
["Who Forest Missions", "Missions", "Who Forest", "Ski Resort"],
303,
[GrinchRamData(0x0100BE, binary_bit_pos=4)],
),
"WF - Civic Center - Replacing The Candles On The Cake With Fireworks": GrinchLocationData(
"Civic Center",
["Who Forest Missions", "Missions", "Who Forest", "Civic Center"],
304,
[GrinchRamData(0x0100BE, binary_bit_pos=5)],
),
"WF - Squashing All Gifts": GrinchLocationData(
"Who Forest",
["Who Forest Missions", "Missions", "Giftsanity", "Who Forest"],
305,
[GrinchRamData(0x01005E, value=750, byte_size=2)],
),
# Who Dump Missions
"WD - Stealing Food From Birds": GrinchLocationData(
"Who Dump",
["Who Dump Missions", "Missions", "Who Dump"],
400,
[GrinchRamData(0x0100CB, value=10)],
),
"WD - Feeding The Computer With Robot Parts": GrinchLocationData(
"Who Dump",
["Who Dump Missions", "Missions", "Who Dump"],
401,
[GrinchRamData(0x0100BF, binary_bit_pos=2)],
),
"WD - Infesting The Mayor's House With Rats": GrinchLocationData(
"Who Dump",
["Who Dump Missions", "Missions", "Who Dump"],
402,
[GrinchRamData(0x0100BE, binary_bit_pos=6)],
),
"WD - Conducting The Stinky Gas To Who-Bris' Shack": GrinchLocationData(
"Who Dump",
["Who Dump Missions", "Missions", "Who Dump"],
403,
[GrinchRamData(0x0100BE, binary_bit_pos=7)],
),
"WD - Minefield - Shaving Who Dump Guardian": GrinchLocationData(
"Minefield",
["Who Dump Missions", "Missions", "Who Dump", "Minefield"],
404,
[GrinchRamData(0x0100BF, binary_bit_pos=0)],
),
"WD - Generator Building - Short-Circuiting Power-Plant": GrinchLocationData(
"Generator Building",
["Who Dump Missions", "Missions", "Who Dump", "Generator Building"],
405,
[GrinchRamData(0x0100BF, binary_bit_pos=1)],
),
"WD - Squashing All Gifts": GrinchLocationData(
"Who Dump",
["Who Dump Missions", "Missions", "Who Dump", "Giftsanity"],
406,
[GrinchRamData(0x010060, value=750, byte_size=2)],
),
# Who Lake Missions
"WL - South Shore - Putting Thistles In Shorts": GrinchLocationData(
"Who Lake",
[
"Who Lake Missions",
"Missions",
"Who Lake",
"South Shore",
"South Shore Missions",
],
500,
[GrinchRamData(0x0100E5, value=10)],
),
"WL - South Shore - Sabotaging The Tents": GrinchLocationData(
"Who Lake",
[
"Who Lake Missions",
"Missions",
"Who Lake",
"South Shore",
"South Shore Missions",
],
501,
[GrinchRamData(0x0100E6, value=10)],
),
"WL - North Shore - Drilling Holes In Canoes": GrinchLocationData(
"North Shore",
["Who Lake Missions", "Missions", "Who Lake", "North Shore"],
502,
[GrinchRamData(0x0100EE, value=10)],
),
"WL - Submarine World - Modifying The Marine Mobile": GrinchLocationData(
"Submarine World",
["Who Lake Missions", "Missions", "Who Lake", "Submarine World"],
503,
[GrinchRamData(0x0100BF, binary_bit_pos=4)],
),
"WL - Mayor's Villa - Hooking The Mayor's Bed To The Motorboat": GrinchLocationData(
"Mayor's Villa",
["Who Lake Missions", "Missions", "Who Lake", "Mayor's Villa"],
504,
[GrinchRamData(0x0100BF, binary_bit_pos=3)],
),
"WL - Squashing All Gifts": GrinchLocationData(
"Who Lake",
["Who Lake Missions", "Missions", "Who Lake", "Giftsanity"],
505,
[GrinchRamData(0x010062, value=1000, byte_size=2)],
),
# Need to find binary values for individual blueprints, but all ram addresses are found
# Blueprints
# Binoculars Blueprints
"WV - Binoculars BP on Post Office Roof": GrinchLocationData(
"Whoville",
["Binocular Blueprints", "Blueprints", "Whoville", "Whoville Blueprints"],
600,
[GrinchRamData(0x01020B, binary_bit_pos=2)],
),
"WV - City Hall - Binoculars BP left side of Library": GrinchLocationData(
"City Hall",
[
"Binocular Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"City Hall",
"City Hall Blueprints",
],
601,
[GrinchRamData(0x01021F, binary_bit_pos=6)],
),
"WV - City Hall - Binoculars BP front side of Library": GrinchLocationData(
"City Hall",
[
"Binocular Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"City Hall",
"City Hall Blueprints",
],
602,
[GrinchRamData(0x01021F, binary_bit_pos=5)],
),
"WV - City Hall - Binoculars BP right side of Library": GrinchLocationData(
"City Hall",
[
"Binocular Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"City Hall",
"City Hall Blueprints",
],
603,
[GrinchRamData(0x01021F, binary_bit_pos=4)],
),
# Rotten Egg Launcher Blueprints
"WV - REL BP left of City Hall": GrinchLocationData(
"Whoville",
[
"Rotten Egg Launcher Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
],
700,
[GrinchRamData(0x01020B, binary_bit_pos=0)],
),
"WV - REL BP left of Clock Tower": GrinchLocationData(
"Whoville",
[
"Rotten Egg Launcher Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
],
701,
[GrinchRamData(0x01020B, binary_bit_pos=1)],
),
"WV - Post Office - REL BP inside Silver Room": GrinchLocationData(
"Post Office",
[
"Rotten Egg Launcher Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"Post Office",
"Post Office Blueprints",
],
702,
[GrinchRamData(0x01021C, binary_bit_pos=1)],
),
"WV - Post Office - REL BP at Entrance Door after Mission Completion": GrinchLocationData(
"Post Office",
[
"Rotten Egg Launcher Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"Post Office",
"Post Office Blueprints",
],
703,
[GrinchRamData(0x01021C, binary_bit_pos=2)],
),
# Rocket Spring Blueprints
"WF - RS BP behind Vacuum Tube": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
800,
[GrinchRamData(0x010243, binary_bit_pos=3)],
),
"WF - RS BP in front of 2nd House near Vacuum Tube": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
801,
[GrinchRamData(0x010243, binary_bit_pos=1)],
),
"WF - RS BP near Tree House on Ground": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
802,
[GrinchRamData(0x010243, binary_bit_pos=4)],
),
"WF - RS BP behind Cable Car House": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
804,
[GrinchRamData(0x010242, binary_bit_pos=7)],
),
"WF - RS BP near Who Snowball in Cave": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
805,
[GrinchRamData(0x010242, binary_bit_pos=6)],
),
"WF - RS BP on Branch Platform closest to Glue Cannon": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
806,
[GrinchRamData(0x010243, binary_bit_pos=2)],
),
"WF - RS BP on Branch Platform Near Beast": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
807,
[GrinchRamData(0x010243, binary_bit_pos=0)],
),
"WF - RS BP on Branch Platform Elevated next to House": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
808,
[GrinchRamData(0x010243, binary_bit_pos=6)],
),
"WF - RS BP on Tree House": GrinchLocationData(
"Who Forest",
[
"Rocket Spring Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
809,
[GrinchRamData(0x010243, binary_bit_pos=5)],
),
# Slime Shooter Blueprints
"WF - SS BP in Branch Platform Elevated House": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
900,
[GrinchRamData(0x010244, binary_bit_pos=3)],
),
"WF - SS BP in Branch Platform House next to Beast": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
901,
[GrinchRamData(0x010243, binary_bit_pos=7)],
),
"WF - SS BP in House in front of Civic Center Cave": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
902,
[GrinchRamData(0x010244, binary_bit_pos=2)],
),
"WF - SS BP in House next to Tree House": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
903,
[GrinchRamData(0x010244, binary_bit_pos=1)],
),
"WF - SS BP in House across from Tree House": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
904,
[GrinchRamData(0x010244, binary_bit_pos=5)],
),
"WF - SS BP in 2nd House near Vacuum Tube Right Side": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
905,
[GrinchRamData(0x010244, binary_bit_pos=4)],
),
"WF - SS BP in 2nd House near Vacuum Tube Left Side": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
906,
[GrinchRamData(0x010244, binary_bit_pos=7)],
),
"WF - SS BP in 2nd House near Vacuum Tube inbetween Blueprints": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
907,
[GrinchRamData(0x010244, binary_bit_pos=6)],
),
"WF - SS BP in House near Vacuum Tube": GrinchLocationData(
"Who Forest",
[
"Slime Shooter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
],
908,
[GrinchRamData(0x010244, binary_bit_pos=0)],
),
# Octopus Climbing Device
"WD - OCD BP inside Middle Pipe": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1001,
[GrinchRamData(0x010252, binary_bit_pos=3)],
),
"WD - OCD BP inside Right Pipe": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1002,
[GrinchRamData(0x010252, binary_bit_pos=5)],
),
"WD - OCD BP in Vent to Mayor's House": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1003,
[GrinchRamData(0x010252, binary_bit_pos=1)],
),
"WD - OCD BP inside Left Pipe": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1004,
[GrinchRamData(0x010252, binary_bit_pos=4)],
),
"WD - OCD BP near Right Side of Power Plant Wall": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1005,
[GrinchRamData(0x010252, binary_bit_pos=0)],
),
"WD - OCD BP near Who-Bris' Shack": GrinchLocationData(
"Who Dump",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
],
1006,
[GrinchRamData(0x010252, binary_bit_pos=2)],
),
"WD - Minefield - OCD BP on Left Side of House": GrinchLocationData(
"Minefield",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Minefield",
"Minefield Blueprints",
],
1007,
[GrinchRamData(0x01026E, binary_bit_pos=2)],
),
"WD - Minefield - OCD BP on Right Side of Shack": GrinchLocationData(
"Minefield",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Minefield",
"Minefield Blueprints",
],
1008,
[GrinchRamData(0x01026E, binary_bit_pos=4)],
),
"WD - Minefield - OCD BP inside Guardian's House": GrinchLocationData(
"Minefield",
[
"Octopus Climbing Device Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Minefield",
"Minefield Blueprints",
],
1009,
[GrinchRamData(0x01026E, binary_bit_pos=3)],
),
# Marine Mobile Blueprints
"WL - South Shore - MM BP on Bridge to Scout's Hut": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1100,
[GrinchRamData(0x010281, binary_bit_pos=5)],
),
"WL - South Shore - MM BP across from Tent near Porcupine": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1101,
[GrinchRamData(0x010281, binary_bit_pos=6)],
),
"WL - South Shore - MM BP near Outhouse": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1102,
[GrinchRamData(0x010281, binary_bit_pos=7)],
),
"WL - South Shore - MM BP near Hill Bridge": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1103,
[GrinchRamData(0x010282, binary_bit_pos=0)],
),
"WL - South Shore - MM BP on Scout's Hut Roof": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1104,
[GrinchRamData(0x010281, binary_bit_pos=4)],
),
"WL - South Shore - MM BP on Grass Platform": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1105,
[GrinchRamData(0x010281, binary_bit_pos=2)],
),
"WL - South Shore - MM BP across Zipline Platform": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1106,
[GrinchRamData(0x010281, binary_bit_pos=3)],
),
"WL - South Shore - MM BP behind Summer Beast": GrinchLocationData(
"Who Lake",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"South Shore",
"South Shore Blueprints",
],
1107,
[GrinchRamData(0x010282, binary_bit_pos=1)],
),
"WL - North Shore - MM BP below Bridge": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1108,
[GrinchRamData(0x010293, binary_bit_pos=0)],
),
"WL - North Shore - MM BP behind Skunk Hut": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1109,
[GrinchRamData(0x010293, binary_bit_pos=2)],
),
"WL - North Shore - MM BP inside Skunk Hut": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1110,
[GrinchRamData(0x010292, binary_bit_pos=6)],
),
"WL - North Shore - MM BP inside House's Fence": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1111,
[GrinchRamData(0x010292, binary_bit_pos=7)],
),
"WL - North Shore - MM BP inside Boulder Box near Bridge": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1112,
[GrinchRamData(0x010293, binary_bit_pos=3)],
),
"WL - North Shore - MM BP inside Boulder Box behind Skunk Hut": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1113,
[GrinchRamData(0x010293, binary_bit_pos=4)],
),
"WL - North Shore - MM BP inside Drill House": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1114,
[GrinchRamData(0x010292, binary_bit_pos=5)],
),
"WL - North Shore - MM BP on Crow Platform near Drill House": GrinchLocationData(
"North Shore",
[
"Marine Mobile Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"North Shore",
"North Shore Blueprints",
],
1115,
[GrinchRamData(0x010293, binary_bit_pos=1)],
),
# Grinch Copter Blueprints
"WV - City Hall - GC BP in Safe Room": GrinchLocationData(
"City Hall",
[
"Grinch Copter Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"City Hall",
"City Hall Blueprints",
],
1200,
[GrinchRamData(0x01021F, binary_bit_pos=7)],
),
"WV - City Hall - GC BP in Statue Room": GrinchLocationData(
"City Hall",
[
"Grinch Copter Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"City Hall",
"City Hall Blueprints",
],
1201,
[GrinchRamData(0x010220, binary_bit_pos=0)],
),
"WV - Clock Tower - GC BP in Bedroom": GrinchLocationData(
"Clock Tower",
[
"Grinch Copter Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"Clock Tower",
"Clock Tower Blueprints",
],
1202,
[GrinchRamData(0x010216, binary_bit_pos=3)],
),
"WV - Clock Tower - GC BP in Bell Room": GrinchLocationData(
"Clock Tower",
[
"Grinch Copter Blueprints",
"Blueprints",
"Whoville",
"Whoville Blueprints",
"Clock Tower",
"Clock Tower Blueprints",
],
1203,
[GrinchRamData(0x010216, binary_bit_pos=2)],
),
"WF - Ski Resort - GC BP inside Dog's Fence": GrinchLocationData(
"Ski Resort",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
"Ski Resort",
"Ski Resort Blueprints",
],
1204,
[GrinchRamData(0x010234, binary_bit_pos=7)],
),
"WF - Ski Resort - GC BP in Max Cave": GrinchLocationData(
"Ski Resort",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
"Ski Resort",
"Ski Resort Blueprints",
],
1205,
[GrinchRamData(0x010234, binary_bit_pos=6)],
),
"WF - Civic Center - GC BP on Left Side in Bat Cave Wall": GrinchLocationData(
"Civic Center",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
"Civic Center",
"Civic Center Blueprints",
],
1206,
[GrinchRamData(0x01022A, binary_bit_pos=7)],
),
"WF - Civic Center - GC BP in Frozen Ice": GrinchLocationData(
"Civic Center",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Forest",
"Who Forest Blueprints",
"Civic Center",
"Civic Center Blueprints",
],
1207,
[GrinchRamData(0x01022B, binary_bit_pos=0)],
),
"WD - Power Plant - GC BP in Max Cave": GrinchLocationData(
"Power Plant",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Power Plant",
"Power Plant Blueprints",
],
1208,
[GrinchRamData(0x010265, binary_bit_pos=1)],
),
"WD - Power Plant - GC BP After First Gate": GrinchLocationData(
"Power Plant",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Power Plant",
"Power Plant Blueprints",
],
1209,
[GrinchRamData(0x010265, binary_bit_pos=2)],
),
"WD - Generator Building - GC BP on the Highest Platform": GrinchLocationData(
"Generator Building",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Generator Building",
"Generator Building Blueprints",
],
1210,
[GrinchRamData(0x01026B, binary_bit_pos=0)],
),
"WD - Generator Building - GC BP at the Entrance after Mission Completion": GrinchLocationData(
"Generator Building",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Dump",
"Who Dump Blueprints",
"Generator Building",
"Generator Building Blueprints",
],
1211,
[GrinchRamData(0x01026B, binary_bit_pos=1)],
),
"WL - Submarine World - GC BP Just Below Water Surface": GrinchLocationData(
"Submarine World",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"Submarine World",
"Submarine World Blueprints",
],
1212,
[GrinchRamData(0x010289, binary_bit_pos=3)],
),
"WL - Submarine World - GC BP Underwater": GrinchLocationData(
"Submarine World",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"Submarine World",
"Submarine World Blueprints",
],
1213,
[GrinchRamData(0x010289, binary_bit_pos=4)],
),
"WL - Mayor's Villa - GC BP on Tree Branch": GrinchLocationData(
"Mayor's Villa",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"Mayor's Villa",
"Mayor's Villa Blueprints",
],
1214,
[GrinchRamData(0x010275, binary_bit_pos=7)],
),
"WL - Mayor's Villa - GC BP in Pirate's Cave": GrinchLocationData(
"Mayor's Villa",
[
"Grinch Copter Blueprints",
"Blueprints",
"Who Lake",
"Who Lake Blueprints",
"Mayor's Villa",
"Mayor's Villa Blueprints",
],
1215,
[GrinchRamData(0x010275, binary_bit_pos=6)],
),
# Sleigh Room Locations
"MC - Sleigh Ride - Stealing All Gifts": GrinchLocationData(
"Sleigh Room",
["Sleigh Ride"],
1300,
[GrinchRamData(0x0100BF, binary_bit_pos=6)],
),
"MC - Sleigh Ride - Neutralizing Santa": GrinchLocationData(
"Sleigh Room", None, None, [GrinchRamData(0x0100BF, binary_bit_pos=7)]
), # [GrinchRamData(0x010000, value=0x3E)]),
# Heart of Stones
"WV - Post Office - Heart of Stone": GrinchLocationData(
"Post Office",
["Heart of Stones", "Whoville", "Post Office"],
1400,
[GrinchRamData(0x0101FA, binary_bit_pos=6)],
),
"WF - Ski Resort - Heart of Stone": GrinchLocationData(
"Ski Resort",
["Heart of Stones", "Who Forest", "Ski Resort"],
1401,
[GrinchRamData(0x0101FA, binary_bit_pos=7)],
),
"WD - Minefield - Heart of Stone": GrinchLocationData(
"Minefield",
["Heart of Stones", "Who Dump", "Minefield"],
1402,
[GrinchRamData(0x0101FB, binary_bit_pos=0)],
),
"WL - North Shore - Heart of Stone": GrinchLocationData(
"North Shore",
["Heart of Stones", "Who Lake", "North Shore"],
1403,
[GrinchRamData(0x0101FB, binary_bit_pos=1)],
),
# Supadow Minigames
# "Spin N' Win - Easy": GrinchLocationData("Spin N' Win", ["Supadow Minigames", "Spin N' Win"], 1500, [GrinchRamData()]),
# "Spin N' Win - Hard": GrinchLocationData("Spin N' Win", ["Supadow Minigames", "Spin N' Win"], 1501, [GrinchRamData()]),
# "Spin N' Win - Real Tough": GrinchLocationData("Spin N' Win", ["Supadow Minigames", "Spin N' Win"], 1502, [GrinchRamData()]),
# "Dankamania - Easy - 15 Points": GrinchLocationData("Dankamania", ["Supadow Minigames", "Dankamania"], 1503, [GrinchRamData()]),
# "Dankamania - Hard - 15 Points": GrinchLocationData("Dankamania", ["Supadow Minigames", "Dankamania"], 1504, [GrinchRamData()]),
# "Dankamania - Real Tough - 15 Points": GrinchLocationData("Dankamania", ["Supadow Minigames", "Dankamania"], 1505, [GrinchRamData()]),
# "The Copter Race Contest - Easy": GrinchLocationData("The Copter Race Contest", ["Supadow Minigames", "The Copter Race Contest"], 1506, [GrinchRamData()]),
# "The Copter Race Contest - Hard": GrinchLocationData("The Copter Race Contest", ["Supadow Minigames", "The Copter Race Contest"], 1507, [GrinchRamData()]),
# "The Copter Race Contest - Real Tough": GrinchLocationData("The Copter Race Contest", ["Supadow Minigames", "The Copter Race Contest"], 1508, [GrinchRamData()]),
# "Bike Race - 1st Place": GrinchLocationData("Bike Race", ["Supadow Minigames", "Bike Race"], 1509, [GrinchRamData()]),
# "Bike Race - Top 2": GrinchLocationData("Bike Race", ["Supadow Minigames", "Bike Race"], 1510, [GrinchRamData()]),
# "Bike Race - Top 3": GrinchLocationData("Bike Race", ["Supadow Minigames", "Bike Race"], 1511, [GrinchRamData()]),
# Sleigh Part Locations
"WV - Exhaust Pipes": GrinchLocationData(
"Whoville",
["Sleigh Ride", "Whoville"],
1600,
[GrinchRamData(0x0101FB, binary_bit_pos=2)],
),
"WF - Skis": GrinchLocationData(
"Who Forest",
["Sleigh Ride", "Who Forest"],
1601,
[GrinchRamData(0x0101FB, binary_bit_pos=3)],
),
"WD - Tires": GrinchLocationData(
"Who Dump",
["Sleigh Ride", "Who Dump"],
1602,
[GrinchRamData(0x0101FB, binary_bit_pos=4)],
),
"WL - Submarine World - Twin-End Tuba": GrinchLocationData(
"Submarine World",
["Sleigh Ride", "Who Lake", "South Shore"],
1603,
[GrinchRamData(0x0101FB, binary_bit_pos=6)],
),
"WL - South Shore - GPS": GrinchLocationData(
"Who Lake",
["Sleigh Ride", "Who Lake", "Submarine World"],
1604,
[GrinchRamData(0x0101FB, binary_bit_pos=5)],
),
# Mount Crumpit Locations
"MC - 1st Crate Squashed": GrinchLocationData(
"Mount Crumpit", ["Mount Crumpit"], 1700, [GrinchRamData(0x095343, value=1)]
),
"MC - 2nd Crate Squashed": GrinchLocationData(
"Mount Crumpit", ["Mount Crumpit"], 1701, [GrinchRamData(0x095343, value=2)]
),
"MC - 3rd Crate Squashed": GrinchLocationData(
"Mount Crumpit", ["Mount Crumpit"], 1702, [GrinchRamData(0x095343, value=3)]
),
"MC - 4th Crate Squashed": GrinchLocationData(
"Mount Crumpit", ["Mount Crumpit"], 1703, [GrinchRamData(0x095343, value=4)]
),
"MC - 5th Crate Squashed": GrinchLocationData(
"Mount Crumpit", ["Mount Crumpit"], 1704, [GrinchRamData(0x095343, value=5)]
),
}
def grinch_locations_to_id() -> dict[str, int]:
location_mappings: dict[str, int] = {}
for LocationName, LocationData in grinch_locations.items():
location_mappings.update(
{LocationName: GrinchLocation.get_apid(LocationData.id)}
)
return location_mappings