Long expeditions D1-a: graph-driven TotalRooms; goblin_warrens 7→16

Length is now sourced from the zone graph's longest entry→boss path,
not the dice roll, so "Room X/Y" matches what the player walks. The
dice fallback stays for graphless zones.

Goblin Warrens grows to the T1 12–14 band (13-node traversal): adds the
missing Trap anchor and deepens both fork branches + the post-merge
approach. Pattern reference for the remaining zones in D1-b…d.
This commit is contained in:
prosolis
2026-05-27 17:24:36 -07:00
parent 92b99a0399
commit 4999368031
6 changed files with 134 additions and 38 deletions

View File

@@ -13,8 +13,10 @@ func TestGoblinWarrensGraph_Registered(t *testing.T) {
if g.Boss != "goblin_warrens.boss" {
t.Errorf("boss node = %q, want goblin_warrens.boss", g.Boss)
}
if len(g.Nodes) != 7 {
t.Errorf("nodes = %d, want 7", len(g.Nodes))
// Long-expedition D1 widened this zone from 7 → 16 nodes so both
// branches land in the T1 [12,14] traversal band.
if len(g.Nodes) != 16 {
t.Errorf("nodes = %d, want 16", len(g.Nodes))
}
}
@@ -30,7 +32,7 @@ func TestGoblinWarrensGraph_BothPathsReachBoss(t *testing.T) {
func TestGoblinWarrensGraph_ForkLayout(t *testing.T) {
g := zoneGoblinWarrensGraph()
outs := g.outgoingEdges("goblin_warrens.fork")
outs := g.outgoingEdges("goblin_warrens.cavern_junction")
if len(outs) != 2 {
t.Fatalf("fork outgoing edges = %d, want 2", len(outs))
}