@gamepark/its-a-wonderful-world 1.4.0 → 1.7.0

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.
@@ -19,7 +19,7 @@ export declare const numberOfRounds = 4;
19
19
  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> {
20
20
  constructor(state: GameState);
21
21
  constructor(options: ItsAWonderfulWorldOptions);
22
- isActive(playerId: EmpireName): boolean;
22
+ isTurnToPlay(playerId: EmpireName): boolean;
23
23
  isOver(): boolean;
24
24
  getAutomaticMove(): Move | void;
25
25
  getLegalMoves(empire: EmpireName): Move[];
@@ -123,7 +123,6 @@ var TransformIntoKrystallium_1 = require("./moves/TransformIntoKrystallium");
123
123
  var Options_1 = require("./Options");
124
124
  var Phase_1 = __importDefault(require("./Phase"));
125
125
  exports.numberOfCardsToDraft = 7;
126
- var numberOfCardsDeal2Players = 10;
127
126
  exports.numberOfRounds = 4;
128
127
  var defaultEmpireCardsSide = EmpireSide_1.default.A;
129
128
  var ItsAWonderfulWorld = (function (_super) {
@@ -144,7 +143,7 @@ var ItsAWonderfulWorld = (function (_super) {
144
143
  }
145
144
  return _this;
146
145
  }
147
- ItsAWonderfulWorld.prototype.isActive = function (playerId) {
146
+ ItsAWonderfulWorld.prototype.isTurnToPlay = function (playerId) {
148
147
  var player = this.state.players.find(function (player) { return player.empire === playerId; });
149
148
  if (!player)
150
149
  return false;
@@ -311,7 +310,7 @@ var ItsAWonderfulWorld = (function (_super) {
311
310
  ItsAWonderfulWorld.prototype.getMoveView = function (move, playerId) {
312
311
  switch (move.type) {
313
312
  case MoveType_1.default.DealDevelopmentCards:
314
- return playerId ? __assign(__assign({}, move), { playerCards: this.state.players.find(function (player) { return player.empire === playerId; }).hand }) : move;
313
+ return playerId ? DealDevelopmentCards_1.getDealDevelopmentCardsView(this.state, playerId) : move;
315
314
  case MoveType_1.default.ChooseDevelopmentCard:
316
315
  if (playerId !== move.playerId) {
317
316
  var card = move.card, moveView = __rest(move, ["card"]);
@@ -319,14 +318,11 @@ var ItsAWonderfulWorld = (function (_super) {
319
318
  }
320
319
  break;
321
320
  case MoveType_1.default.RevealChosenCards:
322
- return __assign(__assign({}, move), { revealedCards: this.state.players.reduce(function (revealedCards, player) {
323
- revealedCards[player.empire] = player.draftArea[player.draftArea.length - 1];
324
- return revealedCards;
325
- }, {}) });
321
+ return RevealChosenCards_1.getRevealChosenCardsView(this.state);
326
322
  case MoveType_1.default.PassCards:
327
- return __assign(__assign({}, move), { receivedCards: playerId ? this.state.players.find(function (player) { return player.empire === playerId; }).hand : undefined });
323
+ return playerId ? PassCards_1.getPassCardsView(this.state, playerId) : move;
328
324
  case MoveType_1.default.DiscardLeftoverCards:
329
- return __assign(__assign({}, move), { discardedCards: this.state.discard.slice((exports.numberOfCardsToDraft - numberOfCardsDeal2Players) * this.state.players.length) });
325
+ return DiscardLeftoverCards_1.getDiscardLeftoverCardsView(this.state);
330
326
  }
331
327
  return move;
332
328
  };
@@ -361,8 +357,11 @@ function setupPlayers(options) {
361
357
  exports.setupPlayers = setupPlayers;
362
358
  function setupPlayer(empire, empireSide) {
363
359
  var _a;
360
+ var _b;
361
+ if (empireSide === void 0) { empireSide = defaultEmpireCardsSide; }
364
362
  return {
365
- empire: empire, empireSide: empireSide || defaultEmpireCardsSide, hand: [], draftArea: [], constructionArea: [], availableResources: [], empireCardResources: [],
363
+ empire: empire, empireSide: empireSide, hand: [], draftArea: [], constructionArea: [], availableResources: [],
364
+ empireCardResources: Array((_b = Empires_1.default[empire][empireSide].krystallium) !== null && _b !== void 0 ? _b : 0).fill(Resource_1.default.Krystallium),
366
365
  constructedDevelopments: [], ready: false, characters: (_a = {}, _a[Character_1.default.Financier] = 0, _a[Character_1.default.General] = 0, _a), bonuses: []
367
366
  };
368
367
  }
package/dist/Options.d.ts CHANGED
@@ -8,7 +8,6 @@ export declare type ItsAWonderfulWorldOptions = {
8
8
  id: EmpireName;
9
9
  }[];
10
10
  empiresSide: EmpireSide;
11
- corruptionAndAscension: boolean;
12
11
  };
13
12
  export declare function isGameOptions(arg: GameState | ItsAWonderfulWorldOptions): arg is ItsAWonderfulWorldOptions;
14
13
  export declare const ItsAWonderfulWorldOptionsSpec: OptionsSpec<ItsAWonderfulWorldOptions>;
package/dist/Options.js CHANGED
@@ -15,16 +15,18 @@ exports.ItsAWonderfulWorldOptionsSpec = {
15
15
  id: {
16
16
  label: function (t) { return t('Empire'); },
17
17
  values: Object.values(EmpireName_1.default),
18
- valueLabel: getPlayerName
18
+ valueSpec: function (empire) { return ({ label: function (t) { return getPlayerName(empire, t); } }); }
19
19
  }
20
20
  },
21
21
  empiresSide: {
22
22
  label: function (t) { return t('Empire cards side'); },
23
23
  values: Object.values(EmpireSide_1.default),
24
- valueLabel: function (side, t) { return t('Side {side}', { side: side }); }
25
- },
26
- corruptionAndAscension: {
27
- label: function (t) { return t('Corruption & Ascension'); }
24
+ valueSpec: function (side) { return ({
25
+ label: function (t) { return t('Side {side}', { side: side }); },
26
+ help: function (t) { return getEmpireSideHelp(side, t); },
27
+ warn: function (t) { return side === EmpireSide_1.default.A ? t('Side A is advised for beginners') : ''; },
28
+ subscriberRequired: side !== EmpireSide_1.default.A && side !== EmpireSide_1.default.B
29
+ }); }
28
30
  }
29
31
  };
30
32
  function getPlayerName(empire, t) {
@@ -42,3 +44,15 @@ function getPlayerName(empire, t) {
42
44
  }
43
45
  }
44
46
  exports.getPlayerName = getPlayerName;
47
+ function getEmpireSideHelp(side, t) {
48
+ switch (side) {
49
+ case EmpireSide_1.default.A:
50
+ return t('sideA.help');
51
+ case EmpireSide_1.default.B:
52
+ return t('sideB.help');
53
+ case EmpireSide_1.default.C:
54
+ return t('sideC.help');
55
+ case EmpireSide_1.default.D:
56
+ return t('sideD.help');
57
+ }
58
+ }
@@ -0,0 +1,15 @@
1
+ import DevelopmentType from './material/DevelopmentType';
2
+ import Resource from './material/Resource';
3
+ import Player from './Player';
4
+ import PlayerView from './PlayerView';
5
+ declare type ProductionFactor = {
6
+ resource: Resource;
7
+ factor: DevelopmentType;
8
+ };
9
+ declare type Production = Resource | {
10
+ [key in Resource]?: number;
11
+ } | ProductionFactor;
12
+ export default Production;
13
+ export declare function isProductionFactor(production: Production): production is ProductionFactor;
14
+ export declare function getProductionAndCorruption(player: Player | PlayerView, resource: Resource): number;
15
+ export declare function getProduction(player: Player | PlayerView, resource: Resource): number;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getProduction = exports.getProductionAndCorruption = exports.isProductionFactor = void 0;
7
+ var Developments_1 = require("./material/Developments");
8
+ var Empires_1 = __importDefault(require("./material/Empires"));
9
+ var Resource_1 = require("./material/Resource");
10
+ function isProductionFactor(production) {
11
+ var productionFactor = production;
12
+ return productionFactor.resource !== undefined && productionFactor.factor !== undefined;
13
+ }
14
+ exports.isProductionFactor = isProductionFactor;
15
+ function getProductionAndCorruption(player, resource) {
16
+ var developmentsProduction = player.constructedDevelopments.reduce(function (sum, card) {
17
+ return sum + getResourceProduction(player, resource, (0, Developments_1.getCardDetails)(card).production);
18
+ }, 0);
19
+ return getEmpireProduction(player, resource) + developmentsProduction;
20
+ }
21
+ exports.getProductionAndCorruption = getProductionAndCorruption;
22
+ function getProduction(player, resource) {
23
+ return Math.max(0, getProductionAndCorruption(player, resource));
24
+ }
25
+ exports.getProduction = getProduction;
26
+ function getEmpireProduction(player, resource) {
27
+ return getResourceProduction(player, resource, Empires_1.default[player.empire][player.empireSide].production);
28
+ }
29
+ function getResourceProduction(player, resource, production) {
30
+ var _a;
31
+ if (!production) {
32
+ return 0;
33
+ }
34
+ if ((0, Resource_1.isResource)(production)) {
35
+ return production === resource ? 1 : 0;
36
+ }
37
+ if (!isProductionFactor(production)) {
38
+ return (_a = production[resource]) !== null && _a !== void 0 ? _a : 0;
39
+ }
40
+ if (production.resource === resource) {
41
+ return player.constructedDevelopments.reduce(function (sum, card) { return (0, Developments_1.getCardDetails)(card).type === production.factor ? sum + 1 : sum; }, 0);
42
+ }
43
+ return 0;
44
+ }
@@ -0,0 +1,26 @@
1
+ import Character from './material/Character';
2
+ import DevelopmentType from './material/DevelopmentType';
3
+ import Player from './Player';
4
+ import PlayerView from './PlayerView';
5
+ export declare type ScoreMultiplier = DevelopmentType | Character;
6
+ export declare type ComboVictoryPoints = {
7
+ quantity: number;
8
+ per: ScoreMultiplier | ScoreMultiplier[];
9
+ };
10
+ export declare type VictoryPoints = number | ComboVictoryPoints;
11
+ export declare type ScoringDetails = {
12
+ flatVictoryPoints: number;
13
+ scoreMultipliers: {
14
+ [key in ScoreMultiplier]: number;
15
+ };
16
+ comboVictoryPoints: ComboVictoryPoints[];
17
+ };
18
+ export declare function getPlayerScore(player: Player | PlayerView): number;
19
+ export declare function getScoringDetails(player: Player | PlayerView, ignoreBaseCharacterValue?: boolean): ScoringDetails;
20
+ export declare function getScoreFromScoringDetails(scoringDetails: ScoringDetails): number;
21
+ export declare function getComboValue(combo: ComboVictoryPoints, scoreMultipliers: {
22
+ [key in ScoreMultiplier]: number;
23
+ }): number;
24
+ export declare function getComboMultiplier(combo: ComboVictoryPoints, scoreMultipliers: {
25
+ [key in ScoreMultiplier]: number;
26
+ }): number;
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __values = (this && this.__values) || function(o) {
14
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
15
+ if (m) return m.call(o);
16
+ if (o && typeof o.length === "number") return {
17
+ next: function () {
18
+ if (o && i >= o.length) o = void 0;
19
+ return { value: o && o[i++], done: !o };
20
+ }
21
+ };
22
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
23
+ };
24
+ var __read = (this && this.__read) || function (o, n) {
25
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
26
+ if (!m) return o;
27
+ var i = m.call(o), r, ar = [], e;
28
+ try {
29
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
+ }
31
+ catch (error) { e = { error: error }; }
32
+ finally {
33
+ try {
34
+ if (r && !r.done && (m = i["return"])) m.call(i);
35
+ }
36
+ finally { if (e) throw e.error; }
37
+ }
38
+ return ar;
39
+ };
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));
48
+ };
49
+ var __importDefault = (this && this.__importDefault) || function (mod) {
50
+ return (mod && mod.__esModule) ? mod : { "default": mod };
51
+ };
52
+ Object.defineProperty(exports, "__esModule", { value: true });
53
+ exports.getComboMultiplier = exports.getComboValue = exports.getScoreFromScoringDetails = exports.getScoringDetails = exports.getPlayerScore = void 0;
54
+ var Character_1 = __importDefault(require("./material/Character"));
55
+ var Developments_1 = require("./material/Developments");
56
+ var DevelopmentType_1 = __importDefault(require("./material/DevelopmentType"));
57
+ var Empires_1 = __importDefault(require("./material/Empires"));
58
+ function getPlayerScore(player) {
59
+ var scoringDetails = getScoringDetails(player);
60
+ return getScoreFromScoringDetails(scoringDetails);
61
+ }
62
+ exports.getPlayerScore = getPlayerScore;
63
+ function getScoringDetails(player, ignoreBaseCharacterValue) {
64
+ var _a, e_1, _b;
65
+ if (ignoreBaseCharacterValue === void 0) { ignoreBaseCharacterValue = false; }
66
+ var scoringDetails = {
67
+ flatVictoryPoints: 0,
68
+ scoreMultipliers: (_a = {},
69
+ _a[DevelopmentType_1.default.Structure] = 0,
70
+ _a[DevelopmentType_1.default.Vehicle] = 0,
71
+ _a[DevelopmentType_1.default.Research] = 0,
72
+ _a[DevelopmentType_1.default.Project] = 0,
73
+ _a[DevelopmentType_1.default.Discovery] = 0,
74
+ _a[Character_1.default.Financier] = player.characters[Character_1.default.Financier],
75
+ _a[Character_1.default.General] = player.characters[Character_1.default.General],
76
+ _a),
77
+ comboVictoryPoints: ignoreBaseCharacterValue ? [] : [{ quantity: 1, per: Character_1.default.Financier }, { quantity: 1, per: Character_1.default.General }]
78
+ };
79
+ var empireScoring = Empires_1.default[player.empire][player.empireSide].victoryPoints;
80
+ if (empireScoring) {
81
+ var existingCombo = scoringDetails.comboVictoryPoints.find(function (combo) { return isSameCombo(combo, empireScoring); });
82
+ if (existingCombo) {
83
+ existingCombo.quantity += empireScoring.quantity;
84
+ }
85
+ else {
86
+ scoringDetails.comboVictoryPoints.push(__assign({}, empireScoring));
87
+ }
88
+ }
89
+ var _loop_1 = function (constructedDevelopment) {
90
+ var development = (0, Developments_1.getCardDetails)(constructedDevelopment);
91
+ scoringDetails.scoreMultipliers[development.type]++;
92
+ if (typeof development.victoryPoints === 'number') {
93
+ scoringDetails.flatVictoryPoints += development.victoryPoints;
94
+ }
95
+ else if (development.victoryPoints) {
96
+ var newCombo_1 = development.victoryPoints;
97
+ var existingCombo = scoringDetails.comboVictoryPoints.find(function (combo) { return isSameCombo(combo, newCombo_1); });
98
+ if (existingCombo) {
99
+ existingCombo.quantity += newCombo_1.quantity;
100
+ }
101
+ else {
102
+ scoringDetails.comboVictoryPoints.push(__assign({}, newCombo_1));
103
+ }
104
+ }
105
+ };
106
+ try {
107
+ for (var _c = __values(player.constructedDevelopments), _d = _c.next(); !_d.done; _d = _c.next()) {
108
+ var constructedDevelopment = _d.value;
109
+ _loop_1(constructedDevelopment);
110
+ }
111
+ }
112
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
113
+ finally {
114
+ try {
115
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
116
+ }
117
+ finally { if (e_1) throw e_1.error; }
118
+ }
119
+ return scoringDetails;
120
+ }
121
+ exports.getScoringDetails = getScoringDetails;
122
+ function getScoreFromScoringDetails(scoringDetails) {
123
+ return scoringDetails.flatVictoryPoints + scoringDetails.comboVictoryPoints.reduce(function (sum, combo) { return sum + getComboValue(combo, scoringDetails.scoreMultipliers); }, 0);
124
+ }
125
+ exports.getScoreFromScoringDetails = getScoreFromScoringDetails;
126
+ function isSameCombo(combo, newCombo) {
127
+ if (combo.per === newCombo.per)
128
+ return true;
129
+ if (Array.isArray(combo.per) && Array.isArray(newCombo.per)) {
130
+ var combos_1 = combo.per;
131
+ var newCombos = newCombo.per;
132
+ return combos_1.length === newCombos.length && newCombos.every(function (v) { return combos_1.includes(v); });
133
+ }
134
+ return false;
135
+ }
136
+ function getComboValue(combo, scoreMultipliers) {
137
+ return combo.quantity * getComboMultiplier(combo, scoreMultipliers);
138
+ }
139
+ exports.getComboValue = getComboValue;
140
+ function getComboMultiplier(combo, scoreMultipliers) {
141
+ if (Array.isArray(combo.per)) {
142
+ return Math.min.apply(Math, __spreadArray([], __read(combo.per.map(function (scoreMultiplier) { return scoreMultipliers[scoreMultiplier]; })), false));
143
+ }
144
+ else {
145
+ return scoreMultipliers[combo.per];
146
+ }
147
+ }
148
+ exports.getComboMultiplier = getComboMultiplier;
@@ -0,0 +1,40 @@
1
+ import DevelopmentDetails from './DevelopmentDetails';
2
+ export declare const BorderPatrol: DevelopmentDetails;
3
+ export declare const KrystalliumPowerPlant: DevelopmentDetails;
4
+ export declare const RobotFactory: DevelopmentDetails;
5
+ export declare const GoldMine: DevelopmentDetails;
6
+ export declare const SecretBase: DevelopmentDetails;
7
+ export declare const LawlessZone: DevelopmentDetails;
8
+ export declare const OccultDistrict: DevelopmentDetails;
9
+ export declare const OffshoreLaboratory: DevelopmentDetails;
10
+ export declare const FloatingPalace: DevelopmentDetails;
11
+ export declare const GiantRobot: DevelopmentDetails;
12
+ export declare const ArmoredConvoy: DevelopmentDetails;
13
+ export declare const MobileBase: DevelopmentDetails;
14
+ export declare const Inquisitors: DevelopmentDetails;
15
+ export declare const Raiders: DevelopmentDetails;
16
+ export declare const PlanetaryArchives: DevelopmentDetails;
17
+ export declare const Telekinesis: DevelopmentDetails;
18
+ export declare const ArtificialIntelligence: DevelopmentDetails;
19
+ export declare const DarkMatter: DevelopmentDetails;
20
+ export declare const ArtificialSun: DevelopmentDetails;
21
+ export declare const Immortality: DevelopmentDetails;
22
+ export declare const Utopia: DevelopmentDetails;
23
+ export declare const TaxHaven: DevelopmentDetails;
24
+ export declare const CelestialCathedral: DevelopmentDetails;
25
+ export declare const IntercontinentalNetwork: DevelopmentDetails;
26
+ export declare const HighSecurityPrison: DevelopmentDetails;
27
+ export declare const OrbitalStation: DevelopmentDetails;
28
+ export declare const WorldBank: DevelopmentDetails;
29
+ export declare const LuxuryClinic: DevelopmentDetails;
30
+ export declare const TheWall: DevelopmentDetails;
31
+ export declare const Consortium: DevelopmentDetails;
32
+ export declare const MiningAsteroid: DevelopmentDetails;
33
+ export declare const Hyperborea: DevelopmentDetails;
34
+ export declare const Valhalla: DevelopmentDetails;
35
+ export declare const MysteriousVessel: DevelopmentDetails;
36
+ export declare const Pandemonium: DevelopmentDetails;
37
+ export declare const PandoraBox: DevelopmentDetails;
38
+ export declare const AlphaCentauri: DevelopmentDetails;
39
+ export declare const Shambhala: DevelopmentDetails;
40
+ export declare const ascensionDevelopments: DevelopmentDetails[];
@@ -0,0 +1,318 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ascensionDevelopments = exports.Shambhala = exports.AlphaCentauri = exports.PandoraBox = exports.Pandemonium = exports.MysteriousVessel = exports.Valhalla = exports.Hyperborea = exports.MiningAsteroid = exports.Consortium = exports.TheWall = exports.LuxuryClinic = exports.WorldBank = exports.OrbitalStation = exports.HighSecurityPrison = exports.IntercontinentalNetwork = exports.CelestialCathedral = exports.TaxHaven = exports.Utopia = exports.Immortality = exports.ArtificialSun = exports.DarkMatter = exports.ArtificialIntelligence = exports.Telekinesis = exports.PlanetaryArchives = exports.Raiders = exports.Inquisitors = exports.MobileBase = exports.ArmoredConvoy = exports.GiantRobot = exports.FloatingPalace = exports.OffshoreLaboratory = exports.OccultDistrict = exports.LawlessZone = exports.SecretBase = exports.GoldMine = exports.RobotFactory = exports.KrystalliumPowerPlant = exports.BorderPatrol = void 0;
8
+ var Character_1 = __importDefault(require("./Character"));
9
+ var DeckType_1 = __importDefault(require("./DeckType"));
10
+ var DevelopmentType_1 = __importDefault(require("./DevelopmentType"));
11
+ var Resource_1 = __importDefault(require("./Resource"));
12
+ var Energy = Resource_1.default.Energy, Materials = Resource_1.default.Materials, Science = Resource_1.default.Science, Gold = Resource_1.default.Gold, Exploration = Resource_1.default.Exploration, Krystallium = Resource_1.default.Krystallium;
13
+ var Structure = DevelopmentType_1.default.Structure, Vehicle = DevelopmentType_1.default.Vehicle, Research = DevelopmentType_1.default.Research, Project = DevelopmentType_1.default.Project, Discovery = DevelopmentType_1.default.Discovery;
14
+ var Financier = Character_1.default.Financier, General = Character_1.default.General;
15
+ exports.BorderPatrol = {
16
+ deck: DeckType_1.default.Ascension,
17
+ type: Structure,
18
+ constructionCost: (_a = {}, _a[Materials] = 2, _a),
19
+ constructionBonus: [General],
20
+ production: (_b = {}, _b[Gold] = 1, _b[Exploration] = -1, _b),
21
+ recyclingBonus: Exploration,
22
+ numberOfCopies: 3
23
+ };
24
+ exports.KrystalliumPowerPlant = {
25
+ deck: DeckType_1.default.Ascension,
26
+ type: Structure,
27
+ constructionCost: (_c = {}, _c[Materials] = 1, _c[Science] = 2, _c[Krystallium] = 1, _c),
28
+ production: (_d = {}, _d[Materials] = 3, _d[Energy] = 3, _d),
29
+ recyclingBonus: Science
30
+ };
31
+ exports.RobotFactory = {
32
+ deck: DeckType_1.default.Ascension,
33
+ type: Structure,
34
+ constructionCost: (_e = {}, _e[Materials] = 2, _e[Science] = 2, _e),
35
+ production: (_f = {}, _f[Materials] = -1, _f[Energy] = 2, _f[Science] = 2, _f),
36
+ recyclingBonus: Materials,
37
+ numberOfCopies: 2
38
+ };
39
+ exports.GoldMine = {
40
+ deck: DeckType_1.default.Ascension,
41
+ type: Structure,
42
+ constructionCost: (_g = {}, _g[Materials] = 3, _g[Energy] = 1, _g[Exploration] = 1, _g),
43
+ production: (_h = {}, _h[Gold] = 3, _h),
44
+ recyclingBonus: Gold,
45
+ numberOfCopies: 2
46
+ };
47
+ exports.SecretBase = {
48
+ deck: DeckType_1.default.Ascension,
49
+ type: Structure,
50
+ constructionCost: (_j = {}, _j[Materials] = 4, _j[Energy] = 1, _j[Science] = 1, _j),
51
+ constructionBonus: [General],
52
+ production: (_k = {}, _k[Energy] = -1, _k[Exploration] = 3, _k),
53
+ recyclingBonus: Exploration,
54
+ numberOfCopies: 2
55
+ };
56
+ exports.LawlessZone = {
57
+ deck: DeckType_1.default.Ascension,
58
+ type: Structure,
59
+ constructionCost: (_l = {}, _l[Materials] = 2, _l),
60
+ production: (_m = {}, _m[Materials] = 1, _m[Energy] = 1, _m[Gold] = -1, _m),
61
+ recyclingBonus: Materials,
62
+ numberOfCopies: 3
63
+ };
64
+ exports.OccultDistrict = {
65
+ deck: DeckType_1.default.Ascension,
66
+ type: Structure,
67
+ constructionCost: (_o = {}, _o[Materials] = 1, _o),
68
+ constructionBonus: [Krystallium],
69
+ production: (_p = {}, _p[Materials] = 1, _p[Science] = -1, _p),
70
+ recyclingBonus: Materials,
71
+ numberOfCopies: 3
72
+ };
73
+ exports.OffshoreLaboratory = {
74
+ deck: DeckType_1.default.Ascension,
75
+ type: Structure,
76
+ constructionCost: (_q = {}, _q[Materials] = 2, _q[Gold] = 1, _q),
77
+ constructionBonus: [Financier],
78
+ production: (_r = {}, _r[Energy] = -1, _r[Science] = 1, _r[Gold] = 1, _r),
79
+ recyclingBonus: Energy,
80
+ numberOfCopies: 3
81
+ };
82
+ exports.FloatingPalace = {
83
+ deck: DeckType_1.default.Ascension,
84
+ type: Vehicle,
85
+ constructionCost: (_s = {}, _s[Energy] = 2, _s[Science] = 1, _s[Gold] = 2, _s[General] = 1, _s),
86
+ production: (_t = {}, _t[Energy] = 2, _t),
87
+ victoryPoints: { quantity: 2, per: Vehicle },
88
+ recyclingBonus: Energy
89
+ };
90
+ exports.GiantRobot = {
91
+ deck: DeckType_1.default.Ascension,
92
+ type: Vehicle,
93
+ constructionCost: (_u = {}, _u[Materials] = 3, _u[Energy] = 5, _u[Science] = 2, _u[Krystallium] = 1, _u),
94
+ constructionBonus: [General, General],
95
+ victoryPoints: { quantity: 6, per: [Structure, Vehicle] },
96
+ recyclingBonus: Materials
97
+ };
98
+ exports.ArmoredConvoy = {
99
+ deck: DeckType_1.default.Ascension,
100
+ type: Vehicle,
101
+ constructionCost: (_v = {}, _v[Materials] = 1, _v[Energy] = 2, _v),
102
+ production: (_w = {}, _w[Materials] = -1, _w[Gold] = 2, _w),
103
+ recyclingBonus: Gold,
104
+ numberOfCopies: 2
105
+ };
106
+ exports.MobileBase = {
107
+ deck: DeckType_1.default.Ascension,
108
+ type: Vehicle,
109
+ constructionCost: (_x = {}, _x[Materials] = 2, _x[Energy] = 3, _x[Science] = 1, _x),
110
+ constructionBonus: [General],
111
+ production: (_y = {}, _y[Materials] = -1, _y[Science] = 2, _y[Exploration] = 2, _y),
112
+ recyclingBonus: Science,
113
+ numberOfCopies: 2
114
+ };
115
+ exports.Inquisitors = {
116
+ deck: DeckType_1.default.Ascension,
117
+ type: Vehicle,
118
+ constructionCost: (_z = {}, _z[Materials] = 1, _z[Energy] = 2, _z),
119
+ production: (_0 = {}, _0[Science] = -1, _0[Gold] = 1, _0[Exploration] = 1, _0),
120
+ recyclingBonus: Science,
121
+ numberOfCopies: 3
122
+ };
123
+ exports.Raiders = {
124
+ deck: DeckType_1.default.Ascension,
125
+ type: Vehicle,
126
+ constructionCost: (_1 = {}, _1[Energy] = 1, _1[Gold] = 1, _1),
127
+ production: (_2 = {}, _2[Gold] = -1, _2[Exploration] = 2, _2),
128
+ recyclingBonus: Gold,
129
+ numberOfCopies: 3
130
+ };
131
+ exports.PlanetaryArchives = {
132
+ deck: DeckType_1.default.Ascension,
133
+ type: Research,
134
+ constructionCost: (_3 = {}, _3[Science] = 4, _3[Exploration] = 2, _3),
135
+ production: (_4 = {}, _4[Science] = 2, _4),
136
+ victoryPoints: { quantity: 3, per: Discovery },
137
+ recyclingBonus: Exploration
138
+ };
139
+ exports.Telekinesis = {
140
+ deck: DeckType_1.default.Ascension,
141
+ type: Research,
142
+ constructionCost: (_5 = {}, _5[Science] = 5, _5[Krystallium] = 1, _5),
143
+ victoryPoints: { quantity: 6, per: [Vehicle, Financier] },
144
+ recyclingBonus: Science
145
+ };
146
+ exports.ArtificialIntelligence = {
147
+ deck: DeckType_1.default.Ascension,
148
+ type: Research,
149
+ constructionCost: (_6 = {}, _6[Science] = 3, _6),
150
+ production: { resource: Science, factor: Vehicle },
151
+ victoryPoints: 1,
152
+ recyclingBonus: Science
153
+ };
154
+ exports.DarkMatter = {
155
+ deck: DeckType_1.default.Ascension,
156
+ type: Research,
157
+ constructionCost: (_7 = {}, _7[Materials] = 5, _7[Science] = 5, _7[Krystallium] = 2, _7),
158
+ victoryPoints: { quantity: 6, per: [Structure, Research] },
159
+ recyclingBonus: Materials
160
+ };
161
+ exports.ArtificialSun = {
162
+ deck: DeckType_1.default.Ascension,
163
+ type: Research,
164
+ constructionCost: (_8 = {}, _8[Energy] = 4, _8[Science] = 7, _8[Gold] = 2, _8[Krystallium] = 1, _8),
165
+ victoryPoints: 25,
166
+ recyclingBonus: Energy
167
+ };
168
+ exports.Immortality = {
169
+ deck: DeckType_1.default.Ascension,
170
+ type: Research,
171
+ constructionCost: (_9 = {}, _9[Energy] = 3, _9[Science] = 8, _9[Financier] = 1, _9[General] = 1, _9),
172
+ victoryPoints: { quantity: 9, per: [Research, Project] },
173
+ recyclingBonus: Science
174
+ };
175
+ exports.Utopia = {
176
+ deck: DeckType_1.default.Ascension,
177
+ type: Research,
178
+ constructionCost: (_10 = {}, _10[Materials] = 2, _10[Energy] = 2, _10[Science] = 2, _10[Gold] = 2, _10[Exploration] = 2, _10[Financier] = 2, _10),
179
+ victoryPoints: { quantity: 12, per: [Project, Discovery] },
180
+ recyclingBonus: Gold
181
+ };
182
+ exports.TaxHaven = {
183
+ deck: DeckType_1.default.Ascension,
184
+ type: Research,
185
+ constructionCost: (_11 = {}, _11[Science] = 2, _11[Gold] = 2, _11),
186
+ constructionBonus: [Financier, Financier],
187
+ production: (_12 = {}, _12[Energy] = -1, _12[Gold] = 2, _12),
188
+ victoryPoints: 1,
189
+ recyclingBonus: Gold
190
+ };
191
+ exports.CelestialCathedral = {
192
+ deck: DeckType_1.default.Ascension,
193
+ type: Project,
194
+ constructionCost: (_13 = {}, _13[Materials] = 4, _13[Gold] = 5, _13[Exploration] = 2, _13),
195
+ victoryPoints: { quantity: 8, per: [Vehicle, Project] },
196
+ recyclingBonus: Gold
197
+ };
198
+ exports.IntercontinentalNetwork = {
199
+ deck: DeckType_1.default.Ascension,
200
+ type: Project,
201
+ constructionCost: (_14 = {}, _14[Materials] = 2, _14[Energy] = 2, _14[Gold] = 3, _14),
202
+ victoryPoints: { quantity: 6, per: [Discovery, Financier] },
203
+ recyclingBonus: Materials
204
+ };
205
+ exports.HighSecurityPrison = {
206
+ deck: DeckType_1.default.Ascension,
207
+ type: Project,
208
+ constructionCost: (_15 = {}, _15[Materials] = 2, _15[Gold] = 4, _15[Financier] = 1, _15),
209
+ victoryPoints: { quantity: 5, per: [Structure, General] },
210
+ recyclingBonus: Materials
211
+ };
212
+ exports.OrbitalStation = {
213
+ deck: DeckType_1.default.Ascension,
214
+ type: Project,
215
+ constructionCost: (_16 = {}, _16[Energy] = 3, _16[Science] = 3, _16[Gold] = 5, _16),
216
+ victoryPoints: { quantity: 6, per: [Financier, General] },
217
+ recyclingBonus: Science
218
+ };
219
+ exports.WorldBank = {
220
+ deck: DeckType_1.default.Ascension,
221
+ type: Project,
222
+ constructionCost: (_17 = {}, _17[Gold] = 7, _17[Exploration] = 5, _17[General] = 1, _17),
223
+ victoryPoints: { quantity: 7, per: [Structure, Project] },
224
+ recyclingBonus: Gold
225
+ };
226
+ exports.LuxuryClinic = {
227
+ deck: DeckType_1.default.Ascension,
228
+ type: Project,
229
+ constructionCost: (_18 = {}, _18[Science] = 1, _18[Gold] = 2, _18),
230
+ production: (_19 = {}, _19[Energy] = -1, _19[Science] = 2, _19),
231
+ victoryPoints: 3,
232
+ recyclingBonus: Energy,
233
+ numberOfCopies: 2
234
+ };
235
+ exports.TheWall = {
236
+ deck: DeckType_1.default.Ascension,
237
+ type: Project,
238
+ constructionCost: (_20 = {}, _20[Materials] = 9, _20[Gold] = 4, _20[General] = 2, _20),
239
+ victoryPoints: 25,
240
+ recyclingBonus: Materials
241
+ };
242
+ exports.Consortium = {
243
+ deck: DeckType_1.default.Ascension,
244
+ type: Project,
245
+ constructionCost: (_21 = {}, _21[Energy] = 3, _21[Gold] = 3, _21),
246
+ constructionBonus: [Financier],
247
+ production: (_22 = {}, _22[Gold] = 3, _22[Exploration] = 2, _22),
248
+ victoryPoints: 1,
249
+ recyclingBonus: Gold
250
+ };
251
+ exports.MiningAsteroid = {
252
+ deck: DeckType_1.default.Ascension,
253
+ type: Project,
254
+ constructionCost: (_23 = {}, _23[Energy] = 2, _23[Science] = 2, _23[Gold] = 2, _23),
255
+ constructionBonus: [Krystallium, Krystallium],
256
+ production: (_24 = {}, _24[Materials] = 4, _24),
257
+ victoryPoints: 3,
258
+ recyclingBonus: Materials
259
+ };
260
+ exports.Hyperborea = {
261
+ deck: DeckType_1.default.Ascension,
262
+ type: Discovery,
263
+ constructionCost: (_25 = {}, _25[Science] = 4, _25[Exploration] = 5, _25[General] = 2, _25),
264
+ victoryPoints: { quantity: 10, per: [Research, Discovery] },
265
+ recyclingBonus: Science
266
+ };
267
+ exports.Valhalla = {
268
+ deck: DeckType_1.default.Ascension,
269
+ type: Discovery,
270
+ constructionCost: (_26 = {}, _26[Gold] = 2, _26[Exploration] = 5, _26[Krystallium] = 1, _26),
271
+ victoryPoints: { quantity: 6, per: [Project, General] },
272
+ recyclingBonus: Gold
273
+ };
274
+ exports.MysteriousVessel = {
275
+ deck: DeckType_1.default.Ascension,
276
+ type: Discovery,
277
+ constructionCost: (_27 = {}, _27[Science] = 2, _27[Exploration] = 6, _27),
278
+ victoryPoints: { quantity: 6, per: [Vehicle, Research] },
279
+ recyclingBonus: Exploration
280
+ };
281
+ exports.Pandemonium = {
282
+ deck: DeckType_1.default.Ascension,
283
+ type: Discovery,
284
+ constructionCost: (_28 = {}, _28[Exploration] = 4, _28[Financier] = 2, _28),
285
+ victoryPoints: { quantity: 2, per: Structure },
286
+ recyclingBonus: Energy
287
+ };
288
+ exports.PandoraBox = {
289
+ deck: DeckType_1.default.Ascension,
290
+ type: Discovery,
291
+ constructionCost: (_29 = {}, _29[Exploration] = 4, _29),
292
+ constructionBonus: [Krystallium],
293
+ production: (_30 = {}, _30[Materials] = 1, _30[Energy] = 1, _30[Science] = 1, _30[Gold] = 1, _30),
294
+ victoryPoints: 1,
295
+ recyclingBonus: Exploration
296
+ };
297
+ exports.AlphaCentauri = {
298
+ deck: DeckType_1.default.Ascension,
299
+ type: Discovery,
300
+ constructionCost: (_31 = {}, _31[Energy] = 3, _31[Science] = 3, _31[Exploration] = 8, _31),
301
+ victoryPoints: 25,
302
+ recyclingBonus: Exploration
303
+ };
304
+ exports.Shambhala = {
305
+ deck: DeckType_1.default.Ascension,
306
+ type: Discovery,
307
+ constructionCost: (_32 = {}, _32[Exploration] = 4, _32),
308
+ production: { resource: Exploration, factor: Project },
309
+ victoryPoints: 4,
310
+ recyclingBonus: Exploration
311
+ };
312
+ exports.ascensionDevelopments = [
313
+ exports.BorderPatrol, exports.KrystalliumPowerPlant, exports.RobotFactory, exports.GoldMine, exports.SecretBase, exports.LawlessZone, exports.OccultDistrict, exports.OffshoreLaboratory,
314
+ exports.FloatingPalace, exports.GiantRobot, exports.ArmoredConvoy, exports.MobileBase, exports.Inquisitors, exports.Raiders,
315
+ exports.PlanetaryArchives, exports.Telekinesis, exports.ArtificialIntelligence, exports.DarkMatter, exports.ArtificialSun, exports.Immortality, exports.Utopia, exports.TaxHaven,
316
+ exports.CelestialCathedral, exports.IntercontinentalNetwork, exports.HighSecurityPrison, exports.OrbitalStation, exports.WorldBank, exports.LuxuryClinic, exports.TheWall, exports.Consortium, exports.MiningAsteroid,
317
+ exports.Hyperborea, exports.Valhalla, exports.MysteriousVessel, exports.Pandemonium, exports.PandoraBox, exports.AlphaCentauri, exports.Shambhala
318
+ ];
@@ -0,0 +1,5 @@
1
+ declare enum DeckType {
2
+ Default = 0,
3
+ Ascension = 1
4
+ }
5
+ export default DeckType;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var DeckType;
4
+ (function (DeckType) {
5
+ DeckType[DeckType["Default"] = 0] = "Default";
6
+ DeckType[DeckType["Ascension"] = 1] = "Ascension";
7
+ })(DeckType || (DeckType = {}));
8
+ exports.default = DeckType;
@@ -0,0 +1,22 @@
1
+ import Production from '../Production';
2
+ import { VictoryPoints } from '../Scoring';
3
+ import Character from './Character';
4
+ import DeckType from './DeckType';
5
+ import DevelopmentType from './DevelopmentType';
6
+ import Resource from './Resource';
7
+ declare type DevelopmentDetails = {
8
+ deck: DeckType;
9
+ type: DevelopmentType;
10
+ constructionCost: {
11
+ [key in Resource | Character]?: number;
12
+ };
13
+ constructionBonus?: ConstructionBonus[];
14
+ production?: Production;
15
+ victoryPoints?: VictoryPoints;
16
+ recyclingBonus: Resource;
17
+ numberOfCopies?: number;
18
+ };
19
+ export default DevelopmentDetails;
20
+ export declare type ConstructionBonus = Character | Resource.Krystallium;
21
+ export declare function isConstructionBonus(item: any): item is ConstructionBonus;
22
+ export declare function totalCost(development: DevelopmentDetails): number;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.totalCost = exports.isConstructionBonus = void 0;
7
+ var Character_1 = require("./Character");
8
+ var Resource_1 = __importDefault(require("./Resource"));
9
+ function isConstructionBonus(item) {
10
+ return (0, Character_1.isCharacter)(item) || item === Resource_1.default.Krystallium;
11
+ }
12
+ exports.isConstructionBonus = isConstructionBonus;
13
+ function totalCost(development) {
14
+ return Object.values(development.constructionCost).reduce(function (sum, cost) { return cost ? sum + cost : sum; }, 0);
15
+ }
16
+ exports.totalCost = totalCost;
@@ -10,6 +10,7 @@ declare type Empire = {
10
10
  production: {
11
11
  [key in Resource]?: number;
12
12
  };
13
+ krystallium?: number;
13
14
  };
14
15
  };
15
16
  export default Empire;
@@ -1,5 +1,7 @@
1
1
  declare enum EmpireSide {
2
2
  A = "A",
3
- B = "B"
3
+ B = "B",
4
+ C = "C",
5
+ D = "D"
4
6
  }
5
7
  export default EmpireSide;
@@ -4,5 +4,7 @@ var EmpireSide;
4
4
  (function (EmpireSide) {
5
5
  EmpireSide["A"] = "A";
6
6
  EmpireSide["B"] = "B";
7
+ EmpireSide["C"] = "C";
8
+ EmpireSide["D"] = "D";
7
9
  })(EmpireSide || (EmpireSide = {}));
8
10
  exports.default = EmpireSide;
@@ -2,7 +2,7 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
5
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  var Character_1 = __importDefault(require("./Character"));
8
8
  var DevelopmentType_1 = __importDefault(require("./DevelopmentType"));
@@ -16,6 +16,10 @@ var EmpireSideB = {
16
16
  _a[Resource_1.default.Science] = 1,
17
17
  _a)
18
18
  };
19
+ var EmpireSideC = {
20
+ production: {},
21
+ krystallium: 5
22
+ };
19
23
  var AztecEmpire = (_b = {},
20
24
  _b[EmpireSide_1.default.A] = {
21
25
  victoryPoints: (_c = {}, _c[DevelopmentType_1.default.Discovery] = 3, _c),
@@ -25,52 +29,87 @@ var AztecEmpire = (_b = {},
25
29
  _d)
26
30
  },
27
31
  _b[EmpireSide_1.default.B] = EmpireSideB,
32
+ _b[EmpireSide_1.default.C] = EmpireSideC,
33
+ _b[EmpireSide_1.default.D] = {
34
+ production: (_e = {},
35
+ _e[Resource_1.default.Materials] = 2,
36
+ _e[Resource_1.default.Energy] = 2,
37
+ _e)
38
+ },
28
39
  _b);
29
- var FederationOfAsia = (_e = {},
30
- _e[EmpireSide_1.default.A] = {
31
- victoryPoints: (_f = {}, _f[DevelopmentType_1.default.Project] = 2, _f),
32
- production: (_g = {},
33
- _g[Resource_1.default.Materials] = 1,
34
- _g[Resource_1.default.Gold] = 2,
35
- _g)
40
+ var FederationOfAsia = (_f = {},
41
+ _f[EmpireSide_1.default.A] = {
42
+ victoryPoints: (_g = {}, _g[DevelopmentType_1.default.Project] = 2, _g),
43
+ production: (_h = {},
44
+ _h[Resource_1.default.Materials] = 1,
45
+ _h[Resource_1.default.Gold] = 2,
46
+ _h)
47
+ },
48
+ _f[EmpireSide_1.default.B] = EmpireSideB,
49
+ _f[EmpireSide_1.default.C] = EmpireSideC,
50
+ _f[EmpireSide_1.default.D] = {
51
+ production: (_j = {},
52
+ _j[Resource_1.default.Materials] = 2,
53
+ _j[Resource_1.default.Science] = 2,
54
+ _j)
36
55
  },
37
- _e[EmpireSide_1.default.B] = EmpireSideB,
38
- _e);
39
- var NoramStates = (_h = {},
40
- _h[EmpireSide_1.default.A] = {
41
- victoryPoints: (_j = {}, _j[Character_1.default.Financier] = 1, _j),
42
- production: (_k = {},
43
- _k[Resource_1.default.Materials] = 3,
44
- _k[Resource_1.default.Gold] = 1,
45
- _k)
56
+ _f);
57
+ var NoramStates = (_k = {},
58
+ _k[EmpireSide_1.default.A] = {
59
+ victoryPoints: (_l = {}, _l[Character_1.default.Financier] = 1, _l),
60
+ production: (_m = {},
61
+ _m[Resource_1.default.Materials] = 3,
62
+ _m[Resource_1.default.Gold] = 1,
63
+ _m)
46
64
  },
47
- _h[EmpireSide_1.default.B] = EmpireSideB,
48
- _h);
49
- var PanafricanUnion = (_l = {},
50
- _l[EmpireSide_1.default.A] = {
51
- victoryPoints: (_m = {}, _m[DevelopmentType_1.default.Research] = 2, _m),
65
+ _k[EmpireSide_1.default.B] = EmpireSideB,
66
+ _k[EmpireSide_1.default.C] = EmpireSideC,
67
+ _k[EmpireSide_1.default.D] = {
52
68
  production: (_o = {},
53
- _o[Resource_1.default.Materials] = 2,
54
- _o[Resource_1.default.Science] = 2,
69
+ _o[Resource_1.default.Materials] = 3,
70
+ _o[Resource_1.default.Gold] = 1,
55
71
  _o)
56
72
  },
57
- _l[EmpireSide_1.default.B] = EmpireSideB,
58
- _l);
59
- var RepublicOfEurope = (_p = {},
73
+ _k);
74
+ var PanafricanUnion = (_p = {},
60
75
  _p[EmpireSide_1.default.A] = {
61
- victoryPoints: (_q = {}, _q[Character_1.default.General] = 1, _q),
76
+ victoryPoints: (_q = {}, _q[DevelopmentType_1.default.Research] = 2, _q),
62
77
  production: (_r = {},
63
78
  _r[Resource_1.default.Materials] = 2,
64
- _r[Resource_1.default.Energy] = 1,
65
- _r[Resource_1.default.Science] = 1,
79
+ _r[Resource_1.default.Science] = 2,
66
80
  _r)
67
81
  },
68
82
  _p[EmpireSide_1.default.B] = EmpireSideB,
83
+ _p[EmpireSide_1.default.C] = EmpireSideC,
84
+ _p[EmpireSide_1.default.D] = {
85
+ production: (_s = {},
86
+ _s[Resource_1.default.Materials] = 1,
87
+ _s[Resource_1.default.Gold] = 2,
88
+ _s)
89
+ },
69
90
  _p);
70
- exports.default = (_s = {},
71
- _s[EmpireName_1.default.AztecEmpire] = AztecEmpire,
72
- _s[EmpireName_1.default.FederationOfAsia] = FederationOfAsia,
73
- _s[EmpireName_1.default.NoramStates] = NoramStates,
74
- _s[EmpireName_1.default.PanafricanUnion] = PanafricanUnion,
75
- _s[EmpireName_1.default.RepublicOfEurope] = RepublicOfEurope,
76
- _s);
91
+ var RepublicOfEurope = (_t = {},
92
+ _t[EmpireSide_1.default.A] = {
93
+ victoryPoints: (_u = {}, _u[Character_1.default.General] = 1, _u),
94
+ production: (_v = {},
95
+ _v[Resource_1.default.Materials] = 2,
96
+ _v[Resource_1.default.Energy] = 1,
97
+ _v[Resource_1.default.Science] = 1,
98
+ _v)
99
+ },
100
+ _t[EmpireSide_1.default.B] = EmpireSideB,
101
+ _t[EmpireSide_1.default.C] = EmpireSideC,
102
+ _t[EmpireSide_1.default.D] = {
103
+ production: (_w = {},
104
+ _w[Resource_1.default.Materials] = 3,
105
+ _w[Resource_1.default.Exploration] = 1,
106
+ _w)
107
+ },
108
+ _t);
109
+ exports.default = (_x = {},
110
+ _x[EmpireName_1.default.AztecEmpire] = AztecEmpire,
111
+ _x[EmpireName_1.default.FederationOfAsia] = FederationOfAsia,
112
+ _x[EmpireName_1.default.NoramStates] = NoramStates,
113
+ _x[EmpireName_1.default.PanafricanUnion] = PanafricanUnion,
114
+ _x[EmpireName_1.default.RepublicOfEurope] = RepublicOfEurope,
115
+ _x);
@@ -1,5 +1,6 @@
1
1
  import GameState from '../GameState';
2
2
  import GameView from '../GameView';
3
+ import EmpireName from '../material/EmpireName';
3
4
  import MoveType from './MoveType';
4
5
  declare type DealDevelopmentCards = {
5
6
  type: typeof MoveType.DealDevelopmentCards;
@@ -12,3 +13,4 @@ export declare const dealDevelopmentCardsMove: DealDevelopmentCards;
12
13
  export declare function dealDevelopmentCards(state: GameState): void;
13
14
  export declare function revealDealtDevelopmentCards(state: GameView, move: DealDevelopmentCards | DealDevelopmentCardsView): void;
14
15
  export declare function isDealDevelopmentCardsView(move: DealDevelopmentCards | DealDevelopmentCardsView): move is DealDevelopmentCardsView;
16
+ export declare function getDealDevelopmentCardsView(state: GameState, playerId: EmpireName): DealDevelopmentCardsView;
@@ -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.isDealDevelopmentCardsView = exports.revealDealtDevelopmentCards = exports.dealDevelopmentCards = exports.dealDevelopmentCardsMove = void 0;
6
+ exports.getDealDevelopmentCardsView = exports.isDealDevelopmentCardsView = exports.revealDealtDevelopmentCards = exports.dealDevelopmentCards = exports.dealDevelopmentCardsMove = void 0;
7
7
  var ItsAWonderfulWorld_1 = require("../ItsAWonderfulWorld");
8
8
  var typeguards_1 = require("../typeguards");
9
9
  var MoveType_1 = __importDefault(require("./MoveType"));
@@ -42,3 +42,10 @@ function isDealDevelopmentCardsView(move) {
42
42
  return move.playerCards !== undefined;
43
43
  }
44
44
  exports.isDealDevelopmentCardsView = isDealDevelopmentCardsView;
45
+ function getDealDevelopmentCardsView(state, playerId) {
46
+ var players = getRemainingPlayersToDealCardsTo(state);
47
+ var playerIndex = players.findIndex(function (player) { return player.empire === playerId; });
48
+ var cardsToDeal = players.length === 2 ? numberOfCardsDeal2Players : ItsAWonderfulWorld_1.numberOfCardsToDraft;
49
+ return { type: MoveType_1.default.DealDevelopmentCards, playerCards: state.deck.slice(playerIndex * cardsToDeal, (playerIndex + 1) * cardsToDeal) };
50
+ }
51
+ exports.getDealDevelopmentCardsView = getDealDevelopmentCardsView;
@@ -12,3 +12,4 @@ export declare const discardLeftOverCardsMove: DiscardLeftoverCards;
12
12
  export declare function discardLeftOverCards(state: GameState): void;
13
13
  export declare function discardLeftOverCardsInView(state: GameView, move: DiscardLeftoverCardsView): void;
14
14
  export declare function isDiscardLeftoverCardsView(move: DiscardLeftoverCards | DiscardLeftoverCardsView): move is DiscardLeftoverCardsView;
15
+ export declare function getDiscardLeftoverCardsView(state: GameState): DiscardLeftoverCardsView;
@@ -24,7 +24,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
24
24
  return (mod && mod.__esModule) ? mod : { "default": mod };
25
25
  };
26
26
  Object.defineProperty(exports, "__esModule", { value: true });
27
- exports.isDiscardLeftoverCardsView = exports.discardLeftOverCardsInView = exports.discardLeftOverCards = exports.discardLeftOverCardsMove = void 0;
27
+ exports.getDiscardLeftoverCardsView = exports.isDiscardLeftoverCardsView = exports.discardLeftOverCardsInView = exports.discardLeftOverCards = exports.discardLeftOverCardsMove = void 0;
28
28
  var typeguards_1 = require("../typeguards");
29
29
  var MoveType_1 = __importDefault(require("./MoveType"));
30
30
  exports.discardLeftOverCardsMove = { type: MoveType_1.default.DiscardLeftoverCards };
@@ -52,3 +52,7 @@ function isDiscardLeftoverCardsView(move) {
52
52
  return move.discardedCards !== undefined;
53
53
  }
54
54
  exports.isDiscardLeftoverCardsView = isDiscardLeftoverCardsView;
55
+ function getDiscardLeftoverCardsView(state) {
56
+ return { type: MoveType_1.default.DiscardLeftoverCards, discardedCards: state.players.flatMap(function (player) { return player.hand; }) };
57
+ }
58
+ exports.getDiscardLeftoverCardsView = getDiscardLeftoverCardsView;
@@ -1,5 +1,6 @@
1
1
  import GameState from '../GameState';
2
2
  import GameView from '../GameView';
3
+ import EmpireName from '../material/EmpireName';
3
4
  import Move from './Move';
4
5
  import MoveType from './MoveType';
5
6
  import MoveView from './MoveView';
@@ -15,3 +16,4 @@ export declare function passCards(state: GameState): void;
15
16
  export declare function passCardsInView(state: GameView, move: PassCards | PassCardsView): void;
16
17
  export declare function isPassCards(move: Move | MoveView): move is (PassCards | PassCardsView);
17
18
  export declare function isPassCardsView(move: PassCards | PassCardsView): move is PassCardsView;
19
+ export declare function getPassCardsView(state: GameState, playerId: EmpireName): PassCardsView;
@@ -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.isPassCardsView = exports.isPassCards = exports.passCardsInView = exports.passCards = exports.passCardsMove = void 0;
6
+ exports.getPassCardsView = exports.isPassCardsView = exports.isPassCards = exports.passCardsInView = exports.passCards = exports.passCardsMove = void 0;
7
7
  var typeguards_1 = require("../typeguards");
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  exports.passCardsMove = { type: MoveType_1.default.PassCards };
@@ -32,3 +32,11 @@ function isPassCardsView(move) {
32
32
  return move.receivedCards !== undefined;
33
33
  }
34
34
  exports.isPassCardsView = isPassCardsView;
35
+ function getPassCardsView(state, playerId) {
36
+ var players = state.players.filter(function (player) { return player.cardsToPass; });
37
+ var playerIndex = players.findIndex(function (player) { return player.empire === playerId; });
38
+ var draftDirection = state.round % 2 ? -1 : 1;
39
+ var playerPassingCards = players[(playerIndex + players.length + draftDirection) % players.length];
40
+ return { type: MoveType_1.default.PassCards, receivedCards: playerPassingCards.cardsToPass };
41
+ }
42
+ exports.getPassCardsView = getPassCardsView;
@@ -17,3 +17,4 @@ export declare function revealChosenCards(state: GameState): void;
17
17
  export declare function revealChosenCardsInView(state: GameView, move: RevealChosenCardsView): void;
18
18
  export declare function isRevealChosenCards(move: Move): move is (RevealChosenCards | RevealChosenCardsView);
19
19
  export declare function isRevealChosenCardsView(move: RevealChosenCards | RevealChosenCardsView): move is RevealChosenCardsView;
20
+ export declare function getRevealChosenCardsView(state: GameState): RevealChosenCardsView;
@@ -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.isRevealChosenCardsView = exports.isRevealChosenCards = exports.revealChosenCardsInView = exports.revealChosenCards = exports.revealChosenCardsMove = void 0;
6
+ exports.getRevealChosenCardsView = exports.isRevealChosenCardsView = exports.isRevealChosenCards = exports.revealChosenCardsInView = exports.revealChosenCards = exports.revealChosenCardsMove = void 0;
7
7
  var ItsAWonderfulWorld_1 = require("../ItsAWonderfulWorld");
8
8
  var MoveType_1 = __importDefault(require("./MoveType"));
9
9
  exports.revealChosenCardsMove = { type: MoveType_1.default.RevealChosenCards };
@@ -34,3 +34,11 @@ function isRevealChosenCardsView(move) {
34
34
  return move.revealedCards !== undefined;
35
35
  }
36
36
  exports.isRevealChosenCardsView = isRevealChosenCardsView;
37
+ function getRevealChosenCardsView(state) {
38
+ var revealedCards = state.players.reduce(function (revealedCards, player) {
39
+ revealedCards[player.empire] = player.chosenCard;
40
+ return revealedCards;
41
+ }, {});
42
+ return { type: MoveType_1.default.RevealChosenCards, revealedCards: revealedCards };
43
+ }
44
+ exports.getRevealChosenCardsView = getRevealChosenCardsView;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/its-a-wonderful-world",
3
- "version": "1.4.0",
3
+ "version": "1.7.0",
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",
@@ -13,7 +13,7 @@
13
13
  "access": "public"
14
14
  },
15
15
  "dependencies": {
16
- "@gamepark/rules-api": "~4.17.0"
16
+ "@gamepark/rules-api": "~5.10.0"
17
17
  },
18
18
  "scripts": {
19
19
  "build": "tsc",
@@ -22,5 +22,5 @@
22
22
  "devDependencies": {
23
23
  "i18next": "^20.2.4"
24
24
  },
25
- "gitHead": "635cf9a39d79d0f857904d3bbd07c74f17340b47"
25
+ "gitHead": "e416a925c594476a98a1c7252fb6301138ce049a"
26
26
  }