From 3d8ea7307e44d55e2a675f36c97ebfb04f996743 Mon Sep 17 00:00:00 2001 From: iainp5 Date: Mon, 9 Sep 2024 17:23:16 +0100 Subject: Updates to event prompts --- rules.js | 323 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 212 insertions(+), 111 deletions(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index d023f8d..e006e4b 100644 --- a/rules.js +++ b/rules.js @@ -414,16 +414,20 @@ states.choose_card = { gen_action("done"); return; } */ - - view.prompt = 'Choose a card.' - let available_cards - if (game.active === DEM) { - available_cards = game.democrat_hand + 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') } else { - available_cards = game.communist_hand - } - for (let card of available_cards) { - gen_action_card(card) + view.prompt = 'Choose a card.' + let available_cards + if (game.active === DEM) { + available_cards = game.democrat_hand + } else { + available_cards = game.communist_hand + } + for (let card of available_cards) { + gen_action_card(card) + } } }, card(card) { @@ -463,13 +467,17 @@ states.choose_card = { //Check Ligachev if (game.active === DEM && game.persistent_events['ligachev'] && card !== 14) { - log('-3 VP from Ligachev') + log('-3 VP from C99') game.vp -= 3 check_vp() game.persistent_events['ligachev'] = false } game.state = 'play_card' }, + pass() { + log('No cards remaining. Passed') + end_round() + } /*done () { game.state = 'play_card' } */ @@ -607,7 +615,7 @@ states.resolve_opponent_event = { gen_action('tst_7') } view.prompt = `${clean_name(cards[game.played_card].name)}: you must resolve the opponent event.` - gen_action('event') + gen_action('opp_event') } else { view.prompt = 'Event resolved. End the action round.' gen_action('done') @@ -624,7 +632,7 @@ states.resolve_opponent_event = { game.state = 'finish_support_check_prep' valid_spaces_sc() }, - event() { + opp_event() { game.vm_event_to_do = false game.return_state = 'resolve_opponent_event' if (auto_resolve_events.includes(game.played_card) || switch_events.includes(game.played_card)) { @@ -859,7 +867,7 @@ states.support_check_prep = { if (spaces[game.selected_space].country === 'East_Germany' && game.persistent_events['austria_hungary_border_reopened'] && game.active === DEM) { game.state = 'austria_hungary_border_reopened_check' } - game.state = 'do_support_check' + //game.state = 'do_support_check' } else { game.state = 'do_support_check' } @@ -1253,8 +1261,8 @@ states.power_struggle = { log('Conceded') log_h2('Aftermath') log_h3('Support Loss') - if ((game.played_power_card >= 25 && game.played_power_card <= 30) || game.played_power_card === 53) {game.rally_win = 2} - if ((game.played_power_card >= 31 && game.played_power_card <= 36) || game.played_power_card === 54) {game.petition_win = 2} + //if ((game.played_power_card >= 25 && game.played_power_card <= 30) || game.played_power_card === 53) {game.rally_win = 2} + //if ((game.played_power_card >= 31 && game.played_power_card <= 36) || game.played_power_card === 54) {game.petition_win = 2} game.phase = 0 game.state = 'support_loss' }, @@ -1342,8 +1350,12 @@ states.support_loss ={ }, roll () { let roll = Math.floor(Math.random() * 6) + 1 + let rally_win = 0 + let petition_win = 0 log(`Rolled a ${roll}`) - roll = roll + game.raised_stakes + game.rally_win - game.petition_win + 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} + roll = roll + game.raised_stakes + rally_win - petition_win // Roll modifiers if (game.active === COM && game.persistent_events['yakovlev']) { @@ -1358,10 +1370,10 @@ states.support_loss ={ if (game.raised_stakes !== 0) { log(`+${game.raised_stakes} from Raising the Stakes`) } - if (game.rally_win !== 0) { + if (rally_win !== 0) { log('+2 from winning on a P25') } - if (game.petition_win !== 0) { + if (petition_win !== 0) { log('-2 from winning on a P31') } log(`Modified roll: ${roll}`) @@ -1401,7 +1413,11 @@ states.vp_roll = { roll () { let roll = Math.floor(Math.random() * 6) + 1 log(`Rolled a ${roll}`) - roll = roll + game.raised_stakes + game.rally_win - game.petition_win + 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} + if ((game.played_power_card >= 31 && game.played_power_card <= 36) || game.played_power_card === 54) {petition_win = 2} + roll = roll + game.raised_stakes + rally_win - petition_win if (game.active === DEM && game.persistent_events['yakovlev']) { log('+1 from Yakovlev Counsels Gorbachev') roll ++ @@ -1412,10 +1428,10 @@ states.vp_roll = { if (game.raised_stakes !== 0) { log(`+${game.raised_stakes} from Raising the Stakes`) } - if (game.rally_win !== 0) { + if (rally_win !== 0) { log('+2 from winning on a P25') } - if (game.petition_win !== 0) { + if (petition_win !== 0) { log('-2 from winning on a P31') } log(`Modified roll: ${roll}`) @@ -1635,7 +1651,7 @@ states.general_strike = { gen_action_card(card) } } else if (game.phase === 1) { - view.prompt = 'Discard a card: finished.' + view.prompt = 'General Strike: done.' gen_action('done') } else if (game.played_card > 0 ) { view.prompt = 'Roll a die.' @@ -1956,7 +1972,7 @@ function do_sc(space) { // Check if in Tiananmen Square Track Award else if (game.state === 'vm_tst_6_sc') { - roll = 2 + roll += 2 log('+2 from Tiananmen Square Track award') } else { @@ -1985,10 +2001,10 @@ function do_sc(space) { roll++ log('+1 from C74') } - if (game.warsaw_pact_summit) { + /*if (game.warsaw_pact_summit) { roll += 2 log('+2 from C76') - } + }*/ if (game.active === DEM && spaces[clicked_space].country === 'East_Germany' && game.persistent_events['grenztruppen']) { roll-- log('-1 from C59') @@ -2477,6 +2493,7 @@ function take_power(country) { log(`Democrat takes power in ${game.pwr_struggle_in}`) game.revolutions[country] = true + game.times_held[country] = 1 } @@ -2581,8 +2598,8 @@ function end_round() { console.log('in end') return} - //Check if the card has been removed or played to table. If not, discard. - if (!game.strategy_removed.includes(game.played_card) && !game.table_cards.includes(game.played_card)) { + //Check if the card has been removed or played to table, and if a card has been not been played. If not, discard. + if (!game.strategy_removed.includes(game.played_card) && !game.table_cards.includes(game.played_card) && game.played_card > 0) { game.strategy_discard.push(game.played_card) } @@ -2598,14 +2615,19 @@ function end_round() { game.vm_active_country = '' game.return_state = '' game.discard = false - game.warsaw_pact_summit = false + //game.warsaw_pact_summit = false game.vm_influence_added = {} game.return = '' game.valid_cards = [] game.valid_spaces = [] // Check for duplicate card entries - let card_check = [...game.strategy_deck, ...game.strategy_discard, ...game.strategy_removed, ...game.table_cards, ...game.communist_hand, ... game.democrat_hand]; + let card_check + if (game.samizdat_card > 0) { + card_check = [...game.strategy_deck, ...game.strategy_discard, ...game.strategy_removed, ...game.table_cards, ...game.communist_hand, ... game.democrat_hand, game.samizdat_card]; + } else { + card_check = [...game.strategy_deck, ...game.strategy_discard, ...game.strategy_removed, ...game.table_cards, ...game.communist_hand, ... game.democrat_hand]; + } function check_duplicates(array) { return new Set(array).size !== array.length; @@ -3021,6 +3043,7 @@ function reset_power() { game.rally_win = 0 game.petition_win = 0 game.tactics_fails = '' + game.view_opp_hand = false if (game.persistent_events['peasant_parties_revolt']){ permanently_remove(72) @@ -3037,10 +3060,10 @@ function reset_power() { game.table_cards = game.table_cards.filter(card => card !== 54) game.persistent_events['the_crowd_turns_against_ceausescu'] = false } - if (game.pwr_struggle_in === 'Romania' && game.persistent_events['systematization']){ - permanently_remove(69) - game.table_cards = game.table_cards.filter(card => card !== 69) - game.persistent_events['systematization'] = false + if (game.pwr_struggle_in === 'Romania' && game.persistent_events['securitate']){ + permanently_remove(70) + game.table_cards = game.table_cards.filter(card => card !== 70) + game.persistent_events['securitate'] = false } } @@ -3084,6 +3107,10 @@ function clean_name(str) { } } +function country_name(country) { + return country.replace(/_/g, ' ') +} + // ======== LOG COMMANDS ============= function log(msg) { @@ -3251,6 +3278,7 @@ function vm_log() { } function vm_if() { + console.log('vm_operand(1)', vm_operand(1)) if (!vm_operand(1)) { let balance = 1 while (balance > 0) { @@ -3282,6 +3310,38 @@ function vm_endif() { vm_next() } +function vm_goto_step(step) { + console.log('vm_goto_step called, target:', step) + + for (let i = 0; i < CODE[game.vm.fp].length; i++) { + if (CODE[game.vm.fp][i][0] === step) { + game.vm.ip = i; + vm_exec(); + return; + } + } + + console.log("ERROR: Target operation not found in the current procedure."); +} + + +function vm_goto(op, nop, dir, step) { + console.log('vm_inst(0)', vm_inst(0), op, nop) + console.log('vm_inst(0)', vm_inst(1), op, nop) + let balance = 1 + while (balance > 0) { + game.vm.ip += dir + if (vm_inst(0) === op) + --balance + if (vm_inst(0) === nop) + ++balance + if (game.vm.ip < 0 || game.vm.ip > CODE[game.vm.fp].length) + throw "ERROR" + } + game.vm.ip += step + vm_exec() +} + function event_prompt(str) { console.log('event_prompt called with', str) if (typeof str === "undefined") @@ -3325,7 +3385,7 @@ function vm_return() { } */ console.log('in vm_return, discard:', game.strategy_discard) game.support_check_modifier = 0 - game.view_opp_hand = false + //game.view_opp_hand = false console.log('in vm_return, game.vm_return:', game.vm_return, 'game.return_state:', game.return_state, 'game.vm_infl_to_do', game.vm_infl_to_do, 'game.vm_event_to_do', game.vm_event_to_do) /*if (!game.vm_infl_to_do && !game.vm_event_to_do) { if (game.round_player !== game.active) { @@ -4564,8 +4624,8 @@ function vm_tear_gas () { function vm_the_baltic_way() { game.playable_cards[84].playable = 1 game.stability++ - if (game.pieces[56].demCtrl === 0) {game.valid_spaces.push(56)} - if (game.pieces[70].demCtrl === 0) {game.valid_spaces.push(70)} + if (game.pieces[56].demCtrl === 0 && game.persistent_events['systematization'] !== 56) {game.valid_spaces.push(56)} + if (game.pieces[70].demCtrl === 0 && game.persistent_events['systematization'] !== 70) {game.valid_spaces.push(70)} log('+3 VP') game.vp += 3 check_vp() @@ -4629,7 +4689,7 @@ function vm_the_wall_must_go() { } function vm_warsaw_pact_summit() { - game.warsaw_pact_summit = true + game.warsaw_pact_summit = true /*What does this do? */ game.state = 'vm_warsaw_pact_summit' } @@ -4652,6 +4712,7 @@ function vm_workers_revolt() { } } else { for (let space of spaces) { + if (!space) continue let country = space.country if (game.revolutions[`${country}`] && game.pieces[space.space_id].demInfl > 0 && space.socio === 4) { game.valid_spaces.push(space.space_id); @@ -4669,13 +4730,13 @@ function vm_yakovlev_counsels_gorbachev() { } function vm_permanently_remove () { - // Check if the event is being played as the result of another card, e.g. Dash for the West - if (game.vm_event !== 0) { + // Check if the event is being played as the result of another card, e.g. Dash for the West, is a card which should be removed, and which hasn't already been removed! + if (game.vm_event !== 0 && cards[game.vm_event].remove === 1 && !game.strategy_removed.includes(game.vm_event)) { permanently_remove(game.vm_event) } - if (game.played_card !== 21) { + if (cards[game.played_card].remove ===1 && !game.strategy_removed.includes(game.played_card)) { permanently_remove(game.played_card) - } /*This means the card that called the event being played is also removed. Is there ever a time when this is a problem? Common European Home fix added */ + } /*This means the card that called the event being played is also removed if relevant. Think this makes sense */ vm_next() } @@ -4764,7 +4825,7 @@ states.vm_add_infl = { gen_action('done') } else if (game.vm_available_ops > 0 ) { - view.prompt = `${clean_name(cards[this_card()].name)}: add ${game.vm_available_ops} influence to ${event_prompt()}.` + view.prompt = `${clean_name(cards[this_card()].name)}: add ${game.vm_available_ops} influence${event_prompt()}.` for (let space_id of game.valid_spaces) { /*const space = spaces.find(s => s && s.space_id === space_id); @@ -4855,7 +4916,7 @@ states.vm_add_x_infl = { states.vm_add_limited_infl = { get inactive() { - return `resolve ${clean_name(cards[this_card()].name)}: add influcence.` + return `resolve ${clean_name(cards[this_card()].name)}: add influence.` }, prompt () { if (game.vm_available_ops > 0 && game.valid_spaces.length > 0) { @@ -5021,7 +5082,7 @@ states.vm_support_check_prep = { gen_action('done') } else { if (game.vm_available_ops > 0) { - view.prompt = `Select a space${event_prompt()}. ${pluralize(game.vm_available_ops, 'support check')} remaining.` + view.prompt = `${event_prompt()}. ${pluralize(game.vm_available_ops, 'support check')} remaining.` } for (let space_id of game.valid_spaces) { if (!space_id) continue @@ -5085,7 +5146,7 @@ states.vm_adamec = { return `resolve ${cards[88].name}.` }, prompt() { - view.prompt = 'Roll a die.' + view.prompt = 'Adamec: roll a die.' gen_action('roll') }, roll() { @@ -5123,14 +5184,14 @@ states.vm_brought_in_for_questioning = { } }, discard() { - game.temp = discard_card(game.democrat_hand) + game.vm_event = discard_card(game.democrat_hand) game.phase = 1 - if (cards[game.temp].side === 'C') { + if (cards[game.vm_event].side === 'C') { game.return = game.active - if (!auto_resolve_events.includes(game.temp)) { + if (!auto_resolve_events.includes(game.vm_event)) { next_player() } - goto_vm(game.temp) + goto_vm(game.vm_event) } }, done() { @@ -5177,16 +5238,16 @@ states.vm_common_european_home = { return `resolve ${cards[game.played_card].name}.` }, prompt() { - if (game.temp === 0) { + if (game.vm_event === 0) { view.prompt = `Common European Home: play an opponent's card, event does not occur.` for (let card of game.valid_cards) { gen_action_card(card) } } else { - view.prompt = `Play ${cards[game.temp].name} for:` + view.prompt = `Play ${cards[game.vm_event].name} for:` gen_action('influence') gen_action('support_check') - if (game.active === DEM && game.temp === 87 ) { + if (game.active === DEM && game.vm_event === 87 ) { return /*Special condition if card is actually Kohl Proposes Reunification*/ } if (game.active === DEM && game.dem_tst_attempted_this_turn === 0 || game.active === COM && game.com_tst_attempted_this_turn === 0) { @@ -5198,11 +5259,11 @@ states.vm_common_european_home = { log(`Played with C${cards[card].number}`) game.valid_cards = [] discard(card) - game.temp = card + game.vm_event = card }, influence(){ push_undo() - game.vm_available_ops = cards[game.temp].ops + game.vm_available_ops = cards[game.vm_event].ops valid_spaces_infl() game.state = 'vm_add_infl' }, @@ -5436,7 +5497,7 @@ states.vm_foreign_currency_debt_burden = { states.vm_goodbye_lenin = { get inactive() { - return `resolve ${cards[game.played_card].name}.` + return `resolve ${clean_name(cards[game.played_card].name)}.` }, prompt() { if (game.valid_cards.length > 0 ) { @@ -5463,10 +5524,10 @@ states.vm_goodbye_lenin = { states.vm_goodbye_lenin_ops = { get inactive() { - return `resolve ${cards[game.played_card].name}.` + return `resolve ${clean_name(cards[this_card()].name)}.` }, prompt() { - view.prompt = `Play ${cards[game.played_card].name} for:` + view.prompt = `Play ${clean_name(cards[this_card()].name)} for:` gen_action('influence') gen_action('support_check') if ((game.active === DEM && game.dem_tst_attempted_this_turn === 0 ) || (game.active === COM && game.com_tst_attempted_this_turn === 0 )) { @@ -5475,7 +5536,7 @@ states.vm_goodbye_lenin_ops = { }, influence(){ push_undo() - game.vm_available_ops = cards[game.played_card].ops + game.vm_available_ops = cards[this_card()].ops valid_spaces_infl() game.state = 'vm_add_infl' }, @@ -5724,14 +5785,18 @@ states.vm_laszlo_tokes = { } valid_spaces_infl() game.valid_spaces = game.valid_spaces.filter(space_id => spaces[space_id].country === 'Romania') - game.state = 'vm_add_infl' + vm_next() + //game.state = 'vm_add_infl' }, support_check() { push_undo() game.vm_available_ops = 2 - game.state = 'vm_support_check_prep' + //game.state = 'vm_support_check_prep' valid_spaces_sc() game.valid_spaces = game.valid_spaces.filter(space_id => spaces[space_id].country === 'Romania') + vm_goto_step(vm_support_check) + //game.vm.ip = 7 /*Has to be a better way to do this! */ + //vm_next() } } @@ -5771,13 +5836,13 @@ states.vm_malta_summit = { return `resolve ${cards[game.played_card].name}.` }, prompt() { - if (game.phase === 1) { - view.prompt = 'Roll a die.' + /*if (game.phase === 1) {*/ + view.prompt = 'Malta Summit: roll a die.' gen_action('roll') - } else { + /*} else { view.prompt = 'Done.' gen_action('done') - } + }*/ }, roll() { clear_undo() @@ -5797,18 +5862,19 @@ states.vm_malta_summit = { if (game.pieces[43].comInfl > 0 ) {game.valid_spaces.push(43)} if (game.pieces[51].comInfl > 0 ) {game.valid_spaces.push(51)} if (game.pieces[69].comInfl > 0 ) {game.valid_spaces.push(69)} - game.vm_available_ops = 5 + //game.vm_available_ops = 5 game.remove_opponent_infl = true - game.state = 'vm_remove_infl' + vm_next() } else { log('Summit failed') - game.phase++ + //game.phase++ + vm_goto_step(vm_permanently_remove) } }, - done() { + /*done() { vm_next() - } + }*/ } states.vm_modrow = { @@ -5816,7 +5882,7 @@ states.vm_modrow = { return `resolve ${cards[game.played_card].name}.` }, prompt() { - view.prompt = 'Roll a die.' + view.prompt = `Modrow: roll a die.` gen_action('roll') }, roll(){ @@ -5841,7 +5907,7 @@ states.vm_nepotism = { }, prompt() { //if (game.phase === 1 ) { - view.prompt = 'Roll a die.' + view.prompt = 'Nepotism: roll a die.' gen_action('roll') /*} else { view.prompt = 'Roll a die: done.' @@ -5905,14 +5971,14 @@ states.vm_nomenklatura = { return `resolve ${cards[game.played_card].name}.` }, prompt() { - view.prompt = 'Choose: remove Democratic influence from an elite space or add influence to an elite space.' + view.prompt = 'Nomenklatura: choose to remove all Democratic influence from Elite spaces or add 3 influence to any Elite space(s).' gen_action('remove') gen_action('add') }, remove() { push_undo() game.valid_spaces = [] - for (let i = 0; i < game.pieces.length; i++) { + for (let i = 1; i < game.pieces.length; i++) { let piece = game.pieces[i] let space = spaces[i] @@ -5920,7 +5986,8 @@ states.vm_nomenklatura = { game.valid_spaces.push(piece.space_id) } } - game.vm_available_ops = 1 + game.vm_available_ops = game.valid_spaces.length + game.remove_opponent_infl = true game.state = 'vm_nomenklatura_remove' }, add() { @@ -5946,7 +6013,7 @@ states.vm_nomenklatura_remove = { view.prompt = 'Remove influence: done.' gen_action('done') } else { - view.prompt = 'Remove all Democratic influence from an elite space.' + view.prompt = 'Nomenklatura: remove all Democratic influence from Elite spaces.' for (let space_id of game.valid_spaces) { /*const space = spaces.find(s => s && s.space_id === space_id); */ @@ -5955,7 +6022,11 @@ states.vm_nomenklatura_remove = { } }, infl(space) { + push_undo() vm_do_remove_all_infl(space) + if (game.vm_available_ops === 0) { + vm_next() + } }, done() { vm_next() @@ -5971,14 +6042,14 @@ states.vm_nomenklatura_add = { view.prompt = 'Add influence: done.' gen_action('done') } else { - view.prompt = `Add influence to elite spaces. ${game.vm_available_ops} influence remaining.` + view.prompt = `Nomenklatura: add 3 influence to any Elite space(s). ${game.vm_available_ops} influence remaining.` for (let space_id of game.valid_spaces) { gen_action_infl(spaces[space_id].name_unique); } } }, infl(space) { - vm_do_add_infl(space) + vm_do_add_infl_free(space) }, done() { vm_next() @@ -6048,7 +6119,7 @@ states.vm_shock_therapy = { view.prompt = 'Shock Therapy: done.' gen_action('done') } else { - view.prompt = 'Roll a die.' + view.prompt = 'Shock Therapy: roll a die.' gen_action('roll') } }, @@ -6070,10 +6141,10 @@ states.vm_shock_therapy = { log(`-${game.temp} from Communist controlled Worker and Farmer spaces`) log(`Modified roll: ${roll - game.temp}`) if ((roll - game.temp) > 2) { - log('Shock Therapy is successful. +3 VP') + log('C93 is successful. +3 VP') vm_next() } else { - log('Shock Therapy is unsuccessful. Required 3 or more') + log('C93 is unsuccessful. Required 3 or more') game.phase++ } }, @@ -6228,14 +6299,14 @@ states.vm_the_tyrant_is_gone = { states.vm_the_wall_must_go = { get inactive() { - return `resolve ${cards[game.played_card].name}.` + 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.' gen_action('done') } else { - view.prompt = ('The Wall Must Go! Roll a die:') + view.prompt = ('The Wall Must Go! Roll a die.') gen_action('roll') } }, @@ -6276,11 +6347,11 @@ states.vm_the_wall_must_go = { log(`Democrat: ${game.the_wall_must_go['dem_wins']}, Communist: ${game.the_wall_must_go['com_wins']}`) } if (game.the_wall_must_go['dem_wins'] === 2) { - log('The Democrat wins The Wall Must Go!') + log('The Democrat wins C86') return } if (game.the_wall_must_go['com_wins'] === 2) { - log('The Communist wins The Wall Must Go!') + log('The Communist wins C86') return } next_player() @@ -6323,7 +6394,9 @@ states.vm_warsaw_pact_summit = { } } game.vm_available_ops = 4 - game.state = 'vm_add_infl' + game.phase = 3 + //game.state = 'vm_add_infl' + vm_next() }, support_check(){ push_undo() @@ -6335,7 +6408,9 @@ states.vm_warsaw_pact_summit = { } } game.vm_available_ops = 2 - game.state = 'vm_support_check_prep' + //game.state = 'vm_support_check_prep' + console.log('game.phase',game.phase) + vm_next() } } @@ -6363,6 +6438,7 @@ states.vm_we_are_the_people_remove = { }, done() { if (!game.vm_influence_added[6]) { + log('No influence removed') vm_next() } else { game.valid_spaces = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] @@ -6402,7 +6478,7 @@ states.vm_workers_revolt = { return `resolve ${cards[game.played_card].name}.` }, prompt() { - view.prompt = 'Select a target for the Workers Revolt.' + view.prompt = 'Workers Revolt: select a Worker Space in a country your opponent has power.' for (let space_id of game.valid_spaces) { /*const space = spaces.find(s => s && s.space_id === space_id); if (space) {*/ @@ -6536,7 +6612,7 @@ states.vm_tst_6 = { gen_action('done') return } else { - view.prompt = 'Tiananmen Square Track award: you have a free 2 op support check.' + view.prompt = 'Tiananmen Square Track award: you have a free 2 Ops support check.' for (let space_id of game.valid_spaces) { if (space_id) { gen_action_sc(spaces[space_id].name_unique); @@ -6666,7 +6742,7 @@ states.vm_tst_8_ops = { states.vm_support_surges = { inactive: 'draw cards.', prompt() { - view.prompt = 'Draw 2 cards' + view.prompt = 'Support Surges: draw 2 cards.' gen_action('draw') }, draw() { @@ -6686,10 +6762,10 @@ states.vm_support_falters = { inactive: 'discard cards.', prompt() { if (game.vm_available_ops > 0) { - view.prompt = 'Discard a card.' + view.prompt = 'Support Falters: discard a card.' gen_action('discard') } else { - view.prompt = 'Discard cards: done.' + view.prompt = 'Support Flaters: done.' gen_action('done') } }, @@ -6715,7 +6791,7 @@ CODE[1] = [ // Legacy of Martial Law* [ vm_valid_spaces_country_opp, 'Poland' ], [ vm_legacy_of_martial_law ], [ vm_valid_spaces_country_sc, 'Poland' ], - [ vm_prompt, ' in Poland' ], + [ vm_prompt, 'Make a Support Check in Poland' ], [ vm_support_check, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -6724,7 +6800,7 @@ CODE[1] = [ // Legacy of Martial Law* CODE[2] = [ // Solidarity Legalised* [ vm_solidarity_legalised ], [ vm_valid_spaces_solidarity_legalised ], - [ vm_prompt, 'every uncontrolled Worker and Farmer space in Poland' ], + [ vm_prompt, 'to every uncontrolled Worker and Farmer space in Poland' ], [ vm_add_limited_infl, 9, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -6735,7 +6811,7 @@ CODE[3] = [ // Walesa [ vm_prompt, 'any space(s) in Poland' ], [ vm_add_infl_free, 4 ], [ vm_valid_spaces_country_sc, 'Poland' ], - [ vm_prompt, ' in Poland' ], + [ vm_prompt, 'Make Support Checks in Poland' ], [ vm_support_check, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -6794,8 +6870,8 @@ CODE[11] = [ // Dissident arrested CODE[12] = [ // Apparatchicks [ vm_valid_spaces_socio, 2 ], - [ vm_prompt, 'any Bureaucratic space(s)' ], - [ vm_add_infl, 3 ], + [ vm_prompt, ' to any Bureaucratic space(s)' ], + [ vm_add_infl_free, 3 ], [ vm_permanently_remove ], [ vm_return ], ] @@ -6810,6 +6886,7 @@ CODE[14] = [ // Gorbachev Charms the West [ vm_valid_spaces_opponent ], [ vm_remove_opp_infl, 2 ], [ vm_valid_spaces_sc ], + [ vm_prompt, 'Make a Support Check' ], [ vm_support_check, 1 ], [ vm_return ], ] @@ -6833,7 +6910,7 @@ CODE[17] = [ // Roundtable talks CODE[18] = [ // Poszgay Defends the Revolution [ vm_poszgay ], - [ vm_prompt, 'spaces in Hungary not under Democratic control' ], + [ vm_prompt, 'to 4 spaces in Hungary not under Democratic control' ], [ vm_add_limited_infl, 4, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -6841,7 +6918,7 @@ CODE[18] = [ // Poszgay Defends the Revolution CODE[19] = [ // Papal vist [ vm_valid_spaces, 20, 35, 38 ], - [ vm_prompt, 'in any Catholic Church space' ], + [ vm_prompt, 'any Catholic Church space' ], [ vm_add_x_infl, 3 ], [ vm_permanently_remove ], [ vm_return ], @@ -6893,7 +6970,7 @@ CODE[27] = [ // Consumerism [ vm_remove_opp_infl, 1 ], [ vm_valid_spaces_opponent_socio, 4 ], [ vm_active_country ], - [ vm_prompt, ' Worker space in the same country' ], + [ vm_prompt, 'Make a support check in a Worker space in the same country' ], [ vm_support_check, 1 ], [ vm_return ], ] @@ -6994,7 +7071,7 @@ CODE[40] = [ // Hungarian Democratic Forum [ vm_prompt, 'Hungary' ], [ vm_add_infl_free, 3 ], [ vm_valid_spaces_country_sc, 'Hungary' ], - [ vm_prompt, ' in Hungary' ], + [ vm_prompt, 'Make a Support Check in Hungary' ], [ vm_support_check, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -7005,7 +7082,7 @@ CODE[41] = [ // Ceausescu* [ vm_prompt, ' from Romania' ], [ vm_remove_opp_infl, 3 ], [ vm_valid_spaces_country_sc, 'Romania' ], - [ vm_prompt, ' in Romania' ], + [ vm_prompt, 'Make a support check in Romania' ], [ vm_support_check, 1 ], [ vm_ceausescu ], [ vm_permanently_remove ], @@ -7025,10 +7102,12 @@ CODE[43] = [ // Power Struggle - Bulgaria CODE[44] = [ // Inflationary Currency [ vm_inflationary_currency ], [ vm_valid_spaces_country_sc ], + [ vm_prompt, ()=>` from ${country_name(game.vm_active_country)}` ], [ vm_remove_opp_infl, 2 ], [ vm_inflationary_currency_discard ], [ vm_if, ()=>discarded_card() ], [ vm_valid_spaces_country_sc ], + [ vm_prompt, ()=>`Make a Support Check in ${game.vm_active_country}` ], [ vm_support_check, 1 ], [ vm_endif ], [ vm_permanently_remove ], @@ -7144,7 +7223,7 @@ CODE[61] = [ // 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, ' in East Germany' ], + [ vm_prompt, 'Make 5 Support Checks in East Germany' ], [ vm_support_check, 5 ], [ vm_permanently_remove ], [ vm_return ], @@ -7223,7 +7302,13 @@ CODE[73] = [ // Laszlo Tokes* [ vm_valid_spaces, 50, 56 ], [ vm_prompt, 'in Timisoara and Harghita/Covasna' ], [ vm_add_limited_infl, 2, 1 ], + [ vm_prompt, ' in Romania' ], [ vm_laszlo_tokes ], + [ vm_add_infl ], + [ vm_permanently_remove ], + [ vm_return ], + [ vm_prompt, 'Make 2 Support Checks in Romania' ], + [ vm_support_check, 2 ], [ vm_permanently_remove ], [ vm_return ], ] @@ -7241,6 +7326,14 @@ CODE[75] = [ // Exit Visas* CODE[76] = [ // Warsaw Pact Summit [ vm_warsaw_pact_summit ], + [ vm_if, ()=>game.phase === 3 ], + [ vm_prompt, ' spaces with no Democratic influence' ], + [ vm_add_infl_free, 4 ], + [ vm_else ], + [ vm_prompt, 'Select a Student or Intellectual space' ], + [ vm_valid_spaces_country_socio_2, 3,, 4 ], + [ vm_support_check_modified, 2, 2 ], + [ vm_endif ], [ vm_permanently_remove ], [ vm_return ], ] @@ -7304,7 +7397,7 @@ CODE[84] = [ // Breakaway Baltic Republics* [ vm_prompt, 'any Minorities space' ], [ vm_take_control_prep, 1 ], [ vm_valid_spaces_sc ], - [ vm_prompt, ' for a support check' ], + [ vm_prompt, 'Select a space for a support check' ], [ vm_support_check, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -7350,7 +7443,7 @@ CODE[90] = [ // Civic Forum* [ vm_add_infl_free, 4 ], [ vm_civic_forum ], [ vm_valid_spaces_country_sc, 'Czechoslovakia' ], - [ vm_prompt, ' in Czechoslovakia' ], + [ vm_prompt, 'Select a space in Czechoslovakia' ], [ vm_support_check, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -7361,7 +7454,7 @@ CODE[91] = [ // My First Banana* [ vm_prompt, ' from East Germany' ], [ vm_remove_opp_infl, 2 ], [ vm_valid_spaces_country_sc, 'East_Germany' ], - [ vm_prompt, ' in East Germany' ], + [ vm_prompt, 'Select a space in East Germany' ], [ vm_support_check, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -7376,6 +7469,7 @@ CODE[92] = [ // Betrayal CODE[93] = [ // Shock Therapy* [ vm_shock_therapy ], [ vm_valid_spaces_country ], + [ vm_prompt, ()=>`to ${game.vm_active_country}` ], [ vm_add_infl, 3 ], [ vm_permanently_remove ], [ vm_return ], @@ -7386,7 +7480,7 @@ CODE[94] = [ // Union of Democratic Forces* [ vm_prompt, ' from Bulgaria' ], [ vm_remove_opp_infl, 4 ], [ vm_valid_spaces_country_sc, 'Bulgaria' ], - [ vm_prompt, ' in Bulgaria' ], + [ vm_prompt, 'Make 2 Support Checks in Bulgaria' ], [ vm_support_check, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -7400,6 +7494,7 @@ CODE[95] = [ // Power Struggle - Romania CODE[96] = [ // The Chinese Solution* [ vm_the_chinese_solution ], [ vm_valid_spaces_country_sc ], + [ vm_prompt, ()=>`Make 5 Support Checks in ${game.vm_active_country}` ], [ vm_support_check_modified, 5, 3 ], [ vm_permanently_remove ], [ vm_return ], @@ -7419,7 +7514,7 @@ CODE[98] = [ // Politburo Intrigue* [ vm_prompt, ' from Bulgaria' ], [ vm_remove_limited_opp_infl, 3, 2 ], [ vm_valid_spaces_country_sc, 'Bulgaria' ], - [ vm_prompt, ' in Bulgaria' ], + [ vm_prompt, 'Make a support check in Bulgaria' ], [ vm_support_check, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -7466,9 +7561,11 @@ CODE[104] = [ // New Year's Eve Party* CODE[105] = [ // Public Against Violence* [ vm_valid_spaces, 36, 37 ], [ vm_prompt, 'Kosice and Presov' ], - [ vm_add_limited_infl, 4, 2 ], + [ vm_add_x_infl, 2 ], + [ vm_valid_spaces, 36, 37 ], + [ vm_add_x_infl, 2 ], [ vm_public_against_violence ], - [ vm_prompt, ': Bratislava' ], + [ vm_prompt, 'Make a Support Check in Bratislava' ], [ vm_support_check_modified, 1, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -7479,6 +7576,7 @@ CODE[106] = [ // Social Democratic Platform Adopted* [ vm_valid_spaces_country ], [ vm_add_infl_free, 2 ], [ vm_valid_spaces_country_sc ], + [ vm_prompt, ()=>`Make a Support Check in ${game.vm_active_country}` ], [ vm_support_check, 1 ], [ vm_permanently_remove ], [ vm_return ], @@ -7486,7 +7584,7 @@ CODE[106] = [ // Social Democratic Platform Adopted* CODE[107] = [ // Massacre in Timisoara* [ vm_valid_spaces_country_sc, 'Romania' ], - [ vm_prompt, ' in Romania' ], + [ vm_prompt, 'Make Support Checks in Romania' ], [ vm_support_check_modified, 2, 2 ], [ vm_permanently_remove ], [ vm_return ], @@ -7508,6 +7606,8 @@ CODE[109] = [ // Kremlin Coup* CODE[110] = [ // Malta Summit* [ vm_malta_summit ], + [ vm_prompt, ' from Elite spaces' ], + [ vm_remove_opp_infl, 5 ], [ vm_permanently_remove ], [ vm_return ], ] @@ -7515,13 +7615,14 @@ CODE[110] = [ // Malta Summit* + // ============= TIANANMEN SQUARE TRACK AWARDS ==================== CODE[203] = [//Tiananmen Square space 3 award [vm_tst_3], [vm_return] ] CODE[204] = [//Tiananmen Square space 4 award - [vm_valid_spaces_sc], + [vm_valid_spaces_opponent], [vm_tst_4], [vm_return] ] -- cgit v1.2.3