From 2b9e11c62498dff3bfff318d67d5e16e99b64969 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 2 Aug 2024 11:10:44 +0200 Subject: fix Final Charge. Don't clear flag if opponent takes a hit on a Retinue! Force first hit on Richard III's Retinue correctly. --- rules.js | 13 +++++++------ rules.ts | 16 +++++++++------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/rules.js b/rules.js index 397e8ed..2e052ec 100644 --- a/rules.js +++ b/rules.js @@ -6482,15 +6482,15 @@ function end_attacker_assign_hits() { } function prompt_hit_forces() { let done = true; + // Note: Must take hit from Final Charge on Richard III's Retinue. + if (game.battle.final_charge && game.active === YORK) { + gen_action_retinue(LORD_RICHARD_III); + return false; + } for (let pos of game.battle.engagements[0]) { let lord = game.battle.array[pos]; if (!is_friendly_lord(lord)) continue; - // Note: Must take hit from Final Charge on Retinue. - if (lord === LORD_RICHARD_III && game.battle.final_charge) { - gen_action_retinue(lord); - return false; - } if (get_lord_forces(lord, RETINUE) > 0) { gen_action_retinue(lord); done = false; @@ -6579,7 +6579,8 @@ states.assign_hits = { action_assign_hits(get_vassal_lord(vassal), VASSAL, vassal); }, retinue(lord) { - game.battle.final_charge = 0; + if (lord === LORD_RICHARD_III && game.battle.final_charge) + game.battle.final_charge = 0; action_assign_hits(lord, RETINUE); }, men_at_arms(lord) { diff --git a/rules.ts b/rules.ts index bcdce10..fdcd472 100644 --- a/rules.ts +++ b/rules.ts @@ -7644,17 +7644,18 @@ function end_attacker_assign_hits() { function prompt_hit_forces() { let done = true + + // Note: Must take hit from Final Charge on Richard III's Retinue. + if (game.battle.final_charge && game.active === YORK) { + gen_action_retinue(LORD_RICHARD_III) + return false + } + for (let pos of game.battle.engagements[0]) { let lord = game.battle.array[pos] if (!is_friendly_lord(lord)) continue - // Note: Must take hit from Final Charge on Retinue. - if (lord === LORD_RICHARD_III && game.battle.final_charge) { - gen_action_retinue(lord) - return false - } - if (get_lord_forces(lord, RETINUE) > 0) { gen_action_retinue(lord) done = false @@ -7736,7 +7737,8 @@ states.assign_hits = { }, retinue(lord) { - game.battle.final_charge = 0 + if (lord === LORD_RICHARD_III && game.battle.final_charge) + game.battle.final_charge = 0 action_assign_hits(lord, RETINUE) }, men_at_arms(lord) { -- cgit v1.2.3