@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,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
18
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
19
|
+
if (!m) return o;
|
|
20
|
+
var i = m.call(o), r, ar = [], e;
|
|
21
|
+
try {
|
|
22
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
23
|
+
}
|
|
24
|
+
catch (error) { e = { error: error }; }
|
|
25
|
+
finally {
|
|
26
|
+
try {
|
|
27
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
28
|
+
}
|
|
29
|
+
finally { if (e) throw e.error; }
|
|
30
|
+
}
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
34
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
35
|
+
if (ar || !(i in from)) {
|
|
36
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
37
|
+
ar[i] = from[i];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
|
+
};
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.TakeLeaderBadgeRule = void 0;
|
|
44
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
45
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
46
|
+
var Memory_1 = require("../Memory");
|
|
47
|
+
var index_1 = require("./index");
|
|
48
|
+
var TakeLeaderBadgeRule = (function (_super) {
|
|
49
|
+
__extends(TakeLeaderBadgeRule, _super);
|
|
50
|
+
function TakeLeaderBadgeRule() {
|
|
51
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
52
|
+
}
|
|
53
|
+
TakeLeaderBadgeRule.prototype.onRuleStart = function () {
|
|
54
|
+
var moves = _super.prototype.onRuleStart.call(this);
|
|
55
|
+
if (moves.length > 0)
|
|
56
|
+
return moves;
|
|
57
|
+
this.memorize(Memory_1.Memory.CurrentEffect, JSON.parse(JSON.stringify(this.effect)));
|
|
58
|
+
var leaderBadge = this.leader;
|
|
59
|
+
var item = leaderBadge.getItem();
|
|
60
|
+
var team = this.playerHelper.team;
|
|
61
|
+
if (item.location.player === team) {
|
|
62
|
+
if (!item.location.rotation) {
|
|
63
|
+
moves.push(leaderBadge.rotateItem(this.newBadgeRotation));
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
moves.push.apply(moves, __spreadArray([], __read(leaderBadge.moveItems({
|
|
68
|
+
type: LocationType_1.LocationType.TeamLeaderBadge,
|
|
69
|
+
rotation: this.newBadgeRotation,
|
|
70
|
+
player: team
|
|
71
|
+
})), false));
|
|
72
|
+
}
|
|
73
|
+
this.removeFirstEffect();
|
|
74
|
+
moves.push.apply(moves, __spreadArray([], __read(this.afterEffectPlayed()), false));
|
|
75
|
+
return moves;
|
|
76
|
+
};
|
|
77
|
+
Object.defineProperty(TakeLeaderBadgeRule.prototype, "newBadgeRotation", {
|
|
78
|
+
get: function () {
|
|
79
|
+
var leaderBadge = this.leader;
|
|
80
|
+
var item = leaderBadge.getItem();
|
|
81
|
+
var team = this.playerHelper.team;
|
|
82
|
+
if (item.location.player === team && !item.location.rotation)
|
|
83
|
+
return true;
|
|
84
|
+
return this.effect.gold;
|
|
85
|
+
},
|
|
86
|
+
enumerable: false,
|
|
87
|
+
configurable: true
|
|
88
|
+
});
|
|
89
|
+
Object.defineProperty(TakeLeaderBadgeRule.prototype, "leader", {
|
|
90
|
+
get: function () {
|
|
91
|
+
return this.material(MaterialType_1.MaterialType.LeaderBadgeToken);
|
|
92
|
+
},
|
|
93
|
+
enumerable: false,
|
|
94
|
+
configurable: true
|
|
95
|
+
});
|
|
96
|
+
TakeLeaderBadgeRule.prototype.onRuleEnd = function () {
|
|
97
|
+
this.forget(Memory_1.Memory.CurrentEffect);
|
|
98
|
+
return [];
|
|
99
|
+
};
|
|
100
|
+
return TakeLeaderBadgeRule;
|
|
101
|
+
}(index_1.EffectRule));
|
|
102
|
+
exports.TakeLeaderBadgeRule = TakeLeaderBadgeRule;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { TakeTechnologyBonusToken } from '../../material/effect/Effect';
|
|
3
|
+
import { TechnologyBonusResult } from '../helper/BonusHelper';
|
|
4
|
+
import { EffectRule } from './EffectRule';
|
|
5
|
+
export declare class TakeTechnologyBonusTokenRule extends EffectRule<TakeTechnologyBonusToken> {
|
|
6
|
+
onRuleStart(): MaterialMove[];
|
|
7
|
+
get bonusEffect(): TechnologyBonusResult | undefined;
|
|
8
|
+
get board(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
9
|
+
isPossible(): boolean;
|
|
10
|
+
onRuleEnd(): never[];
|
|
11
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
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.TakeTechnologyBonusTokenRule = void 0;
|
|
55
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
56
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
57
|
+
var BonusHelper_1 = require("../helper/BonusHelper");
|
|
58
|
+
var Memory_1 = require("../Memory");
|
|
59
|
+
var EffectRule_1 = require("./EffectRule");
|
|
60
|
+
var TakeTechnologyBonusTokenRule = (function (_super) {
|
|
61
|
+
__extends(TakeTechnologyBonusTokenRule, _super);
|
|
62
|
+
function TakeTechnologyBonusTokenRule() {
|
|
63
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
64
|
+
}
|
|
65
|
+
TakeTechnologyBonusTokenRule.prototype.onRuleStart = function () {
|
|
66
|
+
var _this = this;
|
|
67
|
+
var moves = _super.prototype.onRuleStart.call(this);
|
|
68
|
+
if (moves.length > 0)
|
|
69
|
+
return moves;
|
|
70
|
+
var bonusEffect = this.bonusEffect;
|
|
71
|
+
this.memorize(Memory_1.Memory.CurrentEffect, JSON.parse(JSON.stringify(this.effect)));
|
|
72
|
+
this.removeFirstEffect();
|
|
73
|
+
if (bonusEffect) {
|
|
74
|
+
this.memorize(Memory_1.Memory.WonBonus, bonusEffect.bonusId);
|
|
75
|
+
this.memorize(Memory_1.Memory.Effects, function (effects) {
|
|
76
|
+
if (effects === void 0) { effects = []; }
|
|
77
|
+
effects.unshift(__assign(__assign({}, bonusEffect.effect), { effectSource: {
|
|
78
|
+
type: MaterialType_1.MaterialType.TechnologyBoard,
|
|
79
|
+
value: _this.board.getItem().location.id
|
|
80
|
+
} }));
|
|
81
|
+
return effects;
|
|
82
|
+
});
|
|
83
|
+
moves.push.apply(moves, __spreadArray([], __read(bonusEffect.moves), false));
|
|
84
|
+
}
|
|
85
|
+
moves.push.apply(moves, __spreadArray([], __read(this.afterEffectPlayed()), false));
|
|
86
|
+
return moves;
|
|
87
|
+
};
|
|
88
|
+
Object.defineProperty(TakeTechnologyBonusTokenRule.prototype, "bonusEffect", {
|
|
89
|
+
get: function () {
|
|
90
|
+
var effect = this.effect;
|
|
91
|
+
var board = this.board;
|
|
92
|
+
var token = this.material(MaterialType_1.MaterialType.TechMarker)
|
|
93
|
+
.location(LocationType_1.LocationType.TechnologyBoardTokenSpace)
|
|
94
|
+
.parent(board.getIndex())
|
|
95
|
+
.player(this.playerHelper.team);
|
|
96
|
+
var item = token.getItem();
|
|
97
|
+
if (item.location.x !== effect.x)
|
|
98
|
+
return undefined;
|
|
99
|
+
return new BonusHelper_1.BonusHelper(this.game).getTechnologyBonus(token);
|
|
100
|
+
},
|
|
101
|
+
enumerable: false,
|
|
102
|
+
configurable: true
|
|
103
|
+
});
|
|
104
|
+
Object.defineProperty(TakeTechnologyBonusTokenRule.prototype, "board", {
|
|
105
|
+
get: function () {
|
|
106
|
+
var effect = this.effect;
|
|
107
|
+
return this.material(MaterialType_1.MaterialType.TechnologyBoard).locationId(effect.faction);
|
|
108
|
+
},
|
|
109
|
+
enumerable: false,
|
|
110
|
+
configurable: true
|
|
111
|
+
});
|
|
112
|
+
TakeTechnologyBonusTokenRule.prototype.isPossible = function () {
|
|
113
|
+
return this.bonusEffect !== undefined;
|
|
114
|
+
};
|
|
115
|
+
TakeTechnologyBonusTokenRule.prototype.onRuleEnd = function () {
|
|
116
|
+
this.forget(Memory_1.Memory.WonBonus);
|
|
117
|
+
this.forget(Memory_1.Memory.CurrentEffect);
|
|
118
|
+
return [];
|
|
119
|
+
};
|
|
120
|
+
return TakeTechnologyBonusTokenRule;
|
|
121
|
+
}(EffectRule_1.EffectRule));
|
|
122
|
+
exports.TakeTechnologyBonusTokenRule = TakeTechnologyBonusTokenRule;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { ItemMove, MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { TransferEffect } from '../../material/effect/Effect';
|
|
3
|
+
import { EffectRule } from './index';
|
|
4
|
+
export declare class TransferRule extends EffectRule<TransferEffect> {
|
|
5
|
+
onRuleStart(): MaterialMove[];
|
|
6
|
+
getPlayerMoves(): import("@gamepark/rules-api").MoveItem<number, number, number>[];
|
|
7
|
+
decrement(move: ItemMove): boolean;
|
|
8
|
+
afterItemMove(move: ItemMove): MaterialMove[];
|
|
9
|
+
isPossible(): boolean;
|
|
10
|
+
transferOneCard(): import("@gamepark/rules-api").MoveItem<number, number, number>[];
|
|
11
|
+
get influenceCards(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
12
|
+
getExtraDataFromMove(move: ItemMove): {
|
|
13
|
+
quantity: number;
|
|
14
|
+
influence: import("../../material/Influence").Influence;
|
|
15
|
+
} | {
|
|
16
|
+
quantity?: undefined;
|
|
17
|
+
influence?: undefined;
|
|
18
|
+
};
|
|
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.TransferRule = void 0;
|
|
19
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var Agents_1 = require("../../material/Agents");
|
|
21
|
+
var Influence_1 = require("../../material/Influence");
|
|
22
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
23
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
24
|
+
var index_1 = require("./index");
|
|
25
|
+
var TransferRule = (function (_super) {
|
|
26
|
+
__extends(TransferRule, _super);
|
|
27
|
+
function TransferRule() {
|
|
28
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
29
|
+
}
|
|
30
|
+
TransferRule.prototype.onRuleStart = function () {
|
|
31
|
+
var _a;
|
|
32
|
+
var moves = _super.prototype.onRuleStart.call(this);
|
|
33
|
+
if (moves.length > 0)
|
|
34
|
+
return moves;
|
|
35
|
+
if (this.effect.influence && ((_a = this.effect.quantity) !== null && _a !== void 0 ? _a : 1) === 1)
|
|
36
|
+
return this.transferOneCard();
|
|
37
|
+
return moves;
|
|
38
|
+
};
|
|
39
|
+
TransferRule.prototype.getPlayerMoves = function () {
|
|
40
|
+
return this.transferOneCard();
|
|
41
|
+
};
|
|
42
|
+
TransferRule.prototype.decrement = function (move) {
|
|
43
|
+
if (!(0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.AgentCard)(move) || move.location.type !== LocationType_1.LocationType.Influence)
|
|
44
|
+
return false;
|
|
45
|
+
if (this.effect.quantity) {
|
|
46
|
+
this.effect.quantity--;
|
|
47
|
+
return this.effect.quantity === 0 || !this.isPossible();
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
};
|
|
51
|
+
TransferRule.prototype.afterItemMove = function (move) {
|
|
52
|
+
if (!(0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.AgentCard)(move) || move.location.type !== LocationType_1.LocationType.Influence)
|
|
53
|
+
return [];
|
|
54
|
+
if (this.effect.quantity) {
|
|
55
|
+
this.effect.quantity--;
|
|
56
|
+
}
|
|
57
|
+
if (!this.effect.quantity || !this.isPossible()) {
|
|
58
|
+
this.removeFirstEffect();
|
|
59
|
+
return this.afterEffectPlayed();
|
|
60
|
+
}
|
|
61
|
+
return [];
|
|
62
|
+
};
|
|
63
|
+
TransferRule.prototype.isPossible = function () {
|
|
64
|
+
var _a;
|
|
65
|
+
return this.influenceCards.length >= ((_a = this.effect.quantity) !== null && _a !== void 0 ? _a : 1);
|
|
66
|
+
};
|
|
67
|
+
TransferRule.prototype.transferOneCard = function () {
|
|
68
|
+
var _this = this;
|
|
69
|
+
var allInfluences = Influence_1.influences;
|
|
70
|
+
var allCards = this.influenceCards;
|
|
71
|
+
return allInfluences
|
|
72
|
+
.filter(function (influence) { return (_this.effect.influence ? influence === _this.effect.influence : true); })
|
|
73
|
+
.flatMap(function (influence) {
|
|
74
|
+
return allCards
|
|
75
|
+
.locationId(influence)
|
|
76
|
+
.maxBy(function (item) { return item.location.x; })
|
|
77
|
+
.moveItems({
|
|
78
|
+
type: LocationType_1.LocationType.Influence,
|
|
79
|
+
id: influence,
|
|
80
|
+
player: _this.playerHelper.team
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
Object.defineProperty(TransferRule.prototype, "influenceCards", {
|
|
85
|
+
get: function () {
|
|
86
|
+
var _this = this;
|
|
87
|
+
var cards = this.material(MaterialType_1.MaterialType.AgentCard).location(LocationType_1.LocationType.Influence).player(this.opponentTeam);
|
|
88
|
+
if (this.effect.influence)
|
|
89
|
+
return cards.filter(function (item) { return Agents_1.Agents[item.id].influence === _this.effect.influence; });
|
|
90
|
+
return cards;
|
|
91
|
+
},
|
|
92
|
+
enumerable: false,
|
|
93
|
+
configurable: true
|
|
94
|
+
});
|
|
95
|
+
TransferRule.prototype.getExtraDataFromMove = function (move) {
|
|
96
|
+
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.AgentCard)(move) && move.location.type === LocationType_1.LocationType.Influence) {
|
|
97
|
+
var card = this.material(MaterialType_1.MaterialType.AgentCard).getItem(move.itemIndex);
|
|
98
|
+
return { quantity: Agents_1.Agents[card.id].cost, influence: Agents_1.Agents[card.id].influence };
|
|
99
|
+
}
|
|
100
|
+
return {};
|
|
101
|
+
};
|
|
102
|
+
return TransferRule;
|
|
103
|
+
}(index_1.EffectRule));
|
|
104
|
+
exports.TransferRule = TransferRule;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { WinCreditEffect } from '../../material/effect/Effect';
|
|
3
|
+
import { EffectRule } from './index';
|
|
4
|
+
export declare class WinCreditRule extends EffectRule<WinCreditEffect> {
|
|
5
|
+
onRuleStart(): MaterialMove[];
|
|
6
|
+
get wonCredit(): number;
|
|
7
|
+
isPossible(): boolean;
|
|
8
|
+
get distinctInfluence(): number;
|
|
9
|
+
get opponentDistinctInfluence(): number;
|
|
10
|
+
get level1Technology(): number;
|
|
11
|
+
setExtraData(_extraData: Record<string, unknown>): void;
|
|
12
|
+
onRuleEnd(): never[];
|
|
13
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
18
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
19
|
+
if (!m) return o;
|
|
20
|
+
var i = m.call(o), r, ar = [], e;
|
|
21
|
+
try {
|
|
22
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
23
|
+
}
|
|
24
|
+
catch (error) { e = { error: error }; }
|
|
25
|
+
finally {
|
|
26
|
+
try {
|
|
27
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
28
|
+
}
|
|
29
|
+
finally { if (e) throw e.error; }
|
|
30
|
+
}
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
34
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
35
|
+
if (ar || !(i in from)) {
|
|
36
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
37
|
+
ar[i] = from[i];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
41
|
+
};
|
|
42
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.WinCreditRule = void 0;
|
|
47
|
+
var uniq_1 = __importDefault(require("lodash/uniq"));
|
|
48
|
+
var Agents_1 = require("../../material/Agents");
|
|
49
|
+
var LocationType_1 = require("../../material/LocationType");
|
|
50
|
+
var MaterialType_1 = require("../../material/MaterialType");
|
|
51
|
+
var CustomMoveType_1 = require("../CustomMoveType");
|
|
52
|
+
var Memory_1 = require("../Memory");
|
|
53
|
+
var index_1 = require("./index");
|
|
54
|
+
var WinCreditRule = (function (_super) {
|
|
55
|
+
__extends(WinCreditRule, _super);
|
|
56
|
+
function WinCreditRule() {
|
|
57
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
58
|
+
}
|
|
59
|
+
WinCreditRule.prototype.onRuleStart = function () {
|
|
60
|
+
var moves = [];
|
|
61
|
+
var money = this.creditMoney;
|
|
62
|
+
var credits = this.wonCredit;
|
|
63
|
+
this.memorize(Memory_1.Memory.Credit, credits);
|
|
64
|
+
this.memorize(Memory_1.Memory.CurrentEffect, JSON.parse(JSON.stringify(this.effect)));
|
|
65
|
+
moves.push(this.customMove(CustomMoveType_1.CustomMoveType.WinCreditLog, credits));
|
|
66
|
+
moves.push.apply(moves, __spreadArray([], __read(money.addMoney(credits, { type: LocationType_1.LocationType.TeamCredit, player: this.effect.opponent ? this.opponentTeam : this.playerHelper.team })), false));
|
|
67
|
+
this.removeFirstEffect();
|
|
68
|
+
moves.push.apply(moves, __spreadArray([], __read(this.afterEffectPlayed()), false));
|
|
69
|
+
return moves;
|
|
70
|
+
};
|
|
71
|
+
Object.defineProperty(WinCreditRule.prototype, "wonCredit", {
|
|
72
|
+
get: function () {
|
|
73
|
+
if (this.effect.quantity)
|
|
74
|
+
return this.effect.quantity;
|
|
75
|
+
if (this.effect.perLevel1Technology)
|
|
76
|
+
return this.effect.perLevel1Technology[this.level1Technology - 1];
|
|
77
|
+
if (this.effect.factorPerDifferentInfluence)
|
|
78
|
+
return this.distinctInfluence * this.effect.factorPerDifferentInfluence;
|
|
79
|
+
if (this.effect.factorPerDifferentOpponentInfluence)
|
|
80
|
+
return this.opponentDistinctInfluence * this.effect.factorPerDifferentOpponentInfluence;
|
|
81
|
+
return 0;
|
|
82
|
+
},
|
|
83
|
+
enumerable: false,
|
|
84
|
+
configurable: true
|
|
85
|
+
});
|
|
86
|
+
WinCreditRule.prototype.isPossible = function () {
|
|
87
|
+
if (this.effect.perLevel1Technology)
|
|
88
|
+
return this.level1Technology > 0;
|
|
89
|
+
if (this.effect.factorPerDifferentInfluence)
|
|
90
|
+
return this.distinctInfluence > 0;
|
|
91
|
+
if (this.effect.factorPerDifferentOpponentInfluence)
|
|
92
|
+
return this.opponentDistinctInfluence > 0;
|
|
93
|
+
return true;
|
|
94
|
+
};
|
|
95
|
+
Object.defineProperty(WinCreditRule.prototype, "distinctInfluence", {
|
|
96
|
+
get: function () {
|
|
97
|
+
var items = this.material(MaterialType_1.MaterialType.AgentCard)
|
|
98
|
+
.location(LocationType_1.LocationType.Influence)
|
|
99
|
+
.player(this.playerHelper.team)
|
|
100
|
+
.getItems()
|
|
101
|
+
.map(function (a) { return Agents_1.Agents[a.id].influence; });
|
|
102
|
+
return (0, uniq_1.default)(items).length;
|
|
103
|
+
},
|
|
104
|
+
enumerable: false,
|
|
105
|
+
configurable: true
|
|
106
|
+
});
|
|
107
|
+
Object.defineProperty(WinCreditRule.prototype, "opponentDistinctInfluence", {
|
|
108
|
+
get: function () {
|
|
109
|
+
var items = this.material(MaterialType_1.MaterialType.AgentCard)
|
|
110
|
+
.location(LocationType_1.LocationType.Influence)
|
|
111
|
+
.player(this.opponentTeam)
|
|
112
|
+
.getItems()
|
|
113
|
+
.map(function (a) { return Agents_1.Agents[a.id].influence; });
|
|
114
|
+
return (0, uniq_1.default)(items).length;
|
|
115
|
+
},
|
|
116
|
+
enumerable: false,
|
|
117
|
+
configurable: true
|
|
118
|
+
});
|
|
119
|
+
Object.defineProperty(WinCreditRule.prototype, "level1Technology", {
|
|
120
|
+
get: function () {
|
|
121
|
+
return this.material(MaterialType_1.MaterialType.TechMarker)
|
|
122
|
+
.player(this.playerHelper.team)
|
|
123
|
+
.location(function (l) { return l.type === LocationType_1.LocationType.TechnologyBoardTokenSpace && l.x === 1; }).length;
|
|
124
|
+
},
|
|
125
|
+
enumerable: false,
|
|
126
|
+
configurable: true
|
|
127
|
+
});
|
|
128
|
+
WinCreditRule.prototype.setExtraData = function (_extraData) {
|
|
129
|
+
var _a;
|
|
130
|
+
var _b;
|
|
131
|
+
if (_extraData.quantity) {
|
|
132
|
+
(_a = (_b = this.effect).quantity) !== null && _a !== void 0 ? _a : (_b.quantity = _extraData.quantity);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
WinCreditRule.prototype.onRuleEnd = function () {
|
|
136
|
+
this.forget(Memory_1.Memory.Credit);
|
|
137
|
+
this.forget(Memory_1.Memory.CurrentEffect);
|
|
138
|
+
return [];
|
|
139
|
+
};
|
|
140
|
+
return WinCreditRule;
|
|
141
|
+
}(index_1.EffectRule));
|
|
142
|
+
exports.WinCreditRule = WinCreditRule;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ItemMove, Material, MaterialItem, MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { WinInfluenceEffect } from '../../material/effect/Effect';
|
|
3
|
+
import { Influence } from '../../material/Influence';
|
|
4
|
+
import { PatternType } from '../Memory';
|
|
5
|
+
import { EffectRule } from './index';
|
|
6
|
+
export declare class WinInfluenceRule extends EffectRule<WinInfluenceEffect> {
|
|
7
|
+
onRuleStart(): MaterialMove[];
|
|
8
|
+
get planets(): Material<number, number, number>;
|
|
9
|
+
private patternPlanet;
|
|
10
|
+
computePossiblePatterns(): PatternType[][];
|
|
11
|
+
private influencePlanet;
|
|
12
|
+
private opponentSidePlanets;
|
|
13
|
+
private fromCenterPlanets;
|
|
14
|
+
getPositionAfterPull(item: MaterialItem, effect: WinInfluenceEffect): number[];
|
|
15
|
+
private getPositionForQuantity;
|
|
16
|
+
getPlayerMoves(): MaterialMove[];
|
|
17
|
+
beforeItemMove(move: ItemMove): MaterialMove[];
|
|
18
|
+
isAlreadyPlayed(influence: Influence): boolean | undefined;
|
|
19
|
+
isPossible(): boolean;
|
|
20
|
+
get lastPlanetsMoved(): Influence[] | undefined;
|
|
21
|
+
setExtraData(_extraData: Record<string, unknown>): void;
|
|
22
|
+
onRuleEnd(): never[];
|
|
23
|
+
}
|