summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.js373
-rw-r--r--events.txt8
-rw-r--r--play.js9
-rw-r--r--rules.js495
4 files changed, 471 insertions, 414 deletions
diff --git a/data.js b/data.js
index 73c8946..71ecef2 100644
--- a/data.js
+++ b/data.js
@@ -1,197 +1,196 @@
const spaces = [
null,
- {name: 'Schwerin', name_unique: 'Schwerin', space_id: 1, socio: 4, stability: 3, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 111, y: 61, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [2, 3, , , ]},
- {name: 'Rostock', name_unique: 'Rostock', space_id: 2, socio: 4, stability: 3, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 228, y: 41, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [1, 3, , , ]},
- {name: 'Berlin', name_unique: 'Berlin', space_id: 3, socio: 2, stability: 3, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 251, y: 113, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [1, 2, 5, 9, ]},
- {name: 'German Writers', name_unique: 'German Writers', space_id: 4, socio: 5, stability: 2, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 185, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [5, , , , ]},
- {name: 'Walter Ulbricht Academy', name_unique: 'Walter Ulbricht Academy', space_id: 5, socio: 6, stability: 1, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 187, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [3, 4, , , ]},
- {name: 'Lutherian Church', name_unique: 'Lutherian Church', space_id: 6, socio: 7, stability: 5, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 300, y: 212, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [9, , , , ]},
- {name: 'Magdeburg', name_unique: 'Magdeburg', space_id: 7, socio: 4, stability: 3, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 275, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [8, 10, 11, , ]},
- {name: 'Halle', name_unique: 'Halle', space_id: 8, socio: 4, stability: 3, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 278, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [7, 9, 11, , ]},
- {name: 'Leipzig', name_unique: 'Leipzig', space_id: 9, socio: 4, stability: 3, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 297, y: 297, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [3, 6, 8, 11, 12]},
- {name: 'Erfurt', name_unique: 'Erfurt', space_id: 10, socio: 3, stability: 4, battleground: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 23, y: 356, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [7, , , , ]},
- {name: 'Karl-Marx-Stadt', name_unique: 'Karl-Marx-Stadt', space_id: 11, socio: 4, stability: 3, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 138, y: 385, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [7, 8, 9, 12, ]},
- {name: 'Dresden', name_unique: 'Dresden', space_id: 12, socio: 1, stability: 4, battleground: 1, country: 'East_Germany', region: 'Eastern Europe', box: {x: 262, y: 375, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [9, 11, 19, 27, ]},
- {name: 'Szczecin', name_unique: 'Szczecin', space_id: 13, socio: 4, stability: 3, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 434, y: 204, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [14, 16, , , ]},
- {name: 'Gdansk', name_unique: 'Gdansk', space_id: 14, socio: 4, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 699, y: 215, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [13, 15, 16, 17, 18]},
- {name: 'Bydgoszcz', name_unique: 'Bydgoszcz', space_id: 15, socio: 1, stability: 4, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 304, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [14, 17, , , ]},
- {name: 'Poznan', name_unique: 'Poznan', space_id: 16, socio: 4, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 521, y: 355, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [13, 14, 19, 20, ]},
- {name: 'Warszawa', name_unique: 'Warszawa', space_id: 17, socio: 2, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 806, y: 383, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [14, 15, 18, 21, 24]},
- {name: 'Bialystok', name_unique: 'Bialystok', space_id: 18, socio: 3, stability: 4, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 940, y: 342, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [14, 17, 24, , ]},
- {name: 'Wroclaw', name_unique: 'Wroclaw', space_id: 19, socio: 4, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 462, y: 443, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [12, 16, 20, 22, ]},
- {name: 'Catholic Church', name_unique: 'Catholic Church, Poland', space_id: 20, socio: 7, stability: 5, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 625, y: 437, h: 65, w: 105}, demInfl: 5, comInfl: 0, demCtrl: 1, comCtrl: 0, adjacent: [16, 19, 21, 22, 23]},
- {name: 'Lodz', name_unique: 'Lodz', space_id: 21, socio: 4, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 749, y: 486, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [17, 20, 23, 24, ]},
- {name: 'Katowice', name_unique: 'Katowice', space_id: 22, socio: 4, stability: 3, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 570, y: 569, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [19, 20, 23, 33, ]},
- {name: 'Krakow', name_unique: 'Krakow', space_id: 23, socio: 4, stability: 3, battleground: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 711, y: 598, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [20, 21, 22, 25, ]},
- {name: 'Lublin', name_unique: 'Lublin', space_id: 24, socio: 3, stability: 4, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 879, y: 603, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [17, 18, 21, , ]},
- {name: 'Jagiellian University', name_unique: 'Jagiellian University', space_id: 25, socio: 6, stability: 1, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 681, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [23, 26, , , ]},
- {name: 'Polish Writers', name_unique: 'Polish Writers', space_id: 26, socio: 5, stability: 2, battleground: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 832, y: 694, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [25, , , , ]},
- {name: 'Plzen', name_unique: 'Plzen', space_id: 27, socio: 1, stability: 4, battleground: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 159, y: 483, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [12, 28, 29, , ]},
- {name: 'Ceske Budejovice', name_unique: 'Ceske Budejovice', space_id: 28, socio: 4, stability: 3, battleground: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 196, y: 601, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [27, 29, , , ]},
- {name: 'Praha', name_unique: 'Praha', space_id: 29, socio: 2, stability: 3, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 317, y: 614, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [27, 28, 30, 32, ]},
- {name: 'Charles University', name_unique: 'Charles University', space_id: 30, socio: 6, stability: 1, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 380, y: 532, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [29, 31, , , ]},
- {name: 'Czech Writers', name_unique: 'Czech Writers', space_id: 31, socio: 5, stability: 2, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 444, y: 607, h: 65, w: 105}, demInfl: 2, comInfl: 0, demCtrl: 1, comCtrl: 0, adjacent: [30, , , , ]},
- {name: 'Brno', name_unique: 'Brno', space_id: 32, socio: 4, stability: 3, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 403, y: 711, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [29, 33, 34, , ]},
- {name: 'Ostrava', name_unique: 'Ostrava', space_id: 33, socio: 4, stability: 3, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 523, y: 681, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [22, 32, 34, 35, ]},
- {name: 'Bratislava', name_unique: 'Bratislava', space_id: 34, socio: 4, stability: 3, battleground: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 417, y: 797, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [32, 33, 35, , ]},
- {name: 'Catholic Church', name_unique: 'Catholic Church, Czechoslovakia', space_id: 35, socio: 7, stability: 5, battleground: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 538, y: 794, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [33, 34, 36, , ]},
- {name: 'Presov', name_unique: 'Presov', space_id: 36, socio: 3, stability: 4, battleground: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 658, y: 794, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [35, 37, , , ]},
- {name: 'Kosice', name_unique: 'Kosice', space_id: 37, socio: 3, stability: 4, battleground: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 777, y: 815, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [36, 42, , , ]},
- {name: 'Catholic Church', name_unique: 'Catholic Church, Hungary', space_id: 38, socio: 7, stability: 5, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 314, y: 886, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [39, 43, , , ]},
- {name: 'Gyor', name_unique: 'Gyor', space_id: 39, socio: 4, stability: 3, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 434, y: 887, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [38, 40, 43, 44, ]},
- {name: 'Tatabanya', name_unique: 'Tatabanya', space_id: 40, socio: 4, stability: 3, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 549, y: 886, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [39, 41, 45, , ]},
- {name: 'Miskolc', name_unique: 'Miskolc', space_id: 41, socio: 4, stability: 3, battleground: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 664, y: 901, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [40, 42, 45, , ]},
- {name: 'Debrecen', name_unique: 'Debrecen', space_id: 42, socio: 4, stability: 3, battleground: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 781, y: 938, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [37, 41, , , ]},
- {name: 'Szombathely', name_unique: 'Szombathely', space_id: 43, socio: 1, stability: 4, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 316, y: 963, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [38, 39, 44, , ]},
- {name: 'Szekesfehervar', name_unique: 'Szekesfehervar', space_id: 44, socio: 4, stability: 3, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 442, y: 962, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [39, 43, 45, , ]},
- {name: 'Budapest', name_unique: 'Budapest', space_id: 45, socio: 2, stability: 3, battleground: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 630, y: 983, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [40, 41, 44, 47, 48]},
- {name: 'Hungarian Writers', name_unique: 'Hungarian Writers', space_id: 46, socio: 5, stability: 2, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 348, y: 1040, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [47, , , , ]},
- {name: 'Eotvos Lorand University', name_unique: 'Eotvos Lorand University', space_id: 47, socio: 6, stability: 1, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 512, y: 1034, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [46, 45, , , ]},
- {name: 'Szeged', name_unique: 'Szeged', space_id: 48, socio: 3, stability: 4, battleground: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 632, y: 1073, h: 65, w: 105}, demInfl: 1, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [45, 49, 50, , ]},
- {name: 'Pecs', name_unique: 'Pecs', space_id: 49, socio: 3, stability: 4, battleground: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 486, y: 1105, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [48, , , , ]},
- {name: 'Timisoara', name_unique: 'Timisoara', space_id: 50, socio: 4, stability: 3, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 597, y: 1204, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [48, 51, 60, , ]},
- {name: 'Cluj-Napoca', name_unique: 'Cluj-Napoca', space_id: 51, socio: 1, stability: 4, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 756, y: 1125, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [50, 54, 58, 61, ]},
- {name: 'Targu Mures', name_unique: 'Targu Mures', space_id: 52, socio: 3, stability: 4, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 915, y: 1136, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [53, 56, , , ]},
- {name: 'Iasi', name_unique: 'Iasi', space_id: 53, socio: 4, stability: 3, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 1072, y: 1097, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [52, 57, 62, , ]},
- {name: 'Babes-Bolyai University', name_unique: 'Babes-Bolyai University', space_id: 54, socio: 6, stability: 1, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 746, y: 1203, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [51, 55, , , ]},
- {name: 'Romanian Writers', name_unique: 'Romanian Writers', space_id: 55, socio: 5, stability: 2, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 739, y: 1278, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [54, , , , ]},
- {name: 'Hargita/Covasna', name_unique: 'Hargita/Covasna', space_id: 56, socio: 8, stability: 4, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 928, y: 1227, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [52, , , , ]},
- {name: 'Brasov', name_unique: 'Brasov', space_id: 57, socio: 4, stability: 3, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 1049, y: 1225, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [53, 59, 61, , ]},
- {name: 'Orthodox Church', name_unique: 'Orthodox Church Romania', space_id: 58, socio: 7, stability: 3, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 855, y: 1338, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [51, 60, , , ]},
- {name: 'Ploiesti', name_unique: 'Ploiesti', space_id: 59, socio: 4, stability: 3, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 1061, y: 1316, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [57, 61, 62, , ]},
- {name: 'Craiova', name_unique: 'Craiova', space_id: 60, socio: 3, stability: 4, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 763, y: 1411, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [50, 58, 61, , ]},
- {name: 'Bucuresti', name_unique: 'Bucuresti', space_id: 61, socio: 2, stability: 3, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 929, y: 1445, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [51, 57, 59, 60, 63]},
- {name: 'Galatii', name_unique: 'Galatii', space_id: 62, socio: 4, stability: 3, battleground: 1, country: 'Romania', region: 'Balkans', box: {x: 1104, y: 1399, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [53, 59, 63, , ]},
- {name: 'Constanta', name_unique: 'Constanta', space_id: 63, socio: 4, stability: 3, battleground: 0, country: 'Romania', region: 'Balkans', box: {x: 1130, y: 1517, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [61, 62, 72, , ]},
- {name: 'Pleven', name_unique: 'Pleven', space_id: 64, socio: 3, stability: 4, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 764, y: 1534, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [68, , , , ]},
- {name: 'Orthodox Church', name_unique: 'Orthodox Church Bulgaria', space_id: 65, socio: 7, stability: 3, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 882, y: 1540, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [66, 68, , , ]},
- {name: 'Ruse', name_unique: 'Ruse', space_id: 66, socio: 4, stability: 3, battleground: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 998, y: 1540, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [65, 69, 70, 71, 72]},
- {name: 'Sofia University', name_unique: 'Sofia University', space_id: 67, socio: 6, stability: 1, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 645, y: 1650, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [68, 73, , , ]},
- {name: 'Sofia', name_unique: 'Sofia', space_id: 68, socio: 2, stability: 3, battleground: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 768, y: 1653, h: 65, w: 105}, demInfl: 0, comInfl: 2, demCtrl: 0, comCtrl: 0, adjacent: [64, 65, 67, 69, 74]},
- {name: 'Stara Zagora', name_unique: 'Stara Zagora', space_id: 69, socio: 1, stability: 4, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 886, y: 1694, h: 65, w: 105}, demInfl: 0, comInfl: 1, demCtrl: 0, comCtrl: 0, adjacent: [66, 68, 71, , ]},
- {name: 'Razgrad', name_unique: 'Razgrad', space_id: 70, socio: 8, stability: 4, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 954, y: 1620, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [66, , , , ]},
- {name: 'Burgas', name_unique: 'Burgas', space_id: 71, socio: 4, stability: 3, battleground: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 1004, y: 1695, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [66, 69, 72, , ]},
- {name: 'Varna', name_unique: 'Varna', space_id: 72, socio: 4, stability: 3, battleground: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 1086, y: 1613, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [63, 66, 71, , ]},
- {name: 'Bulgarian Writers', name_unique: 'Bulgarian Writers', space_id: 73, socio: 5, stability: 2, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 652, y: 1726, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [67, , , , ]},
- {name: 'Plovdiv', name_unique: 'Plovdiv', space_id: 74, socio: 4, stability: 3, battleground: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 771, y: 1739, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [68, 75, , , ]},
- {name: 'Sliven', name_unique: 'Sliven', space_id: 75, socio: 3, stability: 4, battleground: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 894, y: 1768, h: 65, w: 105}, demInfl: 0, comInfl: 0, demCtrl: 0, comCtrl: 0, adjacent: [75, , , , ]},
-
+ {name_unique: 'Schwerin', space_id: 1, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 111, y: 61}, adjacent: [2, 3, , , ]},
+ {name_unique: 'Rostock', space_id: 2, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 228, y: 41}, adjacent: [1, 3, , , ]},
+ {name_unique: 'Berlin', space_id: 3, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 251, y: 113}, adjacent: [1, 2, 5, 9, ]},
+ {name_unique: 'German Writers', space_id: 4, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 185}, adjacent: [5, , , , ]},
+ {name_unique: 'Walter Ulbricht Academy', space_id: 5, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 187}, adjacent: [3, 4, , , ]},
+ {name_unique: 'Lutherian Church', space_id: 6, socio: 7, stability: 5, battleground: 1, demInfl: 1, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 300, y: 212}, adjacent: [9, , , , ]},
+ {name_unique: 'Magdeburg', space_id: 7, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 58, y: 275}, adjacent: [8, 10, 11, , ]},
+ {name_unique: 'Halle', space_id: 8, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 175, y: 278}, adjacent: [7, 9, 11, , ]},
+ {name_unique: 'Leipzig', space_id: 9, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 297, y: 297}, adjacent: [3, 6, 8, 11, 12]},
+ {name_unique: 'Erfurt', space_id: 10, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 23, y: 356}, adjacent: [7, , , , ]},
+ {name_unique: 'Karl-Marx-Stadt', space_id: 11, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'East_Germany', region: 'Eastern Europe', box: {x: 138, y: 385}, adjacent: [7, 8, 9, 12, ]},
+ {name_unique: 'Dresden', space_id: 12, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'East_Germany', region: 'Eastern Europe', box: {x: 262, y: 375}, adjacent: [9, 11, 19, 27, ]},
+ {name_unique: 'Szczecin', space_id: 13, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 434, y: 204}, adjacent: [14, 16, , , ]},
+ {name_unique: 'Gdansk', space_id: 14, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 699, y: 215}, adjacent: [13, 15, 16, 17, 18]},
+ {name_unique: 'Bydgoszcz', space_id: 15, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 304}, adjacent: [14, 17, , , ]},
+ {name_unique: 'Poznan', space_id: 16, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 521, y: 355}, adjacent: [13, 14, 19, 20, ]},
+ {name_unique: 'Warszawa', space_id: 17, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 806, y: 383}, adjacent: [14, 15, 18, 21, 24]},
+ {name_unique: 'Bialystok', space_id: 18, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 940, y: 342}, adjacent: [14, 17, 24, , ]},
+ {name_unique: 'Wroclaw', space_id: 19, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 462, y: 443}, adjacent: [12, 16, 20, 22, ]},
+ {name_unique: 'Catholic Church, Poland', space_id: 20, socio: 7, stability: 5, battleground: 0, demInfl: 5, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 625, y: 437}, adjacent: [16, 19, 21, 22, 23]},
+ {name_unique: 'Lodz', space_id: 21, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 749, y: 486}, adjacent: [17, 20, 23, 24, ]},
+ {name_unique: 'Katowice', space_id: 22, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 570, y: 569}, adjacent: [19, 20, 23, 33, ]},
+ {name_unique: 'Krakow', space_id: 23, socio: 4, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 711, y: 598}, adjacent: [20, 21, 22, 25, ]},
+ {name_unique: 'Lublin', space_id: 24, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Poland', region: 'Eastern Europe', box: {x: 879, y: 603}, adjacent: [17, 18, 21, , ]},
+ {name_unique: 'Jagiellian University', space_id: 25, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 679, y: 681}, adjacent: [23, 26, , , ]},
+ {name_unique: 'Polish Writers', space_id: 26, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Poland', region: 'Eastern Europe', box: {x: 832, y: 694}, adjacent: [25, , , , ]},
+ {name_unique: 'Plzen', space_id: 27, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 159, y: 483}, adjacent: [12, 28, 29, , ]},
+ {name_unique: 'Ceske Budejovice', space_id: 28, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 196, y: 601}, adjacent: [27, 29, , , ]},
+ {name_unique: 'Praha', space_id: 29, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 317, y: 614}, adjacent: [27, 28, 30, 32, ]},
+ {name_unique: 'Charles University', space_id: 30, socio: 6, stability: 1, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 380, y: 532}, adjacent: [29, 31, , , ]},
+ {name_unique: 'Czech Writers', space_id: 31, socio: 5, stability: 2, battleground: 1, demInfl: 2, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 444, y: 607}, adjacent: [30, , , , ]},
+ {name_unique: 'Brno', space_id: 32, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 1, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 403, y: 711}, adjacent: [29, 33, 34, , ]},
+ {name_unique: 'Ostrava', space_id: 33, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 523, y: 681}, adjacent: [22, 32, 34, 35, ]},
+ {name_unique: 'Bratislava', space_id: 34, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 417, y: 797}, adjacent: [32, 33, 35, , ]},
+ {name_unique: 'Catholic Church, Czechoslovakia', space_id: 35, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 538, y: 794}, adjacent: [33, 34, 36, , ]},
+ {name_unique: 'Presov', space_id: 36, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 658, y: 794}, adjacent: [35, 37, , , ]},
+ {name_unique: 'Kosice', space_id: 37, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Czechoslovakia', region: 'Eastern Europe', box: {x: 777, y: 815}, adjacent: [36, 42, , , ]},
+ {name_unique: 'Catholic Church, Hungary', space_id: 38, socio: 7, stability: 5, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 314, y: 886}, adjacent: [39, 43, , , ]},
+ {name_unique: 'Gyor', space_id: 39, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 434, y: 887}, adjacent: [38, 40, 43, 44, ]},
+ {name_unique: 'Tatabanya', space_id: 40, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 549, y: 886}, adjacent: [39, 41, 45, , ]},
+ {name_unique: 'Miskolc', space_id: 41, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 664, y: 901}, adjacent: [40, 42, 45, , ]},
+ {name_unique: 'Debrecen', space_id: 42, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 781, y: 938}, adjacent: [37, 41, , , ]},
+ {name_unique: 'Szombathely', space_id: 43, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Hungary', region: 'Eastern Europe', box: {x: 316, y: 963}, adjacent: [38, 39, 44, , ]},
+ {name_unique: 'Szekesfehervar', space_id: 44, socio: 4, stability: 3, battleground: 0, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 442, y: 962}, adjacent: [39, 43, 45, , ]},
+ {name_unique: 'Budapest', space_id: 45, socio: 2, stability: 3, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 630, y: 983}, adjacent: [40, 41, 44, 47, 48]},
+ {name_unique: 'Hungarian Writers', space_id: 46, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 348, y: 1040}, adjacent: [47, , , , ]},
+ {name_unique: 'Eotvos Lorand University', space_id: 47, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 512, y: 1034}, adjacent: [46, 45, , , ]},
+ {name_unique: 'Szeged', space_id: 48, socio: 3, stability: 4, battleground: 1, demInfl: 1, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 632, y: 1073}, adjacent: [45, 49, 50, , ]},
+ {name_unique: 'Pecs', space_id: 49, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Hungary', region: 'Eastern Europe', box: {x: 486, y: 1105}, adjacent: [48, , , , ]},
+ {name_unique: 'Timisoara', space_id: 50, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 597, y: 1204}, adjacent: [48, 51, 60, , ]},
+ {name_unique: 'Cluj-Napoca', space_id: 51, socio: 1, stability: 4, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 756, y: 1125}, adjacent: [50, 54, 58, 61, ]},
+ {name_unique: 'Targu Mures', space_id: 52, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 915, y: 1136}, adjacent: [53, 56, , , ]},
+ {name_unique: 'Iasi', space_id: 53, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1072, y: 1097}, adjacent: [52, 57, 62, , ]},
+ {name_unique: 'Babes-Bolyai University', space_id: 54, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 746, y: 1203}, adjacent: [51, 55, , , ]},
+ {name_unique: 'Romanian Writers', space_id: 55, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 739, y: 1278}, adjacent: [54, , , , ]},
+ {name_unique: 'Hargita/Covasna', space_id: 56, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 928, y: 1227}, adjacent: [52, , , , ]},
+ {name_unique: 'Brasov', space_id: 57, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1049, y: 1225}, adjacent: [53, 59, 61, , ]},
+ {name_unique: 'Orthodox Church Romania', space_id: 58, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 855, y: 1338}, adjacent: [51, 60, , , ]},
+ {name_unique: 'Ploiesti', space_id: 59, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1061, y: 1316}, adjacent: [57, 61, 62, , ]},
+ {name_unique: 'Craiova', space_id: 60, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 763, y: 1411}, adjacent: [50, 58, 61, , ]},
+ {name_unique: 'Bucuresti', space_id: 61, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Romania', region: 'Balkans', box: {x: 929, y: 1445}, adjacent: [51, 57, 59, 60, 63]},
+ {name_unique: 'Galatii', space_id: 62, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1104, y: 1399}, adjacent: [53, 59, 63, , ]},
+ {name_unique: 'Constanta', space_id: 63, socio: 4, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Romania', region: 'Balkans', box: {x: 1130, y: 1517}, adjacent: [61, 62, 72, , ]},
+ {name_unique: 'Pleven', space_id: 64, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 764, y: 1534}, adjacent: [68, , , , ]},
+ {name_unique: 'Orthodox Church Bulgaria', space_id: 65, socio: 7, stability: 3, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 882, y: 1540}, adjacent: [66, 68, , , ]},
+ {name_unique: 'Ruse', space_id: 66, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 998, y: 1540}, adjacent: [65, 69, 70, 71, 72]},
+ {name_unique: 'Sofia University', space_id: 67, socio: 6, stability: 1, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 645, y: 1650}, adjacent: [68, 73, , , ]},
+ {name_unique: 'Sofia', space_id: 68, socio: 2, stability: 3, battleground: 1, demInfl: 0, comInfl: 2, country: 'Bulgaria', region: 'Balkans', box: {x: 768, y: 1653}, adjacent: [64, 65, 67, 69, 74]},
+ {name_unique: 'Stara Zagora', space_id: 69, socio: 1, stability: 4, battleground: 0, demInfl: 0, comInfl: 1, country: 'Bulgaria', region: 'Balkans', box: {x: 886, y: 1694}, adjacent: [66, 68, 71, , ]},
+ {name_unique: 'Razgrad', space_id: 70, socio: 8, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 954, y: 1620}, adjacent: [66, , , , ]},
+ {name_unique: 'Burgas', space_id: 71, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1004, y: 1695}, adjacent: [66, 69, 72, , ]},
+ {name_unique: 'Varna', space_id: 72, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 1086, y: 1613}, adjacent: [63, 66, 71, , ]},
+ {name_unique: 'Bulgarian Writers', space_id: 73, socio: 5, stability: 2, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 652, y: 1726}, adjacent: [67, , , , ]},
+ {name_unique: 'Plovdiv', space_id: 74, socio: 4, stability: 3, battleground: 1, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 771, y: 1739}, adjacent: [68, 75, , , ]},
+ {name_unique: 'Sliven', space_id: 75, socio: 3, stability: 4, battleground: 0, demInfl: 0, comInfl: 0, country: 'Bulgaria', region: 'Balkans', box: {x: 894, y: 1768}, adjacent: [74, , , , ]}
]
const cards = [
null,
- {number: 1, period: 1, side: 'C', name: 'Legacy of Martial Law*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 2, period: 1, side: 'D', name: 'Solidarity Legalized*', ops: 4, remove: 1, playable: 1, red: true},
- {number: 3, period: 1, side: 'D', name: 'Walesa*', ops: 3, remove: 1, playable: 0, red: false},
- {number: 4, period: 1, side: 'D', name: 'Michnik*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 5, period: 1, side: 'D', name: 'General Strike', ops: 3, remove: 0, playable: 1, red: false},
- {number: 6, period: 1, side: 'C', name: 'Brought in for Questioning', ops: 3, remove: 0, playable: 1, red: false},
- {number: 7, period: 1, side: 'C', name: 'State Run Media*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 8, period: 1, side: 'N', name: 'Prudence', ops: 4, remove: 0, playable: 1, red: false},
- {number: 9, period: 1, side: 'C', name: 'The Wall*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 10, period: 1, side: 'C', name: 'Cult of Personality*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 11, period: 1, side: 'C', name: 'Dissident Arrested', ops: 2, remove: 0, playable: 1, red: false},
- {number: 12, period: 1, side: 'C', name: 'Apparatchiks*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 13, period: 1, side: 'C', name: 'Stasi*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 14, period: 1, side: 'N', name: 'Gorbachev Charms the West', ops: 4, remove: 0, playable: 1, red: false},
- {number: 15, period: 1, side: 'C', name: 'Honecker*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 16, period: 1, side: 'C', name: 'Nomenklatura*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 17, period: 1, side: 'D', name: 'Roundtable Talks', ops: 3, remove: 0, playable: 1, red: false},
- {number: 18, period: 1, side: 'C', name: 'Poszgay Defends the Revolution*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 19, period: 1, side: 'D', name: 'Papal Visit*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 20, period: 1, side: 'C', name: 'Deutsche Marks*', ops: 4, remove: 1, playable: 1, red: false},
- {number: 21, period: 1, side: 'N', name: 'Common European Home', ops: 2, remove: 0, playable: 1, red: false},
- {number: 22, period: 1, side: 'N', name: 'Power Struggle - Poland', ops: 0, remove: 0, playable: 1, red: false},
- {number: 23, period: 1, side: 'N', name: 'Power Struggle - Hungary', ops: 0, remove: 0, playable: 1, red: false},
- {number: 24, period: 1, side: 'D', name: 'St. Nicholas Church*', ops: 1, remove: 1, playable: 1, red: true},
- {number: 25, period: 1, side: 'C', name: 'Perestroika*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 26, period: 1, side: 'D', name: 'Helsinki Final Act*', ops: 1, remove: 1, playable: 1, red: true},
- {number: 27, period: 1, side: 'D', name: 'Consumerism', ops: 3, remove: 0, playable: 1, red: false},
- {number: 28, period: 1, side: 'C', name: 'Factory Party Cells', ops: 3, remove: 0, playable: 1, red: false},
- {number: 29, period: 1, side: 'D', name: 'Jan Palach Week*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 30, period: 1, side: 'C', name: 'Tear Gas*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 31, period: 1, side: 'D', name: 'Intelligentsia', ops: 2, remove: 0, playable: 1, red: false},
- {number: 32, period: 1, side: 'C', name: 'Peasant Parties*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 33, period: 1, side: 'D', name: 'Sajudis*', ops: 2, remove: 1, playable: 1, red: true},
- {number: 34, period: 1, side: 'D', name: 'Fidesz*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 35, period: 1, side: 'C', name: 'Heal Our Bleeding Wound*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 36, period: 1, side: 'D', name: 'Dash for the West*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 37, period: 1, side: 'C', name: 'Nagy Reburied*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 38, period: 1, side: 'C', name: 'The July Concept*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 39, period: 1, side: 'D', name: 'Eco-Glasnost*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 40, period: 1, side: 'D', name: 'Hungarian Democratic Forum*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 41, period: 2, side: 'C', name: 'Ceausescu*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 42, period: 2, side: 'N', name: 'Power Struggle - East Germany', ops: 0, remove: 0, playable: 1, red: false},
- {number: 43, period: 2, side: 'N', name: 'Power Struggle - Bulgaria', ops: 0, remove: 0, playable: 1, red: false},
- {number: 44, period: 2, side: 'N', name: 'Inflationary Currency*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 45, period: 2, side: 'D', name: 'Soviet Troop Withdrawals*', ops: 4, remove: 1, playable: 1, red: false},
- {number: 46, period: 2, side: 'D', name: 'Goodbye Lenin!*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 47, period: 2, side: 'C', name: 'Bulgarian Turks Expelled*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 48, period: 2, side: 'D', name: '\"We are the People!\"', ops: 3, remove: 1, playable: 1, red: false},
- {number: 49, period: 2, side: 'D', name: 'Foreign Currency Debt Burden', ops: 1, remove: 0, playable: 1, red: false},
- {number: 50, period: 2, side: 'D', name: 'The Sinatra Doctrine*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 51, period: 2, side: 'C', name: '40th Anniversary Celebration*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 52, period: 2, side: 'C', name: 'Normalization*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 53, period: 2, side: 'C', name: 'Li Peng*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 54, period: 2, side: 'D', name: 'The Crowd Turns Against Ceausescu*', ops: 3, remove: 1, playable: 1, red: true},
- {number: 55, period: 2, side: 'N', name: 'Power Struggle - Czechoslovakia', ops: 0, remove: 0, playable: 1, red: false},
- {number: 56, period: 2, side: 'D', name: 'Foreign Television*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 57, period: 2, side: 'C', name: 'Central Committee Reshuffle*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 58, period: 2, side: 'D', name: 'Austria-Hungary Border Reopened*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 59, period: 2, side: 'C', name: 'GrenzTruppen*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 60, period: 2, side: 'D', name: 'Toxic Waste*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 61, period: 2, side: 'D', name: 'The Monday Demonstrations*', ops: 4, remove: 1, playable: 0, red: false},
- {number: 62, period: 2, side: 'D', name: 'Yakovlev Counsels Gorbachev*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 63, period: 2, side: 'D', name: 'Genscher*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 64, period: 2, side: 'D', name: 'Legacy of 1968*', ops: 4, remove: 1, playable: 1, red: false},
- {number: 65, period: 2, side: 'D', name: 'Presidential Visit*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 66, period: 2, side: 'D', name: 'New Forum*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 67, period: 2, side: 'N', name: 'Reformer Rehabilitated*', ops: 2, remove: 1, playable: '', red: false},
- {number: 68, period: 2, side: 'D', name: 'Klaus and Komarek*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 69, period: 2, side: 'C', name: 'Systematization*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 70, period: 2, side: 'C', name: 'Securitate*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 71, period: 2, side: 'D', name: 'Kiss of Death*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 72, period: 2, side: 'D', name: 'Peasant Parties Revolt*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 73, period: 2, side: 'D', name: 'Laszlo Tokes*', ops: 2, remove: 1, playable: 1, red: true},
- {number: 74, period: 2, side: 'D', name: 'FRG Embassies*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 75, period: 2, side: 'D', name: 'Exit Visas*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 76, period: 2, side: 'C', name: 'Warsaw Pact Summit*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 77, period: 2, side: 'D', name: 'Samizdat*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 78, period: 2, side: 'N', name: 'Workers Revolt', ops: 2, remove: 0, playable: 1, red: false},
- {number: 79, period: 2, side: 'C', name: 'The Third Way*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 80, period: 2, side: 'C', name: 'Nepotism*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 81, period: 2, side: 'D', name: 'The Baltic Way*', ops: 3, remove: 1, playable: 0, red: true},
- {number: 82, period: 3, side: 'C', name: 'Spitzel*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 83, period: 3, side: 'C', name: 'Modrow*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 84, period: 3, side: 'D', name: 'Breakaway Baltic Republics*', ops: 4, remove: 1, playable: 0, red: true},
- {number: 85, period: 3, side: 'N', name: 'Tank Column/Tank Man*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 86, period: 3, side: 'D', name: '\"The Wall Must Go!\"*', ops: 3, remove: 0, playable: 1, red: false},
- {number: 87, period: 3, side: 'D', name: 'Kohl Proposes Reunification*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 88, period: 3, side: 'C', name: 'Adamec*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 89, period: 3, side: 'D', name: 'Domino Theory*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 90, period: 3, side: 'D', name: 'Civic Forum*', ops: 4, remove: 1, playable: 1, red: false},
- {number: 91, period: 3, side: 'D', name: 'My First Banana*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 92, period: 3, side: 'C', name: 'Betrayal*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 93, period: 3, side: 'D', name: 'Shock Therapy*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 94, period: 3, side: 'D', name: 'Union of Democratic Forces*', ops: 4, remove: 1, playable: 1, red: false},
- {number: 95, period: 3, side: 'N', name: 'Power Struggle - Romania', ops: 0, remove: 0, playable: 1, red: false},
- {number: 96, period: 3, side: 'C', name: 'The Chinese Solution*', ops: 1, remove: 1, playable: 0, red: false},
- {number: 97, period: 3, side: 'D', name: 'The Tyrant is Gone*', ops: 2, remove: 1, playable: 0, red: false},
- {number: 98, period: 3, side: 'C', name: 'Politburo Intrigue*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 99, period: 3, side: 'C', name: 'Ligachev*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 100, period: 3, side: 'N', name: 'Stand Fast*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 101, period: 3, side: 'C', name: 'Elena*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 102, period: 3, side: 'C', name: 'National Salvation Front*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 103, period: 3, side: 'D', name: 'Government Resigns*', ops: 1, remove: 1, playable: 1, red: false},
- {number: 104, period: 3, side: 'C', name: 'New Year\'s Eve Party*', ops: 2, remove: 1, playable: 1, red: false},
- {number: 105, period: 3, side: 'D', name: 'Public Against Violence*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 106, period: 3, side: 'C', name: 'Social Democratic Platform Adopted*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 107, period: 3, side: 'C', name: 'Massacre in Timisoara*', ops: 3, remove: 1, playable: 0, red: false},
- {number: 108, period: 3, side: 'D', name: 'Army Backs Revolution*', ops: 3, remove: 1, playable: 1, red: false},
- {number: 109, period: 3, side: 'C', name: 'Kremlin Coup!*', ops: 3, remove: 1, playable: 0, red: false},
- {number: 110, period: 3, side: 'D', name: 'Malta Summit*', ops: 3, remove: 1, playable: 1, red: false},
- ]
+ {number: 1, period: 1, side: 'C', name: 'Legacy of Martial Law*', ops: 2, remove: 1, red: false},
+ {number: 2, period: 1, side: 'D', name: 'Solidarity Legalized*', ops: 4, remove: 1, red: true},
+ {number: 3, period: 1, side: 'D', name: 'Walesa*', ops: 3, remove: 1, red: false},
+ {number: 4, period: 1, side: 'D', name: 'Michnik*', ops: 1, remove: 1, red: false},
+ {number: 5, period: 1, side: 'D', name: 'General Strike', ops: 3, remove: 0, red: false},
+ {number: 6, period: 1, side: 'C', name: 'Brought in for Questioning', ops: 3, remove: 0, red: false},
+ {number: 7, period: 1, side: 'C', name: 'State Run Media*', ops: 2, remove: 1, red: false},
+ {number: 8, period: 1, side: 'N', name: 'Prudence', ops: 4, remove: 0, red: false},
+ {number: 9, period: 1, side: 'C', name: 'The Wall*', ops: 1, remove: 1, red: false},
+ {number: 10, period: 1, side: 'C', name: 'Cult of Personality*', ops: 3, remove: 1, red: false},
+ {number: 11, period: 1, side: 'C', name: 'Dissident Arrested', ops: 2, remove: 0, red: false},
+ {number: 12, period: 1, side: 'C', name: 'Apparatchiks*', ops: 2, remove: 1, red: false},
+ {number: 13, period: 1, side: 'C', name: 'Stasi*', ops: 1, remove: 1, red: false},
+ {number: 14, period: 1, side: 'N', name: 'Gorbachev Charms the West', ops: 4, remove: 0, red: false},
+ {number: 15, period: 1, side: 'C', name: 'Honecker*', ops: 3, remove: 1, red: false},
+ {number: 16, period: 1, side: 'C', name: 'Nomenklatura*', ops: 2, remove: 1, red: false},
+ {number: 17, period: 1, side: 'D', name: 'Roundtable Talks', ops: 3, remove: 0, red: false},
+ {number: 18, period: 1, side: 'C', name: 'Poszgay Defends the Revolution*', ops: 2, remove: 1, red: false},
+ {number: 19, period: 1, side: 'D', name: 'Papal Visit*', ops: 2, remove: 1, red: false},
+ {number: 20, period: 1, side: 'C', name: 'Deutsche Marks*', ops: 4, remove: 1, red: false},
+ {number: 21, period: 1, side: 'N', name: 'Common European Home', ops: 2, remove: 0, red: false},
+ {number: 22, period: 1, side: 'N', name: 'Power Struggle - Poland', ops: 0, remove: 0, red: false},
+ {number: 23, period: 1, side: 'N', name: 'Power Struggle - Hungary', ops: 0, remove: 0, red: false},
+ {number: 24, period: 1, side: 'D', name: 'St. Nicholas Church*', ops: 1, remove: 1, red: true},
+ {number: 25, period: 1, side: 'C', name: 'Perestroika*', ops: 3, remove: 1, red: false},
+ {number: 26, period: 1, side: 'D', name: 'Helsinki Final Act*', ops: 1, remove: 1, red: true},
+ {number: 27, period: 1, side: 'D', name: 'Consumerism', ops: 3, remove: 0, red: false},
+ {number: 28, period: 1, side: 'C', name: 'Factory Party Cells', ops: 3, remove: 0, red: false},
+ {number: 29, period: 1, side: 'D', name: 'Jan Palach Week*', ops: 1, remove: 1, red: false},
+ {number: 30, period: 1, side: 'C', name: 'Tear Gas*', ops: 1, remove: 1, red: false},
+ {number: 31, period: 1, side: 'D', name: 'Intelligentsia', ops: 2, remove: 0, red: false},
+ {number: 32, period: 1, side: 'C', name: 'Peasant Parties*', ops: 2, remove: 1, red: false},
+ {number: 33, period: 1, side: 'D', name: 'Sajudis*', ops: 2, remove: 1, red: true},
+ {number: 34, period: 1, side: 'D', name: 'Fidesz*', ops: 2, remove: 1, red: false},
+ {number: 35, period: 1, side: 'C', name: 'Heal Our Bleeding Wound*', ops: 3, remove: 1, red: false},
+ {number: 36, period: 1, side: 'D', name: 'Dash for the West*', ops: 3, remove: 1, red: false},
+ {number: 37, period: 1, side: 'C', name: 'Nagy Reburied*', ops: 3, remove: 1, red: false},
+ {number: 38, period: 1, side: 'C', name: 'The July Concept*', ops: 3, remove: 1, red: false},
+ {number: 39, period: 1, side: 'D', name: 'Eco-Glasnost*', ops: 2, remove: 1, red: false},
+ {number: 40, period: 1, side: 'D', name: 'Hungarian Democratic Forum*', ops: 3, remove: 1, red: false},
+ {number: 41, period: 2, side: 'C', name: 'Ceausescu*', ops: 3, remove: 1, red: false},
+ {number: 42, period: 2, side: 'N', name: 'Power Struggle - East Germany', ops: 0, remove: 0, red: false},
+ {number: 43, period: 2, side: 'N', name: 'Power Struggle - Bulgaria', ops: 0, remove: 0, red: false},
+ {number: 44, period: 2, side: 'N', name: 'Inflationary Currency*', ops: 3, remove: 1, red: false},
+ {number: 45, period: 2, side: 'D', name: 'Soviet Troop Withdrawals*', ops: 4, remove: 1, red: false},
+ {number: 46, period: 2, side: 'D', name: 'Goodbye Lenin!*', ops: 3, remove: 1, red: false},
+ {number: 47, period: 2, side: 'C', name: 'Bulgarian Turks Expelled*', ops: 3, remove: 1, red: false},
+ {number: 48, period: 2, side: 'D', name: '\"We are the People!\"', ops: 3, remove: 1, red: false},
+ {number: 49, period: 2, side: 'D', name: 'Foreign Currency Debt Burden', ops: 1, remove: 0, red: false},
+ {number: 50, period: 2, side: 'D', name: 'The Sinatra Doctrine*', ops: 3, remove: 1, red: false},
+ {number: 51, period: 2, side: 'C', name: '40th Anniversary Celebration*', ops: 2, remove: 1, red: false},
+ {number: 52, period: 2, side: 'C', name: 'Normalization*', ops: 3, remove: 1, red: false},
+ {number: 53, period: 2, side: 'C', name: 'Li Peng*', ops: 2, remove: 1, red: false},
+ {number: 54, period: 2, side: 'D', name: 'The Crowd Turns Against Ceausescu*', ops: 3, remove: 1, red: true},
+ {number: 55, period: 2, side: 'N', name: 'Power Struggle - Czechoslovakia', ops: 0, remove: 0, red: false},
+ {number: 56, period: 2, side: 'D', name: 'Foreign Television*', ops: 2, remove: 1, red: false},
+ {number: 57, period: 2, side: 'C', name: 'Central Committee Reshuffle*', ops: 2, remove: 1, red: false},
+ {number: 58, period: 2, side: 'D', name: 'Austria-Hungary Border Reopened*', ops: 2, remove: 1, red: false},
+ {number: 59, period: 2, side: 'C', name: 'GrenzTruppen*', ops: 2, remove: 1, red: false},
+ {number: 60, period: 2, side: 'D', name: 'Toxic Waste*', ops: 2, remove: 1, red: false},
+ {number: 61, period: 2, side: 'D', name: 'The Monday Demonstrations*', ops: 4, remove: 1, red: false},
+ {number: 62, period: 2, side: 'D', name: 'Yakovlev Counsels Gorbachev*', ops: 2, remove: 1, red: false},
+ {number: 63, period: 2, side: 'D', name: 'Genscher*', ops: 2, remove: 1, red: false},
+ {number: 64, period: 2, side: 'D', name: 'Legacy of 1968*', ops: 4, remove: 1, red: false},
+ {number: 65, period: 2, side: 'D', name: 'Presidential Visit*', ops: 3, remove: 1, red: false},
+ {number: 66, period: 2, side: 'D', name: 'New Forum*', ops: 1, remove: 1, red: false},
+ {number: 67, period: 2, side: 'N', name: 'Reformer Rehabilitated*', ops: 2, remove: 1, red: false},
+ {number: 68, period: 2, side: 'D', name: 'Klaus and Komarek*', ops: 3, remove: 1, red: false},
+ {number: 69, period: 2, side: 'C', name: 'Systematization*', ops: 3, remove: 1, red: false},
+ {number: 70, period: 2, side: 'C', name: 'Securitate*', ops: 2, remove: 1, red: false},
+ {number: 71, period: 2, side: 'D', name: 'Kiss of Death*', ops: 3, remove: 1, red: false},
+ {number: 72, period: 2, side: 'D', name: 'Peasant Parties Revolt*', ops: 3, remove: 1, red: false},
+ {number: 73, period: 2, side: 'D', name: 'Laszlo Tokes*', ops: 2, remove: 1, red: true},
+ {number: 74, period: 2, side: 'D', name: 'FRG Embassies*', ops: 3, remove: 1, red: false},
+ {number: 75, period: 2, side: 'D', name: 'Exit Visas*', ops: 3, remove: 1, red: false},
+ {number: 76, period: 2, side: 'C', name: 'Warsaw Pact Summit*', ops: 2, remove: 1, red: false},
+ {number: 77, period: 2, side: 'D', name: 'Samizdat*', ops: 1, remove: 1, red: false},
+ {number: 78, period: 2, side: 'N', name: 'Workers Revolt', ops: 2, remove: 0, red: false},
+ {number: 79, period: 2, side: 'C', name: 'The Third Way*', ops: 2, remove: 1, red: false},
+ {number: 80, period: 2, side: 'C', name: 'Nepotism*', ops: 3, remove: 1, red: false},
+ {number: 81, period: 2, side: 'D', name: 'The Baltic Way*', ops: 3, remove: 1, red: true},
+ {number: 82, period: 3, side: 'C', name: 'Spitzel*', ops: 1, remove: 1, red: false},
+ {number: 83, period: 3, side: 'C', name: 'Modrow*', ops: 2, remove: 1, red: false},
+ {number: 84, period: 3, side: 'D', name: 'Breakaway Baltic Republics*', ops: 4, remove: 1, red: true},
+ {number: 85, period: 3, side: 'N', name: 'Tank Column/Tank Man*', ops: 2, remove: 1, red: false},
+ {number: 86, period: 3, side: 'D', name: '\"The Wall Must Go!\"*', ops: 3, remove: 1, red: false},
+ {number: 87, period: 3, side: 'D', name: 'Kohl Proposes Reunification*', ops: 3, remove: 1, red: false},
+ {number: 88, period: 3, side: 'C', name: 'Adamec*', ops: 2, remove: 1, red: false},
+ {number: 89, period: 3, side: 'D', name: 'Domino Theory*', ops: 3, remove: 1, red: false},
+ {number: 90, period: 3, side: 'D', name: 'Civic Forum*', ops: 4, remove: 1, red: false},
+ {number: 91, period: 3, side: 'D', name: 'My First Banana*', ops: 3, remove: 1, red: false},
+ {number: 92, period: 3, side: 'C', name: 'Betrayal*', ops: 3, remove: 1, red: false},
+ {number: 93, period: 3, side: 'D', name: 'Shock Therapy*', ops: 3, remove: 1, red: false},
+ {number: 94, period: 3, side: 'D', name: 'Union of Democratic Forces*', ops: 4, remove: 1, red: false},
+ {number: 95, period: 3, side: 'N', name: 'Power Struggle - Romania', ops: 0, remove: 0, red: false},
+ {number: 96, period: 3, side: 'C', name: 'The Chinese Solution*', ops: 1, remove: 1, red: false},
+ {number: 97, period: 3, side: 'D', name: 'The Tyrant is Gone*', ops: 2, remove: 1, red: false},
+ {number: 98, period: 3, side: 'C', name: 'Politburo Intrigue*', ops: 2, remove: 1, red: false},
+ {number: 99, period: 3, side: 'C', name: 'Ligachev*', ops: 3, remove: 1, red: false},
+ {number: 100, period: 3, side: 'N', name: 'Stand Fast*', ops: 3, remove: 1, red: false},
+ {number: 101, period: 3, side: 'C', name: 'Elena*', ops: 1, remove: 1, red: false},
+ {number: 102, period: 3, side: 'C', name: 'National Salvation Front*', ops: 3, remove: 1, red: false},
+ {number: 103, period: 3, side: 'D', name: 'Government Resigns*', ops: 1, remove: 1, red: false},
+ {number: 104, period: 3, side: 'C', name: 'New Year\'s Eve Party*', ops: 2, remove: 1, red: false},
+ {number: 105, period: 3, side: 'D', name: 'Public Against Violence*', ops: 3, remove: 1, red: false},
+ {number: 106, period: 3, side: 'C', name: 'Social Democratic Platform Adopted*', ops: 3, remove: 1, red: false},
+ {number: 107, period: 3, side: 'C', name: 'Massacre in Timisoara*', ops: 3, remove: 1, red: false},
+ {number: 108, period: 3, side: 'D', name: 'Army Backs Revolution*', ops: 3, remove: 1, red: false},
+ {number: 109, period: 3, side: 'C', name: 'Kremlin Coup!*', ops: 3, remove: 1, red: false},
+ {number: 110, period: 3, side: 'D', name: 'Malta Summit*', ops: 3, remove: 1, red: false},
+]
const power_cards = [
null,
diff --git a/events.txt b/events.txt
index b368b7c..b739948 100644
--- a/events.txt
+++ b/events.txt
@@ -68,9 +68,11 @@ permanently_remove
CARD 10 - Cult of Personality
# Place 4 Communist SPs in Worker or Farmer spaces in Romania, no more than 2 per space.
+if !game.persistent_events['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
+endif
permanently_remove
@@ -294,6 +296,7 @@ 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.
+if !game.persistent_events['the_tyrant_is_gone']
valid_spaces_country_sc 'Romania'
prompt ' from Romania'
remove_opp_infl 3
@@ -302,6 +305,7 @@ prompt 'make a support check in Romania'
1_support_check
prompt ' from Bucharesti'
ceausescu
+endif
permanently_remove
@@ -762,9 +766,11 @@ permanently_remove
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
+if !game.persistent_events['the_tyrant_is_gone']
valid_spaces 51
prompt 'the Romania Elite Space'
add_x_infl 2
+endif
elena
@@ -813,10 +819,12 @@ 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.
+if !game.persistent_events['the_tyrant_is_gone']
massacre_in_timisoara
valid_spaces_country_sc 'Romania'
prompt 'Make Support Checks in Romania'
support_check_modified 2 2
+endif
permanently_remove
diff --git a/play.js b/play.js
index 9bc0e94..e2a5dc8 100644
--- a/play.js
+++ b/play.js
@@ -7,7 +7,8 @@ const options = 'none'
const last_card = 110
const last_power_card = 52
let hover_timeout
-
+const height = 65
+const width = 105
const toolbar = document.getElementById('toolbar')
const vpMarker = document.getElementById('vp')
const counters = document.getElementById('counters')
@@ -67,14 +68,14 @@ const spaceCharacteristicsElement = document.getElementById('space-characteristi
if (space && space.box) {
//CREATE SPACES
- const { x, y, h, w } = space.box;
+ const { x, y} = space.box;
const spaceArea = document.createElement('div');
spaceArea.classList.add('space-area', space.country)
spaceArea.id=`space_${space.space_id}`;
spaceArea.style.left = x + 'px';
spaceArea.style.top = y + 'px';
- spaceArea.style.width = w + 'px';
- spaceArea.style.height = h + 'px';
+ spaceArea.style.width = width + 'px';
+ spaceArea.style.height = height + 'px';
spaceArea.style.zIndex = 2;
spaceArea.my_space = space.name_unique;
spaceArea.addEventListener('mousedown', on_click_space);
diff --git a/rules.js b/rules.js
index 1abdf84..1b8b52a 100644
--- a/rules.js
+++ b/rules.js
@@ -23,6 +23,7 @@ const all_power_cards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
const numberless_cards = [25, 26, 27, 28, 29, 30, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52]
const auto_resolve_events = [5, 8, 9, 13, 17, 25, 26, 30, 35, 50, 53, 54, 58, 59, 62, 63, 65, 70, 72, 74, 99, 102, 108]
const switch_events = [6, 20, 71]
+const variable_events = [3, 14, 15, 21, 61, 67, 70, 81, 84, 96, 97, 107, 109]
exports.scenarios = [ "Standard" ]
@@ -131,22 +132,15 @@ function start_game() {
console.log('card numbers: ', card_numbers) */
game.strategy_deck = draw_deck(cards)
reset_power()
- game.playable_cards = cards.map(card => {
- if (card === null) return null
- return {
- number: card.number,
- playable: card.playable
- }})
+
+ // Set cards were event playable status changes during the game
+
+ game.playable_cards = [false, true, true, true, false, '', true, false, false, false, false, false, false ]
+
//console.log('game.strategy_deck: ', game.strategy_deck[1])
draw_cards(game.strategy_deck, game.democrat_hand, game.communist_hand, game.dem_hand_limit, game.com_hand_limit)
//.log('game.strategy_deck: ', game.strategy_deck[1], 'democrat_hand:', game.democrat_hand)
- spaces.forEach((space, index) => {
- if(index === 0 ) return
- game.pieces.push({
- demInfl: space.demInfl,
- comInfl: space.comInfl
- });
- });
+
game.valid_spaces = valid_spaces_setup()
game.available_ops = 2
game.phase = 0
@@ -169,7 +163,8 @@ exports.view = function(state, player) {
valid_spaces: game.valid_spaces,
valid_cards: game.valid_cards,
- pieces: game.pieces,
+ demInfl: spaces.demInfl,
+ comInfl: spaces.comInfl,
turn: game.turn,
round: game.round,
round_player: game.round_player,
@@ -482,22 +477,38 @@ states.play_card ={
}
// Check for Reformer Rehabilitated
- console.log('game.active', game.active, 'game.playable_cards[67].playable', game.playable_cards[67].playable)
+
+ //console.log('game.active', game.active, 'game.playable_cards[67].playable', game.playable_cards[67].playable)
+
+
if (game.played_card === 67){
- if (game.active === DEM && game.playable_cards[67].playable === DEM) {
+ if (game.active === DEM && game.playable_cards[find_event(67)] === DEM) {
gen_action('event')
}
- if (game.active === COM && game.playable_cards[67].playable === COM) {
+ if (game.active === COM && game.playable_cards[find_event(67)] === COM) {
gen_action('event')
}
}
//Continue with normal logic
+
+ //Check if it is a card with an event which is always playable
+
+ if (!variable_events.includes(game.played_card)) {
+ get_events(game.played_card)
+ }
+
+ // Resolve cards with variable events
+
+ if (variable_events.includes(game.played_card) && game.playable_cards[find_event(game.played_card)]) {
+ get_events(game.played_card)
+ } /*
if ((game.active === DEM && cards[game.played_card].side === 'D' && game.playable_cards[game.played_card].playable === 1) || (game.active === COM && cards[game.played_card].side === 'C' && game.playable_cards[game.played_card].playable ===1) || (cards[game.played_card].side === 'N'&& game.playable_cards[game.played_card].playable ===1)) {
gen_action('event')
} else if ((game.active === DEM && (cards[game.played_card].side === 'C' && game.playable_cards[game.played_card].playable ===1)) || game.active === COM && (cards[game.played_card].side === 'D' && game.playable_cards[game.played_card].playable ===1)) {
gen_action('opp_event')
- }
+ } */
+
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')
@@ -549,10 +560,13 @@ states.play_card ={
}
}
// Check if card is opponent card with event that needs to be resolved
- if ((game.active === DEM && cards[game.played_card].side === "C" && game.playable_cards[game.played_card].playable === 1) || (game.active === COM && cards[game.played_card].side === "D" && game.playable_cards[game.played_card].playable === 1 )) {
- game.phase = 1 /*Do I need this? */
- game.vm_event_to_do = true
- }
+
+ if (!variable_events.includes(game.played_card)|| game.playable_cards[find_event(game.played_card)]) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ //game.phase = 1 /*Do I need this? */
+ game.vm_event_to_do = true
+ }
+ }
// Set AHBR tracker to true
game.austria_hungary_border_reopened_tracker = true
@@ -569,9 +583,18 @@ states.play_card ={
log_gap(`Played C${cards[game.played_card].number} for support checks`)
// Check if card is opponent card with event that needs to be resolved
- if (game.phase === 0 && game.active === DEM && cards[game.played_card].side === "C" && game.playable_cards[game.played_card].playable === 1 || game.phase === 0 && game.active === COM && cards[game.played_card].side === "D" && game.playable_cards[game.played_card].playable === 1 ) {
+ /*if (game.phase === 0 && game.active === DEM && cards[game.played_card].side === "C" && game.playable_cards[game.played_card].playable === 1 || game.phase === 0 && game.active === COM && cards[game.played_card].side === "D" && game.playable_cards[game.played_card].playable === 1 ) {
game.vm_event_to_do = true
+ }*/
+
+ if (!variable_events.includes(game.played_card)|| game.playable_cards[find_event(game.played_card)]) {
+ if ((game.active === DEM && cards[game.played_card].side === "C" ) || (game.active === COM && cards[game.played_card].side === "D")) {
+ game.vm_event_to_do = true
+ }
}
+
+
+
game.available_ops = 2
game.state='support_check_prep'
valid_spaces_sc()
@@ -1962,7 +1985,7 @@ states.stasi_confirm = {
}
},
done() {
- game.playable_cards[21].playable = 0
+ game.playable_cards[find_event(21)] = false
end_stasi_choose_card()
}
}
@@ -2079,9 +2102,9 @@ function add_infl(space) {
// Update influence values
if (game.active === COM) {
- game.pieces[clicked_space].comInfl++
+ game.comInfl[clicked_space].comInfl++
} else {
- game.pieces[clicked_space].demInfl++
+ game.demInfl[clicked_space].demInfl++
}
// Check whether spaces are controlled
@@ -2128,13 +2151,13 @@ function remove_infl(space) {
if (game.remove_opponent_infl === true) {
if (game.active === COM) {
- game.pieces[clicked_space].demInfl--
- if (game.pieces[clicked_space].demInfl === 0) {
+ game.demInfl[clicked_space]--
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
} else {
- game.pieces[clicked_space].comInfl--
- if (game.pieces[clicked_space].comInfl === 0) {
+ game.comInfl[clicked_space]--
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
}
@@ -2142,13 +2165,13 @@ function remove_infl(space) {
} else {
if (game.active === COM) {
- game.pieces[clicked_space].comInfl--
- if (game.pieces[clicked_space].comInfl === 0) {
+ game.comInfl[clicked_space]--
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
} else {
- game.pieces[clicked_space].demInfl--
- if (game.pieces[clicked_space].demInfl === 0) {
+ game.demInfl[clicked_space]--
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
}
@@ -2319,25 +2342,25 @@ function do_sc(space) {
log_msg_gap(`${change_infl} point swing`)
let clicked_space = find_space_index(space)
if(game.active === DEM) {
- if (change_infl > game.pieces[clicked_space].comInfl) {
- const residual = change_infl - game.pieces[clicked_space].comInfl
- game.pieces[clicked_space].comInfl = 0
- game.pieces[clicked_space].demInfl += residual
+ if (change_infl > game.comInfl[clicked_space]) {
+ const residual = change_infl - game.comInfl[clicked_space]
+ game.comInfl[clicked_space] = 0
+ game.demInfl[clicked_space] += residual
} else {
- game.pieces[clicked_space].comInfl -= change_infl
+ game.comInfl[clicked_space] -= change_infl
}
- if (game.pieces[clicked_space].comInfl === 0) {
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space)
}
} else {
- if (change_infl > game.pieces[clicked_space].demInfl) {
- const residual = change_infl - game.pieces[clicked_space].demInfl
- game.pieces[clicked_space].demInfl = 0
- game.pieces[clicked_space].comInfl += residual
+ if (change_infl > game.demInfl[clicked_space]) {
+ const residual = change_infl - game.demInfl[clicked_space]
+ game.demInfl[clicked_space] = 0
+ game.comInfl[clicked_space] += residual
} else {
- game.pieces[clicked_space].demInfl -= change_infl
+ game.demInfl[clicked_space] -= change_infl
}
- if (game.pieces[clicked_space].demInfl === 0) {
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space)
}
}
@@ -2367,17 +2390,18 @@ 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 < game.pieces.length; i++) {
- piece = game.pieces[i]
+ for (let i =1 ; i < 75 ; i++) {
space = spaces[i]
if (game.state === 'com_init') {
+ infl = game.demInfl[i]
- if (piece.demInfl === 0) {
+ if (infl === 0) {
valid_spaces_set.add(space.space_id);
}
} else if (game.state === 'dem_init') {
- if (piece.comInfl === 0) {
+ infl = game.comInfl[i]
+ if (infl === 0) {
valid_spaces_set.add(space.space_id);
}
}
@@ -2390,16 +2414,17 @@ function valid_spaces_setup() {
function valid_spaces_sc() {
let valid_spaces_set = new Set();
- for (let i = 1 ; i < game.pieces.length; i++) {
- piece = game.pieces[i]
+ for (let i = 1 ; i < 75; i++) {
space = spaces[i]
if (game.active === DEM) {
- if (piece.comInfl !== 0 ) {
+ infl = game.comInfl[i]
+ if (infl !== 0 ) {
valid_spaces_set.add(space.space_id);
}
- } else {
- if (piece.demInfl !== 0 ) {
+ } else {
+ infl = game.demInfl[i]
+ if (infl !== 0 ) {
if (game.persistent_events['solidarity_legalised']) {
if (space.space_id === 14) {continue}
}
@@ -2436,16 +2461,17 @@ function valid_spaces_sc() {
function valid_spaces_support_loss() {
let valid_spaces_set = new Set();
- for (let i = 1; i < game.pieces.length; i++) {
- console.log('game.pieces.length', game.pieces.length, 'i', i)
- piece = game.pieces[i]
+ for (let i = 1; i < game.demInfl.length; i++) {
+ console.log('spaces.length', game.demInfl.length, 'i', i)
space = spaces[i]
if (game.active === DEM) {
- if (piece.demInfl > 0 && space.country === game.pwr_struggle_in) {
+ infl = game.demInfl[i]
+ if (infl > 0 && space.country === game.pwr_struggle_in) {
valid_spaces_set.add(space.space_id);
}
} else {
- if (piece.comInfl > 0 && space.country === game.pwr_struggle_in) {
+ infl = game.demInfl[i]
+ if (infl > 0 && space.country === game.pwr_struggle_in) {
valid_spaces_set.add(space.space_id);
}
}
@@ -2492,11 +2518,11 @@ function valid_spaces_infl() {
let valid_spaces_set = new Set();
// Iterate over all spaces to find the ones with the player's influence
- for (let i = 1; i < game.pieces.length; i++) {
- piece = game.pieces[i]
+ for (let i = 1; i < game.demInfl.length; i++) {
+ //piece = game.pieces[i]
space = spaces[i]
// console.log('checking piece:', space.name_unique)
- let player_influence = game.active === COM ? piece.comInfl : piece.demInfl;
+ let player_influence = game.active === COM ? game.comInfl[i] : game.demInfl[i];
// If the piece has the player's influence, add it and its adjacent spaces to the set
if (player_influence > 0) {
@@ -2627,9 +2653,9 @@ function count_adj(name_unique) {
function check_control(space_id) {
console.log('in check control, space', spaces[space_id].name_unique)
- if (game.active === COM && ((game.pieces[space_id].comInfl - game.pieces[space_id].demInfl) >= spaces[space_id].stability)) {
+ if (game.active === COM && ((game.comInfl[space_id] - game.demInfl[space_id]) >= spaces[space_id].stability)) {
return true;
- } else if (game.active === DEM && ((game.pieces[space_id].demInfl - game.pieces[space_id].comInfl) >= spaces[space_id].stability)) {
+ } else if (game.active === DEM && ((game.demInfl[space_id] - game.comInfl[space_id]) >= spaces[space_id].stability)) {
console.log('true')
return true;
} else {
@@ -2640,9 +2666,9 @@ function check_control(space_id) {
function check_opp_control(space_id) {
console.log('in check control, space', spaces[space_id].name_unique)
- if (game.active === DEM && ((game.pieces[space_id].comInfl - game.pieces[space_id].demInfl) >= spaces[space_id].stability)) {
+ if (game.active === DEM && ((game.comInfl[space_id] - game.demInfl[space_id]) >= spaces[space_id].stability)) {
return true;
- } else if (game.active === COM && ((game.pieces[space_id].demInfl - game.pieces[space_id].comInfl) >= spaces[space_id].stability)) {
+ } else if (game.active === COM && ((game.demInfl[space_id] - game.comInfl[space_id]) >= spaces[space_id].stability)) {
console.log('true')
return true;
} else {
@@ -2652,7 +2678,7 @@ function check_opp_control(space_id) {
}
function check_dem_control(space_id) {
- if ((game.pieces[space_id].demInfl - game.pieces[space_id].comInfl) >= spaces[space_id].stability) {
+ if ((game.demInfl[space_id] - game.comInfl[space_id]) >= spaces[space_id].stability) {
return true;
} else {
return false;
@@ -2660,7 +2686,7 @@ function check_dem_control(space_id) {
}
function check_com_control(space_id) {
- if ((game.pieces[space_id].comInfl - game.pieces[space_id].demInfl) >= spaces[space_id].stability) {
+ if ((game.comInfl[space_id] - game.demInfl[space_id]) >= spaces[space_id].stability) {
return true;
} else {
return false;
@@ -2742,7 +2768,6 @@ function check_presence(country) {
for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- let piece = game.pieces[i]
if (space.country === country) {
if (check_dem_control(i)) {
@@ -3032,20 +3057,20 @@ function check_reformer() {
console.log('reformer check, dem pos:', game.dem_tst_position, 'com:', game.com_tst_position)
if (game.dem_tst_position > game.com_tst_position) {
console.log('reformer set to DEM')
- game.playable_cards[67].playable = DEM
+ game.playable_cards[find_event(67)] = DEM
}
if (game.dem_tst_position < game.com_tst_position) {
- console.log('reformer set to COM')
- console.log('game.playable_cards[66].playable before', game.playable_cards[66].playable)
- console.log('game.playable_cards[67].playable before', game.playable_cards[67].playable)
- game.playable_cards[67].playable = COM
- console.log('game.playable_cards[67].playable after', game.playable_cards[67].playable)
+ //console.log('reformer set to COM')
+ //console.log('game.playable_cards[66].playable before', game.playable_cards[66].playable)
+ //console.log('game.playable_cards[67].playable before', game.playable_cards[67].playable)
+ game.playable_cards[find_event(67)] = COM
+ //console.log('game.playable_cards[67].playable after', game.playable_cards[67].playable)
}
if (game.dem_tst_position === game.com_tst_position) {
- console.log(`reformer set to ''`)
- game.playable_cards[67].playable = ''
+ //console.log(`reformer set to ''`)
+ game.playable_cards[find_event(67)] = ''
}
- console.log('game.playable_cards[67].playable', game.playable_cards[67].playable)
+ //console.log('game.playable_cards[67].playable', game.playable_cards[67].playable)
}
function count_scoring_cards() {
@@ -3126,6 +3151,23 @@ function select_card(card){
console.log('game.state', game.state)
}
+function find_event(card) {
+ return variable_events.findIndex(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')}
+ } else {
+ gen_action('event')
+ }
+}
+
// =========== MOVING THROUGH TURNS ============
function end_round() {
@@ -3156,7 +3198,7 @@ function end_round() {
game.return = ''
game.valid_cards = []
game.valid_spaces = []
- game.playable_cards[21].playable = 1
+ game.playable_cards[find_event(21)] = true
reset_austria_hungary_border_reopened() /*This should be redundant! */
@@ -3653,10 +3695,10 @@ function check_control_change(space_id) {
/*game.pieces[space_id].demCtrl = 0
game.pieces[space_id].comCtrl = 0
- if ((game.pieces[space_id].demInfl - game.pieces[space_id].comInfl) >= game.pieces[space_id].stability) {
+ if ((game.demInfl[space_id] - game.comInfl[space_id]) >= game.pieces[space_id].stability) {
game.pieces[space_id].demCtrl = 1
}
- if ((game.pieces[space_id].comInfl - game.pieces[space_id].demInfl) >= game.pieces[space_id].stability) {
+ if ((game.comInfl[space_id] - game.demInfl[space_id]) >= game.pieces[space_id].stability) {
game.pieces[space_id].comCtrl = 1
}*/
@@ -4057,16 +4099,17 @@ function vm_valid_spaces() {
function vm_valid_spaces_opponent () {
let valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
if (game.active === DEM) {
- if (piece.comInfl > 0) {
+ let infl = game.comInfl[i]
+ if (infl > 0) {
valid_spaces.push(space.space_id)
}
- } else {
- if (piece.demInfl > 0) {
+ } else {
+ infl = game.demInfl[i]
+ if (infl > 0) {
valid_spaces.push(space.space_id)
}
}
@@ -4078,7 +4121,7 @@ function vm_valid_spaces_opponent () {
function vm_valid_spaces_socio () {
let valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
if (space.socio === vm_operand(1)) {
@@ -4096,16 +4139,17 @@ function vm_valid_spaces_socio () {
function vm_valid_spaces_opponent_socio () {
let valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (game.active === DEM) {
- if (piece.comInfl > 0 && space.socio === vm_operand(1)) {
+ if (game.active === DEM) {
+ let infl = game.demInfl[i]
+ if (infl > 0 && space.socio === vm_operand(1)) {
valid_spaces.push(space.space_id)
}
} else {
- if (piece.demInfl > 0 && space.socio === vm_operand(1)) {
+ let infl = game.comInfl[i]
+ if (infl > 0 && space.socio === vm_operand(1)) {
valid_spaces.push(space.space_id)
}
}
@@ -4152,11 +4196,11 @@ function vm_valid_spaces_country_opp () {
for (let space of spaces) {
if (!space) continue
if (game.active === DEM) {
- if (space.country === country && game.pieces[space.space_id].comInfl >0) {
+ if (space.country === country && game.comInfl[space.space_id] >0) {
game.valid_spaces.push(space.space_id);
}
} else {
- if (space.country === country && game.pieces[space.space_id].demInfl >0) {
+ if (space.country === country && game.demInfl[space.space_id]>0) {
game.valid_spaces.push(space.space_id);
}
}
@@ -4176,11 +4220,11 @@ function vm_valid_spaces_country_sc () {
for (let space of spaces) {
if (!space) continue
if (game.active === DEM) {
- if (space.country === country && game.pieces[space.space_id].comInfl >0) {
+ if (space.country === country && game.comInfl[space.space_id] >0) {
valid_spaces.push(space.space_id);
}
} else {
- if (space.country === country && game.pieces[space.space_id].demInfl >0) {
+ if (space.country === country && game.demInfl[space.space_id] >0) {
if (game.persistent_events['solidarity_legalised'] && space.space_id === 14) {continue}
if (game.persistent_events['civic_forum'] && space.space_id === 30) {continue}
if (game.persistent_events['we_are_the_people'] && space.space_id === 9) {continue}
@@ -4225,7 +4269,7 @@ function vm_valid_spaces_region_opp() {
for (let space of spaces) {
if (!space) continue
let s = space.space_id
- if ((game.active === DEM && space.region === vm_operand(1) && game.pieces[s].comInfl > 0 ) || (game.active === COM && space.region === vm_operand(1) && game.pieces[s].demInfl > 0 )) {
+ if ((game.active === DEM && space.region === vm_operand(1) && game.comInfl[s] > 0 ) || (game.active === COM && space.region === vm_operand(1) && game.demInfl[s] > 0 )) {
valid_spaces.push(space.space_id);
}
}
@@ -4235,7 +4279,7 @@ function vm_valid_spaces_region_opp() {
function vm_valid_spaces_solidarity_legalised() {
let valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
let uncontrolled = (!check_control(i) && !check_opp_control(i))
if ((space.country === 'Poland' && uncontrolled && space.socio === 3) || (space.country === 'Poland' && uncontrolled && space.socio === 4)) {
@@ -4263,22 +4307,22 @@ function vm_take_control_prep() {
function vm_take_control(space) {
let clicked_space = find_space_index(space)
if (game.active === DEM) {
- let current_infl = game.pieces[clicked_space].demInfl
- let opponent_infl = game.pieces[clicked_space].comInfl
+ let current_infl = game.demInfl[clicked_space]
+ let opponent_infl = game.comInfl[clicked_space]
let stability = spaces[clicked_space].stability
if ((current_infl - opponent_infl) < stability) {
- game.pieces[clicked_space].demInfl += stability - current_infl + opponent_infl
+ game.demInfl[clicked_space] += stability - current_infl + opponent_infl
//game.pieces[clicked_space].demCtrl = 1
//game.pieces[clicked_space].comCtrl = 0
}
} else if (game.active === COM) {
- let current_infl = game.pieces[clicked_space].comInfl
- let opponent_infl = game.pieces[clicked_space].demInfl
+ let current_infl = game.comInfl[clicked_space]
+ let opponent_infl = game.demInfl[clicked_space]
let stability = spaces[clicked_space].stability
if ((current_infl - opponent_infl) < stability) {
- game.pieces[clicked_space].comInfl += stability - current_infl + opponent_infl
+ game.comInfl[clicked_space] += stability - current_infl + opponent_infl
//game.pieces[clicked_space].comCtrl = 1
//game.pieces[clicked_space].demCtrl = 0
}
@@ -4314,9 +4358,9 @@ function vm_do_add_infl(space) {
// Update influence values
if (game.active === COM) {
- game.pieces[clicked_space].comInfl++
+ game.comInfl[clicked_space]++
} else {
- game.pieces[clicked_space].demInfl++
+ game.demInfl[clicked_space]++
}
// Check whether spaces are controlled
@@ -4362,9 +4406,9 @@ function vm_do_add_infl_free(space) {
// Update influence values
if (game.active === COM) {
- game.pieces[clicked_space].comInfl++
+ game.comInfl[clicked_space]++
} else {
- game.pieces[clicked_space].demInfl++
+ game.demInfl[clicked_space]++
}
game.vm_available_ops--
// Check whether spaces are controlled
@@ -4396,9 +4440,9 @@ function vm_do_add_x_infl(space) {
if (game.active === COM) {
- game.pieces[clicked_space].comInfl += game.vm_available_ops
+ game.comInfl[clicked_space] += game.vm_available_ops
} else {
- game.pieces[clicked_space].demInfl += game.vm_available_ops
+ game.demInfl[clicked_space] += game.vm_available_ops
}
check_control_change(clicked_space)
game.vm_available_ops = 0
@@ -4426,9 +4470,9 @@ function vm_do_add_limited_infl(space, max_infl) {
}
if (game.active === COM) {
- game.pieces[clicked_space].comInfl ++
+ game.comInfl[clicked_space] ++
} else {
- game.pieces[clicked_space].demInfl ++
+ game.demInfl[clicked_space] ++
}
game.vm_influence_added[clicked_space] ++
@@ -4474,13 +4518,13 @@ function vm_do_remove_infl(space) {
}
if (game.remove_opponent_infl === true) {
if (game.active === COM) {
- game.pieces[clicked_space].demInfl--
- if (game.pieces[clicked_space].demInfl === 0) {
+ game.demInfl[clicked_space]--
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
} else {
- game.pieces[clicked_space].comInfl--
- if (game.pieces[clicked_space].comInfl === 0) {
+ game.comInfl[clicked_space]--
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
}
@@ -4488,13 +4532,13 @@ function vm_do_remove_infl(space) {
} else {
if (game.active === COM) {
- game.pieces[clicked_space].comInfl--
- if (game.pieces[clicked_space].comInfl === 0) {
+ game.comInfl[clicked_space]--
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
} else {
- game.pieces[clicked_space].demInfl--
- if (game.pieces[clicked_space].demInfl === 0) {
+ game.demInfl[clicked_space]--
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space);
}
}
@@ -4511,34 +4555,34 @@ function vm_do_remove_x_infl(space) {
if (game.remove_opponent_infl) {
if (game.active === COM) {
- if (game.pieces[clicked_space].demInfl >= game.vm_available_ops) {
- game.pieces[clicked_space].demInfl -= game.vm_available_ops
+ if (game.demInfl[clicked_space] >= game.vm_available_ops) {
+ game.demInfl[clicked_space] -= game.vm_available_ops
} else {
- game.vm_available_ops = game.pieces[clicked_space].demInfl
- game.pieces[clicked_space].demInfl -= game.vm_available_ops
+ game.vm_available_ops = game.demInfl[clicked_space]
+ game.demInfl[clicked_space] -= game.vm_available_ops
}
} else {
- if (game.pieces[clicked_space].comInfl >= game.vm_available_ops) {
- game.pieces[clicked_space].comInfl -= game.vm_available_ops
+ if (game.comInfl[clicked_space] >= game.vm_available_ops) {
+ game.comInfl[clicked_space] -= game.vm_available_ops
} else {
- game.vm_available_ops = game.pieces[clicked_space].comInfl
- game.pieces[clicked_space].comInfl -= game.vm_available_ops
+ game.vm_available_ops = game.comInfl[clicked_space]
+ game.comInfl[clicked_space] -= game.vm_available_ops
}
}
} else {
if (game.active === COM) {
- if (game.pieces[clicked_space].comInfl >= game.vm_available_ops) {
- game.pieces[clicked_space].comInfl -= game.vm_available_ops
+ if (game.comInfl[clicked_space] >= game.vm_available_ops) {
+ game.comInfl[clicked_space] -= game.vm_available_ops
} else {
- game.vm_available_ops = game.pieces[clicked_space].comInfl
- game.pieces[clicked_space].comInfl -= game.vm_available_ops
+ game.vm_available_ops = game.comInfl[clicked_space]
+ game.comInfl[clicked_space] -= game.vm_available_ops
}
} else {
- if (game.pieces[clicked_space].demInfl >= game.vm_available_ops) {
- game.pieces[clicked_space].demInfl -= game.vm_available_ops
+ if (game.demInfl[clicked_space] >= game.vm_available_ops) {
+ game.demInfl[clicked_space] -= game.vm_available_ops
} else {
- game.vm_available_ops = game.pieces[clicked_space].demInfl
- game.pieces[clicked_space].demInfl -= game.vm_available_ops
+ game.vm_available_ops = game.demInfl[clicked_space]
+ game.demInfl[clicked_space] -= game.vm_available_ops
}
}
}
@@ -4573,13 +4617,13 @@ function vm_do_remove_limited_infl(space, max_infl) {
}
if (game.active === COM) {
- game.pieces[clicked_space].demInfl --
- if (game.pieces[clicked_space].demInfl === 0) {
+ game.demInfl[clicked_space] --
+ if (game.demInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space)
}
} else {
- game.pieces[clicked_space].comInfl --
- if (game.pieces[clicked_space].comInfl === 0) {
+ game.comInfl[clicked_space] --
+ if (game.comInfl[clicked_space] === 0) {
game.valid_spaces = game.valid_spaces.filter(id => id !== clicked_space)
}
}
@@ -4606,17 +4650,17 @@ function vm_do_remove_all_infl(space) {
if (game.remove_opponent_infl === true) {
if (game.active === COM) {
- game.pieces[clicked_space].demInfl = 0
+ game.demInfl[clicked_space] = 0
} else {
- game.pieces[clicked_space].comInfl = 0
+ game.comInfl[clicked_space] = 0
}
check_control_change(clicked_space)
} else {
if (game.active === COM) {
- game.pieces[clicked_space].comInfl = 0
+ game.comInfl[clicked_space] = 0
} else {
- game.pieces[clicked_space].demInfl = 0
+ game.demInfl[clicked_space] = 0
}
check_control_change(clicked_space)
}
@@ -4626,11 +4670,11 @@ function vm_do_remove_all_infl(space) {
function vm_replace_all_infl(space_id) {
if (game.active === DEM) {
- game.pieces[space_id].demInfl += game.pieces[space_id].comInfl
- game.pieces[space_id].comInfl = 0
+ game.demInfl[space_id] += game.comInfl[space_id]
+ game.comInfl[space_id] = 0
} else {
- game.pieces[space_id].comInfl += game.pieces[space_id].demInfl
- game.pieces[space_id].demInfl = 0
+ game.comInfl[space_id] += game.demInfl[space_id]
+ game.demInfl[space_id] = 0
}
check_control_change(space_id)
}
@@ -4654,8 +4698,8 @@ function vm_support_check_modified() {
function vm_switch_infl(space){
push_undo()
let clicked_space = find_space_index(space)
- game.pieces[clicked_space].demInfl -= game.vm_available_ops
- game.pieces[clicked_space].comInfl += game.vm_available_ops
+ 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}`)
game.vm_available_ops = 0
check_control_change(clicked_space)
@@ -4687,7 +4731,7 @@ function vm_army_backs_revolution() {
permanently_remove(70)
}*/
game.persistent_events['securitate'] = false
- game.playable_cards[70].playable = 0
+ game.playable_cards[find_event(70)] = false
/*if (game.table_cards.includes(70)) {
permanently_remove(70)
}*/
@@ -4703,9 +4747,9 @@ function vm_austria_hungary_border_reopened() {
}
function vm_betrayal() {
- if (game.pieces[58].demInfl > 0 ) { game.valid_spaces.push(58) }
- if (game.pieces[65].demInfl >0 ) { game.valid_spaces.push(65) }
- game.vm_available_ops = Math.max(game.pieces[58].demInfl, game.pieces[65].demInfl)
+ if (game.demInfl[58] > 0 ) { game.valid_spaces.push(58) }
+ if (game.demInfl[65] >0 ) { game.valid_spaces.push(65) }
+ game.vm_available_ops = Math.max(game.demInfl[58], game.demInfl[65])
game.state = 'vm_switch_infl'
}
@@ -4716,8 +4760,8 @@ function vm_breakaway_baltic_republics() {
if (check_vp()) {
return
}
- game.playable_cards[109].playable = 1
- game.playable_cards[14].playable = 0
+ game.playable_cards[find_event(109)] = true
+ game.playable_cards[find_event(14)] = false
if (!check_dem_control(56) && game.persistent_events['systematization'] !== 56) {game.valid_spaces.push(56)}
if (!check_dem_control(70)) {game.valid_spaces.push(70)}
vm_next()
@@ -4739,18 +4783,18 @@ function vm_bulgarian_turks_expelled(){
if (check_vp()) {
return
}
- if (game.pieces[70].demInfl > 0) {game.valid_spaces = [70]}
+ if (game.demInfl[70] > 0) {game.valid_spaces = [70]}
vm_next()
}
function vm_ceausescu() {
let adj_cluj = false
- if (game.pieces[50].demInfl > 0 ) {adj_cluj = true}
- if (game.pieces[54].demInfl > 0 ) {adj_cluj = true}
- if (game.pieces[58].demInfl > 0 ) {adj_cluj = true}
- if (game.pieces[61].demInfl > 0 ) {adj_cluj = true}
+ if (game.demInfl[50] > 0 ) {adj_cluj = true}
+ if (game.demInfl[54] > 0 ) {adj_cluj = true}
+ if (game.demInfl[58] > 0 ) {adj_cluj = true}
+ if (game.demInfl[61] > 0 ) {adj_cluj = true}
- if (adj_cluj && game.pieces[61].comInfl>0) {
+ if (adj_cluj && game.comInfl[61]>0) {
game.valid_spaces = [61]
game.vm_available_ops = 1
//next_player()
@@ -4800,7 +4844,7 @@ function vm_common_european_home() {
function vm_dash_for_the_west() {
game.valid_cards = []
for (let c of game.strategy_discard) {
- if (cards[c].side === 'D' && cards[c].remove === 1 && game.playable_cards[c].playable === 1) {
+ if (cards[c].side === 'D' && cards[c].remove === 1 && (!variable_events.includes(c) || game.playable_cards[find_event(c)])) {
game.valid_cards.push(c)
}
}
@@ -4851,16 +4895,18 @@ function vm_eliminate(space_id) {
log(`Eliminated %${space_id}`)
const adjacent_spaces = spaces[space_id].adjacent.filter(Number.isInteger);
- console.log('adjacency before: Iasi', game.pieces[53].adjacent, 'Ploesti:', game.pieces[59].adjacent, 'Bucharesti:', game.pieces[61].adjacent)
+ //console.log('adjacency before: Iasi', game.pieces[53].adjacent, 'Ploesti:', game.pieces[59].adjacent, 'Bucharesti:', game.pieces[61].adjacent)
// Remove clicked_space from the adjacency lists of its adjacent spaces
adjacent_spaces.forEach(s => {
game.pieces[s].adjacent = spaces[s].adjacent.filter(id => id !== space_id);
});
- console.log('adjacency after: Iasi', game.pieces[53].adjacent, 'Ploesti:', game.pieces[59].adjacent, 'Bucharesti:', game.pieces[61].adjacent)
+ //console.log('adjacency after: Iasi', game.pieces[53].adjacent, 'Ploesti:', game.pieces[59].adjacent, 'Bucharesti:', game.pieces[61].adjacent)
// Connect adjacent spaces to each other
+ // No longer used - spaces done dynamically
+/*
for (let i = 0; i < adjacent_spaces.length; i++) {
for (let j = i + 1; j < adjacent_spaces.length; j++) {
console.log(' checking i,', spaces[adjacent_spaces[i]].name, 'j', spaces[adjacent_spaces[j]].name)
@@ -4876,14 +4922,14 @@ function vm_eliminate(space_id) {
console.log('adjacency after addition: Iasi', game.pieces[53].adjacent, 'Ploesti:', game.pieces[59].adjacent, 'Bucharesti:', game.pieces[61].adjacent)
// Clear the adjacency list of the clicked space
game.pieces[space_id].adjacent = [];
-
+*/
// Eliminate the democrat influence and move the communist influence to Bucuresti
- game.pieces[space_id].demInfl = 0
- game.pieces[61].comInfl += game.pieces[space_id].comInfl
- if (game.pieces[space_id].comInfl > 0 ) {
- log(`${game.pieces[space_id].comInfl} Communist SP relocated to Bucuresti`)
+ game.demInfl[space_id] = 0
+ game.comInfl[61] += game.comInfl[space_id]
+ if (game.comInfl[space_id] > 0 ) {
+ log(`${game.comInfl[space_id]} Communist SP relocated to Bucuresti`)
}
- game.pieces[space_id].comInfl = 0
+ game.comInfl[space_id] = 0
//Update control in the eliminated space and in Bucuresti
check_control_change(space_id)
@@ -4931,10 +4977,9 @@ function vm_foreign_currency_debt_burden() {
}
function vm_foreign_television() {
- for (let i = 1 ; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1 ; i < spaces.length; i++) {
if (i === 12) {continue} /*Does not apply to Dresden*/
- if (piece.comInfl > 0 ) {
+ if (game.comInfl[i] > 0 ) {
game.valid_spaces.push(i)
}
}
@@ -4976,7 +5021,7 @@ function vm_goodbye_lenin() {
}
//Check if these cards are playabl
for (let card of game.communist_hand_red) {
- if (game.playable_cards[card].playable === 1) {
+ if (!variable_events.includes(card) || game.playable_cards[find_event(card)]) {
game.valid_cards.push(card)
}
}
@@ -4985,10 +5030,9 @@ function vm_goodbye_lenin() {
}
function vm_government_resigns() {
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (space.socio === 1 && piece.comInfl > 0 && !check_control(i)) {
+ if (space.socio === 1 && game.comInfl[i] > 0 && !check_control(i)) {
game.valid_spaces.push(i)
}
}
@@ -5066,7 +5110,7 @@ function vm_kiss_of_death() {
}
function vm_klaus_and_komarek() {
- if (game.pieces[29].comInfl > 0 ) {game.valid_spaces = [29]}
+ if (game.comInfl[29] > 0 ) {game.valid_spaces = [29]}
vm_next()
}
@@ -5107,7 +5151,7 @@ function vm_kremlin_coup() {
function vm_laszlo_tokes() {
game.persistent_events['laszlo_tokes'] = true
- game.playable_cards[107].playable = 1
+ game.playable_cards[find_event(107)] = true
game.state = 'vm_laszlo_tokes'
}
@@ -5117,7 +5161,7 @@ function vm_legacy_of_martial_law() {
}
function vm_legacy_of_1968() {
- for (let i = 1; i < game.pieces.length; i++) {
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
if ((!check_com_control(i) && space.country === 'Czechoslovakia')) {
game.valid_spaces.push(space.space_id);
@@ -5148,7 +5192,7 @@ function vm_massacre_in_timisoara() {
}
function vm_modrow() {
- game.playable_cards[15].playable = 0
+ game.playable_cards[find_event(15)] = false
game.state = 'vm_modrow'
}
@@ -5172,8 +5216,8 @@ function vm_nomenklatura() {
}
function vm_normalisation() {
- if (game.pieces[27].demInfl >0) {game.valid_spaces.push(27)}
- if (game.pieces[29].demInfl > 0) {game.valid_spaces.push(29)}
+ if (game.demInfl[27] >0) {game.valid_spaces.push(27)}
+ if (game.demInfl[29] > 0) {game.valid_spaces.push(29)}
game.remove_opponent_infl = true
vm_next()
}
@@ -5254,7 +5298,7 @@ function vm_prudence() {
function vm_public_against_violence() {
game.valid_spaces = []
- if (game.pieces[34].comInfl > 0 ) {game.valid_spaces.push(34)}
+ if (game.comInfl[34] > 0 ) {game.valid_spaces.push(34)}
vm_next()
}
@@ -5290,7 +5334,7 @@ function vm_sajudis_check() {
}
function vm_sajudis() {
- game.playable_cards[81].playable = 1
+ game.playable_cards[find_event(81)] = true
game.stability++
log('+1 VP')
game.vp++
@@ -5321,14 +5365,14 @@ function vm_social_democratic_platform_adopted() {
function vm_solidarity_legalised() {
log_msg_gap(`C2 in effect`)
- game.playable_cards[3].playable = 1
+ game.playable_cards[find_event(3)] = true
game.persistent_events['solidarity_legalised'] = true
vm_next()
}
function vm_st_nicholas_church () {
game.persistent_events['st_nicholas_church'] = true
- game.playable_cards[61].playable = 1
+ game.playable_cards[find_event(61)] = true
permanently_remove(24)
vm_next()
}
@@ -5371,7 +5415,7 @@ function vm_tear_gas () {
}
function vm_the_baltic_way() {
- game.playable_cards[84].playable = 1
+ game.playable_cards[find_event(84)] =true
game.stability++
if (!check_dem_control(56) && game.persistent_events['systematization'] !== 56) {game.valid_spaces.push(56)}
if (!check_dem_control(70) && game.persistent_events['systematization'] !== 70) {game.valid_spaces.push(70)}
@@ -5392,7 +5436,7 @@ function vm_the_crowd_turns_against_ceausescu() {
//game.persistent_events['the_crowd_turns_against_ceausescu'] = true
game.table_cards.push(54)
remove_from_discard(54)
- game.playable_cards[97].playable = 1
+ game.playable_cards[find_event(97)] = true
vm_next()
}
@@ -5415,18 +5459,17 @@ function vm_the_third_way() {
function vm_the_tyrant_is_gone() {
game.valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (piece.demInfl === 0 && space.country === 'Romania') {
+ if (game.demInfl[i] === 0 && space.country === 'Romania') {
if (space.space_id === game.persistent_events['systematization']) {continue}
game.valid_spaces.push(space.space_id)
}
}
- game.playable_cards[10].playable = 0
+ /*game.playable_cards[10].playable = 0
game.playable_cards[41].playable = 0
game.playable_cards[101].playable = 0
- game.playable_cards[107].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'
}
@@ -5461,7 +5504,7 @@ function vm_warsaw_pact_summit() {
}
function vm_we_are_the_people() {
- if (game.pieces[6].demInfl > 0) {game.valid_spaces = [6]}
+ if (game.demInfl[6] > 0) {game.valid_spaces = [6]}
game.persistent_events['we_are_the_people'] = true
game.vm_influence_added[6] = 0
game.vm_available_ops = 4
@@ -5473,7 +5516,7 @@ function vm_workers_revolt() {
for (let space of spaces) {
if (!space) continue
let country = space.country
- if (!game.revolutions[`${country}`] && game.pieces[space.space_id].comInfl > 0 && space.socio === 4) {
+ if (!game.revolutions[`${country}`] && game.comInfl[space.space_id] > 0 && space.socio === 4) {
game.valid_spaces.push(space.space_id);
}
}
@@ -5481,7 +5524,7 @@ function vm_workers_revolt() {
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) {
+ if (game.revolutions[`${country}`] && game.demInfl[space.space_id] > 0 && space.socio === 4) {
game.valid_spaces.push(space.space_id);
}
}
@@ -6021,7 +6064,7 @@ states.vm_brought_in_for_questioning = {
discard() {
game.vm_event = discard_card(game.democrat_hand)
game.phase = 1
- if (cards[game.vm_event].side === 'C' && game.playable_cards[game.vm_event].playable === 1) {
+ if (cards[game.vm_event].side === 'C' && (!variable_events.includes(game.event) || game.playable_cards[find_event(game.vm_event)])) {
game.return = game.active
if (!auto_resolve_events.includes(game.vm_event) && !switch_events.includes(game.vm_event)) {
next_player()
@@ -6252,7 +6295,7 @@ states.vm_deutsche_marks = {
return `resolve ${cards[20].name}.`
},
prompt() {
- if(cards[game.vm_event].side === 'C' && game.playable_cards[game.vm_event].playable === 1) {
+ if(cards[game.vm_event].side === 'C' && (!variable_events.includes(game.vm_event) || game.playable_cards[find_event(game.vm_event)])) {
view.prompt = `Deutsche Marks: you must play ${clean_name(cards[this_card()].name)} for the event.`
gen_action('event')
} else {
@@ -6864,12 +6907,12 @@ states.vm_malta_summit = {
if (check_vp()) {
return
}
- if (game.pieces[12].comInfl > 0 ) {game.valid_spaces.push(12)}
- if (game.pieces[15].comInfl > 0 ) {game.valid_spaces.push(15)}
- if (game.pieces[27].comInfl > 0 ) {game.valid_spaces.push(27)}
- 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)}
+ if (game.comInfl[12] > 0 ) {game.valid_spaces.push(12)}
+ if (game.comInfl[15] > 0 ) {game.valid_spaces.push(15)}
+ if (game.comInfl[27] > 0 ) {game.valid_spaces.push(27)}
+ if (game.comInfl[43] > 0 ) {game.valid_spaces.push(43)}
+ if (game.comInfl[51] > 0 ) {game.valid_spaces.push(51)}
+ if (game.comInfl[69] > 0 ) {game.valid_spaces.push(69)}
//game.vm_available_ops = 5
game.remove_opponent_infl = true
vm_next()
@@ -6990,11 +7033,10 @@ states.vm_nomenklatura = {
remove() {
push_undo()
game.valid_spaces = []
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (space.socio === 1 && piece.demInfl > 0) {
+ if (space.socio === 1 && game.demInfl[i] > 0) {
game.valid_spaces.push(space.space_id)
}
}
@@ -7458,10 +7500,9 @@ states.vm_the_wall_must_go = {
if (check_vp()) {
return
}
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (space.country === 'East_Germany' && piece.comInfl > 0){
+ if (space.country === 'East_Germany' && game.comInfl[i] > 0){
game.valid_spaces.push(space.space_id)
}
}
@@ -7485,10 +7526,9 @@ states.vm_warsaw_pact_summit = {
},
influence(){
push_undo()
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (piece.demInfl === 0) {
+ if (game.demInfl[i] === 0) {
game.valid_spaces.push(space.space_id);
}
}
@@ -7499,10 +7539,9 @@ states.vm_warsaw_pact_summit = {
},
support_check(){
push_undo()
- for (let i = 1; i < game.pieces.length; i++) {
- let piece = game.pieces[i]
+ for (let i = 1; i < spaces.length; i++) {
let space = spaces[i]
- if (piece.demInfl > 0 && (space.socio === 5 || space.socio === 6)) {
+ if (game.demInfl[i] > 0 && (space.socio === 5 || space.socio === 6)) {
game.valid_spaces.push(space.space_id)
}
}
@@ -7518,7 +7557,7 @@ states.vm_we_are_the_people_remove = {
return `resolve ${cards[game.played_card].name}.`
},
prompt() {
- if (game.pieces[6].demInfl === 0) {
+ if (game.demInfl[6] === 0) {
view.prompt = '"We are the People!": no influence to remove.'
gen_action('done')
} else if (game.vm_available_ops > 0 ) {
@@ -7929,9 +7968,11 @@ CODE[9] = [ // The Wall*
]
CODE[10] = [ // Cult of Personality
+ [ vm_if, ()=>!game.persistent_events['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_endif ],
[ vm_permanently_remove ],
[ vm_return ],
]
@@ -8110,7 +8151,7 @@ CODE[35] = [ // Heal our Bleeding Wounds*
CODE[36] = [ // Dash for the West*
[ vm_permanently_remove ],
- [ vm_prompt, 'Dash for the West: select any Democratic event with an asterix(*) from the discard pile. Event occurs immediately.' ],
+ [ vm_prompt, 'Dash for the West: select any Democratic event with an asterix(*) from the discard pile. Event occurs immediately' ],
[ vm_dash_for_the_west ],
[ vm_return ],
]
@@ -8154,6 +8195,7 @@ CODE[40] = [ // Hungarian Democratic Forum
]
CODE[41] = [ // Ceausescu*
+ [ vm_if, ()=>!game.persistent_events['the_tyrant_is_gone'] ],
[ vm_valid_spaces_country_sc, 'Romania' ],
[ vm_prompt, ' from Romania' ],
[ vm_remove_opp_infl, 3 ],
@@ -8162,6 +8204,7 @@ CODE[41] = [ // Ceausescu*
[ vm_1_support_check ],
[ vm_prompt, ' from Bucharesti' ],
[ vm_ceausescu ],
+ [ vm_endif ],
[ vm_permanently_remove ],
[ vm_return ],
]
@@ -8621,9 +8664,11 @@ CODE[100] = [ // Stand Fast*
]
CODE[101] = [ // Elena*
+ [ vm_if, ()=>!game.persistent_events['the_tyrant_is_gone'] ],
[ vm_valid_spaces, 51 ],
[ vm_prompt, 'the Romania Elite Space' ],
[ vm_add_x_infl, 2 ],
+ [ vm_endif ],
[ vm_elena ],
[ vm_return ],
]
@@ -8662,6 +8707,7 @@ CODE[105] = [ // Public Against Violence*
CODE[106] = [ // Social Democratic Platform Adopted*
[ vm_social_democratic_platform_adopted ],
[ vm_valid_spaces_country ],
+ [ vm_prompt, ()=>`${country_name(game.vm_active_country)}` ],
[ vm_add_infl_free, 2 ],
[ vm_valid_spaces_country_sc ],
[ vm_prompt, ()=>`make a Support Check in ${country_name(game.vm_active_country)}` ],
@@ -8671,10 +8717,12 @@ CODE[106] = [ // Social Democratic Platform Adopted*
]
CODE[107] = [ // Massacre in Timisoara*
+ [ vm_if, ()=>!game.persistent_events['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_endif ],
[ vm_permanently_remove ],
[ vm_return ],
]
@@ -8687,8 +8735,8 @@ CODE[108] = [ // Army Backs Revolution*
CODE[109] = [ // Kremlin Coup*
[ vm_kremlin_coup ],
- //[ vm_prompt, 'Elite spaces in all countries where the Communist retains Power' ],
- //[ vm_take_control_prep, 6 ],
+ [ vm_prompt, 'Elite spaces in all countries where the Communist retains Power' ],
+ [ vm_take_control_prep, 6 ],
[ vm_permanently_remove ],
[ vm_return ],
]
@@ -8710,6 +8758,7 @@ CODE[110] = [ // Malta Summit*
+
// ============= TIANANMEN SQUARE TRACK AWARDS ====================
CODE[203] = [//Tiananmen Square space 3 award
[vm_tst_3],