diff options
-rw-r--r-- | play.html | 3 | ||||
-rw-r--r-- | rules.js | 61 | ||||
-rw-r--r-- | ui.js | 5 |
3 files changed, 48 insertions, 21 deletions
@@ -309,6 +309,9 @@ div.card_3{background-image:url('cards/card_3.jpg')} <button id="end_disbanding_button" onclick="on_button_end_disbanding()" class="hide"> End disbanding </button> + <button id="winter_button" onclick="on_button_winter()" class="hide"> + Winter + </button> <button id="disband_button" onclick="on_button_disband()" class="hide"> Disband </button> @@ -2217,7 +2217,7 @@ function goto_moray() { delete game.bruce_home; delete game.comyn_home; - if (is_on_map(MORAY)) { + if (is_on_map(MORAY) && game.location[MORAY] != "Moray" && is_friendly_or_neutral_area("Moray")) { game.state = 'moray'; game.active = SCOTLAND; game.who = MORAY; @@ -2230,12 +2230,9 @@ states.moray = { prompt: function (view, current) { if (is_inactive_player(current)) return view.prompt = "Waiting for Scotland to move Moray."; - view.prompt = "Nobles go Home: Move Moray to his home area, remain where he is, or disband."; - gen_action(view, 'disband'); - if (is_within_castle_limit(game.location[MORAY])) - gen_action(view, 'area', game.location[MORAY]); - if (is_friendly_or_neutral_area("Moray")) - gen_action(view, 'area', "Moray"); + view.prompt = "Nobles go Home: Move Moray to his home area or remain where he is."; + gen_action(view, 'area', game.location[MORAY]); + gen_action(view, 'area', "Moray"); }, disband: function () { game.turn_log.push(["Moray", "Pool"]); @@ -2253,10 +2250,18 @@ states.moray = { }, } +function king_can_go_home(current) { + for (let where in AREAS) + if (where != current && is_cathedral_area(where)) + if (is_friendly_or_neutral_area(where)) + return true; + return false; +} + function goto_scottish_king() { print_turn_log_no_count("Scottish nobles go home:"); - if (is_on_map(KING)) { + if (is_on_map(KING) && king_can_go_home(game.location[KING])) { game.state = 'scottish_king'; game.active = SCOTLAND; game.who = KING; @@ -2269,10 +2274,8 @@ states.scottish_king = { prompt: function (view, current) { if (is_inactive_player(current)) return view.prompt = "Waiting for Scotland to move the King."; - view.prompt = "Scottish King: Move the King to a cathedral, remain where he is, or disband."; - gen_action(view, 'disband'); - if (is_within_castle_limit(game.location[KING])) - gen_action(view, 'area', game.location[KING]); + view.prompt = "Scottish King: Move the King to a cathedral or remain where he is."; + gen_action(view, 'area', game.location[KING]); for (let where in AREAS) { if (is_cathedral_area(where)) if (is_friendly_or_neutral_area(where)) @@ -2321,26 +2324,42 @@ function goto_edward_wintering() { goto_english_disbanding(); } +function disband_edward() { + log("Edward disbands."); + disband(EDWARD); + game.who = null; + game.wintered_last_year = false; + goto_english_disbanding(); +} + +function winter_edward() { + log("Edward winters in " + game.location[EDWARD] + "."); + game.who = null; + game.wintered_last_year = true; + goto_english_disbanding(); +} + states.edward_wintering = { prompt: function (view, current) { if (is_inactive_player(current)) return view.prompt = "Waiting for England to winter in Scotland or disband."; view.prompt = "Edward Wintering: Winter in Scotland or disband."; + gen_action(view, 'winter'); gen_action(view, 'disband'); gen_action(view, 'area', game.location[EDWARD]); + gen_action(view, 'area', ENGLAND); + }, + winter: function (to) { + winter_edward(); }, disband: function () { - log("Edward disbands."); - disband(EDWARD); - game.who = null; - game.wintered_last_year = false; - goto_english_disbanding(); + disband_endward(); }, area: function (to) { - log("Edward winters in " + to + "."); - game.who = null; - game.wintered_last_year = true; - goto_english_disbanding(); + if (to == ENGLAND) + disband_edward(); + else + winter_edward(); }, } @@ -202,6 +202,10 @@ function on_button_disband(evt) { send_action('disband'); } +function on_button_winter(evt) { + send_action('winter'); +} + function on_button_end_disbanding(evt) { send_action('end_disbanding'); } @@ -711,6 +715,7 @@ function on_update(state, player) { show_action_button("#end_move_phase_button", "end_move_phase"); show_action_button("#end_regroup_button", "end_regroup"); show_action_button("#end_retreat_button", "end_retreat"); + show_action_button("#winter_button", "winter"); show_action_button("#eliminate_button", "eliminate"); show_action_button("#disband_button", "disband"); show_action_button("#end_disbanding_button", "end_disbanding"); |