Add level 9: Merge Keys (special operators)

`door_defaults` plus `north_door` and `south_door`, each containing a
`<<:` key whose value is the defaults dict. north overrides locked,
south overrides material. serde_yaml treats `<<` as a literal mapping
key, so the target and a player's `<<: *defaults` form parse to the
same Value.

Default material/locked and which side overrides which are randomised
per seed (ChaCha8Rng XOR'd with 0x..09).

Not wired into levels::registry() yet — integration belongs to a follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-21 22:56:44 +03:00
parent bac059a789
commit f0a7992626
2 changed files with 136 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
pub mod l01_minimum;
pub mod l02_kv;
pub mod l03_dict;
pub mod l09_operators;
use serde::{Deserialize, Serialize};