@gamepark/mythologies 0.2.0 → 0.3.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/CustomMoveType.d.ts +2 -1
- package/dist/CustomMoveType.js +1 -0
- package/dist/Memory.d.ts +4 -1
- package/dist/Memory.js +3 -0
- package/dist/MythologiesRules.d.ts +17 -5
- package/dist/MythologiesRules.js +36 -33
- package/dist/material/Mythology.js +1 -1
- package/dist/material/Pantheon.d.ts +6 -1
- package/dist/material/Pantheon.js +61 -25
- package/dist/material/entity/Effect.d.ts +21 -8
- package/dist/material/entity/Effect.js +34 -3
- package/dist/material/entity/EntityDescription.d.ts +0 -2
- package/dist/material/entity/EntityDescription.js +1 -7
- package/dist/material/entity/MoveEffectRule.d.ts +2 -2
- package/dist/material/entity/MoveEffectRule.js +7 -3
- package/dist/material/entity/PlaceCardEffectRule.d.ts +2 -2
- package/dist/material/entity/PlaceCardEffectRule.js +29 -3
- package/dist/material/entity/SacrificeEffectRule.d.ts +1 -1
- package/dist/material/entity/SacrificeEffectRule.js +29 -2
- package/dist/material/entity/SimultaneousSacrificeEffectRule.d.ts +1 -1
- package/dist/material/entity/SimultaneousSacrificeEffectRule.js +29 -2
- package/dist/material/entity/chinese/ChangE.js +39 -1
- package/dist/material/entity/chinese/Fenghuang.js +8 -1
- package/dist/material/entity/chinese/Jiangshi.js +7 -1
- package/dist/material/entity/chinese/Mogwai.js +38 -1
- package/dist/material/entity/chinese/Nian.js +36 -1
- package/dist/material/entity/chinese/Nuwa.js +7 -1
- package/dist/material/entity/chinese/Qilin.js +7 -1
- package/dist/material/entity/chinese/SunWukong.js +36 -1
- package/dist/material/entity/chinese/Tianlong.js +7 -1
- package/dist/material/entity/chinese/YanluoWang.js +7 -1
- package/dist/material/entity/egyptian/Beetle.js +1 -1
- package/dist/material/entity/egyptian/Sphinx.js +1 -1
- package/dist/material/entity/greek/Chimera.js +1 -1
- package/dist/material/entity/greek/Poseidon.js +3 -3
- package/dist/material/entity/norse/Draugr.js +1 -1
- package/dist/material/entity/norse/Jotunn.js +3 -2
- package/dist/rules/PlaceCardsRule.d.ts +3 -1
- package/dist/rules/PlaceCardsRule.js +18 -8
- package/dist/rules/PlaceTokenRule.js +3 -1
- package/dist/rules/RuleId.d.ts +8 -1
- package/dist/rules/RuleId.js +7 -0
- package/dist/rules/effects/AlfEffectRule.js +1 -1
- package/dist/rules/effects/ChimeraEffectRule.d.ts +1 -0
- package/dist/rules/effects/ChimeraEffectRule.js +4 -0
- package/dist/rules/effects/CondorEffectRule.d.ts +2 -2
- package/dist/rules/effects/CondorEffectRule.js +3 -7
- package/dist/rules/effects/DraugrEffectRule.d.ts +2 -1
- package/dist/rules/effects/DraugrEffectRule.js +8 -1
- package/dist/rules/effects/FenghuangEffectRule.d.ts +8 -0
- package/dist/rules/effects/FenghuangEffectRule.js +48 -0
- package/dist/rules/effects/HadesEffectRule.js +2 -12
- package/dist/rules/effects/JiangshiEffectRule.d.ts +8 -0
- package/dist/rules/effects/JiangshiEffectRule.js +76 -0
- package/dist/rules/effects/KinnaraEffectRule.js +7 -2
- package/dist/rules/effects/NuwaEffectRule.d.ts +12 -0
- package/dist/rules/effects/NuwaEffectRule.js +97 -0
- package/dist/rules/effects/QilinEffectRule.d.ts +8 -0
- package/dist/rules/effects/QilinEffectRule.js +113 -0
- package/dist/rules/effects/RaEffectRule.js +2 -12
- package/dist/rules/effects/ResolveEffectsRule.d.ts +2 -0
- package/dist/rules/effects/ResolveEffectsRule.js +17 -14
- package/dist/rules/effects/ShivaEffectRule.d.ts +1 -1
- package/dist/rules/effects/ShivaEffectRule.js +5 -2
- package/dist/rules/effects/SphinxEffectRule.js +2 -6
- package/dist/rules/effects/ThorEffectRule.d.ts +1 -1
- package/dist/rules/effects/ThorEffectRule.js +3 -1
- package/dist/rules/effects/TianlongEffectRule.d.ts +17 -0
- package/dist/rules/effects/TianlongEffectRule.js +148 -0
- package/dist/rules/effects/TriggerEffectsRule.js +4 -5
- package/dist/rules/effects/YanluoWangEffectRule.d.ts +9 -0
- package/dist/rules/effects/YanluoWangEffectRule.js +104 -0
- package/package.json +2 -2
package/dist/CustomMoveType.d.ts
CHANGED
package/dist/CustomMoveType.js
CHANGED
|
@@ -11,4 +11,5 @@ var CustomMoveType;
|
|
|
11
11
|
CustomMoveType[CustomMoveType["ChoosePlayer"] = 6] = "ChoosePlayer";
|
|
12
12
|
CustomMoveType[CustomMoveType["ChooseMythology"] = 7] = "ChooseMythology";
|
|
13
13
|
CustomMoveType[CustomMoveType["ChooseLine"] = 8] = "ChooseLine";
|
|
14
|
+
CustomMoveType[CustomMoveType["ChooseEntityCard"] = 9] = "ChooseEntityCard";
|
|
14
15
|
})(CustomMoveType = exports.CustomMoveType || (exports.CustomMoveType = {}));
|
package/dist/Memory.d.ts
CHANGED
package/dist/Memory.js
CHANGED
|
@@ -16,4 +16,7 @@ var Memory;
|
|
|
16
16
|
Memory[Memory["GarudaSacrificeCount"] = 13] = "GarudaSacrificeCount";
|
|
17
17
|
Memory[Memory["VetalaCount"] = 14] = "VetalaCount";
|
|
18
18
|
Memory[Memory["IllapaLine"] = 15] = "IllapaLine";
|
|
19
|
+
Memory[Memory["YanluoWangCount"] = 16] = "YanluoWangCount";
|
|
20
|
+
Memory[Memory["NuwaPlayerCreatures"] = 17] = "NuwaPlayerCreatures";
|
|
21
|
+
Memory[Memory["TianlongVector"] = 18] = "TianlongVector";
|
|
19
22
|
})(Memory = exports.Memory || (exports.Memory = {}));
|
|
@@ -16,28 +16,33 @@ import { CobraEffectRule, CobraInvokeEffect } from './rules/effects/CobraEffectR
|
|
|
16
16
|
import { CondorEffectRule } from './rules/effects/CondorEffectRule';
|
|
17
17
|
import { CyclopsEffectRule } from './rules/effects/CyclopsEffectRule';
|
|
18
18
|
import { DraugrEffectRule } from './rules/effects/DraugrEffectRule';
|
|
19
|
+
import { FenghuangEffectRule } from './rules/effects/FenghuangEffectRule';
|
|
19
20
|
import { FenrirChoiceRule, FenrirEffectRule } from './rules/effects/FenrirEffectRule';
|
|
20
21
|
import { GarudaEffectRule } from './rules/effects/GarudaEffectRule';
|
|
21
22
|
import { GorgonEffectRule } from './rules/effects/GorgonEffectRule';
|
|
22
23
|
import { GriffinEffectRule } from './rules/effects/GriffinEffectRule';
|
|
23
24
|
import { HadesEffectRule } from './rules/effects/HadesEffectRule';
|
|
24
25
|
import { IllapaEffectRule, IllapaSacrificeRule } from './rules/effects/IllapaEffectRule';
|
|
26
|
+
import { JiangshiEffectRule } from './rules/effects/JiangshiEffectRule';
|
|
25
27
|
import { KinnaraEffectRule, KinnaraPlaceEffectRule } from './rules/effects/KinnaraEffectRule';
|
|
26
28
|
import { MinotaurEffectRule } from './rules/effects/MinotaurEffectRule';
|
|
29
|
+
import { NuwaEffectRule } from './rules/effects/NuwaEffectRule';
|
|
27
30
|
import { OdinEffectRule } from './rules/effects/OdinEffectRule';
|
|
31
|
+
import { QilinEffectRule } from './rules/effects/QilinEffectRule';
|
|
28
32
|
import { RakshasaEffectRule } from './rules/effects/RakshasaEffectRule';
|
|
29
33
|
import { ResolveEffectsRule } from './rules/effects/ResolveEffectsRule';
|
|
30
34
|
import { ShivaEffectRule } from './rules/effects/ShivaEffectRule';
|
|
31
35
|
import { SphinxEffectRule } from './rules/effects/SphinxEffectRule';
|
|
32
36
|
import { SupayEffectRule } from './rules/effects/SupayEffectRule';
|
|
33
37
|
import { ThorEffectRule } from './rules/effects/ThorEffectRule';
|
|
38
|
+
import { TianlongEffectRule, TianlongOpponentsEffectRule } from './rules/effects/TianlongEffectRule';
|
|
34
39
|
import { UkukuEffectRule, UkukuPlaceEffectRule } from './rules/effects/UkukuEffectRule';
|
|
35
40
|
import { VetalaEffectRule } from './rules/effects/VetalaEffectRule';
|
|
36
41
|
import { ViracochaEffectRule } from './rules/effects/ViracochaEffectRule';
|
|
42
|
+
import { YanluoWangEffectRule } from './rules/effects/YanluoWangEffectRule';
|
|
37
43
|
import { EndGameRule } from './rules/EndGameRule';
|
|
38
44
|
import { PlaceCardsRule } from './rules/PlaceCardsRule';
|
|
39
45
|
import { PlaceTokenRule } from './rules/PlaceTokenRule';
|
|
40
|
-
import { RuleId } from './rules/RuleId';
|
|
41
46
|
import { UpkeepRule } from './rules/UpkeepRule';
|
|
42
47
|
export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, MaterialType, LocationType> implements TimeLimit<MaterialGame<PlayerColor, MaterialType, LocationType>, MaterialMove<PlayerColor, MaterialType, LocationType>, PlayerColor>, CompetitiveScore {
|
|
43
48
|
rules: {
|
|
@@ -83,6 +88,13 @@ export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, M
|
|
|
83
88
|
43: typeof SupayEffectRule;
|
|
84
89
|
44: typeof UkukuEffectRule;
|
|
85
90
|
45: typeof UkukuPlaceEffectRule;
|
|
91
|
+
46: typeof YanluoWangEffectRule;
|
|
92
|
+
47: typeof NuwaEffectRule;
|
|
93
|
+
48: typeof TianlongEffectRule;
|
|
94
|
+
49: typeof TianlongOpponentsEffectRule;
|
|
95
|
+
50: typeof QilinEffectRule;
|
|
96
|
+
51: typeof FenghuangEffectRule;
|
|
97
|
+
52: typeof JiangshiEffectRule;
|
|
86
98
|
};
|
|
87
99
|
locationsStrategies: {
|
|
88
100
|
2: {
|
|
@@ -116,10 +128,10 @@ export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, M
|
|
|
116
128
|
};
|
|
117
129
|
};
|
|
118
130
|
keepMoveSecret(move: MaterialMove): boolean;
|
|
119
|
-
beforeItemMove(move: ItemMove):
|
|
120
|
-
protected onCustomMove(move: CustomMove):
|
|
121
|
-
getAutomaticMoves():
|
|
122
|
-
startEffectsResolution():
|
|
131
|
+
beforeItemMove(move: ItemMove): never[];
|
|
132
|
+
protected onCustomMove(move: CustomMove): MaterialMove<number, number, number, number>[];
|
|
133
|
+
getAutomaticMoves(): MaterialMove<number, number, number, number>[];
|
|
134
|
+
startEffectsResolution(): MaterialMove<number, number, number, number>[];
|
|
123
135
|
giveTime(): number;
|
|
124
136
|
getScore(player: PlayerColor): number;
|
|
125
137
|
getTieBreaker(tieBreaker: number, player: PlayerColor): number | undefined;
|
package/dist/MythologiesRules.js
CHANGED
|
@@ -38,25 +38,31 @@ var CobraEffectRule_1 = require("./rules/effects/CobraEffectRule");
|
|
|
38
38
|
var CondorEffectRule_1 = require("./rules/effects/CondorEffectRule");
|
|
39
39
|
var CyclopsEffectRule_1 = require("./rules/effects/CyclopsEffectRule");
|
|
40
40
|
var DraugrEffectRule_1 = require("./rules/effects/DraugrEffectRule");
|
|
41
|
+
var FenghuangEffectRule_1 = require("./rules/effects/FenghuangEffectRule");
|
|
41
42
|
var FenrirEffectRule_1 = require("./rules/effects/FenrirEffectRule");
|
|
42
43
|
var GarudaEffectRule_1 = require("./rules/effects/GarudaEffectRule");
|
|
43
44
|
var GorgonEffectRule_1 = require("./rules/effects/GorgonEffectRule");
|
|
44
45
|
var GriffinEffectRule_1 = require("./rules/effects/GriffinEffectRule");
|
|
45
46
|
var HadesEffectRule_1 = require("./rules/effects/HadesEffectRule");
|
|
46
47
|
var IllapaEffectRule_1 = require("./rules/effects/IllapaEffectRule");
|
|
48
|
+
var JiangshiEffectRule_1 = require("./rules/effects/JiangshiEffectRule");
|
|
47
49
|
var KinnaraEffectRule_1 = require("./rules/effects/KinnaraEffectRule");
|
|
48
50
|
var MinotaurEffectRule_1 = require("./rules/effects/MinotaurEffectRule");
|
|
51
|
+
var NuwaEffectRule_1 = require("./rules/effects/NuwaEffectRule");
|
|
49
52
|
var OdinEffectRule_1 = require("./rules/effects/OdinEffectRule");
|
|
53
|
+
var QilinEffectRule_1 = require("./rules/effects/QilinEffectRule");
|
|
50
54
|
var RakshasaEffectRule_1 = require("./rules/effects/RakshasaEffectRule");
|
|
51
55
|
var ResolveEffectsRule_1 = require("./rules/effects/ResolveEffectsRule");
|
|
52
56
|
var ShivaEffectRule_1 = require("./rules/effects/ShivaEffectRule");
|
|
53
57
|
var SphinxEffectRule_1 = require("./rules/effects/SphinxEffectRule");
|
|
54
58
|
var SupayEffectRule_1 = require("./rules/effects/SupayEffectRule");
|
|
55
59
|
var ThorEffectRule_1 = require("./rules/effects/ThorEffectRule");
|
|
60
|
+
var TianlongEffectRule_1 = require("./rules/effects/TianlongEffectRule");
|
|
56
61
|
var TriggerEffectsRule_1 = require("./rules/effects/TriggerEffectsRule");
|
|
57
62
|
var UkukuEffectRule_1 = require("./rules/effects/UkukuEffectRule");
|
|
58
63
|
var VetalaEffectRule_1 = require("./rules/effects/VetalaEffectRule");
|
|
59
64
|
var ViracochaEffectRule_1 = require("./rules/effects/ViracochaEffectRule");
|
|
65
|
+
var YanluoWangEffectRule_1 = require("./rules/effects/YanluoWangEffectRule");
|
|
60
66
|
var EndGameRule_1 = require("./rules/EndGameRule");
|
|
61
67
|
var PlaceCardsRule_1 = require("./rules/PlaceCardsRule");
|
|
62
68
|
var PlaceTokenRule_1 = require("./rules/PlaceTokenRule");
|
|
@@ -110,6 +116,13 @@ var MythologiesRules = (function (_super) {
|
|
|
110
116
|
_a[RuleId_1.RuleId.SupayEffect] = SupayEffectRule_1.SupayEffectRule,
|
|
111
117
|
_a[RuleId_1.RuleId.UkukuEffect] = UkukuEffectRule_1.UkukuEffectRule,
|
|
112
118
|
_a[RuleId_1.RuleId.UkukuPlaceEffect] = UkukuEffectRule_1.UkukuPlaceEffectRule,
|
|
119
|
+
_a[RuleId_1.RuleId.YanluoWangEffect] = YanluoWangEffectRule_1.YanluoWangEffectRule,
|
|
120
|
+
_a[RuleId_1.RuleId.NuwaEffect] = NuwaEffectRule_1.NuwaEffectRule,
|
|
121
|
+
_a[RuleId_1.RuleId.TianlongEffect] = TianlongEffectRule_1.TianlongEffectRule,
|
|
122
|
+
_a[RuleId_1.RuleId.TianlongOpponentsEffect] = TianlongEffectRule_1.TianlongOpponentsEffectRule,
|
|
123
|
+
_a[RuleId_1.RuleId.QilinEffect] = QilinEffectRule_1.QilinEffectRule,
|
|
124
|
+
_a[RuleId_1.RuleId.FenghuangEffect] = FenghuangEffectRule_1.FenghuangEffectRule,
|
|
125
|
+
_a[RuleId_1.RuleId.JiangshiEffect] = JiangshiEffectRule_1.JiangshiEffectRule,
|
|
113
126
|
_a);
|
|
114
127
|
_this.locationsStrategies = (_b = {},
|
|
115
128
|
_b[MaterialType_1.MaterialType.EntityCard] = (_c = {},
|
|
@@ -146,34 +159,12 @@ var MythologiesRules = (function (_super) {
|
|
|
146
159
|
}
|
|
147
160
|
MythologiesRules.prototype.keepMoveSecret = function (move) {
|
|
148
161
|
return ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.DraftToken)(move) &&
|
|
162
|
+
move.location.type === LocationType_1.LocationType.OnEntityCard &&
|
|
149
163
|
this.remind(Memory_1.Memory.KeepTokenPlaceSecret, this.material(MaterialType_1.MaterialType.DraftToken).getItem(move.itemIndex).id.back) === true);
|
|
150
164
|
};
|
|
151
165
|
MythologiesRules.prototype.beforeItemMove = function (move) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
if (move.location.type === LocationType_1.LocationType.Pantheon) {
|
|
155
|
-
var location = this.material(MaterialType_1.MaterialType.EntityCard).getItem(move.itemIndex).location;
|
|
156
|
-
if (location.type !== LocationType_1.LocationType.Pantheon && location.type !== LocationType_1.LocationType.PlayerBufferArea) {
|
|
157
|
-
return new Pantheon_1.Pantheon(this.game, move.location.player).onCardPlaced(move);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
161
|
-
var card = this.material(MaterialType_1.MaterialType.EntityCard).index(move.itemIndex);
|
|
162
|
-
var location = card.getItem().location;
|
|
163
|
-
if (location.type === LocationType_1.LocationType.Pantheon) {
|
|
164
|
-
return new Pantheon_1.Pantheon(this.game, location.player).onEntitySacrificed(card);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
if ((0, rules_api_1.isMoveItemTypeAtOnce)(MaterialType_1.MaterialType.EntityCard)(move)) {
|
|
169
|
-
if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
170
|
-
var pile = this.material(MaterialType_1.MaterialType.EntityCard).index(move.indexes);
|
|
171
|
-
if (((_a = pile.getItem()) === null || _a === void 0 ? void 0 : _a.location.type) === LocationType_1.LocationType.Pantheon) {
|
|
172
|
-
var topCard = pile.maxBy(function (item) { return item.location.z; });
|
|
173
|
-
return new Pantheon_1.Pantheon(this.game, topCard.getItem().location.player).onEntitySacrificed(topCard);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}
|
|
166
|
+
if (!this.game.rule)
|
|
167
|
+
return [];
|
|
177
168
|
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.GemToken)(move) && move.location.type === LocationType_1.LocationType.PlayerGems) {
|
|
178
169
|
var gem = this.material(MaterialType_1.MaterialType.GemToken).getItem(move.itemIndex).location;
|
|
179
170
|
var player = gem.player;
|
|
@@ -198,13 +189,16 @@ var MythologiesRules = (function (_super) {
|
|
|
198
189
|
return this.startEffectsResolution();
|
|
199
190
|
}
|
|
200
191
|
else {
|
|
201
|
-
var
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
192
|
+
var pendingRule = this.remind(Memory_1.Memory.PendingRule);
|
|
193
|
+
if (pendingRule) {
|
|
194
|
+
var id = pendingRule.id, player = pendingRule.player;
|
|
195
|
+
this.forget(Memory_1.Memory.PendingRule);
|
|
196
|
+
switch (id) {
|
|
197
|
+
case RuleId_1.RuleId.EndGame:
|
|
198
|
+
return [this.endGame()];
|
|
199
|
+
default:
|
|
200
|
+
return [player === ((_a = this.game.rule) === null || _a === void 0 ? void 0 : _a.player) ? this.startRule(RuleId_1.RuleId.PlaceCards) : this.startPlayerTurn(RuleId_1.RuleId.PlaceCards, player)];
|
|
201
|
+
}
|
|
208
202
|
}
|
|
209
203
|
}
|
|
210
204
|
}
|
|
@@ -218,7 +212,16 @@ var MythologiesRules = (function (_super) {
|
|
|
218
212
|
return [];
|
|
219
213
|
};
|
|
220
214
|
MythologiesRules.prototype.startEffectsResolution = function () {
|
|
221
|
-
var
|
|
215
|
+
var pendingEffects = this.remind(Memory_1.Memory.PendingEffects)[0];
|
|
216
|
+
var autoEffectIndex = pendingEffects.findIndex(function (effect) { return effect.auto; });
|
|
217
|
+
if (autoEffectIndex !== -1) {
|
|
218
|
+
var autoEffect = pendingEffects.splice(autoEffectIndex, 1)[0];
|
|
219
|
+
if (pendingEffects.length === 0) {
|
|
220
|
+
this.remind(Memory_1.Memory.PendingEffects).shift();
|
|
221
|
+
}
|
|
222
|
+
return new ResolveEffectsRule_1.ResolveEffectsRule(this.game).playEffect(autoEffect);
|
|
223
|
+
}
|
|
224
|
+
var cardIndex = pendingEffects[0].cardIndex;
|
|
222
225
|
var player = this.material(MaterialType_1.MaterialType.EntityCard).getItem(cardIndex).location.player;
|
|
223
226
|
return [this.startPlayerTurn(RuleId_1.RuleId.ResolveEffects, player)];
|
|
224
227
|
};
|
|
@@ -13,7 +13,7 @@ var Mythology;
|
|
|
13
13
|
Mythology[Mythology["Zulu"] = 6] = "Zulu";
|
|
14
14
|
Mythology[Mythology["Celtic"] = 7] = "Celtic";
|
|
15
15
|
})(Mythology = exports.Mythology || (exports.Mythology = {}));
|
|
16
|
-
exports.availableMythologies = (0, rules_api_1.getEnumValues)(Mythology).filter(function (mythology) { return mythology <
|
|
16
|
+
exports.availableMythologies = (0, rules_api_1.getEnumValues)(Mythology).filter(function (mythology) { return mythology < 6; });
|
|
17
17
|
var SanctuarySide;
|
|
18
18
|
(function (SanctuarySide) {
|
|
19
19
|
SanctuarySide[SanctuarySide["Left"] = 0] = "Left";
|
|
@@ -8,6 +8,7 @@ export declare class Pantheon extends MaterialRulesPart {
|
|
|
8
8
|
get visibleEntities(): Material<number, number, number>;
|
|
9
9
|
get coveredEntities(): Material<number, number, number>;
|
|
10
10
|
get grid(): (Entity | undefined)[][];
|
|
11
|
+
private get indexGrid();
|
|
11
12
|
get legalSpacesToInvoke(): XYCoordinates[];
|
|
12
13
|
isLegalSpaceToInvoke(space: XYCoordinates): boolean;
|
|
13
14
|
getOpponentsWithTrollAt({ x, y }: XYCoordinates): PlayerColor[];
|
|
@@ -23,8 +24,11 @@ export declare class Pantheon extends MaterialRulesPart {
|
|
|
23
24
|
loseFavor(quantity?: number): import("@gamepark/rules-api").DeleteItem<number>;
|
|
24
25
|
onCardPlaced(move: MoveItem): MaterialMove<number, number, number, number>[];
|
|
25
26
|
get isInvoke(): boolean;
|
|
26
|
-
updateGrid(
|
|
27
|
+
updateGrid(gridAfter?: (number | null)[][]): MaterialMove<number, number, number, number>[];
|
|
28
|
+
private entityMoved;
|
|
27
29
|
private gainBonus;
|
|
30
|
+
gainLineBonus(y: number): MoveItem<number, number, number>[];
|
|
31
|
+
gainColumnBonus(x: number): MoveItem<number, number, number>[];
|
|
28
32
|
getBonusGem(y: number): Material<number, number, number>;
|
|
29
33
|
getBonusFavor(x: number): Material<number, number, number>;
|
|
30
34
|
onInvoke(move: MoveItem): MaterialMove<number, number, number, number>[];
|
|
@@ -35,4 +39,5 @@ export declare class Pantheon extends MaterialRulesPart {
|
|
|
35
39
|
get mythologies(): import("./Mythology").Mythology[];
|
|
36
40
|
get missingMythologies(): import("./Mythology").Mythology[];
|
|
37
41
|
onEntitySacrificed(card: Material): MaterialMove<number, number, number, number>[];
|
|
42
|
+
hasCrushed(card: MaterialItem): boolean;
|
|
38
43
|
}
|
|
@@ -106,6 +106,19 @@ var Pantheon = (function (_super) {
|
|
|
106
106
|
enumerable: false,
|
|
107
107
|
configurable: true
|
|
108
108
|
});
|
|
109
|
+
Object.defineProperty(Pantheon.prototype, "indexGrid", {
|
|
110
|
+
get: function () {
|
|
111
|
+
var visibleEntities = this.visibleEntities;
|
|
112
|
+
return (0, lodash_1.range)(0, 3).map(function (y) {
|
|
113
|
+
return (0, lodash_1.range)(0, 3).map(function (x) {
|
|
114
|
+
var entity = visibleEntities.location(function (l) { return l.x === x && l.y === y; });
|
|
115
|
+
return entity.length > 0 ? entity.getIndex() : null;
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
enumerable: false,
|
|
120
|
+
configurable: true
|
|
121
|
+
});
|
|
109
122
|
Object.defineProperty(Pantheon.prototype, "legalSpacesToInvoke", {
|
|
110
123
|
get: function () {
|
|
111
124
|
var _this = this;
|
|
@@ -182,27 +195,28 @@ var Pantheon = (function (_super) {
|
|
|
182
195
|
return this.material(MaterialType_1.MaterialType.FavorToken).location(LocationType_1.LocationType.PlayerFavor).player(this.player).deleteItem(quantity);
|
|
183
196
|
};
|
|
184
197
|
Pantheon.prototype.onCardPlaced = function (move) {
|
|
198
|
+
var _a, _b;
|
|
185
199
|
var moves = [];
|
|
186
200
|
var location = move.location;
|
|
187
201
|
var card = this.material(MaterialType_1.MaterialType.EntityCard).index(move.itemIndex);
|
|
188
202
|
var cardItem = card.getItem();
|
|
189
|
-
var entity = cardItem.id.front;
|
|
203
|
+
var entity = (_a = cardItem.id.front) !== null && _a !== void 0 ? _a : ((_b = move.reveal) === null || _b === void 0 ? void 0 : _b.id).front;
|
|
190
204
|
if ((0, Entity_1.isGod)(entity)) {
|
|
191
205
|
moves.push(this.spendGems(4));
|
|
192
206
|
}
|
|
193
|
-
var grid = this.
|
|
194
|
-
grid[move.location.y][move.location.x] =
|
|
207
|
+
var grid = this.indexGrid;
|
|
208
|
+
grid[move.location.y][move.location.x] = move.itemIndex;
|
|
195
209
|
moves.push.apply(moves, __spreadArray([], __read(this.updateGrid(grid)), false));
|
|
196
210
|
var triggerEffectsRule = new TriggerEffectsRule_1.TriggerEffectsRule(this.game);
|
|
197
211
|
var crushed = this.allCards.location(function (l) { return l.x === move.location.x && l.y === move.location.y; }).maxBy(function (item) { return item.location.z; });
|
|
198
|
-
triggerEffectsRule.triggerCardEffect(card, { type: Effect_1.TriggerEventType.SelfPlaced, location: location
|
|
212
|
+
triggerEffectsRule.triggerCardEffect(card, { type: Effect_1.TriggerEventType.SelfPlaced, location: location });
|
|
199
213
|
var invoke = this.isInvoke;
|
|
200
214
|
if (invoke) {
|
|
201
215
|
moves.push.apply(moves, __spreadArray([], __read(this.onInvoke(move)), false));
|
|
202
216
|
}
|
|
203
217
|
var triggerEvents = [];
|
|
204
218
|
if (invoke) {
|
|
205
|
-
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityInvoked,
|
|
219
|
+
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityInvoked, cardIndex: move.itemIndex, entity: entity, cardLocation: location });
|
|
206
220
|
}
|
|
207
221
|
if (crushed.length) {
|
|
208
222
|
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityCrushed, card: crushed.getItem(), cardIndex: crushed.getIndex() });
|
|
@@ -219,12 +233,14 @@ var Pantheon = (function (_super) {
|
|
|
219
233
|
enumerable: false,
|
|
220
234
|
configurable: true
|
|
221
235
|
});
|
|
222
|
-
Pantheon.prototype.updateGrid = function (
|
|
236
|
+
Pantheon.prototype.updateGrid = function (gridAfter) {
|
|
223
237
|
var _a;
|
|
224
|
-
if (
|
|
225
|
-
var gridBefore = (_a = this.remind(Memory_1.Memory.PlayerGrid, this.player)) !== null && _a !== void 0 ? _a : this.
|
|
226
|
-
var gridAfter = grid.map(function (line) { return line.map(function (item) { return item !== null && item !== void 0 ? item : null; }); });
|
|
238
|
+
if (gridAfter === void 0) { gridAfter = this.indexGrid; }
|
|
239
|
+
var gridBefore = (_a = this.remind(Memory_1.Memory.PlayerGrid, this.player)) !== null && _a !== void 0 ? _a : this.indexGrid;
|
|
227
240
|
this.memorize(Memory_1.Memory.PlayerGrid, gridAfter, this.player);
|
|
241
|
+
if (this.entityMoved(gridBefore, gridAfter)) {
|
|
242
|
+
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntityMoved, player: this.player });
|
|
243
|
+
}
|
|
228
244
|
for (var y = 0; y < 3; y++) {
|
|
229
245
|
if (gridBefore[y].some(function (item) { return item === null; }) && gridAfter[y].every(function (item) { return item !== null; })) {
|
|
230
246
|
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.LineEvent, eventType: Effect_1.LineEventType.Completed, player: this.player, y: y });
|
|
@@ -239,20 +255,32 @@ var Pantheon = (function (_super) {
|
|
|
239
255
|
for (var x = 0; x < 3; x++) {
|
|
240
256
|
_loop_1(x);
|
|
241
257
|
}
|
|
242
|
-
return this.gainBonus(
|
|
258
|
+
return this.gainBonus(gridAfter);
|
|
259
|
+
};
|
|
260
|
+
Pantheon.prototype.entityMoved = function (before, after) {
|
|
261
|
+
for (var y = 0; y < 3; y++) {
|
|
262
|
+
var _loop_2 = function (x) {
|
|
263
|
+
var cardIndex = before[y][x];
|
|
264
|
+
if (cardIndex !== null && cardIndex !== after[y][x] && after.some(function (line) { return line.includes(cardIndex); })) {
|
|
265
|
+
return { value: true };
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
for (var x = 0; x < 3; x++) {
|
|
269
|
+
var state_1 = _loop_2(x);
|
|
270
|
+
if (typeof state_1 === "object")
|
|
271
|
+
return state_1.value;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return false;
|
|
243
275
|
};
|
|
244
276
|
Pantheon.prototype.gainBonus = function (grid) {
|
|
245
277
|
var e_1, _a, e_2, _b;
|
|
246
|
-
if (grid === void 0) { grid = this.grid; }
|
|
247
278
|
var moves = [];
|
|
248
|
-
var fullLines = (0, lodash_1.range)(0, 3).filter(function (y) { return !grid[y].includes(
|
|
279
|
+
var fullLines = (0, lodash_1.range)(0, 3).filter(function (y) { return !grid[y].includes(null); });
|
|
249
280
|
try {
|
|
250
281
|
for (var fullLines_1 = __values(fullLines), fullLines_1_1 = fullLines_1.next(); !fullLines_1_1.done; fullLines_1_1 = fullLines_1.next()) {
|
|
251
282
|
var y = fullLines_1_1.value;
|
|
252
|
-
|
|
253
|
-
if (bonusGem.length) {
|
|
254
|
-
moves.push(bonusGem.moveItem({ type: LocationType_1.LocationType.PlayerGems, player: this.player }));
|
|
255
|
-
}
|
|
283
|
+
moves.push.apply(moves, __spreadArray([], __read(this.gainLineBonus(y)), false));
|
|
256
284
|
}
|
|
257
285
|
}
|
|
258
286
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -262,14 +290,11 @@ var Pantheon = (function (_super) {
|
|
|
262
290
|
}
|
|
263
291
|
finally { if (e_1) throw e_1.error; }
|
|
264
292
|
}
|
|
265
|
-
var fullColumns = (0, lodash_1.range)(0, 3).filter(function (x) { return grid.every(function (line) { return line[x] !==
|
|
293
|
+
var fullColumns = (0, lodash_1.range)(0, 3).filter(function (x) { return grid.every(function (line) { return line[x] !== null; }); });
|
|
266
294
|
try {
|
|
267
295
|
for (var fullColumns_1 = __values(fullColumns), fullColumns_1_1 = fullColumns_1.next(); !fullColumns_1_1.done; fullColumns_1_1 = fullColumns_1.next()) {
|
|
268
296
|
var x = fullColumns_1_1.value;
|
|
269
|
-
|
|
270
|
-
if (bonusFavor.length) {
|
|
271
|
-
moves.push(bonusFavor.moveItem({ type: LocationType_1.LocationType.PlayerFavor, player: this.player }));
|
|
272
|
-
}
|
|
297
|
+
moves.push.apply(moves, __spreadArray([], __read(this.gainColumnBonus(x)), false));
|
|
273
298
|
}
|
|
274
299
|
}
|
|
275
300
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
@@ -281,6 +306,14 @@ var Pantheon = (function (_super) {
|
|
|
281
306
|
}
|
|
282
307
|
return moves;
|
|
283
308
|
};
|
|
309
|
+
Pantheon.prototype.gainLineBonus = function (y) {
|
|
310
|
+
var bonusGem = this.getBonusGem(y);
|
|
311
|
+
return bonusGem.length ? [bonusGem.moveItem({ type: LocationType_1.LocationType.PlayerGems, player: this.player })] : [];
|
|
312
|
+
};
|
|
313
|
+
Pantheon.prototype.gainColumnBonus = function (x) {
|
|
314
|
+
var bonusFavor = this.getBonusFavor(x);
|
|
315
|
+
return bonusFavor.length ? [bonusFavor.moveItem({ type: LocationType_1.LocationType.PlayerFavor, player: this.player })] : [];
|
|
316
|
+
};
|
|
284
317
|
Pantheon.prototype.getBonusGem = function (y) {
|
|
285
318
|
return this.material(MaterialType_1.MaterialType.GemToken)
|
|
286
319
|
.location(LocationType_1.LocationType.PantheonLineBonus)
|
|
@@ -337,8 +370,8 @@ var Pantheon = (function (_super) {
|
|
|
337
370
|
var piles = [];
|
|
338
371
|
var myEntities = this.material(MaterialType_1.MaterialType.EntityCard).player(this.player);
|
|
339
372
|
var fullPantheon = myEntities.location(LocationType_1.LocationType.Pantheon);
|
|
340
|
-
var
|
|
341
|
-
var
|
|
373
|
+
var _loop_3 = function (x) {
|
|
374
|
+
var _loop_4 = function (y) {
|
|
342
375
|
if (predicate({ x: x, y: y })) {
|
|
343
376
|
var pile = fullPantheon.location(function (l) { return l.x === x && l.y === y; }).sort(function (item) { return item.location.z; });
|
|
344
377
|
if (pile.length > 0) {
|
|
@@ -347,11 +380,11 @@ var Pantheon = (function (_super) {
|
|
|
347
380
|
}
|
|
348
381
|
};
|
|
349
382
|
for (var y = 0; y < 3; y++) {
|
|
350
|
-
|
|
383
|
+
_loop_4(y);
|
|
351
384
|
}
|
|
352
385
|
};
|
|
353
386
|
for (var x = 0; x < 3; x++) {
|
|
354
|
-
|
|
387
|
+
_loop_3(x);
|
|
355
388
|
}
|
|
356
389
|
return piles;
|
|
357
390
|
};
|
|
@@ -379,6 +412,9 @@ var Pantheon = (function (_super) {
|
|
|
379
412
|
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntitySacrificed, card: card.getItem(), cardIndex: card.getIndex() });
|
|
380
413
|
return this.updateGrid();
|
|
381
414
|
};
|
|
415
|
+
Pantheon.prototype.hasCrushed = function (card) {
|
|
416
|
+
return this.allCards.location(function (l) { return l.x === card.location.x && l.y === card.location.y && l.z < card.location.z; }).length > 0;
|
|
417
|
+
};
|
|
382
418
|
return Pantheon;
|
|
383
419
|
}(rules_api_1.MaterialRulesPart));
|
|
384
420
|
exports.Pantheon = Pantheon;
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { Location, Material, MaterialGame, MaterialItem, MaterialMove, PlayerTurnRule, SimultaneousRule } from '@gamepark/rules-api';
|
|
1
|
+
import { Location, Material, MaterialGame, MaterialItem, MaterialMove, MaterialRulesPart, PlayerTurnRule, SimultaneousRule } from '@gamepark/rules-api';
|
|
2
2
|
import { PlayerColor } from '../../PlayerColor';
|
|
3
3
|
import { RuleId } from '../../rules/RuleId';
|
|
4
|
-
import { EntityId } from '../Entity';
|
|
4
|
+
import { Entity, EntityId } from '../Entity';
|
|
5
5
|
import { LocationType } from '../LocationType';
|
|
6
6
|
import { MaterialType } from '../MaterialType';
|
|
7
7
|
export type Effect = {
|
|
8
8
|
trigger: (event: TriggerEvent, card: Material, game: MaterialGame) => boolean;
|
|
9
9
|
rule: new (game: MaterialGame) => EffectRule;
|
|
10
|
+
auto?: boolean;
|
|
10
11
|
};
|
|
11
12
|
interface EffectRule {
|
|
12
13
|
canPlayEffect(cardIndex: number): boolean;
|
|
@@ -31,6 +32,13 @@ export declare abstract class SimultaneousEffectRule extends SimultaneousRule im
|
|
|
31
32
|
getEffect<Event extends TriggerEvent>(): PendingEffect<Event>;
|
|
32
33
|
getMovesAfterPlayersDone(): MaterialMove[];
|
|
33
34
|
}
|
|
35
|
+
export declare abstract class AutoEffectRule extends MaterialRulesPart implements EffectRule {
|
|
36
|
+
canPlayEffect: () => boolean;
|
|
37
|
+
abstract playEffect(): MaterialMove[];
|
|
38
|
+
getEffect<Event extends TriggerEvent>(): PendingEffect<Event>;
|
|
39
|
+
get card(): MaterialItem<number, number, EntityId>;
|
|
40
|
+
get player(): PlayerColor;
|
|
41
|
+
}
|
|
34
42
|
export declare enum TriggerEventType {
|
|
35
43
|
EndOfGame = 1,
|
|
36
44
|
SelfPlaced = 2,
|
|
@@ -39,12 +47,12 @@ export declare enum TriggerEventType {
|
|
|
39
47
|
ColumnEvent = 5,
|
|
40
48
|
Infinite = 6,
|
|
41
49
|
EntityCrushed = 7,
|
|
42
|
-
EntitySacrificed = 8
|
|
50
|
+
EntitySacrificed = 8,
|
|
51
|
+
EntityMoved = 9
|
|
43
52
|
}
|
|
44
53
|
export type SelfPlaced = {
|
|
45
54
|
type: TriggerEventType.SelfPlaced;
|
|
46
55
|
location: Location;
|
|
47
|
-
crush: boolean;
|
|
48
56
|
};
|
|
49
57
|
export declare const isPlaced: (event: TriggerEvent) => event is SelfPlaced;
|
|
50
58
|
export type EndOfGameEvent = {
|
|
@@ -53,8 +61,9 @@ export type EndOfGameEvent = {
|
|
|
53
61
|
export declare const isEndOfGame: (event: TriggerEvent) => event is EndOfGameEvent;
|
|
54
62
|
export type EntityInvoked = {
|
|
55
63
|
type: TriggerEventType.EntityInvoked;
|
|
56
|
-
card: MaterialItem<MaterialType, LocationType, EntityId>;
|
|
57
64
|
cardIndex: number;
|
|
65
|
+
entity: Entity;
|
|
66
|
+
cardLocation: Location;
|
|
58
67
|
};
|
|
59
68
|
export declare enum LineEventType {
|
|
60
69
|
BonusGain = 1,
|
|
@@ -76,7 +85,6 @@ export type Infinite = {
|
|
|
76
85
|
type: TriggerEventType.Infinite;
|
|
77
86
|
};
|
|
78
87
|
export declare const oncePerTurn: (event: TriggerEvent) => event is Infinite;
|
|
79
|
-
export declare const isPlacedCrush: (event: TriggerEvent) => event is SelfPlaced;
|
|
80
88
|
export type EntityCrushed = {
|
|
81
89
|
type: TriggerEventType.EntityCrushed;
|
|
82
90
|
card: MaterialItem<MaterialType, LocationType, EntityId>;
|
|
@@ -88,10 +96,15 @@ export type EntitySacrificed = {
|
|
|
88
96
|
card: MaterialItem<MaterialType, LocationType, EntityId>;
|
|
89
97
|
cardIndex: number;
|
|
90
98
|
};
|
|
91
|
-
export
|
|
99
|
+
export declare const isSacrificed: (event: TriggerEvent, card: Material) => event is EntityCrushed;
|
|
100
|
+
export type EntityMoved = {
|
|
101
|
+
type: TriggerEventType.EntityMoved;
|
|
102
|
+
player: PlayerColor;
|
|
103
|
+
};
|
|
104
|
+
export type TriggerEvent = EndOfGameEvent | SelfPlaced | EntityInvoked | LineEvent | ColumnEvent | Infinite | EntityCrushed | EntitySacrificed | EntityMoved;
|
|
92
105
|
export type PendingEffect<Event extends TriggerEvent = TriggerEvent> = {
|
|
93
106
|
cardIndex: number;
|
|
94
|
-
effectIndex: number;
|
|
95
107
|
triggerEvent: Event;
|
|
108
|
+
auto: boolean;
|
|
96
109
|
};
|
|
97
110
|
export {};
|
|
@@ -15,7 +15,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.
|
|
18
|
+
exports.isSacrificed = exports.isCrushed = exports.oncePerTurn = exports.LineEventType = exports.isEndOfGame = exports.isPlaced = exports.TriggerEventType = exports.AutoEffectRule = exports.SimultaneousEffectRule = exports.PlayerEffectRule = void 0;
|
|
19
19
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
20
|
var CustomMoveType_1 = require("../../CustomMoveType");
|
|
21
21
|
var Memory_1 = require("../../Memory");
|
|
@@ -90,6 +90,34 @@ var SimultaneousEffectRule = (function (_super) {
|
|
|
90
90
|
return SimultaneousEffectRule;
|
|
91
91
|
}(rules_api_1.SimultaneousRule));
|
|
92
92
|
exports.SimultaneousEffectRule = SimultaneousEffectRule;
|
|
93
|
+
var AutoEffectRule = (function (_super) {
|
|
94
|
+
__extends(AutoEffectRule, _super);
|
|
95
|
+
function AutoEffectRule() {
|
|
96
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
97
|
+
_this.canPlayEffect = function () { return true; };
|
|
98
|
+
return _this;
|
|
99
|
+
}
|
|
100
|
+
AutoEffectRule.prototype.getEffect = function () {
|
|
101
|
+
return this.remind(Memory_1.Memory.OngoingEffect);
|
|
102
|
+
};
|
|
103
|
+
Object.defineProperty(AutoEffectRule.prototype, "card", {
|
|
104
|
+
get: function () {
|
|
105
|
+
var index = this.getEffect().cardIndex;
|
|
106
|
+
return this.material(MaterialType_1.MaterialType.EntityCard).getItem(index);
|
|
107
|
+
},
|
|
108
|
+
enumerable: false,
|
|
109
|
+
configurable: true
|
|
110
|
+
});
|
|
111
|
+
Object.defineProperty(AutoEffectRule.prototype, "player", {
|
|
112
|
+
get: function () {
|
|
113
|
+
return this.card.location.player;
|
|
114
|
+
},
|
|
115
|
+
enumerable: false,
|
|
116
|
+
configurable: true
|
|
117
|
+
});
|
|
118
|
+
return AutoEffectRule;
|
|
119
|
+
}(rules_api_1.MaterialRulesPart));
|
|
120
|
+
exports.AutoEffectRule = AutoEffectRule;
|
|
93
121
|
var TriggerEventType;
|
|
94
122
|
(function (TriggerEventType) {
|
|
95
123
|
TriggerEventType[TriggerEventType["EndOfGame"] = 1] = "EndOfGame";
|
|
@@ -100,6 +128,7 @@ var TriggerEventType;
|
|
|
100
128
|
TriggerEventType[TriggerEventType["Infinite"] = 6] = "Infinite";
|
|
101
129
|
TriggerEventType[TriggerEventType["EntityCrushed"] = 7] = "EntityCrushed";
|
|
102
130
|
TriggerEventType[TriggerEventType["EntitySacrificed"] = 8] = "EntitySacrificed";
|
|
131
|
+
TriggerEventType[TriggerEventType["EntityMoved"] = 9] = "EntityMoved";
|
|
103
132
|
})(TriggerEventType = exports.TriggerEventType || (exports.TriggerEventType = {}));
|
|
104
133
|
var isPlaced = function (event) { return event.type === TriggerEventType.SelfPlaced; };
|
|
105
134
|
exports.isPlaced = isPlaced;
|
|
@@ -112,9 +141,11 @@ var LineEventType;
|
|
|
112
141
|
})(LineEventType = exports.LineEventType || (exports.LineEventType = {}));
|
|
113
142
|
var oncePerTurn = function (event) { return event.type === TriggerEventType.Infinite; };
|
|
114
143
|
exports.oncePerTurn = oncePerTurn;
|
|
115
|
-
var isPlacedCrush = function (event) { return (0, exports.isPlaced)(event) && event.crush; };
|
|
116
|
-
exports.isPlacedCrush = isPlacedCrush;
|
|
117
144
|
var isCrushed = function (event, card) {
|
|
118
145
|
return event.type === TriggerEventType.EntityCrushed && event.cardIndex === card.getIndex();
|
|
119
146
|
};
|
|
120
147
|
exports.isCrushed = isCrushed;
|
|
148
|
+
var isSacrificed = function (event, card) {
|
|
149
|
+
return event.type === TriggerEventType.EntitySacrificed && event.cardIndex === card.getIndex();
|
|
150
|
+
};
|
|
151
|
+
exports.isSacrificed = isSacrificed;
|
|
@@ -3,11 +3,9 @@ import { Effect } from './Effect';
|
|
|
3
3
|
export type EntityDescription = {
|
|
4
4
|
invoke: [InvokeGain, InvokeGain, InvokeGain];
|
|
5
5
|
effect?: Effect;
|
|
6
|
-
effects?: Effect[];
|
|
7
6
|
};
|
|
8
7
|
export type InvokeGain = {
|
|
9
8
|
gem?: number;
|
|
10
9
|
favor?: number;
|
|
11
10
|
};
|
|
12
|
-
export declare function getEffects(entity: Entity): Effect[];
|
|
13
11
|
export declare const entities: Record<Entity, EntityDescription>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.entities =
|
|
4
|
+
exports.entities = void 0;
|
|
5
5
|
var Entity_1 = require("../Entity");
|
|
6
6
|
var Banshee_1 = require("./celtic/Banshee");
|
|
7
7
|
var Brigid_1 = require("./celtic/Brigid");
|
|
@@ -83,12 +83,6 @@ var Umvelinqangi_1 = require("./zulu/Umvelinqangi");
|
|
|
83
83
|
var Unkulunkulu_1 = require("./zulu/Unkulunkulu");
|
|
84
84
|
var Unwabu_1 = require("./zulu/Unwabu");
|
|
85
85
|
var Werehyena_1 = require("./zulu/Werehyena");
|
|
86
|
-
function getEffects(entity) {
|
|
87
|
-
var _a;
|
|
88
|
-
var description = exports.entities[entity];
|
|
89
|
-
return (_a = description.effects) !== null && _a !== void 0 ? _a : (description.effect ? [description.effect] : []);
|
|
90
|
-
}
|
|
91
|
-
exports.getEffects = getEffects;
|
|
92
86
|
exports.entities = (_a = {},
|
|
93
87
|
_a[Entity_1.Entity.Zeus] = Zeus_1.Zeus,
|
|
94
88
|
_a[Entity_1.Entity.Poseidon] = Poseidon_1.Poseidon,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ItemMove, Location, Material, MaterialItem, MaterialMove, MoveItem, XYCoordinates } from '@gamepark/rules-api';
|
|
1
|
+
import { CustomMove, ItemMove, Location, Material, MaterialItem, MaterialMove, MoveItem, XYCoordinates } from '@gamepark/rules-api';
|
|
2
2
|
import { PlayerEffectRule } from './Effect';
|
|
3
3
|
export declare abstract class MoveEffectRule extends PlayerEffectRule {
|
|
4
4
|
canPlayEffect(cardIndex: number): boolean;
|
|
@@ -11,5 +11,5 @@ export declare abstract class MoveEffectRule extends PlayerEffectRule {
|
|
|
11
11
|
isLegalDestination(_space: XYCoordinates, _cardLocation: Location): boolean;
|
|
12
12
|
afterItemMove(move: ItemMove): MaterialMove<number, number, number, number>[];
|
|
13
13
|
onCardMoved(_move: MoveItem): MaterialMove[];
|
|
14
|
-
|
|
14
|
+
onCustomMove(move: CustomMove): MaterialMove<number, number, number, number>[];
|
|
15
15
|
}
|