@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,86 +1,54 @@
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.BonusHelper = void 0;
30
- var rules_api_1 = require("@gamepark/rules-api");
31
- var Bonuses_1 = require("../../material/Bonuses");
32
- var LocationType_1 = require("../../material/LocationType");
33
- var MaterialType_1 = require("../../material/MaterialType");
34
- var Memory_1 = require("../Memory");
35
- var BonusHelper = (function (_super) {
36
- __extends(BonusHelper, _super);
37
- function BonusHelper() {
38
- return _super !== null && _super.apply(this, arguments) || this;
39
- }
40
- BonusHelper.prototype.applyInfluenceBonus = function (influence) {
41
- var bonusToken = this.material(MaterialType_1.MaterialType.BonusToken).location(LocationType_1.LocationType.PlanetBoardBonusSpace).locationId(influence);
1
+ import { MaterialRulesPart } from '@gamepark/rules-api';
2
+ import { Bonuses } from '../../material/Bonuses';
3
+ import { LocationType } from '../../material/LocationType';
4
+ import { MaterialType } from '../../material/MaterialType';
5
+ import { Memory } from '../Memory';
6
+ export class BonusHelper extends MaterialRulesPart {
7
+ applyInfluenceBonus(influence) {
8
+ const bonusToken = this.material(MaterialType.BonusToken).location(LocationType.PlanetBoardBonusSpace).locationId(influence);
42
9
  return this.applyBonusEffect(bonusToken);
43
- };
44
- BonusHelper.prototype.getTechnologyBonus = function (token) {
45
- var tokenItem = token.getItem();
10
+ }
11
+ getTechnologyBonus(token) {
12
+ const tokenItem = token.getItem();
46
13
  if (tokenItem.location.x !== 2)
47
14
  return;
48
- var bonusToken = this.material(MaterialType_1.MaterialType.BonusToken).location(LocationType_1.LocationType.TechnologyBoardBonusSpace).parent(tokenItem.location.parent);
15
+ const bonusToken = this.material(MaterialType.BonusToken).location(LocationType.TechnologyBoardBonusSpace).parent(tokenItem.location.parent);
49
16
  if (!bonusToken.length)
50
17
  return;
51
18
  return {
52
19
  effect: this.getBonusEffect(bonusToken),
53
20
  moves: [
54
21
  bonusToken.moveItem({
55
- type: LocationType_1.LocationType.BonusDiscard
22
+ type: LocationType.BonusDiscard
56
23
  })
57
24
  ],
58
25
  bonusId: bonusToken.getItem().id
59
26
  };
60
- };
61
- BonusHelper.prototype.applyBonusEffect = function (bonusToken) {
62
- var moves = [];
63
- var bonusEffect = this.getBonusEffect(bonusToken);
27
+ }
28
+ applyBonusEffect(bonusToken) {
29
+ const moves = [];
30
+ const bonusEffect = this.getBonusEffect(bonusToken);
64
31
  if (bonusEffect) {
65
32
  moves.push(bonusToken.moveItem({
66
- type: LocationType_1.LocationType.BonusDiscard
33
+ type: LocationType.BonusDiscard
67
34
  }));
68
- var effects = this.remind(Memory_1.Memory.Effects);
69
- effects.splice(1, 0, __assign(__assign({}, bonusEffect), { effectSource: {
70
- type: MaterialType_1.MaterialType.BonusToken,
35
+ const effects = this.remind(Memory.Effects);
36
+ effects.splice(1, 0, {
37
+ ...bonusEffect,
38
+ effectSource: {
39
+ type: MaterialType.BonusToken,
71
40
  value: bonusToken.getItem().id
72
- } }));
41
+ }
42
+ });
73
43
  }
74
44
  return moves;
75
- };
76
- BonusHelper.prototype.getBonusEffect = function (bonusToken) {
45
+ }
46
+ getBonusEffect(bonusToken) {
77
47
  if (bonusToken.length) {
78
- var bonusItem = bonusToken.getItem();
79
- var bonusId = bonusItem.id;
80
- return JSON.parse(JSON.stringify(Bonuses_1.Bonuses[bonusId].effect));
48
+ const bonusItem = bonusToken.getItem();
49
+ const bonusId = bonusItem.id;
50
+ return JSON.parse(JSON.stringify(Bonuses[bonusId].effect));
81
51
  }
82
52
  return;
83
- };
84
- return BonusHelper;
85
- }(rules_api_1.MaterialRulesPart));
86
- exports.BonusHelper = BonusHelper;
53
+ }
54
+ }
@@ -1,45 +1,20 @@
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.CreditHelper = void 0;
19
- var rules_api_1 = require("@gamepark/rules-api");
20
- var Credit_1 = require("../../material/Credit");
21
- var LocationType_1 = require("../../material/LocationType");
22
- var MaterialType_1 = require("../../material/MaterialType");
23
- var PlayerHelper_1 = require("./PlayerHelper");
24
- var CreditHelper = (function (_super) {
25
- __extends(CreditHelper, _super);
26
- function CreditHelper(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 { credits } from '../../material/Credit';
3
+ import { LocationType } from '../../material/LocationType';
4
+ import { MaterialType } from '../../material/MaterialType';
5
+ import { PlayerHelper } from './PlayerHelper';
6
+ export class CreditHelper 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
- Object.defineProperty(CreditHelper.prototype, "creditMoney", {
33
- get: function () {
34
- return this.material(MaterialType_1.MaterialType.CreditToken).money(Credit_1.credits);
35
- },
36
- enumerable: false,
37
- configurable: true
38
- });
39
- CreditHelper.prototype.spendCredit = function (count) {
40
- if (count === void 0) { count = 1; }
41
- return this.creditMoney.removeMoney(count, { type: LocationType_1.LocationType.TeamCredit, player: this.playerHelper.team });
42
- };
43
- return CreditHelper;
44
- }(rules_api_1.MaterialRulesPart));
45
- exports.CreditHelper = CreditHelper;
14
+ get creditMoney() {
15
+ return this.material(MaterialType.CreditToken).money(credits);
16
+ }
17
+ spendCredit(count = 1) {
18
+ return this.creditMoney.removeMoney(count, { type: LocationType.TeamCredit, player: this.playerHelper.team });
19
+ }
20
+ }
@@ -1,133 +1,91 @@
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;
1
+ import { MaterialRulesPart } from '@gamepark/rules-api';
2
+ import { Agents } from '../../material/Agents';
3
+ import { EffectType } from '../../material/effect/EffectType';
4
+ import { MaterialType } from '../../material/MaterialType';
5
+ import { ChoiceRule, ConditionalRule, DevelopTechnologyRule, DiscardRule, ExileRule, GiveCreditRule, GiveInfluenceRule, GiveLeaderBadgeRule, GiveZenithiumRule, MobilizeRule, ResetInfluenceRule, SpendCreditRule, TakeBonusRule, TakeLeaderBadgeRule, TransferRule, WinCreditRule, WinInfluenceRule, WinZenithiumRule } from '../effect';
6
+ import { SpendZenithiumRule } from '../effect/SpendZenithiumRule';
7
+ import { StealCreditRule } from '../effect/StealCreditRule';
8
+ import { TakeTechnologyBonusTokenRule } from '../effect/TakeTechnologyBonusTokenRule';
9
+ import { Memory } from '../Memory';
10
+ import { EffectRuleIds } from './EffectRuleIds';
11
+ export class EffectHelper extends MaterialRulesPart {
12
+ player;
13
+ constructor(game, player) {
14
+ super(game);
15
+ this.player = player;
46
16
  }
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,
17
+ applyCard(item) {
18
+ const agent = Agents[item.id];
19
+ this.memorize(Memory.Effects, JSON.parse(JSON.stringify(agent.effects.map((e) => ({
20
+ ...e,
21
+ effectSource: {
22
+ type: MaterialType.AgentCard,
51
23
  value: item.id
52
- } })); }))));
24
+ }
25
+ })))));
53
26
  return this.applyFirstEffect();
54
- };
55
- EffectHelper.prototype.applyFirstEffect = function () {
56
- var effect = this.effect;
27
+ }
28
+ applyFirstEffect() {
29
+ const effect = this.effect;
57
30
  if (!effect) {
58
31
  return [];
59
32
  }
60
33
  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) {
34
+ }
35
+ get effect() {
36
+ const effects = this.effects;
37
+ return effects[0];
38
+ }
39
+ get effects() {
40
+ return this.remind(Memory.Effects);
41
+ }
42
+ get effectRuleIds() {
43
+ return EffectRuleIds;
44
+ }
45
+ }
46
+ export const getEffectRule = (game, effect) => {
88
47
  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);
48
+ case EffectType.ResetInfluence:
49
+ return new ResetInfluenceRule(game, effect);
50
+ case EffectType.WinCredit:
51
+ return new WinCreditRule(game, effect);
52
+ case EffectType.SpendCredit:
53
+ return new SpendCreditRule(game, effect);
54
+ case EffectType.WinZenithium:
55
+ return new WinZenithiumRule(game, effect);
56
+ case EffectType.GiveZenithium:
57
+ return new GiveZenithiumRule(game, effect);
58
+ case EffectType.Exile:
59
+ return new ExileRule(game, effect);
60
+ case EffectType.DevelopTechnology:
61
+ return new DevelopTechnologyRule(game, effect);
62
+ case EffectType.GiveLeaderBadge:
63
+ return new GiveLeaderBadgeRule(game, effect);
64
+ case EffectType.TakeLeaderBadge:
65
+ return new TakeLeaderBadgeRule(game, effect);
66
+ case EffectType.Discard:
67
+ return new DiscardRule(game, effect);
68
+ case EffectType.Mobilize:
69
+ return new MobilizeRule(game, effect);
70
+ case EffectType.Choice:
71
+ return new ChoiceRule(game, effect);
72
+ case EffectType.TakeBonus:
73
+ return new TakeBonusRule(game, effect);
74
+ case EffectType.GiveInfluence:
75
+ return new GiveInfluenceRule(game, effect);
76
+ case EffectType.WinInfluence:
77
+ return new WinInfluenceRule(game, effect);
78
+ case EffectType.Conditional:
79
+ return new ConditionalRule(game, effect);
80
+ case EffectType.Transfer:
81
+ return new TransferRule(game, effect);
82
+ case EffectType.GiveCredit:
83
+ return new GiveCreditRule(game, effect);
84
+ case EffectType.StealCredit:
85
+ return new StealCreditRule(game, effect);
86
+ case EffectType.SpendZenithium:
87
+ return new SpendZenithiumRule(game, effect);
88
+ case EffectType.TakeTechnologyBonusToken:
89
+ return new TakeTechnologyBonusTokenRule(game, effect);
131
90
  }
132
91
  };
133
- exports.getEffectRule = getEffectRule;
@@ -1,29 +1,25 @@
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);
1
+ import { EffectType } from '../../material/effect/EffectType';
2
+ import { RuleId } from '../RuleId';
3
+ export const EffectRuleIds = {
4
+ [EffectType.Transfer]: RuleId.Transfer,
5
+ [EffectType.GiveCredit]: RuleId.GiveCredit,
6
+ [EffectType.WinCredit]: RuleId.WinCredit,
7
+ [EffectType.SpendCredit]: RuleId.SpendCredit,
8
+ [EffectType.Conditional]: RuleId.Conditional,
9
+ [EffectType.WinZenithium]: RuleId.WinZenithium,
10
+ [EffectType.GiveZenithium]: RuleId.GiveZenithium,
11
+ [EffectType.Exile]: RuleId.Exile,
12
+ [EffectType.WinInfluence]: RuleId.WinInfluence,
13
+ [EffectType.GiveInfluence]: RuleId.GiveInfluence,
14
+ [EffectType.ResetInfluence]: RuleId.ResetInfluence,
15
+ [EffectType.DevelopTechnology]: RuleId.DevelopTechnology,
16
+ [EffectType.GiveLeaderBadge]: RuleId.GiveLeaderBadge,
17
+ [EffectType.TakeLeaderBadge]: RuleId.TakeLeaderBadge,
18
+ [EffectType.Discard]: RuleId.Discard,
19
+ [EffectType.Mobilize]: RuleId.Mobilize,
20
+ [EffectType.Choice]: RuleId.Choice,
21
+ [EffectType.TakeBonus]: RuleId.TakeBonus,
22
+ [EffectType.StealCredit]: RuleId.StealCredit,
23
+ [EffectType.SpendZenithium]: RuleId.SpendZenithium,
24
+ [EffectType.TakeTechnologyBonusToken]: RuleId.TakeTechnologyBonusToken
25
+ };
@@ -1,70 +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
- 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); }
1
+ import { MaterialRulesPart } from '@gamepark/rules-api';
2
+ import { uniqBy } from 'lodash';
3
+ import maxBy from 'lodash/maxBy';
4
+ import { influences } from '../../material/Influence';
5
+ import { LocationType } from '../../material/LocationType';
6
+ import { MaterialType } from '../../material/MaterialType';
7
+ import { teamColors } from '../../TeamColor';
8
+ export class EndGameHelper extends MaterialRulesPart {
9
+ willEnd(team, planets = this.getTeamPlanet(team)) {
36
10
  if (planets.length === 5)
37
11
  return true;
38
- var maxSameInfluence = this.getMaxSameInfluence(planets);
12
+ const maxSameInfluence = this.getMaxSameInfluence(planets);
39
13
  if (maxSameInfluence && maxSameInfluence.count >= 3)
40
14
  return true;
41
15
  if (this.getCountDifferentInfluence(planets) >= 4)
42
16
  return true;
43
17
  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; });
18
+ }
19
+ get winningTeam() {
20
+ return teamColors.find((team) => this.willEnd(team));
21
+ }
22
+ getTeamPlanet(team) {
23
+ return this.material(MaterialType.InfluenceDisc).location(LocationType.TeamPlanets).player(team);
24
+ }
25
+ getCountDifferentInfluence(planets) {
26
+ return uniqBy(planets.getItems(), (item) => item.id).length;
27
+ }
28
+ getMaxSameInfluence(planets) {
29
+ const maxInfluence = maxBy(influences, (i) => planets.id(i).length);
61
30
  if (!maxInfluence)
62
31
  return;
63
32
  return {
64
33
  influence: maxInfluence,
65
34
  count: planets.id(maxInfluence).length
66
35
  };
67
- };
68
- return EndGameHelper;
69
- }(rules_api_1.MaterialRulesPart));
70
- exports.EndGameHelper = EndGameHelper;
36
+ }
37
+ }
@@ -1,47 +1,21 @@
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;
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
+ export class InfluenceHelper extends MaterialRulesPart {
6
+ team;
7
+ constructor(game, team) {
8
+ super(game);
9
+ this.team = team;
29
10
  }
30
- InfluenceHelper.prototype.getCost = function (item, decreaseInfluenceBy) {
31
- if (decreaseInfluenceBy === void 0) { decreaseInfluenceBy = 0; }
32
- var description = Agents_1.Agents[item.id];
11
+ getCost(item, decreaseInfluenceBy = 0) {
12
+ const description = Agents[item.id];
33
13
  return Math.max(0, description.cost - (this.getInfluence(description.influence).length - decreaseInfluenceBy));
34
- };
35
- InfluenceHelper.prototype.getInfluence = function (influence) {
14
+ }
15
+ getInfluence(influence) {
36
16
  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;
17
+ }
18
+ get influence() {
19
+ return this.material(MaterialType.AgentCard).location(LocationType.Influence).player(this.team);
20
+ }
21
+ }