| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | from typing import NamedTuple | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | from BaseClasses import Item, ItemClassification | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | sm64ex_base_id: int = 3626000 | 
					
						
							| 
									
										
										
										
											2022-06-17 03:23:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-23 21:34:30 +01:00
										 |  |  | class SM64Item(Item): | 
					
						
							|  |  |  |     game: str = "Super Mario 64" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | class SM64ItemData(NamedTuple): | 
					
						
							|  |  |  |     code: int | None = None | 
					
						
							|  |  |  |     classification: ItemClassification = ItemClassification.progression | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | generic_item_data_table: dict[str, SM64ItemData] = { | 
					
						
							|  |  |  |     "Power Star": SM64ItemData(sm64ex_base_id + 0, ItemClassification.progression_skip_balancing), | 
					
						
							|  |  |  |     "Basement Key": SM64ItemData(sm64ex_base_id + 178), | 
					
						
							|  |  |  |     "Second Floor Key": SM64ItemData(sm64ex_base_id + 179), | 
					
						
							|  |  |  |     "Progressive Key": SM64ItemData(sm64ex_base_id + 180), | 
					
						
							|  |  |  |     "Wing Cap": SM64ItemData(sm64ex_base_id + 181), | 
					
						
							|  |  |  |     "Metal Cap": SM64ItemData(sm64ex_base_id + 182), | 
					
						
							|  |  |  |     "Vanish Cap": SM64ItemData(sm64ex_base_id + 183), | 
					
						
							|  |  |  |     "1Up Mushroom": SM64ItemData(sm64ex_base_id + 184, ItemClassification.filler), | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | action_item_data_table: dict[str, SM64ItemData] = { | 
					
						
							|  |  |  |     "Double Jump": SM64ItemData(sm64ex_base_id + 185), | 
					
						
							|  |  |  |     "Triple Jump": SM64ItemData(sm64ex_base_id + 186), | 
					
						
							|  |  |  |     "Long Jump": SM64ItemData(sm64ex_base_id + 187), | 
					
						
							|  |  |  |     "Backflip": SM64ItemData(sm64ex_base_id + 188), | 
					
						
							|  |  |  |     "Side Flip": SM64ItemData(sm64ex_base_id + 189), | 
					
						
							|  |  |  |     "Wall Kick": SM64ItemData(sm64ex_base_id + 190), | 
					
						
							|  |  |  |     "Dive": SM64ItemData(sm64ex_base_id + 191), | 
					
						
							|  |  |  |     "Ground Pound": SM64ItemData(sm64ex_base_id + 192), | 
					
						
							|  |  |  |     "Kick": SM64ItemData(sm64ex_base_id + 193), | 
					
						
							|  |  |  |     "Climb": SM64ItemData(sm64ex_base_id + 194), | 
					
						
							|  |  |  |     "Ledge Grab": SM64ItemData(sm64ex_base_id + 195), | 
					
						
							| 
									
										
										
										
											2024-02-13 00:14:21 -05:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | cannon_item_data_table: dict[str, SM64ItemData] = { | 
					
						
							|  |  |  |     "Cannon Unlock BoB": SM64ItemData(sm64ex_base_id + 200), | 
					
						
							|  |  |  |     "Cannon Unlock WF": SM64ItemData(sm64ex_base_id + 201), | 
					
						
							|  |  |  |     "Cannon Unlock JRB": SM64ItemData(sm64ex_base_id + 202), | 
					
						
							|  |  |  |     "Cannon Unlock CCM": SM64ItemData(sm64ex_base_id + 203), | 
					
						
							|  |  |  |     "Cannon Unlock SSL": SM64ItemData(sm64ex_base_id + 207), | 
					
						
							|  |  |  |     "Cannon Unlock SL": SM64ItemData(sm64ex_base_id + 209), | 
					
						
							|  |  |  |     "Cannon Unlock WDW": SM64ItemData(sm64ex_base_id + 210), | 
					
						
							|  |  |  |     "Cannon Unlock TTM": SM64ItemData(sm64ex_base_id + 211), | 
					
						
							|  |  |  |     "Cannon Unlock THI": SM64ItemData(sm64ex_base_id + 212), | 
					
						
							|  |  |  |     "Cannon Unlock RR": SM64ItemData(sm64ex_base_id + 214), | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2024-02-13 00:14:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | item_data_table = { | 
					
						
							|  |  |  |     **generic_item_data_table, | 
					
						
							|  |  |  |     **action_item_data_table, | 
					
						
							|  |  |  |     **cannon_item_data_table | 
					
						
							| 
									
										
										
										
											2022-02-15 19:56:10 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-08 12:07:50 -05:00
										 |  |  | item_table = {name: data.code for name, data in item_data_table.items() if data.code is not None} |