53 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from typing import Optional
							 | 
						||
| 
								 | 
							
								from BaseClasses import ItemClassification, Item
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								base_adventure_item_id = 118000000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class AdventureItem(Item):
							 | 
						||
| 
								 | 
							
								    def __init__(self, name: str, classification: ItemClassification, code: Optional[int], player: int):
							 | 
						||
| 
								 | 
							
								        super().__init__(name, classification, code, player)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class ItemData:
							 | 
						||
| 
								 | 
							
								    def __init__(self, id: int, classification: ItemClassification):
							 | 
						||
| 
								 | 
							
								        self.classification = classification
							 | 
						||
| 
								 | 
							
								        self.id = None if id is None else id + base_adventure_item_id
							 | 
						||
| 
								 | 
							
								        self.table_index = id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								nothing_item_id = base_adventure_item_id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# base IDs are the index in the static item data table, which is
							 | 
						||
| 
								 | 
							
								# not the same order as the items in RAM (but offset 0 is a 16-bit address of
							 | 
						||
| 
								 | 
							
								# location of room and position data)
							 | 
						||
| 
								 | 
							
								item_table = {
							 | 
						||
| 
								 | 
							
								    "Yellow Key": ItemData(0xB, ItemClassification.progression_skip_balancing),
							 | 
						||
| 
								 | 
							
								    "White Key": ItemData(0xC, ItemClassification.progression),
							 | 
						||
| 
								 | 
							
								    "Black Key": ItemData(0xD, ItemClassification.progression),
							 | 
						||
| 
								 | 
							
								    "Bridge": ItemData(0xA, ItemClassification.progression),
							 | 
						||
| 
								 | 
							
								    "Magnet": ItemData(0x11, ItemClassification.progression),
							 | 
						||
| 
								 | 
							
								    "Sword": ItemData(0x9, ItemClassification.progression),
							 | 
						||
| 
								 | 
							
								    "Chalice": ItemData(0x10, ItemClassification.progression_skip_balancing),
							 | 
						||
| 
								 | 
							
								    # Non-ROM Adventure items, managed by lua
							 | 
						||
| 
								 | 
							
								    "Left Difficulty Switch": ItemData(0x100, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    "Right Difficulty Switch": ItemData(0x101, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    # Can use these instead of 'nothing'
							 | 
						||
| 
								 | 
							
								    "Freeincarnate": ItemData(0x102, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    # These should only be enabled if fast dragons is on?
							 | 
						||
| 
								 | 
							
								    "Slow Yorgle": ItemData(0x103, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    "Slow Grundle": ItemData(0x104, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    "Slow Rhindle": ItemData(0x105, ItemClassification.filler),
							 | 
						||
| 
								 | 
							
								    # this should only be enabled if opted into?  For now, I'll just exclude them
							 | 
						||
| 
								 | 
							
								    "Revive Dragons": ItemData(0x106, ItemClassification.trap),
							 | 
						||
| 
								 | 
							
								    "nothing": ItemData(0x0, ItemClassification.filler)
							 | 
						||
| 
								 | 
							
								    # Bat Trap
							 | 
						||
| 
								 | 
							
								    # Bat Time Out
							 | 
						||
| 
								 | 
							
								    # "Revive Dragons": ItemData(0x110, ItemClassification.trap)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								standard_item_max = item_table["Magnet"].id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								event_table = {
							 | 
						||
| 
								 | 
							
								}
							 |