diff options
author | Tor Andersson <tor@ccxvii.net> | 2023-10-12 19:01:14 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2023-10-12 19:01:14 +0200 |
commit | ddecff58940daac435a3ba9477c71f50234fa7eb (patch) | |
tree | 130ce5f728065cc3fbc0b0af2d0ea4e362f8cde9 | |
parent | fbdde950647e16e4997f36b935ffaba04f3a50af (diff) | |
download | crusader-rex-ddecff58940daac435a3ba9477c71f50234fa7eb.tar.gz |
Make delayed hits default behavior.
Add immediate hits as a (hidden) option.
-rw-r--r-- | create.html | 8 | ||||
-rw-r--r-- | rules.js | 50 |
2 files changed, 30 insertions, 28 deletions
diff --git a/create.html b/create.html index 80dc869..a170e57 100644 --- a/create.html +++ b/create.html @@ -7,11 +7,13 @@ Iron Bridge <dd>The road between Antioch and Harim has a move limit of 3. </dl> +<!-- <dl> <dt> <label> -<input type="checkbox" id="delay_hits" name="delay_hits" value="true"> -Delayed hit assignment +<input type="checkbox" id="immediate" name="immediate" value="true"> +Assign hits immediately </label> -<dd>Fire all blocks with the same initiative before assigning hits. +<dd><i>Note: This will slow down async play significantly! </dl> +--> @@ -2759,15 +2759,15 @@ function count_enemy_hp_in_siege() { } function must_apply_field_hits() { - if (game.delay_hits) - return game.hits >= count_enemy_hp_in_field() - return game.hits > 0 + if (game.immediate) + return game.hits > 0 + return game.hits >= count_enemy_hp_in_field() } function must_apply_siege_hits() { - if (game.delay_hits) - return game.hits >= count_enemy_hp_in_siege() - return game.hits > 0 + if (game.immediate) + return game.hits > 0 + return game.hits >= count_enemy_hp_in_siege() } function filter_battle_blocks(ci, is_candidate) { @@ -2789,7 +2789,7 @@ function battle_step(active, initiative, candidate) { if (game.battle_list) { if (game.active !== active) { game.active = active - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { goto_battle_hits() } } @@ -2827,7 +2827,7 @@ function pump_battle_step(is_candidate_attacker, is_candidate_defender) { if (battle_step(attacker, 'C', is_candidate_attacker)) return } - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { game.active = enemy(game.active) return goto_battle_hits() } @@ -2854,7 +2854,7 @@ function resume_field_battle() { game.active = game.attacker[game.where] if (is_friendly_field(game.where)) { - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { game.active = enemy(save_active) return goto_field_battle_hits() } @@ -2865,7 +2865,7 @@ function resume_field_battle() { } if (is_enemy_field(game.where)) { - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { game.active = enemy(save_active) return goto_field_battle_hits() } @@ -2877,7 +2877,7 @@ function resume_field_battle() { } if (is_enemy_battle_field()) { - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { game.active = enemy(save_active) return goto_field_battle_hits() } @@ -2887,7 +2887,7 @@ function resume_field_battle() { } if (is_friendly_battle_field()) { - if (game.delay_hits && game.hits > 0) { + if (game.hits > 0) { game.active = enemy(save_active) return goto_field_battle_hits() } @@ -2938,7 +2938,7 @@ states.field_battle = { if (block_owner(b) === FRANKS && block_initiative(b) === 'B') gen_action(view, 'charge', b) } - if (game.delay_hits && game.hits > 0) + if (game.hits > 0) gen_action(view, 'assign') }, assign: function () { @@ -3014,7 +3014,7 @@ states.siege_battle = { if (set_has(game.storming, b)) gen_action(view, 'retreat', b) } - if (game.delay_hits && game.hits > 0) + if (game.hits > 0) gen_action(view, 'assign') }, assign: function () { @@ -3201,15 +3201,7 @@ function roll_attack(active, b, verb, is_charge) { log(active[0] + ": " + name + " " + verb + " " + rolls.join("") + ".") - if (game.delay_hits) { - game.flash = name + " " + verb + " " + rolls.join(" ") - if (game.hits === 0) - game.flash += "." - else if (game.hits === 1) - game.flash += " for a total of 1 hit." - else - game.flash += " for a total of " + game.hits + " hits." - } else { + if (game.immediate) { game.flash = name + " " + verb + " " + rolls.join(" ") + " " if (game.hits === 0) game.flash += "and missed." @@ -3217,6 +3209,14 @@ function roll_attack(active, b, verb, is_charge) { game.flash += "and scored 1 hit." else game.flash += "and scored " + game.hits + " hits." + } else { + game.flash = name + " " + verb + " " + rolls.join(" ") + if (game.hits === 0) + game.flash += "." + else if (game.hits === 1) + game.flash += " for a total of 1 hit." + else + game.flash += " for a total of " + game.hits + " hits." } if (self > 0) { @@ -3856,8 +3856,8 @@ exports.setup = function (seed, scenario, options) { log("") } - if (options && options.delay_hits) - game.delay_hits = 1 + if (options && options.immediate) + game.immediate = 1 setup_game() return game |