diff options
-rw-r--r-- | events.txt | 175 | ||||
-rw-r--r-- | play.css | 2 | ||||
-rw-r--r-- | play.js | 10 | ||||
-rw-r--r-- | rules.js | 591 |
4 files changed, 453 insertions, 325 deletions
@@ -1,41 +1,41 @@ CARD 1 - Legacy of Martial Law* # Replace 1 Democratic SP with a Communist SP in Poland and make a Support Check using the Ops value of this card in Poland. +permanently_remove valid_spaces_country_opp 'Poland' prompt 'replace 1 Democratic SP in Poland with a Communist SP' legacy_of_martial_law valid_spaces_country_sc 'Poland' prompt 'make a Support Check in Poland' 1_support_check -permanently_remove CARD 2 - Solidarity Legalised* # Place a Democratic SP in every uncontrolled Worker and Farmer space in Poland. Allows play of Walesa. +permanently_remove solidarity_legalised valid_spaces_solidarity_legalised prompt 'to every uncontrolled Worker and Farmer space in Poland' add_limited_infl 9 1 -permanently_remove CARD 3 - Walesa # Place a total of 4 SPs in any spaces(s) in Poland. The Democratic Player may then may Support Checks in Poland using the Ops value of this card. Requires Solidarity Legalized* to be played as event. +permanently_remove valid_spaces_country 'Poland' prompt 'any space(s) in Poland' add_infl_free 4 valid_spaces_country_sc 'Poland' prompt 'make Support Checks in Poland' support_check 2 -permanently_remove CARD 4 - Michnik # Place 3 Democratic SPs in the Polish Intellectuals space. +permanently_remove valid_spaces 26 prompt 'the Polish Intellectuals space' add_x_infl 3 -permanently_remove CARD 5 - General strike @@ -50,9 +50,9 @@ brought_in_for_questioning CARD 7 - State Run Media* # Remove four Democratic SPs, no more than 2 per space. +permanently_remove valid_spaces_opponent remove_limited_opp_infl 4 2 -permanently_remove CARD 8 - Prudence @@ -62,18 +62,20 @@ prudence CARD 9 - The Wall* # Place in front of the Communist Player. In his next Support Check in Germany cancel drm for any adjacent spaces controlled by the Democratic Player. -the_wall permanently_remove +the_wall CARD 10 - Cult of Personality # Place 4 Communist SPs in Worker or Farmer spaces in Romania, no more than 2 per space. +permanently_remove if !game.the_tyrant_is_gone valid_spaces_country_socio_2 'Romania', 3, 4 prompt 'Worker or Farmer spaces in Romania, no more than 2 per space' add_limited_infl 4 2 +else +tyrant_block endif -permanently_remove CARD 11 - Dissident arrested @@ -85,16 +87,16 @@ remove_x_opp_infl 2 CARD 12 - Apparatchicks # Place 3 Communist SPs in any Bureaucratic space(s). +permanently_remove valid_spaces_socio 2 prompt ' to any Bureaucratic space(s)' add_infl_free 3 -permanently_remove CARD 13 - Stasi # For the rest this turn the Democratic Player must reveal the card he will play this action round before the Communist plays his card. -stasi permanently_remove +stasi CARD 14 - Gorbachev Charms the West @@ -114,8 +116,8 @@ honecker CARD 16 - Nomenklatura* # Place 3 SPs in any Elite space(s), or remove all Democratic SPs from Elite spaces. -nomenklatura permanently_remove +nomenklatura CARD 17 - Roundtable talks @@ -125,18 +127,18 @@ roundtable_talks CARD 18 - Poszgay Defends the Revolution # Place Communist SPs in 4 spaces in Hungary not under Democratic control. +permanently_remove poszgay prompt 'to 4 spaces in Hungary not under Democratic control' add_limited_infl 4 1 -permanently_remove CARD 19 - Papal vist # Place 3 SPs in any Catholic Church space. +permanently_remove valid_spaces 20 35 38 prompt 'any Catholic Church space' add_x_infl 3 -permanently_remove CARD 20 - Deutsche Marks* @@ -162,6 +164,7 @@ power_struggle CARD 24 - St Nicolas Church # Place sufficient Democratic SPs in the Lutheran Church space for Democratic control. Allows play of The Monday Demonstrations. +permanently_remove valid_spaces 6 prompt 'the Lutheran Church' take_control_prep 1 @@ -170,13 +173,14 @@ st_nicholas_church CARD 25 - Perestroika # +1 Ops value for cards played by the Communist for the rest of turn. +permanently_remove perestroika CARD 26 - Helsinki Final Act* # +1 VP for every Support Check die roll by the Communist Player in Student or Intellectual spaces the rest of the game. -helsinki_final_act permanently_remove +helsinki_final_act CARD 27 - Consumerism @@ -199,10 +203,10 @@ remove_limited_opp_infl 3 2 CARD 29 - Jan Palach Week* # Place 6 Democratic SPs in the Charles University space. +permanently_remove valid_spaces 30 prompt 'the Charles University space' add_x_infl 6 -permanently_remove CARD 30 - Tear Gas @@ -219,33 +223,33 @@ add_limited_infl 4 2 CARD 32 - Peasant Parties* # Place 4 Communist SPs in Farmer spaces, no more than 2 per space. +permanently_remove valid_spaces_socio 3 prompt 'Farmer spaces, no more than 2 per space' add_limited_infl 4 2 -permanently_remove CARD 33 - Sajudis* # +1 VP. Reduce USSR stability by 1. Place sufficient Democratic support in any Minorities space for control. Allows play of The Baltic Way. +permanently_remove sajudis_check prompt 'any Minorities space' take_control_prep 1 sajudis -permanently_remove CARD 34 - Fidesz* # Place 5 Democratic SPs in Hungary Student space. +permanently_remove valid_spaces 47 prompt 'the Hungary students space' add_x_infl 5 -permanently_remove CARD 35 - Heal our Bleeding Wounds* # If played in Early Year, -3 VPs. If played in Mid Year, -1 VP. If played in Late Year, +3 VPs. -heal_our_bleeding_wounds permanently_remove +heal_our_bleeding_wounds CARD 36 - Dash for the West* @@ -255,28 +259,28 @@ prompt 'Dash for the West: select any Democratic event with an asterix(*) from t dash_for_the_west - CARD 37 - Nagy Reburied* # Remove all Communist SPs from the Hungary Elite space. Then place 4 Communist SPs in Hungary, no more than 2 per space. +permanently_remove nagy_reburied prompt 'the Hungary Elite space' remove_all_infl 1 valid_spaces_country 'Hungary' prompt 'Hungary, no more than 2 per space' add_limited_infl 4 2 -permanently_remove CARD 38 - July Concept # Place 3 Communist SPs in Bulgaria +permanently_remove valid_spaces_country 'Bulgaria' prompt 'Bulgaria' add_infl_free 3 -permanently_remove CARD 39 - Eco-Glasnost* # Place 4 Democratic SPs in Ruse. +permanently_remove valid_spaces 66 prompt 'Ruse' add_x_infl 4 @@ -285,17 +289,18 @@ eco_glasnost CARD 40 - Hungarian Democratic Forum # Place 3 Democratic SPs in Hungary and make one Support Check in Hungary. +permanently_remove valid_spaces_country 'Hungary' prompt 'Hungary' add_infl_free 3 valid_spaces_country_sc 'Hungary' prompt 'make a Support Check in Hungary' 1_support_check -permanently_remove CARD 41 - Ceausescu* # Remove 3 Democratic SPs in Romania and make a Support Check in Romania using the Ops value of this card. If the Democratic Player has any SPs in spaces adjacent to Cluj at the end of this action round remove 1 Communist SP from Bucharest. May not be played as an event after The Tyrant is Gone. +permanently_remove if !game.the_tyrant_is_gone valid_spaces_country_opp 'Romania' prompt ' from Romania' @@ -305,8 +310,9 @@ prompt 'make a support check in Romania' 1_support_check prompt ' from Bucharesti' ceausescu +else +tyrant_block endif -permanently_remove CARD 42 - Power Struggle - East Germany @@ -321,6 +327,7 @@ power_struggle CARD 44 - Inflationary Currency # Target any Country where your opponent has Power. Place 2 SPs and make 1 Support Check in the Country using the Ops value of this card. Your opponent may cancel the Support Check by discarding a 3 Ops value card. +permanently_remove inflationary_currency valid_spaces_country_opp prompt ()=>` from ${country_name(game.vm_active_country)}` @@ -331,71 +338,70 @@ valid_spaces_country_sc prompt `make a Support Check in ${country_name(game.vm_active_country)}` 1_support_check endif -permanently_remove CARD 45 - Soviet Troop Withdrawals* # The Democratic Player may remove 5 Communist SPs from Eastern Europe, no more than 2 per space. +permanently_remove valid_spaces_region_opp 'Eastern Europe' prompt ' from Eastern Europe' remove_limited_opp_infl 5 2 -permanently_remove CARD 46 - Goodbye Lenin!* # The Communist Player must reveal all his events with title written in red. The Democrat may exchange this card for any of them with the event occurring immediately, or he may play this card for Operations. -goodbye_lenin permanently_remove +goodbye_lenin CARD 47 - Bulgarian Turks Expelled* # -2 VP. Remove any Democratic SPs in Razgrad. +permanently_remove bulgarian_turks_expelled prompt 'Razgrad' remove_all_infl 1 -permanently_remove CARD 48 - We are the People!* # The Democrat can move up to 4 SPs from the Lutheran Church space to any spaces in Germany, no more than 2 per space. The Communist may no longer make Support Checks in Leipzig. -we_are_the_people permanently_remove +we_are_the_people CARD 49 - Foreign Currency Debt Burden* # The Democrat designates 1 country in Eastern Europe. For the rest of this turn the Communist has a -2 modifier for support checks in this country. -foreign_currency_debt_burden permanently_remove +foreign_currency_debt_burden CARD 50 - The Sinatra Doctrine* # +1 Ops value for cards played by the Democratic Player the rest of this turn. -the_sinatra_doctrine permanently_remove +the_sinatra_doctrine CARD 51 - 40th Anniversary Celebration* # Place 2 Communist SPs in Germany. If Communist is ahead add 4 SPs. Then subtract 1 VP. +permanently_remove 40th_anniversary_celebration valid_spaces_country 'East_Germany' prompt 'East Germany' add_infl_free 40th_anniversary_celebration_vp -permanently_remove CARD 52 - Normalisation # Remove all Democratic SPs from the Czechoslovakia Elite and Bureaucrat Spaces. +permanently_remove normalisation prompt 'the Czechoslovakia Elite and Bureaucrat Spaces' remove_all_infl 2 -permanently_remove CARD 53 - Li Peng* # +1 modifier to all Communist Tiananmen Square track attempts for the rest of the game -li_peng permanently_remove +li_peng CARD 54 - The Crowd Turns Against Ceausescu* @@ -410,17 +416,17 @@ power_struggle CARD 56 - Foreign Television # Remove 4 Communist SPs no more than 2 per space. +permanently_remove foreign_television remove_limited_opp_infl 4 2 -permanently_remove CARD 57 - Central Committee Reshuffle* # Place 3 Communist SPs in any Country where the Communist holds Power. +permanently_remove central_committee_reshuffle prompt `${country_name(game.vm_active_country)}` add_infl_free 3 -permanently_remove CARD 58 - Austria-Hungary Border Reopened* @@ -435,21 +441,21 @@ grenztruppen CARD 60 - Toxic Waste* # Add 3 Democratic SPs in any Worker space(s). +permanently_remove valid_spaces_socio 4 prompt 'any Worker space(s)' add_infl_free 3 -permanently_remove CARD 61 - The Monday Demonstrations* # Place sufficient SPs in the Lutheran Church Space and Leipzig for Democratic control. Then the Democratic Player may make FIVE support checks in Germany using the Ops value of this card. Requires play of St. Nicholas Church as an event. +permanently_remove the_monday_demonstrations prompt 'the Lutheran Church Space and Leipzig' take_control_prep 2 valid_spaces_country_sc 'East_Germany' prompt 'make 5 Support Checks in East Germany' support_check 5 -permanently_remove CARD 62 - Yakovlev Counsels Gorbachev* @@ -464,24 +470,24 @@ genscher CARD 64 - Legacy of 1968* # The Democratic Player may place 1 SP in all spaces in Czechoslovakia not controlled by the Communist Player +permanently_remove legacy_of_1968 prompt 'all spaces in Czechoslovakia not controlled by the Communist Player' add_limited_infl 11 1 -permanently_remove CARD 65 - Presidential Visit* # The Communist's hand size is reduced to 7 next turn. -presidential_visit permanently_remove +presidential_visit CARD 66 - New Forum # Place a Democratic SP in 3 spaces in Germany +permanently_remove valid_spaces_country 'East_Germany' prompt '3 spaces in East Germany' add_limited_infl 3 1 -permanently_remove CARD 67 - Reformer Rehabilitated* @@ -492,19 +498,19 @@ reformer_rehabilitated CARD 68 - Klaus and Komarek* # Remove 2 Communist SPs and add 2 Democratic SPs in Prague. +permanently_remove klaus_and_komarek prompt 'Prague' remove_x_opp_infl 2 valid_spaces 29 add_x_infl 2 -permanently_remove CARD 69 - Systematization* # The Communist player may eliminate 1 space in Romania. Any Democratic SPs are eliminated. Communist SPs are relocated to Bucharest. The connections to the destroyed space are considered to pass through and connect the adjacent spaces directly. +permanently_remove valid_spaces_country 'Romania' systematization -permanently_remove CARD 70 - Securitate* @@ -525,6 +531,7 @@ peasant_parties_revolt CARD 73 - Laszlo Tokes* # Place 1 Democratic SP in Timisoara and Harghita/Covasna. The Democratic may then place SPs or make Support Check rolls in Romania using the Ops value of this card. Allows play of Massacre in Timisoara. +permanently_remove valid_spaces 50 56 prompt 'in Timisoara and Harghita/Covasna' add_limited_infl 2 1 @@ -536,8 +543,6 @@ else prompt 'make 2 Support Checks in Romania' support_check 2 endif -permanently_remove - CARD 74 - FRG Embassies @@ -547,12 +552,13 @@ frg_embassies CARD 75 - Exit Visas* # The Democratic Player may discard any cards in his hand and draw new cards from the deck. -exit_visas permanently_remove +exit_visas CARD 76 - Warsaw Pact Summit # The Warsaw Pact holds a summit in Bucharest. The Communist player chooses who dominates the summit, the hardliners or the reformers. The Communist may either make 2 Support Checks with a +2 drm against Student and intellectual spaces, or place 4 SPs in spaces with no influence that are not controlled by the Democratic player. +permanently_remove warsaw_pact_summit if game.phase === 3 prompt ' spaces with no Democratic SPs' @@ -562,13 +568,12 @@ prompt 'Select a Student or Intellectual space' valid_spaces_country_socio_2 3, 4 support_check_modified 2 2 endif -permanently_remove CARD 77 - Samizdat # The Democratic Player can put a card in his hand aside for next turn and draw a replacement card from the deck. -samizdat permanently_remove +samizdat CARD 78 - Workers Revolt @@ -578,95 +583,99 @@ workers_revolt CARD 79 - The Third Way* # -2 VP. Place 3 Communist SPs in the German writers space. +permanently_remove the_third_way valid_spaces 4 prompt 'the East German Writers space' add_x_infl 3 -permanently_remove CARD 80 - Nepotism* # Roll a die. 1-2: Place 4 Communist SPs in Worker spaces in the Balkans. 3-4: add 3 SPs in Worker spaces in the Balkans. 5-6: add 1 SP to a Worker space in the Balkans. +permanently_remove nepotism valid_spaces_region_socio 'Balkans', 4 prompt 'Worker spaces in the Balkans' add_infl_free -permanently_remove CARD 81 - The Baltic Way* # +2 VP. Reduce USSR stability by 1. Place sufficient Democratic SPs in any Minorities space for control. .Requires play of Sajudis. Allows play of Breakaway Baltic Republics. +permanently_remove the_baltic_way prompt 'any Minorities space' take_control_prep 1 -permanently_remove CARD 82 - Spitzel* # Remove 2 Democratic SPs in Germany. +permanently_remove valid_spaces_country_opp 'East_Germany' prompt ' from East Germany' remove_opp_infl 2 -permanently_remove CARD 83 - Modrow* # Roll a die. If the die roll exceeds the number of Democratically controlled spaces in Germany, then place 4 Communist SPs in Germany, no more than 2 per space. +permanently_remove modrow valid_spaces_country 'East_Germany' prompt 'East Germany' add_limited_infl 4 2 -permanently_remove CARD 84 - Breakaway Baltic Republics* # +3 VPs. Reduce USSR stability by 2. Place sufficient Democratic SPs in any Minorities space for control. Cancels the effect of Gorbachev Charms the West for the rest of the game. Make 1 Support Check using the Ops value of this card. Requires play of The Baltic Way as an event. +permanently_remove breakaway_baltic_republics prompt 'any Minorities space' take_control_prep 1 valid_spaces_sc prompt 'select a space for the support check' 1_support_check -permanently_remove CARD 85 - Tank Column/Tank Man* # Advance 1 space on the Tiananmen Square track. -tank_column permanently_remove +tank_column CARD 86 - The Wall Must Go!* # Reduce USSR stability by 1. The Democratic Player attempts to tear down the Berlin Wall. Each player rolls a die and adds the number of spaces in Germany they control. Higher total wins. This is best 2 out of 3. If successful +3 VPs and the Communist must remove 3 SPs from Germany. +permanently_remove the_wall_must_go remove_infl 3 -permanently_remove CARD 87 - Kohl Proposes Reunification* # +2 VP. The Democratic Player may place SPs or make Support Checks using the Ops value of this card if The Wall Must Go! has been played as an event successfully. -kohl_proposes_reunification permanently_remove +kohl_proposes_reunification + CARD 88 - Adamec* # Roll a die. On a 4-6 add 4 Communist SPs in Czechoslovakia, no more than 2 per space. -1 drm for every Worker or Farmer space in Czechoslovakia that is controlled by the Democratic Player. +permanently_remove adamec valid_spaces_country 'Czechoslovakia' prompt 'Czechoslovakia' add_limited_infl 4 2 -permanently_remove + CARD 89 - Domino Theory* # If the Democrat holds Power in at least 2 counties, he may retrieve any Power Struggle - card from the discard pile and play it immediately as an event. The Democrat receives a -1 drm to his dice rolls for this Power Struggle. -prompt 'Domino Theory: choose a Power Struggle card to play from the discard pile.' -domino_theory +prompt 'Domino Theory: choose a Power Struggle card to play from the discard pile' permanently_remove +domino_theory + CARD 90 - Civic Forum* # +1 VP. Place 4 SPs in Czechoslovakia. The Democratic Player may make Support Checks in Czechoslovakia using the Ops value of this card if the Czech Writers space is Democratically controlled. +permanently_remove valid_spaces_country 'Czechoslovakia' prompt 'Czechoslovakia' add_infl_free 4 @@ -674,45 +683,44 @@ civic_forum valid_spaces_country_sc 'Czechoslovakia' prompt 'Select a space in Czechoslovakia' support_check 2 -permanently_remove CARD 91 - My First Banana* # Remove 2 Communist SPs and make two Support Checks in Germany using the Ops value of this card. +permanently_remove valid_spaces_country_opp 'East_Germany' prompt ' from East Germany' remove_opp_infl 2 valid_spaces_country_sc 'East_Germany' prompt 'select a space in East Germany' support_check 2 -permanently_remove CARD 92 - Betrayal # Choose any Orthodox Church space. Replace all Democratic SPs with Communist SPs. +permanently_remove prompt 'choose any Orthodox Church space. Replace all Democratic SPs with Communist SPs' betrayal -permanently_remove CARD 93 - Shock Therapy* # Target country must be one where the Communist has been toppled from power. Successful 3-6. -1 for every Communist Worker or Farmer space. +2 VPs and place 3 SPs in the country +permanently_remove shock_therapy valid_spaces_country prompt ` ${country_name(game.vm_active_country)}` add_infl_free 3 -permanently_remove CARD 94 - Union of Democratic Forces* # Remove 4 Communist SPs from Bulgaria. Democratic Player may make Support Checks in Bulgaria using the Ops value of this card if the Bulgarian writers space is Democratically controlled. +permanently_remove valid_spaces_country_opp 'Bulgaria' prompt ' from Bulgaria' remove_opp_infl 4 valid_spaces_country_sc 'Bulgaria' prompt 'Make 2 Support Checks in Bulgaria' support_check 2 -permanently_remove CARD 95 - Power Struggle - Romania @@ -722,16 +730,16 @@ power_struggle CARD 96 - The Chinese Solution* # Can only take place if the Communist has reached the Protesters Massacred space on the Tiananmen Square track. The Communist may choose 1 country where he retains Power and conduct 5 Support Checks with a +3 modifier, but suffers a penalty of +3 VPs. +permanently_remove the_chinese_solution valid_spaces_country_sc -prompt `Make 5 Support Checks in ${country_name(game.vm_active_country)}` +prompt `make 5 Support Checks in ${country_name(game.vm_active_country)}` support_check_modified 5 3 -permanently_remove CARD 97 - The Tyrant is Gone* # Remove 4 Communist SPs from the Romanian Elite Space. The Democrat announces where the Ceausescus flee, choosing a space with no Democratic SPs. If the Democratic Player gains control of the space before the end of the game the Ceausescus are captured, +2 VP. If not they escape, -2 VP. Requires play of The Crowd Turns Against Ceausescu -if game.persistent_events['the_crowd_turns_against_ceausescu'] +if game.persistent_events.includes(54) valid_spaces 51 prompt 'the Romanian Elite Space' remove_x_opp_infl 4 @@ -744,35 +752,38 @@ endif CARD 98 - Politburo Intrigue* # Remove 3 Democratic SPs in Bulgaria, no more than 2 per space. Then make one Support Check in Bulgaria, using the Ops value of this card. +permanently_remove valid_spaces_country_opp 'Bulgaria' prompt ' from Bulgaria' remove_limited_opp_infl 3 2 valid_spaces_country_sc 'Bulgaria' prompt 'make a support check in Bulgaria' 1_support_check -permanently_remove CARD 99 - Ligachev* # -3 VP if the Democrat does not play Gorbachev Charms the West for the event his next action round. -3 VPs take effect as soon as the Democrat plays his card but before the effect of the Democrat's card takes place. -ligachev permanently_remove +ligachev CARD 100 - Stand Fast* # -1 to opponent Support Checks in spaces you control for the rest of this turn. -stand_fast permanently_remove +stand_fast CARD 101 - Elena* # Add 2 SPs to the Romania Elite Space. -1 drm for Democratic Player for Support Checks in Romania the rest of this turn. No longer playable after The Tyrant is Gone +permanently_remove if !game.the_tyrant_is_gone valid_spaces 51 prompt 'the Romania Elite Space' add_x_infl 2 -endif elena +else +tyrant_block +endif CARD 102 - National Salvation Front* @@ -795,19 +806,21 @@ new_years_eve_party CARD 105 - Public Against Violence* # Place 2 Democratic SPs each in Kosice and Presov. Make one Support Check in Bratislava using the Ops value of this card. -valid_spaces 36 37 -prompt 'Kosice and Presov' +permanently_remove +valid_spaces 36 +prompt 'Kosice' add_x_infl 2 -valid_spaces 36 37 +valid_spaces 37 +prompt 'Presov' add_x_infl 2 public_against_violence prompt 'Make a Support Check in Bratislava' support_check_modified 1 2 -permanently_remove CARD 106 - Social Democratic Platform Adopted* # Play as an event in a Country where the Democrat has Power. Add 2 SPs and make 1 Support Check in the Country using the Ops value of this card. +permanently_remove social_democratic_platform_adopted valid_spaces_country prompt `${country_name(game.vm_active_country)}` @@ -815,36 +828,38 @@ add_infl_free 2 valid_spaces_country_sc prompt `make a Support Check in ${country_name(game.vm_active_country)}` 1_support_check -permanently_remove CARD 107 - Massacre in Timisoara* # Communist Player makes Support Checks in Romania using the Ops value of this card with +2 drm. Requires play of Lazslo Tokes. +permanently_remove if !game.the_tyrant_is_gone massacre_in_timisoara valid_spaces_country_sc 'Romania' prompt 'Make Support Checks in Romania' support_check_modified 2 2 +else +tyrant_block endif -permanently_remove CARD 108 - Army Backs Revolution* # Place in front of the Democratic Player. Cancels effects of Securitate* event. -army_backs_revolution permanently_remove +army_backs_revolution CARD 109 - Kremlin Coup* # Can only take place if Breakaway Baltic Republics has been played as an event. -3 VPs. In all countries where the Communist retains Power, place sufficient SPs in Elite space for Communist control, then make a support check against the bureaucratic space with a +1 modifier, even if there are no Democratic SPs in the space. -kremlin_coup permanently_remove +kremlin_coup CARD 110 - Malta Summit* # Roll a die. The summit is successful 4-6. If successful, +3VPs and remove 5 Communist SPs from elite space(s). The Democrat receives a modifier based on the USSR Stability Track: +1 if Sajudis +2 if The Baltic Way +3 if Breakaway Baltic Republics Not playable for the event after Kremlin Coup. +permanently_remove malta_summit prompt ' from Elite spaces' remove_opp_infl 5 -permanently_remove + @@ -143,7 +143,7 @@ header.your_turn { background-color: orange; } display: none;
}
-#events_panel, #played_card_panel, #table_panel {
+#events_panel, #played_card_panel, #table_panel, #samizdat_panel {
min-width: 200px;
width: auto;
/*display: inline-block;*/
@@ -405,8 +405,8 @@ function on_update() { ui.dem_hand_count.innerText = `${view.democrat_power_hand} Power cards`
ui.com_hand_count.innerText = `${view.communist_power_hand} Power cards`
} else{
- ui.dem_hand_count.innerText = `${view.democrat_hand} cards in hand`
- ui.com_hand_count.innerText = `${view.communist_hand} cards in hand`
+ ui.dem_hand_count.innerText = `${view.democrat_hand} cards`
+ ui.com_hand_count.innerText = `${view.communist_hand} cards`
}
ui.deck_length.innerText = `${view.strategy_deck} cards`
@@ -516,7 +516,8 @@ if (!view.is_pwr_struggle) { document.getElementById("opp_hand_panel").classList.add("hide")
}
} else {
- if (view.show_opp_hand && view.opp_hand.length >0) {
+ console.log('power struggle, show opp hand', view.show_opp_hand, 'view opp hand', view.opp_hand )
+ if (view.show_opp_hand && view.opp_hand && view.opp_hand.length > 0) {
document.getElementById("opp_hand_panel").classList.remove("hide")
for (let c of view.opp_hand) {
let card = ui.power_cards[c]
@@ -537,6 +538,7 @@ if (!view.is_pwr_struggle) { for (let c of view.power_hand) {
let power_card = ui.power_cards[c]
document.getElementById("power_hand").appendChild(power_card);
+ power_card.classList.remove('discard_card')
if (view.valid_cards.includes(c)) {
power_card.classList.add('selected');
}
@@ -682,7 +684,7 @@ if (view.persistent_events.includes(97)) { action_button("concede", "Concede")
action_button("struggle", "Begin power struggle")
action_button("raise", "Raise the stakes")
- action_button("draw", "Draw cards")
+ action_button("draw", "Draw")
action_button("scoring", "Scoring")
action_button("event", "Event")
action_button("opp_event", "Resolve opponent event")
@@ -107,8 +107,9 @@ function start_game() { //starting influence
// Draw cards
- /* const card_numbers = cards.filter(card => card !== null && card !== undefined).map(card => card.number);
- console.log('card numbers: ', card_numbers) */
+
+ console.log('start game')
+
game.strategy_deck = draw_deck(cards)
reset_power()
@@ -225,7 +226,7 @@ exports.view = function(state, player) { } else if (player === COM) {
view.hand = game.communist_hand
- view.opp_hand = game.dem_pwr_hand.sort((a, b) => a - b) /*Does the Communist ever see Democrat hand? */
+ view.opp_hand = game.dem_pwr_hand.sort((a, b) => a - b)
view.power_hand = game.com_pwr_hand.sort((a, b) => a - b)
}
@@ -267,7 +268,7 @@ exports.view = function(state, player) { // === ACTIONS ===========
function gen_action(action, argument) {
-//console.log('gen_action called with ', action, ' and ', argument)
+console.log('gen_action called with ', action, ' and ', argument)
if (argument === undefined) {
//console.log('argument undefined')
view.actions[action] = 1
@@ -316,6 +317,7 @@ exports.action = function (state, player, action, arg) { states.com_init = {
inactive: 'place starting SPs',
prompt() {
+ console.log('state:', game.state, 'game.valid_spaces', game.valid_spaces)
if (game.available_ops == 0) {
view.prompt = 'Place starting SPs: done.';
gen_action("done");
@@ -362,6 +364,7 @@ states.com_init = { states.dem_init = {
inactive: 'place starting SPs.',
prompt() {
+ console.log('state:', game.state)
if (game.available_ops == 0) {
view.prompt = 'Place starting SPs: done.';
gen_action("done");
@@ -400,6 +403,7 @@ states.dem_init = { states.start_game = {
inactive: 'start Turn 1.',
prompt() {
+ console.log('state:', game.state)
view.prompt = 'Start Turn 1.'
gen_action('start')
},
@@ -413,6 +417,7 @@ states.start_game = { states.choose_card = {
inactive: 'choose a card.',
prompt() {
+ console.log('state:', game.state)
if ((game.active===DEM && game.democrat_hand.length === 0) || game.active === COM && game.communist_hand.length === 0) {
view.prompt = 'No cards remaining: you must pass.'
gen_action('pass')
@@ -431,6 +436,7 @@ states.choose_card = { },
card(card) {
push_undo()
+
//Check if player is at risk of losing game due to held scoring card
if (!scoring_cards.includes(card)) {
let scoring_cards_count = count_scoring_cards()
@@ -480,16 +486,6 @@ states.play_card ={ return
}
-
- //Check for Tiananmen Square Track awards special abilities
- if ((game.active === DEM && cards[game.played_card].side !== 'C' && game.dem_tst_position >= 7 && game.com_tst_position < 7 && !game.tst_7) || (game.active === COM && cards[game.played_card].side !== 'D' && game.com_tst_position >= 7 && game.dem_tst_position < 7 && !game.tst_7)){
- gen_action('tst_7')
- }
-
- if ((game.active === DEM && cards[game.played_card].side !== 'C' && game.dem_tst_position >= 8 && game.com_tst_position < 8 && !game.tst_8) || (game.active === COM && cards[game.played_card].side !== 'D' && game.com_tst_position >= 8 && game.dem_tst_position < 8 && !game.tst_8)){
- gen_action('tst_8')
- }
-
// Check for Reformer Rehabilitated
//console.log('game.active', game.active, 'game.playable_cards[67].playable', game.playable_cards[67].playable)
@@ -503,26 +499,32 @@ states.play_card ={ gen_action('event')
}
}
+
+ //Check for events
+ console.log('event_is_playable(game.played_card)', event_is_playable(game.played_card))
+ if (event_is_playable(game.played_card)) {
+ console.log('card is playable')
+ //Check for Tiananmen Square Track awards special abilities
+ console.log('game.tst_7', game.tst_7)
+ if ((game.active === DEM && cards[game.played_card].side === 'C' && game.dem_tst_position >= 7 && game.com_tst_position < 7 && !game.tst_7) || (game.active === COM && cards[game.played_card].side === 'D' && game.com_tst_position >= 7 && game.dem_tst_position < 7 && !game.tst_7)){
+ gen_action('tst_7')
+ }
- //Continue with normal logic
-
- //Check if it is a card with an event which is always playable
-
- if (cards[game.played_card].playable) {
- get_events(game.played_card)
- }
-
- // Resolve cards with variable events (not Reformer)
+ if ((game.active === DEM && cards[game.played_card].side !== 'C' && game.dem_tst_position >= 8 && game.com_tst_position < 8 && !game.tst_8) || (game.active === COM && cards[game.played_card].side !== 'D' && game.com_tst_position >= 8 && game.dem_tst_position < 8 && !game.tst_8)){
+ gen_action('tst_8')
+ }
- if (game.played_card !== 67 && game.playable_cards.includes(game.played_card)) {
+ //Continue with normal logic
get_events(game.played_card)
}
gen_action('influence')
- if (game.active === DEM && game.dem_tst_attempted_this_turn === 0 && game.dem_tst_position <=8 || game.active === COM && game.com_tst_attempted_this_turn === 0 && game.com_tst_position <= 8) {
- gen_action('tst')
- }
gen_action('support_check')
+
+ if ((game.active === DEM && game.dem_tst_attempted_this_turn === 0 && game.dem_tst_position < 8 ) || (game.active === COM && game.com_tst_attempted_this_turn === 0 && game.com_tst_position < 8)) {
+ gen_action('tst')
+ }
+
},
event() {
push_undo()
@@ -610,7 +612,7 @@ states.play_card ={ },
tst_7() { /*Cancel opponent event */
push_undo()
- log('Event cancelled using Tiananmen Square Track Award')
+ log(`Played C${game.played_card}. Event cancelled using TST Award`)
game.tst_7 = true
game.vm_infl_to_do = true
game.state = 'resolve_opponent_event'
@@ -685,7 +687,7 @@ states.resolve_opponent_event = { },
tst_7() {
push_undo()
- log('Event cancelled using Tiananmen Square Track Award')
+ log('Event cancelled using TST Award')
game.tst_7 = true
game.vm_event_to_do = false
},
@@ -1230,6 +1232,7 @@ states.raise_stakes_1 = { game.raised_stakes_discard ++
if (game.raised_stakes_discard === 3) {
game.raised_stakes++
+ game.valid_cards = []
}
@@ -1244,6 +1247,7 @@ states.raise_stakes_1 = { log_gap('Raised the stakes')
game.raised_stakes_discard = 0
next_player()
+ game.valid_cards = [...all_power_cards]
game.state = 'raise_stakes_2'
}
}
@@ -1278,6 +1282,7 @@ states.raise_stakes_2 = { game.raised_stakes_discard ++
if (game.raised_stakes_discard === 3) {
game.raised_stakes++
+ game.valid_cards = []
}
},
@@ -1406,7 +1411,7 @@ states.power_struggle = { },
roll () {
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
if (roll >= power_cards[game.played_power_card].value) {
log('Initiative roll successful')
game.phase = 0
@@ -1516,7 +1521,7 @@ states.support_loss ={ let roll = Math.floor(Math.random() * 6) + 1
let rally_win = 0
let petition_win = 0
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
if ((game.played_power_card >= 25 && game.played_power_card <= 30) || game.played_power_card === 53) { rally_win = 2}
if ((game.played_power_card >= 31 && game.played_power_card <= 36) || game.played_power_card === 54) { petition_win = 2}
let modified_roll = roll + game.raised_stakes + rally_win - petition_win
@@ -1585,7 +1590,7 @@ states.vp_roll = { },
roll () {
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
let rally_win = 0
let petition_win = 0
if ((game.played_power_card >= 25 && game.played_power_card <= 30) || game.played_power_card === 53) {rally_win = 2}
@@ -1785,11 +1790,22 @@ states.end_turn_4_5_4 = { } else {
game.return_state = ''
- new_turn()
+ game.state = 'end_turn'
}
}
}
+states.end_turn = {
+ inactive: 'end the turn.',
+ prompt() {
+ view.prompt = 'End Turn: done.'
+ gen_action('done')
+ },
+ done() {
+ new_turn()
+ }
+}
+
states.final_scoring_held = {
inactive: 'resolve final scoring.',
prompt() {
@@ -1883,7 +1899,7 @@ states.general_strike = { view.prompt = 'General Strike: done.'
gen_action('done')
} else if (game.played_card > 0 ) {
- view.prompt = 'Roll a die.'
+ view.prompt = 'General Strike: roll a die.'
gen_action('roll')
}
},
@@ -1906,12 +1922,12 @@ states.general_strike = { roll() {
clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
- log(`+${game.available_ops} ops`)
+ logi(`+${game.available_ops} ops`)
let total = roll + game.available_ops
- log(`TOTAL: ${total}`)
+ log(`Total: ${total}`)
if (total > 5) {
log('The strike is over.')
@@ -2110,7 +2126,7 @@ states.stasi_play_card = { game.available_ops = get_card_ops(card)
game.stasi_card = 0
- if (game.democrat_hand.includes(21)) {
+ if (game.democrat_hand.includes(21) && cards[card].side === "C") {
game.state = 'stasi_resolve_common_european_home'
} else {
game.state = 'play_card'
@@ -2139,7 +2155,7 @@ states.stasi_resolve_common_european_home = { gen_action('no')
},
yes() {
- log(`${clean_name(cards[game.played_card].name)}} played with Common European Home`)
+ log(`Played with Common European Home`)
silent_discard(21)
game.vm_infl_to_do = true
game.vm_event_to_do = false
@@ -2285,7 +2301,7 @@ function do_sc(space) { // Continue with Support Check Logic
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
console.log('game.vm_event', game.vm_event)
console.log('game.is_pwr_struggle', game.is_pwr_struggle)
/*
@@ -2382,7 +2398,7 @@ function do_sc(space) { logi(`+${adj.dem_adj} adjacency`)
}
if (adj.com_adj > 0) {
- logi(`-${adj.com_adj} opponenet adjacency`)
+ logi(`-${adj.com_adj} opponent adjacency`)
}
} else {
roll += adj.com_adj
@@ -2391,7 +2407,7 @@ function do_sc(space) { logi(`+${adj.com_adj} adjacency`)
}
if (adj.dem_adj > 0) {
- logi(`-${adj.dem_adj} opponenet adjacency`)
+ logi(`-${adj.dem_adj} opponent adjacency`)
}
}
}
@@ -2399,12 +2415,12 @@ function do_sc(space) { }
// Support check calcs
- log(`TOTAL: ${roll}`)
+ log(`Total: ${roll}`)
const stability = spaces[find_space_index(space)].stability
logi(`-${stability*2} (stability * 2)`)
const change_infl = Math.max(0, roll - stability*2)
if (change_infl > 0) {
- log_msg_gap(`CHANGE: ${change_infl} SP`)
+ log_msg_gap(`Change: ${change_infl} SP`)
let clicked_space = find_space_index(space)
if(game.active === DEM) {
if (change_infl > game.comInfl[clicked_space]) {
@@ -2432,7 +2448,7 @@ function do_sc(space) { check_control_change(clicked_space)
} else {
- log_msg_gap('CHANGE: 0 SP')
+ log_msg_gap('Change: 0 SP')
}
if (game.active === COM && game.persistent_events.includes(39) && spaces[clicked_space].space_id === 66) {
log_msg_gap('+1 VP from C39')
@@ -2456,8 +2472,8 @@ function do_sc(space) { function valid_spaces_setup() {
game.valid_spaces = []
let valid_spaces_set = new Set();
- console.log('in vs setup, state', game.state)
- for (let i =1 ; i < 75 ; i++) {
+ //console.log('in vs setup, state', game.state)
+ for (let i =1 ; i <= 75 ; i++) {
space = spaces[i]
if (game.state === 'com_init') {
@@ -2482,7 +2498,7 @@ function valid_spaces_sc() { let valid_spaces_set = new Set();
console.log('valid spaces sc, persistent events', game.persistent_events)
- for (let i = 1 ; i < 75; i++) {
+ for (let i = 1 ; i <= 75; i++) {
space = spaces[i]
if (game.active === DEM) {
@@ -2761,34 +2777,34 @@ function check_com_control(space_id) { function do_tst_attempt() {
let roll = Math.floor(Math.random() * 6) + 1;
- log(`ROLL: D${roll}`);
+ log(`Roll: D${roll}`);
roll += game.available_ops
- log(`+${game.available_ops} from card ops`)
+ logi(`+${game.available_ops} from card ops`)
// TIANANMEN SQUARE MODIFIERS
if (game.active === DEM && game.dem_tst_attempted === 1 || game.active === COM && game.com_tst_attempted === 1) {
roll ++;
- log('+1 modifier from previous Tiananmen Square Track attempts')
+ logi('+1 from previous TST attempts')
}
if (game.active === DEM && game.dem_tst_position >= 1 && game.com_tst_position === 0) {
roll ++
- log('+1 from TST award')
+ logi('+1 from TST award')
}
if (game.active === COM && game.com_tst_position >= 1 && game.dem_tst_position === 0) {
roll ++
- log('+1 from TST award')
+ logi('+1 from TST award')
}
if ((game.active === DEM && cards[game.played_card].side === 'D') || (game.active === COM && cards[game.played_card].side === 'C')) {
roll ++;
- log('+1 for playing own card');
+ logi('+1 for playing own card');
}
if (game.active === COM && game.persistent_events.includes(53)) {
roll ++
- log('+1 from C53')
+ logi('+1 from C53')
}
- log(`TOTAL: ${roll}`)
+ log(`Total: ${roll}`)
// TIANANMEN SQUARE ATTEMPT
game.return = game.active
@@ -2830,21 +2846,27 @@ function do_tst_attempt() { if (roll >= com_tst_req[game.com_tst_position]) {
log(`${com_tst_req[game.com_tst_position]} required: success`)
game.com_tst_position++
+
+ //Check if they have reached the final box - Chinese Solution playable
+ if (game.com_tst_position === 8) {
+ game.playable_cards.push(96)
+ }
+
game.com_tst_attempted = 0
//Check if they have reached box 7 or 8 first
- if (game.dem_tst_position === 7 && game.com_tst_position < 7) {
+ if (game.com_tst_position === 7 && game.dem_tst_position < 7) {
game.tst_7 = false
}
- if (game.dem_tst_position === 8 && game.com_tst_position < 8) {
+ if (game.com_tst_position === 8 && game.dem_tst_position < 8) {
game.tst_8 = false
}
//Check if they have caught up to box 7 or 8
- if (game.dem_tst_position >= 7 && game.com_tst_position >= 7) {
+ if (game.com_tst_position >= 7 && game.dem_tst_position >= 7) {
delete game.tst_7
}
- if (game.dem_tst_position >= 8 && game.com_tst_position >= 8) {
+ if (game.com_tst_position >= 8 && game.dem_tst_position >= 8) {
delete game.tst_8
}
@@ -3092,17 +3114,18 @@ function get_value(country) { }
function permanently_remove(card) {
- console.log('card:', card)
+ console.log('permanently removing card:', card)
+ if (game.strategy_removed.includes(card)) {return}
log_msg_gap(`C${cards[card].number} permanently removed`)
remove_from_discard(card)
card_index = game.table_cards.indexOf(card)
if (card_index !== -1) {
- console.log('sub 2 called')
+ //console.log('sub 2 called')
game.table_cards.splice(card_index, 1)
}
game.strategy_removed.push(card)
- console.log('game.strategy_removed', game.strategy_removed)
+ //console.log('game.strategy_removed', game.strategy_removed)
}
function check_vp() {
@@ -3206,15 +3229,37 @@ function find_event(card) { }
function get_events(card){
- if (cards[card].side === 'D') {
- if (game.active === DEM) {gen_action('event')}
- if (game.active === COM) {gen_action('opp_event')}
- }
- else if (cards[card].side === 'C') {
- if (game.active === COM) {gen_action('event')}
- if (game.active === DEM) {gen_action('opp_event')}
+ if (event_is_playable(card)) {
+ if (cards[card].side === 'D') {
+ if (game.active === DEM) {gen_action('event')}
+ if (game.active === COM) {gen_action('opp_event')}
+ }
+ else if (cards[card].side === 'C') {
+ if (game.active === COM) {gen_action('event')}
+ if (game.active === DEM) {gen_action('opp_event')}
+ }
+ else {
+ gen_action('event')
+ }
+ }
+}
+
+function event_is_playable(card) {
+ //Reformer never playable here
+ if (card === 67) {
+ return false
+ }
+ //Check for Common European Hmme under Stasi
+ else if (game.persistent_events.includes(13) && card === 21 && game.active === DEM) {
+ return false
+ }
+ //Then check normally
+ else if (cards[card].playable) {
+ return true
+ } else if (game.playable_cards.includes(card)) {
+ return true
} else {
- gen_action('event')
+ return false
}
}
@@ -3616,11 +3661,11 @@ function new_turn() { //permanently_remove(65)
game.persistent_events = game.persistent_events.filter(n => n !== 65)
}
- console.log('deck', game.strategy_deck)
- console.log('game.com_hand_limit', game.com_hand_limit, 'communist hand before draw', game.communist_hand)
+ //console.log('deck', game.strategy_deck)
+ //console.log('game.com_hand_limit', game.com_hand_limit, 'communist hand before draw', game.communist_hand)
draw_cards(game.strategy_deck, game.democrat_hand, game.communist_hand, game.dem_hand_limit, game.com_hand_limit)
game.com_hand_limit = 8
- console.log('communist hand after draw', game.communist_hand)
+ //console.log('communist hand after draw', game.communist_hand)
}
@@ -3693,7 +3738,7 @@ function draw_cards(deck, democrat_hand, communist_hand, dem_hand_limit, com_han //console.log('game.valid_cards at start of draw cards: ', game.valid_cards)
let turn = 'communist'; // Start with the communist player
//console.log('game.strategy_deck', game.strategy_deck)
- console.log('deck', deck, 'democrat_hand', democrat_hand, 'communist_hand', communist_hand, 'dem_hand_limit', dem_hand_limit, 'com_hand_limit', com_hand_limit)
+ //console.log('deck', deck, 'democrat_hand', democrat_hand, 'communist_hand', communist_hand, 'dem_hand_limit', dem_hand_limit, 'com_hand_limit', com_hand_limit)
while (democrat_hand.length < dem_hand_limit || communist_hand.length < com_hand_limit) {
//console.log('deck.length: ', deck.length)
//console.log('discard.length', game.strategy_discard )
@@ -3871,19 +3916,9 @@ function reset_power() { }
function check_control_change(space_id) {
- /*game.pieces[space_id].demCtrl = 0
- game.pieces[space_id].comCtrl = 0
-
- if ((game.demInfl[space_id] - game.comInfl[space_id]) >= game.pieces[space_id].stability) {
- game.pieces[space_id].demCtrl = 1
- }
- if ((game.comInfl[space_id] - game.demInfl[space_id]) >= game.pieces[space_id].stability) {
- game.pieces[space_id].comCtrl = 1
- }*/
// Check if the Tyrant is Gone has been fulfilled
- console.log('check control change_player, game.the_tyrant_is_gone', game.the_tyrant_is_gone)
- //console.log('dem control', check_dem_control(game.the_tyrant_is_gone))
+
if (game.the_tyrant_is_gone > 0 && check_dem_control(game.the_tyrant_is_gone)) {
console.log('in tyrant')
log('+2 VP from C97')
@@ -4287,6 +4322,8 @@ function pop_vm_prompt() { function vm_return() {
+ console.log('in vm_return')
+
//Remove temporary vm variables
delete game.support_check_modifier
delete game.vm_max_infl
@@ -4299,10 +4336,14 @@ function vm_return() { }
//Check if end event state is needed
- if ((game.active === DEM && game.round_player !==DEM) || (game.active === COM && game.round_player !== COM)) {
- game.state = 'vm_end_event'
- } else {
+ if (game.is_pwr_struggle || game.state === 'vm_tst_6') {
vm_end_event()
+ } else {
+ if ((game.active === DEM && game.round_player !==DEM) || (game.active === COM && game.round_player !== COM)) {
+ game.state = 'vm_end_event'
+ } else {
+ vm_end_event()
+ }
}
}
@@ -5155,15 +5196,11 @@ function vm_domino_theory() { function vm_eco_glasnost() {
game.persistent_events.push(39)
- permanently_remove(39)
vm_next()
}
function vm_elena(){
game.persistent_events.push(101)
- permanently_remove(101)
- //game.table_cards.push(101)
- //remove_from_discard(101)
vm_next()
}
@@ -5377,7 +5414,7 @@ function vm_inflationary_currency_discard() { }
} else {
for (let card of game.democrat_hand){
- if (get_cards_ops(card) >= 3) {
+ if (get_card_ops(card) >= 3) {
game.valid_cards.push(card)
}
}
@@ -5520,7 +5557,6 @@ function vm_peasant_parties_revolt() { function vm_perestroika() {
game.persistent_events.push(25)
log_msg_gap('C25 in effect')
- permanently_remove(25)
vm_next()
}
@@ -5667,7 +5703,6 @@ function vm_solidarity_legalised() { function vm_st_nicholas_church () {
game.persistent_events.push(24)
game.playable_cards.push(61)
- permanently_remove(24)
vm_next()
}
@@ -5760,10 +5795,7 @@ function vm_the_tyrant_is_gone() { game.valid_spaces.push(space.space_id)
}
}
- /*game.playable_cards[10].playable = 0
- game.playable_cards[41].playable = 0
- game.playable_cards[101].playable = 0
- game.playable_cards[107].playable = 0*/
+
console.log('game.vm_event', game.vm_event, 'game.played_card', game.played_card)
game.state = 'vm_the_tyrant_is_gone'
}
@@ -5775,6 +5807,10 @@ function vm_the_tyrant_is_gone_prep() { vm_next()
}
+function vm_tyrant_block() {
+ game.state = 'vm_tyrant_block'
+}
+
function vm_the_wall () {
game.persistent_events.push(9)
//game.strategy_removed.push(9)
@@ -5883,7 +5919,7 @@ function vm_scare_tactics() { vm_next()
}
function vm_support_surges() {
- game.state = 'vm_support_surges'
+ game.state = 'vm_support_surges_1'
}
function vm_support_falters() {
@@ -5940,9 +5976,6 @@ states.vm_take_control = { push_undo()
vm_take_control(space)
game.vm_available_ops--
- if (game.vm_available_ops === 0) {
- vm_next()
- }
},
done() {
vm_next()
@@ -5954,7 +5987,7 @@ states.vm_add_infl = { prompt () {
console.log('in vm add infl')
if (game.vm_available_ops > 0 && game.valid_spaces.length === 0 ) {
- view.prompt = 'No available spaces remaining. Add SPs: done.'
+ view.prompt = `${clean_name(cards[this_card()].name)}. No available spaces remaining. Add SPs: done.`
gen_action('done')
}
else if (game.vm_available_ops > 0 ) {
@@ -5964,12 +5997,15 @@ states.vm_add_infl = { gen_action_infl(spaces[space_id].name_unique)
}
} else {
- view.prompt = 'Add SP: done.'
+ view.prompt = `${clean_name(cards[this_card()].name)}. Add SPs: done.`
gen_action('done')
}
},
infl(space) {
vm_do_add_infl(space)
+ if (game.vm_available_ops === 0) {
+ game.valid_spaces = []
+ }
},
done () {
if (game.summary.length > 0) {
@@ -5988,7 +6024,7 @@ states.vm_add_infl_free = { },
prompt () {
if (game.vm_available_ops > 0 && game.valid_spaces.length === 0 ) {
- view.prompt = 'No available spaces remaining. Add SPs: done.'
+ view.prompt = `${clean_name(cards[this_card()].name)}. No available spaces remaining. Add SPs: done.`
gen_action('done')
}
else if (game.vm_available_ops > 0 ) {
@@ -5998,15 +6034,15 @@ states.vm_add_infl_free = { gen_action_infl(spaces[space_id].name_unique);
}
} else {
- view.prompt = `${clean_name(cards[this_card()].name)}. Add influence: done.`
+ view.prompt = `${clean_name(cards[this_card()].name)}. Add SPs: done.`
gen_action('done')
}
},
infl(space) {
vm_do_add_infl_free(space)
- /*if (game.vm_available_ops === 0 ) {
-
- }*/
+ if (game.vm_available_ops === 0) {
+ game.valid_spaces = []
+ }
},
done () {
game.valid_spaces = []
@@ -6032,7 +6068,7 @@ states.vm_add_x_infl = { gen_action_infl(spaces[space_id].name_unique)
}
} else {
- view.prompt = `${clean_name(cards[this_card()].name)}. Add influence: done.`
+ view.prompt = `${clean_name(cards[this_card()].name)}. Add SPs: done.`
gen_action('done')
}
},
@@ -6070,22 +6106,9 @@ states.vm_add_limited_infl = { },
infl(space) {
vm_do_add_limited_infl(space, game.vm_max_infl)
- /*if (game.vm_available_ops === 0 || game.valid_spaces.length === 0) {
- game.vm_event_done = true
- if (game.summary.length > 0) {
- pop_summary()
- log_br()
- }
- vm_next()
- }*/
- /*if (game.vm_available_ops === 0 || game.valid_spaces.length === 0 ) {
- if (game.summary.length > 0) {
- pop_summary()
- log_br()
- }
- game.vm_event_done = true
- vm_next()
- }*/
+ if (game.vm_available_ops === 0) {
+ game.valid_spaces = []
+ }
},
done () {
if (game.summary.length > 0) {
@@ -6156,7 +6179,7 @@ states.vm_remove_x_infl = { gen_action_infl(spaces[space_id].name_unique);
}
} else {
- view.prompt = `${clean_name(cards[this_card()].name)}. Remove influence: done.`
+ view.prompt = `${clean_name(cards[this_card()].name)}. Remove SPs: done.`
gen_action('done')
}
},
@@ -6175,14 +6198,17 @@ states.vm_remove_limited_infl = { inactive: 'remove SP.',
prompt () {
if (game.vm_available_ops > 0 && game.valid_spaces.length > 0) {
- view.prompt = `${clean_name(cards[this_card()].name)}: remove ${game.vm_available_ops} SP${event_prompt()}, no more than ${game.vm_max_infl} per space.`
+ view.prompt = `${clean_name(cards[this_card()].name)}: remove ${pluralize(game.vm_available_ops,'SP')}${event_prompt()}, no more than ${game.vm_max_infl} per space.`
for (let space_id of game.valid_spaces) {
gen_action_infl(spaces[space_id].name_unique);
}
- } else if (game.valid_spaces.length === 0) {
+ } else if (game.valid_spaces.length === 0 && game.vm_available_ops > 0) {
view.prompt = `${clean_name(cards[this_card()].name)}: no further SP to remove.`
gen_action('done')
+ } else {
+ view.prompt = `${clean_name(cards[this_card()].name)}. Remove SPs: done.`
+ gen_action('done')
}
},
infl(space) {
@@ -6436,7 +6462,7 @@ states.vm_adamec = { roll() {
clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
let worker_spaces = spaces.filter(space => space && space.country === 'Czechoslovakia' && space.socio === 4 && check_dem_control(space.space_id)).length
if (worker_spaces > 0) {
log(`-${worker_spaces} from Democrat controlled worker spaces`)
@@ -6503,7 +6529,7 @@ states.vm_central_committee_reshuffle = { return `resolve ${clean_name(cards[57].name)}.`
},
prompt() {
- view.prompt = 'Choose a country to add SP.'
+ view.prompt = 'Central Committee Reshuffle: choose a country to add SPs.'
if (!game.revolutions[0]) {gen_action('poland')}
if (!game.revolutions[1]) {gen_action('hungary')}
if (!game.revolutions[2]) {gen_action('east_germany')}
@@ -6623,7 +6649,7 @@ states.vm_dash_for_the_west = { roll() {
clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
let com_control = check_presence('East_Germany').com_spaces
if (roll > com_control) {
@@ -6819,10 +6845,10 @@ states.vm_exit_visas_finish = { },
prompt() {
if (game.temp > 0 ) {
- view.prompt = 'Draw replacement cards.'
+ view.prompt = 'Exit Visas: draw replacement cards.'
gen_action('draw')
} else {
- view.prompt = 'Exit Visas: done.'
+ view.prompt = 'Exit Visas. Draw cards: done.'
gen_action('done')
}
},
@@ -6907,6 +6933,9 @@ states.vm_goodbye_lenin = { goto_vm(card)
},
ops() {
+ if (game.valid_cards.length === 0) {
+ logi('No red events')
+ }
log('C46 played for operations')
game.view_opp_hand = false
game.state = 'vm_goodbye_lenin_ops'
@@ -7270,7 +7299,7 @@ states.vm_kremlin_coup_sc_prep = { return `resolve ${clean_name(cards[game.played_card].name)}.`
},
prompt() {
- view.prompt = `Kremlin Coup! Conduct a support check in ${game.vm_active_country}'s Bureaucratic space.`
+ view.prompt = `Kremlin Coup! Conduct a support check in ${country_name(game.vm_active_country)}'s Bureaucratic space.`
gen_action_sc(spaces[game.selected_space].name_unique);
},
sc(space) {
@@ -7301,7 +7330,7 @@ states.vm_kremlin_coup_end = { return `resolve ${clean_name(cards[this_card()].name)}.`
},
prompt() {
- view.prompt = `${clean_name(cards[this_card()].name)}: done.`
+ view.prompt = `${clean_name(cards[this_card()].name)} Support checks: done.`
gen_action('done')
},
done() {
@@ -7388,7 +7417,7 @@ states.vm_malta_summit = { roll() {
clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
if (game.stability > 0) {
log(`+${game.stability} from USSR Stability Track`)
log(`Modified roll: ${roll + game.stability}`)
@@ -7434,11 +7463,11 @@ states.vm_modrow = { let roll = Math.floor(Math.random() * 6) + 1
let dem_spaces = spaces.filter(space => space && space.country === 'East_Germany' && check_dem_control(space.space_id)).length
if (roll > dem_spaces) {
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
log(`Success. More than the ${dem_spaces} Democratically controlled spaces`)
vm_next()
} else {
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
log(`Fail. More than ${dem_spaces} required`)
permanently_remove(83)
vm_return()
@@ -7463,13 +7492,13 @@ states.vm_nepotism = { clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
if (roll < 3) {
- log(`ROLL: D${roll} adds 4 SPs`)
+ log(`Roll: D${roll} adds 4 SPs`)
game.vm_available_ops = 4}
else if (roll < 5 ) {
- log(`ROLL: D${roll} adds 3 SPs`)
+ log(`Roll: D${roll} adds 3 SPs`)
game.vm_available_ops = 3}
else {
- log(`ROLL: D${roll} adds 1 SP`)
+ log(`Roll: D${roll} adds 1 SP`)
game.vm_available_ops = 1}
//game.phase = 2
vm_next()
@@ -7557,7 +7586,7 @@ states.vm_nomenklatura_remove = { },
prompt() {
if (game.vm_available_ops === 0 || game.valid_spaces.length === 0 ) {
- view.prompt = 'Remove SPs: done.'
+ view.prompt = 'Nomenklatura. Remove SPs: done.'
gen_action('done')
} else {
view.prompt = 'Nomenklatura: remove all Democratic SPs from Elite spaces.'
@@ -7570,9 +7599,9 @@ states.vm_nomenklatura_remove = { infl(space) {
push_undo()
vm_do_remove_all_infl(space)
- if (game.vm_available_ops === 0) {
+ /*if (game.vm_available_ops === 0) {
vm_next()
- }
+ }*/
},
done() {
vm_next()
@@ -7585,7 +7614,7 @@ states.vm_nomenklatura_add = { },
prompt() {
if (game.vm_available_ops === 0 || game.valid_spaces.length === 0 ) {
- view.prompt = 'Add SPs: done.'
+ view.prompt = 'Nomenklatura. Add SPs: done.'
gen_action('done')
} else {
view.prompt = `Nomenklatura: add 3 SPs to any Elite space(s). ${pluralize(game.vm_available_ops, 'SP')} remaining.`
@@ -7719,7 +7748,7 @@ states.vm_shock_therapy = { worker_farmer++
}
}
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
log(`-${worker_farmer} from Communist controlled Worker and Farmer spaces`)
log(`Modified roll: ${roll - worker_farmer}`)
if ((roll - worker_farmer) > 2) {
@@ -7817,7 +7846,7 @@ states.vm_the_chinese_solution = { return `resolve ${clean_name(cards[game.played_card].name)}.`
},
prompt() {
- view.prompt = 'You may give up 3 VP to conduct support checks in a country where you hold power.'
+ view.prompt = 'The Chinese Solution: you may give up 3 VP to conduct support checks in a country where you hold power.'
if (!game.revolutions[0]) {gen_action('poland')}
if (!game.revolutions[1]) {gen_action('hungary')}
if (!game.revolutions[2]) {gen_action('east_germany')}
@@ -7925,13 +7954,28 @@ states.vm_the_tyrant_is_gone = { }
}
+states.vm_tyrant_block ={
+ get inactive() {
+ return `resolve ${clean_name(cards[this_card()].name)}.`
+ },
+ prompt() {
+ view.prompt = `${clean_name(cards[this_card()].name)} has no effect after The Tyrant Has Gone.`
+ gen_action('done')
+ },
+ done() {
+ push_undo()
+ vm_next()
+ }
+}
+
+
states.vm_the_wall_must_go = {
get inactive() {
return `resolve ${clean_name(cards[this_card()].name)}.`
},
prompt() {
if (game.the_wall_must_go['dem_wins'] === 2 || game.the_wall_must_go['com_wins'] === 2) {
- view.prompt = 'The Wall Must Go! Done.'
+ view.prompt = '"The Wall Must Go!" Rolls: done.'
gen_action('done')
} else {
view.prompt = ('The Wall Must Go! Roll a die.')
@@ -7946,7 +7990,7 @@ states.vm_the_wall_must_go = { }
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
if (game.active === DEM) {
let controlled_spaces = spaces.filter(space => space && space.country === 'East_Germany' && check_dem_control(space.space_id)).length
if (controlled_spaces > 0) {
@@ -8066,7 +8110,7 @@ states.vm_we_are_the_people_remove = { return `resolve ${clean_name(cards[game.played_card].name)}.`
},
prompt() {
- if (game.demInfl[6] === 0) {
+ if (game.demInfl[6] === 0 && game.vm_available_ops > 0) {
view.prompt = '"We are the People!": no SPs to remove.'
gen_action('done')
} else if (game.vm_available_ops > 0 ) {
@@ -8076,7 +8120,7 @@ states.vm_we_are_the_people_remove = { gen_action_infl(spaces[space_id].name_unique);
}
} else {
- view.prompt = 'Remove SPs: done.'
+ view.prompt = '"We are the People!" Remove SPs: done.'
gen_action('done')
}
},
@@ -8103,7 +8147,7 @@ states.vm_we_are_the_people_add = { },
prompt() {
if (!game.vm_influence_added[6]) {
- view.prompt = '"We are the People!": done.'
+ view.prompt = '"We are the People!" Add SPs: done.'
gen_action('done')
return
}
@@ -8115,7 +8159,6 @@ states.vm_we_are_the_people_add = { }
},
infl(space) {
- push_undo()
vm_do_add_infl_free(space)
game.vm_influence_added[6]--
if (game.vm_influence_added[6] === 0 ) {game.valid_spaces = []}
@@ -8164,7 +8207,7 @@ states.vm_workers_revolt_finish = { roll() {
clear_undo()
let roll = Math.floor(Math.random() * 6) + 1
- log(`ROLL: D${roll}`)
+ log(`Roll: D${roll}`)
let adj = count_adj(spaces[game.selected_space].name_unique)
if (game.active === DEM) {
log(`-${adj.com_adj} from opponent controlled spaces`)
@@ -8238,7 +8281,7 @@ states.vm_tst_4 = { inactive: 'remove SPs',
prompt () {
if (game.vm_available_ops === 0 || game.valid_spaces.length === 0) {
- view.prompt = 'Remove SPs: done.'
+ view.prompt = 'Tiananmen Square Track award. Remove SPs: done.'
gen_action('done')
return
}
@@ -8380,19 +8423,72 @@ states.vm_tst_8_ops = { // ========================= POWER STRUGGLE STATES ========================
-states.vm_support_surges = {
+states.vm_support_surges_1 = {
inactive: 'draw cards.',
prompt() {
- view.prompt = 'Support Surges: draw 2 cards.'
+ view.prompt = 'Support Surges: draw a card.'
gen_action('draw')
},
draw() {
if (game.active === DEM) {
- draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length+2, game.com_pwr_hand.length)
+ console.log('hand before', game.dem_pwr_hand)
+ draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length+1, game.com_pwr_hand.length)
+ game.temp = game.dem_pwr_hand[game.dem_pwr_hand.length-1]
+ console.log('hand before', game.dem_pwr_hand, 'game.temp', game.temp)
} else {
- draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length, game.com_pwr_hand.length+2)
+ draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length, game.com_pwr_hand.length+1)
+ game.temp = game.dem_pwr_hand[game.dem_pwr_hand.length-1]
}
+ game.state = 'vm_support_surges_2'
+
+ //game.phase = 0
+ //log('Drew 2 cards')
+ //log('Surrenders initiative')
+ //vm_next()
+ }
+}
+
+states.vm_support_surges_2 = {
+ inactive: 'draw cards.',
+ prompt() {
+ if (numberless_cards.includes(game.temp)) {
+ view.prompt = `Support Surges: you drew a ${power_cards[game.temp].name}. Draw a second card.`
+ } else {
+ view.prompt = `Support Surges: you drew a ${power_cards[game.temp].name} ${power_cards[game.temp].value}. Draw a second card.`
+ }
+ gen_action('draw')
+ },
+ draw() {
+ if (game.active === DEM) {
+ console.log('hand before', game.dem_pwr_hand)
+ draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length+1, game.com_pwr_hand.length)
+ game.temp = game.dem_pwr_hand[game.dem_pwr_hand.length - 1]
+ console.log('hand before', game.dem_pwr_hand, 'game.temp', game.temp)
+ } else {
+ draw_cards(game.power_struggle_deck, game.dem_pwr_hand, game.com_pwr_hand, game.dem_pwr_hand.length, game.com_pwr_hand.length+1)
+ game.temp = game.dem_pwr_hand[game.dem_pwr_hand.length - 1]
+ }
+ game.state = 'vm_support_surges_3'
+ /*game.phase = 0
+ log('Drew 2 cards')
+ log('Surrenders initiative')
+ vm_next()*/
+ }
+}
+
+states.vm_support_surges_3 = {
+ inactive: 'draw cards.',
+ prompt() {
+ if (numberless_cards.includes(game.temp)) {
+ view.prompt = `Support Surges: you drew a ${power_cards[game.temp].name}. Done.`
+ } else {
+ view.prompt = `Support Surges: you drew a ${power_cards[game.temp].name} ${power_cards[game.temp].value}. Done.`
+ }
+ gen_action('done')
+ },
+ done() {
game.phase = 0
+ delete game.temp
log('Drew 2 cards')
log('Surrenders initiative')
vm_next()
@@ -8437,41 +8533,41 @@ states.vm_support_falters = { const CODE = []
CODE[1] = [ // Legacy of Martial Law*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country_opp, 'Poland' ],
[ vm_prompt, 'replace 1 Democratic SP in Poland with a Communist SP' ],
[ vm_legacy_of_martial_law ],
[ vm_valid_spaces_country_sc, 'Poland' ],
[ vm_prompt, 'make a Support Check in Poland' ],
[ vm_1_support_check ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[2] = [ // Solidarity Legalised*
+ [ vm_permanently_remove ],
[ vm_solidarity_legalised ],
[ vm_valid_spaces_solidarity_legalised ],
[ vm_prompt, 'to every uncontrolled Worker and Farmer space in Poland' ],
[ vm_add_limited_infl, 9, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[3] = [ // Walesa
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'Poland' ],
[ vm_prompt, 'any space(s) in Poland' ],
[ vm_add_infl_free, 4 ],
[ vm_valid_spaces_country_sc, 'Poland' ],
[ vm_prompt, 'make Support Checks in Poland' ],
[ vm_support_check, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[4] = [ // Michnik
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 26 ],
[ vm_prompt, 'the Polish Intellectuals space' ],
[ vm_add_x_infl, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8486,9 +8582,9 @@ CODE[6] = [ // Brought in for Questioning ]
CODE[7] = [ // State Run Media*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_opponent ],
[ vm_remove_limited_opp_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8498,18 +8594,20 @@ CODE[8] = [ // Prudence ]
CODE[9] = [ // The Wall*
- [ vm_the_wall ],
[ vm_permanently_remove ],
+ [ vm_the_wall ],
[ vm_return ],
]
CODE[10] = [ // Cult of Personality
+ [ vm_permanently_remove ],
[ vm_if, ()=>!game.the_tyrant_is_gone ],
[ vm_valid_spaces_country_socio_2, 'Romania', 3, 4 ],
[ vm_prompt, 'Worker or Farmer spaces in Romania, no more than 2 per space' ],
[ vm_add_limited_infl, 4, 2 ],
+ [ vm_else ],
+ [ vm_tyrant_block ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8521,16 +8619,16 @@ CODE[11] = [ // Dissident arrested ]
CODE[12] = [ // Apparatchicks
+ [ vm_permanently_remove ],
[ vm_valid_spaces_socio, 2 ],
[ vm_prompt, ' to any Bureaucratic space(s)' ],
[ vm_add_infl_free, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[13] = [ // Stasi
- [ vm_stasi ],
[ vm_permanently_remove ],
+ [ vm_stasi ],
[ vm_return ],
]
@@ -8550,8 +8648,8 @@ CODE[15] = [ // Honecker ]
CODE[16] = [ // Nomenklatura*
- [ vm_nomenklatura ],
[ vm_permanently_remove ],
+ [ vm_nomenklatura ],
[ vm_return ],
]
@@ -8561,18 +8659,18 @@ CODE[17] = [ // Roundtable talks ]
CODE[18] = [ // Poszgay Defends the Revolution
+ [ vm_permanently_remove ],
[ vm_poszgay ],
[ vm_prompt, 'to 4 spaces in Hungary not under Democratic control' ],
[ vm_add_limited_infl, 4, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[19] = [ // Papal vist
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 20, 35, 38 ],
[ vm_prompt, 'any Catholic Church space' ],
[ vm_add_x_infl, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8598,6 +8696,7 @@ CODE[23] = [ // Power Struggle - Hungary ]
CODE[24] = [ // St Nicolas Church
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 6 ],
[ vm_prompt, 'the Lutheran Church' ],
[ vm_take_control_prep, 1 ],
@@ -8606,13 +8705,14 @@ CODE[24] = [ // St Nicolas Church ]
CODE[25] = [ // Perestroika
+ [ vm_permanently_remove ],
[ vm_perestroika ],
[ vm_return ],
]
CODE[26] = [ // Helsinki Final Act*
- [ vm_helsinki_final_act ],
[ vm_permanently_remove ],
+ [ vm_helsinki_final_act ],
[ vm_return ],
]
@@ -8635,10 +8735,10 @@ CODE[28] = [ // Factory Party Cells ]
CODE[29] = [ // Jan Palach Week*
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 30 ],
[ vm_prompt, 'the Charles University space' ],
[ vm_add_x_infl, 6 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8655,33 +8755,33 @@ CODE[31] = [ // Intelligentsia ]
CODE[32] = [ // Peasant Parties*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_socio, 3 ],
[ vm_prompt, 'Farmer spaces, no more than 2 per space' ],
[ vm_add_limited_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[33] = [ // Sajudis*
+ [ vm_permanently_remove ],
[ vm_sajudis_check ],
[ vm_prompt, 'any Minorities space' ],
[ vm_take_control_prep, 1 ],
[ vm_sajudis ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[34] = [ // Fidesz*
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 47 ],
[ vm_prompt, 'the Hungary students space' ],
[ vm_add_x_infl, 5 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[35] = [ // Heal our Bleeding Wounds*
- [ vm_heal_our_bleeding_wounds ],
[ vm_permanently_remove ],
+ [ vm_heal_our_bleeding_wounds ],
[ vm_return ],
]
@@ -8693,25 +8793,26 @@ CODE[36] = [ // Dash for the West* ]
CODE[37] = [ // Nagy Reburied*
+ [ vm_permanently_remove ],
[ vm_nagy_reburied ],
[ vm_prompt, 'the Hungary Elite space' ],
[ vm_remove_all_infl, 1 ],
[ vm_valid_spaces_country, 'Hungary' ],
[ vm_prompt, 'Hungary, no more than 2 per space' ],
[ vm_add_limited_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[38] = [ // July Concept
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'Bulgaria' ],
[ vm_prompt, 'Bulgaria' ],
[ vm_add_infl_free, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[39] = [ // Eco-Glasnost*
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 66 ],
[ vm_prompt, 'Ruse' ],
[ vm_add_x_infl, 4 ],
@@ -8720,17 +8821,18 @@ CODE[39] = [ // Eco-Glasnost* ]
CODE[40] = [ // Hungarian Democratic Forum
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'Hungary' ],
[ vm_prompt, 'Hungary' ],
[ vm_add_infl_free, 3 ],
[ vm_valid_spaces_country_sc, 'Hungary' ],
[ vm_prompt, 'make a Support Check in Hungary' ],
[ vm_1_support_check ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[41] = [ // Ceausescu*
+ [ vm_permanently_remove ],
[ vm_if, ()=>!game.the_tyrant_is_gone ],
[ vm_valid_spaces_country_opp, 'Romania' ],
[ vm_prompt, ' from Romania' ],
@@ -8740,8 +8842,9 @@ CODE[41] = [ // Ceausescu* [ vm_1_support_check ],
[ vm_prompt, ' from Bucharesti' ],
[ vm_ceausescu ],
+ [ vm_else ],
+ [ vm_tyrant_block ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8756,6 +8859,7 @@ CODE[43] = [ // Power Struggle - Bulgaria ]
CODE[44] = [ // Inflationary Currency
+ [ vm_permanently_remove ],
[ vm_inflationary_currency ],
[ vm_valid_spaces_country_opp ],
[ vm_prompt, ()=>` from ${country_name(game.vm_active_country)}` ],
@@ -8766,71 +8870,70 @@ CODE[44] = [ // Inflationary Currency [ vm_prompt, ()=>`make a Support Check in ${country_name(game.vm_active_country)}` ],
[ vm_1_support_check ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[45] = [ // Soviet Troop Withdrawals*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_region_opp, 'Eastern Europe' ],
[ vm_prompt, ' from Eastern Europe' ],
[ vm_remove_limited_opp_infl, 5, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[46] = [ // Goodbye Lenin!*
- [ vm_goodbye_lenin ],
[ vm_permanently_remove ],
+ [ vm_goodbye_lenin ],
[ vm_return ],
]
CODE[47] = [ // Bulgarian Turks Expelled*
+ [ vm_permanently_remove ],
[ vm_bulgarian_turks_expelled ],
[ vm_prompt, 'Razgrad' ],
[ vm_remove_all_infl, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[48] = [ // We are the People!*
- [ vm_we_are_the_people ],
[ vm_permanently_remove ],
+ [ vm_we_are_the_people ],
[ vm_return ],
]
CODE[49] = [ // Foreign Currency Debt Burden*
- [ vm_foreign_currency_debt_burden ],
[ vm_permanently_remove ],
+ [ vm_foreign_currency_debt_burden ],
[ vm_return ],
]
CODE[50] = [ // The Sinatra Doctrine*
- [ vm_the_sinatra_doctrine ],
[ vm_permanently_remove ],
+ [ vm_the_sinatra_doctrine ],
[ vm_return ],
]
CODE[51] = [ // 40th Anniversary Celebration*
+ [ vm_permanently_remove ],
[ vm_40th_anniversary_celebration ],
[ vm_valid_spaces_country, 'East_Germany' ],
[ vm_prompt, 'East Germany' ],
[ vm_add_infl_free ],
[ vm_40th_anniversary_celebration_vp ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[52] = [ // Normalisation
+ [ vm_permanently_remove ],
[ vm_normalisation ],
[ vm_prompt, 'the Czechoslovakia Elite and Bureaucrat Spaces' ],
[ vm_remove_all_infl, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[53] = [ // Li Peng*
- [ vm_li_peng ],
[ vm_permanently_remove ],
+ [ vm_li_peng ],
[ vm_return ],
]
@@ -8845,17 +8948,17 @@ CODE[55] = [ // Power Struggle - Czechoslovakia ]
CODE[56] = [ // Foreign Television
+ [ vm_permanently_remove ],
[ vm_foreign_television ],
[ vm_remove_limited_opp_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[57] = [ // Central Committee Reshuffle*
+ [ vm_permanently_remove ],
[ vm_central_committee_reshuffle ],
[ vm_prompt, ()=>`${country_name(game.vm_active_country)}` ],
[ vm_add_infl_free, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8870,21 +8973,21 @@ CODE[59] = [ // GrenzTruppen* ]
CODE[60] = [ // Toxic Waste*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_socio, 4 ],
[ vm_prompt, 'any Worker space(s)' ],
[ vm_add_infl_free, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[61] = [ // The Monday Demonstrations*
+ [ vm_permanently_remove ],
[ vm_the_monday_demonstrations ],
[ vm_prompt, 'the Lutheran Church Space and Leipzig' ],
[ vm_take_control_prep, 2 ],
[ vm_valid_spaces_country_sc, 'East_Germany' ],
[ vm_prompt, 'make 5 Support Checks in East Germany' ],
[ vm_support_check, 5 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8899,24 +9002,24 @@ CODE[63] = [ // Genscher* ]
CODE[64] = [ // Legacy of 1968*
+ [ vm_permanently_remove ],
[ vm_legacy_of_1968 ],
[ vm_prompt, 'all spaces in Czechoslovakia not controlled by the Communist Player' ],
[ vm_add_limited_infl, 11, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[65] = [ // Presidential Visit*
- [ vm_presidential_visit ],
[ vm_permanently_remove ],
+ [ vm_presidential_visit ],
[ vm_return ],
]
CODE[66] = [ // New Forum
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'East_Germany' ],
[ vm_prompt, '3 spaces in East Germany' ],
[ vm_add_limited_infl, 3, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8927,19 +9030,19 @@ CODE[67] = [ // Reformer Rehabilitated* ]
CODE[68] = [ // Klaus and Komarek*
+ [ vm_permanently_remove ],
[ vm_klaus_and_komarek ],
[ vm_prompt, 'Prague' ],
[ vm_remove_x_opp_infl, 2 ],
[ vm_valid_spaces, 29 ],
[ vm_add_x_infl, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[69] = [ // Systematization*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'Romania' ],
[ vm_systematization ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8960,6 +9063,7 @@ CODE[72] = [ // Peasant Parties Revolt ]
CODE[73] = [ // Laszlo Tokes*
+ [ vm_permanently_remove ],
[ vm_valid_spaces, 50, 56 ],
[ vm_prompt, 'in Timisoara and Harghita/Covasna' ],
[ vm_add_limited_infl, 2, 1 ],
@@ -8971,7 +9075,6 @@ CODE[73] = [ // Laszlo Tokes* [ vm_prompt, 'make 2 Support Checks in Romania' ],
[ vm_support_check, 2 ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -8981,12 +9084,13 @@ CODE[74] = [ // FRG Embassies ]
CODE[75] = [ // Exit Visas*
- [ vm_exit_visas ],
[ vm_permanently_remove ],
+ [ vm_exit_visas ],
[ vm_return ],
]
CODE[76] = [ // Warsaw Pact Summit
+ [ vm_permanently_remove ],
[ vm_warsaw_pact_summit ],
[ vm_if, ()=>game.phase === 3 ],
[ vm_prompt, ' spaces with no Democratic SPs' ],
@@ -8996,13 +9100,12 @@ CODE[76] = [ // Warsaw Pact Summit [ vm_valid_spaces_country_socio_2, 3,, 4 ],
[ vm_support_check_modified, 2, 2 ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[77] = [ // Samizdat
- [ vm_samizdat ],
[ vm_permanently_remove ],
+ [ vm_samizdat ],
[ vm_return ],
]
@@ -9012,95 +9115,96 @@ CODE[78] = [ // Workers Revolt ]
CODE[79] = [ // The Third Way*
+ [ vm_permanently_remove ],
[ vm_the_third_way ],
[ vm_valid_spaces, 4 ],
[ vm_prompt, 'the East German Writers space' ],
[ vm_add_x_infl, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[80] = [ // Nepotism*
+ [ vm_permanently_remove ],
[ vm_nepotism ],
[ vm_valid_spaces_region_socio, 'Balkans', 4 ],
[ vm_prompt, 'Worker spaces in the Balkans' ],
[ vm_add_infl_free ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[81] = [ // The Baltic Way*
+ [ vm_permanently_remove ],
[ vm_the_baltic_way ],
[ vm_prompt, 'any Minorities space' ],
[ vm_take_control_prep, 1 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[82] = [ // Spitzel*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country_opp, 'East_Germany' ],
[ vm_prompt, ' from East Germany' ],
[ vm_remove_opp_infl, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[83] = [ // Modrow*
+ [ vm_permanently_remove ],
[ vm_modrow ],
[ vm_valid_spaces_country, 'East_Germany' ],
[ vm_prompt, 'East Germany' ],
[ vm_add_limited_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[84] = [ // Breakaway Baltic Republics*
+ [ vm_permanently_remove ],
[ vm_breakaway_baltic_republics ],
[ vm_prompt, 'any Minorities space' ],
[ vm_take_control_prep, 1 ],
[ vm_valid_spaces_sc ],
[ vm_prompt, 'select a space for the support check' ],
[ vm_1_support_check ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[85] = [ // Tank Column/Tank Man*
- [ vm_tank_column ],
[ vm_permanently_remove ],
+ [ vm_tank_column ],
[ vm_return ],
]
CODE[86] = [ // The Wall Must Go!*
+ [ vm_permanently_remove ],
[ vm_the_wall_must_go ],
[ vm_remove_infl, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[87] = [ // Kohl Proposes Reunification*
- [ vm_kohl_proposes_reunification ],
[ vm_permanently_remove ],
+ [ vm_kohl_proposes_reunification ],
[ vm_return ],
]
CODE[88] = [ // Adamec*
+ [ vm_permanently_remove ],
[ vm_adamec ],
[ vm_valid_spaces_country, 'Czechoslovakia' ],
[ vm_prompt, 'Czechoslovakia' ],
[ vm_add_limited_infl, 4, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[89] = [ // Domino Theory*
- [ vm_prompt, 'Domino Theory: choose a Power Struggle card to play from the discard pile.' ],
- [ vm_domino_theory ],
+ [ vm_prompt, 'Domino Theory: choose a Power Struggle card to play from the discard pile' ],
[ vm_permanently_remove ],
+ [ vm_domino_theory ],
[ vm_return ],
]
CODE[90] = [ // Civic Forum*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country, 'Czechoslovakia' ],
[ vm_prompt, 'Czechoslovakia' ],
[ vm_add_infl_free, 4 ],
@@ -9108,45 +9212,44 @@ CODE[90] = [ // Civic Forum* [ vm_valid_spaces_country_sc, 'Czechoslovakia' ],
[ vm_prompt, 'Select a space in Czechoslovakia' ],
[ vm_support_check, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[91] = [ // My First Banana*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country_opp, 'East_Germany' ],
[ vm_prompt, ' from East Germany' ],
[ vm_remove_opp_infl, 2 ],
[ vm_valid_spaces_country_sc, 'East_Germany' ],
[ vm_prompt, 'select a space in East Germany' ],
[ vm_support_check, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[92] = [ // Betrayal
+ [ vm_permanently_remove ],
[ vm_prompt, 'choose any Orthodox Church space. Replace all Democratic SPs with Communist SPs' ],
[ vm_betrayal ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[93] = [ // Shock Therapy*
+ [ vm_permanently_remove ],
[ vm_shock_therapy ],
[ vm_valid_spaces_country ],
[ vm_prompt, ()=>` ${country_name(game.vm_active_country)}` ],
[ vm_add_infl_free, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[94] = [ // Union of Democratic Forces*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country_opp, 'Bulgaria' ],
[ vm_prompt, ' from Bulgaria' ],
[ vm_remove_opp_infl, 4 ],
[ vm_valid_spaces_country_sc, 'Bulgaria' ],
[ vm_prompt, 'Make 2 Support Checks in Bulgaria' ],
[ vm_support_check, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
@@ -9156,16 +9259,16 @@ CODE[95] = [ // Power Struggle - Romania ]
CODE[96] = [ // The Chinese Solution*
+ [ vm_permanently_remove ],
[ vm_the_chinese_solution ],
[ vm_valid_spaces_country_sc ],
- [ vm_prompt, ()=>`Make 5 Support Checks in ${country_name(game.vm_active_country)}` ],
+ [ vm_prompt, ()=>`make 5 Support Checks in ${country_name(game.vm_active_country)}` ],
[ vm_support_check_modified, 5, 3 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[97] = [ // The Tyrant is Gone*
- [ vm_if, ()=>game.persistent_events['the_crowd_turns_against_ceausescu'] ],
+ [ vm_if, ()=>game.persistent_events.includes(54) ],
[ vm_valid_spaces, 51 ],
[ vm_prompt, 'the Romanian Elite Space' ],
[ vm_remove_x_opp_infl, 4 ],
@@ -9178,35 +9281,38 @@ CODE[97] = [ // The Tyrant is Gone* ]
CODE[98] = [ // Politburo Intrigue*
+ [ vm_permanently_remove ],
[ vm_valid_spaces_country_opp, 'Bulgaria' ],
[ vm_prompt, ' from Bulgaria' ],
[ vm_remove_limited_opp_infl, 3, 2 ],
[ vm_valid_spaces_country_sc, 'Bulgaria' ],
[ vm_prompt, 'make a support check in Bulgaria' ],
[ vm_1_support_check ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[99] = [ // Ligachev*
- [ vm_ligachev ],
[ vm_permanently_remove ],
+ [ vm_ligachev ],
[ vm_return ],
]
CODE[100] = [ // Stand Fast*
- [ vm_stand_fast ],
[ vm_permanently_remove ],
+ [ vm_stand_fast ],
[ vm_return ],
]
CODE[101] = [ // Elena*
+ [ vm_permanently_remove ],
[ vm_if, ()=>!game.the_tyrant_is_gone ],
[ vm_valid_spaces, 51 ],
[ vm_prompt, 'the Romania Elite Space' ],
[ vm_add_x_infl, 2 ],
- [ vm_endif ],
[ vm_elena ],
+ [ vm_else ],
+ [ vm_tyrant_block ],
+ [ vm_endif ],
[ vm_return ],
]
@@ -9229,19 +9335,21 @@ CODE[104] = [ // New Year's Eve Party* ]
CODE[105] = [ // Public Against Violence*
- [ vm_valid_spaces, 36, 37 ],
- [ vm_prompt, 'Kosice and Presov' ],
+ [ vm_permanently_remove ],
+ [ vm_valid_spaces, 36 ],
+ [ vm_prompt, 'Kosice' ],
[ vm_add_x_infl, 2 ],
- [ vm_valid_spaces, 36, 37 ],
+ [ vm_valid_spaces, 37 ],
+ [ vm_prompt, 'Presov' ],
[ vm_add_x_infl, 2 ],
[ vm_public_against_violence ],
[ vm_prompt, 'Make a Support Check in Bratislava' ],
[ vm_support_check_modified, 1, 2 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[106] = [ // Social Democratic Platform Adopted*
+ [ vm_permanently_remove ],
[ vm_social_democratic_platform_adopted ],
[ vm_valid_spaces_country ],
[ vm_prompt, ()=>`${country_name(game.vm_active_country)}` ],
@@ -9249,43 +9357,46 @@ CODE[106] = [ // Social Democratic Platform Adopted* [ vm_valid_spaces_country_sc ],
[ vm_prompt, ()=>`make a Support Check in ${country_name(game.vm_active_country)}` ],
[ vm_1_support_check ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[107] = [ // Massacre in Timisoara*
+ [ vm_permanently_remove ],
[ vm_if, ()=>!game.the_tyrant_is_gone ],
[ vm_massacre_in_timisoara ],
[ vm_valid_spaces_country_sc, 'Romania' ],
[ vm_prompt, 'Make Support Checks in Romania' ],
[ vm_support_check_modified, 2, 2 ],
+ [ vm_else ],
+ [ vm_tyrant_block ],
[ vm_endif ],
- [ vm_permanently_remove ],
[ vm_return ],
]
CODE[108] = [ // Army Backs Revolution*
- [ vm_army_backs_revolution ],
[ vm_permanently_remove ],
+ [ vm_army_backs_revolution ],
[ vm_return ],
]
CODE[109] = [ // Kremlin Coup*
- [ vm_kremlin_coup ],
[ vm_permanently_remove ],
+ [ vm_kremlin_coup ],
[ vm_return ],
]
CODE[110] = [ // Malta Summit*
+ [ vm_permanently_remove ],
[ vm_malta_summit ],
[ vm_prompt, ' from Elite spaces' ],
[ vm_remove_opp_infl, 5 ],
- [ vm_permanently_remove ],
[ vm_return ],
]
// #endregion
+
+
// ============= TIANANMEN SQUARE TRACK AWARDS ====================
CODE[203] = [//Tiananmen Square space 3 award
[vm_tst_3],
|