@gamepark/zenith 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PlayerId.js +1 -2
- package/dist/TeamColor.js +7 -13
- package/dist/ZenithOptions.js +1 -4
- package/dist/ZenithRules.js +71 -122
- package/dist/ZenithSetup.js +123 -266
- package/dist/index.js +3 -9
- package/dist/material/Agent.js +4 -7
- package/dist/material/Agents.js +920 -923
- package/dist/material/Bonus.js +5 -8
- package/dist/material/Bonuses.js +29 -33
- package/dist/material/Credit.js +4 -7
- package/dist/material/Faction.js +4 -7
- package/dist/material/Influence.js +4 -7
- package/dist/material/LocationType.js +2 -5
- package/dist/material/MaterialType.js +2 -5
- package/dist/material/effect/Effect.js +5 -10
- package/dist/material/effect/EffectType.js +2 -5
- package/dist/rules/CustomMoveType.js +2 -5
- package/dist/rules/DiscardActionRule.js +26 -75
- package/dist/rules/Memory.js +2 -5
- package/dist/rules/MulliganRule.js +47 -126
- package/dist/rules/PlayCardRule.js +68 -134
- package/dist/rules/RefillRule.js +83 -190
- package/dist/rules/RuleId.js +2 -5
- package/dist/rules/discard-action/DiplomacyActions.js +15 -20
- package/dist/rules/discard-action/DiplomacyBoardRule.js +27 -64
- package/dist/rules/discard-action/TechnologyActions.js +44 -48
- package/dist/rules/discard-action/TechnologyBoardRule.js +34 -102
- package/dist/rules/effect/ChoiceRule.js +21 -81
- package/dist/rules/effect/ConditionalRule.js +77 -141
- package/dist/rules/effect/DevelopTechnologyRule.js +53 -119
- package/dist/rules/effect/DiscardRule.js +37 -90
- package/dist/rules/effect/EffectRule.js +60 -138
- package/dist/rules/effect/ExileRule.js +62 -147
- package/dist/rules/effect/GiveCreditRule.js +24 -73
- package/dist/rules/effect/GiveInfluenceRule.js +38 -101
- package/dist/rules/effect/GiveLeaderBadgeRule.js +18 -46
- package/dist/rules/effect/GiveZenithiumRule.js +25 -79
- package/dist/rules/effect/MobilizeRule.js +38 -93
- package/dist/rules/effect/ResetInfluenceRule.js +21 -58
- package/dist/rules/effect/SpendCreditRule.js +29 -102
- package/dist/rules/effect/SpendZenithiumRule.js +32 -109
- package/dist/rules/effect/StealCreditRule.js +15 -64
- package/dist/rules/effect/TakeBonusRule.js +30 -91
- package/dist/rules/effect/TakeLeaderBadgeRule.js +31 -88
- package/dist/rules/effect/TakeTechnologyBonusTokenRule.js +45 -112
- package/dist/rules/effect/TransferRule.js +47 -81
- package/dist/rules/effect/WinCreditRule.js +60 -130
- package/dist/rules/effect/WinInfluenceRule.js +128 -248
- package/dist/rules/effect/WinZenithiumRule.js +24 -80
- package/dist/rules/effect/index.js +19 -35
- package/dist/rules/helper/BonusHelper.js +32 -64
- package/dist/rules/helper/CreditHelper.js +19 -44
- package/dist/rules/helper/EffectHelper.js +81 -123
- package/dist/rules/helper/EffectRuleIds.js +25 -29
- package/dist/rules/helper/EndGameHelper.js +24 -57
- package/dist/rules/helper/InfluenceHelper.js +18 -44
- package/dist/rules/helper/MobilizeHelper.js +27 -53
- package/dist/rules/helper/PlanetHelper.js +45 -78
- package/dist/rules/helper/PlayerHelper.js +24 -60
- package/dist/rules/helper/TechnologyHelper.js +31 -87
- package/dist/rules/helper/ZenithiumHelper.js +25 -48
- package/package.json +4 -3
|
@@ -1,56 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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;
|
|
1
|
+
import { MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { Agents } from '../../material/Agents';
|
|
3
|
+
import { LocationType } from '../../material/LocationType';
|
|
4
|
+
import { MaterialType } from '../../material/MaterialType';
|
|
5
|
+
import { PlayerHelper } from './PlayerHelper';
|
|
6
|
+
export class MobilizeHelper extends MaterialRulesPart {
|
|
7
|
+
player;
|
|
8
|
+
playerHelper;
|
|
9
|
+
constructor(game, player) {
|
|
10
|
+
super(game);
|
|
11
|
+
this.player = player;
|
|
12
|
+
this.playerHelper = new PlayerHelper(game, player);
|
|
31
13
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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))
|
|
14
|
+
mobilize() {
|
|
15
|
+
const agent = this.material(MaterialType.AgentCard).location(LocationType.AgentDeck).deck().limit(1);
|
|
16
|
+
if (!agent.length || !agent.getItem()?.id)
|
|
37
17
|
return [];
|
|
38
|
-
return agent.moveItems(
|
|
39
|
-
type:
|
|
40
|
-
id:
|
|
41
|
-
player:
|
|
42
|
-
})
|
|
43
|
-
}
|
|
44
|
-
|
|
18
|
+
return agent.moveItems((item) => ({
|
|
19
|
+
type: LocationType.Influence,
|
|
20
|
+
id: Agents[item.id].influence,
|
|
21
|
+
player: this.playerHelper.team
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
isPossible() {
|
|
45
25
|
return this.deck.length > 0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
enumerable: false,
|
|
52
|
-
configurable: true
|
|
53
|
-
});
|
|
54
|
-
return MobilizeHelper;
|
|
55
|
-
}(rules_api_1.MaterialRulesPart));
|
|
56
|
-
exports.MobilizeHelper = MobilizeHelper;
|
|
26
|
+
}
|
|
27
|
+
get deck() {
|
|
28
|
+
return this.material(MaterialType.AgentCard).location(LocationType.AgentDeck).deck();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -1,59 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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;
|
|
1
|
+
import { MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../../material/MaterialType';
|
|
4
|
+
import { TeamColor } from '../../TeamColor';
|
|
5
|
+
import { Memory } from '../Memory';
|
|
6
|
+
import { PlayerHelper } from './PlayerHelper';
|
|
7
|
+
export class PlanetHelper extends MaterialRulesPart {
|
|
8
|
+
player;
|
|
9
|
+
playerHelper;
|
|
10
|
+
constructor(game, player) {
|
|
11
|
+
super(game);
|
|
12
|
+
this.player = player;
|
|
13
|
+
this.playerHelper = new PlayerHelper(game, player);
|
|
32
14
|
}
|
|
33
|
-
|
|
34
|
-
|
|
15
|
+
getPushablePlanets(effect) {
|
|
16
|
+
const planets = this.planets;
|
|
35
17
|
if (effect.except)
|
|
36
|
-
return planets.filter(
|
|
18
|
+
return planets.filter((item) => item.id !== effect.except);
|
|
37
19
|
return planets;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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;
|
|
20
|
+
}
|
|
21
|
+
getPullablePlanets(effect) {
|
|
22
|
+
const planets = this.planets;
|
|
23
|
+
const filteredPlanets = effect.differentPlanet && this.alreadyPlayedPlanets?.length ? planets.id((id) => !this.isAlreadyPlayed(id)) : planets;
|
|
44
24
|
if (!filteredPlanets.length)
|
|
45
25
|
return filteredPlanets;
|
|
46
26
|
if (effect.fromCenter) {
|
|
47
|
-
|
|
27
|
+
const centeredPlanets = filteredPlanets.filter((planet) => planet.location.x === 0);
|
|
48
28
|
if (!centeredPlanets.length)
|
|
49
29
|
return centeredPlanets;
|
|
50
30
|
if (effect.influence)
|
|
51
31
|
return centeredPlanets.id(effect.influence);
|
|
52
32
|
}
|
|
53
33
|
else if (effect.opponentSide) {
|
|
54
|
-
|
|
55
|
-
return _this.playerHelper.team === TeamColor_1.TeamColor.White ? planet.location.x < 0 : planet.location.x > 0;
|
|
56
|
-
});
|
|
34
|
+
const opponentSidePlanets = filteredPlanets.filter((planet) => this.playerHelper.team === TeamColor.White ? planet.location.x < 0 : planet.location.x > 0);
|
|
57
35
|
if (!opponentSidePlanets.length)
|
|
58
36
|
return opponentSidePlanets;
|
|
59
37
|
if (effect.influence)
|
|
@@ -65,40 +43,29 @@ var PlanetHelper = (function (_super) {
|
|
|
65
43
|
}
|
|
66
44
|
}
|
|
67
45
|
return planets;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return this.planets.filter(
|
|
71
|
-
}
|
|
72
|
-
|
|
46
|
+
}
|
|
47
|
+
getResetablePlanets() {
|
|
48
|
+
return this.planets.filter((planet) => planet.location.x !== 0);
|
|
49
|
+
}
|
|
50
|
+
isPossibleToPull(effect) {
|
|
73
51
|
return this.getPullablePlanets(effect).length > 0;
|
|
74
|
-
}
|
|
75
|
-
|
|
52
|
+
}
|
|
53
|
+
isPossibleToPush(effect) {
|
|
76
54
|
return this.getPushablePlanets(effect).length > 0;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
enumerable: false,
|
|
87
|
-
configurable: true
|
|
88
|
-
});
|
|
89
|
-
PlanetHelper.prototype.isPossibleToReset = function (_effect) {
|
|
55
|
+
}
|
|
56
|
+
isAlreadyPlayed(influence) {
|
|
57
|
+
return this.alreadyPlayedPlanets?.includes(influence);
|
|
58
|
+
}
|
|
59
|
+
get alreadyPlayedPlanets() {
|
|
60
|
+
return this.remind(Memory.LastPlanetsMoved);
|
|
61
|
+
}
|
|
62
|
+
isPossibleToReset(_effect) {
|
|
90
63
|
return this.getResetablePlanets().length > 0;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
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;
|
|
64
|
+
}
|
|
65
|
+
get planets() {
|
|
66
|
+
return this.material(MaterialType.InfluenceDisc).location(LocationType.PlanetBoardInfluenceDiscSpace);
|
|
67
|
+
}
|
|
68
|
+
getPlanet(influence) {
|
|
69
|
+
return this.material(MaterialType.InfluenceDisc).location(LocationType.PlanetBoardInfluenceDiscSpace).id(influence);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -1,61 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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;
|
|
1
|
+
import { MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { credits } from '../../material/Credit';
|
|
3
|
+
import { MaterialType } from '../../material/MaterialType';
|
|
4
|
+
import { getTeamColor } from '../../TeamColor';
|
|
5
|
+
export class PlayerHelper extends MaterialRulesPart {
|
|
6
|
+
playerId;
|
|
7
|
+
team;
|
|
8
|
+
constructor(game, playerId) {
|
|
9
|
+
super(game);
|
|
10
|
+
this.playerId = playerId;
|
|
11
|
+
this.team = getTeamColor(playerId);
|
|
30
12
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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;
|
|
13
|
+
get credits() {
|
|
14
|
+
return this.material(MaterialType.CreditToken).money(credits).player(this.team).count;
|
|
15
|
+
}
|
|
16
|
+
get zenithium() {
|
|
17
|
+
return this.zenithiumMaterial.getQuantity();
|
|
18
|
+
}
|
|
19
|
+
get zenithiumMaterial() {
|
|
20
|
+
return this.material(MaterialType.ZenithiumToken).player(this.team);
|
|
21
|
+
}
|
|
22
|
+
get isLeader() {
|
|
23
|
+
return this.material(MaterialType.LeaderBadgeToken).player(this.team).length > 0;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,96 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
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.TechnologyHelper = 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 TechnologyActions_1 = require("../discard-action/TechnologyActions");
|
|
59
|
-
var Memory_1 = require("../Memory");
|
|
60
|
-
var TechnologyHelper = (function (_super) {
|
|
61
|
-
__extends(TechnologyHelper, _super);
|
|
62
|
-
function TechnologyHelper() {
|
|
63
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
64
|
-
}
|
|
65
|
-
TechnologyHelper.prototype.applyTechnology = function (move) {
|
|
66
|
-
var board = this.material(MaterialType_1.MaterialType.TechnologyBoard).getItem(move.location.parent);
|
|
67
|
-
var actions = (0, TechnologyActions_1.getTechnologyAction)(board.id);
|
|
68
|
-
this.memorize(Memory_1.Memory.Effects, function (effects) {
|
|
69
|
-
if (effects === void 0) { effects = []; }
|
|
70
|
-
var newEffects = JSON.parse(JSON.stringify(actions.slice(0, move.location.x).reverse()));
|
|
71
|
-
effects.push.apply(effects, __spreadArray([], __read(newEffects.flat().map(function (e) { return (__assign(__assign({}, e), { effectSource: {
|
|
72
|
-
type: MaterialType_1.MaterialType.TechnologyBoard,
|
|
1
|
+
import { PlayerTurnRule } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../../material/MaterialType';
|
|
4
|
+
import { getTechnologyAction, TechnologyLineBonuses } from '../discard-action/TechnologyActions';
|
|
5
|
+
import { Memory } from '../Memory';
|
|
6
|
+
export class TechnologyHelper extends PlayerTurnRule {
|
|
7
|
+
applyTechnology(move) {
|
|
8
|
+
const board = this.material(MaterialType.TechnologyBoard).getItem(move.location.parent);
|
|
9
|
+
const actions = getTechnologyAction(board.id);
|
|
10
|
+
this.memorize(Memory.Effects, (effects = []) => {
|
|
11
|
+
const newEffects = JSON.parse(JSON.stringify(actions.slice(0, move.location.x).reverse()));
|
|
12
|
+
effects.push(...newEffects.flat().map((e) => ({
|
|
13
|
+
...e,
|
|
14
|
+
effectSource: {
|
|
15
|
+
type: MaterialType.TechnologyBoard,
|
|
73
16
|
value: board.location.id
|
|
74
|
-
}
|
|
17
|
+
}
|
|
18
|
+
})));
|
|
75
19
|
return effects;
|
|
76
20
|
});
|
|
77
|
-
|
|
78
|
-
.location(
|
|
21
|
+
const hasLine = this.material(MaterialType.TechMarker)
|
|
22
|
+
.location(LocationType.TechnologyBoardTokenSpace)
|
|
79
23
|
.player(move.location.player)
|
|
80
|
-
.filter(
|
|
81
|
-
if (hasLine &&
|
|
82
|
-
this.memorize(
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
24
|
+
.filter((item) => item.location.x >= move.location.x).length === 3;
|
|
25
|
+
if (hasLine && TechnologyLineBonuses[move.location.x - 1]) {
|
|
26
|
+
this.memorize(Memory.Effects, (effects = []) => {
|
|
27
|
+
const effect = JSON.parse(JSON.stringify(TechnologyLineBonuses[move.location.x - 1]));
|
|
28
|
+
effects.push({
|
|
29
|
+
...effect,
|
|
30
|
+
effectSource: {
|
|
31
|
+
type: MaterialType.TechnologyBoard,
|
|
87
32
|
value: board.location.id
|
|
88
|
-
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
89
35
|
return effects;
|
|
90
36
|
});
|
|
91
37
|
}
|
|
92
38
|
return [];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
}(rules_api_1.PlayerTurnRule));
|
|
96
|
-
exports.TechnologyHelper = TechnologyHelper;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -1,59 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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.ZenithiumHelper = 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 PlayerHelper_1 = require("./PlayerHelper");
|
|
23
|
-
var ZenithiumHelper = (function (_super) {
|
|
24
|
-
__extends(ZenithiumHelper, _super);
|
|
25
|
-
function ZenithiumHelper(game, player) {
|
|
26
|
-
var _this = _super.call(this, game) || this;
|
|
27
|
-
_this.player = player;
|
|
28
|
-
_this.playerHelper = new PlayerHelper_1.PlayerHelper(game, player);
|
|
29
|
-
return _this;
|
|
1
|
+
import { MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../../material/MaterialType';
|
|
4
|
+
import { PlayerHelper } from './PlayerHelper';
|
|
5
|
+
export class ZenithiumHelper extends MaterialRulesPart {
|
|
6
|
+
player;
|
|
7
|
+
playerHelper;
|
|
8
|
+
constructor(game, player) {
|
|
9
|
+
super(game);
|
|
10
|
+
this.player = player;
|
|
11
|
+
this.playerHelper = new PlayerHelper(game, player);
|
|
30
12
|
}
|
|
31
|
-
|
|
32
|
-
if (count === void 0) { count = 1; }
|
|
13
|
+
winZenithium(count = 1) {
|
|
33
14
|
return [
|
|
34
|
-
this.material(
|
|
15
|
+
this.material(MaterialType.ZenithiumToken).createItem({
|
|
35
16
|
location: {
|
|
36
|
-
type:
|
|
17
|
+
type: LocationType.TeamZenithium,
|
|
37
18
|
player: this.playerHelper.team
|
|
38
19
|
},
|
|
39
20
|
quantity: count
|
|
40
21
|
})
|
|
41
22
|
];
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.location(LocationType_1.LocationType.TeamZenithium)
|
|
23
|
+
}
|
|
24
|
+
giveZenithium(to, count = 1) {
|
|
25
|
+
return this.material(MaterialType.ZenithiumToken)
|
|
26
|
+
.location(LocationType.TeamZenithium)
|
|
47
27
|
.player(this.playerHelper.team)
|
|
48
28
|
.moveItems({
|
|
49
|
-
type:
|
|
50
|
-
player: new
|
|
29
|
+
type: LocationType.TeamZenithium,
|
|
30
|
+
player: new PlayerHelper(this.game, to).team
|
|
51
31
|
}, count);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return ZenithiumHelper;
|
|
58
|
-
}(rules_api_1.MaterialRulesPart));
|
|
59
|
-
exports.ZenithiumHelper = ZenithiumHelper;
|
|
32
|
+
}
|
|
33
|
+
spendZenithium(count = 1) {
|
|
34
|
+
return this.material(MaterialType.ZenithiumToken).location(LocationType.TeamZenithium).player(this.playerHelper.team).deleteItems(count);
|
|
35
|
+
}
|
|
36
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamepark/zenith",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "The rules of Zenith adapted for Game Park",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"sideEffects": false,
|
|
6
7
|
"main": "dist/index.js",
|
|
7
8
|
"types": "dist/index.d.ts",
|
|
@@ -24,10 +25,10 @@
|
|
|
24
25
|
"lodash": ">=4.17"
|
|
25
26
|
},
|
|
26
27
|
"devDependencies": {
|
|
27
|
-
"@gamepark/rules-api": "~6.
|
|
28
|
+
"@gamepark/rules-api": "~6.37.8",
|
|
28
29
|
"@types/lodash": "^4.17.7",
|
|
29
30
|
"i18next": "^22.0.3",
|
|
30
31
|
"lodash": "^4.17.21"
|
|
31
32
|
},
|
|
32
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "46a6cb6ee063fb1242a16d69f834864498415a62"
|
|
33
34
|
}
|