From d365aebd952f1ded9753bb9eb53e2a45bdbaa978 Mon Sep 17 00:00:00 2001
From: iainp5 <iain.pearce.ip@gmail.com>
Date: Wed, 2 Oct 2024 22:39:44 +0100
Subject: Fix for TST awards

---
 rules.js | 248 ++++++++++++++++++++++++++++++++-------------------------------
 1 file changed, 127 insertions(+), 121 deletions(-)

(limited to 'rules.js')

diff --git a/rules.js b/rules.js
index da3cc3f..e41e632 100644
--- a/rules.js
+++ b/rules.js
@@ -146,7 +146,7 @@ function start_game() {
 	game.valid_spaces = valid_spaces_setup()
 	game.available_ops = 2
 	game.phase = 0
-	log_h1("Place starting influence")
+	log_h1("Place starting Support Points")
 	log_side()
 }
 
@@ -306,16 +306,16 @@ exports.action = function (state, player, action, arg) {
 // ============= GAME STATES =======================
 
 states.com_init = {
-	inactive: 'place starting influence',
+	inactive: 'place starting SPs',
 	prompt() {
 		if (game.available_ops == 0) {
-			view.prompt = 'Place starting influence: done.';
+			view.prompt = 'Place starting SPs: done.';
             gen_action("done");
             return;
 		} else if (game.starting_infl.dem_starting_infl === 2) {
-			view.prompt = `Place your last ${game.available_ops} starting influence.`	
+			view.prompt = `Place your last ${pluralize(game.available_ops,'starting SP')}.`	
 		} else {
-			view.prompt = `Place ${game.available_ops} starting influence.`
+			view.prompt = `Place ${pluralize(game.available_ops,'starting SP')}.`
 		}
         for (let space_id of game.valid_spaces) {
             if (space_id) {
@@ -328,8 +328,6 @@ states.com_init = {
 
 	}, 
 	done() {
-		view.prompt='Influence added.'
-
 		if (game.summary.length > 0) {
 			pop_summary()
 			log_br()
@@ -354,16 +352,16 @@ states.com_init = {
 }
 
 states.dem_init = {
-	inactive: 'place starting influence.',
+	inactive: 'place starting SPs.',
 	prompt() {
 		if (game.available_ops == 0) {
-			view.prompt = 'Place starting influence: done.';
+			view.prompt = 'Place starting SPs: done.';
             gen_action("done");
             return;
 		} else if (game.starting_infl.com_starting_infl === 2) {
-			view.prompt = `Place your last ${game.available_ops} starting influence.`		
+			view.prompt = `Place your last ${pluralize(game.available_ops,'starting SP')}.`		
 		} else {
-			view.prompt = `Place ${game.available_ops} starting influence`
+			view.prompt = `Place ${pluralize(game.available_ops,'starting SP')}.`
 		}
 		for (let space_id of game.valid_spaces) {
 			gen_action_infl(spaces[space_id].name_unique);
@@ -374,8 +372,6 @@ states.dem_init = {
 	}, 
 	
 	done() {
-		view.prompt='Influence added.'
-
 		if (game.summary.length > 0) {
 			pop_summary()
 			log_br()
@@ -555,7 +551,7 @@ states.play_card ={
 	},
 	influence() {
 		push_undo()
-		log_gap(`Played C${cards[game.played_card].number} for influence`)
+		log_gap(`Played C${cards[game.played_card].number} to place SPs`)
 
 		
 		// Check if Common European Home played for influence
@@ -694,15 +690,15 @@ states.resolve_opponent_event = {
 }
 
 states.finish_add_infl = {
-	inactive: 'add influence.',
+	inactive: 'add SPs.',
 	prompt () {
 		if (game.available_ops === 0) {
-			view.prompt = 'Place influence: done.'
+			view.prompt = 'Place SPs: done.'
 			gen_action("done")
 			return;
 		} 
 
-		view.prompt = `Add influence: ${game.available_ops} remaining`
+		view.prompt = `Add SPs: ${game.available_ops} remaining`
 
 	// Generate actions for valid spaces
 		for (let space_id of game.valid_spaces) {
@@ -790,15 +786,15 @@ states.finish_do_support_check = {
 }
 
 states.add_influence = {
-	inactive: 'add influence.',
+	inactive: 'add SPs.',
 	prompt () {
 			if (game.available_ops <= 0) {
-				view.prompt = 'Place influence: done.'
+				view.prompt = 'Place SPs: done.'
             	gen_action("done")
             	return
 			} 
 
-		view.prompt = `Add influence: ${game.available_ops} remaining.`
+		view.prompt = `Add SPs: ${game.available_ops} remaining.`
 
         // Generate actions for valid spaces
         for (let space_id of game.valid_spaces) {
@@ -1087,7 +1083,7 @@ states.draw_power_cards = {
 
 states.the_crowd_turns_against_ceausescu_prep = {
 	get inactive() {
-		return `resolve ${cards[54].name}.`
+		return `resolve ${clean_name(cards[54].name)}.`
 	},
 	prompt() {
 		view.prompt = 'The Crowd Turns Against Ceausescu: draw cards.'
@@ -1105,7 +1101,7 @@ states.the_crowd_turns_against_ceausescu_prep = {
 
 states.vm_the_crowd_turns_against_ceausescu = {
 	get inactive() {
-		return `resolve ${cards[54].name}.`
+		return `resolve ${clean_name(cards[54].name)}.`
 	},
 	prompt() {
 		view.prompt = `You have ${game.vm_available_ops} operations points. Play for:`
@@ -1129,16 +1125,16 @@ states.vm_the_crowd_turns_against_ceausescu = {
 }
 
 states.the_crowd_turns_against_ceausescu_infl = {
-	inactive: 'add influence.',
+	inactive: 'add SPs.',
 	prompt () {
 		if (game.vm_available_ops === 0) 
 			{
-			view.prompt = 'Place influence: done.';
+			view.prompt = 'Place SPs: done.';
         	gen_action("done");
         	return;
 		} 
 
-	view.prompt = `Add influence: ${game.vm_available_ops} remaining`
+	view.prompt = `Add SPs: ${game.vm_available_ops} remaining`
      for (let space of game.valid_spaces) {
          gen_action_infl(spaces[space].name_unique)
            }
@@ -1458,7 +1454,7 @@ states.support_loss ={
 			view.prompt = 'You lost the Power Struggle. Roll a die for Support Loss.'
 			gen_action('roll')
 		} else if (game.phase === 1 && game.available_ops > 0 && game.valid_spaces.length > 0) {
-			view.prompt = `Support Loss: remove ${game.available_ops} influence.`
+			view.prompt = `Support Loss: remove ${pluralize(game.available_ops,'SP')}.`
 
 			for (let space_id of game.valid_spaces) {
 					gen_action_infl(spaces[space_id].name_unique)
@@ -1467,7 +1463,7 @@ states.support_loss ={
 			view.prompt = 'Support Loss: finished.'
 			gen_action('done')
 		} else if (game.phase === 1 && game.valid_spaces.length === 0) {
-			view.prompt = 'Support Loss: no remaining influence to remove.'
+			view.prompt = 'Support Loss: no remaining SPs to remove.'
 			gen_action('done')
 		}
 	},
@@ -1505,7 +1501,7 @@ states.support_loss ={
 		}
 		game.available_ops = support_loss_roll[modified_roll]
 		if (game.available_ops === 0) {
-			log('Does not remove influence')
+			log('Does not remove SPs')
 		}
 		game.phase++
 		valid_spaces_support_loss()
@@ -2139,7 +2135,7 @@ function add_infl(space) {
 	console.log('clicked_space', clicked_space)
 	//console.log('at start, event', game.persistent_events['austria_hungary_border_reopened'], 'ahbr', game.austria_hungary_border_reopened, 'tracker', game.austria_hungary_border_reopened_tracker)
 	//log(`Added 1 influence in %${clicked_space}`)
-	log_summary(`Added £ influence in %${clicked_space}`)
+	log_summary(`Added £ SP in %${clicked_space}`)
 	
 	if (spaces[clicked_space].country !== 'East_Germany'){
 		game.austria_hungary_border_reopened_tracker = false
@@ -2207,7 +2203,7 @@ function remove_infl(space) {
 	push_undo()
 	const clicked_space = find_space_index(space)
 	//log(`Removed 1 influence from %${clicked_space}.`)
-	log_summary(`Removed £ influence from %${clicked_space}.`)
+	log_summary(`Removed £ SP from %${clicked_space}.`)
 	
 	if (game.remove_opponent_infl === true) {
 		if (game.active === COM) {
@@ -2800,7 +2796,7 @@ function do_tst_attempt() {
 
 	// TIANANMEN SQUARE ATTEMPT
 	game.return = game.active
-	game.return_state = 'tiananmen_square_attempt'
+	game.return_state = 'tiananmen_square_attempt_success'
 	if (game.active === DEM) {
 		game.dem_tst_attempted_this_turn = 1
 		if (roll >= dem_tst_req[game.dem_tst_position]) {
@@ -2809,8 +2805,8 @@ function do_tst_attempt() {
 			game.dem_tst_position++
 			game.dem_tst_attempted = 0
 			if (game.dem_tst_position === 3 && game.com_tst_position < 3) {goto_vm(203)}
-			if (game.dem_tst_position === 4 && game.com_tst_position < 4) {goto_vm(204)}
-			game.state = 'tiananmen_square_attempt_success'	
+			else if (game.dem_tst_position === 4 && game.com_tst_position < 4) {goto_vm(204)}
+			else {game.state = 'tiananmen_square_attempt_success'}
 		} else {
 			log(`${dem_tst_req[game.dem_tst_position]} required: fail`)
 			game.dem_tst_attempted = 1
@@ -2823,8 +2819,8 @@ function do_tst_attempt() {
 			game.com_tst_position++
 			game.com_tst_attempted = 0
 			if (game.com_tst_position === 3 && game.dem_tst_position < 3) {goto_vm(203)}
-			if (game.com_tst_position === 4 && game.dem_tst_position < 4) {goto_vm(204)}
-			game.state = 'tiananmen_square_attempt_success'	
+			else if (game.com_tst_position === 4 && game.dem_tst_position < 4) {goto_vm(204)}
+			else {game.state = 'tiananmen_square_attempt_success'}	
 		} else {
 			log(`${com_tst_req[game.com_tst_position]} required: fail`)
 			game.com_tst_attempted = 1
@@ -3375,6 +3371,8 @@ function end_round() {
 		game.round_player = DEM
 		if (game.active !== DEM) {
 			next_player()
+		} else {
+			log_h3('Democratic Action Round')
 		}
 		game.state = 'choose_card'
 		return
@@ -3927,7 +3925,11 @@ function log_summary(msg) {
 function pop_summary() {
 	if (game.summary.length > 0) {
 		for (let [n, msg] of game.summary) {
-			log(msg.replace("£", String(n)))
+			if (n > 1) {
+				log(msg.replace("£ SP", `${n} SPs`));
+			} else {
+				log(msg.replace("£ SP", `${n} SP`));
+			}
 		}
 	} 
 	game.summary = []
@@ -4468,7 +4470,7 @@ function vm_do_add_infl(space) {
 	//console.log('at start, event', game.persistent_events['austria_hungary_border_reopened'], 'ahbr', game.austria_hungary_border_reopened, 'tracker', game.austria_hungary_border_reopened_tracker)
 	//log(`Added 1 influence in %${clicked_space}.`)
 	
-	log_summary(`Added £ influence in %${clicked_space}.`)
+	log_summary(`Added £ SP in %${clicked_space}.`)
 
 	if (spaces[clicked_space].country !== 'East_Germany'){
 		game.austria_hungary_border_reopened_tracker = false
@@ -4500,7 +4502,7 @@ function vm_do_add_infl(space) {
 	// Check Austria Hungary Border Reopened is true and condition has been met
 	if (game.vm_available_ops === 0 && game.active === DEM && game.persistent_events['austria_hungary_border_reopened'] && game.austria_hungary_border_reopened_tracker) {
 		game.vm_available_ops ++
-		log('+1 influence from C58')
+		log('+1 Op from C58')
 		game.austria_hungary_border_reopened_tracker = false
 		game.valid_spaces = game.valid_spaces.filter(n => spaces[n].country === 'East_Germany')
 	}
@@ -4535,7 +4537,7 @@ function vm_do_add_infl_free(space) {
 	const clicked_space = find_space_index(space)
 	//log(`Added 1 influence in %${clicked_space}.`)
 
-	log_summary(`Added £ influence in %${clicked_space}.`)
+	log_summary(`Added £ SP in %${clicked_space}.`)
 
 	// Update influence values
 	if (game.active === COM) {
@@ -4569,7 +4571,7 @@ function vm_add_x_infl() {
 function vm_do_add_x_infl(space) {
 	push_undo()
 	const clicked_space = find_space_index(space)
-	log(`Added ${game.vm_available_ops} influence in %${clicked_space}.`)
+	log(`Added ${game.vm_available_ops} SPs in %${clicked_space}.`)
 	
 
 	if (game.active === COM) {
@@ -4593,7 +4595,7 @@ function vm_do_add_limited_infl(space, max_infl) {
 	const clicked_space = find_space_index(space) 
 	//log(`Added 1 influence in %${clicked_space}.`)
 
-	log_summary(`Added £ influence in %${clicked_space}.`)
+	log_summary(`Added £ SP in %${clicked_space}.`)
     game.vm_available_ops --
 
     if (!game.vm_influence_added) {
@@ -4642,7 +4644,7 @@ function vm_do_remove_infl(space) {
 	push_undo()
 	const clicked_space = find_space_index(space)
 	//log(`Removed 1 influence from %${clicked_space}.`)
-	log_summary(`Removed £ influence from %${clicked_space}.`)
+	log_summary(`Removed £ SP from %${clicked_space}.`)
 
 	if (!game.vm_influence_added) {
         game.vm_influence_added = {};
@@ -4722,7 +4724,7 @@ function vm_do_remove_x_infl(space) {
 		}
 	}
 
-	log(`Removed ${game.vm_available_ops} influence from %${clicked_space}`)
+	log(`Removed ${game.vm_available_ops} SPs from %${clicked_space}`)
 	check_control_change(clicked_space)
 
 	game.vm_available_ops = 0
@@ -4739,7 +4741,7 @@ function vm_remove_limited_opp_infl() {
 function vm_do_remove_limited_infl(space, max_infl) {
 	push_undo()
 	const clicked_space = find_space_index(space) 
-	log(`Removed influence from %${clicked_space}.`)
+	log(`Removed SP from %${clicked_space}.`)
     game.vm_available_ops --
 
 
@@ -4781,7 +4783,7 @@ function vm_remove_all_infl() {
 function vm_do_remove_all_infl(space) {
 	push_undo()
 	const clicked_space = find_space_index(space)
-	log(`Removed all influence from %${clicked_space}.`)
+	log(`Removed all SP from %${clicked_space}.`)
 		
 	if (game.remove_opponent_infl === true) {
 		if (game.active === COM) {
@@ -4835,7 +4837,7 @@ function vm_switch_infl(space){
 	let clicked_space = find_space_index(space)
 	game.demInfl[clicked_space] -= game.vm_available_ops
 	game.comInfl[clicked_space] += game.vm_available_ops
-	log(`Replaced ${game.vm_available_ops} influence in ${spaces[clicked_space].name_unique}`)
+	log(`Replaced ${pluralize(game.vm_available_ops,'SP')} in ${spaces[clicked_space].name_unique}`)
 	game.vm_available_ops = 0
 	check_control_change(clicked_space)
 }
@@ -5780,21 +5782,21 @@ states.vm_take_control = {
 }
 
 states.vm_add_infl = {
-	inactive: 'add influence.',
+	inactive: 'add Support Points.',
 	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 influence: done.'
+			view.prompt = 'No available spaces remaining. Add SPs: done.'
 			gen_action('done')
 		}
 		else if (game.vm_available_ops > 0 ) {
-			view.prompt = `${clean_name(cards[this_card()].name)}: add ${game.vm_available_ops} influence${event_prompt()}.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: add ${pluralize(game.vm_available_ops,'SP')}${event_prompt()}.`
 
 			for (let space_id of game.valid_spaces) {
 	                gen_action_infl(spaces[space_id].name_unique)
 			}
 		} else {
-			view.prompt = 'Add influence: done.'
+			view.prompt = 'Add SP: done.'
 			gen_action('done')
 		}
 	},
@@ -5814,15 +5816,15 @@ states.vm_add_infl = {
 
 states.vm_add_infl_free = {
 	get inactive() {
-		return `resolve ${clean_name(cards[this_card()].name)}: add influence.`
+		return `resolve ${clean_name(cards[this_card()].name)}: add SPs.`
 	},
 	prompt () {
 		if (game.vm_available_ops > 0 && game.valid_spaces.length === 0 ) {
-			view.prompt = 'No available spaces remaining. Add influence: done.'
+			view.prompt = 'No available spaces remaining. Add SPs: done.'
 			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} SPs to ${event_prompt()}.`
 
 			for (let space_id of game.valid_spaces) {
 	                gen_action_infl(spaces[space_id].name_unique);
@@ -5852,12 +5854,12 @@ states.vm_add_infl_free = {
 
 states.vm_add_x_infl = {
 	get inactive() {
-		return `resolve ${clean_name(cards[this_card()].name)}: add influence.`
+		return `resolve ${clean_name(cards[this_card()].name)}: add Support Points.`
 	},
 //	inactive: `resolve ${cards[this_card()].name}: add influence.`,
 	prompt () {
 		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} SPs to ${event_prompt()}.`
 
 			for (let space_id of game.valid_spaces) {
 	                gen_action_infl(spaces[space_id].name_unique)
@@ -5880,15 +5882,15 @@ states.vm_add_x_infl = {
 
 states.vm_add_limited_infl = {
 	get inactive() {
-		return `resolve ${clean_name(cards[this_card()].name)}: add influence.`
+		return `resolve ${clean_name(cards[this_card()].name)}: add Support Points.`
 	},
 	prompt () {
 		if (game.vm_available_ops > 0 && game.valid_spaces.length > 0) {
 			if (game.vm_max_infl === 1) {
-				view.prompt = `${clean_name(cards[this_card()].name)}: add ${game.vm_max_infl} influence ${event_prompt()}.`	
+				view.prompt = `${clean_name(cards[this_card()].name)}: add ${pluralize(game.vm_max_infl,'SP')} ${event_prompt()}.`	
 			}
 			else {
-				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 ${pluralize(game.vm_available_ops,'SP')} to ${event_prompt()}.`
 			}
 			for (let space_id of game.valid_spaces) {
 	                gen_action_infl(spaces[space_id].name_unique);
@@ -5920,16 +5922,16 @@ states.vm_add_limited_infl = {
 }
 
 states.vm_remove_infl = {
-	inactive: 'remove influence.',
+	inactive: 'remove Support Points.',
 	prompt () {
 		// Keep this so that there is an undo option in, e.g., Scare Tactics 
 		if (game.valid_spaces.length === 0 && game.vm_available_ops > 0) {
-			view.prompt = `${clean_name(cards[this_card()].name)}: no further influence to remove.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: no further SPs to remove.`
 			gen_action('done')
 			return
 		} 
 		if (game.vm_available_ops === 0 ) {
-			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')
 			return
 		}
@@ -5937,7 +5939,7 @@ states.vm_remove_infl = {
 			view.prompt = `${clean_name(cards[this_card()].name)}: remove ${pluralize(game.vm_available_ops, 'opponent SP')}${event_prompt()}.`
 		} 
 		else {
-			view.prompt = `${clean_name(cards[this_card()].name)}: remove ${game.vm_available_ops} SP${event_prompt()}.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: remove ${pluralize(game.vm_available_ops,'SP')}${event_prompt()}.`
 		}
 		for (let space_id of game.valid_spaces) {
                 gen_action_infl(spaces[space_id].name_unique);
@@ -5968,11 +5970,11 @@ states.vm_remove_x_infl = {
 	},
 	prompt () {
 		if (game.valid_spaces.length === 0) {
-			view.prompt = `${clean_name(cards[this_card()].name)}: no influence to remove.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: no SPs to remove.`
 			gen_action('done')
 		} else {
 		 
-			view.prompt = `${clean_name(cards[this_card()].name)}: remove ${game.vm_available_ops} SP from ${event_prompt()}.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: remove ${pluralize(game.vm_available_ops,'SP')} from ${event_prompt()}.`
 
 			for (let space_id of game.valid_spaces) {
 	                gen_action_infl(spaces[space_id].name_unique);
@@ -6025,10 +6027,10 @@ states.vm_remove_limited_infl = {
 }
 
 states.vm_remove_all_infl = {
-	inactive: 'remove influence',
+	inactive: 'remove Support Points',
 	prompt () {
 		if (game.valid_spaces.length === 0) {
-			view.prompt = `${clean_name(cards[this_card()].name)}: no SP to remove.`
+			view.prompt = `${clean_name(cards[this_card()].name)}: no SPs to remove.`
 			gen_action('done')
 			return
 		}
@@ -6306,7 +6308,7 @@ states.vm_central_committee_reshuffle = {
 
 states.vm_common_european_home = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.vm_event === 0) {
@@ -6391,7 +6393,7 @@ states.vm_dash_for_the_west = {
 
 states.vm_play_event_from_discard = {
 	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) {
@@ -6462,7 +6464,7 @@ states.vm_deutsche_marks_prep = {
 
 states.vm_deutsche_marks = {
 	get inactive() {
-		return `resolve ${cards[20].name}.`
+		return `resolve ${clean_name(cards[20].name)}.`
 	},
 	prompt() {
 		if(cards[game.vm_event].side === 'C' && (cards[game.vm_event].playable || game.playable_cards.includes(game.vm_event))) {
@@ -6479,12 +6481,16 @@ states.vm_deutsche_marks = {
 	},
 	event() {
 		log(`Played C${cards[game.vm_event].number} for the event`)
-		game.return === game.active
+		console.log('game.active', game.active)
+		if (!game.vm_infl_to_do) {
+			game.return = game.active
+		}
+		console.log('DM Event played, game.return', game.return)
 		goto_vm(game.vm_event)
 	},
 	influence() {
 		push_undo()
-		log(`Played C${cards[game.vm_event].number} for influence`)
+		log(`Played C${cards[game.vm_event].number} to place SPs`)
 		game.vm_available_ops = cards[game.vm_event].ops
 		if (game.persistent_events['perestroika']) {game.vm_available_ops++ }
 		game.vm_available_ops += game.persistent_events['prudence'].COM
@@ -6507,7 +6513,7 @@ states.vm_deutsche_marks = {
 
 states.vm_exit_visas = {
 	get inactive() {
-		return `resolve ${cards[75].name}.`
+		return `resolve ${clean_name(cards[75].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Exit Visas: you may discard cards from your hand and draw replacements.'
@@ -6529,7 +6535,7 @@ states.vm_exit_visas = {
 
 states.vm_exit_visas_finish = {
 	get inactive() {
-		return `resolve ${cards[75].name}.`
+		return `resolve ${clean_name(cards[75].name)}.`
 	},
 	prompt() {
 		if (game.temp > 0 ) {
@@ -6552,7 +6558,7 @@ states.vm_exit_visas_finish = {
 
 states.vm_foreign_currency_debt_burden = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Choose a country. The Communist may not make support checks there for the rest of the turn.'
@@ -6664,7 +6670,7 @@ states.vm_goodbye_lenin_ops = {
 
 states.vm_honecker = {
 	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 && game.temp === 0) {
@@ -6767,7 +6773,7 @@ states.vm_inflationary_currency = {
 
 states.vm_inflationary_currency_discard = {
 	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 ) {
@@ -6804,7 +6810,7 @@ states.vm_inflationary_currency_discard = {
 
 states.vm_kiss_of_death = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.communist_hand.length === 0) {
@@ -6828,12 +6834,12 @@ states.vm_kiss_of_death = {
 
 states.vm_kiss_of_death_finish = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		console.log('game.vm_event', game.vm_event)
 		if (game.vm_event > 0 && game.vm_event !== 21 && (cards[game.vm_event].side === 'D' || cards[game.vm_event].side === 'N')) {
-			view.prompt = `Play ${cards[game.vm_event].name} for the event.`
+			view.prompt = `Play ${clean_name(cards[game.vm_event].name)} for the event.`
 			console.log('kiss of death before event button: game.stategy_discard', game.strategy_discard)
 			gen_action('event')
 		} else {
@@ -6857,7 +6863,7 @@ states.vm_kiss_of_death_finish = {
 
 states.vm_kremlin_coup_choose_country = {
 	get inactive() {
-		return `resolve ${cards[this_card()].name}.`
+		return `resolve ${clean_name(cards[this_card()].name)}.`
 	},
 	prompt() {
 		if (game.temp.length > 0) {
@@ -6924,7 +6930,7 @@ states.vm_kremlin_coup_choose_country = {
 
 states.vm_kremlin_coup_take_control = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.valid_spaces.length === 0){
@@ -6955,7 +6961,7 @@ states.vm_kremlin_coup_take_control = {
 
 states.vm_kremlin_coup_sc_prep = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = `Conduct a support check in ${game.vm_active_country}'s Bureaucratic space.`
@@ -7016,7 +7022,7 @@ states.vm_laszlo_tokes = {
 
 states.vm_switch_infl = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.valid_spaces.length === 0) {
@@ -7051,7 +7057,7 @@ states.vm_switch_infl = {
 
 states.vm_malta_summit = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		/*if (game.phase === 1) {*/
@@ -7100,7 +7106,7 @@ states.vm_malta_summit = {
 
 states.vm_modrow = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = `Modrow: roll a die.`
@@ -7125,7 +7131,7 @@ states.vm_modrow = {
 
 states.vm_nepotism = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		//if (game.phase === 1 ) {
@@ -7140,13 +7146,13 @@ states.vm_nepotism = {
 		clear_undo()
 		let roll = Math.floor(Math.random() * 6) + 1
 		if (roll < 3) {
-			log(`Rolled a ${roll}: adds 4 influence`)
+			log(`Rolled a ${roll}: adds 4 SPs`)
 			game.vm_available_ops = 4}
 		else if (roll < 5 ) {
-			log(`Rolled a ${roll}: adds 3 influence`)
+			log(`Rolled a ${roll}: adds 3 SPs`)
 			game.vm_available_ops = 3}
 		else {
-			log(`Rolled a ${roll}: adds 1 influence`)
+			log(`Rolled a ${roll}: adds 1 SP`)
 			game.vm_available_ops = 1}
 		//game.phase = 2
 		vm_next()
@@ -7158,7 +7164,7 @@ states.vm_nepotism = {
 
 states.vm_new_years_eve_party = {
 	get inactive() {
-		return `resolve ${cards[104].name}.`
+		return `resolve ${clean_name(cards[104].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Choose whether the game ends at the end of this turn.'
@@ -7193,10 +7199,10 @@ states.vm_new_years_eve_party = {
 
 states.vm_nomenklatura = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
-		view.prompt = 'Nomenklatura: choose to remove all Democratic influence from Elite spaces or add 3 influence to any Elite space(s).'
+		view.prompt = 'Nomenklatura: choose to remove all Democratic SPs from Elite spaces or add 3 SPs to any Elite space(s).'
 		gen_action('remove')
 		gen_action('add')
 	},
@@ -7230,14 +7236,14 @@ states.vm_nomenklatura = {
 
 states.vm_nomenklatura_remove = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.vm_available_ops === 0 || game.valid_spaces.length === 0 ) {
-			view.prompt = 'Remove influence: done.'
+			view.prompt = 'Remove SPs: done.'
 			gen_action('done')
 		} else { 
-			view.prompt = 'Nomenklatura: remove all Democratic influence from Elite spaces.'
+			view.prompt = 'Nomenklatura: remove all Democratic SPs from Elite spaces.'
 		
 			for (let space_id of game.valid_spaces) {
        	     gen_action_infl(spaces[space_id].name_unique);
@@ -7258,14 +7264,14 @@ states.vm_nomenklatura_remove = {
 
 states.vm_nomenklatura_add = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.vm_available_ops === 0 || game.valid_spaces.length === 0 ) {
-			view.prompt = 'Add influence: done.'
+			view.prompt = 'Add SPs: done.'
 			gen_action('done')
 		} else { 
-			view.prompt = `Nomenklatura: add 3 influence to any Elite space(s). ${game.vm_available_ops} influence remaining.`
+			view.prompt = `Nomenklatura: add 3 SPs to any Elite space(s). ${pluralize(game.vm_available_ops, 'SP')} remaining.`
 			for (let space_id of game.valid_spaces) {
        	    	gen_action_infl(spaces[space_id].name_unique);
 			}
@@ -7287,7 +7293,7 @@ states.vm_nomenklatura_add = {
 
 states.vm_samizdat = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Samizdat: you may set aside a card from your hand and draw a replacement.'
@@ -7314,7 +7320,7 @@ states.vm_samizdat = {
 
 states.vm_samizdat_finish = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.phase === 2) {
@@ -7337,7 +7343,7 @@ states.vm_samizdat_finish = {
 
 states.vm_shock_therapy = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.vm_active_country === '' ) {
@@ -7414,7 +7420,7 @@ states.vm_shock_therapy = {
 
 states.vm_social_democratic_platform_adopted = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 			view.prompt = 'Select a country where the Democrat holds Power.'
@@ -7462,7 +7468,7 @@ states.vm_social_democratic_platform_adopted = {
 
 states.vm_systematization = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		/*if (game.persistent_events['systematization'] === 0) { */
@@ -7489,7 +7495,7 @@ states.vm_systematization = {
 
 states.vm_the_chinese_solution = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		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.'
@@ -7575,7 +7581,7 @@ states.vm_the_chinese_solution = {
 
 states.vm_the_tyrant_is_gone = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.persistent_events['the_tyrant_is_gone']=== 0) {
@@ -7692,7 +7698,7 @@ states.vm_the_wall_must_go = {
 
 states.vm_warsaw_pact_summit = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Choose to play for support checks or place SPs.'
@@ -7729,20 +7735,20 @@ states.vm_warsaw_pact_summit = {
 
 states.vm_we_are_the_people_remove = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.demInfl[6] === 0) {
-			view.prompt = '"We are the People!": no influence to remove.'
+			view.prompt = '"We are the People!": no SPs to remove.'
 			gen_action('done')
 		} else if (game.vm_available_ops > 0 ) {
-			view.prompt = '"We are the People!": remove up to 4 influence from the Lutherian Church.'
+			view.prompt = '"We are the People!": remove up to 4 SPs from the Lutherian Church.'
 			gen_action('done')
 			for (let space_id of game.valid_spaces) {
 				gen_action_infl(spaces[space_id].name_unique);
 			}
 		} else {
-			view.prompt = 'Remove influence: done.'
+			view.prompt = 'Remove SPs: done.'
 			gen_action('done')
 		}
 	},
@@ -7755,7 +7761,7 @@ states.vm_we_are_the_people_remove = {
 			log_br()
 		}
 		if (!game.vm_influence_added[6]) {
-			log('No influence removed')
+			log('No SPs removed')
 			vm_next()
 		} else {
 			game.valid_spaces = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
@@ -7765,7 +7771,7 @@ states.vm_we_are_the_people_remove = {
 }
 states.vm_we_are_the_people_add = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (!game.vm_influence_added[6]) {
@@ -7774,7 +7780,7 @@ states.vm_we_are_the_people_add = {
 			return
 		}
 		
-		view.prompt = `"We are the People!": you must add the ${game.vm_influence_added[6]} influence to spaces in Germany.`
+		view.prompt = `"We are the People!": you must add the ${pluralize(game.vm_influence_added[6],'SP')} to spaces in Germany.`
 		gen_action('done')
 		for (let space_id of game.valid_spaces) {
 			gen_action_infl(spaces[space_id].name_unique);
@@ -7797,7 +7803,7 @@ states.vm_we_are_the_people_add = {
 
 states.vm_workers_revolt = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		view.prompt = 'Workers Revolt: select a Worker Space in a country your opponent has power.'
@@ -7815,11 +7821,11 @@ states.vm_workers_revolt = {
 
 states.vm_workers_revolt_finish = {
 	get inactive() {
-		return `resolve ${cards[game.played_card].name}.`
+		return `resolve ${clean_name(cards[game.played_card].name)}.`
 	},
 	prompt() {
 		if (game.selected_space > 0) {
-			view.prompt = `Target: ${spaces[game.selected_space].name}. Roll a die.`
+			view.prompt = `Target: ${spaces[game.selected_space].name_unique}. Roll a die.`
 			gen_action('roll')
 		} else {
 			view.prompt = 'Workers Revolt: done.'
@@ -7901,14 +7907,14 @@ states.vm_tst_3 = {
 }
 
 states.vm_tst_4 = {
-	inactive: 'remove influence',
+	inactive: 'remove SPs',
 	prompt () {
 			if (game.vm_available_ops === 0 || game.valid_spaces.length === 0) {
-			view.prompt = 'Remove influence: done.'
+			view.prompt = 'Remove SPs: done.'
 			gen_action('done')
 			return
 		}
-		view.prompt = 'Tiananmen Square Track award: select a space to remove influence'
+		view.prompt = 'Tiananmen Square Track award: select a space to remove SPs'
 		
 		for (let space_id of game.valid_spaces) {
                 gen_action_infl(spaces[space_id].name_unique);
@@ -8014,7 +8020,7 @@ states.vm_tst_8 = {
 states.vm_tst_8_ops = {
 	inactive: 'play card for operations.',
 	prompt() {
-		view.prompt = `Play ${cards[game.played_card].name} for:`
+		view.prompt = `Play ${clean_name(cards[game.played_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 )) {
@@ -8640,7 +8646,7 @@ 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_prompt, ' spaces with no Democratic SPs' ],
 	[ vm_add_infl_free, 4 ],
 	[ vm_else ],
 	[ vm_prompt, 'Select a Student or Intellectual space' ],
-- 
cgit v1.2.3