From 4d665cde4571c4621c6a0779e8b83f9bd10abb05 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 8 Nov 2024 23:57:27 +0100 Subject: log deals --- play.css | 14 ++++++++++++++ play.js | 8 ++++++++ rules.js | 46 ++++++++++++++++++++++++++-------------------- 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/play.css b/play.css index a597107..47de268 100644 --- a/play.css +++ b/play.css @@ -354,6 +354,20 @@ dialog button { #log div.i { padding-left: 32px; text-indent: -12px; } #log div.ii { padding-left: 44px; text-indent: -12px; } +#log div.deal { + font-style: italic; + border: 1px solid #0008; + background-color: #ede5a7; + padding: 4px 8px; + text-indent: 0; + margin: 0 8px; +} + +#log div.deal.rejected { + color: #0008; + text-decoration: line-through; +} + #log span.suit { font-size: 11px; } span.value { padding: 0 1px } diff --git a/play.js b/play.js index 80acf4f..9ad4ede 100644 --- a/play.js +++ b/play.js @@ -1716,6 +1716,14 @@ function on_log(text) { p.className = "q" text = political_cards[text.substring(1)].flavor } + else if (text.startsWith("{")) { + p.className = "deal" + text = text.substring(1) + } + else if (text.startsWith("}")) { + p.className = "deal rejected" + text = text.substring(1) + } p.innerHTML = text return p diff --git a/rules.js b/rules.js index ffafa20..807440f 100644 --- a/rules.js +++ b/rules.js @@ -1139,24 +1139,20 @@ function tc_per_turn_modifier() { return n } -function tc_per_turn() { - return tc_per_turn_base() + tc_per_turn_modifier() -} - function count_subsidies(pow) { let n = 0 - if (game.contracts[game.power]) + if (game.contracts[pow]) for (let other of all_powers) - if (map_get(game.contracts[game.power], other, 0) > 0) + if (map_get(game.contracts[pow], other, 0) > 0) ++n return n } function list_subsidies(pow) { let result = [] - if (game.contracts[game.power]) + if (game.contracts[pow]) for (let other of all_powers) - if (map_get(game.contracts[game.power], other, 0) > 0) + if (map_get(game.contracts[pow], other, 0) > 0) result.push(power_name[other]) return result } @@ -1361,7 +1357,7 @@ function goto_start_turn() { } // remove expired deals - game.deals = game.deals.filter(deal => deal[DI_TURN] < game.turn) + game.deals = game.deals.filter(deal => deal[DI_TURN] >= game.turn) } function goto_end_turn() { @@ -1742,7 +1738,7 @@ function log_draw_tc(k, pow) { } } -function draw_tc(draw, n, pow) { +function draw_tc(draw, n) { let k = 0 while (n > 0) { if (game.deck.length === 0) { @@ -1768,8 +1764,8 @@ function give_subsidy(other) { log(">1 Saxony subsidy lost\nS" + DRESDEN + " is enemy controlled") return } - draw_tc(game.hand2[other], 1, other) log(">1 " + power_name[other] + " subsidy") + draw_tc(game.hand2[other], 1) } function goto_tactical_cards() { @@ -1857,7 +1853,7 @@ function draw_tactical_cards() { else log(`>${n} ${power_name[game.power]}`) - draw_tc(game.draw, base + mod - sub, game.power) + draw_tc(game.draw, base + mod - sub) if (game.contracts[game.power]) { for (let other of all_powers) { @@ -4510,7 +4506,7 @@ function goto_politics() { } else { for (;;) { let list = [] - draw_tc(list, 1, -1) + draw_tc(list, 1) log("Trump " + format_card(list[0]) + ".") if (!is_reserve(list[0])) { game.trump = to_suit(list[0]) @@ -4679,7 +4675,7 @@ states.must_save_tc = { view.actions.save = 1 }, save() { - log(power_name[game.power] + " saved her TC.") + log(power_name[game.power] + " saved TC.") goto_select_political_card() }, } @@ -4712,7 +4708,7 @@ states.select_political_card = { game.state = "political_card_discard_or_execute" }, save() { - log(power_name[game.power] + " saved her TC.") + log(power_name[game.power] + " saved TC.") goto_select_political_card() }, } @@ -4727,7 +4723,7 @@ states.political_card_discard_or_execute = { }, execute() { push_undo() - log(power_name[game.power] + " executes card.") + log(power_name[game.power] + " executed card.") next_execute_political_card() }, discard() { @@ -4906,6 +4902,7 @@ states.political_troop_power = { set_active_to_power(pow) if (info.tcs > 0) { clear_undo() // reveal random cards + log(power_name[pow] + " TC.") draw_tc(game.draw = [], info.tcs, game.power) game.state = "political_troops_draw" } else { @@ -6274,6 +6271,15 @@ function goto_propose_deal(deal) { game.state = "accept_deal_from" } +function log_deal(deal, prefix, postfix = "") { + log(prefix + + "Deal until " + turn_name[deal[DI_TURN]] + ".\n" + + power_name[deal[DI_A_POWER]] + ": " + deal[DI_A_PROMISE] + "\n" + + power_name[deal[DI_B_POWER]] + ": " + deal[DI_B_PROMISE] + "\n" + + postfix + ) +} + states.accept_deal_from = { inactive: "accept deal", prompt() { @@ -6313,14 +6319,14 @@ states.accept_deal_to = { } function end_accept_deal(okay) { - let from = game.proposal.deal[DI_A_POWER] - let to = game.proposal.deal[DI_B_POWER] if (okay) { - log(`Accepted ${power_name[from]} - ${power_name[to]} deal.`) + log_deal(game.proposal.deal, "{") game.deals.push(game.proposal.deal) } else { - log(`Rejected ${power_name[from]} - ${power_name[to]} deal.`) + log_deal(game.proposal.deal, "}", "Rejected by " + power_name[game.power] + ".") } + log_br() + set_active_to_power(game.proposal.save_power) game.state = game.proposal.save_state delete game.proposal -- cgit v1.2.3