from dataclasses import dataclass, field from typing import List, Dict, Any @dataclass class Character: name: str = "" level: int = 0 race: str = "" subrace: str = "" class_: str = "" subclass: str = "" background: str = "" alignment: str = "" size: str = "" age: int = 0 gender: str = "" height: str = "" weight: int = 0 deity: str = "" strength_base: int = 0 dexterity_base: int = 0 constitution_base: int = 0 intelligence_base: int = 0 wisdom_base: int = 0 charisma_base: int = 0 armor_base: int = 0 strength: int = 0 dexterity: int = 0 constitution: int = 0 intelligence: int = 0 wisdom: int = 0 charisma: int = 0 armor: int = 0 strength_modifier: int = 0 dexterity_modifier: int = 0 constitution_modifier: int = 0 intelligence_modifier: int = 0 wisdom_modifier: int = 0 charisma_modifier: int = 0 proficiency: int = 0 inspiration: bool = False experience: int = 0 proficiencies_armor: List[str] = field(default_factory=list) proficiencies_weapons: List[str] = field(default_factory=list) proficiencies_tools: List[str] = field(default_factory=list) languages: List[str] = field(default_factory=list) strength_save: int = 0 dexterity_save: int = 0 constitution_save: int = 0 intelligence_save: int = 0 wisdom_save: int = 0 charisma_save: int = 0 hp: int = 0 hp_max: int = 0 hp_temp: int = 0 hit_die: str = "" initiative: int = 0 deathsaves_successes: int = 0 deathsaves_failures: int = 0 fire_resistance: bool = False poison_resistance: bool = False psychic_resistance: bool = False cold_resistance: bool = False thunder_resistance: bool = False acid_resistance: bool = False force_resistance: bool = False radiant_resistance: bool = False necrotic_resistance: bool = False bludgeoning_resistance: bool = False piercing_resistance: bool = False slashing_resistance: bool = False immunities: List[str] = field(default_factory=list) vulnerabilities: List[str] = field(default_factory=list) speed_base: int = 0 speed_type: List[str] = field(default_factory=list) darkvision: int = 0 blindsight: int = 0 tremorsense: int = 0 truesight: int = 0 passive_perception: int = 0 athletics: int = 0 acrobatics: int = 0 sleight_of_hand: int = 0 stealth: int = 0 arcana: int = 0 history: int = 0 investigation: int = 0 nature: int = 0 religion: int = 0 animal_handling: int = 0 insight: int = 0 medicine: int = 0 perception: int = 0 survival: int = 0 deception: int = 0 intimidation: int = 0 performance: int = 0 persuasion: int = 0 athletics_passive: int = 0 acrobatics_passive: int = 0 sleight_of_hand_passive: int = 0 stealth_passive: int = 0 arcana_passive: int = 0 history_passive: int = 0 investigation_passive: int = 0 nature_passive: int = 0 religion_passive: int = 0 animal_handling_passive: int = 0 insight_passive: int = 0 medicine_passive: int = 0 perception_passive: int = 0 survival_passive: int = 0 deception_passive: int = 0 intimidation_passive: int = 0 performance_passive: int = 0 persuasion_passive: int = 0 passive_perception: int = 0 passive_investigation: int = 0 passive_insight: int = 0 spellcasting_ability: str = "" spell_save_dc: int = 0 spell_attack_bonus: int = 0 known_spells: List[str] = field(default_factory=list) prepared_spells: List[str] = field(default_factory=list) spell_slots: Dict[str, Any] = field(default_factory=dict) cantrips: List[str] = field(default_factory=list) spellcasting_class: str = "" exhaustion_level: int = 0 conditions_active: List[str] = field(default_factory=list) cp: int = 0 sp: int = 0 ep: int = 0 gp: int = 0 pp: int = 0 equipment: List[str] = field(default_factory=list) features: List[str] = field(default_factory=list) feats: List[str] = field(default_factory=list) traits: List[str] = field(default_factory=list) personality_traits: List[str] = field(default_factory=list) ideals: List[str] = field(default_factory=list) bonds: List[str] = field(default_factory=list) flaws: List[str] = field(default_factory=list) notes: str = "" custom_attributes: Dict[str, Any] = field(default_factory=dict)