| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  | """Module extending BaseClasses.py for aLttP""" | 
					
						
							|  |  |  | from typing import Optional | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-17 03:23:27 +02:00
										 |  |  | from BaseClasses import Location, Item, ItemClassification | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ALttPLocation(Location): | 
					
						
							|  |  |  |     game: str = "A Link to the Past" | 
					
						
							| 
									
										
										
										
											2022-08-04 14:10:58 +02:00
										 |  |  |     crystal: bool | 
					
						
							|  |  |  |     player_address: Optional[int] | 
					
						
							|  |  |  |     _hint_text: Optional[str] | 
					
						
							|  |  |  |     shop_slot: Optional[int] = None | 
					
						
							|  |  |  |     """If given as integer, shop_slot is the shop's inventory index.""" | 
					
						
							|  |  |  |     shop_slot_disabled: bool = False | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-04 14:10:58 +02:00
										 |  |  |     def __init__(self, player: int, name: str, address: Optional[int] = None, crystal: bool = False, | 
					
						
							|  |  |  |                  hint_text: Optional[str] = None, parent=None, player_address: Optional[int] = None): | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  |         super(ALttPLocation, self).__init__(player, name, address, parent) | 
					
						
							|  |  |  |         self.crystal = crystal | 
					
						
							|  |  |  |         self.player_address = player_address | 
					
						
							| 
									
										
										
										
											2022-08-04 14:10:58 +02:00
										 |  |  |         self._hint_text = hint_text | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ALttPItem(Item): | 
					
						
							|  |  |  |     game: str = "A Link to the Past" | 
					
						
							| 
									
										
										
										
											2022-08-06 00:49:54 +02:00
										 |  |  |     type: Optional[str] | 
					
						
							|  |  |  |     _pedestal_hint_text: Optional[str] | 
					
						
							|  |  |  |     _hint_text: Optional[str] | 
					
						
							| 
									
										
										
										
											2021-08-30 16:31:56 +02:00
										 |  |  |     dungeon = None | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-06 00:49:54 +02:00
										 |  |  |     def __init__(self, name, player, classification=ItemClassification.filler, type=None, item_code=None, | 
					
						
							|  |  |  |                  pedestal_hint=None, hint_text=None): | 
					
						
							| 
									
										
										
										
											2022-06-17 03:23:27 +02:00
										 |  |  |         super(ALttPItem, self).__init__(name, classification, item_code, player) | 
					
						
							| 
									
										
										
										
											2021-07-12 15:11:48 +02:00
										 |  |  |         self.type = type | 
					
						
							|  |  |  |         self._pedestal_hint_text = pedestal_hint | 
					
						
							| 
									
										
										
										
											2021-08-28 12:56:52 +02:00
										 |  |  |         self._hint_text = hint_text | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def crystal(self) -> bool: | 
					
						
							|  |  |  |         return self.type == 'Crystal' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def smallkey(self) -> bool: | 
					
						
							|  |  |  |         return self.type == 'SmallKey' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def bigkey(self) -> bool: | 
					
						
							|  |  |  |         return self.type == 'BigKey' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def map(self) -> bool: | 
					
						
							|  |  |  |         return self.type == 'Map' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def compass(self) -> bool: | 
					
						
							|  |  |  |         return self.type == 'Compass' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							|  |  |  |     def dungeon_item(self) -> Optional[str]: | 
					
						
							| 
									
										
										
										
											2021-08-30 16:31:56 +02:00
										 |  |  |         if self.type in {"SmallKey", "BigKey", "Map", "Compass"}: | 
					
						
							| 
									
										
										
										
											2021-08-28 12:56:52 +02:00
										 |  |  |             return self.type | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @property | 
					
						
							| 
									
										
										
										
											2021-08-30 16:31:56 +02:00
										 |  |  |     def locked_dungeon_item(self): | 
					
						
							|  |  |  |         return self.location.locked and self.dungeon_item |