@gamepark/its-a-wonderful-world 2.2.3 → 2.4.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.
@@ -18,7 +18,7 @@ export declare const numberOfRounds = 4;
18
18
  export default class ItsAWonderfulWorld extends SimultaneousGame<GameState, Move, EmpireName> implements SecretInformation<GameState, GameView, Move, MoveView, EmpireName>, Undo<GameState, Move, EmpireName>, Competitive<GameState, Move, EmpireName>, Eliminations<GameState, Move, EmpireName>, TimeLimit<GameState, Move, EmpireName> {
19
19
  constructor(state: GameState);
20
20
  constructor(options: ItsAWonderfulWorldOptions);
21
- isActive(playerId: EmpireName): boolean;
21
+ isTurnToPlay(playerId: EmpireName): boolean;
22
22
  isOver(): boolean;
23
23
  getAutomaticMove(): Move | void;
24
24
  getLegalMoves(empire: EmpireName): Move[];
@@ -44,6 +44,7 @@ export declare function getRemainingCost(construction: Construction): {
44
44
  space: number;
45
45
  }[];
46
46
  export declare function getSpacesMissingItem(construction: Construction, predicate: (item: Resource | Character) => boolean): number[];
47
+ export declare function couldPlaceResource(construction: Construction, resource: Resource): boolean;
47
48
  export declare function getNextProductionStep(game: GameState | GameView): Resource.Energy | Resource.Science | Resource.Gold | Resource.Exploration | undefined;
48
49
  export declare function canBuild(player: Player, card: number): boolean;
49
50
  export declare function canPay(player: Player, cost: (Resource | Character)[]): boolean;
@@ -82,16 +82,20 @@ var __read = (this && this.__read) || function (o, n) {
82
82
  }
83
83
  return ar;
84
84
  };
85
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
86
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
87
- to[j] = from[i];
88
- return to;
85
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
86
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
87
+ if (ar || !(i in from)) {
88
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
89
+ ar[i] = from[i];
90
+ }
91
+ }
92
+ return to.concat(ar || Array.prototype.slice.call(from));
89
93
  };
90
94
  var __importDefault = (this && this.__importDefault) || function (mod) {
91
95
  return (mod && mod.__esModule) ? mod : { "default": mod };
92
96
  };
93
97
  Object.defineProperty(exports, "__esModule", { value: true });
94
- exports.placeAvailableCubesMoves = exports.constructionsThatMayReceiveCubes = exports.isOver = exports.countCharacters = exports.isActive = exports.isPlaceItemOnCard = exports.getMovesToBuild = exports.canPay = exports.canBuild = exports.getNextProductionStep = exports.getSpacesMissingItem = exports.getRemainingCost = exports.getCost = exports.getLegalMoves = exports.getPredictableAutomaticMoves = exports.setupPlayers = exports.numberOfRounds = exports.numberOfCardsToDraft = void 0;
98
+ exports.placeAvailableCubesMoves = exports.constructionsThatMayReceiveCubes = exports.isOver = exports.countCharacters = exports.isActive = exports.isPlaceItemOnCard = exports.getMovesToBuild = exports.canPay = exports.canBuild = exports.getNextProductionStep = exports.couldPlaceResource = exports.getSpacesMissingItem = exports.getRemainingCost = exports.getCost = exports.getLegalMoves = exports.getPredictableAutomaticMoves = exports.setupPlayers = exports.numberOfRounds = exports.numberOfCardsToDraft = void 0;
95
99
  var rules_api_1 = require("@gamepark/rules-api");
96
100
  var lodash_shuffle_1 = __importDefault(require("lodash.shuffle"));
97
101
  var canUndo_1 = __importDefault(require("./canUndo"));
@@ -130,16 +134,16 @@ var ItsAWonderfulWorld = (function (_super) {
130
134
  __extends(ItsAWonderfulWorld, _super);
131
135
  function ItsAWonderfulWorld(arg) {
132
136
  var _this = this;
133
- if (Options_1.isGameOptions(arg)) {
137
+ if ((0, Options_1.isGameOptions)(arg)) {
134
138
  var setup = {
135
139
  players: setupPlayers(arg),
136
- deck: lodash_shuffle_1.default(Developments_1.baseDevelopmentCardIds),
140
+ deck: (0, lodash_shuffle_1.default)(Developments_1.baseDevelopmentCardIds),
137
141
  discard: [],
138
142
  round: 1,
139
143
  phase: Phase_1.default.Draft
140
144
  };
141
145
  if (arg.corruptionAndAscension) {
142
- setup.ascensionDeck = lodash_shuffle_1.default(Developments_1.ascensionDevelopmentCardIds);
146
+ setup.ascensionDeck = (0, lodash_shuffle_1.default)(Developments_1.ascensionDevelopmentCardIds);
143
147
  }
144
148
  _this = _super.call(this, setup) || this;
145
149
  }
@@ -148,7 +152,7 @@ var ItsAWonderfulWorld = (function (_super) {
148
152
  }
149
153
  return _this;
150
154
  }
151
- ItsAWonderfulWorld.prototype.isActive = function (playerId) {
155
+ ItsAWonderfulWorld.prototype.isTurnToPlay = function (playerId) {
152
156
  var player = this.state.players.find(function (player) { return player.empire === playerId; });
153
157
  if (!player)
154
158
  return false;
@@ -182,7 +186,7 @@ var ItsAWonderfulWorld = (function (_super) {
182
186
  return DiscardLeftoverCards_1.discardLeftOverCardsMove;
183
187
  }
184
188
  else {
185
- return StartPhase_1.startPhaseMove(Phase_1.default.Planning);
189
+ return (0, StartPhase_1.startPhaseMove)(Phase_1.default.Planning);
186
190
  }
187
191
  }
188
192
  else {
@@ -190,7 +194,7 @@ var ItsAWonderfulWorld = (function (_super) {
190
194
  for (var _b = __values(this.state.players), _c = _b.next(); !_c.done; _c = _b.next()) {
191
195
  var player = _c.value;
192
196
  if (player.chosenCard === undefined && player.hand.length === 1) {
193
- return ChooseDevelopmentCard_1.chooseDevelopmentCardMove(player.empire, player.hand[0]);
197
+ return (0, ChooseDevelopmentCard_1.chooseDevelopmentCardMove)(player.empire, player.hand[0]);
194
198
  }
195
199
  }
196
200
  }
@@ -205,20 +209,20 @@ var ItsAWonderfulWorld = (function (_super) {
205
209
  break;
206
210
  case Phase_1.default.Planning:
207
211
  if (this.state.players.every(function (player) { return player.ready; })) {
208
- return StartPhase_1.startPhaseMove(Phase_1.default.Production);
212
+ return (0, StartPhase_1.startPhaseMove)(Phase_1.default.Production);
209
213
  }
210
214
  break;
211
215
  case Phase_1.default.Production:
212
216
  if (!this.state.productionStep) {
213
- return Produce_1.produceMove(Resource_1.default.Materials);
217
+ return (0, Produce_1.produceMove)(Resource_1.default.Materials);
214
218
  }
215
219
  else if (this.state.players.every(function (player) { return player.ready; })) {
216
220
  var nextProductionStep = getNextProductionStep(this.state);
217
221
  if (nextProductionStep) {
218
- return Produce_1.produceMove(nextProductionStep);
222
+ return (0, Produce_1.produceMove)(nextProductionStep);
219
223
  }
220
224
  else if (this.state.round < exports.numberOfRounds) {
221
- return StartPhase_1.startPhaseMove(Phase_1.default.Draft);
225
+ return (0, StartPhase_1.startPhaseMove)(Phase_1.default.Draft);
222
226
  }
223
227
  }
224
228
  break;
@@ -235,41 +239,41 @@ var ItsAWonderfulWorld = (function (_super) {
235
239
  ItsAWonderfulWorld.prototype.play = function (move) {
236
240
  switch (move.type) {
237
241
  case MoveType_1.default.DealDevelopmentCards:
238
- return DealDevelopmentCards_1.dealDevelopmentCards(this.state);
242
+ return (0, DealDevelopmentCards_1.dealDevelopmentCards)(this.state);
239
243
  case MoveType_1.default.ChooseDevelopmentCard:
240
- return ChooseDevelopmentCard_1.chooseDevelopmentCard(this.state, move);
244
+ return (0, ChooseDevelopmentCard_1.chooseDevelopmentCard)(this.state, move);
241
245
  case MoveType_1.default.RevealChosenCards:
242
- return RevealChosenCards_1.revealChosenCards(this.state);
246
+ return (0, RevealChosenCards_1.revealChosenCards)(this.state);
243
247
  case MoveType_1.default.PassCards:
244
- return PassCards_1.passCards(this.state);
248
+ return (0, PassCards_1.passCards)(this.state);
245
249
  case MoveType_1.default.DiscardLeftoverCards:
246
- return DiscardLeftoverCards_1.discardLeftOverCards(this.state);
250
+ return (0, DiscardLeftoverCards_1.discardLeftOverCards)(this.state);
247
251
  case MoveType_1.default.StartPhase:
248
- return StartPhase_1.startPhase(this.state, move);
252
+ return (0, StartPhase_1.startPhase)(this.state, move);
249
253
  case MoveType_1.default.SlateForConstruction:
250
- return SlateForConstruction_1.slateForConstruction(this.state, move);
254
+ return (0, SlateForConstruction_1.slateForConstruction)(this.state, move);
251
255
  case MoveType_1.default.Recycle:
252
- return Recycle_1.recycle(this.state, move);
256
+ return (0, Recycle_1.recycle)(this.state, move);
253
257
  case MoveType_1.default.PlaceResource:
254
- return PlaceResource_1.placeResource(this.state, move);
258
+ return (0, PlaceResource_1.placeResource)(this.state, move);
255
259
  case MoveType_1.default.CompleteConstruction:
256
- return CompleteConstruction_1.completeConstruction(this.state, move);
260
+ return (0, CompleteConstruction_1.completeConstruction)(this.state, move);
257
261
  case MoveType_1.default.TransformIntoKrystallium:
258
- return TransformIntoKrystallium_1.transformIntoKrystallium(this.state, move);
262
+ return (0, TransformIntoKrystallium_1.transformIntoKrystallium)(this.state, move);
259
263
  case MoveType_1.default.TellYouAreReady:
260
- return TellYouAreReady_1.tellYouAreReady(this.state, move);
264
+ return (0, TellYouAreReady_1.tellYouAreReady)(this.state, move);
261
265
  case MoveType_1.default.Produce:
262
- return Produce_1.produce(this.state, move);
266
+ return (0, Produce_1.produce)(this.state, move);
263
267
  case MoveType_1.default.ReceiveCharacter:
264
- return ReceiveCharacter_1.receiveCharacter(this.state, move);
268
+ return (0, ReceiveCharacter_1.receiveCharacter)(this.state, move);
265
269
  case MoveType_1.default.PlaceCharacter:
266
- return PlaceCharacter_1.placeCharacter(this.state, move);
270
+ return (0, PlaceCharacter_1.placeCharacter)(this.state, move);
267
271
  case MoveType_1.default.Concede:
268
- return Concede_1.concede(this.state, move);
272
+ return (0, Concede_1.concede)(this.state, move);
269
273
  }
270
274
  };
271
275
  ItsAWonderfulWorld.prototype.getScore = function (empire) {
272
- return Scoring_1.getPlayerScore(this.getPlayer(empire));
276
+ return (0, Scoring_1.getPlayerScore)(this.getPlayer(empire));
273
277
  };
274
278
  ItsAWonderfulWorld.prototype.getPlayer = function (playerId) {
275
279
  var player = this.state.players.find(function (player) { return player.empire === playerId; });
@@ -282,7 +286,7 @@ var ItsAWonderfulWorld = (function (_super) {
282
286
  if (playerA.eliminated || playerB.eliminated) {
283
287
  return playerA.eliminated ? playerB.eliminated ? playerB.eliminated - playerA.eliminated : 1 : -1;
284
288
  }
285
- var scoreA = Scoring_1.getPlayerScore(playerA), scoreB = Scoring_1.getPlayerScore(playerB);
289
+ var scoreA = (0, Scoring_1.getPlayerScore)(playerA), scoreB = (0, Scoring_1.getPlayerScore)(playerB);
286
290
  if (scoreA !== scoreB) {
287
291
  return scoreB - scoreA;
288
292
  }
@@ -293,7 +297,7 @@ var ItsAWonderfulWorld = (function (_super) {
293
297
  return countCharacters(playerB) - countCharacters(playerA);
294
298
  };
295
299
  ItsAWonderfulWorld.prototype.canUndo = function (action, consecutiveActions) {
296
- return canUndo_1.default(this.state, action, consecutiveActions);
300
+ return (0, canUndo_1.default)(this.state, action, consecutiveActions);
297
301
  };
298
302
  ItsAWonderfulWorld.prototype.getView = function (playerId) {
299
303
  var _a;
@@ -317,7 +321,7 @@ var ItsAWonderfulWorld = (function (_super) {
317
321
  ItsAWonderfulWorld.prototype.getMoveView = function (move, playerId) {
318
322
  switch (move.type) {
319
323
  case MoveType_1.default.DealDevelopmentCards:
320
- return playerId ? DealDevelopmentCards_1.getDealDevelopmentCardsView(this.state, playerId) : move;
324
+ return playerId ? (0, DealDevelopmentCards_1.getDealDevelopmentCardsView)(this.state, playerId) : move;
321
325
  case MoveType_1.default.ChooseDevelopmentCard:
322
326
  if (playerId !== move.playerId) {
323
327
  var card = move.card, moveView = __rest(move, ["card"]);
@@ -325,11 +329,11 @@ var ItsAWonderfulWorld = (function (_super) {
325
329
  }
326
330
  break;
327
331
  case MoveType_1.default.RevealChosenCards:
328
- return RevealChosenCards_1.getRevealChosenCardsView(this.state);
332
+ return (0, RevealChosenCards_1.getRevealChosenCardsView)(this.state);
329
333
  case MoveType_1.default.PassCards:
330
- return playerId ? PassCards_1.getPassCardsView(this.state, playerId) : move;
334
+ return playerId ? (0, PassCards_1.getPassCardsView)(this.state, playerId) : move;
331
335
  case MoveType_1.default.DiscardLeftoverCards:
332
- return DiscardLeftoverCards_1.getDiscardLeftoverCardsView(this.state);
336
+ return (0, DiscardLeftoverCards_1.getDiscardLeftoverCardsView)(this.state);
333
337
  }
334
338
  return move;
335
339
  };
@@ -340,7 +344,7 @@ var ItsAWonderfulWorld = (function (_super) {
340
344
  return !!this.getPlayer(playerId).eliminated;
341
345
  };
342
346
  ItsAWonderfulWorld.prototype.giveUpMove = function (playerId) {
343
- return Concede_1.concedeMove(playerId);
347
+ return (0, Concede_1.concedeMove)(playerId);
344
348
  };
345
349
  ItsAWonderfulWorld.prototype.giveTime = function (playerId) {
346
350
  switch (this.state.phase) {
@@ -358,7 +362,7 @@ exports.default = ItsAWonderfulWorld;
358
362
  function setupPlayers(options) {
359
363
  var players = options.players;
360
364
  var empireSide = options.empiresSide;
361
- var empiresLeft = lodash_shuffle_1.default(Object.values(EmpireName_1.default).filter(function (empire) { return players.some(function (player) { return player.id === empire; }); }));
365
+ var empiresLeft = (0, lodash_shuffle_1.default)(Object.values(EmpireName_1.default).filter(function (empire) { return players.some(function (player) { return player.id === empire; }); }));
362
366
  return players.map(function (player) { return setupPlayer(player.id || empiresLeft.pop(), empireSide); });
363
367
  }
364
368
  exports.setupPlayers = setupPlayers;
@@ -367,7 +371,9 @@ function setupPlayer(empire, empireSide) {
367
371
  var _b;
368
372
  if (empireSide === void 0) { empireSide = defaultEmpireCardsSide; }
369
373
  return {
370
- empire: empire, empireSide: empireSide, hand: [], draftArea: [], constructionArea: [], availableResources: [],
374
+ empire: empire,
375
+ empireSide: empireSide,
376
+ hand: [], draftArea: [], constructionArea: [], availableResources: [],
371
377
  empireCardResources: Array((_b = Empires_1.default[empire][empireSide].krystallium) !== null && _b !== void 0 ? _b : 0).fill(Resource_1.default.Krystallium),
372
378
  constructedDevelopments: [], ready: false, characters: (_a = {}, _a[Character_1.default.Financier] = 0, _a[Character_1.default.General] = 0, _a), bonuses: []
373
379
  };
@@ -381,7 +387,7 @@ function getPredictableAutomaticMoves(state) {
381
387
  for (var _f = (e_3 = void 0, __values(player.constructionArea)), _g = _f.next(); !_g.done; _g = _f.next()) {
382
388
  var construction = _g.value;
383
389
  if (construction.costSpaces.every(function (space) { return space !== null; })) {
384
- return CompleteConstruction_1.completeConstructionMove(player.empire, construction.card);
390
+ return (0, CompleteConstruction_1.completeConstructionMove)(player.empire, construction.card);
385
391
  }
386
392
  }
387
393
  }
@@ -393,23 +399,23 @@ function getPredictableAutomaticMoves(state) {
393
399
  finally { if (e_3) throw e_3.error; }
394
400
  }
395
401
  if (player.empireCardResources.filter(function (resource) { return resource !== Resource_1.default.Krystallium; }).length >= 5) {
396
- return TransformIntoKrystallium_1.transformIntoKrystalliumMove(player.empire);
402
+ return (0, TransformIntoKrystallium_1.transformIntoKrystalliumMove)(player.empire);
397
403
  }
398
404
  var bonus = player.bonuses.find(function (bonus) { return bonus !== Character_1.ChooseCharacter; });
399
- if (Resource_1.isResource(bonus)) {
400
- return PlaceResource_1.placeResourceOnEmpireMove(player.empire, bonus);
405
+ if ((0, Resource_1.isResource)(bonus)) {
406
+ return (0, PlaceResource_1.placeResourceOnEmpireMove)(player.empire, bonus);
401
407
  }
402
- else if (Character_1.isCharacter(bonus)) {
403
- return ReceiveCharacter_1.receiveCharacterMove(player.empire, bonus);
408
+ else if ((0, Character_1.isCharacter)(bonus)) {
409
+ return (0, ReceiveCharacter_1.receiveCharacterMove)(player.empire, bonus);
404
410
  }
405
411
  var _loop_1 = function (resource) {
406
- if (!player.draftArea.some(function (card) { return Developments_1.getCardDetails(card).constructionCost[resource]; })
407
- && !player.constructionArea.some(function (construction) { return getSpacesMissingItem(construction, function (item) { return item === resource; }).length > 0; })) {
408
- return { value: PlaceResource_1.placeResourceOnEmpireMove(player.empire, resource) };
412
+ if (!player.draftArea.some(function (card) { return (0, Developments_1.getCardDetails)(card).constructionCost[resource]; })
413
+ && !player.constructionArea.some(function (construction) { return couldPlaceResource(construction, resource); })) {
414
+ return { value: (0, PlaceResource_1.placeResourceOnEmpireMove)(player.empire, resource) };
409
415
  }
410
416
  };
411
417
  try {
412
- for (var _h = (e_4 = void 0, __values(__spreadArray([], __read(new Set(player.availableResources))))), _j = _h.next(); !_j.done; _j = _h.next()) {
418
+ for (var _h = (e_4 = void 0, __values(__spreadArray([], __read(new Set(player.availableResources)), false))), _j = _h.next(); !_j.done; _j = _h.next()) {
413
419
  var resource = _j.value;
414
420
  var state_1 = _loop_1(resource);
415
421
  if (typeof state_1 === "object")
@@ -439,45 +445,45 @@ function getLegalMoves(player, phase) {
439
445
  switch (phase) {
440
446
  case Phase_1.default.Draft:
441
447
  if (player.chosenCard === undefined) {
442
- player.hand.forEach(function (card) { return moves.push(ChooseDevelopmentCard_1.chooseDevelopmentCardMove(player.empire, card)); });
448
+ player.hand.forEach(function (card) { return moves.push((0, ChooseDevelopmentCard_1.chooseDevelopmentCardMove)(player.empire, card)); });
443
449
  }
444
450
  break;
445
451
  case Phase_1.default.Planning:
446
- player.draftArea.forEach(function (card) { return moves.push(SlateForConstruction_1.slateForConstructionMove(player.empire, card), Recycle_1.recycleMove(player.empire, card)); });
452
+ player.draftArea.forEach(function (card) { return moves.push((0, SlateForConstruction_1.slateForConstructionMove)(player.empire, card), (0, Recycle_1.recycleMove)(player.empire, card)); });
447
453
  if (!player.draftArea.length && !player.availableResources.length && !player.ready) {
448
- moves.push(TellYouAreReady_1.tellYouAreReadyMove(player.empire));
454
+ moves.push((0, TellYouAreReady_1.tellYouAreReadyMove)(player.empire));
449
455
  }
450
456
  break;
451
457
  case Phase_1.default.Production:
452
458
  if (!player.bonuses.length && !player.availableResources.length && !player.ready) {
453
- moves.push(TellYouAreReady_1.tellYouAreReadyMove(player.empire));
459
+ moves.push((0, TellYouAreReady_1.tellYouAreReadyMove)(player.empire));
454
460
  }
455
461
  break;
456
462
  }
457
- __spreadArray([], __read(new Set(player.availableResources))).forEach(function (resource) {
463
+ __spreadArray([], __read(new Set(player.availableResources)), false).forEach(function (resource) {
458
464
  player.constructionArea.forEach(function (construction) {
459
465
  getSpacesMissingItem(construction, function (item) { return item === resource; })
460
- .forEach(function (space) { return moves.push(PlaceResource_1.placeResourceOnConstructionMove(player.empire, resource, construction.card, space)); });
466
+ .forEach(function (space) { return moves.push((0, PlaceResource_1.placeResourceOnConstructionMove)(player.empire, resource, construction.card, space)); });
461
467
  });
462
- moves.push(PlaceResource_1.placeResourceOnEmpireMove(player.empire, resource));
468
+ moves.push((0, PlaceResource_1.placeResourceOnEmpireMove)(player.empire, resource));
463
469
  });
464
470
  if (player.bonuses.some(function (bonus) { return bonus === Character_1.ChooseCharacter; })) {
465
- Character_1.characters.forEach(function (character) { return moves.push(ReceiveCharacter_1.receiveCharacterMove(player.empire, character)); });
471
+ Character_1.characters.forEach(function (character) { return moves.push((0, ReceiveCharacter_1.receiveCharacterMove)(player.empire, character)); });
466
472
  }
467
473
  player.constructionArea.forEach(function (construction) {
468
- moves.push(Recycle_1.recycleMove(player.empire, construction.card));
474
+ moves.push((0, Recycle_1.recycleMove)(player.empire, construction.card));
469
475
  });
470
476
  if (player.empireCardResources.some(function (resource) { return resource === Resource_1.default.Krystallium; })) {
471
477
  player.constructionArea.forEach(function (construction) {
472
- getSpacesMissingItem(construction, function (item) { return Resource_1.isResource(item); })
473
- .forEach(function (space) { return moves.push(PlaceResource_1.placeResourceOnConstructionMove(player.empire, Resource_1.default.Krystallium, construction.card, space)); });
478
+ getSpacesMissingItem(construction, function (item) { return (0, Resource_1.isResource)(item); })
479
+ .forEach(function (space) { return moves.push((0, PlaceResource_1.placeResourceOnConstructionMove)(player.empire, Resource_1.default.Krystallium, construction.card, space)); });
474
480
  });
475
481
  }
476
482
  Character_1.characters.forEach(function (character) {
477
483
  if (player.characters[character]) {
478
484
  player.constructionArea.forEach(function (construction) {
479
485
  getSpacesMissingItem(construction, function (item) { return item === character; })
480
- .forEach(function (space) { return moves.push(PlaceCharacter_1.placeCharacterMove(player.empire, character, construction.card, space)); });
486
+ .forEach(function (space) { return moves.push((0, PlaceCharacter_1.placeCharacterMove)(player.empire, character, construction.card, space)); });
481
487
  });
482
488
  }
483
489
  });
@@ -485,13 +491,12 @@ function getLegalMoves(player, phase) {
485
491
  }
486
492
  exports.getLegalMoves = getLegalMoves;
487
493
  function getCost(card) {
488
- var development = Developments_1.getCardDetails(card);
489
- return Array.of.apply(Array, __spreadArray(__spreadArray([], __read(Resource_1.resources)), __read(Character_1.characters))).flatMap(function (item) { return Array(development.constructionCost[item] || 0).fill(item); });
494
+ var development = (0, Developments_1.getCardDetails)(card);
495
+ return Array.of.apply(Array, __spreadArray(__spreadArray([], __read(Resource_1.resources), false), __read(Character_1.characters), false)).flatMap(function (item) { return Array(development.constructionCost[item] || 0).fill(item); });
490
496
  }
491
497
  exports.getCost = getCost;
492
498
  function getRemainingCost(construction) {
493
- var development = Developments_1.getCardDetails(construction.card);
494
- return Array.of.apply(Array, __spreadArray(__spreadArray([], __read(Resource_1.resources)), __read(Character_1.characters))).flatMap(function (item) { return Array(development.constructionCost[item] || 0).fill(item); })
499
+ return getCost(construction.card)
495
500
  .map(function (item, index) { return ({ item: item, space: index }); })
496
501
  .filter(function (item) { return !construction.costSpaces[item.space]; });
497
502
  }
@@ -500,6 +505,14 @@ function getSpacesMissingItem(construction, predicate) {
500
505
  return getRemainingCost(construction).filter(function (cost) { return predicate(cost.item); }).map(function (cost) { return cost.space; });
501
506
  }
502
507
  exports.getSpacesMissingItem = getSpacesMissingItem;
508
+ function couldPlaceResource(construction, resource) {
509
+ return Array.from(getCost(construction.card).entries())
510
+ .some(function (_a) {
511
+ var _b = __read(_a, 2), space = _b[0], item = _b[1];
512
+ return resource === item && (!construction.costSpaces[space] || construction.costSpaces[space] === Resource_1.default.Krystallium);
513
+ });
514
+ }
515
+ exports.couldPlaceResource = couldPlaceResource;
503
516
  function getNextProductionStep(game) {
504
517
  switch (game.productionStep) {
505
518
  case Resource_1.default.Materials:
@@ -578,7 +591,7 @@ function getMovesToBuild(player, card) {
578
591
  var e_7, _a, e_8, _b;
579
592
  var moves = [];
580
593
  var construction = player.constructionArea.find(function (construction) { return construction.card === card; })
581
- || { card: card, costSpaces: Array(DevelopmentDetails_1.totalCost(Developments_1.getCardDetails(card))).fill(null) };
594
+ || { card: card, costSpaces: Array((0, DevelopmentDetails_1.totalCost)((0, Developments_1.getCardDetails)(card))).fill(null) };
582
595
  var remainingCost = getRemainingCost(construction);
583
596
  var _loop_4 = function (resource) {
584
597
  var e_9, _c;
@@ -588,11 +601,11 @@ function getMovesToBuild(player, card) {
588
601
  for (var resourceCosts_1 = (e_9 = void 0, __values(resourceCosts)), resourceCosts_1_1 = resourceCosts_1.next(); !resourceCosts_1_1.done; resourceCosts_1_1 = resourceCosts_1.next()) {
589
602
  var cost = resourceCosts_1_1.value;
590
603
  if (resources_4 > 0) {
591
- moves.push(PlaceResource_1.placeResourceOnConstructionMove(player.empire, resource, card, cost.space));
604
+ moves.push((0, PlaceResource_1.placeResourceOnConstructionMove)(player.empire, resource, card, cost.space));
592
605
  resources_4--;
593
606
  }
594
607
  else {
595
- moves.push(PlaceResource_1.placeResourceOnConstructionMove(player.empire, Resource_1.default.Krystallium, card, cost.space));
608
+ moves.push((0, PlaceResource_1.placeResourceOnConstructionMove)(player.empire, Resource_1.default.Krystallium, card, cost.space));
596
609
  }
597
610
  }
598
611
  }
@@ -620,8 +633,8 @@ function getMovesToBuild(player, card) {
620
633
  try {
621
634
  for (var remainingCost_1 = __values(remainingCost), remainingCost_1_1 = remainingCost_1.next(); !remainingCost_1_1.done; remainingCost_1_1 = remainingCost_1.next()) {
622
635
  var cost = remainingCost_1_1.value;
623
- if (Character_1.isCharacter(cost.item)) {
624
- moves.push(PlaceCharacter_1.placeCharacterMove(player.empire, cost.item, card, cost.space));
636
+ if ((0, Character_1.isCharacter)(cost.item)) {
637
+ moves.push((0, PlaceCharacter_1.placeCharacterMove)(player.empire, cost.item, card, cost.space));
625
638
  }
626
639
  }
627
640
  }
@@ -640,7 +653,7 @@ function isPlaceItemOnCard(move, card) {
640
653
  return isPlaceItemOnCard(move) && move.card === card;
641
654
  }
642
655
  else {
643
- return PlaceResource_1.isPlaceResourceOnConstruction(move) || PlaceCharacter_1.isPlaceCharacter(move);
656
+ return (0, PlaceResource_1.isPlaceResourceOnConstruction)(move) || (0, PlaceCharacter_1.isPlaceCharacter)(move);
644
657
  }
645
658
  }
646
659
  exports.isPlaceItemOnCard = isPlaceItemOnCard;
@@ -648,7 +661,7 @@ function isActive(game, playerId) {
648
661
  var player = game.players.find(function (player) { return player.empire === playerId; });
649
662
  switch (game.phase) {
650
663
  case Phase_1.default.Draft:
651
- return typeguards_1.isPlayerView(player) ? !player.ready : player.chosenCard === undefined;
664
+ return (0, typeguards_1.isPlayerView)(player) ? !player.ready : player.chosenCard === undefined;
652
665
  case Phase_1.default.Planning:
653
666
  case Phase_1.default.Production:
654
667
  return !player.ready;
@@ -664,16 +677,16 @@ function isOver(game) {
664
677
  }
665
678
  exports.isOver = isOver;
666
679
  function constructionsThatMayReceiveCubes(player) {
667
- return player.constructionArea.filter(function (construction) { return getRemainingCost(construction).some(function (cost) { return Resource_1.isResource(cost.item) && player.availableResources.includes(cost.item); }); });
680
+ return player.constructionArea.filter(function (construction) { return getRemainingCost(construction).some(function (cost) { return (0, Resource_1.isResource)(cost.item) && player.availableResources.includes(cost.item); }); });
668
681
  }
669
682
  exports.constructionsThatMayReceiveCubes = constructionsThatMayReceiveCubes;
670
683
  function placeAvailableCubesMoves(player, construction) {
671
684
  var moves = [];
672
685
  var availableResource = JSON.parse(JSON.stringify(player.availableResources));
673
686
  getRemainingCost(construction).forEach(function (cost) {
674
- if (Resource_1.isResource(cost.item)) {
687
+ if ((0, Resource_1.isResource)(cost.item)) {
675
688
  if (availableResource.some(function (resource) { return resource === cost.item; })) {
676
- moves.push(PlaceResource_1.placeResourceOnConstructionMove(player.empire, cost.item, construction.card, cost.space));
689
+ moves.push((0, PlaceResource_1.placeResourceOnConstructionMove)(player.empire, cost.item, construction.card, cost.space));
677
690
  availableResource.splice(availableResource.findIndex(function (resource) { return resource === cost.item; }), 1);
678
691
  }
679
692
  }
package/dist/Options.js CHANGED
@@ -28,13 +28,17 @@ function isGameOptions(arg) {
28
28
  }
29
29
  exports.isGameOptions = isGameOptions;
30
30
  exports.ItsAWonderfulWorldOptionsSpec = {
31
+ corruptionAndAscension: {
32
+ label: function (t) { return t('Corruption & Ascension'); },
33
+ help: function (t) { return t('c&a.help'); },
34
+ subscriberRequired: true
35
+ },
31
36
  players: {
32
37
  id: {
33
38
  label: function (t) { return t('Empire'); },
34
39
  values: EmpireName_1.empireNames,
35
40
  valueSpec: function (empire) { return ({
36
- label: function (t) { return getPlayerName(empire, t); },
37
- subscriberRequired: empire === EmpireName_1.default.NationsOfOceania || empire === EmpireName_1.default.NorthHegemony
41
+ label: function (t) { return getPlayerName(empire, t); }
38
42
  }); }
39
43
  }
40
44
  },
@@ -45,19 +49,12 @@ exports.ItsAWonderfulWorldOptionsSpec = {
45
49
  label: function (t) { return t('Side {side}', { side: String.fromCharCode(64 + side) }); },
46
50
  help: function (t) { return getEmpireSideHelp(side, t); },
47
51
  warn: function (t) { return side === EmpireSide_1.default.A ? t('Side A is advised for beginners') : ''; },
48
- subscriberRequired: side !== EmpireSide_1.default.A && side !== EmpireSide_1.default.B,
49
- competitiveDisabled: side === EmpireSide_1.default.E || side === EmpireSide_1.default.F
52
+ subscriberRequired: side !== EmpireSide_1.default.A && side !== EmpireSide_1.default.B
50
53
  }); }
51
54
  },
52
- corruptionAndAscension: {
53
- label: function (t) { return t('Corruption & Ascension'); },
54
- help: function (t) { return t('c&a.help'); },
55
- subscriberRequired: true,
56
- competitiveDisabled: true
57
- },
58
55
  validate: function (options, t) {
59
- if (!options.corruptionAndAscension) {
60
- if (options.players.length > 5) {
56
+ if (options.corruptionAndAscension === false) {
57
+ if (options.players && options.players.length > 5) {
61
58
  throw new rules_api_1.OptionsValidationError(t('6.players.requires.c&a'), ['corruptionAndAscension', 'players']);
62
59
  }
63
60
  if (options.empiresSide === EmpireSide_1.default.E || options.empiresSide === EmpireSide_1.default.F) {
@@ -11,4 +11,5 @@ declare type Production = Resource | {
11
11
  } | ProductionFactor;
12
12
  export default Production;
13
13
  export declare function isProductionFactor(production: Production): production is ProductionFactor;
14
+ export declare function getProductionAndCorruption(player: Player | PlayerView, resource: Resource): number;
14
15
  export declare function getProduction(player: Player | PlayerView, resource: Resource): number;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getProduction = exports.isProductionFactor = void 0;
6
+ exports.getProduction = exports.getProductionAndCorruption = exports.isProductionFactor = void 0;
7
7
  var Developments_1 = require("./material/Developments");
8
8
  var Empires_1 = __importDefault(require("./material/Empires"));
9
9
  var Resource_1 = require("./material/Resource");
@@ -12,11 +12,15 @@ function isProductionFactor(production) {
12
12
  return productionFactor.resource !== undefined && productionFactor.factor !== undefined;
13
13
  }
14
14
  exports.isProductionFactor = isProductionFactor;
15
- function getProduction(player, resource) {
15
+ function getProductionAndCorruption(player, resource) {
16
16
  var developmentsProduction = player.constructedDevelopments.reduce(function (sum, card) {
17
- return sum + getResourceProduction(player, resource, Developments_1.getCardDetails(card).production);
17
+ return sum + getResourceProduction(player, resource, (0, Developments_1.getCardDetails)(card).production);
18
18
  }, 0);
19
- return Math.max(0, getEmpireProduction(player, resource) + developmentsProduction);
19
+ return getEmpireProduction(player, resource) + developmentsProduction;
20
+ }
21
+ exports.getProductionAndCorruption = getProductionAndCorruption;
22
+ function getProduction(player, resource) {
23
+ return Math.max(0, getProductionAndCorruption(player, resource));
20
24
  }
21
25
  exports.getProduction = getProduction;
22
26
  function getEmpireProduction(player, resource) {
@@ -27,14 +31,14 @@ function getResourceProduction(player, resource, production) {
27
31
  if (!production) {
28
32
  return 0;
29
33
  }
30
- if (Resource_1.isResource(production)) {
34
+ if ((0, Resource_1.isResource)(production)) {
31
35
  return production === resource ? 1 : 0;
32
36
  }
33
37
  if (!isProductionFactor(production)) {
34
38
  return (_a = production[resource]) !== null && _a !== void 0 ? _a : 0;
35
39
  }
36
40
  if (production.resource === resource) {
37
- return player.constructedDevelopments.reduce(function (sum, card) { return Developments_1.getCardDetails(card).type === production.factor ? sum + 1 : sum; }, 0);
41
+ return player.constructedDevelopments.reduce(function (sum, card) { return (0, Developments_1.getCardDetails)(card).type === production.factor ? sum + 1 : sum; }, 0);
38
42
  }
39
43
  return 0;
40
44
  }
package/dist/Scoring.js CHANGED
@@ -37,10 +37,14 @@ var __read = (this && this.__read) || function (o, n) {
37
37
  }
38
38
  return ar;
39
39
  };
40
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
41
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
42
- to[j] = from[i];
43
- return to;
40
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
41
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
42
+ if (ar || !(i in from)) {
43
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
44
+ ar[i] = from[i];
45
+ }
46
+ }
47
+ return to.concat(ar || Array.prototype.slice.call(from));
44
48
  };
45
49
  var __importDefault = (this && this.__importDefault) || function (mod) {
46
50
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -83,7 +87,7 @@ function getScoringDetails(player, ignoreBaseCharacterValue) {
83
87
  }
84
88
  }
85
89
  var _loop_1 = function (constructedDevelopment) {
86
- var development = Developments_1.getCardDetails(constructedDevelopment);
90
+ var development = (0, Developments_1.getCardDetails)(constructedDevelopment);
87
91
  scoringDetails.scoreMultipliers[development.type]++;
88
92
  if (typeof development.victoryPoints === 'number') {
89
93
  scoringDetails.flatVictoryPoints += development.victoryPoints;
@@ -135,7 +139,7 @@ function getComboValue(combo, scoreMultipliers) {
135
139
  exports.getComboValue = getComboValue;
136
140
  function getComboMultiplier(combo, scoreMultipliers) {
137
141
  if (Array.isArray(combo.per)) {
138
- return Math.min.apply(Math, __spreadArray([], __read(combo.per.map(function (scoreMultiplier) { return scoreMultipliers[scoreMultiplier]; }))));
142
+ return Math.min.apply(Math, __spreadArray([], __read(combo.per.map(function (scoreMultiplier) { return scoreMultipliers[scoreMultiplier]; })), false));
139
143
  }
140
144
  else {
141
145
  return scoreMultipliers[combo.per];
package/dist/canUndo.js CHANGED
@@ -14,34 +14,34 @@ var TellYouAreReady_1 = require("./moves/TellYouAreReady");
14
14
  var typeguards_1 = require("./typeguards");
15
15
  function canUndo(state, action, consecutiveActions) {
16
16
  var playerId = action.playerId, move = action.move;
17
- if (ItsAWonderfulWorld_1.isOver(state))
17
+ if ((0, ItsAWonderfulWorld_1.isOver)(state))
18
18
  return false;
19
19
  switch (move.type) {
20
20
  case MoveType_1.default.ChooseDevelopmentCard:
21
21
  var player = state.players.find(function (player) { return player.empire === playerId; });
22
- return ChooseDevelopmentCard_1.isChosenDevelopmentCardVisible(move) && typeguards_1.isPlayer(player) && player.chosenCard === move.card;
22
+ return (0, ChooseDevelopmentCard_1.isChosenDevelopmentCardVisible)(move) && (0, typeguards_1.isPlayer)(player) && player.chosenCard === move.card;
23
23
  case MoveType_1.default.Recycle:
24
24
  case MoveType_1.default.ReceiveCharacter:
25
25
  return !consecutiveActions.some(function (action) { return action.playerId === playerId; });
26
26
  case MoveType_1.default.SlateForConstruction:
27
- return !consecutiveActions.some(function (action) { return action.playerId === playerId && (TellYouAreReady_1.isTellYouAreReady(action.move) || ItsAWonderfulWorld_1.isPlaceItemOnCard(action.move, move.card)); });
27
+ return !consecutiveActions.some(function (action) { return action.playerId === playerId && ((0, TellYouAreReady_1.isTellYouAreReady)(action.move) || (0, ItsAWonderfulWorld_1.isPlaceItemOnCard)(action.move, move.card)); });
28
28
  case MoveType_1.default.PlaceResource:
29
- if (PlaceResource_1.isPlaceResourceOnConstruction(move)) {
29
+ if ((0, PlaceResource_1.isPlaceResourceOnConstruction)(move)) {
30
30
  if (actionCompletedCardConstruction(action, move.card)) {
31
- return !consecutiveActions.some(function (action) { return action.playerId === playerId && (TellYouAreReady_1.isTellYouAreReady(action.move) || ItsAWonderfulWorld_1.isPlaceItemOnCard(action.move)); });
31
+ return !consecutiveActions.some(function (action) { return action.playerId === playerId && ((0, TellYouAreReady_1.isTellYouAreReady)(action.move) || (0, ItsAWonderfulWorld_1.isPlaceItemOnCard)(action.move)); });
32
32
  }
33
33
  else {
34
- return !consecutiveActions.some(function (action) { return action.playerId === playerId && (actionCompletedCardConstruction(action, move.card) || (Recycle_1.isRecycle(action.move) && action.move.card === move.card)
35
- || (TellYouAreReady_1.isTellYouAreReady(action.move) && move.resource !== Resource_1.default.Krystallium)); });
34
+ return !consecutiveActions.some(function (action) { return action.playerId === playerId && (actionCompletedCardConstruction(action, move.card) || ((0, Recycle_1.isRecycle)(action.move) && action.move.card === move.card)
35
+ || ((0, TellYouAreReady_1.isTellYouAreReady)(action.move) && move.resource !== Resource_1.default.Krystallium)); });
36
36
  }
37
37
  }
38
38
  else {
39
- return !consecutiveActions.some(function (action) { return action.playerId === playerId && (TellYouAreReady_1.isTellYouAreReady(action.move)
40
- || (PlaceResource_1.isPlaceResourceOnConstruction(action.move) && action.move.resource === Resource_1.default.Krystallium)); });
39
+ return !consecutiveActions.some(function (action) { return action.playerId === playerId && ((0, TellYouAreReady_1.isTellYouAreReady)(action.move)
40
+ || ((0, PlaceResource_1.isPlaceResourceOnConstruction)(action.move) && action.move.resource === Resource_1.default.Krystallium)); });
41
41
  }
42
42
  case MoveType_1.default.PlaceCharacter:
43
43
  if (actionCompletedCardConstruction(action, move.card)) {
44
- return !consecutiveActions.some(function (action) { return action.playerId === playerId && (TellYouAreReady_1.isTellYouAreReady(action.move) || ItsAWonderfulWorld_1.isPlaceItemOnCard(action.move)); });
44
+ return !consecutiveActions.some(function (action) { return action.playerId === playerId && ((0, TellYouAreReady_1.isTellYouAreReady)(action.move) || (0, ItsAWonderfulWorld_1.isPlaceItemOnCard)(action.move)); });
45
45
  }
46
46
  else {
47
47
  return !consecutiveActions.some(function (action) { return actionCompletedCardConstruction(action, move.card); });
@@ -55,5 +55,5 @@ function canUndo(state, action, consecutiveActions) {
55
55
  }
56
56
  exports.default = canUndo;
57
57
  function actionCompletedCardConstruction(action, card) {
58
- return action.consequences.some(function (consequence) { return CompleteConstruction_1.isCompleteConstruction(consequence) && consequence.card === card; });
58
+ return action.consequences.some(function (consequence) { return (0, CompleteConstruction_1.isCompleteConstruction)(consequence) && consequence.card === card; });
59
59
  }
@@ -7,7 +7,7 @@ exports.totalCost = exports.isConstructionBonus = void 0;
7
7
  var Character_1 = require("./Character");
8
8
  var Resource_1 = __importDefault(require("./Resource"));
9
9
  function isConstructionBonus(item) {
10
- return Character_1.isCharacter(item) || item === Resource_1.default.Krystallium;
10
+ return (0, Character_1.isCharacter)(item) || item === Resource_1.default.Krystallium;
11
11
  }
12
12
  exports.isConstructionBonus = isConstructionBonus;
13
13
  function totalCost(development) {
@@ -659,16 +659,16 @@ exports.TreasureOfTheTemplars = {
659
659
  recyclingBonus: Gold
660
660
  };
661
661
  function createCopies(development) {
662
- return Array(Development_1.getDevelopmentDetails(development).numberOfCopies || 1).fill(development);
662
+ return Array((0, Development_1.getDevelopmentDetails)(development).numberOfCopies || 1).fill(development);
663
663
  }
664
664
  exports.developmentCards = Development_1.developments.flatMap(createCopies);
665
665
  exports.baseDevelopmentCardIds = Array.from(exports.developmentCards.map(Development_1.getDevelopmentDetails).filter(function (development) { return development.deck === DeckType_1.default.Default; }).keys());
666
666
  exports.ascensionDevelopmentCardIds = Array.from(exports.developmentCards.keys()).slice(exports.baseDevelopmentCardIds.length);
667
667
  function getCardType(card) {
668
- return Development_1.getDevelopmentDetails(exports.developmentCards[card]).deck;
668
+ return (0, Development_1.getDevelopmentDetails)(exports.developmentCards[card]).deck;
669
669
  }
670
670
  exports.getCardType = getCardType;
671
671
  function getCardDetails(card) {
672
- return Development_1.getDevelopmentDetails(exports.developmentCards[card]);
672
+ return (0, Development_1.getDevelopmentDetails)(exports.developmentCards[card]);
673
673
  }
674
674
  exports.getCardDetails = getCardDetails;
@@ -7,14 +7,16 @@ exports.isChosenDevelopmentCardVisible = exports.isChooseDevelopmentCard = expor
7
7
  var typeguards_1 = require("../typeguards");
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  var chooseDevelopmentCardMove = function (playerId, card) { return ({
10
- type: MoveType_1.default.ChooseDevelopmentCard, playerId: playerId, card: card
10
+ type: MoveType_1.default.ChooseDevelopmentCard,
11
+ playerId: playerId,
12
+ card: card
11
13
  }); };
12
14
  exports.chooseDevelopmentCardMove = chooseDevelopmentCardMove;
13
15
  function chooseDevelopmentCard(state, move) {
14
16
  var player = state.players.find(function (player) { return player.empire === move.playerId; });
15
17
  if (!player)
16
18
  return console.error('Cannot apply', move, 'on', state, ': player id is missing');
17
- if (typeguards_1.isPlayerView(player))
19
+ if ((0, typeguards_1.isPlayerView)(player))
18
20
  return console.error('Cannot apply', move, 'on', state, ': chosen card should be hidden to the other players');
19
21
  player.chosenCard = move.card;
20
22
  }
@@ -32,7 +34,7 @@ function chooseSecretDevelopmentCard(state, move) {
32
34
  var player = state.players.find(function (player) { return player.empire === move.playerId; });
33
35
  if (!player)
34
36
  return console.error('Cannot apply', move, 'on', state, ': player id is missing');
35
- if (!typeguards_1.isPlayerView(player))
37
+ if (!(0, typeguards_1.isPlayerView)(player))
36
38
  return console.error('Cannot apply', move, 'on', state, ': chosen card should not be hidden to the player choosing it');
37
39
  player.ready = true;
38
40
  }
@@ -18,7 +18,9 @@ exports.isCompleteConstruction = exports.completeConstruction = exports.complete
18
18
  var Developments_1 = require("../material/Developments");
19
19
  var MoveType_1 = __importDefault(require("./MoveType"));
20
20
  var completeConstructionMove = function (playerId, card) { return ({
21
- type: MoveType_1.default.CompleteConstruction, playerId: playerId, card: card
21
+ type: MoveType_1.default.CompleteConstruction,
22
+ playerId: playerId,
23
+ card: card
22
24
  }); };
23
25
  exports.completeConstructionMove = completeConstructionMove;
24
26
  function completeConstruction(state, move) {
@@ -28,7 +30,7 @@ function completeConstruction(state, move) {
28
30
  return console.error('Cannot apply', move, 'on', state, ': could not find player');
29
31
  player.constructionArea = player.constructionArea.filter(function (construction) { return construction.card !== move.card; });
30
32
  player.constructedDevelopments.push(move.card);
31
- var bonuses = Developments_1.getCardDetails(move.card).constructionBonus;
33
+ var bonuses = (0, Developments_1.getCardDetails)(move.card).constructionBonus;
32
34
  if (bonuses) {
33
35
  try {
34
36
  for (var bonuses_1 = __values(bonuses), bonuses_1_1 = bonuses_1.next(); !bonuses_1_1.done; bonuses_1_1 = bonuses_1.next()) {
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.concede = exports.concedeMove = void 0;
7
7
  var MoveType_1 = __importDefault(require("./MoveType"));
8
8
  var concedeMove = function (playerId) { return ({
9
- type: MoveType_1.default.Concede, playerId: playerId
9
+ type: MoveType_1.default.Concede,
10
+ playerId: playerId
10
11
  }); };
11
12
  exports.concedeMove = concedeMove;
12
13
  function concede(state, move) {
@@ -26,10 +26,14 @@ var __read = (this && this.__read) || function (o, n) {
26
26
  }
27
27
  return ar;
28
28
  };
29
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
30
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
31
- to[j] = from[i];
32
- return to;
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
33
37
  };
34
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
35
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -59,7 +63,7 @@ function dealDevelopmentCards(state) {
59
63
  var player = players_1_1.value;
60
64
  player.hand = state.deck.splice(0, cardsToDeal);
61
65
  if (state.ascensionDeck) {
62
- (_b = player.hand).push.apply(_b, __spreadArray([], __read(state.ascensionDeck.splice(0, ascensionCardsToDeal))));
66
+ (_b = player.hand).push.apply(_b, __spreadArray([], __read(state.ascensionDeck.splice(0, ascensionCardsToDeal)), false));
63
67
  }
64
68
  }
65
69
  }
@@ -84,7 +88,7 @@ function revealDealtDevelopmentCards(state, move) {
84
88
  if (state.ascensionDeck) {
85
89
  state.ascensionDeck -= ascensionCardsToDeal;
86
90
  }
87
- if (typeguards_1.isPlayer(player)) {
91
+ if ((0, typeguards_1.isPlayer)(player)) {
88
92
  if (!isDealDevelopmentCardsView(move))
89
93
  throw new Error('Players cards expected');
90
94
  player.hand = move.playerCards;
@@ -92,7 +96,7 @@ function revealDealtDevelopmentCards(state, move) {
92
96
  else {
93
97
  player.hiddenHand = Array(cardsToDeal).fill(DeckType_1.default.Default);
94
98
  if (state.ascensionDeck) {
95
- (_b = player.hiddenHand).push.apply(_b, __spreadArray([], __read(Array(ascensionCardsToDeal).fill(DeckType_1.default.Ascension))));
99
+ (_b = player.hiddenHand).push.apply(_b, __spreadArray([], __read(Array(ascensionCardsToDeal).fill(DeckType_1.default.Ascension)), false));
96
100
  }
97
101
  }
98
102
  }
@@ -143,7 +147,7 @@ function getDealDevelopmentCardsView(state, playerId) {
143
147
  var cardsToDeal = getIWWCardsToDeal(state, players.length);
144
148
  var playerCards = state.deck.slice(playerIndex * cardsToDeal, (playerIndex + 1) * cardsToDeal);
145
149
  if (state.ascensionDeck) {
146
- playerCards.push.apply(playerCards, __spreadArray([], __read(state.ascensionDeck.slice(playerIndex * ascensionCardsToDeal, (playerIndex + 1) * ascensionCardsToDeal))));
150
+ playerCards.push.apply(playerCards, __spreadArray([], __read(state.ascensionDeck.slice(playerIndex * ascensionCardsToDeal, (playerIndex + 1) * ascensionCardsToDeal)), false));
147
151
  }
148
152
  return { type: MoveType_1.default.DealDevelopmentCards, playerCards: playerCards };
149
153
  }
@@ -15,10 +15,14 @@ var __read = (this && this.__read) || function (o, n) {
15
15
  }
16
16
  return ar;
17
17
  };
18
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
19
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
20
- to[j] = from[i];
21
- return to;
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
22
26
  };
23
27
  var __importDefault = (this && this.__importDefault) || function (mod) {
24
28
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -31,21 +35,21 @@ exports.discardLeftOverCardsMove = { type: MoveType_1.default.DiscardLeftoverCar
31
35
  function discardLeftOverCards(state) {
32
36
  state.players.forEach(function (player) {
33
37
  var _a;
34
- return (_a = state.discard).push.apply(_a, __spreadArray([], __read(player.hand.splice(0))));
38
+ return (_a = state.discard).push.apply(_a, __spreadArray([], __read(player.hand.splice(0)), false));
35
39
  });
36
40
  }
37
41
  exports.discardLeftOverCards = discardLeftOverCards;
38
42
  function discardLeftOverCardsInView(state, move) {
39
43
  var _a;
40
44
  state.players.forEach(function (player) {
41
- if (typeguards_1.isPlayerView(player)) {
45
+ if ((0, typeguards_1.isPlayerView)(player)) {
42
46
  player.hiddenHand = [];
43
47
  }
44
48
  else {
45
49
  player.hand = [];
46
50
  }
47
51
  });
48
- (_a = state.discard).push.apply(_a, __spreadArray([], __read(move.discardedCards)));
52
+ (_a = state.discard).push.apply(_a, __spreadArray([], __read(move.discardedCards), false));
49
53
  }
50
54
  exports.discardLeftOverCardsInView = discardLeftOverCardsInView;
51
55
  function isDiscardLeftoverCardsView(move) {
@@ -23,9 +23,9 @@ function passCardsInView(state, move) {
23
23
  var draftDirection = state.round % 2 ? -1 : 1;
24
24
  for (var i = 0; i < players.length; i++) {
25
25
  var player = players[i];
26
- if (typeguards_1.isPlayerView(player)) {
26
+ if ((0, typeguards_1.isPlayerView)(player)) {
27
27
  var previousPlayer = players[(i + players.length + draftDirection) % players.length];
28
- player.hiddenHand = typeguards_1.isPlayer(previousPlayer) ? previousPlayer.cardsToPass.map(Developments_1.getCardType) : previousPlayer.cardsToPass;
28
+ player.hiddenHand = (0, typeguards_1.isPlayer)(previousPlayer) ? previousPlayer.cardsToPass.map(Developments_1.getCardType) : previousPlayer.cardsToPass;
29
29
  }
30
30
  else if (isPassCardsView(move)) {
31
31
  player.hand = move.receivedCards;
@@ -6,7 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isPlaceCharacter = exports.placeCharacter = exports.placeCharacterMove = void 0;
7
7
  var MoveType_1 = __importDefault(require("./MoveType"));
8
8
  var placeCharacterMove = function (playerId, character, card, space) { return ({
9
- type: MoveType_1.default.PlaceCharacter, playerId: playerId, character: character, card: card, space: space
9
+ type: MoveType_1.default.PlaceCharacter,
10
+ playerId: playerId,
11
+ character: character,
12
+ card: card,
13
+ space: space
10
14
  }); };
11
15
  exports.placeCharacterMove = placeCharacterMove;
12
16
  function placeCharacter(state, move) {
@@ -7,11 +7,17 @@ exports.isPlaceResourceOnConstruction = exports.placeResource = exports.isPlaceR
7
7
  var Resource_1 = __importDefault(require("../material/Resource"));
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  var placeResourceOnEmpireMove = function (playerId, resource) { return ({
10
- type: MoveType_1.default.PlaceResource, playerId: playerId, resource: resource
10
+ type: MoveType_1.default.PlaceResource,
11
+ playerId: playerId,
12
+ resource: resource
11
13
  }); };
12
14
  exports.placeResourceOnEmpireMove = placeResourceOnEmpireMove;
13
15
  var placeResourceOnConstructionMove = function (playerId, resource, card, space) { return ({
14
- type: MoveType_1.default.PlaceResource, playerId: playerId, resource: resource, card: card, space: space
16
+ type: MoveType_1.default.PlaceResource,
17
+ playerId: playerId,
18
+ resource: resource,
19
+ card: card,
20
+ space: space
15
21
  }); };
16
22
  exports.placeResourceOnConstructionMove = placeResourceOnConstructionMove;
17
23
  function isPlaceResource(move) {
@@ -38,7 +44,7 @@ function placeResource(state, move) {
38
44
  construction.costSpaces[move.space] = move.resource;
39
45
  }
40
46
  else {
41
- console.error('Could not find the construction to place a resource on!');
47
+ console.error("Expected " + move.card + " to be in construction, but player is in unexpected state: " + JSON.stringify(player));
42
48
  }
43
49
  }
44
50
  else {
@@ -45,10 +45,14 @@ var __read = (this && this.__read) || function (o, n) {
45
45
  }
46
46
  return ar;
47
47
  };
48
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
49
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
50
- to[j] = from[i];
51
- return to;
48
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
49
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
50
+ if (ar || !(i in from)) {
51
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
52
+ ar[i] = from[i];
53
+ }
54
+ }
55
+ return to.concat(ar || Array.prototype.slice.call(from));
52
56
  };
53
57
  var __importDefault = (this && this.__importDefault) || function (mod) {
54
58
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -68,7 +72,7 @@ function produce(state, move) {
68
72
  try {
69
73
  for (var _d = __values(state.players), _e = _d.next(); !_e.done; _e = _d.next()) {
70
74
  var player = _e.value;
71
- var production = Production_1.getProduction(player, move.resource);
75
+ var production = (0, Production_1.getProduction)(player, move.resource);
72
76
  player.availableResources = new Array(production).fill(move.resource);
73
77
  player.ready = false;
74
78
  if (production > 0) {
@@ -104,7 +108,7 @@ function produce(state, move) {
104
108
  var rank = rankPlayersProduction_1_1.value;
105
109
  if (supremacyPlayers.length + rank.players.length > supremacySeats)
106
110
  break;
107
- supremacyPlayers.push.apply(supremacyPlayers, __spreadArray([], __read(rank.players)));
111
+ supremacyPlayers.push.apply(supremacyPlayers, __spreadArray([], __read(rank.players), false));
108
112
  }
109
113
  }
110
114
  catch (e_2_1) { e_2 = { error: e_2_1 }; }
@@ -7,7 +7,9 @@ exports.isReceiveCharacter = exports.receiveCharacter = exports.receiveCharacter
7
7
  var Character_1 = require("../material/Character");
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  var receiveCharacterMove = function (playerId, character) { return ({
10
- type: MoveType_1.default.ReceiveCharacter, playerId: playerId, character: character
10
+ type: MoveType_1.default.ReceiveCharacter,
11
+ playerId: playerId,
12
+ character: character
11
13
  }); };
12
14
  exports.receiveCharacterMove = receiveCharacterMove;
13
15
  function receiveCharacter(state, move) {
@@ -7,7 +7,9 @@ exports.isRecycle = exports.recycle = exports.recycleMove = void 0;
7
7
  var Developments_1 = require("../material/Developments");
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  var recycleMove = function (playerId, card) { return ({
10
- type: MoveType_1.default.Recycle, playerId: playerId, card: card
10
+ type: MoveType_1.default.Recycle,
11
+ playerId: playerId,
12
+ card: card
11
13
  }); };
12
14
  exports.recycleMove = recycleMove;
13
15
  function recycle(state, move) {
@@ -15,7 +17,7 @@ function recycle(state, move) {
15
17
  if (!player)
16
18
  return console.error('Cannot apply', move, 'on', state, ': could not find player');
17
19
  var indexInDraftArea = player.draftArea.findIndex(function (card) { return card === move.card; });
18
- var development = Developments_1.getCardDetails(move.card);
20
+ var development = (0, Developments_1.getCardDetails)(move.card);
19
21
  if (indexInDraftArea !== -1) {
20
22
  player.draftArea.splice(indexInDraftArea, 1);
21
23
  player.availableResources.push(development.recyclingBonus);
@@ -28,16 +28,16 @@ function revealChosenCardsInView(state, move) {
28
28
  if (!revealedCard || revealedCard.card === undefined)
29
29
  return;
30
30
  player.draftArea.push(revealedCard.card);
31
- if (typeguards_1.isPlayer(player)) {
31
+ if ((0, typeguards_1.isPlayer)(player)) {
32
32
  player.hand = player.hand.filter(function (card) { return card !== revealedCard.card; });
33
33
  delete player.chosenCard;
34
34
  }
35
35
  else {
36
- player.hiddenHand.splice(player.hiddenHand.indexOf(Developments_1.getCardDetails(revealedCard.card).deck), 1);
36
+ player.hiddenHand.splice(player.hiddenHand.indexOf((0, Developments_1.getCardDetails)(revealedCard.card).deck), 1);
37
37
  player.ready = false;
38
38
  }
39
39
  if (player.draftArea.length < ItsAWonderfulWorld_1.numberOfCardsToDraft) {
40
- player.cardsToPass = typeguards_1.isPlayerView(player) ? player.hiddenHand : player.hand;
40
+ player.cardsToPass = (0, typeguards_1.isPlayerView)(player) ? player.hiddenHand : player.hand;
41
41
  }
42
42
  });
43
43
  }
@@ -8,7 +8,9 @@ var DevelopmentDetails_1 = require("../material/DevelopmentDetails");
8
8
  var Developments_1 = require("../material/Developments");
9
9
  var MoveType_1 = __importDefault(require("./MoveType"));
10
10
  var slateForConstructionMove = function (playerId, card) { return ({
11
- type: MoveType_1.default.SlateForConstruction, playerId: playerId, card: card
11
+ type: MoveType_1.default.SlateForConstruction,
12
+ playerId: playerId,
13
+ card: card
12
14
  }); };
13
15
  exports.slateForConstructionMove = slateForConstructionMove;
14
16
  function slateForConstruction(state, move) {
@@ -16,7 +18,7 @@ function slateForConstruction(state, move) {
16
18
  if (!player)
17
19
  return console.error('Cannot apply', move, 'on', state, ': could not find player');
18
20
  player.draftArea = player.draftArea.filter(function (card) { return card !== move.card; });
19
- player.constructionArea.push({ card: move.card, costSpaces: Array(DevelopmentDetails_1.totalCost(Developments_1.getCardDetails(move.card))).fill(null) });
21
+ player.constructionArea.push({ card: move.card, costSpaces: Array((0, DevelopmentDetails_1.totalCost)((0, Developments_1.getCardDetails)(move.card))).fill(null) });
20
22
  }
21
23
  exports.slateForConstruction = slateForConstruction;
22
24
  function isSlateForConstruction(move) {
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __values = (this && this.__values) || function(o) {
3
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4
+ if (m) return m.call(o);
5
+ if (o && typeof o.length === "number") return {
6
+ next: function () {
7
+ if (o && i >= o.length) o = void 0;
8
+ return { value: o && o[i++], done: !o };
9
+ }
10
+ };
11
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
12
+ };
2
13
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
14
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
15
  };
@@ -7,12 +18,26 @@ exports.startPhase = exports.startPhaseMove = void 0;
7
18
  var Phase_1 = __importDefault(require("../Phase"));
8
19
  var MoveType_1 = __importDefault(require("./MoveType"));
9
20
  var startPhaseMove = function (phase) { return ({
10
- type: MoveType_1.default.StartPhase, phase: phase
21
+ type: MoveType_1.default.StartPhase,
22
+ phase: phase
11
23
  }); };
12
24
  exports.startPhaseMove = startPhaseMove;
13
25
  function startPhase(state, move) {
26
+ var e_1, _a;
14
27
  state.phase = move.phase;
15
- state.players.forEach(function (player) { return player.ready = false; });
28
+ try {
29
+ for (var _b = __values(state.players), _c = _b.next(); !_c.done; _c = _b.next()) {
30
+ var player = _c.value;
31
+ player.ready = false;
32
+ }
33
+ }
34
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
35
+ finally {
36
+ try {
37
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
38
+ }
39
+ finally { if (e_1) throw e_1.error; }
40
+ }
16
41
  if (move.phase === Phase_1.default.Draft) {
17
42
  delete state.productionStep;
18
43
  state.round++;
@@ -6,7 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.isTellYouAreReady = exports.tellYouAreReady = exports.tellYouAreReadyMove = void 0;
7
7
  var MoveType_1 = __importDefault(require("./MoveType"));
8
8
  var tellYouAreReadyMove = function (playerId) { return ({
9
- type: MoveType_1.default.TellYouAreReady, playerId: playerId
9
+ type: MoveType_1.default.TellYouAreReady,
10
+ playerId: playerId
10
11
  }); };
11
12
  exports.tellYouAreReadyMove = tellYouAreReadyMove;
12
13
  function tellYouAreReady(state, move) {
@@ -7,7 +7,8 @@ exports.transformIntoKrystallium = exports.transformIntoKrystalliumMove = void 0
7
7
  var Resource_1 = __importDefault(require("../material/Resource"));
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  var transformIntoKrystalliumMove = function (playerId) { return ({
10
- type: MoveType_1.default.TransformIntoKrystallium, playerId: playerId
10
+ type: MoveType_1.default.TransformIntoKrystallium,
11
+ playerId: playerId
11
12
  }); };
12
13
  exports.transformIntoKrystalliumMove = transformIntoKrystalliumMove;
13
14
  function transformIntoKrystallium(state, move) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/its-a-wonderful-world",
3
- "version": "2.2.3",
3
+ "version": "2.4.1",
4
4
  "description": "It's a Wonderful World rules for Game Park",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,15 +12,13 @@
12
12
  "publishConfig": {
13
13
  "access": "public"
14
14
  },
15
- "dependencies": {
16
- "@gamepark/rules-api": "~5.2.1"
15
+ "peerDependencies": {
16
+ "@gamepark/rules-api": "~5.11.2",
17
+ "lodash.shuffle": "^4.2.0"
17
18
  },
18
19
  "scripts": {
19
20
  "build": "tsc",
20
21
  "prepublishOnly": "tsc"
21
22
  },
22
- "devDependencies": {
23
- "i18next": "^20.2.4"
24
- },
25
- "gitHead": "67cb0c3d5348a2b80ccc973782e965ebe15f3604"
23
+ "gitHead": "b1022b426ce7225753998245be8f95519022625a"
26
24
  }