You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.8 KiB
Plaintext
51 lines
2.8 KiB
Plaintext
---
|
|
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.<slug>` (e.g. `enemy.wolf_forest`, `enemy.demon_fire`)
|
|
- Monster models: `monster.<class>.<slug>.v1` (e.g. `monster.base.wolf_forest.v1`, `monster.elite.demon_fire.v1`)
|
|
- Map objects: `obj.<category>.<variant>.v1` (e.g. `obj.tree.pine_tall.v1`, `obj.road.dirt_curve.v1`)
|
|
- Equipment slots: `gear.slot.<slug>` (e.g. `gear.slot.head`, `gear.slot.cloak`, `gear.slot.finger`)
|
|
- Equipment forms (per-slot garment/weapon archetypes): `gear.form.<slotKey>.<formSlug>` (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.<slug>.v1` (e.g. `gear.ammo.iron_bodkin.v1`) — table in §0d; scaling formulas in `docs/specification.md` §6.4
|
|
- Neutral NPCs: `npc.<role>.<slug>.v1` (e.g. `npc.traveler.worn_merchant.v1`)
|
|
- World/social events: `event.<kind>.<slug>.v1` (e.g. `event.duel.offer.v1`, `event.quest.alms.v1`)
|
|
- Sound cues: `sfx.<domain>.<intent>.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.
|