Adv 2.0 D&D Phase R R2: Harvest nodes & per-room registry

Per-zone resource registry (§3, all 10 zones) and full per-room harvest
layer wired into expeditions: !forage / !mine / !scavenge / !essence /
!commune / !resources. Auto-spawns a DungeonRun per region on
!expedition start, swaps it on !region travel, retires on
abandon/extract. Long rest at camp replenishes nodes across every
room and region. Reuses existing flavor.Harvest* / RichYield /
NodeDepleted / per-zone Harvest<Zone> pools.

Also clears two pre-existing test failures introduced by the E6c
flavor expansion (briefing substring list + combat-lift trial count).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-08 17:34:49 -07:00
parent cb51c56f00
commit 83cdf07374
13 changed files with 1314 additions and 6 deletions

View File

@@ -19,11 +19,11 @@ func TestPickMorningBriefing_DayBands(t *testing.T) {
day int
want []string // any-of pool
}{
{1, []string{"First morning", "Day one complete"}},
{3, []string{"Day three", "Three days in"}},
{1, []string{"First morning", "Day one", "day two"}},
{3, []string{"Day three", "Three days"}},
{7, []string{"One week", "Seven days", "A week underground"}},
{14, []string{"Two weeks", "Fourteen days"}},
{21, []string{"Three weeks"}},
{14, []string{"Two weeks", "Fourteen days", "Day fifteen"}},
{21, []string{"Three weeks", "Day twenty-one"}},
}
for _, c := range cases {
got := pickMorningBriefing(c.day)