summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules.js29
1 files changed, 26 insertions, 3 deletions
diff --git a/rules.js b/rules.js
index 33b87d8..2b7ade6 100644
--- a/rules.js
+++ b/rules.js
@@ -213,6 +213,11 @@ const S3201_LONGSTREET = find_card(3201, "Longstreet")
const S12_TOWTON = find_scenario(12)
const S13_EDGECOTE_MOOR = find_scenario(13)
+const S15_TEWKESBURY = find_scenario(15)
+const S15_A_PLUMP_OF_SPEARS = find_card(15, "A Plump of Spears")
+const S15_SOMERSET = find_card(15, "Somerset")
+const S15_WENLOCK = find_card(15, "Wenlock")
+
// === SETUP ===
exports.setup = function (seed, scenario, options) {
@@ -443,6 +448,10 @@ function is_card_in_play(c) {
)
}
+function is_routed(c) {
+ return !is_card_in_play(c)
+}
+
function is_card_attack_with_target_in_play(c) {
for (let a of data.cards[c].actions) {
if (a.type === "Attack") {
@@ -697,9 +706,9 @@ function can_place_dice(c) {
if (game.scenario === S8_BROOKLYN_HEIGHTS) {
if (c === S8_CLINTON) {
- if (!is_card_in_play(S8_GRANT))
+ if (is_routed(S8_GRANT))
return false
- if (!is_card_in_play(S8_HESSIANS))
+ if (is_routed(S8_HESSIANS))
return false
}
}
@@ -1298,7 +1307,7 @@ states.action = {
goto_fizzle(c)
},
roll() {
- push_undo()
+ clear_undo()
goto_roll_phase()
roll_dice_in_pool()
},
@@ -1412,6 +1421,13 @@ function goto_attack() {
}
}
+ if (game.scenario === S15_TEWKESBURY) {
+ if (game.target === S15_SOMERSET) {
+ if (has_any_dice_on_card(S15_A_PLUMP_OF_SPEARS))
+ game.hits += 1
+ }
+ }
+
if (card_has_rule(game.target, "suffer_1_less_1_max"))
game.hits = Math.max(0, Math.min(1, game.hits - 1))
if (card_has_rule(game.target, "suffer_1_less"))
@@ -1570,6 +1586,13 @@ function can_take_reaction(c, a) {
}
}
+ if (game.scenario === S15_TEWKESBURY) {
+ if (c === S15_WENLOCK) {
+ if (is_routed(S15_SOMERSET))
+ return false
+ }
+ }
+
if (data.cards[c].special)
return check_cube_requirement(c, a.requirement)
else