--- description: Canonical content IDs for enemies, map objects, sounds, and VFX — use exact IDs from docs/specification-content-catalog.md alwaysApply: true --- # Content Catalog IDs **Source of truth:** `docs/specification-content-catalog.md`. Always use exact IDs from the catalog. Do not invent new IDs without extending the catalog first. ## Naming Conventions - Enemies: `enemy.` (e.g. `enemy.wolf_forest`, `enemy.demon_fire`) - Monster models: `monster...v1` (e.g. `monster.base.wolf_forest.v1`, `monster.elite.demon_fire.v1`) - Map objects: `obj...v1` (e.g. `obj.tree.pine_tall.v1`, `obj.road.dirt_curve.v1`) - Equipment slots: `gear.slot.` (e.g. `gear.slot.head`, `gear.slot.cloak`, `gear.slot.finger`) - Equipment forms (per-slot garment/weapon archetypes): `gear.form..` (e.g. `gear.form.feet.boots`, `gear.form.finger.ring`, `gear.form.head.helmet`) — full table in `docs/specification-content-catalog.md` §0a - Quiver slot: `gear.slot.quiver`; ammunition families: `gear.ammo..v1` (e.g. `gear.ammo.iron_bodkin.v1`) — table in §0d; scaling formulas in `docs/specification.md` §6.4 - Neutral NPCs: `npc...v1` (e.g. `npc.traveler.worn_merchant.v1`) - World/social events: `event...v1` (e.g. `event.duel.offer.v1`, `event.quest.alms.v1`) - Sound cues: `sfx...v1` (e.g. `sfx.combat.hit.v1`, `sfx.progress.level_up.v1`) ## Enemy IDs (13 total) **Base (7):** `enemy.wolf_forest` (L1-5), `enemy.boar_wild` (L2-6), `enemy.zombie_rotting` (L3-8), `enemy.spider_cave` (L4-9), `enemy.orc_warrior` (L5-12), `enemy.skeleton_archer` (L6-14), `enemy.lizard_battle` (L7-15) **Elite (6):** `enemy.demon_fire` (L10-20), `enemy.guard_ice` (L12-22), `enemy.skeleton_king` (L15-25), `enemy.element_water` (L18-28), `enemy.guard_forest` (L20-30), `enemy.titan_lightning` (L25-35) ## Sound Cue IDs | ID | Trigger | |----|---------| | `sfx.combat.hit.v1` | normal hit | | `sfx.combat.crit.v1` | critical hit | | `sfx.combat.death_enemy.v1` | enemy dies | | `sfx.loot.pickup.v1` | loot granted | | `sfx.status.buff_activate.v1` | buff applied | | `sfx.status.debuff_apply.v1` | debuff applied | | `sfx.ambient.forest_loop.v1` | forest biome (loop) | | `sfx.ui.click.v1` | button tap | | `sfx.progress.level_up.v1` | level up | | `sfx.social.emote.v1` | player meet / NPC short interaction | | `sfx.ui.duel_prompt.v1` | duel offer shown | ## MVP Defaults - One shared hit/death sound for all base enemies; unique status sounds for elites only. - `soundCueId` optional per entity; use `ambientSoundCueId` at chunk/biome level. - One model per archetype (`.v1`); skin variants later (`.v2`, `.v3`). - Map objects non-interactive in MVP (visual/navigation only). - IDs (`enemyId`, `modelId`, `soundCueId`) are **content-contract keys** — keep stable across backend/client.