mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-18 01:42:42 +00:00
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:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user