From 6ced7d5c56d6e3f806bf3daf8b13493a676074c0 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Wed, 14 Dec 2022 17:22:40 +0100 Subject: Stop delaying hits when more hits inflicted than steps. --- rules.js | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/rules.js b/rules.js index a9ff8bf..bb884cc 100644 --- a/rules.js +++ b/rules.js @@ -2018,6 +2018,21 @@ function can_fire_with_block(b) { return false } +function count_enemy_hp_in_battle() { + let is_candidate = (game.active === get_attacker(game.where)) ? is_defender : is_attacker + let n = 0 + for (let b = 0; b < block_count; ++b) + if (is_candidate(b)) + n += game.steps[b] + return n +} + +function must_apply_hits() { + if (game.delay_hits) + return game.hits >= count_enemy_hp_in_battle() + return game.hits > 0 +} + function fire_with_block(b) { set_add(game.moved, b) let strength = block_strength(b) @@ -2057,13 +2072,9 @@ function fire_with_block(b) { game.flash += " and scored " + hits + " hits." } - if (game.hits > 0) { - if (!game.delay_hits) { - game.active = enemy(game.active) - goto_battle_hits() - } else { - resume_battle() - } + if (must_apply_hits()) { + game.active = enemy(game.active) + goto_battle_hits() } else { resume_battle() } -- cgit v1.2.3