powergrid-engine 1.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -0
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.js +17 -0
  5. package/dist/src/available-moves.d.ts +24 -0
  6. package/dist/src/available-moves.js +363 -0
  7. package/dist/src/engine.d.ts +20 -0
  8. package/dist/src/engine.js +1937 -0
  9. package/dist/src/gamestate.d.ts +135 -0
  10. package/dist/src/gamestate.js +30 -0
  11. package/dist/src/log.d.ts +14 -0
  12. package/dist/src/log.js +2 -0
  13. package/dist/src/maps/america.d.ts +55 -0
  14. package/dist/src/maps/america.js +411 -0
  15. package/dist/src/maps/australia.d.ts +46 -0
  16. package/dist/src/maps/australia.js +138 -0
  17. package/dist/src/maps/badenwurttemberg.d.ts +46 -0
  18. package/dist/src/maps/badenwurttemberg.js +163 -0
  19. package/dist/src/maps/benelux.d.ts +46 -0
  20. package/dist/src/maps/benelux.js +210 -0
  21. package/dist/src/maps/brazil.d.ts +54 -0
  22. package/dist/src/maps/brazil.js +292 -0
  23. package/dist/src/maps/centraleurope.d.ts +54 -0
  24. package/dist/src/maps/centraleurope.js +236 -0
  25. package/dist/src/maps/china.d.ts +54 -0
  26. package/dist/src/maps/china.js +262 -0
  27. package/dist/src/maps/france.d.ts +54 -0
  28. package/dist/src/maps/france.js +290 -0
  29. package/dist/src/maps/germany.d.ts +57 -0
  30. package/dist/src/maps/germany.js +328 -0
  31. package/dist/src/maps/indian.d.ts +54 -0
  32. package/dist/src/maps/indian.js +283 -0
  33. package/dist/src/maps/italy.d.ts +54 -0
  34. package/dist/src/maps/italy.js +190 -0
  35. package/dist/src/maps/japan.d.ts +46 -0
  36. package/dist/src/maps/japan.js +144 -0
  37. package/dist/src/maps/korea.d.ts +54 -0
  38. package/dist/src/maps/korea.js +186 -0
  39. package/dist/src/maps/middleeast.d.ts +54 -0
  40. package/dist/src/maps/middleeast.js +225 -0
  41. package/dist/src/maps/northerneurope.d.ts +54 -0
  42. package/dist/src/maps/northerneurope.js +197 -0
  43. package/dist/src/maps/quebec.d.ts +54 -0
  44. package/dist/src/maps/quebec.js +283 -0
  45. package/dist/src/maps/russia.d.ts +54 -0
  46. package/dist/src/maps/russia.js +286 -0
  47. package/dist/src/maps/southafrica.d.ts +46 -0
  48. package/dist/src/maps/southafrica.js +152 -0
  49. package/dist/src/maps/spainportugal.d.ts +54 -0
  50. package/dist/src/maps/spainportugal.js +289 -0
  51. package/dist/src/maps/ukireland.d.ts +52 -0
  52. package/dist/src/maps/ukireland.js +176 -0
  53. package/dist/src/maps.d.ts +50 -0
  54. package/dist/src/maps.js +61 -0
  55. package/dist/src/move.d.ts +63 -0
  56. package/dist/src/move.js +15 -0
  57. package/dist/src/powerPlants.d.ts +4 -0
  58. package/dist/src/powerPlants.js +60 -0
  59. package/dist/src/prices.d.ts +7 -0
  60. package/dist/src/prices.js +10 -0
  61. package/dist/src/randomizeMap.d.ts +3 -0
  62. package/dist/src/randomizeMap.js +244 -0
  63. package/dist/src/utils.d.ts +2 -0
  64. package/dist/src/utils.js +24 -0
  65. package/dist/wrapper.d.ts +30 -0
  66. package/dist/wrapper.js +127 -0
  67. package/index.ts +6 -0
  68. package/package.json +51 -0
  69. package/src/available-moves.ts +450 -0
  70. package/src/engine.spec.ts +163 -0
  71. package/src/engine.ts +2270 -0
  72. package/src/fixtures/GermanyRecharged.json +6627 -0
  73. package/src/fixtures/USAOriginal.json +5216 -0
  74. package/src/fixtures/supply.json +5792 -0
  75. package/src/fixtures/undo.json +4102 -0
  76. package/src/gamestate.ts +164 -0
  77. package/src/log.ts +17 -0
  78. package/src/maps/america.ts +411 -0
  79. package/src/maps/australia.ts +137 -0
  80. package/src/maps/badenwurttemberg.ts +162 -0
  81. package/src/maps/benelux.ts +210 -0
  82. package/src/maps/brazil.ts +306 -0
  83. package/src/maps/centraleurope.ts +235 -0
  84. package/src/maps/china.ts +268 -0
  85. package/src/maps/france.ts +295 -0
  86. package/src/maps/germany.ts +328 -0
  87. package/src/maps/indian.ts +289 -0
  88. package/src/maps/italy.ts +189 -0
  89. package/src/maps/japan.ts +143 -0
  90. package/src/maps/korea.ts +185 -0
  91. package/src/maps/middleeast.ts +225 -0
  92. package/src/maps/northerneurope.ts +196 -0
  93. package/src/maps/quebec.ts +304 -0
  94. package/src/maps/russia.ts +292 -0
  95. package/src/maps/southafrica.ts +151 -0
  96. package/src/maps/spainportugal.ts +295 -0
  97. package/src/maps/ukireland.ts +175 -0
  98. package/src/maps.ts +123 -0
  99. package/src/move.ts +83 -0
  100. package/src/powerPlants.ts +59 -0
  101. package/src/prices.ts +10 -0
  102. package/src/randomizeMap.ts +288 -0
  103. package/src/rankings.spec.ts +18 -0
  104. package/src/utils.spec.ts +13 -0
  105. package/src/utils.ts +23 -0
  106. package/tsconfig.json +17 -0
  107. package/wrapper.ts +126 -0
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.map = exports.Cities = exports.Regions = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const engine_1 = require("../engine");
6
+ const powerPlants_1 = require("../powerPlants");
7
+ const utils_1 = require("../utils");
8
+ var Regions;
9
+ (function (Regions) {
10
+ Regions["Red"] = "red";
11
+ Regions["Brown"] = "brown";
12
+ Regions["Green"] = "green";
13
+ Regions["Orange"] = "orange";
14
+ Regions["Yellow"] = "yellow";
15
+ Regions["Pink"] = "pink";
16
+ })(Regions = exports.Regions || (exports.Regions = {}));
17
+ var Cities;
18
+ (function (Cities) {
19
+ Cities["Thiruvananthapuram"] = "Thiruvananthapuram";
20
+ Cities["Madurai"] = "Madurai";
21
+ Cities["Coimbatore"] = "Coimbatore";
22
+ Cities["Chennai"] = "Chennai";
23
+ Cities["Hyderabad"] = "Hyderabad";
24
+ Cities["Bangalore1"] = "Bangalore 1";
25
+ Cities["Bangalore2"] = "Bangalore 2";
26
+ Cities["Dibrugarh"] = "Dibrugarh";
27
+ Cities["Imphal"] = "Imphal";
28
+ Cities["Aizawi"] = "Aizawi";
29
+ Cities["Chittagong"] = "Chittagong";
30
+ Cities["Shillong"] = "Shillong";
31
+ Cities["Dhaka"] = "Dhaka";
32
+ Cities["Khulna"] = "Khulna";
33
+ Cities["Darjeeling"] = "Darjeeling";
34
+ Cities["Kathmandu"] = "Kathmandu";
35
+ Cities["Patna"] = "Patna";
36
+ Cities["Lakhnau"] = "Lakhnau";
37
+ Cities["Varanasi"] = "Varanasi";
38
+ Cities["Agra"] = "Agra";
39
+ Cities["Kanpur"] = "Kanpur";
40
+ Cities["Srinagar"] = "Srinagar";
41
+ Cities["Ludhiana"] = "Ludhiana";
42
+ Cities["Delhi1"] = "Delhi 1";
43
+ Cities["Delhi2"] = "Delhi 2";
44
+ Cities["Jaipur"] = "Jaipur";
45
+ Cities["Udaipur"] = "Udaipur";
46
+ Cities["Ahmedabad"] = "Ahmedabad";
47
+ Cities["Dhanbad"] = "Dhanbad";
48
+ Cities["Kolkata"] = "Kolkata";
49
+ Cities["Bhudaneswar"] = "Bhudaneswar";
50
+ Cities["Sambalpur"] = "Sambalpur";
51
+ Cities["Jabalpur"] = "Jabalpur";
52
+ Cities["Nagpur"] = "Nagpur";
53
+ Cities["Visakhapatnam"] = "Visakhapatnam";
54
+ Cities["Goa"] = "Goa";
55
+ Cities["Pune"] = "Pune";
56
+ Cities["Surat"] = "Surat";
57
+ Cities["Indore"] = "Indore";
58
+ Cities["Bhopal"] = "Bhopal";
59
+ Cities["Mumbai1"] = "Mumbai 1";
60
+ Cities["Mumbai2"] = "Mumbai 2";
61
+ })(Cities = exports.Cities || (exports.Cities = {}));
62
+ exports.map = {
63
+ name: 'India',
64
+ cities: [
65
+ { name: Cities.Thiruvananthapuram, region: Regions.Red, x: 217, y: 868 },
66
+ { name: Cities.Madurai, region: Regions.Red, x: 230, y: 829 },
67
+ { name: Cities.Coimbatore, region: Regions.Red, x: 197, y: 797 },
68
+ { name: Cities.Chennai, region: Regions.Red, x: 289, y: 740 },
69
+ { name: Cities.Hyderabad, region: Regions.Red, x: 232, y: 618 },
70
+ { name: Cities.Bangalore1, region: Regions.Red, x: 205, y: 710 },
71
+ { name: Cities.Bangalore2, region: Regions.Red, x: 205, y: 735 },
72
+ { name: Cities.Dibrugarh, region: Regions.Brown, x: 669, y: 328 },
73
+ { name: Cities.Imphal, region: Regions.Brown, x: 658, y: 392 },
74
+ { name: Cities.Aizawi, region: Regions.Brown, x: 625, y: 427 },
75
+ { name: Cities.Chittagong, region: Regions.Brown, x: 589, y: 483 },
76
+ { name: Cities.Shillong, region: Regions.Brown, x: 586, y: 395 },
77
+ { name: Cities.Dhaka, region: Regions.Brown, x: 548, y: 432 },
78
+ { name: Cities.Khulna, region: Regions.Brown, x: 528, y: 468 },
79
+ { name: Cities.Darjeeling, region: Regions.Green, x: 496, y: 333 },
80
+ { name: Cities.Kathmandu, region: Regions.Green, x: 418, y: 307 },
81
+ { name: Cities.Patna, region: Regions.Green, x: 416, y: 373 },
82
+ { name: Cities.Lakhnau, region: Regions.Green, x: 310, y: 338 },
83
+ { name: Cities.Varanasi, region: Regions.Green, x: 350, y: 385 },
84
+ { name: Cities.Agra, region: Regions.Green, x: 228, y: 335 },
85
+ { name: Cities.Kanpur, region: Regions.Green, x: 269, y: 373 },
86
+ { name: Cities.Srinagar, region: Regions.Orange, x: 135, y: 115 },
87
+ { name: Cities.Ludhiana, region: Regions.Orange, x: 186, y: 215 },
88
+ { name: Cities.Delhi1, region: Regions.Orange, x: 190, y: 281 },
89
+ { name: Cities.Delhi2, region: Regions.Orange, x: 190, y: 303 },
90
+ { name: Cities.Jaipur, region: Regions.Orange, x: 158, y: 341 },
91
+ { name: Cities.Udaipur, region: Regions.Orange, x: 105, y: 410 },
92
+ { name: Cities.Ahmedabad, region: Regions.Orange, x: 75, y: 456 },
93
+ { name: Cities.Dhanbad, region: Regions.Yellow, x: 424, y: 427 },
94
+ { name: Cities.Kolkata, region: Regions.Yellow, x: 463, y: 477 },
95
+ { name: Cities.Bhudaneswar, region: Regions.Yellow, x: 428, y: 533 },
96
+ { name: Cities.Sambalpur, region: Regions.Yellow, x: 376, y: 494 },
97
+ { name: Cities.Jabalpur, region: Regions.Yellow, x: 293, y: 478 },
98
+ { name: Cities.Nagpur, region: Regions.Yellow, x: 250, y: 510 },
99
+ { name: Cities.Visakhapatnam, region: Regions.Yellow, x: 358, y: 597 },
100
+ { name: Cities.Goa, region: Regions.Pink, x: 109, y: 677 },
101
+ { name: Cities.Pune, region: Regions.Pink, x: 133, y: 587 },
102
+ { name: Cities.Surat, region: Regions.Pink, x: 80, y: 510 },
103
+ { name: Cities.Indore, region: Regions.Pink, x: 160, y: 476 },
104
+ { name: Cities.Bhopal, region: Regions.Pink, x: 208, y: 437 },
105
+ { name: Cities.Mumbai1, region: Regions.Pink, x: 58, y: 570 },
106
+ { name: Cities.Mumbai2, region: Regions.Pink, x: 58, y: 593 },
107
+ ],
108
+ connections: [
109
+ { nodes: [Cities.Srinagar, Cities.Ludhiana], cost: 15 },
110
+ { nodes: [Cities.Ludhiana, Cities.Delhi1], cost: 9 },
111
+ { nodes: [Cities.Delhi1, Cities.Delhi2], cost: 0 },
112
+ { nodes: [Cities.Delhi2, Cities.Jaipur], cost: 7 },
113
+ { nodes: [Cities.Delhi2, Cities.Agra], cost: 6 },
114
+ { nodes: [Cities.Jaipur, Cities.Bhopal], cost: 12 },
115
+ { nodes: [Cities.Jaipur, Cities.Kanpur], cost: 12 },
116
+ { nodes: [Cities.Agra, Cities.Lakhnau], cost: 8 },
117
+ { nodes: [Cities.Lakhnau, Cities.Kathmandu], cost: 15 },
118
+ { nodes: [Cities.Kathmandu, Cities.Darjeeling], cost: 13 },
119
+ { nodes: [Cities.Darjeeling, Cities.Shillong], cost: 12 },
120
+ { nodes: [Cities.Shillong, Cities.Patna], cost: 18 },
121
+ { nodes: [Cities.Patna, Cities.Kathmandu], cost: 10 },
122
+ { nodes: [Cities.Imphal, Cities.Dibrugarh], cost: 11 },
123
+ { nodes: [Cities.Dibrugarh, Cities.Shillong], cost: 9 },
124
+ { nodes: [Cities.Shillong, Cities.Imphal], cost: 12 },
125
+ { nodes: [Cities.Imphal, Cities.Aizawi], cost: 7 },
126
+ { nodes: [Cities.Shillong, Cities.Dhaka], cost: 10 },
127
+ { nodes: [Cities.Dhaka, Cities.Khulna], cost: 6 },
128
+ { nodes: [Cities.Khulna, Cities.Kolkata], cost: 3 },
129
+ { nodes: [Cities.Dhanbad, Cities.Dhaka], cost: 14 },
130
+ { nodes: [Cities.Jabalpur, Cities.Sambalpur], cost: 13 },
131
+ { nodes: [Cities.Sambalpur, Cities.Nagpur], cost: 13 },
132
+ { nodes: [Cities.Nagpur, Cities.Visakhapatnam], cost: 17 },
133
+ { nodes: [Cities.Visakhapatnam, Cities.Sambalpur], cost: 12 },
134
+ { nodes: [Cities.Jabalpur, Cities.Kanpur], cost: 11 },
135
+ { nodes: [Cities.Varanasi, Cities.Jabalpur], cost: 11 },
136
+ { nodes: [Cities.Kanpur, Cities.Varanasi], cost: 8 },
137
+ { nodes: [Cities.Varanasi, Cities.Patna], cost: 5 },
138
+ { nodes: [Cities.Patna, Cities.Lakhnau], cost: 11 },
139
+ { nodes: [Cities.Kanpur, Cities.Bhopal], cost: 13 },
140
+ { nodes: [Cities.Ahmedabad, Cities.Bhopal], cost: 11 },
141
+ { nodes: [Cities.Bhopal, Cities.Udaipur], cost: 11 },
142
+ { nodes: [Cities.Udaipur, Cities.Jaipur], cost: 9 },
143
+ { nodes: [Cities.Ahmedabad, Cities.Surat], cost: 7 },
144
+ { nodes: [Cities.Ahmedabad, Cities.Indore], cost: 8 },
145
+ { nodes: [Cities.Indore, Cities.Surat], cost: 10 },
146
+ { nodes: [Cities.Mumbai1, Cities.Mumbai2], cost: 0 },
147
+ { nodes: [Cities.Mumbai2, Cities.Pune], cost: 4 },
148
+ { nodes: [Cities.Pune, Cities.Hyderabad], cost: 13 },
149
+ { nodes: [Cities.Pune, Cities.Nagpur], cost: 17 },
150
+ { nodes: [Cities.Pune, Cities.Indore], cost: 15 },
151
+ { nodes: [Cities.Goa, Cities.Coimbatore], cost: 18 },
152
+ { nodes: [Cities.Bangalore1, Cities.Bangalore2], cost: 0 },
153
+ { nodes: [Cities.Bangalore2, Cities.Coimbatore], cost: 9 },
154
+ { nodes: [Cities.Coimbatore, Cities.Thiruvananthapuram], cost: 10 },
155
+ { nodes: [Cities.Thiruvananthapuram, Cities.Madurai], cost: 7 },
156
+ { nodes: [Cities.Madurai, Cities.Chennai], cost: 12 },
157
+ { nodes: [Cities.Chennai, Cities.Bangalore1], cost: 9 },
158
+ { nodes: [Cities.Bangalore1, Cities.Hyderabad], cost: 14 },
159
+ { nodes: [Cities.Hyderabad, Cities.Goa], cost: 15 },
160
+ { nodes: [Cities.Goa, Cities.Bangalore2], cost: 14 },
161
+ { nodes: [Cities.Mumbai2, Cities.Goa], cost: 11 },
162
+ { nodes: [Cities.Indore, Cities.Nagpur], cost: 10 },
163
+ { nodes: [Cities.Sambalpur, Cities.Dhanbad], cost: 8 },
164
+ { nodes: [Cities.Sambalpur, Cities.Bhudaneswar], cost: 7 },
165
+ { nodes: [Cities.Bhudaneswar, Cities.Kolkata], cost: 11 },
166
+ { nodes: [Cities.Kolkata, Cities.Dhanbad], cost: 9 },
167
+ { nodes: [Cities.Dhanbad, Cities.Patna], cost: 8 },
168
+ { nodes: [Cities.Nagpur, Cities.Hyderabad], cost: 12 },
169
+ { nodes: [Cities.Hyderabad, Cities.Visakhapatnam], cost: 13 },
170
+ { nodes: [Cities.Visakhapatnam, Cities.Chennai], cost: 17 },
171
+ { nodes: [Cities.Chittagong, Cities.Aizawi], cost: 7 },
172
+ { nodes: [Cities.Dhaka, Cities.Aizawi], cost: 8 },
173
+ { nodes: [Cities.Dhaka, Cities.Chittagong], cost: 7 },
174
+ { nodes: [Cities.Patna, Cities.Darjeeling], cost: 11 },
175
+ { nodes: [Cities.Visakhapatnam, Cities.Bhudaneswar], cost: 12 },
176
+ { nodes: [Cities.Udaipur, Cities.Ahmedabad], cost: 6 },
177
+ { nodes: [Cities.Madurai, Cities.Coimbatore], cost: 6 },
178
+ { nodes: [Cities.Bangalore2, Cities.Madurai], cost: 10 },
179
+ { nodes: [Cities.Bhopal, Cities.Jabalpur], cost: 8 },
180
+ { nodes: [Cities.Bhopal, Cities.Nagpur], cost: 7 },
181
+ { nodes: [Cities.Bhopal, Cities.Indore], cost: 4 },
182
+ { nodes: [Cities.Surat, Cities.Mumbai1], cost: 6 },
183
+ { nodes: [Cities.Agra, Cities.Kanpur], cost: 8 },
184
+ { nodes: [Cities.Kanpur, Cities.Lakhnau], cost: 3 },
185
+ { nodes: [Cities.Lakhnau, Cities.Varanasi], cost: 7 },
186
+ ],
187
+ layout: 'Portrait',
188
+ mapPosition: [200, -60],
189
+ adjustRatio: [1.25, 1.25],
190
+ resupply: [
191
+ [
192
+ [4, 5, 4],
193
+ [5, 6, 4],
194
+ [6, 7, 5],
195
+ [7, 8, 6],
196
+ [8, 10, 7],
197
+ ],
198
+ [
199
+ [1, 2, 2],
200
+ [2, 2, 2],
201
+ [2, 3, 3],
202
+ [3, 4, 4],
203
+ [4, 5, 5],
204
+ ],
205
+ [
206
+ [1, 3, 4],
207
+ [1, 3, 4],
208
+ [3, 4, 6],
209
+ [4, 5, 7],
210
+ [4, 7, 9],
211
+ ],
212
+ [
213
+ [1, 1, 1],
214
+ [1, 1, 1],
215
+ [1, 2, 1],
216
+ [2, 2, 2],
217
+ [2, 3, 2],
218
+ ],
219
+ ],
220
+ startingResources: [24, 21, 20, 2],
221
+ startingSupply: [24, 24, 24, 8],
222
+ maxPriceAvailable: [3, 5, 8],
223
+ coalPrices: [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 8, 8],
224
+ garbagePrices: [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6],
225
+ uraniumPrices: [1, 2, 3, 4, 5, 6, 7, 8],
226
+ setupDeck(numPlayers, variant, rng) {
227
+ let powerPlantsDeck = lodash_1.cloneDeep(powerPlants_1.indiaPowerPlants);
228
+ let actualMarket;
229
+ let futureMarket;
230
+ // Except for adjusting the garbage plant cost, the setup is identical to the normal game.
231
+ if (variant == 'original') {
232
+ powerPlantsDeck = powerPlantsDeck.slice(8);
233
+ const powerPlant13 = powerPlantsDeck.splice(2, 1)[0];
234
+ const step3 = powerPlantsDeck.pop();
235
+ powerPlantsDeck = utils_1.shuffle(powerPlantsDeck, rng() + '');
236
+ if (numPlayers == 2 || numPlayers == 3) {
237
+ powerPlantsDeck = powerPlantsDeck.slice(8);
238
+ }
239
+ else if (numPlayers == 4) {
240
+ powerPlantsDeck = powerPlantsDeck.slice(4);
241
+ }
242
+ powerPlantsDeck.unshift(powerPlant13);
243
+ powerPlantsDeck.push(step3);
244
+ actualMarket = [
245
+ engine_1.getPowerPlant(3, 'India'),
246
+ engine_1.getPowerPlant(4, 'India'),
247
+ engine_1.getPowerPlant(5, 'India'),
248
+ engine_1.getPowerPlant(6, 'India'),
249
+ ];
250
+ futureMarket = [
251
+ engine_1.getPowerPlant(7, 'India'),
252
+ engine_1.getPowerPlant(8, 'India'),
253
+ engine_1.getPowerPlant(9, 'India'),
254
+ engine_1.getPowerPlant(10, 'India'),
255
+ ];
256
+ }
257
+ else {
258
+ let initialPowerPlants = utils_1.shuffle(powerPlantsDeck.splice(0, 12), rng() + '');
259
+ let initialPlantMarket = initialPowerPlants.splice(0, 8);
260
+ initialPlantMarket = initialPlantMarket.sort((a, b) => a.number - b.number);
261
+ actualMarket = initialPlantMarket.slice(0, 4);
262
+ futureMarket = initialPlantMarket.slice(4);
263
+ const first = initialPowerPlants.shift();
264
+ const step3 = powerPlantsDeck.pop();
265
+ powerPlantsDeck = utils_1.shuffle(powerPlantsDeck, rng() + '');
266
+ if (numPlayers == 2 || numPlayers == 3) {
267
+ initialPowerPlants = initialPowerPlants.slice(2);
268
+ powerPlantsDeck = utils_1.shuffle(powerPlantsDeck.slice(6).concat(initialPowerPlants), rng() + '');
269
+ }
270
+ else if (numPlayers == 4) {
271
+ initialPowerPlants = initialPowerPlants.slice(1);
272
+ powerPlantsDeck = utils_1.shuffle(powerPlantsDeck.slice(3).concat(initialPowerPlants), rng() + '');
273
+ }
274
+ else {
275
+ powerPlantsDeck = utils_1.shuffle(powerPlantsDeck.concat(initialPowerPlants), rng() + '');
276
+ }
277
+ powerPlantsDeck.unshift(first);
278
+ powerPlantsDeck.push(step3);
279
+ }
280
+ return { actualMarket, futureMarket, powerPlantsDeck };
281
+ },
282
+ mapSpecificRules: 'The power grid will suffer a power outage if too many cities are built in one round, penalizing players $3 per city built.\nPlayers take turns buying one resource at a time. The resource market is limited in steps 1 and 2.\nGarbage plants are less efficient. Their cost is one higher, but their storage capacity is not changed.\nPlayers must power as many cities as possible in each round.',
283
+ };
@@ -0,0 +1,54 @@
1
+ import { GameMap } from './../maps';
2
+ export declare enum Regions {
3
+ Brown = "brown",
4
+ Purple = "purple",
5
+ Red = "red",
6
+ Green = "green",
7
+ Yellow = "yellow",
8
+ Blue = "blue"
9
+ }
10
+ export declare enum Cities {
11
+ Siracusa = "Siracusa",
12
+ Reggiodical = "Reggio Di Cal",
13
+ Cosenza = "Cosenza",
14
+ Messina = "Messina",
15
+ Palermo = "Palermo",
16
+ Catania = "Catania",
17
+ Brindisi = "Brindisi",
18
+ Taranto = "Taranto",
19
+ Bari = "Bari",
20
+ Foggia = "Foggia",
21
+ Pesara = "Pesara",
22
+ Napoli = "Napoli",
23
+ Salerno = "Salerno",
24
+ Roma = "Roma",
25
+ Ancona = "Ancona",
26
+ Rimini = "Rimini",
27
+ Ravenna = "Ravenna",
28
+ Sanmarino = "San Marino",
29
+ Perugia = "Perugia",
30
+ Frienze = "Frienze",
31
+ Udine = "Udine",
32
+ Trieste = "Trieste",
33
+ Bolanzo = "Bolanzo",
34
+ Mestre = "Mestre",
35
+ Venezia = "Venezia",
36
+ Vicenza = "Vicenza",
37
+ Padua = "Padua",
38
+ Ferrara = "Ferrara",
39
+ Bologna = "Bologna",
40
+ Modena = "Modena",
41
+ Reggio = "Reggio",
42
+ Pisa = "Pisa",
43
+ Parma = "Parma",
44
+ Laspezia = "La Spezia",
45
+ Torino = "Torino",
46
+ Bergamo = "Bergamo",
47
+ Milano = "Milano",
48
+ Brescia = "Brescia",
49
+ Picenza = "Picenza",
50
+ Genova = "Genova",
51
+ Verona = "Verona",
52
+ Lovorno = "Lovorno"
53
+ }
54
+ export declare const map: GameMap;
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.map = exports.Cities = exports.Regions = void 0;
4
+ var Regions;
5
+ (function (Regions) {
6
+ Regions["Brown"] = "brown";
7
+ Regions["Purple"] = "purple";
8
+ Regions["Red"] = "red";
9
+ Regions["Green"] = "green";
10
+ Regions["Yellow"] = "yellow";
11
+ Regions["Blue"] = "blue";
12
+ })(Regions = exports.Regions || (exports.Regions = {}));
13
+ var Cities;
14
+ (function (Cities) {
15
+ Cities["Siracusa"] = "Siracusa";
16
+ Cities["Reggiodical"] = "Reggio Di Cal";
17
+ Cities["Cosenza"] = "Cosenza";
18
+ Cities["Messina"] = "Messina";
19
+ Cities["Palermo"] = "Palermo";
20
+ Cities["Catania"] = "Catania";
21
+ Cities["Brindisi"] = "Brindisi";
22
+ Cities["Taranto"] = "Taranto";
23
+ Cities["Bari"] = "Bari";
24
+ Cities["Foggia"] = "Foggia";
25
+ Cities["Pesara"] = "Pesara";
26
+ Cities["Napoli"] = "Napoli";
27
+ Cities["Salerno"] = "Salerno";
28
+ Cities["Roma"] = "Roma";
29
+ Cities["Ancona"] = "Ancona";
30
+ Cities["Rimini"] = "Rimini";
31
+ Cities["Ravenna"] = "Ravenna";
32
+ Cities["Sanmarino"] = "San Marino";
33
+ Cities["Perugia"] = "Perugia";
34
+ Cities["Frienze"] = "Frienze";
35
+ Cities["Udine"] = "Udine";
36
+ Cities["Trieste"] = "Trieste";
37
+ Cities["Bolanzo"] = "Bolanzo";
38
+ Cities["Mestre"] = "Mestre";
39
+ Cities["Venezia"] = "Venezia";
40
+ Cities["Vicenza"] = "Vicenza";
41
+ Cities["Padua"] = "Padua";
42
+ Cities["Ferrara"] = "Ferrara";
43
+ Cities["Bologna"] = "Bologna";
44
+ Cities["Modena"] = "Modena";
45
+ Cities["Reggio"] = "Reggio";
46
+ Cities["Pisa"] = "Pisa";
47
+ Cities["Parma"] = "Parma";
48
+ Cities["Laspezia"] = "La Spezia";
49
+ Cities["Torino"] = "Torino";
50
+ Cities["Bergamo"] = "Bergamo";
51
+ Cities["Milano"] = "Milano";
52
+ Cities["Brescia"] = "Brescia";
53
+ Cities["Picenza"] = "Picenza";
54
+ Cities["Genova"] = "Genova";
55
+ Cities["Verona"] = "Verona";
56
+ Cities["Lovorno"] = "Lovorno";
57
+ })(Cities = exports.Cities || (exports.Cities = {}));
58
+ exports.map = {
59
+ name: 'Italy',
60
+ cities: [
61
+ { name: Cities.Siracusa, region: Regions.Brown, x: 1048, y: 471 },
62
+ { name: Cities.Reggiodical, region: Regions.Brown, x: 1013, y: 346 },
63
+ { name: Cities.Cosenza, region: Regions.Brown, x: 960, y: 240 },
64
+ { name: Cities.Messina, region: Regions.Brown, x: 975, y: 365 },
65
+ { name: Cities.Palermo, region: Regions.Brown, x: 875, y: 468 },
66
+ { name: Cities.Catania, region: Regions.Brown, x: 1007, y: 460 },
67
+ { name: Cities.Brindisi, region: Regions.Purple, x: 945, y: 4 },
68
+ { name: Cities.Taranto, region: Regions.Brown, x: 933, y: 92 },
69
+ { name: Cities.Bari, region: Regions.Purple, x: 871, y: 32 },
70
+ { name: Cities.Foggia, region: Regions.Purple, x: 777, y: 69 },
71
+ { name: Cities.Pesara, region: Regions.Purple, x: 646, y: 76 },
72
+ { name: Cities.Napoli, region: Regions.Purple, x: 747, y: 222 },
73
+ { name: Cities.Salerno, region: Regions.Purple, x: 799, y: 212 },
74
+ { name: Cities.Roma, region: Regions.Purple, x: 583, y: 228 },
75
+ { name: Cities.Ancona, region: Regions.Red, x: 549, y: 16 },
76
+ { name: Cities.Rimini, region: Regions.Red, x: 459, y: 13 },
77
+ { name: Cities.Ravenna, region: Regions.Red, x: 401, y: -5 },
78
+ { name: Cities.Sanmarino, region: Regions.Red, x: 456, y: 88 },
79
+ { name: Cities.Perugia, region: Regions.Red, x: 507, y: 123 },
80
+ { name: Cities.Frienze, region: Regions.Red, x: 389, y: 159 },
81
+ { name: Cities.Udine, region: Regions.Green, x: 358, y: -207 },
82
+ { name: Cities.Trieste, region: Regions.Green, x: 410, y: -181 },
83
+ { name: Cities.Bolanzo, region: Regions.Green, x: 197, y: -172 },
84
+ { name: Cities.Mestre, region: Regions.Green, x: 318, y: -115 },
85
+ { name: Cities.Venezia, region: Regions.Green, x: 349, y: -103 },
86
+ { name: Cities.Vicenza, region: Regions.Green, x: 235, y: -89 },
87
+ { name: Cities.Padua, region: Regions.Green, x: 279, y: -72 },
88
+ { name: Cities.Torino, region: Regions.Blue, x: 57, y: 215 },
89
+ { name: Cities.Bergamo, region: Regions.Blue, x: 125, y: 14 },
90
+ { name: Cities.Milano, region: Regions.Blue, x: 123, y: 102 },
91
+ { name: Cities.Brescia, region: Regions.Blue, x: 182, y: 2 },
92
+ { name: Cities.Picenza, region: Regions.Blue, x: 182, y: 105 },
93
+ { name: Cities.Genova, region: Regions.Blue, x: 182, y: 217 },
94
+ { name: Cities.Verona, region: Regions.Blue, x: 231, y: -13 },
95
+ { name: Cities.Lovorno, region: Regions.Red, x: 333, y: 216 },
96
+ { name: Cities.Ferrara, region: Regions.Yellow, x: 333, y: -3 },
97
+ { name: Cities.Bologna, region: Regions.Yellow, x: 350, y: 85 },
98
+ { name: Cities.Modena, region: Regions.Yellow, x: 303, y: 72 },
99
+ { name: Cities.Reggio, region: Regions.Yellow, x: 263, y: 96 },
100
+ { name: Cities.Pisa, region: Regions.Yellow, x: 304, y: 197 },
101
+ { name: Cities.Parma, region: Regions.Yellow, x: 224, y: 81 },
102
+ { name: Cities.Laspezia, region: Regions.Yellow, x: 245, y: 206 },
103
+ ],
104
+ connections: [
105
+ { nodes: [Cities.Palermo, Cities.Catania], cost: 15 },
106
+ { nodes: [Cities.Catania, Cities.Siracusa], cost: 3 },
107
+ { nodes: [Cities.Catania, Cities.Messina], cost: 6 },
108
+ { nodes: [Cities.Messina, Cities.Palermo], cost: 15 },
109
+ { nodes: [Cities.Messina, Cities.Reggiodical], cost: 3 },
110
+ { nodes: [Cities.Reggiodical, Cities.Cosenza], cost: 13 },
111
+ { nodes: [Cities.Cosenza, Cities.Salerno], cost: 18 },
112
+ { nodes: [Cities.Cosenza, Cities.Taranto], cost: 15 },
113
+ { nodes: [Cities.Taranto, Cities.Brindisi], cost: 4 },
114
+ { nodes: [Cities.Brindisi, Cities.Bari], cost: 7 },
115
+ { nodes: [Cities.Bari, Cities.Taranto], cost: 7 },
116
+ { nodes: [Cities.Taranto, Cities.Salerno], cost: 19 },
117
+ { nodes: [Cities.Salerno, Cities.Bari], cost: 16 },
118
+ { nodes: [Cities.Bari, Cities.Foggia], cost: 8 },
119
+ { nodes: [Cities.Foggia, Cities.Salerno], cost: 10 },
120
+ { nodes: [Cities.Salerno, Cities.Napoli], cost: 3 },
121
+ { nodes: [Cities.Napoli, Cities.Foggia], cost: 12 },
122
+ { nodes: [Cities.Napoli, Cities.Roma], cost: 14 },
123
+ { nodes: [Cities.Roma, Cities.Foggia], cost: 22 },
124
+ { nodes: [Cities.Foggia, Cities.Pesara], cost: 10 },
125
+ { nodes: [Cities.Pesara, Cities.Roma], cost: 14 },
126
+ { nodes: [Cities.Roma, Cities.Ancona], cost: 17 },
127
+ { nodes: [Cities.Roma, Cities.Perugia], cost: 13 },
128
+ { nodes: [Cities.Perugia, Cities.Sanmarino], cost: 12 },
129
+ { nodes: [Cities.Sanmarino, Cities.Rimini], cost: 0 },
130
+ { nodes: [Cities.Rimini, Cities.Ancona], cost: 6 },
131
+ { nodes: [Cities.Ancona, Cities.Perugia], cost: 10 },
132
+ { nodes: [Cities.Ancona, Cities.Pesara], cost: 9 },
133
+ { nodes: [Cities.Roma, Cities.Frienze], cost: 20 },
134
+ { nodes: [Cities.Lovorno, Cities.Roma], cost: 19 },
135
+ { nodes: [Cities.Frienze, Cities.Perugia], cost: 13 },
136
+ { nodes: [Cities.Frienze, Cities.Sanmarino], cost: 12 },
137
+ { nodes: [Cities.Genova, Cities.Torino], cost: 12 },
138
+ { nodes: [Cities.Torino, Cities.Milano], cost: 8 },
139
+ { nodes: [Cities.Milano, Cities.Bergamo], cost: 3 },
140
+ { nodes: [Cities.Bergamo, Cities.Bolanzo], cost: 12 },
141
+ { nodes: [Cities.Bolanzo, Cities.Brescia], cost: 12 },
142
+ { nodes: [Cities.Bolanzo, Cities.Mestre], cost: 12 },
143
+ { nodes: [Cities.Bolanzo, Cities.Udine], cost: 14 },
144
+ { nodes: [Cities.Udine, Cities.Trieste], cost: 4 },
145
+ { nodes: [Cities.Udine, Cities.Venezia], cost: 7 },
146
+ { nodes: [Cities.Venezia, Cities.Mestre], cost: 0 },
147
+ { nodes: [Cities.Genova, Cities.Laspezia], cost: 5 },
148
+ { nodes: [Cities.Laspezia, Cities.Pisa], cost: 5 },
149
+ { nodes: [Cities.Pisa, Cities.Lovorno], cost: 0 },
150
+ { nodes: [Cities.Genova, Cities.Milano], cost: 9 },
151
+ { nodes: [Cities.Milano, Cities.Picenza], cost: 4 },
152
+ { nodes: [Cities.Picenza, Cities.Parma], cost: 4 },
153
+ { nodes: [Cities.Parma, Cities.Reggio], cost: 2 },
154
+ { nodes: [Cities.Reggio, Cities.Modena], cost: 2 },
155
+ { nodes: [Cities.Modena, Cities.Bologna], cost: 3 },
156
+ { nodes: [Cities.Bologna, Cities.Pisa], cost: 12 },
157
+ { nodes: [Cities.Pisa, Cities.Reggio], cost: 10 },
158
+ { nodes: [Cities.Laspezia, Cities.Parma], cost: 9 },
159
+ { nodes: [Cities.Laspezia, Cities.Reggio], cost: 9 },
160
+ { nodes: [Cities.Genova, Cities.Picenza], cost: 7 },
161
+ { nodes: [Cities.Genova, Cities.Parma], cost: 11 },
162
+ { nodes: [Cities.Milano, Cities.Brescia], cost: 4 },
163
+ { nodes: [Cities.Brescia, Cities.Bergamo], cost: 3 },
164
+ { nodes: [Cities.Brescia, Cities.Verona], cost: 4 },
165
+ { nodes: [Cities.Brescia, Cities.Picenza], cost: 5 },
166
+ { nodes: [Cities.Bolanzo, Cities.Vicenza], cost: 10 },
167
+ { nodes: [Cities.Vicenza, Cities.Padua], cost: 3 },
168
+ { nodes: [Cities.Vicenza, Cities.Verona], cost: 3 },
169
+ { nodes: [Cities.Verona, Cities.Parma], cost: 6 },
170
+ { nodes: [Cities.Parma, Cities.Brescia], cost: 6 },
171
+ { nodes: [Cities.Verona, Cities.Padua], cost: 5 },
172
+ { nodes: [Cities.Padua, Cities.Mestre], cost: 3 },
173
+ { nodes: [Cities.Venezia, Cities.Ravenna], cost: 12 },
174
+ { nodes: [Cities.Ravenna, Cities.Ferrara], cost: 4 },
175
+ { nodes: [Cities.Ferrara, Cities.Venezia], cost: 9 },
176
+ { nodes: [Cities.Ferrara, Cities.Padua], cost: 7 },
177
+ { nodes: [Cities.Ferrara, Cities.Verona], cost: 7 },
178
+ { nodes: [Cities.Verona, Cities.Modena], cost: 8 },
179
+ { nodes: [Cities.Frienze, Cities.Pisa], cost: 5 },
180
+ { nodes: [Cities.Frienze, Cities.Ravenna], cost: 10 },
181
+ { nodes: [Cities.Ravenna, Cities.Rimini], cost: 4 },
182
+ { nodes: [Cities.Frienze, Cities.Bologna], cost: 8 },
183
+ { nodes: [Cities.Bologna, Cities.Ravenna], cost: 4 },
184
+ { nodes: [Cities.Bologna, Cities.Ferrara], cost: 3 },
185
+ { nodes: [Cities.Ferrara, Cities.Modena], cost: 4 },
186
+ ],
187
+ mapPosition: [-20, 320],
188
+ mapSpecificRules: 'Stop resupplying uranium after power plant 39 has been bought.',
189
+ startingResources: [18, 15, 12, 2],
190
+ };
@@ -0,0 +1,46 @@
1
+ import { GameMap } from './../maps';
2
+ export declare enum Regions {
3
+ Brown = "brown",
4
+ Green = "green",
5
+ Purple = "purple",
6
+ Yellow = "yellow",
7
+ Red = "red"
8
+ }
9
+ export declare enum Cities {
10
+ Asahikawa = "Asahikawa",
11
+ Sapporo = "Sapporo",
12
+ Hakodate = "Hakodate",
13
+ Admori = "Admori",
14
+ Morioka = "Morioka",
15
+ Akita = "Akita",
16
+ Sendai = "Sendai",
17
+ Niigata = "Niigata",
18
+ Koriyama = "Koriyama",
19
+ Nagano = "Nagano",
20
+ Saitama = "Saitama",
21
+ Tokyo = "Tokyo",
22
+ Chiba = "Chiba",
23
+ Yokohama = "Yokohama",
24
+ Kanazawa = "Kanazawa",
25
+ Toyama = "Toyama",
26
+ Kyoto = "Kyoto",
27
+ Osaka = "Osaka",
28
+ Nagoya = "Nagoya",
29
+ Kofu = "Kofu",
30
+ Hamamatsu = "Hamamatsu",
31
+ Kobe = "Kobe",
32
+ Matsue = "Matsue",
33
+ Okayama = "Okayama",
34
+ Takamatsu = "Takamatsu",
35
+ Kochi = "Kochi",
36
+ Matsuyama = "Matsuyama",
37
+ Hiroshima = "Hiroshima",
38
+ Shimonoseki = "Shimonoseki",
39
+ Oita = "Oita",
40
+ Miyazaki = "Miyazaki",
41
+ Kagoshima = "Kagoshima",
42
+ Kumamoto = "Kumamoto",
43
+ Fukuoka = "Fukuoka",
44
+ Nagasaki = "Nagasaki"
45
+ }
46
+ export declare const map: GameMap;