adventure: P7 sim tuning for Ossuary + Unplace T6 zones

Two sweep passes (n=120, L20, party=leader+cleric+Pete+pets on millenia)
landed both zones at the intended opt-in-endgame difficulty:

- Ossuary Ascendant: re-hardened after pass 2 overshot (party fighter
  63%->38%). Valdris 525/50->550/52; grave_cardinal 220/27->230/28;
  reliquary_knight atk 29->30; chorister 180/26->190/27.
- The Unplace: softened the multi-target elite AOE procs (the party-arm
  lever; boss flat HP barely moved it). the_unnumbered 20atk/.28 proc,
  echo_of_belaxath Rerun .25, seamstress 385/39.

Final party-fighter clears: ossuary 38 / unplace 37 (== accepted
drowned_star 38 standard); solo stays deadly 2-8%.
This commit is contained in:
prosolis
2026-07-16 06:34:37 -07:00
parent 2e73cae418
commit d08a20a114

View File

@@ -18,7 +18,7 @@ var _ = func() bool {
// ── Zone 1 — The Ossuary Ascendant ──────────────────────────────
"grave_cardinal": {
ID: "grave_cardinal", Name: "Grave Cardinal",
CR: 17, HP: 240, AC: 17, Attack: 30, AttackBonus: 10, Speed: 12,
CR: 17, HP: 230, AC: 17, Attack: 28, AttackBonus: 10, Speed: 12,
BlockRate: 0.15,
Ability: &MonsterAbility{Name: "Last Rites", Phase: "any", ProcChance: 0.45, Effect: "debuff"},
XPValue: 18000,
@@ -26,7 +26,7 @@ var _ = func() bool {
},
"reliquary_knight": {
ID: "reliquary_knight", Name: "Reliquary Knight",
CR: 18, HP: 230, AC: 20, Attack: 31, AttackBonus: 10, Speed: 10,
CR: 18, HP: 230, AC: 20, Attack: 30, AttackBonus: 10, Speed: 10,
BlockRate: 0.35,
Ability: &MonsterAbility{Name: "Coffin Guard", Phase: "any", ProcChance: 0.50, Effect: "block"},
XPValue: 20000,
@@ -34,7 +34,7 @@ var _ = func() bool {
},
"the_chorister": {
ID: "the_chorister", Name: "The Chorister",
CR: 17, HP: 200, AC: 16, Attack: 29, AttackBonus: 10, Speed: 12,
CR: 17, HP: 190, AC: 16, Attack: 27, AttackBonus: 10, Speed: 12,
BlockRate: 0.10,
Ability: &MonsterAbility{Name: "Dirge", Phase: "opening", ProcChance: 0.45, Effect: "stun"},
XPValue: 18000,
@@ -71,9 +71,9 @@ var _ = func() bool {
// ── Zone 3 — The Unplace ─────────────────────────────────────────
"the_unnumbered": {
ID: "the_unnumbered", Name: "The Unnumbered",
CR: 18, HP: 250, AC: 16, Attack: 22, AttackBonus: 10, Speed: 12,
CR: 18, HP: 250, AC: 16, Attack: 18, AttackBonus: 10, Speed: 12,
BlockRate: 0.10,
Ability: &MonsterAbility{Name: "Too Many Arms", Phase: "any", ProcChance: 0.35, Effect: "aoe"},
Ability: &MonsterAbility{Name: "Too Many Arms", Phase: "any", ProcChance: 0.28, Effect: "aoe"},
XPValue: 20000,
Notes: "Unplace elite. Several demons in one silhouette; the count changes with the angle. (Layer 2: extra attack on rounds the player missed.)",
},
@@ -89,7 +89,7 @@ var _ = func() bool {
ID: "echo_of_belaxath", Name: "Echo of Belaxath",
CR: 19, HP: 220, AC: 18, Attack: 23, AttackBonus: 11, Speed: 14,
BlockRate: 0.15,
Ability: &MonsterAbility{Name: "Rerun", Phase: "decisive", ProcChance: 0.30, Effect: "aoe"},
Ability: &MonsterAbility{Name: "Rerun", Phase: "decisive", ProcChance: 0.25, Effect: "aoe"},
XPValue: 22000,
Notes: "Unplace elite. A Balor outline filled with static; a memory the Unplace keeps replaying. Drops nothing — pure toll.",
FireAttacker: true,
@@ -150,7 +150,7 @@ var _ = func() bool {
// ── Signature bosses ─────────────────────────────────────────────
"boss_valdris_ascendant": {
ID: "boss_valdris_ascendant", Name: "Valdris, At Last",
CR: 26, HP: 570, AC: 21, Attack: 54, AttackBonus: 12, Speed: 14,
CR: 26, HP: 550, AC: 21, Attack: 52, AttackBonus: 12, Speed: 14,
BlockRate: 0.15,
Ability: &MonsterAbility{Name: "Apotheosis Nova", Phase: "decisive", ProcChance: 0.40, Effect: "aoe"},
XPValue: 90000,
@@ -167,7 +167,7 @@ var _ = func() bool {
},
"boss_seamstress": {
ID: "boss_seamstress", Name: "The Seamstress",
CR: 27, HP: 440, AC: 21, Attack: 43, AttackBonus: 12, Speed: 14,
CR: 27, HP: 385, AC: 21, Attack: 39, AttackBonus: 12, Speed: 14,
BlockRate: 0.15,
Ability: &MonsterAbility{Name: "Needle Rain", Phase: "decisive", ProcChance: 0.40, Effect: "aoe"},
XPValue: 100000,