mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-16 17:02:42 +00:00
adventure: Tier 6 postgame "Mythic" dungeons (P1–P7 calibration)
Five post-game dungeons above the T5 ceiling, gated on both T5 bosses beaten + level 18. Opt-in endgame: deadly solo, clearable by a party with Pete + pets. - P1 gating: postgameUnlocked (T5 clears + level floor), zonesForLevel excludes T6 unconditionally; wired into startZoneRun, !zone/!expedition, party accept, boredom picker, and the list dividers. - P2 bestiary: 15 elites + 5 signature bosses (Layer-1 stat blocks). - P3 zone defs + 4-region registries; ZoneLootEntry.BossOnly. - P4 five zone graphs on a shared builder (44–52 rooms, no soft-lock; Ossuary secret Verse nodes). - P5 loot: BossOnly enforced; signature items are real registry magic items; five Thom pity recipes off the per-zone crafting anchors. - P6 narration/flavor (5 files), T6 achievements, Pete stays zone-parametric. - P7 (in progress): sim can now reach gated T6 (SimRunner.SeedPostgameUnlock + IsPostgameZone). First calibration pass on millenia — hardened ossuary + drowned_star, softened first_hoard + unplace; last_meridian in band. Fix: party members were refused from every T6 zone because expeditionCmdAccept ran the level gate (which excludes T6) before the postgame check — the intended party endgame was unreachable. Route T6 through postgameUnlocked. Regression tests added.
This commit is contained in:
75
internal/plugin/zone_graph_drowned_star.go
Normal file
75
internal/plugin/zone_graph_drowned_star.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package plugin
|
||||
|
||||
// The Drowned Star branching graph (Tier 6, Phase P4).
|
||||
//
|
||||
// The abyssal trench where Seraphel rode her star down. Regions: The Long
|
||||
// Sink → Pilgrim Trench → The Radiant Wreck → The Heart Chapel, on the
|
||||
// shared T6 skeleton. Longest walk = 46, in band.
|
||||
//
|
||||
// A descent zone: the forks gate on holding your nerve in the dark (CON
|
||||
// against the pressure, WIS against the false lights, CHA to walk the
|
||||
// pilgrim route unmolested). The locked spurs are radiant pockets of the
|
||||
// wreck — high LootBias, lit by the dying star.
|
||||
|
||||
func zoneDrownedStarGraph() ZoneGraph {
|
||||
stat := func(s string, dc int, hint string) pgLock {
|
||||
return pgLock{kind: LockStatCheck, lockData: map[string]any{"stat": s, "dc": dc}, hint: hint}
|
||||
}
|
||||
perc := func(dc int, hint string) pgLock {
|
||||
return pgLock{kind: LockPerception, lockData: map[string]any{"dc": dc}, hint: hint}
|
||||
}
|
||||
return buildPostgameZoneGraph(pgZoneSpec{
|
||||
zoneID: ZoneDrownedStar,
|
||||
regions: [4]string{"star_long_sink", "star_pilgrim_trench", "star_radiant_wreck", "star_heart_chapel"},
|
||||
entry: "The Waterline",
|
||||
preamble: [12]string{
|
||||
"The Long Sink", "Descending Dark", "Pressure Gate", "The Static Shoal",
|
||||
"Choir of Static", "Sunless Landing", "Undertow Snare", "The Glow Below",
|
||||
"Pilgrim's Approach", "Trench Mouth", "The Lit Road", "First Lantern",
|
||||
},
|
||||
fork1: pgFork{
|
||||
label: "The First Descent",
|
||||
freeLabel: [3]string{"Marked Pilgrim Road", "Lantern-Lit Walk", "Trench Floor"},
|
||||
lockLabel: [3]string{"Off-Route Pocket", "The Radiant Wreck-Pocket", "Sunken Alcove"},
|
||||
lock: stat("CON", 16, "the pressure here would fold a lesser diver — endure it and the wreck opens"),
|
||||
},
|
||||
r2gate: "Pilgrim Trench",
|
||||
r2build: [6]string{
|
||||
"Trench of the Followed Light", "The Angler-Knight's Walk", "False-Light Gallery",
|
||||
"Warden's Lure", "The Unseen-Again Hall", "Wreck Threshold",
|
||||
},
|
||||
fork2: pgFork{
|
||||
label: "The Second Descent",
|
||||
freeLabel: [3]string{"Steady Pilgrim Line", "Trusted Dark", "Wreck Floor"},
|
||||
lockLabel: [3]string{"Halo-Fragment Recess", "The Star-Lit Vault", "Radiant Niche"},
|
||||
lock: stat("WIS", 17, "one lantern is not a lure — know which and it leads true"),
|
||||
},
|
||||
r3gate: "The Radiant Wreck",
|
||||
r3build: [6]string{
|
||||
"The Star's Broken Hull", "Gallery of Ten Thousand Years", "Leviathanling Roost",
|
||||
"The Glowing Silhouette", "Chapel Antechamber", "Threshold of the Heart",
|
||||
},
|
||||
capstone: pgCapstone{
|
||||
label: "The Chapel Fork",
|
||||
freeLabel: [3]string{"Direct Chapel-Walk", "The Open Reredos", "Chapel Floor"},
|
||||
lockALabel: [3]string{"Pilgrim's Grace", "The Unmolested Route", "Sanctified Path"},
|
||||
lockA: stat("CHA", 18, "walk the pilgrim route as a pilgrim and it lets you pass"),
|
||||
lockBLabel: [3]string{"Halo-Seam", "The Heart's Own Light", "Radiant Shortcut"},
|
||||
lockB: perc(18, "a crack in the radiance where the star still leaks its oldest light"),
|
||||
},
|
||||
merge: "The Heart Chapel",
|
||||
approach: [5]string{
|
||||
"The Shielded Star", "Seraphel's Vigil", "Sanctified Undertow Walk", "The Grieving Light", "The Last Radiance",
|
||||
},
|
||||
boss: "Seraphel, the Light That Sank",
|
||||
overrides: map[string]pgNodeOverride{
|
||||
"f1b2": {kind: NodeKindSecret, bias: 2.25},
|
||||
"f2b2": {kind: NodeKindSecret, bias: 2.25},
|
||||
"cap32": {kind: NodeKindSecret, bias: 2.5},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func init() {
|
||||
registerZoneGraph(zoneDrownedStarGraph())
|
||||
}
|
||||
Reference in New Issue
Block a user