| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | from typing import NamedTuple, Optional | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | from .RamHandler import GrinchRamData | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | from BaseClasses import Item | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | from BaseClasses import ItemClassification as IC #IC can be any name, saves having to type the whole word in code | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | class GrinchItemData(NamedTuple): | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  |     item_group: str #arbituary that can be whatever it can be, basically the field/property for item groups | 
					
						
							|  |  |  |     id: Optional[int] | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     classification: IC | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  |     update_ram_addr: list[GrinchRamData] | 
					
						
							|  |  |  |     second_item_group: Optional[str] = None | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GrinchItem(Item): | 
					
						
							|  |  |  |     game: str = "The Grinch" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 13:22:07 -04:00
										 |  |  |     #Tells server what item id it is | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  |     @staticmethod | 
					
						
							| 
									
										
										
										
											2025-07-26 20:51:05 -04:00
										 |  |  |     def get_apid(id: int): | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  |         #If you give me an input id, I will return the Grinch equivalent server/ap id | 
					
						
							|  |  |  |         base_id: int = 42069 | 
					
						
							| 
									
										
										
										
											2025-07-26 20:51:05 -04:00
										 |  |  |         return base_id + id if id is not None else None | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     def __init__(self, name: str, player: int, data: GrinchItemData): | 
					
						
							|  |  |  |         super(GrinchItem, self).__init__(name,data.classification, GrinchItem.get_apid(data.id), player) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.type = data.item_group | 
					
						
							|  |  |  |         self.item_id = data.id | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | #allows hinting of items via category | 
					
						
							|  |  |  | def get_item_names_per_category() -> dict[str, set[str]]: | 
					
						
							|  |  |  |     categories: dict[str, set[str]] = {} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for name, data in ALL_ITEMS_TABLE.items(): | 
					
						
							|  |  |  |         categories.setdefault(data.item_group, set()).add(name) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return categories | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | #Gadgets | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | #All gadgets require at least 4 different blueprints to be unlocked in the computer in Mount Crumpit. | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | GADGETS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							|  |  |  |     "Binoculars": GrinchItemData("Gadgets", 100, IC.useful, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102B6, value=0x40), GrinchRamData(0x0102B7, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102B8, value=0x44), GrinchRamData(0x0102B9, value=0x45), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         # GrinchRamData(0x0100BC, binary_bit_pos=0) | 
					
						
							| 
									
										
										
										
											2025-07-26 17:34:43 -04:00
										 |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Rotten Egg Launcher": GrinchItemData("Gadgets", 101, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102BA, value=0x40), GrinchRamData(0x0102BB, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102BC, value=0x44), GrinchRamData(0x0102BD, value=0x45), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         # GrinchRamData(0x0100BC, binary_bit_pos=1) | 
					
						
							|  |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Rocket Spring": GrinchItemData("Gadgets", 102, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102BE, value=0x40), GrinchRamData(0x0102BF, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102C0, value=0x42), GrinchRamData(0x0102C1, value=0x44), | 
					
						
							|  |  |  |         GrinchRamData(0x0102C2, value=0x45), GrinchRamData(0x0102C3, value=0x46), | 
					
						
							|  |  |  |         GrinchRamData(0x0102C4, value=0x48), GrinchRamData(0x0102C5, value=0x49), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         GrinchRamData(0x0102C6, value=0x4A), | 
					
						
							|  |  |  |          # GrinchRamData(0x0100BC, binary_bit_pos=2) | 
					
						
							|  |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Slime Shooter": GrinchItemData("Gadgets", 103, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102C7, value=0x40), GrinchRamData(0x0102C8, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102C9, value=0x42), GrinchRamData(0x0102CA, value=0x44), | 
					
						
							|  |  |  |         GrinchRamData(0x0102CB, value=0x45), GrinchRamData(0x0102CC, value=0x46), | 
					
						
							|  |  |  |         GrinchRamData(0x0102CD, value=0x48), GrinchRamData(0x0102CE, value=0x49), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         GrinchRamData(0x0102CF, value=0x4A), | 
					
						
							|  |  |  |          # GrinchRamData(0x0100BC, binary_bit_pos=3) | 
					
						
							|  |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Octopus Climbing Device": GrinchItemData("Gadgets", 104, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-08 20:16:31 -04:00
										 |  |  |         [GrinchRamData(0x0102D0, value=0x40), GrinchRamData(0x0102D1, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102D2, value=0x42), GrinchRamData(0x0102D3, value=0x44), | 
					
						
							|  |  |  |         GrinchRamData(0x0102D4, value=0x45), GrinchRamData(0x0102D5, value=0x46), | 
					
						
							|  |  |  |         GrinchRamData(0x0102D6, value=0x48), GrinchRamData(0x0102D7, value=0x49), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         GrinchRamData(0x0102D8, value=0x4A), | 
					
						
							|  |  |  |          # GrinchRamData(0x0100BC, binary_bit_pos=4) | 
					
						
							|  |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Marine Mobile": GrinchItemData("Gadgets", 105, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102D9, value=0x40), GrinchRamData(0x0102DA, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102DB, value=0x42), GrinchRamData(0x0102DC, value=0x43), | 
					
						
							| 
									
										
										
										
											2025-08-08 18:13:12 -04:00
										 |  |  |         GrinchRamData(0x0102DD, value=0x44), GrinchRamData(0x0102DE, value=0x45), | 
					
						
							|  |  |  |         GrinchRamData(0x0102DF, value=0x46), GrinchRamData(0x0102E0, value=0x47), | 
					
						
							|  |  |  |         GrinchRamData(0x0102E1, value=0x48), GrinchRamData(0x0102E2, value=0x49), | 
					
						
							|  |  |  |         GrinchRamData(0x0102E3, value=0x4A), GrinchRamData(0x0102E4, value=0x4B), | 
					
						
							|  |  |  |         GrinchRamData(0x0102E5, value=0x4C), GrinchRamData(0x0102E6, value=0x4D), | 
					
						
							|  |  |  |         GrinchRamData(0x0102E7, value=0x4E), GrinchRamData(0x0102E8, value=0x4F), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         # GrinchRamData(0x0100BC, binary_bit_pos=5) | 
					
						
							|  |  |  |          ]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Grinch Copter": GrinchItemData("Gadgets", 106, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0102E9, value=0x40), GrinchRamData(0x0102EA, value=0x41), | 
					
						
							|  |  |  |         GrinchRamData(0x0102EB, value=0x42), GrinchRamData(0x0102EC, value=0x43), | 
					
						
							| 
									
										
										
										
											2025-08-07 20:33:02 -04:00
										 |  |  |         GrinchRamData(0x0102ED, value=0x44), GrinchRamData(0x0102EE, value=0x45), | 
					
						
							|  |  |  |         GrinchRamData(0x0102EF, value=0x46), GrinchRamData(0x0102F0, value=0x47), | 
					
						
							|  |  |  |         GrinchRamData(0x0102F1, value=0x48), GrinchRamData(0x0102F2, value=0x49), | 
					
						
							|  |  |  |         GrinchRamData(0x0102F3, value=0x4A), GrinchRamData(0x0102F4, value=0x4B), | 
					
						
							|  |  |  |         GrinchRamData(0x0102F5, value=0x4C), GrinchRamData(0x0102F6, value=0x4D), | 
					
						
							|  |  |  |         GrinchRamData(0x0102F7, value=0x4E), GrinchRamData(0x0102F8, value=0x4F), | 
					
						
							| 
									
										
										
										
											2025-08-28 00:20:01 -04:00
										 |  |  |         # GrinchRamData(0x0100BC, binary_bit_pos=6) | 
					
						
							|  |  |  |     ]) | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #Mission Specific Items | 
					
						
							|  |  |  | MISSION_ITEMS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-08-11 21:37:12 -04:00
										 |  |  |     "Who Cloak": GrinchItemData("Mission Specific Items", 200, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=0)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Painting Bucket": GrinchItemData("Mission Specific Items", 201, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=1)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Scissors": GrinchItemData("Mission Specific Items", 202, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-25 19:45:01 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=6), GrinchRamData(0x0100C2, binary_bit_pos=1)], | 
					
						
							|  |  |  |         second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Glue Bucket": GrinchItemData("Mission Specific Items", 203, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=4)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:37:12 -04:00
										 |  |  |     "Cable Car Access Card": GrinchItemData("Mission Specific Items", 204, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=5)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Drill": GrinchItemData("Mission Specific Items", 205, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0101FA, binary_bit_pos=2)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Rope": GrinchItemData("Mission Specific Items", 206, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  |         [GrinchRamData(0x0101FA, binary_bit_pos=1)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Hook": GrinchItemData("Mission Specific Items", 207, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101FA, binary_bit_pos=0)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Sculpting Tools": GrinchItemData("Mission Specific Items", 208, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=2)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:20:11 -04:00
										 |  |  |     "Hammer": GrinchItemData("Mission Specific Items", 209, IC.progression_deprioritized, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=3)], second_item_group="Useful Items"), | 
					
						
							| 
									
										
										
										
											2025-08-11 21:37:12 -04:00
										 |  |  |     "Scout Clothes": GrinchItemData("Mission Specific Items", 210, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0101F9, binary_bit_pos=7)], second_item_group="Useful Items") | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #Sleigh Parts | 
					
						
							| 
									
										
										
										
											2025-08-31 13:20:12 -04:00
										 |  |  | # SLEIGH_PARTS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							|  |  |  | #     "Exhaust Pipes": GrinchItemData("Sleigh Parts", 300, IC.progression_skip_balancing, | 
					
						
							|  |  |  | #         [GrinchRamData(0x0101FB, binary_bit_pos=2)]), | 
					
						
							|  |  |  | #     "GPS": GrinchItemData("Sleigh Parts", 301, IC.useful, | 
					
						
							|  |  |  | #         [GrinchRamData(0x0101FB, binary_bit_pos=5)]), | 
					
						
							|  |  |  | #     "Tires": GrinchItemData("Sleigh Parts", 302, IC.progression_skip_balancing, | 
					
						
							|  |  |  | #         [GrinchRamData(0x0101FB, binary_bit_pos=4)]), | 
					
						
							|  |  |  | #     "Skis": GrinchItemData("Sleigh Parts", 303, IC.progression_skip_balancing, | 
					
						
							|  |  |  | #         [GrinchRamData(0x0101FB, binary_bit_pos=3)]), | 
					
						
							|  |  |  | #     "Twin-End Tuba": GrinchItemData("Sleigh Parts", 304, IC.progression_skip_balancing, | 
					
						
							|  |  |  | #         [GrinchRamData(0x0101FB, binary_bit_pos=6)]) | 
					
						
							|  |  |  | # } | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | #Access Keys | 
					
						
							|  |  |  | KEYS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     # "Whoville Vacuum Access": GrinchItemData("Vacuum Access", 400, IC.progression, | 
					
						
							|  |  |  |     #     [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Who Forest Vacuum Access": GrinchItemData("Vacuum Access", 401, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0100AA, binary_bit_pos=2)]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Who Dump Vacuum Access": GrinchItemData("Vacuum Access", 402, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0100AA, binary_bit_pos=3)]), | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  |     "Who Lake Vacuum Access": GrinchItemData("Vacuum Access", 403, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-07 18:11:32 -04:00
										 |  |  |         [GrinchRamData(0x0100AA, binary_bit_pos=4)]), | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     # "Progressive Vacuum Access": GrinchItemData("Vacuum Access", 404, IC.progression, | 
					
						
							|  |  |  |     #     [GrinchRamData()]), | 
					
						
							|  |  |  |     # "Spin N' Win Door Unlock": GrinchItemData("Supadow Door Unlocks", 405, IC.progression, | 
					
						
							|  |  |  |     #     [GrinchRamData()]), | 
					
						
							|  |  |  |     # "Dankamania Door Unlock": GrinchItemData("Supadow Door Unlocks", 406, IC.progression, | 
					
						
							|  |  |  |     #     [GrinchRamData()]), | 
					
						
							|  |  |  |     # "The Copter Race Contest Door Unlock": GrinchItemData("Supadow Door Unlocks", 407, IC.progression, | 
					
						
							|  |  |  |     #     [GrinchRamData()]), | 
					
						
							|  |  |  |     # "Progressive Supadow Door Unlock": GrinchItemData("Supadow Door Unlocks", 408, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-03 19:43:54 -04:00
										 |  |  |     #     [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-08-19 22:29:00 -04:00
										 |  |  |     # "Bike Race Access": GrinchItemData("Supadow Door Unlocks", 409, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     #     [GrinchRamData()]) | 
					
						
							| 
									
										
										
										
											2025-08-31 16:29:22 -04:00
										 |  |  |     "Sleigh Room Key": GrinchItemData("Sleigh Room", 410, IC.progression, | 
					
						
							| 
									
										
										
										
											2025-08-30 19:24:31 -04:00
										 |  |  |         [GrinchRamData(0x010200, binary_bit_pos=6), GrinchRamData(0x0100AA, binary_bit_pos=5)]) | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #Misc Items | 
					
						
							|  |  |  | MISC_ITEMS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:00 -04:00
										 |  |  |     # This item may not function properly if you receive it during a loading screen or in Mount Crumpit | 
					
						
							| 
									
										
										
										
											2025-08-22 22:18:30 -04:00
										 |  |  |     # "Fully Healed Grinch": GrinchItemData("Health Items", 500, IC.filler, | 
					
						
							|  |  |  |     #     [GrinchRamData(0x0E8FDC, value=120)]), | 
					
						
							| 
									
										
										
										
											2025-08-16 02:26:25 -04:00
										 |  |  |     "5 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 502, IC.filler, | 
					
						
							| 
									
										
										
										
											2025-08-19 01:59:18 -04:00
										 |  |  |         [GrinchRamData(0x010058, value=5, update_existing_value=True, max_count=200, bit_size=2)]), | 
					
						
							| 
									
										
										
										
											2025-08-16 02:26:25 -04:00
										 |  |  |     "10 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 503, IC.filler, | 
					
						
							| 
									
										
										
										
											2025-08-19 01:59:18 -04:00
										 |  |  |         [GrinchRamData(0x010058, value=10, update_existing_value=True, max_count=200, bit_size=2)]), | 
					
						
							| 
									
										
										
										
											2025-08-16 02:26:25 -04:00
										 |  |  |     "20 Rotten Eggs": GrinchItemData("Rotten Egg Bundles", 504, IC.filler, | 
					
						
							| 
									
										
										
										
											2025-08-19 01:59:18 -04:00
										 |  |  |         [GrinchRamData(0x010058, value=20, update_existing_value=True, max_count=200, bit_size=2)]) | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-28 23:12:47 -04:00
										 |  |  | USEFUL_IC_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-08-16 02:26:25 -04:00
										 |  |  |     "Heart of Stone": GrinchItemData("Health Items", 501, IC.useful, | 
					
						
							|  |  |  |         [GrinchRamData(0x0100ED, value=1, update_existing_value=True, max_count=4)]) | 
					
						
							| 
									
										
										
										
											2025-07-28 23:12:47 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-25 16:24:08 -04:00
										 |  |  | #Traps | 
					
						
							|  |  |  | TRAPS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # alias to Ice Trap for traplink | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:00 -04:00
										 |  |  |     # "Freeze Trap": GrinchItemData("Traps", 600, IC.trap, [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     # "Bee Trap": GrinchItemData("Traps", 601, IC.trap, [GrinchRamData()]), | 
					
						
							|  |  |  |     # "Electrocution Trap": GrinchItemData("Traps", 602, IC.trap, [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # alias to Slowness Trap for traplink | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:00 -04:00
										 |  |  |     # "Tip Toe Trap": GrinchItemData("Traps", 603, IC.trap, [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # This item may not function properly if you receive it during a loading screen or in Mount Crumpit | 
					
						
							| 
									
										
										
										
											2025-08-22 22:18:30 -04:00
										 |  |  | #     "Damage Trap": GrinchItemData("Traps", 604, IC.trap, [GrinchRamData(0x0E8FDC, value=-20, update_existing_value=True)]), | 
					
						
							| 
									
										
										
										
											2025-08-25 17:07:21 -04:00
										 |  |  |     "Depletion Trap": GrinchItemData("Traps", 605, IC.trap, [GrinchRamData(0x010058, value=0, bit_size=2)]), | 
					
						
							|  |  |  |     "Dump it to Crumpit": GrinchItemData("Traps", 606, IC.trap, #Alias to Home Trap for traplink | 
					
						
							|  |  |  |         [GrinchRamData(0x010000, value=0x05), GrinchRamData(0x08FB94, value=1)]), | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | #alias to Spring Trap for traplink | 
					
						
							| 
									
										
										
										
											2025-08-07 22:49:00 -04:00
										 |  |  |     # "Rocket Spring Trap": GrinchItemData("Traps", 607, IC.trap, [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | #alias to Home Trap for traplink | 
					
						
							| 
									
										
										
										
											2025-08-25 17:07:21 -04:00
										 |  |  |     "Who sent me back?": GrinchItemData("Traps", 608, IC.trap, [GrinchRamData(0x08FB94, value=1)]), | 
					
						
							| 
									
										
										
										
											2025-07-28 00:53:04 -04:00
										 |  |  |     # "Cutscene Trap": GrinchItemData("Traps", 609, IC.trap, [GrinchRamData()]), | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  |     # "No Vac Trap": GrinchItemData("Traps", 610, IC.trap, [GrinchRamData(0x0102DA, value=0]), | 
					
						
							|  |  |  |     # "Invisible Trap": GrinchItemData("Traps", 611, IC.trap, [GrinchRamData(0x0102DA, value=0, bit_size=4)]) | 
					
						
							| 
									
										
										
										
											2025-08-24 11:01:10 -04:00
										 |  |  |     # "Child Trap": GrinchItemData("Traps", 612, IC.trap,[GrinchRamData()]) | 
					
						
							| 
									
										
										
										
											2025-09-06 21:03:08 -04:00
										 |  |  |     # "Disable Jump Trap": GrinchItemData("Traps", 613, IC.trap,[GrinchRamData(0x010026, binary_bit_pos=6)]) | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | #Movesets | 
					
						
							| 
									
										
										
										
											2025-07-28 23:12:47 -04:00
										 |  |  | # MOVES_TABLE: dict[str, GrinchItemData] = { | 
					
						
							| 
									
										
										
										
											2025-08-06 23:34:30 -04:00
										 |  |  | #     "Bad Breath": GrinchItemData("Movesets", 700, IC.progression, [GrinchRamData(0x0100BB, binary_bit_pos=1)]), | 
					
						
							|  |  |  | #     "Pancake": GrinchItemData("Movesets", 701, IC.progression, [GrinchRamData(0x0100BB, binary_bit_pos=2)]), | 
					
						
							|  |  |  | #     "Push & Pull": GrinchItemData("Movesets", 702, IC.progression, [GrinchRamData(0x0100BB, binary_bit_pos=3)]), | 
					
						
							|  |  |  | #     "Max": GrinchItemData("Movesets", 703, IC.progression, [GrinchRamData(0x0100BB, binary_bit_pos=4)]), | 
					
						
							|  |  |  | #     "Tip Toe": GrinchItemData("Movesets", 704, IC.progression, [GrinchRamData(0x0100BB, binary_bit_pos=5)]) | 
					
						
							| 
									
										
										
										
											2025-07-28 23:12:47 -04:00
										 |  |  | # } | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  | #Double star combines all dictionaries from each individual list together | 
					
						
							| 
									
										
										
										
											2025-07-25 19:33:51 -04:00
										 |  |  | ALL_ITEMS_TABLE: dict[str, GrinchItemData] = { | 
					
						
							|  |  |  |     **GADGETS_TABLE, | 
					
						
							|  |  |  |     **MISSION_ITEMS_TABLE, | 
					
						
							|  |  |  |     **KEYS_TABLE, | 
					
						
							|  |  |  |     **MISC_ITEMS_TABLE, | 
					
						
							| 
									
										
										
										
											2025-07-26 00:30:19 -04:00
										 |  |  |     **TRAPS_TABLE, | 
					
						
							| 
									
										
										
										
											2025-08-31 13:20:12 -04:00
										 |  |  |     **USEFUL_IC_TABLE, | 
					
						
							|  |  |  |     # **SLEIGH_PARTS_TABLE, | 
					
						
							|  |  |  |     # **MOVES_TABLE, | 
					
						
							| 
									
										
										
										
											2025-07-26 20:51:05 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # Psuedocoding traplink table | 
					
						
							|  |  |  | # BEE_TRAP_EQUIV = ["Army Trap", "Buyon Trap", "Ghost", "Gooey Bag", "OmoTrap", "Police Trap"] | 
					
						
							| 
									
										
										
										
											2025-08-24 11:01:10 -04:00
										 |  |  | # ICE_TRAP_EQUIV = ["Chaos Control Trap", "Freeze Trap", "Frozen Trap", "Honey Trap", "Paralyze Trap", "Stun Trap", "Bubble Trap"] | 
					
						
							| 
									
										
										
										
											2025-09-05 20:18:20 -04:00
										 |  |  | # DAMAGE_TRAP_EQUIV = ["Banana Trap", "Bomb", "Bonk Trap", "Fire Trap", "Laughter Trap", "Nut Trap", "Push Trap", | 
					
						
							|  |  |  | # "Squash Trap", "Thwimp Trap", "TNT Barrel Trap", "Meteor Trap", "Double Damage", "Spike Ball Trap"] | 
					
						
							| 
									
										
										
										
											2025-09-05 20:18:33 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # SPRING_TRAP_EQUIV = ["Eject Ability", "Hiccup Trap", "Jump Trap", "Jumping Jacks Trap", "Whoops! Trap"] | 
					
						
							| 
									
										
										
										
											2025-09-04 22:51:14 -04:00
										 |  |  | # HOME_TRAP_EQUIV = ["Blue Balls Curse", "Instant Death Trap", "Get Out Trap"] | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | # SLOWNESS_TRAP_EQUIV = ["Iron Boots Trap", "Slow Trap", "Sticky Floor Trap"] | 
					
						
							|  |  |  | # CUTSCENE_TRAP_EQUIV = ["Phone Trap"] | 
					
						
							| 
									
										
										
										
											2025-08-24 11:01:10 -04:00
										 |  |  | # ELEC_TRAP_EQUIV = [] | 
					
						
							| 
									
										
										
										
											2025-09-04 22:51:14 -04:00
										 |  |  | # DEPL_TRAP_EQUIV = ["Dry Trap"] | 
					
						
							| 
									
										
										
										
											2025-08-11 20:47:38 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-26 20:51:05 -04:00
										 |  |  | def grinch_items_to_id() -> dict[str, int]: | 
					
						
							|  |  |  |     item_mappings: dict[str, int] = {} | 
					
						
							|  |  |  |     for ItemName, ItemData in ALL_ITEMS_TABLE.items(): | 
					
						
							|  |  |  |         item_mappings.update({ItemName: GrinchItem.get_apid(ItemData.id)}) | 
					
						
							|  |  |  |     return item_mappings |