Adv 2.0 Phase L2 step 2: ZoneArena synthetic ID

Adds ZoneArena to the ZoneID enum so the upcoming arena boss path can
route renderBossOutcome's twinBeeLine calls without inventing a parallel
flavor system. Synthetic by design — never registered via registerZone,
so !zone enter arena is unreachable and allZones() / registry tests are
unaffected.

Mood pools (Nat20/Nat1/BossDeath/PlayerDeath) are already zone-agnostic
in pickPool, so ZoneArena falls through to the generic defaults at zero
cost. Phase-two and boss-entry pools default to nil/generic too —
arena-specific overrides land alongside the bestiary work in step 3
only if existing flavor doesn't read right.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-09 07:49:04 -07:00
parent 62eed7a064
commit b0738e8e0a

View File

@@ -31,6 +31,15 @@ const (
ZoneFeywildCrossing ZoneID = "feywild_crossing"
ZoneDragonsLair ZoneID = "dragons_lair"
ZoneAbyssPortal ZoneID = "abyss_portal"
// ZoneArena is a synthetic ID — never registered via registerZone, so
// !zone enter can't reach it. It exists to route renderBossOutcome's
// twinBeeLine calls when an arena fight (resolveArenaBoss, post-L2)
// reuses the boss-shaped narrative path. The Nat20/Nat1/BossDeath/
// PlayerDeath pools are generic, so ZoneArena falls through the
// existing zoneRoomEntryPool / bossEntryPool / zoneLorePool /
// bossPhaseTwoPool switches to the right defaults.
ZoneArena ZoneID = "arena"
)
// ZoneTier — 1..5. Player level ranges per design doc §2.