init commit

This commit is contained in:
2025-11-02 01:14:41 -05:00
commit 7bf81109b3
31 changed files with 2387 additions and 0 deletions

36
app/models/races.py Normal file
View File

@@ -0,0 +1,36 @@
# 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)