from ..interfaces import FriendlyEntity from ..translations import gettext as _ from .player import Player from .items import Item from random import choice class Merchant(FriendlyEntity): """ The class for merchants in the dungeon """ inventory = list hazel = int def keys(self) -> list: """ Returns a friendly entitie's specific attributes """ return ["maxhealth", "health", "inventory", "hazel"] def __init__(self, name: str = "merchant", inventory: list = None, hazel: int = 75, *args, **kwargs): super().__init__(name=name, *args, **kwargs) self.inventory = inventory or [] self.hazel = hazel entity_classes = self.get_all_entity_classes_in_a_dict() for i in range(len(self.inventory)): if isinstance(self.inventory[i], dict): item_class = entity_classes[self.inventory[i]["type"]] self.inventory[i] = item_class(**self.inventory[i]) if not self.inventory: for i in range(5): self.inventory.append(choice(Item.get_all_items())()) def talk_to(self, player: Player) -> str: """ This function is used to open the merchant's inventory in a menu, and allow the player to buy/sell objects """ # TODO return _("I don't sell any squirrel") def save_state(self) -> dict: """ We save the inventory of the merchant formatted as JSON """ d = super().save_state() d["inventory"] = [item.save_state() for item in self.inventory] return d class Sunflower(FriendlyEntity): """ A friendly sunflower """ dialogue_option = [_("Flower power!!"), _("The sun is warm today")] def __init__(self, maxhealth: int = 15, *args, **kwargs) -> None: super().__init__(name="sunflower", maxhealth=maxhealth, *args, **kwargs)