powergrid-engine 1.11.0 → 1.12.1
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.
- package/dist/src/available-moves.d.ts +1 -0
- package/dist/src/available-moves.js +66 -0
- package/dist/src/engine.js +77 -10
- package/dist/src/gamestate.d.ts +2 -1
- package/dist/src/maps/europe.d.ts +62 -0
- package/dist/src/maps/europe.js +356 -0
- package/dist/src/maps/northamerica.d.ts +62 -0
- package/dist/src/maps/northamerica.js +330 -0
- package/dist/src/maps/southafrica.d.ts +26 -26
- package/dist/src/maps/southafrica.js +239 -116
- package/dist/src/maps/ukireland.js +163 -40
- package/dist/src/maps.d.ts +10 -0
- package/dist/src/maps.js +12 -4
- package/dist/src/move.d.ts +1 -0
- package/package.json +1 -1
- package/src/available-moves.ts +88 -1
- package/src/engine.spec.ts +17 -0
- package/src/engine.ts +76 -15
- package/src/gamestate.ts +10 -3
- package/src/maps/europe.ts +391 -0
- package/src/maps/northamerica.ts +360 -0
- package/src/maps/southafrica.ts +247 -116
- package/src/maps/ukireland.ts +170 -40
- package/src/maps.ts +37 -6
- package/src/move.ts +4 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
// by John and Cici
|
|
2
|
+
import { GameMap } from './../maps';
|
|
3
|
+
|
|
4
|
+
export enum Regions {
|
|
5
|
+
Pink = 'pink', // NW: Pacific Northwest / Western Canada
|
|
6
|
+
Brown = 'brown', // West: California / Pacific SW / Mountain West
|
|
7
|
+
Orange = 'orange', // SW / Mexico
|
|
8
|
+
Green = 'green', // South: Texas / Deep South / Florida
|
|
9
|
+
Blue = 'blue', // Midwest / Plains / Mid-South
|
|
10
|
+
Yellow = 'yellow', // Great Lakes / Mid-Atlantic
|
|
11
|
+
Red = 'red', // Northeast / Eastern Canada
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export enum Cities {
|
|
15
|
+
// Pink — Pacific Northwest / Western Canada
|
|
16
|
+
Edmonton = 'Edmonton',
|
|
17
|
+
Calgary = 'Calgary',
|
|
18
|
+
Vancouver = 'Vancouver',
|
|
19
|
+
Seattle = 'Seattle',
|
|
20
|
+
Regina = 'Regina',
|
|
21
|
+
Winnipeg = 'Winnipeg',
|
|
22
|
+
Minneapolis = 'Minneapolis',
|
|
23
|
+
|
|
24
|
+
// Brown — California / Pacific SW / Mountain West
|
|
25
|
+
Portland = 'Portland',
|
|
26
|
+
SanFrancisco = 'San Francisco',
|
|
27
|
+
LosAngeles = 'Los Angeles',
|
|
28
|
+
SanDiego = 'San Diego',
|
|
29
|
+
SaltLakeCity = 'Salt Lake City',
|
|
30
|
+
LasVegas = 'Las Vegas',
|
|
31
|
+
Denver = 'Denver',
|
|
32
|
+
|
|
33
|
+
// Orange — SW / Mexico (includes Mexico City N + Mexico City S metropolis pair)
|
|
34
|
+
Albuquerque = 'Albuquerque',
|
|
35
|
+
Juarez = 'Juarez',
|
|
36
|
+
Chihuahua = 'Chihuahua',
|
|
37
|
+
Monterrey = 'Monterrey',
|
|
38
|
+
Guadalajara = 'Guadalajara',
|
|
39
|
+
MexicoCityN = 'Mexico City N',
|
|
40
|
+
MexicoCityS = 'Mexico City S',
|
|
41
|
+
|
|
42
|
+
// Green — Texas / Deep South / Florida
|
|
43
|
+
SanAntonio = 'San Antonio',
|
|
44
|
+
DallasFortWorth = 'Dallas-Fort Worth',
|
|
45
|
+
Houston = 'Houston',
|
|
46
|
+
NewOrleans = 'New Orleans',
|
|
47
|
+
Atlanta = 'Atlanta',
|
|
48
|
+
Jacksonville = 'Jacksonville',
|
|
49
|
+
Miami = 'Miami',
|
|
50
|
+
|
|
51
|
+
// Blue — Midwest / Plains / Mid-South
|
|
52
|
+
Milwaukee = 'Milwaukee',
|
|
53
|
+
Chicago = 'Chicago',
|
|
54
|
+
KansasCity = 'Kansas City',
|
|
55
|
+
StLouis = 'St. Louis',
|
|
56
|
+
Indianapolis = 'Indianapolis',
|
|
57
|
+
OklahomaCity = 'Oklahoma City',
|
|
58
|
+
Memphis = 'Memphis',
|
|
59
|
+
|
|
60
|
+
// Yellow — Great Lakes / Mid-Atlantic
|
|
61
|
+
Toronto = 'Toronto',
|
|
62
|
+
Detroit = 'Detroit',
|
|
63
|
+
Pittsburgh = 'Pittsburgh',
|
|
64
|
+
Columbus = 'Columbus',
|
|
65
|
+
Nashville = 'Nashville',
|
|
66
|
+
Washington = 'Washington',
|
|
67
|
+
Charlotte = 'Charlotte',
|
|
68
|
+
|
|
69
|
+
// Red — Northeast / Eastern Canada (includes New York N + New York S metropolis pair)
|
|
70
|
+
Quebec = 'Quebec',
|
|
71
|
+
Ottawa = 'Ottawa',
|
|
72
|
+
Montreal = 'Montreal',
|
|
73
|
+
NewYorkN = 'New York N',
|
|
74
|
+
NewYorkS = 'New York S',
|
|
75
|
+
Boston = 'Boston',
|
|
76
|
+
Philadelphia = 'Philadelphia',
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export const map: GameMap = {
|
|
80
|
+
name: 'North America',
|
|
81
|
+
// Coords authored against the displayed photo (~2000x1716). First-pass
|
|
82
|
+
// estimates from the printed board — verify against the actual map and tune
|
|
83
|
+
// `adjustRatio` / `mapPosition` once we render in the viewer.
|
|
84
|
+
cities: [
|
|
85
|
+
// Pink — Pacific Northwest / Western Canada
|
|
86
|
+
{ name: Cities.Edmonton, region: Regions.Pink, x: 325, y: 71 },
|
|
87
|
+
{ name: Cities.Calgary, region: Regions.Pink, x: 250, y: 190 },
|
|
88
|
+
{ name: Cities.Vancouver, region: Regions.Pink, x: 114, y: 266 },
|
|
89
|
+
{ name: Cities.Seattle, region: Regions.Pink, x: 100, y: 387 },
|
|
90
|
+
{ name: Cities.Regina, region: Regions.Pink, x: 536, y: 277 },
|
|
91
|
+
{ name: Cities.Winnipeg, region: Regions.Pink, x: 830, y: 272 },
|
|
92
|
+
{ name: Cities.Minneapolis, region: Regions.Pink, x: 907, y: 486 },
|
|
93
|
+
|
|
94
|
+
// Brown — California / Pacific SW / Mountain West
|
|
95
|
+
{ name: Cities.Portland, region: Regions.Brown, x: 122, y: 516 },
|
|
96
|
+
{ name: Cities.SanFrancisco, region: Regions.Brown, x: 135, y: 660 },
|
|
97
|
+
{ name: Cities.LosAngeles, region: Regions.Brown, x: 160, y: 911 },
|
|
98
|
+
{ name: Cities.SanDiego, region: Regions.Brown, x: 223, y: 1007 },
|
|
99
|
+
{ name: Cities.SaltLakeCity, region: Regions.Brown, x: 380, y: 555 },
|
|
100
|
+
{ name: Cities.LasVegas, region: Regions.Brown, x: 322, y: 760 },
|
|
101
|
+
{ name: Cities.Denver, region: Regions.Brown, x: 569, y: 694 },
|
|
102
|
+
|
|
103
|
+
// Orange — SW / Mexico
|
|
104
|
+
{ name: Cities.Albuquerque, region: Regions.Orange, x: 539, y: 941 },
|
|
105
|
+
{ name: Cities.Juarez, region: Regions.Orange, x: 558, y: 1043 },
|
|
106
|
+
{ name: Cities.Chihuahua, region: Regions.Orange, x: 577, y: 1183 },
|
|
107
|
+
{ name: Cities.Monterrey, region: Regions.Orange, x: 791, y: 1292 },
|
|
108
|
+
{ name: Cities.Guadalajara, region: Regions.Orange, x: 715, y: 1391 },
|
|
109
|
+
{ name: Cities.MexicoCityN, region: Regions.Orange, x: 918, y: 1410 },
|
|
110
|
+
{ name: Cities.MexicoCityS, region: Regions.Orange, x: 918, y: 1474 },
|
|
111
|
+
|
|
112
|
+
// Green — Texas / Deep South / Florida
|
|
113
|
+
{ name: Cities.SanAntonio, region: Regions.Green, x: 767, y: 1172 },
|
|
114
|
+
{ name: Cities.DallasFortWorth, region: Regions.Green, x: 850, y: 1020 },
|
|
115
|
+
{ name: Cities.Houston, region: Regions.Green, x: 931, y: 1095 },
|
|
116
|
+
{ name: Cities.NewOrleans, region: Regions.Green, x: 1126, y: 1095 },
|
|
117
|
+
{ name: Cities.Atlanta, region: Regions.Green, x: 1318, y: 1021 },
|
|
118
|
+
{ name: Cities.Jacksonville, region: Regions.Green, x: 1398, y: 1109 },
|
|
119
|
+
{ name: Cities.Miami, region: Regions.Green, x: 1398, y: 1235 },
|
|
120
|
+
|
|
121
|
+
// Blue — Midwest / Plains / Mid-South
|
|
122
|
+
{ name: Cities.Milwaukee, region: Regions.Blue, x: 1165, y: 502 },
|
|
123
|
+
{ name: Cities.Chicago, region: Regions.Blue, x: 1148, y: 601 },
|
|
124
|
+
{ name: Cities.KansasCity, region: Regions.Blue, x: 825, y: 720 },
|
|
125
|
+
{ name: Cities.StLouis, region: Regions.Blue, x: 1047, y: 768 },
|
|
126
|
+
{ name: Cities.Indianapolis, region: Regions.Blue, x: 1206, y: 694 },
|
|
127
|
+
{ name: Cities.OklahomaCity, region: Regions.Blue, x: 800, y: 870 },
|
|
128
|
+
{ name: Cities.Memphis, region: Regions.Blue, x: 1099, y: 938 },
|
|
129
|
+
|
|
130
|
+
// Yellow — Great Lakes / Mid-Atlantic
|
|
131
|
+
{ name: Cities.Toronto, region: Regions.Yellow, x: 1488, y: 513 },
|
|
132
|
+
{ name: Cities.Detroit, region: Regions.Yellow, x: 1390, y: 590 },
|
|
133
|
+
{ name: Cities.Pittsburgh, region: Regions.Yellow, x: 1524, y: 659 },
|
|
134
|
+
{ name: Cities.Columbus, region: Regions.Yellow, x: 1398, y: 733 },
|
|
135
|
+
{ name: Cities.Nashville, region: Regions.Yellow, x: 1233, y: 826 },
|
|
136
|
+
{ name: Cities.Washington, region: Regions.Yellow, x: 1554, y: 829 },
|
|
137
|
+
{ name: Cities.Charlotte, region: Regions.Yellow, x: 1480, y: 965 },
|
|
138
|
+
|
|
139
|
+
// Red — Northeast / Eastern Canada
|
|
140
|
+
{ name: Cities.Quebec, region: Regions.Red, x: 1911, y: 354 },
|
|
141
|
+
{ name: Cities.Ottawa, region: Regions.Red, x: 1653, y: 458 },
|
|
142
|
+
{ name: Cities.Montreal, region: Regions.Red, x: 1875, y: 461 },
|
|
143
|
+
{ name: Cities.NewYorkN, region: Regions.Red, x: 1730, y: 598 },
|
|
144
|
+
{ name: Cities.NewYorkS, region: Regions.Red, x: 1730, y: 648 },
|
|
145
|
+
{ name: Cities.Boston, region: Regions.Red, x: 1928, y: 579 },
|
|
146
|
+
{ name: Cities.Philadelphia, region: Regions.Red, x: 1724, y: 755 },
|
|
147
|
+
],
|
|
148
|
+
connections: [
|
|
149
|
+
// Pink — internal
|
|
150
|
+
{ nodes: [Cities.Edmonton, Cities.Calgary], cost: 5 },
|
|
151
|
+
{ nodes: [Cities.Calgary, Cities.Vancouver], cost: 16 },
|
|
152
|
+
{ nodes: [Cities.Vancouver, Cities.Seattle], cost: 4 },
|
|
153
|
+
{ nodes: [Cities.Edmonton, Cities.Regina], cost: 15 },
|
|
154
|
+
{ nodes: [Cities.Calgary, Cities.Regina], cost: 14 },
|
|
155
|
+
{ nodes: [Cities.Vancouver, Cities.Regina], cost: 28 },
|
|
156
|
+
{ nodes: [Cities.Regina, Cities.Winnipeg], cost: 11 },
|
|
157
|
+
{ nodes: [Cities.Winnipeg, Cities.Minneapolis], cost: 13 },
|
|
158
|
+
|
|
159
|
+
// Pink ↔ Brown
|
|
160
|
+
{ nodes: [Cities.Seattle, Cities.Portland], cost: 5 },
|
|
161
|
+
{ nodes: [Cities.Regina, Cities.SaltLakeCity], cost: 29 },
|
|
162
|
+
{ nodes: [Cities.Regina, Cities.Denver], cost: 24 },
|
|
163
|
+
{ nodes: [Cities.Winnipeg, Cities.Denver], cost: 26 },
|
|
164
|
+
{ nodes: [Cities.Minneapolis, Cities.Denver], cost: 23 },
|
|
165
|
+
|
|
166
|
+
// Brown — internal
|
|
167
|
+
{ nodes: [Cities.Portland, Cities.SanFrancisco], cost: 20 },
|
|
168
|
+
{ nodes: [Cities.SanFrancisco, Cities.LosAngeles], cost: 12 },
|
|
169
|
+
{ nodes: [Cities.LosAngeles, Cities.SanDiego], cost: 3 },
|
|
170
|
+
{ nodes: [Cities.Portland, Cities.SaltLakeCity], cost: 22 },
|
|
171
|
+
{ nodes: [Cities.SanFrancisco, Cities.SaltLakeCity], cost: 22 },
|
|
172
|
+
{ nodes: [Cities.SanFrancisco, Cities.LasVegas], cost: 16 },
|
|
173
|
+
{ nodes: [Cities.SaltLakeCity, Cities.LasVegas], cost: 14 },
|
|
174
|
+
{ nodes: [Cities.LasVegas, Cities.LosAngeles], cost: 8 },
|
|
175
|
+
{ nodes: [Cities.SaltLakeCity, Cities.Denver], cost: 14 },
|
|
176
|
+
{ nodes: [Cities.LasVegas, Cities.Denver], cost: 25 },
|
|
177
|
+
|
|
178
|
+
// Brown ↔ Orange
|
|
179
|
+
{ nodes: [Cities.LosAngeles, Cities.Albuquerque], cost: 25 },
|
|
180
|
+
{ nodes: [Cities.LasVegas, Cities.Albuquerque], cost: 18 },
|
|
181
|
+
{ nodes: [Cities.Denver, Cities.Albuquerque], cost: 12 },
|
|
182
|
+
{ nodes: [Cities.SanDiego, Cities.Juarez], cost: 22 },
|
|
183
|
+
|
|
184
|
+
// Orange — internal (Mexico City N ↔ S is the metropolis 0-cost edge;
|
|
185
|
+
// N's external edges are pruned — Dijkstra reaches N via S at zero cost,
|
|
186
|
+
// so build costs are unchanged but the rendered map has fewer parallel lines).
|
|
187
|
+
{ nodes: [Cities.Albuquerque, Cities.Juarez], cost: 9 },
|
|
188
|
+
{ nodes: [Cities.Juarez, Cities.Chihuahua], cost: 8 },
|
|
189
|
+
{ nodes: [Cities.Chihuahua, Cities.Monterrey], cost: 14 },
|
|
190
|
+
{ nodes: [Cities.Chihuahua, Cities.Guadalajara], cost: 23 },
|
|
191
|
+
{ nodes: [Cities.Monterrey, Cities.Guadalajara], cost: 16 },
|
|
192
|
+
{ nodes: [Cities.Monterrey, Cities.MexicoCityS], cost: 17 },
|
|
193
|
+
{ nodes: [Cities.Guadalajara, Cities.MexicoCityS], cost: 10 },
|
|
194
|
+
{ nodes: [Cities.MexicoCityN, Cities.MexicoCityS], cost: 0 },
|
|
195
|
+
|
|
196
|
+
// Orange ↔ Blue
|
|
197
|
+
{ nodes: [Cities.Albuquerque, Cities.OklahomaCity], cost: 18 },
|
|
198
|
+
|
|
199
|
+
// Orange ↔ Green
|
|
200
|
+
{ nodes: [Cities.Juarez, Cities.DallasFortWorth], cost: 19 },
|
|
201
|
+
{ nodes: [Cities.Juarez, Cities.SanAntonio], cost: 18 },
|
|
202
|
+
{ nodes: [Cities.Chihuahua, Cities.SanAntonio], cost: 16 },
|
|
203
|
+
{ nodes: [Cities.Monterrey, Cities.SanAntonio], cost: 10 },
|
|
204
|
+
|
|
205
|
+
// Blue — internal
|
|
206
|
+
{ nodes: [Cities.Milwaukee, Cities.Chicago], cost: 3 },
|
|
207
|
+
{ nodes: [Cities.Chicago, Cities.KansasCity], cost: 16 },
|
|
208
|
+
{ nodes: [Cities.Chicago, Cities.StLouis], cost: 9 },
|
|
209
|
+
{ nodes: [Cities.Chicago, Cities.Indianapolis], cost: 6 },
|
|
210
|
+
{ nodes: [Cities.KansasCity, Cities.StLouis], cost: 8 },
|
|
211
|
+
{ nodes: [Cities.StLouis, Cities.Indianapolis], cost: 8 },
|
|
212
|
+
{ nodes: [Cities.KansasCity, Cities.OklahomaCity], cost: 10 },
|
|
213
|
+
{ nodes: [Cities.KansasCity, Cities.Memphis], cost: 14 },
|
|
214
|
+
{ nodes: [Cities.StLouis, Cities.Memphis], cost: 9 },
|
|
215
|
+
{ nodes: [Cities.OklahomaCity, Cities.Memphis], cost: 15 },
|
|
216
|
+
|
|
217
|
+
// Blue ↔ Pink
|
|
218
|
+
{ nodes: [Cities.Milwaukee, Cities.Minneapolis], cost: 10 },
|
|
219
|
+
{ nodes: [Cities.KansasCity, Cities.Minneapolis], cost: 14 },
|
|
220
|
+
|
|
221
|
+
// Blue ↔ Brown
|
|
222
|
+
{ nodes: [Cities.KansasCity, Cities.Denver], cost: 19 },
|
|
223
|
+
{ nodes: [Cities.OklahomaCity, Cities.Denver], cost: 17 },
|
|
224
|
+
|
|
225
|
+
// Blue ↔ Green
|
|
226
|
+
{ nodes: [Cities.OklahomaCity, Cities.DallasFortWorth], cost: 7 },
|
|
227
|
+
{ nodes: [Cities.Memphis, Cities.DallasFortWorth], cost: 15 },
|
|
228
|
+
{ nodes: [Cities.Memphis, Cities.NewOrleans], cost: 14 },
|
|
229
|
+
{ nodes: [Cities.Memphis, Cities.Atlanta], cost: 12 },
|
|
230
|
+
|
|
231
|
+
// Green — internal
|
|
232
|
+
{ nodes: [Cities.DallasFortWorth, Cities.SanAntonio], cost: 9 },
|
|
233
|
+
{ nodes: [Cities.DallasFortWorth, Cities.Houston], cost: 8 },
|
|
234
|
+
{ nodes: [Cities.DallasFortWorth, Cities.NewOrleans], cost: 16 },
|
|
235
|
+
{ nodes: [Cities.SanAntonio, Cities.Houston], cost: 6 },
|
|
236
|
+
{ nodes: [Cities.Houston, Cities.NewOrleans], cost: 12 },
|
|
237
|
+
{ nodes: [Cities.NewOrleans, Cities.Atlanta], cost: 16 },
|
|
238
|
+
{ nodes: [Cities.NewOrleans, Cities.Jacksonville], cost: 20 },
|
|
239
|
+
{ nodes: [Cities.Atlanta, Cities.Jacksonville], cost: 10 },
|
|
240
|
+
{ nodes: [Cities.Jacksonville, Cities.Miami], cost: 12 },
|
|
241
|
+
|
|
242
|
+
// Green ↔ Yellow
|
|
243
|
+
{ nodes: [Cities.Atlanta, Cities.Nashville], cost: 9 },
|
|
244
|
+
{ nodes: [Cities.Atlanta, Cities.Charlotte], cost: 8 },
|
|
245
|
+
{ nodes: [Cities.Jacksonville, Cities.Charlotte], cost: 12 },
|
|
246
|
+
|
|
247
|
+
// Yellow — internal
|
|
248
|
+
{ nodes: [Cities.Toronto, Cities.Detroit], cost: 8 },
|
|
249
|
+
{ nodes: [Cities.Toronto, Cities.Pittsburgh], cost: 11 },
|
|
250
|
+
{ nodes: [Cities.Detroit, Cities.Columbus], cost: 7 },
|
|
251
|
+
{ nodes: [Cities.Columbus, Cities.Pittsburgh], cost: 6 },
|
|
252
|
+
{ nodes: [Cities.Nashville, Cities.Columbus], cost: 15 },
|
|
253
|
+
{ nodes: [Cities.Nashville, Cities.Washington], cost: 22 },
|
|
254
|
+
{ nodes: [Cities.Nashville, Cities.Charlotte], cost: 12 },
|
|
255
|
+
{ nodes: [Cities.Columbus, Cities.Washington], cost: 12 },
|
|
256
|
+
{ nodes: [Cities.Washington, Cities.Pittsburgh], cost: 7 },
|
|
257
|
+
{ nodes: [Cities.Washington, Cities.Charlotte], cost: 12 },
|
|
258
|
+
|
|
259
|
+
// Yellow ↔ Blue
|
|
260
|
+
{ nodes: [Cities.Detroit, Cities.Chicago], cost: 10 },
|
|
261
|
+
{ nodes: [Cities.Columbus, Cities.Chicago], cost: 10 },
|
|
262
|
+
{ nodes: [Cities.Columbus, Cities.Indianapolis], cost: 7 },
|
|
263
|
+
{ nodes: [Cities.Nashville, Cities.Indianapolis], cost: 9 },
|
|
264
|
+
{ nodes: [Cities.Nashville, Cities.StLouis], cost: 9 },
|
|
265
|
+
{ nodes: [Cities.Nashville, Cities.Memphis], cost: 7 },
|
|
266
|
+
|
|
267
|
+
// Yellow ↔ Red — NY N parallels are pruned (see Red internal note).
|
|
268
|
+
{ nodes: [Cities.Toronto, Cities.Ottawa], cost: 8 },
|
|
269
|
+
{ nodes: [Cities.Toronto, Cities.NewYorkS], cost: 14 },
|
|
270
|
+
{ nodes: [Cities.Pittsburgh, Cities.NewYorkS], cost: 11 },
|
|
271
|
+
{ nodes: [Cities.Pittsburgh, Cities.Philadelphia], cost: 9 },
|
|
272
|
+
{ nodes: [Cities.Washington, Cities.Philadelphia], cost: 5 },
|
|
273
|
+
|
|
274
|
+
// Red — internal (New York N ↔ S is the metropolis 0-cost edge;
|
|
275
|
+
// N's external edges are pruned — Dijkstra reaches N via S at zero cost,
|
|
276
|
+
// so build costs are unchanged but the rendered map has fewer parallel lines).
|
|
277
|
+
{ nodes: [Cities.Quebec, Cities.Montreal], cost: 5 },
|
|
278
|
+
{ nodes: [Cities.Montreal, Cities.Boston], cost: 9 },
|
|
279
|
+
{ nodes: [Cities.Ottawa, Cities.Montreal], cost: 3 },
|
|
280
|
+
{ nodes: [Cities.Ottawa, Cities.NewYorkS], cost: 13 },
|
|
281
|
+
{ nodes: [Cities.Montreal, Cities.NewYorkS], cost: 12 },
|
|
282
|
+
{ nodes: [Cities.NewYorkS, Cities.Boston], cost: 7 },
|
|
283
|
+
{ nodes: [Cities.NewYorkS, Cities.Philadelphia], cost: 3 },
|
|
284
|
+
{ nodes: [Cities.NewYorkN, Cities.NewYorkS], cost: 0 },
|
|
285
|
+
],
|
|
286
|
+
layout: 'Landscape',
|
|
287
|
+
// First-pass fit for landscape map area (~1100x720) from displayed-photo
|
|
288
|
+
// coord space (~2000x1716). Tune after first render.
|
|
289
|
+
adjustRatio: [0.5, 0.38],
|
|
290
|
+
mapPosition: [70, 50],
|
|
291
|
+
// Slight counterclockwise tilt to keep the pink region out of the power-plant
|
|
292
|
+
// header row at the top of the layout.
|
|
293
|
+
mapRotation: -5,
|
|
294
|
+
|
|
295
|
+
// Resupply table verified with John from the NA refill summary cards.
|
|
296
|
+
// Indexed [resource][playerCount-2][step-1].
|
|
297
|
+
// Note: 2P and 3P rows are intentionally identical on the printed cards.
|
|
298
|
+
resupply: [
|
|
299
|
+
// Coal
|
|
300
|
+
[
|
|
301
|
+
[2, 5, 2], // 2P
|
|
302
|
+
[2, 5, 2], // 3P
|
|
303
|
+
[3, 6, 3], // 4P
|
|
304
|
+
[4, 7, 4], // 5P
|
|
305
|
+
[5, 8, 5], // 6P
|
|
306
|
+
],
|
|
307
|
+
// Oil
|
|
308
|
+
[
|
|
309
|
+
[3, 1, 3], // 2P
|
|
310
|
+
[3, 1, 3], // 3P
|
|
311
|
+
[3, 2, 4], // 4P
|
|
312
|
+
[4, 2, 5], // 5P
|
|
313
|
+
[5, 3, 6], // 6P
|
|
314
|
+
],
|
|
315
|
+
// Garbage
|
|
316
|
+
[
|
|
317
|
+
[2, 2, 4], // 2P
|
|
318
|
+
[2, 2, 4], // 3P
|
|
319
|
+
[3, 3, 5], // 4P
|
|
320
|
+
[3, 3, 6], // 5P
|
|
321
|
+
[4, 4, 7], // 6P
|
|
322
|
+
],
|
|
323
|
+
// Uranium
|
|
324
|
+
[
|
|
325
|
+
[2, 1, 2], // 2P
|
|
326
|
+
[2, 1, 2], // 3P
|
|
327
|
+
[2, 1, 2], // 4P
|
|
328
|
+
[3, 2, 3], // 5P
|
|
329
|
+
[3, 2, 4], // 6P
|
|
330
|
+
],
|
|
331
|
+
],
|
|
332
|
+
// North America uses price spaces 1–9, identical per-price slot layout to Europe
|
|
333
|
+
// (verified with John from the printed board):
|
|
334
|
+
// Coal [4,4,4,2,2,2,2,2,2] total 24 market slots
|
|
335
|
+
// Oil [2,2,2,2,2,2,2,2,4] total 20 market slots
|
|
336
|
+
// Garbage [3,3,3,3,3,3,3,3,0] total 24 market slots
|
|
337
|
+
// Uranium [1,1,1,1,1,1,2,2,2] total 12 market slots
|
|
338
|
+
//
|
|
339
|
+
// Oil note: same overflow situation as Europe — 20 market slots but
|
|
340
|
+
// startingSupply keeps 24 cubes in the game. Defer to publisher guidance
|
|
341
|
+
// (Mike's pending question to 2F-Spiele); drop oil supply to 20 if confirmed.
|
|
342
|
+
coalPrices: [1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9],
|
|
343
|
+
oilPrices: [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9],
|
|
344
|
+
garbagePrices: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8],
|
|
345
|
+
uraniumPrices: [1, 2, 3, 4, 5, 6, 7, 7, 8, 8, 9, 9],
|
|
346
|
+
// Initial market fill from the rules (coal 2–9, oil 4–9, garbage 3–8, uranium space 9 only):
|
|
347
|
+
// coal = 4+4+2+2+2+2+2+2 = 20
|
|
348
|
+
// oil = 2+2+2+2+2+4 = 14
|
|
349
|
+
// garbage = 3+3+3+3+3+3 = 18
|
|
350
|
+
// uranium = 2 = 2
|
|
351
|
+
startingResources: [20, 14, 18, 2],
|
|
352
|
+
// Total cubes in the game (used cubes return here; refill draws from here).
|
|
353
|
+
startingSupply: [24, 24, 24, 12],
|
|
354
|
+
mapSpecificRules:
|
|
355
|
+
'The metropolises of New York and Mexico City each consist of 2 cities ' +
|
|
356
|
+
'(New York N / New York S and Mexico City N / Mexico City S) connected by ' +
|
|
357
|
+
'a 0-cost edge. The official rules cap a player at 1 house per side of a ' +
|
|
358
|
+
'metropolis; this implementation does not enforce that cap pending publisher ' +
|
|
359
|
+
'clarification, so a player may build in both sides if they wish.',
|
|
360
|
+
};
|