summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2024-08-02 11:10:44 +0200
committerTor Andersson <tor@ccxvii.net>2024-08-02 11:23:33 +0200
commit2b9e11c62498dff3bfff318d67d5e16e99b64969 (patch)
tree749cf09f6840ba31824612e1057437b08e16309c
parente97bf1e0134d5622d7d20865505f37cdc8c57bdd (diff)
downloadplantagenet-2b9e11c62498dff3bfff318d67d5e16e99b64969.tar.gz
fix Final Charge.
Don't clear flag if opponent takes a hit on a Retinue! Force first hit on Richard III's Retinue correctly.
-rw-r--r--rules.js13
-rw-r--r--rules.ts16
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) {