"""Module extending BaseClasses.py for aLttP""" from typing import Optional from BaseClasses import Location, Item class ALttPLocation(Location): game: str = "A Link to the Past" def __init__(self, player: int, name: str = '', address=None, crystal: bool = False, hint_text: Optional[str] = None, parent=None, player_address=None): super(ALttPLocation, self).__init__(player, name, address, parent) self.crystal = crystal self.player_address = player_address self._hint_text: str = hint_text class ALttPItem(Item): game: str = "A Link to the Past" dungeon = None def __init__(self, name, player, advancement=False, type=None, item_code=None, pedestal_hint=None, pedestal_credit=None, sick_kid_credit=None, zora_credit=None, witch_credit=None, flute_boy_credit=None, hint_text=None, trap=False): super(ALttPItem, self).__init__(name, advancement, item_code, player) self.type = type self._pedestal_hint_text = pedestal_hint self.pedestal_credit_text = pedestal_credit self.sickkid_credit_text = sick_kid_credit self.zora_credit_text = zora_credit self.magicshop_credit_text = witch_credit self.fluteboy_credit_text = flute_boy_credit self._hint_text = hint_text if trap: self.trap = trap @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]: if self.type in {"SmallKey", "BigKey", "Map", "Compass"}: return self.type @property def locked_dungeon_item(self): return self.location.locked and self.dungeon_item