 81a239325d
			
		
	
	81a239325d
	
	
	
		
			
			Adds Link's Awakening: DX. Fully imports and forks LADXR, with permission - https://github.com/daid/LADXR
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from .itemInfo import ItemInfo
 | |
| from .constants import *
 | |
| 
 | |
| 
 | |
| class OwlStatue(ItemInfo):
 | |
|     def configure(self, options):
 | |
|         if options.owlstatues == "both":
 | |
|             return
 | |
|         if options.owlstatues == "dungeon" and self.room >= 0x100:
 | |
|             return
 | |
|         if options.owlstatues == "overworld" and self.room < 0x100:
 | |
|             return
 | |
|         raise RuntimeError("Tried to configure an owlstatue that was not enabled")
 | |
|         self.OPTIONS = [RUPEES_20]
 | |
| 
 | |
|     def patch(self, rom, option, *, multiworld=None):
 | |
|         if option.startswith(MAP) or option.startswith(COMPASS) or option.startswith(STONE_BEAK) or option.startswith(NIGHTMARE_KEY) or option.startswith(KEY):
 | |
|             if self._location.dungeon == int(option[-1]) and multiworld is not None:
 | |
|                 option = option[:-1]
 | |
|         rom.banks[0x3E][self.room + 0x3B16] = CHEST_ITEMS[option]
 | |
| 
 | |
|     def read(self, rom):
 | |
|         assert self._location is not None, hex(self.room)
 | |
|         value = rom.banks[0x3E][self.room + 0x3B16]
 | |
|         for k, v in CHEST_ITEMS.items():
 | |
|             if v == value:
 | |
|                 if k in [MAP, COMPASS, STONE_BEAK, NIGHTMARE_KEY, KEY]:
 | |
|                     assert self._location.dungeon is not None, "Dungeon item outside of dungeon? %r" % (self)
 | |
|                     return "%s%d" % (k, self._location.dungeon)
 | |
|                 return k
 | |
|         raise ValueError("Could not find owl statue contents in ROM (0x%02x)" % (value))
 | |
| 
 | |
|     def __repr__(self):
 | |
|         if self._location and self._location.dungeon:
 | |
|             return "%s:%03x:%d" % (self.__class__.__name__, self.room, self._location.dungeon)
 | |
|         else:
 | |
|             return "%s:%03x" % (self.__class__.__name__, self.room)
 | |
|     
 | |
|     @property
 | |
|     def nameId(self):
 | |
|         return "0x%03X-Owl" % self.room
 |