@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,133 @@
|
|
|
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 __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.getEffectRule = exports.EffectHelper = void 0;
|
|
30
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
31
|
+
var Agents_1 = require("../../material/Agents");
|
|
32
|
+
var EffectType_1 = require("../../material/effect/EffectType");
|
|
33
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
34
|
+
var effect_1 = require("../effect");
|
|
35
|
+
var SpendZenithiumRule_1 = require("../effect/SpendZenithiumRule");
|
|
36
|
+
var StealCreditRule_1 = require("../effect/StealCreditRule");
|
|
37
|
+
var TakeTechnologyBonusTokenRule_1 = require("../effect/TakeTechnologyBonusTokenRule");
|
|
38
|
+
var Memory_1 = require("../Memory");
|
|
39
|
+
var EffectRuleIds_1 = require("./EffectRuleIds");
|
|
40
|
+
var EffectHelper = (function (_super) {
|
|
41
|
+
__extends(EffectHelper, _super);
|
|
42
|
+
function EffectHelper(game, player) {
|
|
43
|
+
var _this = _super.call(this, game) || this;
|
|
44
|
+
_this.player = player;
|
|
45
|
+
return _this;
|
|
46
|
+
}
|
|
47
|
+
EffectHelper.prototype.applyCard = function (item) {
|
|
48
|
+
var agent = Agents_1.Agents[item.id];
|
|
49
|
+
this.memorize(Memory_1.Memory.Effects, JSON.parse(JSON.stringify(agent.effects.map(function (e) { return (__assign(__assign({}, e), { effectSource: {
|
|
50
|
+
type: MaterialType_1.MaterialType.AgentCard,
|
|
51
|
+
value: item.id
|
|
52
|
+
} })); }))));
|
|
53
|
+
return this.applyFirstEffect();
|
|
54
|
+
};
|
|
55
|
+
EffectHelper.prototype.applyFirstEffect = function () {
|
|
56
|
+
var effect = this.effect;
|
|
57
|
+
if (!effect) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
return [this.startRule(this.effectRuleIds[effect.type])];
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(EffectHelper.prototype, "effect", {
|
|
63
|
+
get: function () {
|
|
64
|
+
var effects = this.effects;
|
|
65
|
+
return effects[0];
|
|
66
|
+
},
|
|
67
|
+
enumerable: false,
|
|
68
|
+
configurable: true
|
|
69
|
+
});
|
|
70
|
+
Object.defineProperty(EffectHelper.prototype, "effects", {
|
|
71
|
+
get: function () {
|
|
72
|
+
return this.remind(Memory_1.Memory.Effects);
|
|
73
|
+
},
|
|
74
|
+
enumerable: false,
|
|
75
|
+
configurable: true
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(EffectHelper.prototype, "effectRuleIds", {
|
|
78
|
+
get: function () {
|
|
79
|
+
return EffectRuleIds_1.EffectRuleIds;
|
|
80
|
+
},
|
|
81
|
+
enumerable: false,
|
|
82
|
+
configurable: true
|
|
83
|
+
});
|
|
84
|
+
return EffectHelper;
|
|
85
|
+
}(rules_api_1.MaterialRulesPart));
|
|
86
|
+
exports.EffectHelper = EffectHelper;
|
|
87
|
+
var getEffectRule = function (game, effect) {
|
|
88
|
+
switch (effect.type) {
|
|
89
|
+
case EffectType_1.EffectType.ResetInfluence:
|
|
90
|
+
return new effect_1.ResetInfluenceRule(game, effect);
|
|
91
|
+
case EffectType_1.EffectType.WinCredit:
|
|
92
|
+
return new effect_1.WinCreditRule(game, effect);
|
|
93
|
+
case EffectType_1.EffectType.SpendCredit:
|
|
94
|
+
return new effect_1.SpendCreditRule(game, effect);
|
|
95
|
+
case EffectType_1.EffectType.WinZenithium:
|
|
96
|
+
return new effect_1.WinZenithiumRule(game, effect);
|
|
97
|
+
case EffectType_1.EffectType.GiveZenithium:
|
|
98
|
+
return new effect_1.GiveZenithiumRule(game, effect);
|
|
99
|
+
case EffectType_1.EffectType.Exile:
|
|
100
|
+
return new effect_1.ExileRule(game, effect);
|
|
101
|
+
case EffectType_1.EffectType.DevelopTechnology:
|
|
102
|
+
return new effect_1.DevelopTechnologyRule(game, effect);
|
|
103
|
+
case EffectType_1.EffectType.GiveLeaderBadge:
|
|
104
|
+
return new effect_1.GiveLeaderBadgeRule(game, effect);
|
|
105
|
+
case EffectType_1.EffectType.TakeLeaderBadge:
|
|
106
|
+
return new effect_1.TakeLeaderBadgeRule(game, effect);
|
|
107
|
+
case EffectType_1.EffectType.Discard:
|
|
108
|
+
return new effect_1.DiscardRule(game, effect);
|
|
109
|
+
case EffectType_1.EffectType.Mobilize:
|
|
110
|
+
return new effect_1.MobilizeRule(game, effect);
|
|
111
|
+
case EffectType_1.EffectType.Choice:
|
|
112
|
+
return new effect_1.ChoiceRule(game, effect);
|
|
113
|
+
case EffectType_1.EffectType.TakeBonus:
|
|
114
|
+
return new effect_1.TakeBonusRule(game, effect);
|
|
115
|
+
case EffectType_1.EffectType.GiveInfluence:
|
|
116
|
+
return new effect_1.GiveInfluenceRule(game, effect);
|
|
117
|
+
case EffectType_1.EffectType.WinInfluence:
|
|
118
|
+
return new effect_1.WinInfluenceRule(game, effect);
|
|
119
|
+
case EffectType_1.EffectType.Conditional:
|
|
120
|
+
return new effect_1.ConditionalRule(game, effect);
|
|
121
|
+
case EffectType_1.EffectType.Transfer:
|
|
122
|
+
return new effect_1.TransferRule(game, effect);
|
|
123
|
+
case EffectType_1.EffectType.GiveCredit:
|
|
124
|
+
return new effect_1.GiveCreditRule(game, effect);
|
|
125
|
+
case EffectType_1.EffectType.StealCredit:
|
|
126
|
+
return new StealCreditRule_1.StealCreditRule(game, effect);
|
|
127
|
+
case EffectType_1.EffectType.SpendZenithium:
|
|
128
|
+
return new SpendZenithiumRule_1.SpendZenithiumRule(game, effect);
|
|
129
|
+
case EffectType_1.EffectType.TakeTechnologyBonusToken:
|
|
130
|
+
return new TakeTechnologyBonusTokenRule_1.TakeTechnologyBonusTokenRule(game, effect);
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
exports.getEffectRule = getEffectRule;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.EffectRuleIds = void 0;
|
|
5
|
+
var EffectType_1 = require("../../material/effect/EffectType");
|
|
6
|
+
var RuleId_1 = require("../RuleId");
|
|
7
|
+
exports.EffectRuleIds = (_a = {},
|
|
8
|
+
_a[EffectType_1.EffectType.Transfer] = RuleId_1.RuleId.Transfer,
|
|
9
|
+
_a[EffectType_1.EffectType.GiveCredit] = RuleId_1.RuleId.GiveCredit,
|
|
10
|
+
_a[EffectType_1.EffectType.WinCredit] = RuleId_1.RuleId.WinCredit,
|
|
11
|
+
_a[EffectType_1.EffectType.SpendCredit] = RuleId_1.RuleId.SpendCredit,
|
|
12
|
+
_a[EffectType_1.EffectType.Conditional] = RuleId_1.RuleId.Conditional,
|
|
13
|
+
_a[EffectType_1.EffectType.WinZenithium] = RuleId_1.RuleId.WinZenithium,
|
|
14
|
+
_a[EffectType_1.EffectType.GiveZenithium] = RuleId_1.RuleId.GiveZenithium,
|
|
15
|
+
_a[EffectType_1.EffectType.Exile] = RuleId_1.RuleId.Exile,
|
|
16
|
+
_a[EffectType_1.EffectType.WinInfluence] = RuleId_1.RuleId.WinInfluence,
|
|
17
|
+
_a[EffectType_1.EffectType.GiveInfluence] = RuleId_1.RuleId.GiveInfluence,
|
|
18
|
+
_a[EffectType_1.EffectType.ResetInfluence] = RuleId_1.RuleId.ResetInfluence,
|
|
19
|
+
_a[EffectType_1.EffectType.DevelopTechnology] = RuleId_1.RuleId.DevelopTechnology,
|
|
20
|
+
_a[EffectType_1.EffectType.GiveLeaderBadge] = RuleId_1.RuleId.GiveLeaderBadge,
|
|
21
|
+
_a[EffectType_1.EffectType.TakeLeaderBadge] = RuleId_1.RuleId.TakeLeaderBadge,
|
|
22
|
+
_a[EffectType_1.EffectType.Discard] = RuleId_1.RuleId.Discard,
|
|
23
|
+
_a[EffectType_1.EffectType.Mobilize] = RuleId_1.RuleId.Mobilize,
|
|
24
|
+
_a[EffectType_1.EffectType.Choice] = RuleId_1.RuleId.Choice,
|
|
25
|
+
_a[EffectType_1.EffectType.TakeBonus] = RuleId_1.RuleId.TakeBonus,
|
|
26
|
+
_a[EffectType_1.EffectType.StealCredit] = RuleId_1.RuleId.StealCredit,
|
|
27
|
+
_a[EffectType_1.EffectType.SpendZenithium] = RuleId_1.RuleId.SpendZenithium,
|
|
28
|
+
_a[EffectType_1.EffectType.TakeTechnologyBonusToken] = RuleId_1.RuleId.TakeTechnologyBonusToken,
|
|
29
|
+
_a);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Material, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { Influence } from '../../material/Influence';
|
|
3
|
+
import { TeamColor } from '../../TeamColor';
|
|
4
|
+
export declare class EndGameHelper extends MaterialRulesPart {
|
|
5
|
+
willEnd(team: TeamColor, planets?: Material<number, number, number>): boolean;
|
|
6
|
+
get winningTeam(): TeamColor | undefined;
|
|
7
|
+
getTeamPlanet(team: TeamColor): Material<number, number, number>;
|
|
8
|
+
getCountDifferentInfluence(planets: Material): number;
|
|
9
|
+
getMaxSameInfluence(planets: Material): {
|
|
10
|
+
influence: Influence;
|
|
11
|
+
count: number;
|
|
12
|
+
} | undefined;
|
|
13
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.EndGameHelper = void 0;
|
|
22
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
23
|
+
var lodash_1 = require("lodash");
|
|
24
|
+
var maxBy_1 = __importDefault(require("lodash/maxBy"));
|
|
25
|
+
var Influence_1 = require("../../material/Influence");
|
|
26
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
27
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
28
|
+
var TeamColor_1 = require("../../TeamColor");
|
|
29
|
+
var EndGameHelper = (function (_super) {
|
|
30
|
+
__extends(EndGameHelper, _super);
|
|
31
|
+
function EndGameHelper() {
|
|
32
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
33
|
+
}
|
|
34
|
+
EndGameHelper.prototype.willEnd = function (team, planets) {
|
|
35
|
+
if (planets === void 0) { planets = this.getTeamPlanet(team); }
|
|
36
|
+
if (planets.length === 5)
|
|
37
|
+
return true;
|
|
38
|
+
var maxSameInfluence = this.getMaxSameInfluence(planets);
|
|
39
|
+
if (maxSameInfluence && maxSameInfluence.count >= 3)
|
|
40
|
+
return true;
|
|
41
|
+
if (this.getCountDifferentInfluence(planets) >= 4)
|
|
42
|
+
return true;
|
|
43
|
+
return false;
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(EndGameHelper.prototype, "winningTeam", {
|
|
46
|
+
get: function () {
|
|
47
|
+
var _this = this;
|
|
48
|
+
return TeamColor_1.teamColors.find(function (team) { return _this.willEnd(team); });
|
|
49
|
+
},
|
|
50
|
+
enumerable: false,
|
|
51
|
+
configurable: true
|
|
52
|
+
});
|
|
53
|
+
EndGameHelper.prototype.getTeamPlanet = function (team) {
|
|
54
|
+
return this.material(MaterialType_1.MaterialType.InfluenceDisc).location(LocationType_1.LocationType.TeamPlanets).player(team);
|
|
55
|
+
};
|
|
56
|
+
EndGameHelper.prototype.getCountDifferentInfluence = function (planets) {
|
|
57
|
+
return (0, lodash_1.uniqBy)(planets.getItems(), function (item) { return item.id; }).length;
|
|
58
|
+
};
|
|
59
|
+
EndGameHelper.prototype.getMaxSameInfluence = function (planets) {
|
|
60
|
+
var maxInfluence = (0, maxBy_1.default)(Influence_1.influences, function (i) { return planets.id(i).length; });
|
|
61
|
+
if (!maxInfluence)
|
|
62
|
+
return;
|
|
63
|
+
return {
|
|
64
|
+
influence: maxInfluence,
|
|
65
|
+
count: planets.id(maxInfluence).length
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
return EndGameHelper;
|
|
69
|
+
}(rules_api_1.MaterialRulesPart));
|
|
70
|
+
exports.EndGameHelper = EndGameHelper;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MaterialGame, MaterialItem, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { Agent } from '../../material/Agent';
|
|
3
|
+
import { Influence } from '../../material/Influence';
|
|
4
|
+
import { LocationType } from '../../material/LocationType';
|
|
5
|
+
import { PlayerId } from '../../PlayerId';
|
|
6
|
+
import { TeamColor } from '../../TeamColor';
|
|
7
|
+
export declare class InfluenceHelper extends MaterialRulesPart {
|
|
8
|
+
readonly team: TeamColor;
|
|
9
|
+
constructor(game: MaterialGame, team: TeamColor);
|
|
10
|
+
getCost(item: MaterialItem<PlayerId, LocationType, Agent | undefined>, decreaseInfluenceBy?: number): number;
|
|
11
|
+
getInfluence(influence: Influence): import("@gamepark/rules-api").Material<number, number, number>;
|
|
12
|
+
get influence(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.InfluenceHelper = void 0;
|
|
19
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var Agents_1 = require("../../material/Agents");
|
|
21
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
22
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
23
|
+
var InfluenceHelper = (function (_super) {
|
|
24
|
+
__extends(InfluenceHelper, _super);
|
|
25
|
+
function InfluenceHelper(game, team) {
|
|
26
|
+
var _this = _super.call(this, game) || this;
|
|
27
|
+
_this.team = team;
|
|
28
|
+
return _this;
|
|
29
|
+
}
|
|
30
|
+
InfluenceHelper.prototype.getCost = function (item, decreaseInfluenceBy) {
|
|
31
|
+
if (decreaseInfluenceBy === void 0) { decreaseInfluenceBy = 0; }
|
|
32
|
+
var description = Agents_1.Agents[item.id];
|
|
33
|
+
return Math.max(0, description.cost - (this.getInfluence(description.influence).length - decreaseInfluenceBy));
|
|
34
|
+
};
|
|
35
|
+
InfluenceHelper.prototype.getInfluence = function (influence) {
|
|
36
|
+
return this.influence.locationId(influence);
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(InfluenceHelper.prototype, "influence", {
|
|
39
|
+
get: function () {
|
|
40
|
+
return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.Influence).player(this.team);
|
|
41
|
+
},
|
|
42
|
+
enumerable: false,
|
|
43
|
+
configurable: true
|
|
44
|
+
});
|
|
45
|
+
return InfluenceHelper;
|
|
46
|
+
}(rules_api_1.MaterialRulesPart));
|
|
47
|
+
exports.InfluenceHelper = InfluenceHelper;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MaterialGame, MaterialMove, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { PlayerId } from '../../PlayerId';
|
|
3
|
+
export declare class MobilizeHelper extends MaterialRulesPart {
|
|
4
|
+
readonly player: PlayerId;
|
|
5
|
+
private playerHelper;
|
|
6
|
+
constructor(game: MaterialGame, player: PlayerId);
|
|
7
|
+
mobilize(): MaterialMove[];
|
|
8
|
+
isPossible(): boolean;
|
|
9
|
+
get deck(): import("@gamepark/rules-api").MaterialDeck<number, number, number>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.MobilizeHelper = void 0;
|
|
19
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var Agents_1 = require("../../material/Agents");
|
|
21
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
22
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
23
|
+
var PlayerHelper_1 = require("./PlayerHelper");
|
|
24
|
+
var MobilizeHelper = (function (_super) {
|
|
25
|
+
__extends(MobilizeHelper, _super);
|
|
26
|
+
function MobilizeHelper(game, player) {
|
|
27
|
+
var _this = _super.call(this, game) || this;
|
|
28
|
+
_this.player = player;
|
|
29
|
+
_this.playerHelper = new PlayerHelper_1.PlayerHelper(game, player);
|
|
30
|
+
return _this;
|
|
31
|
+
}
|
|
32
|
+
MobilizeHelper.prototype.mobilize = function () {
|
|
33
|
+
var _this = this;
|
|
34
|
+
var _a;
|
|
35
|
+
var agent = this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.AgentDeck).deck().limit(1);
|
|
36
|
+
if (!agent.length || !((_a = agent.getItem()) === null || _a === void 0 ? void 0 : _a.id))
|
|
37
|
+
return [];
|
|
38
|
+
return agent.moveItems(function (item) { return ({
|
|
39
|
+
type: LocationType_1.LocationType.Influence,
|
|
40
|
+
id: Agents_1.Agents[item.id].influence,
|
|
41
|
+
player: _this.playerHelper.team
|
|
42
|
+
}); });
|
|
43
|
+
};
|
|
44
|
+
MobilizeHelper.prototype.isPossible = function () {
|
|
45
|
+
return this.deck.length > 0;
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(MobilizeHelper.prototype, "deck", {
|
|
48
|
+
get: function () {
|
|
49
|
+
return this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.AgentDeck).deck();
|
|
50
|
+
},
|
|
51
|
+
enumerable: false,
|
|
52
|
+
configurable: true
|
|
53
|
+
});
|
|
54
|
+
return MobilizeHelper;
|
|
55
|
+
}(rules_api_1.MaterialRulesPart));
|
|
56
|
+
exports.MobilizeHelper = MobilizeHelper;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Material, MaterialGame, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { GiveInfluenceEffect, ResetInfluenceEffect, WinInfluenceEffect } from '../../material/effect/Effect';
|
|
3
|
+
import { Influence } from '../../material/Influence';
|
|
4
|
+
import { PlayerId } from '../../PlayerId';
|
|
5
|
+
export declare class PlanetHelper extends MaterialRulesPart {
|
|
6
|
+
readonly player: PlayerId;
|
|
7
|
+
private playerHelper;
|
|
8
|
+
constructor(game: MaterialGame, player: PlayerId);
|
|
9
|
+
getPushablePlanets(effect: GiveInfluenceEffect): Material;
|
|
10
|
+
getPullablePlanets(effect: WinInfluenceEffect): Material;
|
|
11
|
+
getResetablePlanets(): Material<number, number, number>;
|
|
12
|
+
isPossibleToPull(effect: WinInfluenceEffect): boolean;
|
|
13
|
+
isPossibleToPush(effect: GiveInfluenceEffect): boolean;
|
|
14
|
+
isAlreadyPlayed(influence: Influence): boolean | undefined;
|
|
15
|
+
get alreadyPlayedPlanets(): Influence[] | undefined;
|
|
16
|
+
isPossibleToReset(_effect: ResetInfluenceEffect): boolean;
|
|
17
|
+
get planets(): Material<number, number, number>;
|
|
18
|
+
getPlanet(influence: Influence): Material<number, number, number>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.PlanetHelper = void 0;
|
|
19
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
21
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
22
|
+
var TeamColor_1 = require("../../TeamColor");
|
|
23
|
+
var Memory_1 = require("../Memory");
|
|
24
|
+
var PlayerHelper_1 = require("./PlayerHelper");
|
|
25
|
+
var PlanetHelper = (function (_super) {
|
|
26
|
+
__extends(PlanetHelper, _super);
|
|
27
|
+
function PlanetHelper(game, player) {
|
|
28
|
+
var _this = _super.call(this, game) || this;
|
|
29
|
+
_this.player = player;
|
|
30
|
+
_this.playerHelper = new PlayerHelper_1.PlayerHelper(game, player);
|
|
31
|
+
return _this;
|
|
32
|
+
}
|
|
33
|
+
PlanetHelper.prototype.getPushablePlanets = function (effect) {
|
|
34
|
+
var planets = this.planets;
|
|
35
|
+
if (effect.except)
|
|
36
|
+
return planets.filter(function (item) { return item.id !== effect.except; });
|
|
37
|
+
return planets;
|
|
38
|
+
};
|
|
39
|
+
PlanetHelper.prototype.getPullablePlanets = function (effect) {
|
|
40
|
+
var _this = this;
|
|
41
|
+
var _a;
|
|
42
|
+
var planets = this.planets;
|
|
43
|
+
var filteredPlanets = effect.differentPlanet && ((_a = this.alreadyPlayedPlanets) === null || _a === void 0 ? void 0 : _a.length) ? planets.id(function (id) { return !_this.isAlreadyPlayed(id); }) : planets;
|
|
44
|
+
if (!filteredPlanets.length)
|
|
45
|
+
return filteredPlanets;
|
|
46
|
+
if (effect.fromCenter) {
|
|
47
|
+
var centeredPlanets = filteredPlanets.filter(function (planet) { return planet.location.x === 0; });
|
|
48
|
+
if (!centeredPlanets.length)
|
|
49
|
+
return centeredPlanets;
|
|
50
|
+
if (effect.influence)
|
|
51
|
+
return centeredPlanets.id(effect.influence);
|
|
52
|
+
}
|
|
53
|
+
else if (effect.opponentSide) {
|
|
54
|
+
var opponentSidePlanets = filteredPlanets.filter(function (planet) {
|
|
55
|
+
return _this.playerHelper.team === TeamColor_1.TeamColor.White ? planet.location.x < 0 : planet.location.x > 0;
|
|
56
|
+
});
|
|
57
|
+
if (!opponentSidePlanets.length)
|
|
58
|
+
return opponentSidePlanets;
|
|
59
|
+
if (effect.influence)
|
|
60
|
+
return opponentSidePlanets.id(effect.influence);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
if (effect.influence) {
|
|
64
|
+
return planets.id(effect.influence);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return planets;
|
|
68
|
+
};
|
|
69
|
+
PlanetHelper.prototype.getResetablePlanets = function () {
|
|
70
|
+
return this.planets.filter(function (planet) { return planet.location.x !== 0; });
|
|
71
|
+
};
|
|
72
|
+
PlanetHelper.prototype.isPossibleToPull = function (effect) {
|
|
73
|
+
return this.getPullablePlanets(effect).length > 0;
|
|
74
|
+
};
|
|
75
|
+
PlanetHelper.prototype.isPossibleToPush = function (effect) {
|
|
76
|
+
return this.getPushablePlanets(effect).length > 0;
|
|
77
|
+
};
|
|
78
|
+
PlanetHelper.prototype.isAlreadyPlayed = function (influence) {
|
|
79
|
+
var _a;
|
|
80
|
+
return (_a = this.alreadyPlayedPlanets) === null || _a === void 0 ? void 0 : _a.includes(influence);
|
|
81
|
+
};
|
|
82
|
+
Object.defineProperty(PlanetHelper.prototype, "alreadyPlayedPlanets", {
|
|
83
|
+
get: function () {
|
|
84
|
+
return this.remind(Memory_1.Memory.LastPlanetsMoved);
|
|
85
|
+
},
|
|
86
|
+
enumerable: false,
|
|
87
|
+
configurable: true
|
|
88
|
+
});
|
|
89
|
+
PlanetHelper.prototype.isPossibleToReset = function (_effect) {
|
|
90
|
+
return this.getResetablePlanets().length > 0;
|
|
91
|
+
};
|
|
92
|
+
Object.defineProperty(PlanetHelper.prototype, "planets", {
|
|
93
|
+
get: function () {
|
|
94
|
+
return this.material(MaterialType_1.MaterialType.InfluenceDisc).location(LocationType_1.LocationType.PlanetBoardInfluenceDiscSpace);
|
|
95
|
+
},
|
|
96
|
+
enumerable: false,
|
|
97
|
+
configurable: true
|
|
98
|
+
});
|
|
99
|
+
PlanetHelper.prototype.getPlanet = function (influence) {
|
|
100
|
+
return this.material(MaterialType_1.MaterialType.InfluenceDisc).location(LocationType_1.LocationType.PlanetBoardInfluenceDiscSpace).id(influence);
|
|
101
|
+
};
|
|
102
|
+
return PlanetHelper;
|
|
103
|
+
}(rules_api_1.MaterialRulesPart));
|
|
104
|
+
exports.PlanetHelper = PlanetHelper;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MaterialGame, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { PlayerId } from '../../PlayerId';
|
|
3
|
+
import { TeamColor } from '../../TeamColor';
|
|
4
|
+
export declare class PlayerHelper extends MaterialRulesPart {
|
|
5
|
+
readonly playerId: PlayerId;
|
|
6
|
+
team: TeamColor;
|
|
7
|
+
constructor(game: MaterialGame, playerId: PlayerId);
|
|
8
|
+
get credits(): number;
|
|
9
|
+
get zenithium(): number;
|
|
10
|
+
get zenithiumMaterial(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
11
|
+
get isLeader(): boolean;
|
|
12
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.PlayerHelper = void 0;
|
|
19
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var Credit_1 = require("../../material/Credit");
|
|
21
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
22
|
+
var TeamColor_1 = require("../../TeamColor");
|
|
23
|
+
var PlayerHelper = (function (_super) {
|
|
24
|
+
__extends(PlayerHelper, _super);
|
|
25
|
+
function PlayerHelper(game, playerId) {
|
|
26
|
+
var _this = _super.call(this, game) || this;
|
|
27
|
+
_this.playerId = playerId;
|
|
28
|
+
_this.team = (0, TeamColor_1.getTeamColor)(playerId);
|
|
29
|
+
return _this;
|
|
30
|
+
}
|
|
31
|
+
Object.defineProperty(PlayerHelper.prototype, "credits", {
|
|
32
|
+
get: function () {
|
|
33
|
+
return this.material(MaterialType_1.MaterialType.CreditToken).money(Credit_1.credits).player(this.team).count;
|
|
34
|
+
},
|
|
35
|
+
enumerable: false,
|
|
36
|
+
configurable: true
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(PlayerHelper.prototype, "zenithium", {
|
|
39
|
+
get: function () {
|
|
40
|
+
return this.zenithiumMaterial.getQuantity();
|
|
41
|
+
},
|
|
42
|
+
enumerable: false,
|
|
43
|
+
configurable: true
|
|
44
|
+
});
|
|
45
|
+
Object.defineProperty(PlayerHelper.prototype, "zenithiumMaterial", {
|
|
46
|
+
get: function () {
|
|
47
|
+
return this.material(MaterialType_1.MaterialType.ZenithiumToken).player(this.team);
|
|
48
|
+
},
|
|
49
|
+
enumerable: false,
|
|
50
|
+
configurable: true
|
|
51
|
+
});
|
|
52
|
+
Object.defineProperty(PlayerHelper.prototype, "isLeader", {
|
|
53
|
+
get: function () {
|
|
54
|
+
return this.material(MaterialType_1.MaterialType.LeaderBadgeToken).player(this.team).length > 0;
|
|
55
|
+
},
|
|
56
|
+
enumerable: false,
|
|
57
|
+
configurable: true
|
|
58
|
+
});
|
|
59
|
+
return PlayerHelper;
|
|
60
|
+
}(rules_api_1.MaterialRulesPart));
|
|
61
|
+
exports.PlayerHelper = PlayerHelper;
|