WIP: in-flight combat/expedition/flavor changes

Bundle of uncommitted working-tree edits across combat engine, expedition
cycle, flavor pools, and TwinBee/zone narration. Includes new files:
combat_debug.go, dnd_boss_consumables.go, dnd_dex_floor.go, plus
CHANGES_24H.md and REBALANCE_NOTES.md scratch notes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-12 21:59:19 -07:00
parent 2b86f3df16
commit 4e412219f3
49 changed files with 1381 additions and 444 deletions

View File

@@ -76,9 +76,10 @@ func TestAdv2Scenario_ZoneRunGoblinWarrens(t *testing.T) {
}
// Drive !zone advance until the run terminates (cleared, died, or
// abandoned). Cap iterations as a safety net in case advance becomes
// a no-op due to a regression.
maxSteps := run.TotalRooms + 4
// abandoned). When a fork is pending (Phase G branching graphs) auto-pick
// the first option via `!zone go 1` so the test doesn't stall on a
// diamond. Doubled iteration cap covers fork-then-advance pairs.
maxSteps := (run.TotalRooms + 4) * 2
clearedRoomTypes := []RoomType{}
for step := 0; step < maxSteps; step++ {
before, _ := getActiveZoneRun(uid)
@@ -93,6 +94,13 @@ func TestAdv2Scenario_ZoneRunGoblinWarrens(t *testing.T) {
}
t.Logf("step %d: in room %d/%d (%s), mood=%d, HP=%d",
step, before.CurrentRoom+1, before.TotalRooms, prevType, before.DMMood, prevHP)
if len(before.NodeChoices) > 0 {
// A fork is queued from the previous advance — commit it first.
if err := p.handleDnDZoneCmd(MessageContext{Sender: uid}, "go 1"); err != nil {
t.Fatalf("zone go step %d: %v", step, err)
}
continue
}
if err := p.handleDnDZoneCmd(MessageContext{Sender: uid}, "advance"); err != nil {
t.Fatalf("zone advance step %d: %v", step, err)
}