class Stats:
    """
    Contains the stats that a character or monster may have.

    The stats tied to an agent are:

    * Health: The amount of damage the agent can withstand. The agent dies when their health falls to zero. This is
      the only stat that will persist after a battle ends.
    * Stamina: An arbitrary measure of ability to use special actions such as magic or other techniques. This stat is
      meant to be consumed through the battle.
    * Strength: Influences the effectiveness of physical attacks.
    * Magic: Influences the effectiveness of magical attacks.
    * Endurance: Influences defence and resistance to attacks, as well as resistance to status ailments.
    * Agility: Influences speed in battle and chance to evade attacks.
    """

    def __init__(self, health, stamina, strength, magic, endurance, agility):
        """
        Initializes stats with specific values.
        """
        self.health = health
        self.stamina = stamina
        self.strength = strength
        self.magic = magic
        self.endurance = endurance
        self.agility = agility

    def __str__(self):
        return str(self.__dict__)

class EquipmentStats:
    """
    Contains the stats that come from equipment. Only characters have equipment.

    * Attack: Heavily influences physical attacks.
    * Magic attack: Heavily influences magic attacks.
    * Armour: Heavily influences physical defence.
    * Magic armour: Heavily influences magic defence.
    """

    def __init__(self, attack, magic_attack, armour, magic_armour):
        """
        Initializes equipment stats with specific values.
        """
        self.attack = attack
        self.magic_attack = magic_attack
        self.armour = armour
        self.magic_armour = magic_armour

    def __str__(self):
        return str(self.__dict__)
