@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.
Files changed (63) hide show
  1. package/dist/PlayerId.js +1 -2
  2. package/dist/TeamColor.js +7 -13
  3. package/dist/ZenithOptions.js +1 -4
  4. package/dist/ZenithRules.js +71 -122
  5. package/dist/ZenithSetup.js +123 -266
  6. package/dist/index.js +3 -9
  7. package/dist/material/Agent.js +4 -7
  8. package/dist/material/Agents.js +920 -923
  9. package/dist/material/Bonus.js +5 -8
  10. package/dist/material/Bonuses.js +29 -33
  11. package/dist/material/Credit.js +4 -7
  12. package/dist/material/Faction.js +4 -7
  13. package/dist/material/Influence.js +4 -7
  14. package/dist/material/LocationType.js +2 -5
  15. package/dist/material/MaterialType.js +2 -5
  16. package/dist/material/effect/Effect.js +5 -10
  17. package/dist/material/effect/EffectType.js +2 -5
  18. package/dist/rules/CustomMoveType.js +2 -5
  19. package/dist/rules/DiscardActionRule.js +26 -75
  20. package/dist/rules/Memory.js +2 -5
  21. package/dist/rules/MulliganRule.js +47 -126
  22. package/dist/rules/PlayCardRule.js +68 -134
  23. package/dist/rules/RefillRule.js +83 -190
  24. package/dist/rules/RuleId.js +2 -5
  25. package/dist/rules/discard-action/DiplomacyActions.js +15 -20
  26. package/dist/rules/discard-action/DiplomacyBoardRule.js +27 -64
  27. package/dist/rules/discard-action/TechnologyActions.js +44 -48
  28. package/dist/rules/discard-action/TechnologyBoardRule.js +34 -102
  29. package/dist/rules/effect/ChoiceRule.js +21 -81
  30. package/dist/rules/effect/ConditionalRule.js +77 -141
  31. package/dist/rules/effect/DevelopTechnologyRule.js +53 -119
  32. package/dist/rules/effect/DiscardRule.js +37 -90
  33. package/dist/rules/effect/EffectRule.js +60 -138
  34. package/dist/rules/effect/ExileRule.js +62 -147
  35. package/dist/rules/effect/GiveCreditRule.js +24 -73
  36. package/dist/rules/effect/GiveInfluenceRule.js +38 -101
  37. package/dist/rules/effect/GiveLeaderBadgeRule.js +18 -46
  38. package/dist/rules/effect/GiveZenithiumRule.js +25 -79
  39. package/dist/rules/effect/MobilizeRule.js +38 -93
  40. package/dist/rules/effect/ResetInfluenceRule.js +21 -58
  41. package/dist/rules/effect/SpendCreditRule.js +29 -102
  42. package/dist/rules/effect/SpendZenithiumRule.js +32 -109
  43. package/dist/rules/effect/StealCreditRule.js +15 -64
  44. package/dist/rules/effect/TakeBonusRule.js +30 -91
  45. package/dist/rules/effect/TakeLeaderBadgeRule.js +31 -88
  46. package/dist/rules/effect/TakeTechnologyBonusTokenRule.js +45 -112
  47. package/dist/rules/effect/TransferRule.js +47 -81
  48. package/dist/rules/effect/WinCreditRule.js +60 -130
  49. package/dist/rules/effect/WinInfluenceRule.js +128 -248
  50. package/dist/rules/effect/WinZenithiumRule.js +24 -80
  51. package/dist/rules/effect/index.js +19 -35
  52. package/dist/rules/helper/BonusHelper.js +32 -64
  53. package/dist/rules/helper/CreditHelper.js +19 -44
  54. package/dist/rules/helper/EffectHelper.js +81 -123
  55. package/dist/rules/helper/EffectRuleIds.js +25 -29
  56. package/dist/rules/helper/EndGameHelper.js +24 -57
  57. package/dist/rules/helper/InfluenceHelper.js +18 -44
  58. package/dist/rules/helper/MobilizeHelper.js +27 -53
  59. package/dist/rules/helper/PlanetHelper.js +45 -78
  60. package/dist/rules/helper/PlayerHelper.js +24 -60
  61. package/dist/rules/helper/TechnologyHelper.js +31 -87
  62. package/dist/rules/helper/ZenithiumHelper.js +25 -48
  63. package/package.json +4 -3
@@ -1,56 +1,30 @@
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;
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
- 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))
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(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 () {
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
- 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;
26
+ }
27
+ get deck() {
28
+ return this.material(MaterialType.AgentCard).location(LocationType.AgentDeck).deck();
29
+ }
30
+ }
@@ -1,59 +1,37 @@
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;
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
- PlanetHelper.prototype.getPushablePlanets = function (effect) {
34
- var planets = this.planets;
15
+ getPushablePlanets(effect) {
16
+ const planets = this.planets;
35
17
  if (effect.except)
36
- return planets.filter(function (item) { return item.id !== effect.except; });
18
+ return planets.filter((item) => item.id !== effect.except);
37
19
  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;
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
- var centeredPlanets = filteredPlanets.filter(function (planet) { return planet.location.x === 0; });
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
- var opponentSidePlanets = filteredPlanets.filter(function (planet) {
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
- PlanetHelper.prototype.getResetablePlanets = function () {
70
- return this.planets.filter(function (planet) { return planet.location.x !== 0; });
71
- };
72
- PlanetHelper.prototype.isPossibleToPull = function (effect) {
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
- PlanetHelper.prototype.isPossibleToPush = function (effect) {
52
+ }
53
+ isPossibleToPush(effect) {
76
54
  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) {
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
- 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;
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
- "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;
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
- 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;
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
- "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
- 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
- } })); })), false));
17
+ }
18
+ })));
75
19
  return effects;
76
20
  });
77
- var hasLine = this.material(MaterialType_1.MaterialType.TechMarker)
78
- .location(LocationType_1.LocationType.TechnologyBoardTokenSpace)
21
+ const hasLine = this.material(MaterialType.TechMarker)
22
+ .location(LocationType.TechnologyBoardTokenSpace)
79
23
  .player(move.location.player)
80
- .filter(function (item) { return item.location.x >= move.location.x; }).length === 3;
81
- if (hasLine && TechnologyActions_1.TechnologyLineBonuses[move.location.x - 1]) {
82
- this.memorize(Memory_1.Memory.Effects, function (effects) {
83
- if (effects === void 0) { effects = []; }
84
- var effect = JSON.parse(JSON.stringify(TechnologyActions_1.TechnologyLineBonuses[move.location.x - 1]));
85
- effects.push(__assign(__assign({}, effect), { effectSource: {
86
- type: MaterialType_1.MaterialType.TechnologyBoard,
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
- return TechnologyHelper;
95
- }(rules_api_1.PlayerTurnRule));
96
- exports.TechnologyHelper = TechnologyHelper;
39
+ }
40
+ }
@@ -1,59 +1,36 @@
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.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
- ZenithiumHelper.prototype.winZenithium = function (count) {
32
- if (count === void 0) { count = 1; }
13
+ winZenithium(count = 1) {
33
14
  return [
34
- this.material(MaterialType_1.MaterialType.ZenithiumToken).createItem({
15
+ this.material(MaterialType.ZenithiumToken).createItem({
35
16
  location: {
36
- type: LocationType_1.LocationType.TeamZenithium,
17
+ type: LocationType.TeamZenithium,
37
18
  player: this.playerHelper.team
38
19
  },
39
20
  quantity: count
40
21
  })
41
22
  ];
42
- };
43
- ZenithiumHelper.prototype.giveZenithium = function (to, count) {
44
- if (count === void 0) { count = 1; }
45
- return this.material(MaterialType_1.MaterialType.ZenithiumToken)
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: LocationType_1.LocationType.TeamZenithium,
50
- player: new PlayerHelper_1.PlayerHelper(this.game, to).team
29
+ type: LocationType.TeamZenithium,
30
+ player: new PlayerHelper(this.game, to).team
51
31
  }, count);
52
- };
53
- ZenithiumHelper.prototype.spendZenithium = function (count) {
54
- if (count === void 0) { count = 1; }
55
- return this.material(MaterialType_1.MaterialType.ZenithiumToken).location(LocationType_1.LocationType.TeamZenithium).player(this.playerHelper.team).deleteItems(count);
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.2",
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.36.7",
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": "8b7fb20c57da96fe2a5e279fad06efcce21fdf88"
33
+ "gitHead": "46a6cb6ee063fb1242a16d69f834864498415a62"
33
34
  }