diff options
-rw-r--r-- | about.html | 7 | ||||
-rw-r--r-- | rules.js | 62 |
2 files changed, 66 insertions, 3 deletions
@@ -1,6 +1,9 @@ <p> -Unlicensed game prototype! - +Washington's War is a two player, strategic level simulation of the American +Revolution. By way of the game mechanics, the players attempt to initiate, +control, weather or exploit a wide variety of diplomatic, political, cultural +and military events in order to either help the United States win its +independence or to retain the 13 colonies as British dominions. <ul> <li><a href="/washingtons-war/info/rulebook.html">Rulebook</a> @@ -1093,6 +1093,7 @@ function goto_start_year() { } states.british_declare_first = { + inactive: "to declare first player", prompt() { view.prompt = "Declare yourself as the first player by playing a campaign card?" view.actions.pass = 1 @@ -1121,6 +1122,7 @@ states.british_declare_first = { } states.choose_first_player = { + inactive: "to declare first player", prompt() { view.prompt = "Choose who will play the first strategy card." view.actions.america_first = 1 @@ -1369,6 +1371,7 @@ function end_strategy_card() { } states.end_strategy_card = { + inactive: "to finish the card play", prompt() { view.prompt = "Card play done." view.actions.next = 1 @@ -1411,6 +1414,7 @@ function clear_queue() { /* DISCARD EVENT CARD FOR PC ACTION */ states.discard_event_pc_action = { + inactive: "to take a PC action", prompt() { view.prompt = "Place, flip, or remove PC marker." view.actions.pass = 1 @@ -1482,6 +1486,7 @@ function goto_ops_pc(count) { } states.ops_pc = { + inactive: "to take a PC action", prompt() { view.prompt = "Place or flip PC markers. " + game.count + " left." view.actions.pass = 1 @@ -1636,6 +1641,7 @@ function goto_ops_reinforcements(c) { } states.ops_british_reinforcements_who = { + inactive: "to reinforce", prompt() { view.prompt = "Reinforcements: Choose an available general." view.prompt += " " + game.count + " British CU." @@ -1665,6 +1671,7 @@ states.ops_british_reinforcements_who = { } states.ops_british_reinforcements_where = { + inactive: "to reinforce", prompt() { view.prompt = "Reinforcements: Choose a port space." view.prompt += " " + game.count + " British CU." @@ -1691,6 +1698,7 @@ states.ops_british_reinforcements_where = { } states.ops_american_reinforcements_who = { + inactive: "to reinforce", prompt() { view.prompt = "Reinforcements: Choose an available general." view.move = { from: AMERICAN_REINFORCEMENTS, to: AMERICAN_REINFORCEMENTS, who: NOBODY, carry_american: game.count } @@ -1710,6 +1718,7 @@ states.ops_american_reinforcements_who = { } states.ops_american_reinforcements_where = { + inactive: "to reinforce", prompt() { view.prompt = "Reinforcements: Choose a space." view.move = { from: AMERICAN_REINFORCEMENTS, to: AMERICAN_REINFORCEMENTS, who: game.who, carry_american: game.count } @@ -1788,6 +1797,7 @@ function goto_ops_general(c) { } states.ops_general_who = { + inactive: "to move", prompt() { let land = can_use_landing_party() if (land) @@ -1818,6 +1828,7 @@ states.ops_general_who = { } states.landing_party = { + inactive: "to move", prompt() { view.prompt = "Campaign: Flip or place a PC in a port." gen_landing_party() @@ -1884,6 +1895,7 @@ function goto_remove_general(where) { } states.remove_general = { + inactive: "to remove a general", prompt() { view.prompt = "Remove a general to the reinforcements box." gen_remove_general(game.where) @@ -1904,6 +1916,7 @@ function goto_remove_general_after_intercept() { } states.remove_general_after_intercept = { + inactive: "to remove a general", prompt() { view.prompt = "Remove a general to the reinforcements box." gen_remove_general(game.move.to) @@ -1919,6 +1932,7 @@ states.remove_general_after_intercept = { } states.remove_general_after_intercept_confirm = { + inactive: "to remove a general", prompt() { view.prompt = "Intercept done." view.actions.next = 1 @@ -1935,6 +1949,7 @@ function goto_remove_general_after_retreat(where) { } states.remove_general_after_retreat = { + inactive: "to remove a general", prompt() { view.prompt = "Remove a general to the reinforcements box." gen_remove_general(game.where) @@ -2028,6 +2043,7 @@ function format_move_prompt() { } states.ops_general_move = { + inactive: "to move", prompt() { format_move_prompt() view.prompt += " " + game.move.count + " MP left." @@ -2140,6 +2156,7 @@ states.ops_general_move = { } states.confirm_move_intercept = { + inactive: "to move", prompt() { format_move_prompt() view.prompt += " You may be intercepted." @@ -2152,6 +2169,7 @@ states.confirm_move_intercept = { } states.confirm_move_battle = { + inactive: "to move", prompt() { format_move_prompt() view.prompt += " Approach battle?" @@ -2335,6 +2353,7 @@ function goto_intercept() { } states.intercept_who = { + inactive: "to intercept", prompt() { view.prompt = "Intercept " + general_name(game.move.who) + " at " + space_name(game.move.to) + "?" view.actions.pass = 1 @@ -2363,6 +2382,7 @@ states.intercept_who = { } states.intercept_roll = { + inactive: "to intercept", prompt() { view.prompt = "Intercept " + general_name(game.move.who) + " at " + space_name(game.move.to) + " with " + general_name(game.intercept.who) + "?" view.selected_general = game.intercept.who @@ -2456,6 +2476,7 @@ function goto_retreat_before_battle() { } states.retreat_before_battle = { + inactive: "to retreat before battle", prompt() { view.prompt = "Attempt retreat before battle?" view.selected_general = find_american_or_french_general(game.move.to) @@ -2480,6 +2501,7 @@ states.retreat_before_battle = { } states.retreat_before_battle_roll = { + inactive: "to retreat before battle", prompt() { view.prompt = "Attempt retreat before battle?" view.selected_general = find_american_or_french_general(game.move.to) @@ -2521,6 +2543,7 @@ function goto_remove_general_after_retreat_before_battle(where) { } states.remove_general_after_retreat_before_battle = { + inactive: "to remove a general", prompt() { view.prompt = "Remove a general to the reinforcements box." gen_remove_general(game.where) @@ -2562,6 +2585,7 @@ function remove_benedict_arnold() { } states.remove_benedict_arnold_attacker = { + inactive: "to remove Arnold", prompt() { view.prompt = "Remove Benedict Arnold from the game!" gen_action_general(ARNOLD) @@ -2573,6 +2597,7 @@ states.remove_benedict_arnold_attacker = { } states.remove_benedict_arnold_defender = { + inactive: "to remove Arnold", prompt() { view.prompt = "Remove Benedict Arnold from the game!" gen_action_general(ARNOLD) @@ -2590,6 +2615,7 @@ function goto_play_attacker_battle_card() { } states.play_attacker_battle_card = { + inactive: "to play a battle card", prompt() { view.prompt = "Attack: Play or discard event for DRM." view.actions.pass = 1 @@ -2634,6 +2660,7 @@ states.play_attacker_battle_card = { } states.play_attacker_battle_card_confirm = { + inactive: "to play a battle card", prompt() { let drm = (game.active === P_BRITAIN) ? game.combat.b_bonus : game.combat.a_bonus view.prompt = `Attack: +${drm} DRM.` @@ -2660,6 +2687,7 @@ function goto_play_defender_battle_card() { } states.play_defender_battle_card = { + inactive: "to play a battle card", prompt() { view.prompt = "Defend: Play or discard event for DRM." view.actions.pass = 1 @@ -2704,6 +2732,7 @@ states.play_defender_battle_card = { } states.play_defender_battle_card_confirm = { + inactive: "to play a battle card", prompt() { let drm = (game.active === P_BRITAIN) ? game.combat.b_bonus : game.combat.a_bonus if (drm > 1) @@ -3084,6 +3113,7 @@ function goto_retreat_after_battle(victor) { } states.retreat_after_battle = { + inactive: "to retreat after battle", prompt() { view.prompt = "Retreat after battle." if (game.active === game.combat.attacker) @@ -3124,6 +3154,7 @@ states.retreat_after_battle = { } states.retreat_after_battle_confirm = { + inactive: "to retreat after battle", prompt() { view.prompt = "Retreat after battle: Done." view.actions.next = 1 @@ -3217,8 +3248,9 @@ events.baron_von_steuben_trains_the_continental_army = function (c, card) { } states.baron_von_steuben_trains_the_continental_army = { + inactive: "to execute event", prompt() { - view.prompt = "Baron von Steuben. Place 2 CU with Washington." + view.prompt = "Baron von Steuben: Place 2 CU with Washington." gen_action_general(WASHINGTON) // TODO: lose regulars manual? }, @@ -3251,6 +3283,7 @@ events.remove_british_pc_from = function (c, card) { } states.remove_british_pc_from = { + inactive: "to execute event", prompt() { view.prompt = "Remove British PC markers from " + game.where.map(colony_name).join(", ") + ". " + game.count + " left." view.actions.pass = 1 @@ -3280,6 +3313,7 @@ events.remove_american_pc = function (c, card) { } states.remove_american_pc = { + inactive: "to execute event", prompt() { view.prompt = "Remove American PC markers. " + game.count + " left." view.actions.pass = 1 @@ -3307,6 +3341,7 @@ events.remove_american_pc_from = function (c, card) { } states.remove_american_pc_from = { + inactive: "to execute event", prompt() { view.prompt = "Remove American PC markers from " + game.where.map(colony_name).join(", ") + ". " + game.count + " left." for (let colony of game.where) @@ -3337,6 +3372,7 @@ events.remove_american_pc_from_non_port = function (c, card) { } states.remove_american_pc_from_non_port = { + inactive: "to execute event", prompt() { view.prompt = "Remove American PC markers from non-Port space in " + game.where.map(colony_name).join(", ") + ". " + game.count + " left." for (let colony of game.where) { @@ -3390,6 +3426,7 @@ function gen_remove_american_pc_within_two_spaces_of_a_british_general() { } states.remove_american_pc_within_two_spaces_of_a_british_general = { + inactive: "to execute event", prompt() { view.prompt = "Remove American PC markers within two spaces of a British general. " + game.count + " left." view.actions.pass = 1 @@ -3416,6 +3453,7 @@ events.place_american_pc = function (c, card) { } states.place_american_pc = { + inactive: "to execute event", prompt() { view.prompt = "Place American PC markers. " + game.count + " left." for (let space of all_spaces) @@ -3441,6 +3479,7 @@ events.place_american_pc_in = function (c, card) { } states.place_american_pc_in = { + inactive: "to execute event", prompt() { view.prompt = "Place American PC markers in " + game.where.join(", ") + ". " + game.count + " left." view.actions.pass = 1 @@ -3466,6 +3505,7 @@ events.lord_sandwich_coastal_raids = function (c, card) { } states.lord_sandwich_coastal_raids = { + inactive: "to execute event", prompt() { view.prompt = "Remove two or flip one American PC in a port space." view.actions.pass = 1 @@ -3502,6 +3542,7 @@ events.remove_american_cu = function (c, card) { } states.remove_american_cu = { + inactive: "to execute event", prompt() { view.prompt = "Remove one American CU from any space." for (let space of all_spaces) @@ -3527,6 +3568,7 @@ events.remove_british_cu = function (c, card) { } states.remove_british_cu = { + inactive: "to execute event", prompt() { view.prompt = "Remove " + game.count + " British CU from any space." for (let space of all_spaces) @@ -3552,6 +3594,7 @@ events.pennsylvania_and_new_jersey_line_mutinies = function (c, card) { } states.pennsylvania_and_new_jersey_line_mutinies = { + inactive: "to execute event", prompt() { view.prompt = "Remove two American CUs from the map, one each from two different spaces." view.actions.pass = 1 @@ -3585,6 +3628,7 @@ events.john_glovers_marblehead_regiment = function (c, card) { } states.john_glovers_marblehead_regiment_who = { + inactive: "to execute event", prompt() { view.prompt = "Activate an American general." gen_activate_general() @@ -3602,6 +3646,7 @@ events.declaration_of_independence = function (c, card) { } states.declaration_of_independence = { + inactive: "to place PC markers", prompt() { if (game.colonies.length > 0) { view.prompt = "Declaration of Independence: Place a PC marker in " @@ -3667,6 +3712,7 @@ function goto_george_washington_captured() { } states.george_washington_captured = { + inactive: "to remove PC markers", prompt() { view.prompt = "George Washington captured! Remove American PC markers. " + game.count + " left." for (let space of all_spaces) @@ -3687,6 +3733,7 @@ states.george_washington_captured = { } states.george_washington_captured_done = { + inactive: "to remove PC markers", prompt() { view.prompt = "George Washington captured! Remove American PC markers. Done." view.actions.next = 1 @@ -3716,6 +3763,7 @@ function goto_george_washington_captured_during_move() { } states.george_washington_captured_during_move = { + inactive: "to remove PC markers", prompt() { view.prompt = "George Washington captured! Remove American PC markers. " + game.count + " left." for (let space of all_spaces) @@ -3829,6 +3877,7 @@ function end_british_winter_attrition() { } states.american_winter_attrition = { + inactive: "to take winter attrition", prompt() { if (game.attrition.length > 0) { view.prompt = "Winter Attrition." @@ -3891,6 +3940,7 @@ states.american_winter_attrition = { } states.british_winter_attrition = { + inactive: "to take winter attrition", prompt() { if (game.attrition.length > 0) { view.prompt = "Winter Attrition." @@ -3944,6 +3994,7 @@ const ZONE_NAME = [ ] states.place_french_navy_trigger = { + inactive: "to place French navy", prompt() { view.prompt = "Place the French Navy in a blockade zone." gen_place_french_navy() @@ -3974,6 +4025,7 @@ function goto_place_rochambeau() { } states.place_rochambeau = { + inactive: "to place Rochambeau", prompt() { view.prompt = "Place Rochambeau in a port." view.move = { who: ROCHAMBEAU, from: FRENCH_REINFORCEMENTS, to: FRENCH_REINFORCEMENTS, carry_american: 0, carry_french: 5 } @@ -3996,6 +4048,7 @@ states.place_rochambeau = { } states.remove_general_rochambeau = { + inactive: "to remove a general", prompt() { let where = location_of_general(ROCHAMBEAU) view.prompt = "Remove a general to the reinforcements box." @@ -4013,6 +4066,7 @@ states.remove_general_rochambeau = { } states.end_place_rochambeau = { + inactive: "to place Rochambeau", prompt() { let where = location_of_general(ROCHAMBEAU) view.move = { who: ROCHAMBEAU, from: where, to: where, carry_american: 0, carry_french: 5 } @@ -4031,6 +4085,7 @@ function end_place_rochambeau() { } states.place_french_navy = { + inactive: "to place French navy", prompt() { view.prompt = "Place the French Navy in a blockade zone." gen_place_french_navy() @@ -4068,6 +4123,7 @@ function gen_place_continental_congress() { } states.return_continental_congress = { + inactive: "to return the continental congress", prompt() { view.prompt = "Return Continental Congress to a space in the 13 colonies." if (gen_place_continental_congress() === 0) @@ -4129,6 +4185,7 @@ function resume_place_pc_markers_segment() { } states.place_american_pc_markers_segment = { + inactive: "to place PC markers", prompt() { let done = true for (let space of all_spaces) { @@ -4159,6 +4216,7 @@ states.place_american_pc_markers_segment = { } states.place_british_pc_markers_segment = { + inactive: "to place PC markers", prompt() { let done = true for (let space of all_spaces) { @@ -4304,6 +4362,7 @@ function goto_remove_isolated_british_pc_segment() { } states.remove_isolated_pc_segment = { + inactive: "to remove isolated PC markers", prompt() { if (game.isolated.length > 0) { view.prompt = "Remove isolated PC markers. " + game.isolated.length + " left." @@ -4363,6 +4422,7 @@ function goto_end_phase() { /* END PHASE: EUROPEAN WAR */ states.european_war = { + inactive: "to remove 2 British CUs", prompt() { view.prompt = "European War: Remove 2 British CU from any spaces. " + game.count + " left." for (let space of all_spaces) |