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,151 @@
1
+ import { GameMap } from './../maps';
2
+
3
+ export enum Regions {
4
+ Orange = 'orange',
5
+ Green = 'green',
6
+ Yellow = 'yellow',
7
+ Brown = 'brown',
8
+ Red = 'red',
9
+ }
10
+
11
+ export enum Cities {
12
+ Zimbaswe = 'Zimbaswe',
13
+ Musina = 'Musina',
14
+ Botswana = 'Botswana',
15
+ Polokwane = 'Polokwane',
16
+ Pretoria1 = 'Pretoria 1',
17
+ Pretoria2 = 'Pretoria 2',
18
+ Rustenburc = 'Rustenburc',
19
+ Mozambique = 'Mozambique',
20
+ Mbombela = 'Mbombela',
21
+ Iswaini = 'Iswaini',
22
+ Germiston = 'Germiston',
23
+ Johannesburg1 = 'Johannesburg 1',
24
+ Johannesburg2 = 'Johannesburg 2',
25
+ Ladysmith = 'Ladysmith',
26
+ Abc = 'Abc',
27
+ Def = 'Def',
28
+ Ghi1 = 'Ghi 1',
29
+ Ghi2 = 'Ghi 2',
30
+ Jkl = 'Jkl',
31
+ Mno = 'Mno',
32
+ Qrs = 'Qrs',
33
+ Keerksorp = 'Keerksorp',
34
+ Weikom = 'Weikom',
35
+ Xuruman = 'Xuruman',
36
+ Kimberly = 'Kimberly',
37
+ Upincion = 'Upincion',
38
+ Sprincbom = 'Sprincbom',
39
+ Namibia = 'Namibia',
40
+ Deaar = 'Deaar',
41
+ Beaufortwest = 'Beaufort West',
42
+ Eastlondon = 'East London',
43
+ Portelizabeth = 'Port Elizabeth',
44
+ Ceorci = 'Ceorci',
45
+ Capetown1 = 'Capetown 1',
46
+ Capetown2 = 'Capetown2',
47
+ }
48
+
49
+ export const map: GameMap = {
50
+ name: 'South Africa',
51
+ cities: [
52
+ { name: Cities.Zimbaswe, region: Regions.Orange, x: 1060, y: 29 },
53
+ { name: Cities.Musina, region: Regions.Orange, x: 1027, y: 125 },
54
+ { name: Cities.Botswana, region: Regions.Orange, x: 665, y: 186 },
55
+ { name: Cities.Polokwane, region: Regions.Orange, x: 944, y: 188 },
56
+ { name: Cities.Pretoria1, region: Regions.Orange, x: 894, y: 271 },
57
+ { name: Cities.Pretoria2, region: Regions.Orange, x: 894, y: 306 },
58
+ { name: Cities.Rustenburc, region: Regions.Orange, x: 787, y: 327 },
59
+ { name: Cities.Mozambique, region: Regions.Green, x: 1184, y: 167 },
60
+ { name: Cities.Mbombela, region: Regions.Green, x: 1046, y: 287 },
61
+ { name: Cities.Iswaini, region: Regions.Green, x: 1086, y: 375 },
62
+ { name: Cities.Germiston, region: Regions.Green, x: 983, y: 375 },
63
+ { name: Cities.Johannesburg1, region: Regions.Green, x: 887, y: 365 },
64
+ { name: Cities.Johannesburg2, region: Regions.Green, x: 889, y: 398 },
65
+ { name: Cities.Ladysmith, region: Regions.Green, x: 968, y: 495 },
66
+ { name: Cities.Abc, region: Regions.Yellow, x: 1122, y: 521 },
67
+ { name: Cities.Def, region: Regions.Yellow, x: 1000, y: 558 },
68
+ { name: Cities.Ghi1, region: Regions.Yellow, x: 1049, y: 618 },
69
+ { name: Cities.Ghi2, region: Regions.Yellow, x: 1048, y: 651 },
70
+ { name: Cities.Jkl, region: Regions.Yellow, x: 931, y: 733 },
71
+ { name: Cities.Mno, region: Regions.Yellow, x: 894, y: 572 },
72
+ { name: Cities.Qrs, region: Regions.Yellow, x: 776, y: 556 },
73
+ { name: Cities.Keerksorp, region: Regions.Brown, x: 780, y: 387 },
74
+ { name: Cities.Weikom, region: Regions.Brown, x: 771, y: 467 },
75
+ { name: Cities.Xuruman, region: Regions.Brown, x: 595, y: 415 },
76
+ { name: Cities.Kimberly, region: Regions.Brown, x: 670, y: 541 },
77
+ { name: Cities.Upincion, region: Regions.Brown, x: 456, y: 492 },
78
+ { name: Cities.Sprincbom, region: Regions.Brown, x: 264, y: 580 },
79
+ { name: Cities.Namibia, region: Regions.Brown, x: 239, y: 329 },
80
+ { name: Cities.Deaar, region: Regions.Red, x: 641, y: 735 },
81
+ { name: Cities.Beaufortwest, region: Regions.Red, x: 513, y: 782 },
82
+ { name: Cities.Eastlondon, region: Regions.Red, x: 852, y: 833 },
83
+ { name: Cities.Portelizabeth, region: Regions.Red, x: 712, y: 903 },
84
+ { name: Cities.Ceorci, region: Regions.Red, x: 526, y: 903 },
85
+ { name: Cities.Capetown1, region: Regions.Red, x: 290, y: 871 },
86
+ { name: Cities.Capetown2, region: Regions.Red, x: 287, y: 904 },
87
+ ],
88
+ connections: [
89
+ { nodes: [Cities.Sprincbom, Cities.Namibia], cost: 30 },
90
+ { nodes: [Cities.Qrs, Cities.Mno], cost: 30 },
91
+ { nodes: [Cities.Germiston, Cities.Iswaini], cost: 30 },
92
+ { nodes: [Cities.Mbombela, Cities.Mozambique], cost: 30 },
93
+ { nodes: [Cities.Botswana, Cities.Rustenburc], cost: 30 },
94
+ { nodes: [Cities.Zimbaswe, Cities.Musina], cost: 30 },
95
+ { nodes: [Cities.Capetown2, Cities.Capetown1], cost: 0 },
96
+ { nodes: [Cities.Capetown2, Cities.Ceorci], cost: 16 },
97
+ { nodes: [Cities.Ceorci, Cities.Portelizabeth], cost: 12 },
98
+ { nodes: [Cities.Portelizabeth, Cities.Eastlondon], cost: 13 },
99
+ { nodes: [Cities.Eastlondon, Cities.Jkl], cost: 8 },
100
+ { nodes: [Cities.Jkl, Cities.Ghi2], cost: 13 },
101
+ { nodes: [Cities.Ghi2, Cities.Ghi1], cost: 0 },
102
+ { nodes: [Cities.Ghi1, Cities.Def], cost: 3 },
103
+ { nodes: [Cities.Ghi1, Cities.Abc], cost: 9 },
104
+ { nodes: [Cities.Abc, Cities.Def], cost: 9 },
105
+ { nodes: [Cities.Def, Cities.Ladysmith], cost: 5 },
106
+ { nodes: [Cities.Ladysmith, Cities.Abc], cost: 10 },
107
+ { nodes: [Cities.Qrs, Cities.Jkl], cost: 18 },
108
+ { nodes: [Cities.Qrs, Cities.Eastlondon], cost: 22 },
109
+ { nodes: [Cities.Eastlondon, Cities.Deaar], cost: 22 },
110
+ { nodes: [Cities.Deaar, Cities.Portelizabeth], cost: 18 },
111
+ { nodes: [Cities.Ceorci, Cities.Deaar], cost: 17 },
112
+ { nodes: [Cities.Deaar, Cities.Beaufortwest], cost: 10 },
113
+ { nodes: [Cities.Beaufortwest, Cities.Ceorci], cost: 8 },
114
+ { nodes: [Cities.Beaufortwest, Cities.Capetown1], cost: 22 },
115
+ { nodes: [Cities.Capetown1, Cities.Sprincbom], cost: 22 },
116
+ { nodes: [Cities.Sprincbom, Cities.Beaufortwest], cost: 24 },
117
+ { nodes: [Cities.Deaar, Cities.Sprincbom], cost: 26 },
118
+ { nodes: [Cities.Sprincbom, Cities.Upincion], cost: 16 },
119
+ { nodes: [Cities.Upincion, Cities.Deaar], cost: 16 },
120
+ { nodes: [Cities.Deaar, Cities.Qrs], cost: 13 },
121
+ { nodes: [Cities.Qrs, Cities.Kimberly], cost: 6 },
122
+ { nodes: [Cities.Kimberly, Cities.Deaar], cost: 10 },
123
+ { nodes: [Cities.Kimberly, Cities.Upincion], cost: 14 },
124
+ { nodes: [Cities.Kimberly, Cities.Weikom], cost: 9 },
125
+ { nodes: [Cities.Weikom, Cities.Qrs], cost: 6 },
126
+ { nodes: [Cities.Qrs, Cities.Ladysmith], cost: 19 },
127
+ { nodes: [Cities.Jkl, Cities.Def], cost: 12 },
128
+ { nodes: [Cities.Upincion, Cities.Xuruman], cost: 11 },
129
+ { nodes: [Cities.Musina, Cities.Polokwane], cost: 8 },
130
+ { nodes: [Cities.Polokwane, Cities.Pretoria1], cost: 11 },
131
+ { nodes: [Cities.Pretoria1, Cities.Pretoria2], cost: 0 },
132
+ { nodes: [Cities.Pretoria2, Cities.Johannesburg1], cost: 2 },
133
+ { nodes: [Cities.Johannesburg1, Cities.Johannesburg2], cost: 0 },
134
+ { nodes: [Cities.Johannesburg2, Cities.Germiston], cost: 1 },
135
+ { nodes: [Cities.Johannesburg1, Cities.Mbombela], cost: 13 },
136
+ { nodes: [Cities.Mbombela, Cities.Germiston], cost: 13 },
137
+ { nodes: [Cities.Pretoria1, Cities.Mbombela], cost: 13 },
138
+ { nodes: [Cities.Mbombela, Cities.Polokwane], cost: 10 },
139
+ { nodes: [Cities.Musina, Cities.Mbombela], cost: 15 },
140
+ { nodes: [Cities.Pretoria1, Cities.Rustenburc], cost: 4 },
141
+ { nodes: [Cities.Rustenburc, Cities.Johannesburg1], cost: 4 },
142
+ { nodes: [Cities.Johannesburg1, Cities.Keerksorp], cost: 7 },
143
+ { nodes: [Cities.Keerksorp, Cities.Weikom], cost: 5 },
144
+ { nodes: [Cities.Qrs, Cities.Johannesburg2], cost: 16 },
145
+ { nodes: [Cities.Xuruman, Cities.Rustenburc], cost: 18 },
146
+ { nodes: [Cities.Keerksorp, Cities.Xuruman], cost: 12 },
147
+ { nodes: [Cities.Xuruman, Cities.Kimberly], cost: 8 },
148
+ { nodes: [Cities.Johannesburg2, Cities.Ladysmith], cost: 13 },
149
+ { nodes: [Cities.Ladysmith, Cities.Germiston], cost: 13 },
150
+ ],
151
+ };
@@ -0,0 +1,295 @@
1
+ import { cloneDeep } from 'lodash';
2
+ import { getPowerPlant } from '../engine';
3
+ import { PowerPlant } from '../gamestate';
4
+ import { powerPlants } from '../powerPlants';
5
+ import { shuffle } from '../utils';
6
+ import { GameMap } from './../maps';
7
+
8
+ export enum Regions {
9
+ Pink = 'pink',
10
+ Brown = 'brown',
11
+ Green = 'green',
12
+ Purple = 'purple',
13
+ Red = 'red',
14
+ Yellow = 'yellow',
15
+ }
16
+
17
+ export enum Cities {
18
+ Gerona = 'Gerona',
19
+ Barcelona = 'Barcelona',
20
+ Tarragona = 'Tarragona',
21
+ Lerida = 'Lerida',
22
+ Castellondelaplana = 'Castellon De La Plana',
23
+ Valencia = 'Valencia',
24
+ Alicante = 'Alicante',
25
+ Sansebastian = 'San Sebastian',
26
+ Pamplona = 'Pamplona',
27
+ Zaragoza = 'Zaragoza',
28
+ Madrid = 'Madrid',
29
+ Logrono = 'Logrono',
30
+ Bilbao = 'Bilbao',
31
+ Santander = 'Santander',
32
+ Gijon = 'Gijon',
33
+ Leon = 'Leon',
34
+ Valladolid = 'Valladolid',
35
+ Salamanca = 'Salamanca',
36
+ Orense = 'Orense',
37
+ Lacoruna = 'La Coruna',
38
+ Santiagodecompostela = 'Santiago De Compostela',
39
+ Cuenca = 'Cuenca',
40
+ Albacete = 'Albacete',
41
+ Murcia = 'Murcia',
42
+ Toledo = 'Toledo',
43
+ Ciudadreal = 'Ciudad Real',
44
+ Caceres = 'Caceres',
45
+ Merida = 'Merida',
46
+ Almeria = 'Almeria',
47
+ Granada = 'Granada',
48
+ Cordoba = 'Cordoba',
49
+ Malaga = 'Malaga',
50
+ Cadiz = 'Cadiz',
51
+ Sevilla = 'Sevilla',
52
+ Huelva = 'Huelva',
53
+ Evora = 'Evora',
54
+ Faro = 'Faro',
55
+ Portimao = 'Portimao',
56
+ Setubal = 'Setubal',
57
+ Lisboa = 'Lisboa',
58
+ Porto = 'Porto',
59
+ Braga = 'Braga',
60
+ }
61
+
62
+ export const map: GameMap = {
63
+ name: 'Spain & Portugal',
64
+ cities: [
65
+ { name: Cities.Evora, region: Regions.Yellow, x: 890, y: 1780 },
66
+ { name: Cities.Faro, region: Regions.Yellow, x: 822, y: 2348 },
67
+ { name: Cities.Portimao, region: Regions.Yellow, x: 592, y: 2218 },
68
+ { name: Cities.Setubal, region: Regions.Yellow, x: 578, y: 1864 },
69
+ { name: Cities.Lisboa, region: Regions.Yellow, x: 572, y: 1586 },
70
+ { name: Cities.Porto, region: Regions.Yellow, x: 736, y: 1052 },
71
+ { name: Cities.Braga, region: Regions.Yellow, x: 990, y: 828 },
72
+ { name: Cities.Gerona, region: Regions.Pink, x: 3728, y: 666 },
73
+ { name: Cities.Barcelona, region: Regions.Pink, x: 3538, y: 848 },
74
+ { name: Cities.Tarragona, region: Regions.Pink, x: 3312, y: 970 },
75
+ { name: Cities.Lerida, region: Regions.Pink, x: 3166, y: 752 },
76
+ { name: Cities.Castellondelaplana, region: Regions.Pink, x: 3010, y: 1284 },
77
+ { name: Cities.Valencia, region: Regions.Pink, x: 2938, y: 1580 },
78
+ { name: Cities.Alicante, region: Regions.Pink, x: 2936, y: 1922 },
79
+ { name: Cities.Sansebastian, region: Regions.Brown, x: 2498, y: 278 },
80
+ { name: Cities.Pamplona, region: Regions.Brown, x: 2648, y: 484 },
81
+ { name: Cities.Zaragoza, region: Regions.Brown, x: 2760, y: 810 },
82
+ { name: Cities.Madrid, region: Regions.Brown, x: 2088, y: 1170 },
83
+ { name: Cities.Logrono, region: Regions.Brown, x: 2310, y: 622 },
84
+ { name: Cities.Bilbao, region: Regions.Brown, x: 2264, y: 226 },
85
+ { name: Cities.Santander, region: Regions.Brown, x: 2022, y: 252 },
86
+ { name: Cities.Gijon, region: Regions.Green, x: 1672, y: 190 },
87
+ { name: Cities.Leon, region: Regions.Green, x: 1604, y: 518 },
88
+ { name: Cities.Valladolid, region: Regions.Green, x: 1850, y: 782 },
89
+ { name: Cities.Salamanca, region: Regions.Green, x: 1564, y: 1032 },
90
+ { name: Cities.Orense, region: Regions.Green, x: 1072, y: 532 },
91
+ { name: Cities.Lacoruna, region: Regions.Green, x: 982, y: 184 },
92
+ { name: Cities.Santiagodecompostela, region: Regions.Green, x: 772, y: 394 },
93
+ { name: Cities.Cuenca, region: Regions.Purple, x: 2464, y: 1300 },
94
+ { name: Cities.Albacete, region: Regions.Purple, x: 2532, y: 1684 },
95
+ { name: Cities.Murcia, region: Regions.Purple, x: 2678, y: 2056 },
96
+ { name: Cities.Toledo, region: Regions.Purple, x: 1920, y: 1400 },
97
+ { name: Cities.Ciudadreal, region: Regions.Purple, x: 1982, y: 1714 },
98
+ { name: Cities.Caceres, region: Regions.Purple, x: 1354, y: 1432 },
99
+ { name: Cities.Merida, region: Regions.Purple, x: 1318, y: 1764 },
100
+ { name: Cities.Almeria, region: Regions.Red, x: 2402, y: 2440 },
101
+ { name: Cities.Granada, region: Regions.Red, x: 2044, y: 2272 },
102
+ { name: Cities.Cordoba, region: Regions.Red, x: 1728, y: 2074 },
103
+ { name: Cities.Malaga, region: Regions.Red, x: 1782, y: 2484 },
104
+ { name: Cities.Cadiz, region: Regions.Red, x: 1290, y: 2552 },
105
+ { name: Cities.Sevilla, region: Regions.Red, x: 1390, y: 2168 },
106
+ { name: Cities.Huelva, region: Regions.Red, x: 1082, y: 2196 },
107
+ ],
108
+ connections: [
109
+ { nodes: [Cities.Huelva, Cities.Faro], cost: 6 },
110
+ { nodes: [Cities.Faro, Cities.Portimao], cost: 4 },
111
+ { nodes: [Cities.Portimao, Cities.Setubal], cost: 12 },
112
+ { nodes: [Cities.Setubal, Cities.Evora], cost: 6 },
113
+ { nodes: [Cities.Evora, Cities.Merida], cost: 9 },
114
+ { nodes: [Cities.Merida, Cities.Sevilla], cost: 14 },
115
+ { nodes: [Cities.Sevilla, Cities.Cadiz], cost: 8 },
116
+ { nodes: [Cities.Cadiz, Cities.Malaga], cost: 12 },
117
+ { nodes: [Cities.Malaga, Cities.Granada], cost: 7 },
118
+ { nodes: [Cities.Granada, Cities.Almeria], cost: 9 },
119
+ { nodes: [Cities.Almeria, Cities.Murcia], cost: 13 },
120
+ { nodes: [Cities.Murcia, Cities.Alicante], cost: 4 },
121
+ { nodes: [Cities.Alicante, Cities.Valencia], cost: 9 },
122
+ { nodes: [Cities.Valencia, Cities.Castellondelaplana], cost: 4 },
123
+ { nodes: [Cities.Albacete, Cities.Almeria], cost: 19 },
124
+ { nodes: [Cities.Albacete, Cities.Murcia], cost: 10 },
125
+ { nodes: [Cities.Albacete, Cities.Alicante], cost: 11 },
126
+ { nodes: [Cities.Albacete, Cities.Valencia], cost: 11 },
127
+ { nodes: [Cities.Albacete, Cities.Cuenca], cost: 8 },
128
+ { nodes: [Cities.Albacete, Cities.Ciudadreal], cost: 13 },
129
+ { nodes: [Cities.Albacete, Cities.Granada], cost: 19 },
130
+ { nodes: [Cities.Albacete, Cities.Toledo], cost: 14 },
131
+ { nodes: [Cities.Toledo, Cities.Madrid], cost: 6 },
132
+ { nodes: [Cities.Madrid, Cities.Cuenca], cost: 11 },
133
+ { nodes: [Cities.Cuenca, Cities.Valencia], cost: 13 },
134
+ { nodes: [Cities.Cuenca, Cities.Castellondelaplana], cost: 14 },
135
+ { nodes: [Cities.Castellondelaplana, Cities.Tarragona], cost: 12 },
136
+ { nodes: [Cities.Toledo, Cities.Caceres], cost: 16 },
137
+ { nodes: [Cities.Caceres, Cities.Merida], cost: 4 },
138
+ { nodes: [Cities.Merida, Cities.Ciudadreal], cost: 16 },
139
+ { nodes: [Cities.Ciudadreal, Cities.Granada], cost: 16 },
140
+ { nodes: [Cities.Granada, Cities.Cordoba], cost: 11 },
141
+ { nodes: [Cities.Cordoba, Cities.Malaga], cost: 11 },
142
+ { nodes: [Cities.Malaga, Cities.Sevilla], cost: 12 },
143
+ { nodes: [Cities.Sevilla, Cities.Cordoba], cost: 8 },
144
+ { nodes: [Cities.Cordoba, Cities.Ciudadreal], cost: 10 },
145
+ { nodes: [Cities.Merida, Cities.Cordoba], cost: 14 },
146
+ { nodes: [Cities.Huelva, Cities.Cadiz], cost: 9 },
147
+ { nodes: [Cities.Huelva, Cities.Sevilla], cost: 6 },
148
+ { nodes: [Cities.Merida, Cities.Huelva], cost: 15 },
149
+ { nodes: [Cities.Huelva, Cities.Evora], cost: 12 },
150
+ { nodes: [Cities.Evora, Cities.Faro], cost: 13 },
151
+ { nodes: [Cities.Faro, Cities.Setubal], cost: 14 },
152
+ { nodes: [Cities.Setubal, Cities.Lisboa], cost: 4 },
153
+ { nodes: [Cities.Lisboa, Cities.Evora], cost: 9 },
154
+ { nodes: [Cities.Lisboa, Cities.Merida], cost: 16 },
155
+ { nodes: [Cities.Caceres, Cities.Ciudadreal], cost: 16 },
156
+ { nodes: [Cities.Toledo, Cities.Cuenca], cost: 13 },
157
+ { nodes: [Cities.Salamanca, Cities.Toledo], cost: 14 },
158
+ { nodes: [Cities.Salamanca, Cities.Madrid], cost: 14 },
159
+ { nodes: [Cities.Salamanca, Cities.Caceres], cost: 13 },
160
+ { nodes: [Cities.Porto, Cities.Lisboa], cost: 18 },
161
+ { nodes: [Cities.Porto, Cities.Salamanca], cost: 19 },
162
+ { nodes: [Cities.Porto, Cities.Caceres], cost: 21 },
163
+ { nodes: [Cities.Caceres, Cities.Lisboa], cost: 19 },
164
+ { nodes: [Cities.Ciudadreal, Cities.Toledo], cost: 7 },
165
+ { nodes: [Cities.Braga, Cities.Porto], cost: 3 },
166
+ { nodes: [Cities.Braga, Cities.Salamanca], cost: 19 },
167
+ { nodes: [Cities.Salamanca, Cities.Valladolid], cost: 7 },
168
+ { nodes: [Cities.Valladolid, Cities.Madrid], cost: 13 },
169
+ { nodes: [Cities.Madrid, Cities.Zaragoza], cost: 19 },
170
+ { nodes: [Cities.Zaragoza, Cities.Lerida], cost: 8 },
171
+ { nodes: [Cities.Lerida, Cities.Tarragona], cost: 6 },
172
+ { nodes: [Cities.Tarragona, Cities.Barcelona], cost: 6 },
173
+ { nodes: [Cities.Lerida, Cities.Castellondelaplana], cost: 13 },
174
+ { nodes: [Cities.Castellondelaplana, Cities.Zaragoza], cost: 15 },
175
+ { nodes: [Cities.Zaragoza, Cities.Cuenca], cost: 16 },
176
+ { nodes: [Cities.Braga, Cities.Valladolid], cost: 24 },
177
+ { nodes: [Cities.Lerida, Cities.Barcelona], cost: 10 },
178
+ { nodes: [Cities.Barcelona, Cities.Gerona], cost: 6 },
179
+ { nodes: [Cities.Gerona, Cities.Lerida], cost: 13 },
180
+ { nodes: [Cities.Lerida, Cities.Pamplona], cost: 17 },
181
+ { nodes: [Cities.Pamplona, Cities.Zaragoza], cost: 11 },
182
+ { nodes: [Cities.Zaragoza, Cities.Logrono], cost: 11 },
183
+ { nodes: [Cities.Logrono, Cities.Madrid], cost: 18 },
184
+ { nodes: [Cities.Santiagodecompostela, Cities.Braga], cost: 11 },
185
+ { nodes: [Cities.Braga, Cities.Orense], cost: 9 },
186
+ { nodes: [Cities.Orense, Cities.Santiagodecompostela], cost: 7 },
187
+ { nodes: [Cities.Santiagodecompostela, Cities.Lacoruna], cost: 4 },
188
+ { nodes: [Cities.Lacoruna, Cities.Gijon], cost: 9 },
189
+ { nodes: [Cities.Gijon, Cities.Santander], cost: 11 },
190
+ { nodes: [Cities.Santander, Cities.Bilbao], cost: 6 },
191
+ { nodes: [Cities.Bilbao, Cities.Sansebastian], cost: 5 },
192
+ { nodes: [Cities.Sansebastian, Cities.Pamplona], cost: 6 },
193
+ { nodes: [Cities.Pamplona, Cities.Logrono], cost: 7 },
194
+ { nodes: [Cities.Logrono, Cities.Sansebastian], cost: 9 },
195
+ { nodes: [Cities.Bilbao, Cities.Logrono], cost: 9 },
196
+ { nodes: [Cities.Logrono, Cities.Santander], cost: 13 },
197
+ { nodes: [Cities.Santander, Cities.Valladolid], cost: 16 },
198
+ { nodes: [Cities.Valladolid, Cities.Logrono], cost: 15 },
199
+ { nodes: [Cities.Leon, Cities.Santander], cost: 13 },
200
+ { nodes: [Cities.Gijon, Cities.Leon], cost: 9 },
201
+ { nodes: [Cities.Leon, Cities.Valladolid], cost: 9 },
202
+ { nodes: [Cities.Valladolid, Cities.Orense], cost: 22 },
203
+ { nodes: [Cities.Orense, Cities.Leon], cost: 14 },
204
+ { nodes: [Cities.Gijon, Cities.Orense], cost: 10 },
205
+ { nodes: [Cities.Orense, Cities.Lacoruna], cost: 6 },
206
+ ],
207
+ layout: 'Portrait',
208
+ adjustRatio: [0.315, 0.315],
209
+ mapPosition: [-135, 60],
210
+ resupply: [
211
+ [
212
+ [3, 4, 2],
213
+ [4, 5, 2],
214
+ [4, 6, 3],
215
+ [4, 7, 3],
216
+ [6, 8, 4],
217
+ ],
218
+ [
219
+ [2, 3, 5],
220
+ [2, 4, 5],
221
+ [3, 5, 6],
222
+ [4, 6, 7],
223
+ [5, 7, 9],
224
+ ],
225
+ [
226
+ [1, 2, 3],
227
+ [1, 2, 3],
228
+ [2, 3, 4],
229
+ [3, 3, 5],
230
+ [3, 5, 6],
231
+ ],
232
+ [
233
+ [0, 2, 1],
234
+ [0, 2, 1],
235
+ [0, 4, 1],
236
+ [0, 5, 1],
237
+ [0, 5, 2],
238
+ ],
239
+ ],
240
+ startingResources: [24, 18, 9, 8],
241
+ setupDeck(numPlayers: number, variant: string, rng: seedrandom.prng) {
242
+ let powerPlantsDeck = cloneDeep(powerPlants);
243
+ let actualMarket: PowerPlant[];
244
+ let futureMarket: PowerPlant[];
245
+
246
+ // remove plants 18 22 and 27
247
+ powerPlantsDeck = powerPlantsDeck.filter((pp) => ![18, 22, 27].includes(pp.number));
248
+
249
+ if (variant == 'original') {
250
+ powerPlantsDeck = powerPlantsDeck.slice(8);
251
+ const powerPlant13 = powerPlantsDeck.splice(2, 1)[0];
252
+ const step3 = powerPlantsDeck.pop()!;
253
+
254
+ powerPlantsDeck = shuffle(powerPlantsDeck, rng() + '');
255
+ if (numPlayers == 2 || numPlayers == 3) {
256
+ powerPlantsDeck = powerPlantsDeck.slice(8);
257
+ } else if (numPlayers == 4) {
258
+ powerPlantsDeck = powerPlantsDeck.slice(4);
259
+ }
260
+
261
+ powerPlantsDeck.unshift(powerPlant13);
262
+ powerPlantsDeck.push(step3);
263
+
264
+ actualMarket = [getPowerPlant(3), getPowerPlant(4), getPowerPlant(5), getPowerPlant(6)];
265
+ futureMarket = [getPowerPlant(7), getPowerPlant(8), getPowerPlant(9), getPowerPlant(10)];
266
+ } else {
267
+ let initialPowerPlants = shuffle(powerPlantsDeck.splice(0, 13), rng() + '');
268
+ let initialPlantMarket = initialPowerPlants.splice(0, 8);
269
+ initialPlantMarket = initialPlantMarket.sort((a, b) => a.number - b.number);
270
+ actualMarket = initialPlantMarket.slice(0, 4);
271
+ futureMarket = initialPlantMarket.slice(4);
272
+
273
+ const first = initialPowerPlants.shift()!;
274
+ const step3 = powerPlantsDeck.pop()!;
275
+
276
+ powerPlantsDeck = shuffle(powerPlantsDeck, rng() + '');
277
+ if (numPlayers == 2 || numPlayers == 3) {
278
+ initialPowerPlants = initialPowerPlants.slice(2);
279
+ powerPlantsDeck = shuffle(powerPlantsDeck.slice(6).concat(initialPowerPlants), rng() + '');
280
+ } else if (numPlayers == 4) {
281
+ initialPowerPlants = initialPowerPlants.slice(1);
282
+ powerPlantsDeck = shuffle(powerPlantsDeck.slice(3).concat(initialPowerPlants), rng() + '');
283
+ } else {
284
+ powerPlantsDeck = shuffle(powerPlantsDeck.concat(initialPowerPlants), rng() + '');
285
+ }
286
+
287
+ powerPlantsDeck.unshift(first);
288
+ powerPlantsDeck.push(step3);
289
+ }
290
+
291
+ return { actualMarket, futureMarket, powerPlantsDeck };
292
+ },
293
+ mapSpecificRules:
294
+ 'Remove power plants 18, 22 and 27 from the deck. Place them on top of the deck at the start of Step 2.\nYou cannot buy a nuclear power plant if you only have cities in Portugal.',
295
+ };
@@ -0,0 +1,175 @@
1
+ import { GameMap } from './../maps';
2
+
3
+ export enum Regions {
4
+ Red = 'red',
5
+ Pink = 'pink',
6
+ Yellow = 'yellow',
7
+ Brown = 'brown',
8
+ Orange = 'orange',
9
+ Green = 'green',
10
+ }
11
+
12
+ export enum Cities {
13
+ Norwich = 'Norwich',
14
+ London1 = 'London 1',
15
+ London2 = 'London 2',
16
+ Brighton = 'Brighton',
17
+ Southampton = 'Southampton',
18
+ Plymouth = 'Plymouth',
19
+ Leicester = 'Leicester',
20
+ Bristol = 'Bristol',
21
+ Newcastleupontyne = 'Newcastle Upon Tyne',
22
+ Leeds = 'Leeds',
23
+ Sheffield = 'Sheffield',
24
+ Nottingham = 'Nottingham',
25
+ Birmingham = 'Birmingham',
26
+ Manchester = 'Manchester',
27
+ Liverpool = 'Liverpool',
28
+ Newportcasnewydd = 'Newport Casnewydd',
29
+ Bangor = 'Bangor',
30
+ Aberystwyth = 'Aberystwyth',
31
+ Swanseaabertawe = 'Swansea Abertawe',
32
+ Cardiffcaerdydd = 'Cardiff Caerdydd',
33
+ Haverfordwesthwlffordd = 'Haverfordwest Hwlffordd',
34
+ Invernessinbhirnis = 'Inverness Inbhir Nis',
35
+ Aberdeenobardheathain = 'Aberdeen Obar Dheathain',
36
+ Dundeedundeach = 'Dundee Dun Deach',
37
+ Perthpeairt = 'Perth Peairt',
38
+ Edinburgh = 'Edinburgh',
39
+ Dumfries = 'Dumfries',
40
+ Glasgow = 'Glasgow',
41
+ Coleraine = 'Coleraine',
42
+ Derry = 'Derry',
43
+ Belfast = 'Belfast',
44
+ Newry = 'Newry',
45
+ Omagh = 'Omagh',
46
+ Sligo = 'Sligo',
47
+ Dublin = 'Dublin',
48
+ Waterford = 'Waterford',
49
+ Cork = 'Cork',
50
+ Athlone = 'Athlone',
51
+ Galway = 'Galway',
52
+ Limerick = 'Limerick',
53
+ }
54
+
55
+ export const map: GameMap = {
56
+ name: 'UK & Ireland',
57
+ cities: [
58
+ { name: Cities.Norwich, region: Regions.Red, x: 646, y: 702 },
59
+ { name: Cities.London1, region: Regions.Red, x: 554, y: 756 },
60
+ { name: Cities.London2, region: Regions.Red, x: 550, y: 780 },
61
+ { name: Cities.Brighton, region: Regions.Red, x: 537, y: 837 },
62
+ { name: Cities.Southampton, region: Regions.Red, x: 451, y: 805 },
63
+ { name: Cities.Plymouth, region: Regions.Red, x: 312, y: 814 },
64
+ { name: Cities.Leicester, region: Regions.Red, x: 540, y: 680 },
65
+ { name: Cities.Bristol, region: Regions.Red, x: 425, y: 762 },
66
+ { name: Cities.Newcastleupontyne, region: Regions.Pink, x: 550, y: 414 },
67
+ { name: Cities.Leeds, region: Regions.Pink, x: 559, y: 541 },
68
+ { name: Cities.Sheffield, region: Regions.Pink, x: 530, y: 590 },
69
+ { name: Cities.Nottingham, region: Regions.Pink, x: 531, y: 632 },
70
+ { name: Cities.Birmingham, region: Regions.Pink, x: 465, y: 663 },
71
+ { name: Cities.Manchester, region: Regions.Pink, x: 479, y: 543 },
72
+ { name: Cities.Liverpool, region: Regions.Pink, x: 433, y: 576 },
73
+ { name: Cities.Newportcasnewydd, region: Regions.Yellow, x: 425, y: 722 },
74
+ { name: Cities.Bangor, region: Regions.Yellow, x: 348, y: 574 },
75
+ { name: Cities.Aberystwyth, region: Regions.Yellow, x: 357, y: 639 },
76
+ { name: Cities.Swanseaabertawe, region: Regions.Yellow, x: 346, y: 706 },
77
+ { name: Cities.Cardiffcaerdydd, region: Regions.Yellow, x: 357, y: 741 },
78
+ { name: Cities.Haverfordwesthwlffordd, region: Regions.Yellow, x: 303, y: 673 },
79
+ { name: Cities.Invernessinbhirnis, region: Regions.Brown, x: 479, y: 208 },
80
+ { name: Cities.Aberdeenobardheathain, region: Regions.Brown, x: 588, y: 245 },
81
+ { name: Cities.Dundeedundeach, region: Regions.Brown, x: 552, y: 286 },
82
+ { name: Cities.Perthpeairt, region: Regions.Brown, x: 489, y: 307 },
83
+ { name: Cities.Edinburgh, region: Regions.Brown, x: 494, y: 350 },
84
+ { name: Cities.Dumfries, region: Regions.Brown, x: 441, y: 417 },
85
+ { name: Cities.Glasgow, region: Regions.Brown, x: 422, y: 335 },
86
+ { name: Cities.Coleraine, region: Regions.Orange, x: 330, y: 367 },
87
+ { name: Cities.Derry, region: Regions.Orange, x: 256, y: 362 },
88
+ { name: Cities.Belfast, region: Regions.Orange, x: 342, y: 421 },
89
+ { name: Cities.Newry, region: Regions.Orange, x: 298, y: 462 },
90
+ { name: Cities.Omagh, region: Regions.Orange, x: 260, y: 403 },
91
+ { name: Cities.Sligo, region: Regions.Green, x: 181, y: 411 },
92
+ { name: Cities.Dublin, region: Regions.Green, x: 274, y: 530 },
93
+ { name: Cities.Waterford, region: Regions.Green, x: 210, y: 611 },
94
+ { name: Cities.Cork, region: Regions.Green, x: 114, y: 626 },
95
+ { name: Cities.Athlone, region: Regions.Green, x: 200, y: 489 },
96
+ { name: Cities.Galway, region: Regions.Green, x: 112, y: 486 },
97
+ { name: Cities.Limerick, region: Regions.Green, x: 122, y: 546 },
98
+ ],
99
+ connections: [
100
+ { nodes: [Cities.Nottingham, Cities.Leicester], cost: 4 },
101
+ { nodes: [Cities.London1, Cities.London2], cost: 0 },
102
+ { nodes: [Cities.London2, Cities.Brighton], cost: 6 },
103
+ { nodes: [Cities.Brighton, Cities.Southampton], cost: 7 },
104
+ { nodes: [Cities.Southampton, Cities.Plymouth], cost: 19 },
105
+ { nodes: [Cities.Plymouth, Cities.Bristol], cost: 14 },
106
+ { nodes: [Cities.Bristol, Cities.Newportcasnewydd], cost: 7 },
107
+ { nodes: [Cities.Cardiffcaerdydd, Cities.Swanseaabertawe], cost: 7 },
108
+ { nodes: [Cities.Swanseaabertawe, Cities.Newportcasnewydd], cost: 8 },
109
+ { nodes: [Cities.Newportcasnewydd, Cities.Cardiffcaerdydd], cost: 3 },
110
+ { nodes: [Cities.Bristol, Cities.Southampton], cost: 11 },
111
+ { nodes: [Cities.Southampton, Cities.London2], cost: 9 },
112
+ { nodes: [Cities.London2, Cities.Bristol], cost: 14 },
113
+ { nodes: [Cities.London1, Cities.Newportcasnewydd], cost: 16 },
114
+ { nodes: [Cities.Haverfordwesthwlffordd, Cities.Aberystwyth], cost: 9 },
115
+ { nodes: [Cities.Haverfordwesthwlffordd, Cities.Swanseaabertawe], cost: 8 },
116
+ { nodes: [Cities.Swanseaabertawe, Cities.Aberystwyth], cost: 11 },
117
+ { nodes: [Cities.Aberystwyth, Cities.Bangor], cost: 11 },
118
+ { nodes: [Cities.Bangor, Cities.Liverpool], cost: 9 },
119
+ { nodes: [Cities.Liverpool, Cities.Aberystwyth], cost: 16 },
120
+ { nodes: [Cities.Aberystwyth, Cities.Newportcasnewydd], cost: 14 },
121
+ { nodes: [Cities.Aberystwyth, Cities.Birmingham], cost: 16 },
122
+ { nodes: [Cities.Birmingham, Cities.Liverpool], cost: 12 },
123
+ { nodes: [Cities.Birmingham, Cities.Newportcasnewydd], cost: 9 },
124
+ { nodes: [Cities.London1, Cities.Norwich], cost: 11 },
125
+ { nodes: [Cities.Norwich, Cities.Leicester], cost: 12 },
126
+ { nodes: [Cities.Leicester, Cities.London1], cost: 10 },
127
+ { nodes: [Cities.London1, Cities.Birmingham], cost: 13 },
128
+ { nodes: [Cities.Birmingham, Cities.Leicester], cost: 6 },
129
+ { nodes: [Cities.Birmingham, Cities.Nottingham], cost: 7 },
130
+ { nodes: [Cities.Nottingham, Cities.Sheffield], cost: 6 },
131
+ { nodes: [Cities.Sheffield, Cities.Leeds], cost: 5 },
132
+ { nodes: [Cities.Leeds, Cities.Manchester], cost: 8 },
133
+ { nodes: [Cities.Manchester, Cities.Sheffield], cost: 8 },
134
+ { nodes: [Cities.Sheffield, Cities.Liverpool], cost: 12 },
135
+ { nodes: [Cities.Liverpool, Cities.Nottingham], cost: 15 },
136
+ { nodes: [Cities.Manchester, Cities.Dumfries], cost: 18 },
137
+ { nodes: [Cities.Manchester, Cities.Newcastleupontyne], cost: 15 },
138
+ { nodes: [Cities.Newcastleupontyne, Cities.Dumfries], cost: 12 },
139
+ { nodes: [Cities.Dumfries, Cities.Edinburgh], cost: 12 },
140
+ { nodes: [Cities.Edinburgh, Cities.Newcastleupontyne], cost: 13 },
141
+ { nodes: [Cities.Newcastleupontyne, Cities.Leeds], cost: 13 },
142
+ { nodes: [Cities.Dumfries, Cities.Glasgow], cost: 11 },
143
+ { nodes: [Cities.Glasgow, Cities.Edinburgh], cost: 7 },
144
+ { nodes: [Cities.Glasgow, Cities.Perthpeairt], cost: 10 },
145
+ { nodes: [Cities.Perthpeairt, Cities.Dundeedundeach], cost: 3 },
146
+ { nodes: [Cities.Glasgow, Cities.Invernessinbhirnis], cost: 20 },
147
+ { nodes: [Cities.Invernessinbhirnis, Cities.Perthpeairt], cost: 14 },
148
+ { nodes: [Cities.Invernessinbhirnis, Cities.Dundeedundeach], cost: 14 },
149
+ { nodes: [Cities.Invernessinbhirnis, Cities.Aberdeenobardheathain], cost: 15 },
150
+ { nodes: [Cities.Aberdeenobardheathain, Cities.Dundeedundeach], cost: 10 },
151
+ { nodes: [Cities.Limerick, Cities.Cork], cost: 12 },
152
+ { nodes: [Cities.Cork, Cities.Waterford], cost: 8 },
153
+ { nodes: [Cities.Waterford, Cities.Limerick], cost: 11 },
154
+ { nodes: [Cities.Limerick, Cities.Galway], cost: 10 },
155
+ { nodes: [Cities.Galway, Cities.Sligo], cost: 10 },
156
+ { nodes: [Cities.Sligo, Cities.Derry], cost: 10 },
157
+ { nodes: [Cities.Derry, Cities.Coleraine], cost: 6 },
158
+ { nodes: [Cities.Coleraine, Cities.Belfast], cost: 8 },
159
+ { nodes: [Cities.Belfast, Cities.Newry], cost: 6 },
160
+ { nodes: [Cities.Newry, Cities.Dublin], cost: 10 },
161
+ { nodes: [Cities.Dublin, Cities.Waterford], cost: 13 },
162
+ { nodes: [Cities.Galway, Cities.Athlone], cost: 8 },
163
+ { nodes: [Cities.Athlone, Cities.Sligo], cost: 9 },
164
+ { nodes: [Cities.Athlone, Cities.Limerick], cost: 9 },
165
+ { nodes: [Cities.Limerick, Cities.Dublin], cost: 16 },
166
+ { nodes: [Cities.Dublin, Cities.Athlone], cost: 9 },
167
+ { nodes: [Cities.Athlone, Cities.Newry], cost: 12 },
168
+ { nodes: [Cities.Athlone, Cities.Omagh], cost: 14 },
169
+ { nodes: [Cities.Omagh, Cities.Newry], cost: 8 },
170
+ { nodes: [Cities.Omagh, Cities.Belfast], cost: 10 },
171
+ { nodes: [Cities.Belfast, Cities.Derry], cost: 10 },
172
+ { nodes: [Cities.Omagh, Cities.Derry], cost: 5 },
173
+ { nodes: [Cities.Omagh, Cities.Sligo], cost: 10 },
174
+ ],
175
+ };