summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2023-12-16 01:33:25 +0100
committerTor Andersson <tor@ccxvii.net>2024-01-08 16:36:48 +0100
commitbcac31232a4c4c44d2eec5fcbe514d06f364a681 (patch)
tree93e9057c47dcd9284daa2e9b9bb828338dd14241
parent8e53bd21752d446e771074f55ac919467dbcfd7f (diff)
downloadtable-battles-bcac31232a4c4c44d2eec5fcbe514d06f364a681.tar.gz
fix nivelles
-rw-r--r--rules.js39
1 files changed, 32 insertions, 7 deletions
diff --git a/rules.js b/rules.js
index fe2840f..2316da4 100644
--- a/rules.js
+++ b/rules.js
@@ -267,6 +267,9 @@ const S38_WALDECK = find_card(38, "Waldeck")
const S38_RETREAT_TO_NIVELLES = find_card(38, "Retreat to Nivelles")
const S38_LUXEMBOURGS_HORSE = find_card(38, "Luxembourg's Horse")
const S38_GOURNAYS_HORSE = find_card(38, "Gournay's Horse")
+const S38_DUTCH_LEFT_FOOT = find_card(38, "Dutch Left Foot")
+const S38_FRENCH_RIGHT = find_card(38, "French Right")
+const S38_DUTCH_HORSE = find_card(38, "Dutch Horse")
const S39_MARSAGLIA = find_scenario(39)
const S39_CANNONS = find_card(39, "Cannons")
@@ -760,11 +763,6 @@ function check_impossible_to_attack_victory() {
function get_tactical_victory_points(p) {
let n = game.lost[1-p]
- if (game.scenario === S38_FLEURUS) {
- if (p === 1)
- n += get_sticks(S38_RETREAT_TO_NIVELLES)
- }
-
if (game.scenario === S46_ROCOUX) {
if (p === 0)
n += get_sticks(S46_AUSTRIANS)
@@ -1418,6 +1416,19 @@ function goto_roll_phase() {
if (card_has_rule(c, "place_2_pink_if_dice") && has_any_dice_on_card(c)) game.place_max[PINK] = 2
*/
}
+
+ if (game.scenario === S38_FLEURUS) {
+ if (p === 1) {
+ if (get_sticks(S38_RETREAT_TO_NIVELLES)) {
+ if (game.starting_on_your_next_turn++) {
+ set_sticks(S38_RETREAT_TO_NIVELLES, get_sticks(S38_RETREAT_TO_NIVELLES) - 1)
+ game.lost[0] += 1
+ if (check_victory())
+ return
+ }
+ }
+ }
+ }
}
states.skip_action = {
@@ -2616,6 +2627,15 @@ function update_attack1(direct) {
}
}
+ if (game.scenario === S38_FLEURUS) {
+ if (game.selected === S38_LUXEMBOURGS_HORSE && game.target === S38_DUTCH_LEFT_FOOT) {
+ game.hits += 1
+ }
+ if (game.selected === S38_FRENCH_RIGHT && is_removed_from_play(S38_DUTCH_HORSE)) {
+ game.hits += 1
+ }
+ }
+
if (game.scenario === S39_MARSAGLIA) {
if (game.selected === S39_EUGENE) {
if (has_any_dice_on_card(S39_CANNONS)) {
@@ -2833,11 +2853,12 @@ function goto_command() {
}
if (game.scenario === S38_FLEURUS && game.selected === S38_WALDECK) {
- remove_cubes(S38_RETREAT_TO_NIVELLES, 3)
+ remove_cubes(S38_RETREAT_TO_NIVELLES, 1)
remove_dice(game.selected)
- if (1 || !has_any_cubes_on_card(S38_RETREAT_TO_NIVELLES)) {
+ if (!has_any_cubes_on_card(S38_RETREAT_TO_NIVELLES)) {
game.selected = S38_RETREAT_TO_NIVELLES
game.state = "s38_retreat_to_nivelles_1"
+ game.starting_on_your_next_turn = 0
return
}
end_action_phase()
@@ -3334,6 +3355,8 @@ function get_attack_hits(c, a) {
case "1 hit per die (2 hits per die vs. Blenheim). 1 self per action.":
case "1 hit per die (two per die vs. Villars's Left). 1 self per action.":
case "1 hit per die versus Driesen. Two hits per die versus Retzow.":
+ case "1 hit per die. 1 self per action. Does 1 extra hit versus Dutch Left Foot.":
+ case "1 hit per die. 1 self per action. Does 1 extra hit if Dutch Horse Routed.":
case "1 hit per die. 1 self per action. If reduced to one stick, no self hits.":
case "1 hit per die. 1 self per action. You CHOOSE the target.":
return count_dice_on_card(c)
@@ -3390,6 +3413,8 @@ function get_attack_self(c, a) {
case "1 hit per die (2 hits per die vs. Blenheim). 1 self per action.":
case "1 hit per die (two per die vs. Villars's Left). 1 self per action.":
case "1 hit per die versus Driesen. Two hits per die versus Retzow.":
+ case "1 hit per die. 1 self per action. Does 1 extra hit versus Dutch Left Foot.":
+ case "1 hit per die. 1 self per action. Does 1 extra hit if Dutch Horse Routed.":
case "1 hit per die. 1 self per action. You CHOOSE the target.":
case "1 hit per pair. 1 self per action.":
case "1 hit, PLUS 1 hit per die. 1 self per action.":