From 431332295ee2b49299c1c8a501882ca1ed3a8386 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sun, 2 May 2021 14:17:49 +0200 Subject: 300: leonidas --- rules.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/rules.js b/rules.js index 652aff8..a13dbde 100644 --- a/rules.js +++ b/rules.js @@ -2178,11 +2178,33 @@ function play_oracle_of_delphi() { } function can_play_leonidas() { - return greek_can_land_move(); + return !game.trigger.leonidas && greek_can_land_move(); } function play_leonidas() { - game.state = 'leonidas'; + if (count_greek_armies(RESERVE) > 0) { + game.trigger.leonidas = 1; + remove_greek_army(RESERVE); + game.state = 'leonidas'; + } else { + game.state = 'leonidas_pay'; + } +} + +states.leonidas_pay = { + prompt: function (view, current) { + if (is_inactive_player(current)) + return view.prompt = "Leonidas."; + view.prompt = "Leonidas: Remove one Greek army to pay for the event."; + gen_greek_armies(view); + }, + city: function (space) { + push_undo(); + log("Greece removes 1 army in " + space + "."); + game.trigger.leonidas = 1; + remove_greek_army(space); + game.state = 'leonidas'; + }, } states.leonidas = { @@ -2191,10 +2213,12 @@ states.leonidas = { return view.prompt = "Leonidas."; view.prompt = "Leonidas: Select one Greek army and move it."; gen_greek_land_movement(view); + gen_action_undo(view); }, city: function (space) { goto_greek_land_movement_leonidas(space); }, + undo: pop_undo, } function can_play_evangelion() { -- cgit v1.2.3