# Monster Catalog (Balanced v1)

This document is the reference snapshot for monster balance after the combat-system rewrite.

Source of truth for runtime values remains PostgreSQL (`enemies` table). This file is a readable, versioned reference for future balancing and regressions.

## Fields

- `enemyType`: DB archetype key (`enemies.type`).
- `catalogId`: content-contract ID from `docs/specification-content-catalog.md`.
- `baseLevel`: archetype baseline level in DB.
- `levelVariance`: spawn variability around base level (`+/-` percent).
- `maxHeroLevelDiff`: absolute clamp versus hero level.
- `baseStats`: `maxHp/attack/defense/speed/critChance` stored on archetype row.
- `perLevel`: per-level progression values from DB.
- `abilities`: special abilities from DB.

## Snapshot Template

Fill this table from DB after each balancing pass.

| enemyType | catalogId | baseLevel | levelVariance | maxHeroLevelDiff | baseStats (hp/atk/def/spd/crit) | perLevel (hp/atk/def/xp/gold) | abilities |
|---|---|---:|---:|---:|---|---|---|
| wolf | enemy.wolf_forest | - | - | - | - | - | - |
| boar | enemy.boar_wild | - | - | - | - | - | - |
| zombie | enemy.zombie_rotting | - | - | - | - | - | - |
| spider | enemy.spider_cave | - | - | - | - | - | - |
| orc | enemy.orc_warrior | - | - | - | - | - | - |
| skeleton_archer | enemy.skeleton_archer | - | - | - | - | - | - |
| battle_lizard | enemy.lizard_battle | - | - | - | - | - | - |
| fire_demon | enemy.demon_fire | - | - | - | - | - | - |
| ice_guardian | enemy.guard_ice | - | - | - | - | - | - |
| skeleton_king | enemy.skeleton_king | - | - | - | - | - | - |
| water_element | enemy.element_water | - | - | - | - | - | - |
| forest_warden | enemy.guard_forest | - | - | - | - | - | - |
| lightning_titan | enemy.titan_lightning | - | - | - | - | - | - |

## Export Workflow (recommended)

1. Run balance simulations and update `enemies` rows.
2. Export current rows into a CSV/JSON report.
3. Paste the finalized values into this document.
4. Commit both DB migration/change and this snapshot in one PR.
