app_lisium/backend/character.py
2025-11-02 10:36:52 -06:00

162 lines
4.4 KiB
Python

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)