@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.
- package/dist/PlayerId.d.ts +1 -0
- package/dist/PlayerId.js +2 -0
- package/dist/TeamColor.d.ts +9 -0
- package/dist/TeamColor.js +16 -0
- package/dist/ZenithOptions.d.ts +5 -0
- package/dist/ZenithOptions.js +4 -0
- package/dist/ZenithRules.d.ts +68 -0
- package/dist/ZenithRules.js +128 -0
- package/dist/ZenithSetup.d.ts +24 -0
- package/dist/ZenithSetup.js +316 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +9 -0
- package/dist/material/Agent.d.ts +93 -0
- package/dist/material/Agent.js +98 -0
- package/dist/material/Agents.d.ts +102 -0
- package/dist/material/Agents.js +2305 -0
- package/dist/material/Bonus.d.ts +12 -0
- package/dist/material/Bonus.js +34 -0
- package/dist/material/Bonuses.d.ts +14 -0
- package/dist/material/Bonuses.js +63 -0
- package/dist/material/Credit.d.ts +6 -0
- package/dist/material/Credit.js +11 -0
- package/dist/material/Faction.d.ts +6 -0
- package/dist/material/Faction.js +11 -0
- package/dist/material/Influence.d.ts +8 -0
- package/dist/material/Influence.js +13 -0
- package/dist/material/LocationType.d.ts +23 -0
- package/dist/material/LocationType.js +27 -0
- package/dist/material/MaterialType.d.ts +12 -0
- package/dist/material/MaterialType.js +16 -0
- package/dist/material/effect/Effect.d.ts +144 -0
- package/dist/material/effect/Effect.js +14 -0
- package/dist/material/effect/EffectType.d.ts +23 -0
- package/dist/material/effect/EffectType.js +27 -0
- package/dist/rules/CustomMoveType.d.ts +8 -0
- package/dist/rules/CustomMoveType.js +12 -0
- package/dist/rules/DiscardActionRule.d.ts +8 -0
- package/dist/rules/DiscardActionRule.js +84 -0
- package/dist/rules/Memory.d.ts +25 -0
- package/dist/rules/Memory.js +19 -0
- package/dist/rules/MulliganRule.d.ts +12 -0
- package/dist/rules/MulliganRule.js +138 -0
- package/dist/rules/PlayCardRule.d.ts +15 -0
- package/dist/rules/PlayCardRule.js +147 -0
- package/dist/rules/RefillRule.d.ts +17 -0
- package/dist/rules/RefillRule.js +211 -0
- package/dist/rules/RuleId.d.ts +27 -0
- package/dist/rules/RuleId.js +31 -0
- package/dist/rules/discard-action/DiplomacyActions.d.ts +3 -0
- package/dist/rules/discard-action/DiplomacyActions.js +39 -0
- package/dist/rules/discard-action/DiplomacyBoardRule.d.ts +9 -0
- package/dist/rules/discard-action/DiplomacyBoardRule.js +68 -0
- package/dist/rules/discard-action/TechnologyActions.d.ts +3 -0
- package/dist/rules/discard-action/TechnologyActions.js +187 -0
- package/dist/rules/discard-action/TechnologyBoardRule.d.ts +8 -0
- package/dist/rules/discard-action/TechnologyBoardRule.js +109 -0
- package/dist/rules/effect/ChoiceRule.d.ts +12 -0
- package/dist/rules/effect/ChoiceRule.js +91 -0
- package/dist/rules/effect/ConditionalRule.d.ts +17 -0
- package/dist/rules/effect/ConditionalRule.js +197 -0
- package/dist/rules/effect/DevelopTechnologyRule.d.ts +11 -0
- package/dist/rules/effect/DevelopTechnologyRule.js +133 -0
- package/dist/rules/effect/DiscardRule.d.ts +18 -0
- package/dist/rules/effect/DiscardRule.js +107 -0
- package/dist/rules/effect/EffectRule.d.ts +27 -0
- package/dist/rules/effect/EffectRule.js +161 -0
- package/dist/rules/effect/ExileRule.d.ts +22 -0
- package/dist/rules/effect/ExileRule.js +182 -0
- package/dist/rules/effect/GiveCreditRule.d.ts +13 -0
- package/dist/rules/effect/GiveCreditRule.js +79 -0
- package/dist/rules/effect/GiveInfluenceRule.d.ts +10 -0
- package/dist/rules/effect/GiveInfluenceRule.js +119 -0
- package/dist/rules/effect/GiveLeaderBadgeRule.d.ts +9 -0
- package/dist/rules/effect/GiveLeaderBadgeRule.js +54 -0
- package/dist/rules/effect/GiveZenithiumRule.d.ts +9 -0
- package/dist/rules/effect/GiveZenithiumRule.js +85 -0
- package/dist/rules/effect/MobilizeRule.d.ts +18 -0
- package/dist/rules/effect/MobilizeRule.js +117 -0
- package/dist/rules/effect/ResetInfluenceRule.d.ts +9 -0
- package/dist/rules/effect/ResetInfluenceRule.js +63 -0
- package/dist/rules/effect/SpendCreditRule.d.ts +16 -0
- package/dist/rules/effect/SpendCreditRule.js +109 -0
- package/dist/rules/effect/SpendZenithiumRule.d.ts +17 -0
- package/dist/rules/effect/SpendZenithiumRule.js +116 -0
- package/dist/rules/effect/StealCreditRule.d.ts +7 -0
- package/dist/rules/effect/StealCreditRule.js +67 -0
- package/dist/rules/effect/TakeBonusRule.d.ts +11 -0
- package/dist/rules/effect/TakeBonusRule.js +98 -0
- package/dist/rules/effect/TakeLeaderBadgeRule.d.ts +9 -0
- package/dist/rules/effect/TakeLeaderBadgeRule.js +102 -0
- package/dist/rules/effect/TakeTechnologyBonusTokenRule.d.ts +11 -0
- package/dist/rules/effect/TakeTechnologyBonusTokenRule.js +122 -0
- package/dist/rules/effect/TransferRule.d.ts +19 -0
- package/dist/rules/effect/TransferRule.js +104 -0
- package/dist/rules/effect/WinCreditRule.d.ts +13 -0
- package/dist/rules/effect/WinCreditRule.js +142 -0
- package/dist/rules/effect/WinInfluenceRule.d.ts +23 -0
- package/dist/rules/effect/WinInfluenceRule.js +328 -0
- package/dist/rules/effect/WinZenithiumRule.d.ts +9 -0
- package/dist/rules/effect/WinZenithiumRule.js +92 -0
- package/dist/rules/effect/index.d.ts +19 -0
- package/dist/rules/effect/index.js +35 -0
- package/dist/rules/helper/BonusHelper.d.ts +15 -0
- package/dist/rules/helper/BonusHelper.js +86 -0
- package/dist/rules/helper/CreditHelper.d.ts +9 -0
- package/dist/rules/helper/CreditHelper.js +45 -0
- package/dist/rules/helper/EffectHelper.d.ts +16 -0
- package/dist/rules/helper/EffectHelper.js +133 -0
- package/dist/rules/helper/EffectRuleIds.d.ts +3 -0
- package/dist/rules/helper/EffectRuleIds.js +29 -0
- package/dist/rules/helper/EndGameHelper.d.ts +13 -0
- package/dist/rules/helper/EndGameHelper.js +70 -0
- package/dist/rules/helper/InfluenceHelper.d.ts +13 -0
- package/dist/rules/helper/InfluenceHelper.js +47 -0
- package/dist/rules/helper/MobilizeHelper.d.ts +10 -0
- package/dist/rules/helper/MobilizeHelper.js +56 -0
- package/dist/rules/helper/PlanetHelper.d.ts +19 -0
- package/dist/rules/helper/PlanetHelper.js +104 -0
- package/dist/rules/helper/PlayerHelper.d.ts +12 -0
- package/dist/rules/helper/PlayerHelper.js +61 -0
- package/dist/rules/helper/TechnologyHelper.d.ts +4 -0
- package/dist/rules/helper/TechnologyHelper.js +96 -0
- package/dist/rules/helper/ZenithiumHelper.d.ts +10 -0
- package/dist/rules/helper/ZenithiumHelper.js +59 -0
- 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,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
|
+
}
|