Adv 2.0 D&D Phase 11 D5b: Tier 4-5 zone flavor files

Adds zone_underdark, zone_feywild_crossing, zone_dragons_lair, and
zone_abyss_portal flavor files with elite-room intros, boss-entry
pools (where canonical twinbee_gm_flavor.go didn't already ship one),
boss ability callouts, and zone-specific lore. Wires the four pools
into zoneRoomEntryPool / bossEntryPool / bossSignaturePool /
eliteRoomEntryPool / zoneLorePool, and replaces the now-obsolete
"unflavored zone" assertions with Tier 4-5 positive routing tests.

RoomEntryUnderdark, RoomEntryDragonsLair, BossEntryInfernax, and
BossEntryBelaxath are reused verbatim from twinbee_gm_flavor.go per
the canonical-flavor-first rule.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
prosolis
2026-05-08 14:00:21 -07:00
parent 807864ac8d
commit 618f6dc34f
6 changed files with 583 additions and 20 deletions

View File

@@ -85,8 +85,12 @@ func zoneRoomEntryPool(zoneID ZoneID) []string {
return append(append([]string{}, flavor.RoomEntryUnderforge...), flavor.RoomEntryGeneric...)
case ZoneUnderdark:
return append(append([]string{}, flavor.RoomEntryUnderdark...), flavor.RoomEntryGeneric...)
case ZoneFeywildCrossing:
return append(append([]string{}, flavor.RoomEntryFeywildCrossing...), flavor.RoomEntryGeneric...)
case ZoneDragonsLair:
return append(append([]string{}, flavor.RoomEntryDragonsLair...), flavor.RoomEntryGeneric...)
case ZoneAbyssPortal:
return append(append([]string{}, flavor.RoomEntryAbyssPortal...), flavor.RoomEntryGeneric...)
}
return flavor.RoomEntryGeneric
}
@@ -107,6 +111,10 @@ func bossEntryPool(zoneID ZoneID) []string {
return flavor.BossEntryAldricBlackspire
case ZoneUnderforge:
return flavor.BossEntryEmberlordThyrak
case ZoneUnderdark:
return flavor.BossEntryIlvaras
case ZoneFeywildCrossing:
return flavor.BossEntryThornmother
case ZoneDragonsLair:
return flavor.BossEntryInfernax
case ZoneAbyssPortal:
@@ -165,6 +173,14 @@ func zoneLorePool(zoneID ZoneID) []string {
return append(append([]string{}, flavor.LoreLinesManorBlackspire...), flavor.LoreLines...)
case ZoneUnderforge:
return append(append([]string{}, flavor.LoreLinesUnderforge...), flavor.LoreLines...)
case ZoneUnderdark:
return append(append([]string{}, flavor.LoreLinesUnderdark...), flavor.LoreLines...)
case ZoneFeywildCrossing:
return append(append([]string{}, flavor.LoreLinesFeywildCrossing...), flavor.LoreLines...)
case ZoneDragonsLair:
return append(append([]string{}, flavor.LoreLinesDragonsLair...), flavor.LoreLines...)
case ZoneAbyssPortal:
return append(append([]string{}, flavor.LoreLinesAbyssPortal...), flavor.LoreLines...)
}
return flavor.LoreLines
}
@@ -186,6 +202,14 @@ func bossSignaturePool(zoneID ZoneID) []string {
return flavor.AldricSignatureCallouts
case ZoneUnderforge:
return flavor.ThyrakSignatureCallouts
case ZoneUnderdark:
return flavor.IlvarasSignatureCallouts
case ZoneFeywildCrossing:
return flavor.ThornmotherSignatureCallouts
case ZoneDragonsLair:
return flavor.InfernaxSignatureCallouts
case ZoneAbyssPortal:
return flavor.BelaxathSignatureCallouts
}
return nil
}
@@ -206,6 +230,14 @@ func eliteRoomEntryPool(zoneID ZoneID) []string {
return flavor.EliteRoomEntryManorBlackspire
case ZoneUnderforge:
return flavor.EliteRoomEntryUnderforge
case ZoneUnderdark:
return flavor.EliteRoomEntryUnderdark
case ZoneFeywildCrossing:
return flavor.EliteRoomEntryFeywildCrossing
case ZoneDragonsLair:
return flavor.EliteRoomEntryDragonsLair
case ZoneAbyssPortal:
return flavor.EliteRoomEntryAbyssPortal
}
return nil
}