diff options
author | Tor Andersson <tor@ccxvii.net> | 2023-12-15 15:52:21 +0100 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-01-08 16:36:48 +0100 |
commit | 096d811c5835c0d97dd687a68465e6d68adac675 (patch) | |
tree | 6a62bba001d0fb7d8ded650b20c9971ac5932d8d /rules.js | |
parent | 0659b78aa31e23c8feb6d4ff57a1cd349021b28f (diff) | |
download | table-battles-096d811c5835c0d97dd687a68465e6d68adac675.tar.gz |
Rocoux. Improved layout.
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 35 |
1 files changed, 31 insertions, 4 deletions
@@ -124,7 +124,8 @@ exports.view = function (state, player) { sticks: game.sticks, cubes: game.cubes, morale: game.morale, - lost: game.lost, + tv1: get_tactical_victory_points(0), + tv2: get_tactical_victory_points(1), front: game.front, reserve: game.reserve, selected: game.selected, @@ -333,6 +334,10 @@ const S45_SOOR = find_scenario(45) const S45_AUSTRIAN_GUNS = find_card(45, "Austrian Guns") const S45_CUIRASSIERS = find_card(45, "Cuirassiers") +const S46_ROCOUX = find_scenario(46) +const S46_AUSTRIANS = find_card(46, "Austrians") +const S46_THE_MOUTH_OF_HELL = find_card(46, "The Mouth of Hell") + // === SETUP === exports.setup = function (seed, scenario, options) { @@ -620,6 +625,16 @@ function remove_card(c) { } function pay_for_action(c) { + if (game.scenario === S46_ROCOUX) { + if (c === S46_THE_MOUTH_OF_HELL) { + // icky test for second reaction... + if (game.state === "screen") { + remove_cubes(c, 2) + return + } + } + } + if (data.cards[c].special) remove_cubes(c, 1) else @@ -730,6 +745,17 @@ function check_impossible_to_attack_victory() { return false } +function get_tactical_victory_points(p) { + let n = game.lost[1-p] + + if (game.scenario === S46_ROCOUX) { + if (p === 0) + n += get_sticks(S46_AUSTRIANS) + } + + return n +} + function check_victory() { let info = data.scenarios[game.scenario] @@ -750,8 +776,8 @@ function check_victory() { if (game.morale[1] === 0) return goto_game_over(P1, player_name(1) + " has run out of morale!") - let tv0 = info.players[1].lost - let tv1 = info.players[0].lost + let tv0 = get_tactical_victory_points(0) + let tv1 = get_tactical_victory_points(1) if (info.players[0].tactical > 0 && tv0 >= info.players[0].tactical) return goto_game_over(P1, player_name(0) + " tactical victory!") @@ -1653,6 +1679,7 @@ function check_cube_requirement(c, req) { return get_cubes(c) >= 3 case "Two Cubes": return get_cubes(c) >= 2 + case "One Cube*": case "Voluntary": case undefined: return get_cubes(c) >= 1 @@ -2086,7 +2113,7 @@ states.shift_to = { if (game.target2 < 0) { if (is_infantry(game.selected)) for (let c of game.front[p]) - if (c !== game.selected && is_infantry(c)) + if (c !== game.selected && is_infantry(c) && c !== S46_AUSTRIANS) gen_action_card(c) if (is_cavalry(game.selected)) for (let c of game.front[p]) |