@gamepark/zenith 0.0.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.
Files changed (125) hide show
  1. package/dist/PlayerId.d.ts +1 -0
  2. package/dist/PlayerId.js +2 -0
  3. package/dist/TeamColor.d.ts +9 -0
  4. package/dist/TeamColor.js +16 -0
  5. package/dist/ZenithOptions.d.ts +5 -0
  6. package/dist/ZenithOptions.js +4 -0
  7. package/dist/ZenithRules.d.ts +68 -0
  8. package/dist/ZenithRules.js +128 -0
  9. package/dist/ZenithSetup.d.ts +24 -0
  10. package/dist/ZenithSetup.js +316 -0
  11. package/dist/index.d.ts +3 -0
  12. package/dist/index.js +9 -0
  13. package/dist/material/Agent.d.ts +93 -0
  14. package/dist/material/Agent.js +98 -0
  15. package/dist/material/Agents.d.ts +102 -0
  16. package/dist/material/Agents.js +2305 -0
  17. package/dist/material/Bonus.d.ts +12 -0
  18. package/dist/material/Bonus.js +34 -0
  19. package/dist/material/Bonuses.d.ts +14 -0
  20. package/dist/material/Bonuses.js +63 -0
  21. package/dist/material/Credit.d.ts +6 -0
  22. package/dist/material/Credit.js +11 -0
  23. package/dist/material/Faction.d.ts +6 -0
  24. package/dist/material/Faction.js +11 -0
  25. package/dist/material/Influence.d.ts +8 -0
  26. package/dist/material/Influence.js +13 -0
  27. package/dist/material/LocationType.d.ts +23 -0
  28. package/dist/material/LocationType.js +27 -0
  29. package/dist/material/MaterialType.d.ts +12 -0
  30. package/dist/material/MaterialType.js +16 -0
  31. package/dist/material/effect/Effect.d.ts +144 -0
  32. package/dist/material/effect/Effect.js +14 -0
  33. package/dist/material/effect/EffectType.d.ts +23 -0
  34. package/dist/material/effect/EffectType.js +27 -0
  35. package/dist/rules/CustomMoveType.d.ts +8 -0
  36. package/dist/rules/CustomMoveType.js +12 -0
  37. package/dist/rules/DiscardActionRule.d.ts +8 -0
  38. package/dist/rules/DiscardActionRule.js +84 -0
  39. package/dist/rules/Memory.d.ts +25 -0
  40. package/dist/rules/Memory.js +19 -0
  41. package/dist/rules/MulliganRule.d.ts +12 -0
  42. package/dist/rules/MulliganRule.js +138 -0
  43. package/dist/rules/PlayCardRule.d.ts +15 -0
  44. package/dist/rules/PlayCardRule.js +147 -0
  45. package/dist/rules/RefillRule.d.ts +17 -0
  46. package/dist/rules/RefillRule.js +211 -0
  47. package/dist/rules/RuleId.d.ts +27 -0
  48. package/dist/rules/RuleId.js +31 -0
  49. package/dist/rules/discard-action/DiplomacyActions.d.ts +3 -0
  50. package/dist/rules/discard-action/DiplomacyActions.js +39 -0
  51. package/dist/rules/discard-action/DiplomacyBoardRule.d.ts +9 -0
  52. package/dist/rules/discard-action/DiplomacyBoardRule.js +68 -0
  53. package/dist/rules/discard-action/TechnologyActions.d.ts +3 -0
  54. package/dist/rules/discard-action/TechnologyActions.js +187 -0
  55. package/dist/rules/discard-action/TechnologyBoardRule.d.ts +8 -0
  56. package/dist/rules/discard-action/TechnologyBoardRule.js +109 -0
  57. package/dist/rules/effect/ChoiceRule.d.ts +12 -0
  58. package/dist/rules/effect/ChoiceRule.js +91 -0
  59. package/dist/rules/effect/ConditionalRule.d.ts +17 -0
  60. package/dist/rules/effect/ConditionalRule.js +197 -0
  61. package/dist/rules/effect/DevelopTechnologyRule.d.ts +11 -0
  62. package/dist/rules/effect/DevelopTechnologyRule.js +133 -0
  63. package/dist/rules/effect/DiscardRule.d.ts +18 -0
  64. package/dist/rules/effect/DiscardRule.js +107 -0
  65. package/dist/rules/effect/EffectRule.d.ts +27 -0
  66. package/dist/rules/effect/EffectRule.js +161 -0
  67. package/dist/rules/effect/ExileRule.d.ts +22 -0
  68. package/dist/rules/effect/ExileRule.js +182 -0
  69. package/dist/rules/effect/GiveCreditRule.d.ts +13 -0
  70. package/dist/rules/effect/GiveCreditRule.js +79 -0
  71. package/dist/rules/effect/GiveInfluenceRule.d.ts +10 -0
  72. package/dist/rules/effect/GiveInfluenceRule.js +119 -0
  73. package/dist/rules/effect/GiveLeaderBadgeRule.d.ts +9 -0
  74. package/dist/rules/effect/GiveLeaderBadgeRule.js +54 -0
  75. package/dist/rules/effect/GiveZenithiumRule.d.ts +9 -0
  76. package/dist/rules/effect/GiveZenithiumRule.js +85 -0
  77. package/dist/rules/effect/MobilizeRule.d.ts +18 -0
  78. package/dist/rules/effect/MobilizeRule.js +117 -0
  79. package/dist/rules/effect/ResetInfluenceRule.d.ts +9 -0
  80. package/dist/rules/effect/ResetInfluenceRule.js +63 -0
  81. package/dist/rules/effect/SpendCreditRule.d.ts +16 -0
  82. package/dist/rules/effect/SpendCreditRule.js +109 -0
  83. package/dist/rules/effect/SpendZenithiumRule.d.ts +17 -0
  84. package/dist/rules/effect/SpendZenithiumRule.js +116 -0
  85. package/dist/rules/effect/StealCreditRule.d.ts +7 -0
  86. package/dist/rules/effect/StealCreditRule.js +67 -0
  87. package/dist/rules/effect/TakeBonusRule.d.ts +11 -0
  88. package/dist/rules/effect/TakeBonusRule.js +98 -0
  89. package/dist/rules/effect/TakeLeaderBadgeRule.d.ts +9 -0
  90. package/dist/rules/effect/TakeLeaderBadgeRule.js +102 -0
  91. package/dist/rules/effect/TakeTechnologyBonusTokenRule.d.ts +11 -0
  92. package/dist/rules/effect/TakeTechnologyBonusTokenRule.js +122 -0
  93. package/dist/rules/effect/TransferRule.d.ts +19 -0
  94. package/dist/rules/effect/TransferRule.js +104 -0
  95. package/dist/rules/effect/WinCreditRule.d.ts +13 -0
  96. package/dist/rules/effect/WinCreditRule.js +142 -0
  97. package/dist/rules/effect/WinInfluenceRule.d.ts +23 -0
  98. package/dist/rules/effect/WinInfluenceRule.js +328 -0
  99. package/dist/rules/effect/WinZenithiumRule.d.ts +9 -0
  100. package/dist/rules/effect/WinZenithiumRule.js +92 -0
  101. package/dist/rules/effect/index.d.ts +19 -0
  102. package/dist/rules/effect/index.js +35 -0
  103. package/dist/rules/helper/BonusHelper.d.ts +15 -0
  104. package/dist/rules/helper/BonusHelper.js +86 -0
  105. package/dist/rules/helper/CreditHelper.d.ts +9 -0
  106. package/dist/rules/helper/CreditHelper.js +45 -0
  107. package/dist/rules/helper/EffectHelper.d.ts +16 -0
  108. package/dist/rules/helper/EffectHelper.js +133 -0
  109. package/dist/rules/helper/EffectRuleIds.d.ts +3 -0
  110. package/dist/rules/helper/EffectRuleIds.js +29 -0
  111. package/dist/rules/helper/EndGameHelper.d.ts +13 -0
  112. package/dist/rules/helper/EndGameHelper.js +70 -0
  113. package/dist/rules/helper/InfluenceHelper.d.ts +13 -0
  114. package/dist/rules/helper/InfluenceHelper.js +47 -0
  115. package/dist/rules/helper/MobilizeHelper.d.ts +10 -0
  116. package/dist/rules/helper/MobilizeHelper.js +56 -0
  117. package/dist/rules/helper/PlanetHelper.d.ts +19 -0
  118. package/dist/rules/helper/PlanetHelper.js +104 -0
  119. package/dist/rules/helper/PlayerHelper.d.ts +12 -0
  120. package/dist/rules/helper/PlayerHelper.js +61 -0
  121. package/dist/rules/helper/TechnologyHelper.d.ts +4 -0
  122. package/dist/rules/helper/TechnologyHelper.js +96 -0
  123. package/dist/rules/helper/ZenithiumHelper.d.ts +10 -0
  124. package/dist/rules/helper/ZenithiumHelper.js +59 -0
  125. package/package.json +33 -0
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ var __values = (this && this.__values) || function(o) {
43
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
44
+ if (m) return m.call(o);
45
+ if (o && typeof o.length === "number") return {
46
+ next: function () {
47
+ if (o && i >= o.length) o = void 0;
48
+ return { value: o && o[i++], done: !o };
49
+ }
50
+ };
51
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.MulliganRule = void 0;
55
+ var rules_api_1 = require("@gamepark/rules-api");
56
+ var LocationType_1 = require("../material/LocationType");
57
+ var MaterialType_1 = require("../material/MaterialType");
58
+ var CustomMoveType_1 = require("./CustomMoveType");
59
+ var Memory_1 = require("./Memory");
60
+ var RuleId_1 = require("./RuleId");
61
+ var MulliganRule = (function (_super) {
62
+ __extends(MulliganRule, _super);
63
+ function MulliganRule() {
64
+ return _super !== null && _super.apply(this, arguments) || this;
65
+ }
66
+ MulliganRule.prototype.getActivePlayerLegalMoves = function (player) {
67
+ return __spreadArray(__spreadArray([], __read(this.getHand(player).moveItems({
68
+ type: LocationType_1.LocationType.AgentDiscard
69
+ })), false), [
70
+ this.customMove(CustomMoveType_1.CustomMoveType.Pass, player)
71
+ ], false);
72
+ };
73
+ MulliganRule.prototype.onCustomMove = function (move) {
74
+ if (!(0, rules_api_1.isCustomMoveType)(CustomMoveType_1.CustomMoveType.Pass)(move))
75
+ return [];
76
+ var player = move.data;
77
+ var mulliganCount = this.getMulliganCount(player);
78
+ var moves = [];
79
+ if (mulliganCount) {
80
+ var deck = this.deck;
81
+ moves.push(deck.dealAtOnce({
82
+ type: LocationType_1.LocationType.PlayerHand,
83
+ player: player
84
+ }, mulliganCount));
85
+ }
86
+ moves.push(this.endPlayerTurn(player));
87
+ return moves;
88
+ };
89
+ MulliganRule.prototype.getMulliganCount = function (player) {
90
+ var _a;
91
+ return (_a = this.remind(Memory_1.Memory.Mulligan, player)) !== null && _a !== void 0 ? _a : 0;
92
+ };
93
+ Object.defineProperty(MulliganRule.prototype, "deck", {
94
+ get: function () {
95
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.AgentDeck).deck();
96
+ },
97
+ enumerable: false,
98
+ configurable: true
99
+ });
100
+ MulliganRule.prototype.beforeItemMove = function (move) {
101
+ if (!(0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.AgentCard)(move) || move.location.type !== LocationType_1.LocationType.AgentDiscard)
102
+ return [];
103
+ var item = this.material(MaterialType_1.MaterialType.AgentCard).getItem(move.itemIndex);
104
+ var player = item.location.player;
105
+ var mulliganCount = this.getMulliganCount(player);
106
+ this.memorize(Memory_1.Memory.Mulligan, mulliganCount + 1, player);
107
+ return [];
108
+ };
109
+ MulliganRule.prototype.getHand = function (playerId) {
110
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.PlayerHand).player(playerId);
111
+ };
112
+ MulliganRule.prototype.getMovesAfterPlayersDone = function () {
113
+ var e_1, _a;
114
+ try {
115
+ for (var _b = __values(this.game.players), _c = _b.next(); !_c.done; _c = _b.next()) {
116
+ var player = _c.value;
117
+ this.forget(Memory_1.Memory.Mulligan, player);
118
+ }
119
+ }
120
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
121
+ finally {
122
+ try {
123
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
124
+ }
125
+ finally { if (e_1) throw e_1.error; }
126
+ }
127
+ return [this.startPlayerTurn(RuleId_1.RuleId.PlayCard, this.turnOrder[0])];
128
+ };
129
+ Object.defineProperty(MulliganRule.prototype, "turnOrder", {
130
+ get: function () {
131
+ return this.remind(Memory_1.Memory.TurnOrder);
132
+ },
133
+ enumerable: false,
134
+ configurable: true
135
+ });
136
+ return MulliganRule;
137
+ }(rules_api_1.SimultaneousRule));
138
+ exports.MulliganRule = MulliganRule;
@@ -0,0 +1,15 @@
1
+ import { ItemMove, Material, MaterialMove, PlayerTurnRule } from '@gamepark/rules-api';
2
+ import { CreditHelper } from './helper/CreditHelper';
3
+ import { InfluenceHelper } from './helper/InfluenceHelper';
4
+ import { PlayerHelper } from './helper/PlayerHelper';
5
+ export declare class PlayCardRule extends PlayerTurnRule {
6
+ onRuleStart(): never[];
7
+ getPlayerMoves(): MaterialMove[];
8
+ placeInInfluence(cards: Material): import("@gamepark/rules-api").MoveItem<number, number, number>[];
9
+ discardAgents(cards: Material): import("@gamepark/rules-api").MoveItem<number, number, number>[];
10
+ get creditHelper(): CreditHelper;
11
+ afterItemMove(move: ItemMove): MaterialMove[];
12
+ get influenceHelper(): InfluenceHelper;
13
+ get playerHelper(): PlayerHelper;
14
+ get hand(): Material<number, number, number>;
15
+ }
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.PlayCardRule = void 0;
44
+ var rules_api_1 = require("@gamepark/rules-api");
45
+ var Agents_1 = require("../material/Agents");
46
+ var LocationType_1 = require("../material/LocationType");
47
+ var MaterialType_1 = require("../material/MaterialType");
48
+ var TeamColor_1 = require("../TeamColor");
49
+ var CreditHelper_1 = require("./helper/CreditHelper");
50
+ var EffectHelper_1 = require("./helper/EffectHelper");
51
+ var InfluenceHelper_1 = require("./helper/InfluenceHelper");
52
+ var PlayerHelper_1 = require("./helper/PlayerHelper");
53
+ var Memory_1 = require("./Memory");
54
+ var RuleId_1 = require("./RuleId");
55
+ var PlayCardRule = (function (_super) {
56
+ __extends(PlayCardRule, _super);
57
+ function PlayCardRule() {
58
+ return _super !== null && _super.apply(this, arguments) || this;
59
+ }
60
+ PlayCardRule.prototype.onRuleStart = function () {
61
+ this.forget(Memory_1.Memory.DiscardFaction);
62
+ this.forget(Memory_1.Memory.LastPlanetsMoved);
63
+ return [];
64
+ };
65
+ PlayCardRule.prototype.getPlayerMoves = function () {
66
+ var moves = [];
67
+ var hand = this.hand;
68
+ moves.push.apply(moves, __spreadArray([], __read(this.discardAgents(hand)), false));
69
+ moves.push.apply(moves, __spreadArray([], __read(this.placeInInfluence(hand)), false));
70
+ return moves;
71
+ };
72
+ PlayCardRule.prototype.placeInInfluence = function (cards) {
73
+ var _this = this;
74
+ var influenceHelper = this.influenceHelper;
75
+ var playerHelper = this.playerHelper;
76
+ return cards
77
+ .filter(function (item) { return influenceHelper.getCost(item) <= playerHelper.credits; })
78
+ .moveItems(function (item) { return ({
79
+ type: LocationType_1.LocationType.Influence,
80
+ id: Agents_1.Agents[item.id].influence,
81
+ player: (0, TeamColor_1.getTeamColor)(_this.player)
82
+ }); });
83
+ };
84
+ PlayCardRule.prototype.discardAgents = function (cards) {
85
+ return cards.moveItems({
86
+ type: LocationType_1.LocationType.AgentDiscard
87
+ });
88
+ };
89
+ Object.defineProperty(PlayCardRule.prototype, "creditHelper", {
90
+ get: function () {
91
+ return new CreditHelper_1.CreditHelper(this.game, this.player);
92
+ },
93
+ enumerable: false,
94
+ configurable: true
95
+ });
96
+ PlayCardRule.prototype.afterItemMove = function (move) {
97
+ if (!(0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.AgentCard)(move))
98
+ return [];
99
+ if (move.location.type === LocationType_1.LocationType.AgentDiscard) {
100
+ var item = this.material(MaterialType_1.MaterialType.AgentCard).getItem(move.itemIndex);
101
+ var agent = Agents_1.Agents[item.id];
102
+ this.memorize(Memory_1.Memory.DiscardFaction, agent.faction);
103
+ return [this.startRule(RuleId_1.RuleId.DiscardAction)];
104
+ }
105
+ var moves = [];
106
+ if (move.location.type === LocationType_1.LocationType.Influence) {
107
+ var influenceHelper = this.influenceHelper;
108
+ var item = this.material(MaterialType_1.MaterialType.AgentCard).getItem(move.itemIndex);
109
+ this.memorize(Memory_1.Memory.CardPlayed, item.id);
110
+ var cost = influenceHelper.getCost(item, 1);
111
+ if (cost > 0) {
112
+ moves.push.apply(moves, __spreadArray([], __read(this.creditHelper.spendCredit(cost)), false));
113
+ }
114
+ var helper = new EffectHelper_1.EffectHelper(this.game, this.player);
115
+ var effectMoves = helper.applyCard(item);
116
+ if (effectMoves.some(function (move) { return (0, rules_api_1.isStartRule)(move) || (0, rules_api_1.isStartPlayerTurn)(move); })) {
117
+ moves.push.apply(moves, __spreadArray([], __read(effectMoves), false));
118
+ return moves;
119
+ }
120
+ moves.push(this.startRule(RuleId_1.RuleId.Refill));
121
+ }
122
+ return moves;
123
+ };
124
+ Object.defineProperty(PlayCardRule.prototype, "influenceHelper", {
125
+ get: function () {
126
+ return new InfluenceHelper_1.InfluenceHelper(this.game, (0, TeamColor_1.getTeamColor)(this.player));
127
+ },
128
+ enumerable: false,
129
+ configurable: true
130
+ });
131
+ Object.defineProperty(PlayCardRule.prototype, "playerHelper", {
132
+ get: function () {
133
+ return new PlayerHelper_1.PlayerHelper(this.game, this.player);
134
+ },
135
+ enumerable: false,
136
+ configurable: true
137
+ });
138
+ Object.defineProperty(PlayCardRule.prototype, "hand", {
139
+ get: function () {
140
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.PlayerHand).player(this.player);
141
+ },
142
+ enumerable: false,
143
+ configurable: true
144
+ });
145
+ return PlayCardRule;
146
+ }(rules_api_1.PlayerTurnRule));
147
+ exports.PlayCardRule = PlayCardRule;
@@ -0,0 +1,17 @@
1
+ import { ItemMove, MaterialMove, PlayerTurnRule } from '@gamepark/rules-api';
2
+ import { Influence } from '../material/Influence';
3
+ import { PlayerId } from '../PlayerId';
4
+ export declare class RefillRule extends PlayerTurnRule {
5
+ onRuleStart(): MaterialMove[];
6
+ getNewInfluenceDisc(influence: Influence): import("@gamepark/rules-api").Material<number, number, number>;
7
+ get endRuleMoves(): MaterialMove[];
8
+ get turnOrder(): PlayerId[];
9
+ get nextPlayer(): PlayerId;
10
+ get handSize(): 4 | 5 | 6;
11
+ refillHand(maxCount: number): MaterialMove[];
12
+ get discard(): import("@gamepark/rules-api").Material<number, number, number>;
13
+ afterItemMove(move: ItemMove): MaterialMove[];
14
+ get hand(): import("@gamepark/rules-api").Material<number, number, number>;
15
+ get deck(): import("@gamepark/rules-api").MaterialDeck<number, number, number>;
16
+ get leaderBadge(): import("@gamepark/rules-api").Material<number, number, number>;
17
+ }
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __values = (this && this.__values) || function(o) {
18
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19
+ if (m) return m.call(o);
20
+ if (o && typeof o.length === "number") return {
21
+ next: function () {
22
+ if (o && i >= o.length) o = void 0;
23
+ return { value: o && o[i++], done: !o };
24
+ }
25
+ };
26
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
27
+ };
28
+ var __read = (this && this.__read) || function (o, n) {
29
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
30
+ if (!m) return o;
31
+ var i = m.call(o), r, ar = [], e;
32
+ try {
33
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
34
+ }
35
+ catch (error) { e = { error: error }; }
36
+ finally {
37
+ try {
38
+ if (r && !r.done && (m = i["return"])) m.call(i);
39
+ }
40
+ finally { if (e) throw e.error; }
41
+ }
42
+ return ar;
43
+ };
44
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
45
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
46
+ if (ar || !(i in from)) {
47
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
48
+ ar[i] = from[i];
49
+ }
50
+ }
51
+ return to.concat(ar || Array.prototype.slice.call(from));
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.RefillRule = void 0;
55
+ var rules_api_1 = require("@gamepark/rules-api");
56
+ var Influence_1 = require("../material/Influence");
57
+ var LocationType_1 = require("../material/LocationType");
58
+ var MaterialType_1 = require("../material/MaterialType");
59
+ var PlayerHelper_1 = require("./helper/PlayerHelper");
60
+ var Memory_1 = require("./Memory");
61
+ var RuleId_1 = require("./RuleId");
62
+ var RefillRule = (function (_super) {
63
+ __extends(RefillRule, _super);
64
+ function RefillRule() {
65
+ return _super !== null && _super.apply(this, arguments) || this;
66
+ }
67
+ RefillRule.prototype.onRuleStart = function () {
68
+ var e_1, _a;
69
+ var _this = this;
70
+ this.memorize(Memory_1.Memory.AlreadyPlayedPlayers, function (p) {
71
+ if (p === void 0) { p = []; }
72
+ return p.concat(_this.player);
73
+ });
74
+ var moves = [];
75
+ try {
76
+ for (var influences_1 = __values(Influence_1.influences), influences_1_1 = influences_1.next(); !influences_1_1.done; influences_1_1 = influences_1.next()) {
77
+ var influence = influences_1_1.value;
78
+ var planet = this.material(MaterialType_1.MaterialType.InfluenceDisc).location(LocationType_1.LocationType.PlanetBoardInfluenceDiscSpace).locationId(influence);
79
+ if (planet.length)
80
+ continue;
81
+ moves.push(this.getNewInfluenceDisc(influence).moveItem({
82
+ type: LocationType_1.LocationType.PlanetBoardInfluenceDiscSpace,
83
+ id: influence,
84
+ x: 0
85
+ }));
86
+ }
87
+ }
88
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
89
+ finally {
90
+ try {
91
+ if (influences_1_1 && !influences_1_1.done && (_a = influences_1.return)) _a.call(influences_1);
92
+ }
93
+ finally { if (e_1) throw e_1.error; }
94
+ }
95
+ var maxSize = this.handSize;
96
+ moves.push.apply(moves, __spreadArray([], __read(this.refillHand(maxSize)), false));
97
+ if (moves.some(function (move) { return (0, rules_api_1.isMoveItemTypeAtOnce)(MaterialType_1.MaterialType.AgentCard)(move) && move.location.type === LocationType_1.LocationType.AgentDeck; })) {
98
+ return moves;
99
+ }
100
+ moves.push.apply(moves, __spreadArray([], __read(this.endRuleMoves), false));
101
+ return moves;
102
+ };
103
+ RefillRule.prototype.getNewInfluenceDisc = function (influence) {
104
+ return this.material(MaterialType_1.MaterialType.InfluenceDisc)
105
+ .location(LocationType_1.LocationType.InfluenceDiscStock)
106
+ .locationId(influence)
107
+ .maxBy(function (item) { return item.location.x; });
108
+ };
109
+ Object.defineProperty(RefillRule.prototype, "endRuleMoves", {
110
+ get: function () {
111
+ var isTurnEnded = this.remind(Memory_1.Memory.AlreadyPlayedPlayers).length === this.game.players.length;
112
+ if (isTurnEnded) {
113
+ this.forget(Memory_1.Memory.AlreadyPlayedPlayers);
114
+ return [this.startPlayerTurn(RuleId_1.RuleId.PlayCard, this.turnOrder[0])];
115
+ }
116
+ else {
117
+ return [this.startPlayerTurn(RuleId_1.RuleId.PlayCard, this.nextPlayer)];
118
+ }
119
+ },
120
+ enumerable: false,
121
+ configurable: true
122
+ });
123
+ Object.defineProperty(RefillRule.prototype, "turnOrder", {
124
+ get: function () {
125
+ return this.remind(Memory_1.Memory.TurnOrder);
126
+ },
127
+ enumerable: false,
128
+ configurable: true
129
+ });
130
+ Object.defineProperty(RefillRule.prototype, "nextPlayer", {
131
+ get: function () {
132
+ var players = this.turnOrder;
133
+ return players[(players.indexOf(this.player) + 1) % players.length];
134
+ },
135
+ enumerable: false,
136
+ configurable: true
137
+ });
138
+ Object.defineProperty(RefillRule.prototype, "handSize", {
139
+ get: function () {
140
+ var leaderBadge = this.leaderBadge;
141
+ if (!leaderBadge.length) {
142
+ return 4;
143
+ }
144
+ else {
145
+ var item = leaderBadge.getItem();
146
+ if (!item.location.rotation) {
147
+ return 5;
148
+ }
149
+ else {
150
+ return 6;
151
+ }
152
+ }
153
+ },
154
+ enumerable: false,
155
+ configurable: true
156
+ });
157
+ RefillRule.prototype.refillHand = function (maxCount) {
158
+ var deck = this.deck;
159
+ var quantity = Math.max(0, maxCount - this.hand.length);
160
+ if (!quantity)
161
+ return [];
162
+ var moves = deck.deal({
163
+ type: LocationType_1.LocationType.PlayerHand,
164
+ player: this.player
165
+ }, quantity);
166
+ var remaining = quantity - moves.length;
167
+ if (!remaining)
168
+ return moves;
169
+ moves.push(this.discard.moveItemsAtOnce({ type: LocationType_1.LocationType.AgentDeck }));
170
+ return moves;
171
+ };
172
+ Object.defineProperty(RefillRule.prototype, "discard", {
173
+ get: function () {
174
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.AgentDiscard);
175
+ },
176
+ enumerable: false,
177
+ configurable: true
178
+ });
179
+ RefillRule.prototype.afterItemMove = function (move) {
180
+ if ((0, rules_api_1.isShuffleItemType)(MaterialType_1.MaterialType.AgentCard)(move)) {
181
+ return __spreadArray(__spreadArray([], __read(this.refillHand(this.handSize)), false), __read(this.endRuleMoves), false);
182
+ }
183
+ if ((0, rules_api_1.isMoveItemTypeAtOnce)(MaterialType_1.MaterialType.AgentCard)(move) && move.location.type === LocationType_1.LocationType.AgentDeck) {
184
+ return [this.deck.shuffle()];
185
+ }
186
+ return [];
187
+ };
188
+ Object.defineProperty(RefillRule.prototype, "hand", {
189
+ get: function () {
190
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.PlayerHand).player(this.player);
191
+ },
192
+ enumerable: false,
193
+ configurable: true
194
+ });
195
+ Object.defineProperty(RefillRule.prototype, "deck", {
196
+ get: function () {
197
+ return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.AgentDeck).deck();
198
+ },
199
+ enumerable: false,
200
+ configurable: true
201
+ });
202
+ Object.defineProperty(RefillRule.prototype, "leaderBadge", {
203
+ get: function () {
204
+ return this.material(MaterialType_1.MaterialType.LeaderBadgeToken).player(new PlayerHelper_1.PlayerHelper(this.game, this.player).team);
205
+ },
206
+ enumerable: false,
207
+ configurable: true
208
+ });
209
+ return RefillRule;
210
+ }(rules_api_1.PlayerTurnRule));
211
+ exports.RefillRule = RefillRule;
@@ -0,0 +1,27 @@
1
+ export declare enum RuleId {
2
+ Muligan = 1,
3
+ PlayCard = 2,
4
+ DiscardAction = 3,
5
+ Transfer = 4,
6
+ GiveCredit = 5,
7
+ WinCredit = 6,
8
+ SpendCredit = 7,
9
+ Conditional = 8,
10
+ WinZenithium = 9,
11
+ GiveZenithium = 10,
12
+ Exile = 11,
13
+ WinInfluence = 12,
14
+ GiveInfluence = 13,
15
+ ResetInfluence = 14,
16
+ DevelopTechnology = 15,
17
+ GiveLeaderBadge = 16,
18
+ TakeLeaderBadge = 17,
19
+ Discard = 18,
20
+ Mobilize = 19,
21
+ Choice = 20,
22
+ TakeBonus = 21,
23
+ Refill = 22,
24
+ StealCredit = 23,
25
+ SpendZenithium = 24,
26
+ TakeTechnologyBonusToken = 25
27
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RuleId = void 0;
4
+ var RuleId;
5
+ (function (RuleId) {
6
+ RuleId[RuleId["Muligan"] = 1] = "Muligan";
7
+ RuleId[RuleId["PlayCard"] = 2] = "PlayCard";
8
+ RuleId[RuleId["DiscardAction"] = 3] = "DiscardAction";
9
+ RuleId[RuleId["Transfer"] = 4] = "Transfer";
10
+ RuleId[RuleId["GiveCredit"] = 5] = "GiveCredit";
11
+ RuleId[RuleId["WinCredit"] = 6] = "WinCredit";
12
+ RuleId[RuleId["SpendCredit"] = 7] = "SpendCredit";
13
+ RuleId[RuleId["Conditional"] = 8] = "Conditional";
14
+ RuleId[RuleId["WinZenithium"] = 9] = "WinZenithium";
15
+ RuleId[RuleId["GiveZenithium"] = 10] = "GiveZenithium";
16
+ RuleId[RuleId["Exile"] = 11] = "Exile";
17
+ RuleId[RuleId["WinInfluence"] = 12] = "WinInfluence";
18
+ RuleId[RuleId["GiveInfluence"] = 13] = "GiveInfluence";
19
+ RuleId[RuleId["ResetInfluence"] = 14] = "ResetInfluence";
20
+ RuleId[RuleId["DevelopTechnology"] = 15] = "DevelopTechnology";
21
+ RuleId[RuleId["GiveLeaderBadge"] = 16] = "GiveLeaderBadge";
22
+ RuleId[RuleId["TakeLeaderBadge"] = 17] = "TakeLeaderBadge";
23
+ RuleId[RuleId["Discard"] = 18] = "Discard";
24
+ RuleId[RuleId["Mobilize"] = 19] = "Mobilize";
25
+ RuleId[RuleId["Choice"] = 20] = "Choice";
26
+ RuleId[RuleId["TakeBonus"] = 21] = "TakeBonus";
27
+ RuleId[RuleId["Refill"] = 22] = "Refill";
28
+ RuleId[RuleId["StealCredit"] = 23] = "StealCredit";
29
+ RuleId[RuleId["SpendZenithium"] = 24] = "SpendZenithium";
30
+ RuleId[RuleId["TakeTechnologyBonusToken"] = 25] = "TakeTechnologyBonusToken";
31
+ })(RuleId || (exports.RuleId = RuleId = {}));
@@ -0,0 +1,3 @@
1
+ import { Effect } from '../../material/effect/Effect';
2
+ import { Faction } from '../../material/Faction';
3
+ export declare const getDiplomacyActions: (_players: number) => Record<Faction, Effect[]>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.getDiplomacyActions = void 0;
5
+ var EffectType_1 = require("../../material/effect/EffectType");
6
+ var Faction_1 = require("../../material/Faction");
7
+ var getDiplomacyActions = function (_players) {
8
+ return TwoPlayerDiplomacyActions;
9
+ };
10
+ exports.getDiplomacyActions = getDiplomacyActions;
11
+ var TwoPlayerDiplomacyActions = (_a = {},
12
+ _a[Faction_1.Faction.Robot] = [
13
+ {
14
+ type: EffectType_1.EffectType.TakeLeaderBadge
15
+ },
16
+ {
17
+ type: EffectType_1.EffectType.WinZenithium,
18
+ quantity: 1
19
+ }
20
+ ],
21
+ _a[Faction_1.Faction.Human] = [
22
+ {
23
+ type: EffectType_1.EffectType.TakeLeaderBadge
24
+ },
25
+ {
26
+ type: EffectType_1.EffectType.WinCredit,
27
+ quantity: 3
28
+ }
29
+ ],
30
+ _a[Faction_1.Faction.Animod] = [
31
+ {
32
+ type: EffectType_1.EffectType.TakeLeaderBadge
33
+ },
34
+ {
35
+ type: EffectType_1.EffectType.Mobilize,
36
+ quantity: 2
37
+ }
38
+ ],
39
+ _a);
@@ -0,0 +1,9 @@
1
+ import { CustomMove, PlayerTurnRule } from '@gamepark/rules-api';
2
+ import { Faction } from '../../material/Faction';
3
+ import { RuleId } from '../RuleId';
4
+ export declare class DiplomacyBoardRule extends PlayerTurnRule {
5
+ getPlayerMoves(): CustomMove[];
6
+ get faction(): Faction;
7
+ applyDiplomacy(): import("@gamepark/rules-api").StartRule<RuleId>[];
8
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").StartRule<RuleId>[];
9
+ }