init commit
This commit is contained in:
36
app/models/races.py
Normal file
36
app/models/races.py
Normal 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)
|
||||
Reference in New Issue
Block a user