From a0c45f508147969b9f83070d973cf030e3af14ed Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Tue, 20 Aug 2024 14:31:48 +0200 Subject: dice images and colored rating numbers in log --- rules.js | 106 ++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 50 insertions(+), 56 deletions(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index 9446d70..fc283b9 100644 --- a/rules.js +++ b/rules.js @@ -2401,10 +2401,11 @@ states.intercept_roll = { }, roll() { clear_undo() - let g = game.intercept.who + let who = game.intercept.who let die = roll_d6() - if (die <= GENERALS[g].agility) { - log("Intercept G" + g + "\nrolled " + die + " <= " + GENERALS[g].agility + "\nfrom S" + game.intercept.from) + let agility = GENERALS[who].agility + if (die <= agility) { + log(`Intercept with G${who}\nD${die} \xd7 A${agility} from S${game.intercept.from}`) game.move.did_intercept = 1 move_army(game.intercept) @@ -2414,7 +2415,7 @@ states.intercept_roll = { else end_intercept() } else { - log("Intercept G" + g + "\nrolled " + die + " > " + GENERALS[g].agility + "\nfailure") + log(`Intercept with G${who}\nD${die} \xd7 A${agility} failed`) delete game.intercept if (can_intercept_to(game.move.to)) game.state = "intercept_who" @@ -2523,11 +2524,13 @@ states.retreat_before_battle_roll = { let who = game.retreat.who let to = game.retreat.to let agility = GENERALS[who].agility - if (GENERALS[who].bonus) - agility += 2 + let bonus = GENERALS[who].bonus ? 2 : 0 let roll = roll_d6() - if (roll <= agility) { - log("Retreat G" + who + "\nrolled " + roll + " <= " + agility + "\nto S" + to) + if (roll <= agility + bonus) { + if (bonus) + log(`Retreat with G${who}\nD${roll} \xd7 A${agility}+2R to S${to}`) + else + log(`Retreat with G${who}\nD${roll} \xd7 A${agility} to S${to}`) move_army(game.retreat) if (has_enemy_general(to)) capture_enemy_general(to) @@ -2536,7 +2539,10 @@ states.retreat_before_battle_roll = { delete game.retreat goto_remove_general_after_retreat_before_battle(to) } else { - log("Retreat G" + who + "\nrolled " + roll + " > " + agility + "\nfailure") + if (bonus) + log(`Retreat with G${who}\nD${roll} \xd7 A${agility}+2R failed`) + else + log(`Retreat with G${who}\nD${roll} \xd7 A${agility} failed`) delete game.retreat end_retreat_before_battle() } @@ -2803,10 +2809,9 @@ function gen_battle_card() { /* RESOLVE BATTLE */ -function roll_loser_combat_losses(log) { +function roll_loser_combat_losses(side) { let roll = roll_d6() let losses = 0 - log.push("Loser Combat Loss Roll: " + roll) switch (roll) { case 1: case 2: @@ -2821,14 +2826,13 @@ function roll_loser_combat_losses(log) { losses = 3 break } + log(`${side} LOSSES:\n${-losses} CU ( D${roll} )`) return losses } -function roll_winner_combat_losses(log, losing_general) { +function roll_winner_combat_losses(side, losing_general) { let agility = losing_general !== NOBODY ? GENERALS[losing_general].agility : 0 let roll = roll_d6() - log.push("Enemy Agility Rating: " + agility) - log.push("Winner Combat Loss Roll: " + roll) let losses = 0 switch (agility) { case 0: @@ -2844,6 +2848,10 @@ function roll_winner_combat_losses(log, losing_general) { losses = roll <= 4 ? 1 : 0 break } + if (losing_general === NOBODY) + log(`${side} LOSSES:\n${-losses} CU ( D${roll} \xd7 Nobody)`) + else + log(`${side} LOSSES:\n${-losses} CU ( D${roll} \xd7 A${agility} G${losing_general} )`) return losses } @@ -2883,6 +2891,7 @@ function apply_american_and_french_combat_losses(max) { function resolve_battle() { let a_log = [] let b_log = [] + let r_log = [] game.active = ENEMY[game.active] let b_g = find_british_general(game.move.to) @@ -2892,10 +2901,14 @@ function resolve_battle() { let b_br = 0 let a_br = 0 - if (b_g !== NOBODY) - b_log.push("General: G" + b_g) - if (a_g !== NOBODY) - a_log.push("General: G" + a_g) + let b_roll = roll_d6() + let a_roll = roll_d6() + + b_log.push("D" + b_roll + " Roll") + a_log.push("D" + a_roll + " Roll") + + b_log.push("+" + b_cu + " CU") + a_log.push("+" + a_cu + " CU") if (b_g !== NOBODY) { let roll = roll_d6() @@ -2903,7 +2916,7 @@ function resolve_battle() { b_br = Math.min(Math.floor(GENERALS[b_g].battle / 2), b_cu) else b_br = Math.min(GENERALS[b_g].battle, b_cu) - b_log.push("Actual Battle Rating Roll: " + roll) + b_log.push(`+${b_br} G${b_g} ( D${roll} \xd7 BB${GENERALS[b_g].battle} )`) } if (a_g !== NOBODY) { @@ -2912,14 +2925,12 @@ function resolve_battle() { a_br = Math.min(Math.floor(GENERALS[a_g].battle / 2), a_cu) else a_br = Math.min(GENERALS[a_g].battle, a_cu) - a_log.push("Actual Battle Rating Roll: " + roll) + if (a_g === ROCHAMBEAU) + a_log.push(`+${a_br} G${a_g} ( D${roll} \xd7 FB${GENERALS[a_g].battle} )`) + else + a_log.push(`+${a_br} G${a_g} ( D${roll} \xd7 AB${GENERALS[a_g].battle} )`) } - b_log.push("+" + b_cu + " CU") - a_log.push("+" + a_cu + " CU") - b_log.push("+" + b_br + " Actual Battle Rating") - a_log.push("+" + a_br + " Actual Battle Rating") - let b_drm = b_cu + b_br + game.combat.b_bonus if (has_flag(F_REGULARS)) { b_log.push("+1 British Regulars' Advantage") @@ -2958,18 +2969,14 @@ function resolve_battle() { a_log.push("+2 Battle Card") else if (game.combat.a_bonus === 1) a_log.push("+1 Discard of an Event Card") + if (game.move.did_intercept) { a_log.push("+1 Interception") a_drm += 1 } - let b_roll = roll_d6() - let a_roll = roll_d6() - - b_log.push("Battle Roll: " + b_roll) - b_log.push("Battle Total: " + (b_roll + b_drm)) - a_log.push("Battle Roll: " + a_roll) - a_log.push("Battle Total: " + (a_roll + a_drm)) + b_log.push("Total: " + (b_roll + b_drm)) + a_log.push("Total: " + (a_roll + a_drm)) if (game.combat.attacker === P_BRITAIN) { log("BRITISH ATTACK:\n" + b_log.join("\n")) @@ -2979,9 +2986,6 @@ function resolve_battle() { log("BRITISH DEFENSE:\n" + b_log.join("\n")) } - a_log = [] - b_log = [] - let victor if (game.active === P_BRITAIN) victor = b_roll + b_drm >= a_roll + a_drm ? P_BRITAIN : P_AMERICA @@ -2990,38 +2994,28 @@ function resolve_battle() { let a_lost_cu, b_lost_cu if (victor === P_BRITAIN) { - b_lost_cu = roll_winner_combat_losses(b_log, a_g) - a_lost_cu = roll_loser_combat_losses(a_log) + log("RESULT:\nBritish victory!") + b_lost_cu = roll_winner_combat_losses("BRITISH", a_g) + a_lost_cu = roll_loser_combat_losses("AMERICAN") } else { - b_lost_cu = roll_loser_combat_losses(b_log) - a_lost_cu = roll_winner_combat_losses(a_log, b_g) + log("RESULT:\nAmerican victory!") + a_lost_cu = roll_winner_combat_losses("AMERICAN", b_g) + b_lost_cu = roll_loser_combat_losses("BRITISH") } game.combat.british_losses = apply_british_combat_losses(b_lost_cu) let american_losses = apply_american_and_french_combat_losses(a_lost_cu) - b_log.push("Losses: " + game.combat.british_losses + " CU") - a_log.push("Losses: " + american_losses + " CU") - // Special case: winning general with no CU on enemy PC is captured if (victor === P_BRITAIN) { - log("RESULT:\nBritish victory!") if (b_g && count_british_cu(game.move.to) === 0 && has_american_pc(game.move.to)) capture_british_general(game.move.to) } else { - log("RESULT:\nAmerican victory!") if (a_g && count_american_and_french_cu(game.move.to) === 0 && has_british_pc(game.move.to)) capture_american_or_french_general(game.move.to) } - - if (game.combat.attacker === P_BRITAIN) { - log("BRITISH LOSSES:\n" + b_log.join("\n")) - log("AMERICAN LOSSES:\n" + a_log.join("\n")) - } else { - log("AMERICAN LOSSES:\n" + a_log.join("\n")) - log("BRITISH LOSSES:\n" + b_log.join("\n")) - } + log(r_log.join("\n")) if (victor === P_AMERICA) advance_french_alliance(1) @@ -3797,18 +3791,17 @@ states.george_washington_captured_during_move = { function apply_single_winter_attrition(remove_cu, space) { let die = roll_d6() - log("Roll " + die + " at S" + space) if (die <= 3) { - log(">Lost 1 CU") + log(`-1 CU at S${space} ( D${die} )`) remove_cu(space, 1) } else { - log(">Lost 0 CU") + log(`-0 CU at S${space} ( D${die} )`) } } function apply_winter_attrition(remove_cu, space, n) { let half = Math.floor(n / 2) - log("Lost " + half + " CU at S" + space + ".") + log(`-${half} CU at S${space}.`) remove_cu(space, half) } @@ -4187,6 +4180,7 @@ function resume_place_pc_markers_segment() { game.active = P_AMERICA game.state = "place_american_pc_markers_segment" } else if (has_british_place_pc_markers_segment()) { + log("=b Place PC Markers") game.active = P_BRITAIN game.state = "place_british_pc_markers_segment" } else { -- cgit v1.2.3