Top-level `floor:` int + `rooms:` mapping where each room carries a
type, a locked flag, an exits list, and a contents list. Two rooms
picked from a name/kind pool; exits and contents drawn from typed
pools. Deterministic per seed (ChaCha8Rng XOR'd with 0x..07).
Not wired into levels::registry() yet — integration belongs to a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Top-level `floor:` int + `rooms:` mapping where each room carries a
type, a locked flag, an exits list, and a contents list. Two rooms
picked from a name/kind pool; exits and contents drawn from typed
pools. Deterministic per seed (ChaCha8Rng XOR'd with 0x..07).
Not wired into levels::registry() yet — integration belongs to a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Target structure: a `trap:` dict plus a `rooms:` map where 2-3 rooms
all share the same trap. serde_yaml expands aliases on parse, so the
emitted target is the inlined form; players using `&anchor` / `*alias`
produce the same parsed Value and pass via the semantic short-circuit.
Trap properties (type / depth / spikes) and reused rooms are randomised
per seed (ChaCha8Rng XOR'd with 0x..06).
Not wired into levels::registry() yet — integration belongs to a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Top-level `chambers:` mapping; each chamber name maps to an item list.
2-3 chambers, 2-3 items each, drawn from typed pools. Deterministic per
seed via ChaCha8Rng XOR'd with 0x..05.
Not wired into levels::registry() yet — integration belongs to a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Top-level `chest:` key with a 3-5 item sequence drawn from a small pool.
Per-seed deterministic via ChaCha8Rng XOR'd with 0x..04. Description
rendered with tera; flavor uses a 📦 emoji.
Not wired into levels::registry() yet — integration belongs to a follow-up.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>