adventure: route round-end concentration kill through enemyDown (P8)

The T6 Valdris phylactery rebirth (and the pre-existing survive_at_1
one-shot) live in enemyDown, on the premise that it is the single death
chokepoint. It isn't: the round-end concentration pulse ended the fight
on a raw enemyHP<=0 read, so a cleric's Spirit Guardians landing the
lethal blow robbed a revive-armed boss of its rebirth — exactly the
cleric-party arm P8 is tuned around. Route that win-check through
enemyDown so the boss gets its chance to stand back up. Regression test
covers both the armed (revives) and charge-less (still wins) paths.

Claude-Session: https://claude.ai/code/session_0156WqjgsbmSY2U8eQ3Kkb1s
This commit is contained in:
prosolis
2026-07-16 08:41:58 -07:00
parent 686434f8e3
commit db13ed75b9
2 changed files with 60 additions and 1 deletions

View File

@@ -842,7 +842,12 @@ func (te *turnEngine) stepRoundEnd() {
Round: st.round, Phase: CombatPhaseRoundEnd, Actor: "player", Action: "concentration_tick",
Damage: st.concentrationDmg, PlayerHP: st.playerHP, EnemyHP: st.enemyHP, Seat: i,
})
if st.enemyHP <= 0 {
// Route the kill through enemyDown, not a raw HP read: a boss that cheats
// death (survive_at_1) or holds a phylactery rebirth (T6 Valdris) must get
// that chance even when the lethal blow is a lingering concentration pulse.
// enemyDown restores its HP and returns false, so the next seat's pulse (or
// the following round) resolves against the revived pool.
if enemyDown(st, CombatPhaseRoundEnd) {
te.finish(CombatStatusWon)
return
}