from enum import StrEnum, auto

from ttfrog.db.base import EnumField


class Conditions(StrEnum):
    blinded = auto()
    charmed = auto()
    deafened = auto()
    frightened = auto()
    grappled = auto()
    incapacitated = auto()
    invisible = auto()
    paralyzed = auto()
    petrified = auto()
    poisoned = auto()
    prone = auto()
    restrained = auto()
    stunned = auto()
    unconscious = auto()
    dead = auto()


class DamageType(StrEnum):
    piercing = auto()
    slashing = auto()
    bludgeoning = auto()
    fire = auto()
    cold = auto()
    lightning = auto()
    thunder = auto()
    acid = auto()
    poison = auto()
    radiant = auto()
    necrotic = auto()
    psychic = auto()
    force = auto()
    magical = auto()
    magical_piercing = auto()
    magical_slashing = auto()
    magical_bludgeoning = auto()
    silvered_piercing = auto()
    silvered_slashing = auto()
    silvered_bludgeoning = auto()
    adamantium_piercing = auto()
    adamantium_slashing = auto()
    adamantium_bludgeoning = auto()
    ranged_weapon_attacks = auto()
    melee_weapon_attacks = auto()


class Defenses(StrEnum):
    vulnerable = auto()
    resistant = auto()
    immune = auto()
    absorbs = auto()


class InventoryType(EnumField):
    EQUIPMENT = "EQUIPMENT"
    SPELL = "SPELL"
