28 lines
884 B
Python
28 lines
884 B
Python
from __future__ import annotations
|
|
from dataclasses import dataclass, field
|
|
from typing import Dict, Literal
|
|
|
|
Difficulty = Literal["easy","standard","tough","elite","boss"]
|
|
|
|
@dataclass(frozen=True)
|
|
class EnemyProfile:
|
|
# Level selection relative to player
|
|
level_bias: int = 0 # e.g., +2 spawns slightly above player level
|
|
level_variance: int = 1 # random wiggle (0..variance)
|
|
min_level: int = 1
|
|
max_level: int = 999
|
|
|
|
# Global power multipliers (applied after base+per-level growth)
|
|
hp_mult: float = 1.0
|
|
dmg_mult: float = 1.0
|
|
armor_mult: float = 1.0
|
|
speed_mult: float = 1.0
|
|
|
|
# Optional stat emphasis for auto-building enemy ability scores
|
|
stat_weights: Dict[str, float] = field(default_factory=dict) # e.g. {"STR":1.2,"DEX":1.1}
|
|
|
|
# Rewards
|
|
xp_base: int = 10
|
|
xp_per_level: int = 5
|
|
loot_tier: str = "common"
|