# races.py from __future__ import annotations from dataclasses import dataclass, field from typing import Dict, List, Any # Reuse your existing types: from app.utils.hero_catalog import SkillDef, SpellDef from app.models.enums import Race from app.models.primitives import Attributes, Resources @dataclass class RacialTrait: id: str data: Dict[str, Any] = field(default_factory=dict) @dataclass class RaceSheet: key: Race display_name: str # Flat bases/mods (additive by default) base_attributes: Attributes = field(default_factory=Attributes) starting_resources: Resources = field(default_factory=Resources) # Starting lists (IDs only) starting_skills: List[str] = field(default_factory=list) starting_spells: List[str] = field(default_factory=list) # Optional local catalogs (definitions) skills: Dict[str, SkillDef] = field(default_factory=dict) spells: Dict[str, SpellDef] = field(default_factory=dict) # Racial traits/abilities with free-form data traits: List[RacialTrait] = field(default_factory=list)