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
2 changed files with 136 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ pub mod l05_dict_list;
pub mod l06_anchors;
pub mod l07_complex;
pub mod l08_tags;
pub mod l09_operators;
use serde::{Deserialize, Serialize};