@gamepark/mythologies 0.2.1 → 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 +3 -1
- package/dist/Memory.js +2 -0
- package/dist/MythologiesRules.d.ts +15 -5
- package/dist/MythologiesRules.js +34 -33
- package/dist/material/Mythology.js +1 -1
- package/dist/material/Pantheon.d.ts +6 -1
- package/dist/material/Pantheon.js +59 -24
- 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/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 +7 -1
- package/dist/rules/RuleId.js +6 -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/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/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/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
|
@@ -17,4 +17,6 @@ var Memory;
|
|
|
17
17
|
Memory[Memory["VetalaCount"] = 14] = "VetalaCount";
|
|
18
18
|
Memory[Memory["IllapaLine"] = 15] = "IllapaLine";
|
|
19
19
|
Memory[Memory["YanluoWangCount"] = 16] = "YanluoWangCount";
|
|
20
|
+
Memory[Memory["NuwaPlayerCreatures"] = 17] = "NuwaPlayerCreatures";
|
|
21
|
+
Memory[Memory["TianlongVector"] = 18] = "TianlongVector";
|
|
20
22
|
})(Memory = exports.Memory || (exports.Memory = {}));
|
|
@@ -16,21 +16,26 @@ 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';
|
|
@@ -38,7 +43,6 @@ import { YanluoWangEffectRule } from './rules/effects/YanluoWangEffectRule';
|
|
|
38
43
|
import { EndGameRule } from './rules/EndGameRule';
|
|
39
44
|
import { PlaceCardsRule } from './rules/PlaceCardsRule';
|
|
40
45
|
import { PlaceTokenRule } from './rules/PlaceTokenRule';
|
|
41
|
-
import { RuleId } from './rules/RuleId';
|
|
42
46
|
import { UpkeepRule } from './rules/UpkeepRule';
|
|
43
47
|
export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, MaterialType, LocationType> implements TimeLimit<MaterialGame<PlayerColor, MaterialType, LocationType>, MaterialMove<PlayerColor, MaterialType, LocationType>, PlayerColor>, CompetitiveScore {
|
|
44
48
|
rules: {
|
|
@@ -85,6 +89,12 @@ export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, M
|
|
|
85
89
|
44: typeof UkukuEffectRule;
|
|
86
90
|
45: typeof UkukuPlaceEffectRule;
|
|
87
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;
|
|
88
98
|
};
|
|
89
99
|
locationsStrategies: {
|
|
90
100
|
2: {
|
|
@@ -118,10 +128,10 @@ export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, M
|
|
|
118
128
|
};
|
|
119
129
|
};
|
|
120
130
|
keepMoveSecret(move: MaterialMove): boolean;
|
|
121
|
-
beforeItemMove(move: ItemMove):
|
|
122
|
-
protected onCustomMove(move: CustomMove):
|
|
123
|
-
getAutomaticMoves():
|
|
124
|
-
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>[];
|
|
125
135
|
giveTime(): number;
|
|
126
136
|
getScore(player: PlayerColor): number;
|
|
127
137
|
getTieBreaker(tieBreaker: number, player: PlayerColor): number | undefined;
|
package/dist/MythologiesRules.js
CHANGED
|
@@ -38,21 +38,26 @@ 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");
|
|
@@ -112,6 +117,12 @@ var MythologiesRules = (function (_super) {
|
|
|
112
117
|
_a[RuleId_1.RuleId.UkukuEffect] = UkukuEffectRule_1.UkukuEffectRule,
|
|
113
118
|
_a[RuleId_1.RuleId.UkukuPlaceEffect] = UkukuEffectRule_1.UkukuPlaceEffectRule,
|
|
114
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,
|
|
115
126
|
_a);
|
|
116
127
|
_this.locationsStrategies = (_b = {},
|
|
117
128
|
_b[MaterialType_1.MaterialType.EntityCard] = (_c = {},
|
|
@@ -148,34 +159,12 @@ var MythologiesRules = (function (_super) {
|
|
|
148
159
|
}
|
|
149
160
|
MythologiesRules.prototype.keepMoveSecret = function (move) {
|
|
150
161
|
return ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.DraftToken)(move) &&
|
|
162
|
+
move.location.type === LocationType_1.LocationType.OnEntityCard &&
|
|
151
163
|
this.remind(Memory_1.Memory.KeepTokenPlaceSecret, this.material(MaterialType_1.MaterialType.DraftToken).getItem(move.itemIndex).id.back) === true);
|
|
152
164
|
};
|
|
153
165
|
MythologiesRules.prototype.beforeItemMove = function (move) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
if (move.location.type === LocationType_1.LocationType.Pantheon) {
|
|
157
|
-
var location = this.material(MaterialType_1.MaterialType.EntityCard).getItem(move.itemIndex).location;
|
|
158
|
-
if (location.type !== LocationType_1.LocationType.Pantheon && location.type !== LocationType_1.LocationType.PlayerBufferArea) {
|
|
159
|
-
return new Pantheon_1.Pantheon(this.game, move.location.player).onCardPlaced(move);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
else if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
163
|
-
var card = this.material(MaterialType_1.MaterialType.EntityCard).index(move.itemIndex);
|
|
164
|
-
var location = card.getItem().location;
|
|
165
|
-
if (location.type === LocationType_1.LocationType.Pantheon) {
|
|
166
|
-
return new Pantheon_1.Pantheon(this.game, location.player).onEntitySacrificed(card);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if ((0, rules_api_1.isMoveItemTypeAtOnce)(MaterialType_1.MaterialType.EntityCard)(move)) {
|
|
171
|
-
if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
172
|
-
var pile = this.material(MaterialType_1.MaterialType.EntityCard).index(move.indexes);
|
|
173
|
-
if (((_a = pile.getItem()) === null || _a === void 0 ? void 0 : _a.location.type) === LocationType_1.LocationType.Pantheon) {
|
|
174
|
-
var topCard = pile.maxBy(function (item) { return item.location.z; });
|
|
175
|
-
return new Pantheon_1.Pantheon(this.game, topCard.getItem().location.player).onEntitySacrificed(topCard);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
166
|
+
if (!this.game.rule)
|
|
167
|
+
return [];
|
|
179
168
|
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.GemToken)(move) && move.location.type === LocationType_1.LocationType.PlayerGems) {
|
|
180
169
|
var gem = this.material(MaterialType_1.MaterialType.GemToken).getItem(move.itemIndex).location;
|
|
181
170
|
var player = gem.player;
|
|
@@ -200,13 +189,16 @@ var MythologiesRules = (function (_super) {
|
|
|
200
189
|
return this.startEffectsResolution();
|
|
201
190
|
}
|
|
202
191
|
else {
|
|
203
|
-
var
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
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
|
+
}
|
|
210
202
|
}
|
|
211
203
|
}
|
|
212
204
|
}
|
|
@@ -220,7 +212,16 @@ var MythologiesRules = (function (_super) {
|
|
|
220
212
|
return [];
|
|
221
213
|
};
|
|
222
214
|
MythologiesRules.prototype.startEffectsResolution = function () {
|
|
223
|
-
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;
|
|
224
225
|
var player = this.material(MaterialType_1.MaterialType.EntityCard).getItem(cardIndex).location.player;
|
|
225
226
|
return [this.startPlayerTurn(RuleId_1.RuleId.ResolveEffects, player)];
|
|
226
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;
|
|
@@ -191,19 +204,19 @@ var Pantheon = (function (_super) {
|
|
|
191
204
|
if ((0, Entity_1.isGod)(entity)) {
|
|
192
205
|
moves.push(this.spendGems(4));
|
|
193
206
|
}
|
|
194
|
-
var grid = this.
|
|
195
|
-
grid[move.location.y][move.location.x] =
|
|
207
|
+
var grid = this.indexGrid;
|
|
208
|
+
grid[move.location.y][move.location.x] = move.itemIndex;
|
|
196
209
|
moves.push.apply(moves, __spreadArray([], __read(this.updateGrid(grid)), false));
|
|
197
210
|
var triggerEffectsRule = new TriggerEffectsRule_1.TriggerEffectsRule(this.game);
|
|
198
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; });
|
|
199
|
-
triggerEffectsRule.triggerCardEffect(card, { type: Effect_1.TriggerEventType.SelfPlaced, location: location
|
|
212
|
+
triggerEffectsRule.triggerCardEffect(card, { type: Effect_1.TriggerEventType.SelfPlaced, location: location });
|
|
200
213
|
var invoke = this.isInvoke;
|
|
201
214
|
if (invoke) {
|
|
202
215
|
moves.push.apply(moves, __spreadArray([], __read(this.onInvoke(move)), false));
|
|
203
216
|
}
|
|
204
217
|
var triggerEvents = [];
|
|
205
218
|
if (invoke) {
|
|
206
|
-
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityInvoked,
|
|
219
|
+
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityInvoked, cardIndex: move.itemIndex, entity: entity, cardLocation: location });
|
|
207
220
|
}
|
|
208
221
|
if (crushed.length) {
|
|
209
222
|
triggerEvents.push({ type: Effect_1.TriggerEventType.EntityCrushed, card: crushed.getItem(), cardIndex: crushed.getIndex() });
|
|
@@ -220,12 +233,14 @@ var Pantheon = (function (_super) {
|
|
|
220
233
|
enumerable: false,
|
|
221
234
|
configurable: true
|
|
222
235
|
});
|
|
223
|
-
Pantheon.prototype.updateGrid = function (
|
|
236
|
+
Pantheon.prototype.updateGrid = function (gridAfter) {
|
|
224
237
|
var _a;
|
|
225
|
-
if (
|
|
226
|
-
var gridBefore = (_a = this.remind(Memory_1.Memory.PlayerGrid, this.player)) !== null && _a !== void 0 ? _a : this.
|
|
227
|
-
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;
|
|
228
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
|
+
}
|
|
229
244
|
for (var y = 0; y < 3; y++) {
|
|
230
245
|
if (gridBefore[y].some(function (item) { return item === null; }) && gridAfter[y].every(function (item) { return item !== null; })) {
|
|
231
246
|
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.LineEvent, eventType: Effect_1.LineEventType.Completed, player: this.player, y: y });
|
|
@@ -240,20 +255,32 @@ var Pantheon = (function (_super) {
|
|
|
240
255
|
for (var x = 0; x < 3; x++) {
|
|
241
256
|
_loop_1(x);
|
|
242
257
|
}
|
|
243
|
-
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;
|
|
244
275
|
};
|
|
245
276
|
Pantheon.prototype.gainBonus = function (grid) {
|
|
246
277
|
var e_1, _a, e_2, _b;
|
|
247
|
-
if (grid === void 0) { grid = this.grid; }
|
|
248
278
|
var moves = [];
|
|
249
|
-
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); });
|
|
250
280
|
try {
|
|
251
281
|
for (var fullLines_1 = __values(fullLines), fullLines_1_1 = fullLines_1.next(); !fullLines_1_1.done; fullLines_1_1 = fullLines_1.next()) {
|
|
252
282
|
var y = fullLines_1_1.value;
|
|
253
|
-
|
|
254
|
-
if (bonusGem.length) {
|
|
255
|
-
moves.push(bonusGem.moveItem({ type: LocationType_1.LocationType.PlayerGems, player: this.player }));
|
|
256
|
-
}
|
|
283
|
+
moves.push.apply(moves, __spreadArray([], __read(this.gainLineBonus(y)), false));
|
|
257
284
|
}
|
|
258
285
|
}
|
|
259
286
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -263,14 +290,11 @@ var Pantheon = (function (_super) {
|
|
|
263
290
|
}
|
|
264
291
|
finally { if (e_1) throw e_1.error; }
|
|
265
292
|
}
|
|
266
|
-
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; }); });
|
|
267
294
|
try {
|
|
268
295
|
for (var fullColumns_1 = __values(fullColumns), fullColumns_1_1 = fullColumns_1.next(); !fullColumns_1_1.done; fullColumns_1_1 = fullColumns_1.next()) {
|
|
269
296
|
var x = fullColumns_1_1.value;
|
|
270
|
-
|
|
271
|
-
if (bonusFavor.length) {
|
|
272
|
-
moves.push(bonusFavor.moveItem({ type: LocationType_1.LocationType.PlayerFavor, player: this.player }));
|
|
273
|
-
}
|
|
297
|
+
moves.push.apply(moves, __spreadArray([], __read(this.gainColumnBonus(x)), false));
|
|
274
298
|
}
|
|
275
299
|
}
|
|
276
300
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
@@ -282,6 +306,14 @@ var Pantheon = (function (_super) {
|
|
|
282
306
|
}
|
|
283
307
|
return moves;
|
|
284
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
|
+
};
|
|
285
317
|
Pantheon.prototype.getBonusGem = function (y) {
|
|
286
318
|
return this.material(MaterialType_1.MaterialType.GemToken)
|
|
287
319
|
.location(LocationType_1.LocationType.PantheonLineBonus)
|
|
@@ -338,8 +370,8 @@ var Pantheon = (function (_super) {
|
|
|
338
370
|
var piles = [];
|
|
339
371
|
var myEntities = this.material(MaterialType_1.MaterialType.EntityCard).player(this.player);
|
|
340
372
|
var fullPantheon = myEntities.location(LocationType_1.LocationType.Pantheon);
|
|
341
|
-
var
|
|
342
|
-
var
|
|
373
|
+
var _loop_3 = function (x) {
|
|
374
|
+
var _loop_4 = function (y) {
|
|
343
375
|
if (predicate({ x: x, y: y })) {
|
|
344
376
|
var pile = fullPantheon.location(function (l) { return l.x === x && l.y === y; }).sort(function (item) { return item.location.z; });
|
|
345
377
|
if (pile.length > 0) {
|
|
@@ -348,11 +380,11 @@ var Pantheon = (function (_super) {
|
|
|
348
380
|
}
|
|
349
381
|
};
|
|
350
382
|
for (var y = 0; y < 3; y++) {
|
|
351
|
-
|
|
383
|
+
_loop_4(y);
|
|
352
384
|
}
|
|
353
385
|
};
|
|
354
386
|
for (var x = 0; x < 3; x++) {
|
|
355
|
-
|
|
387
|
+
_loop_3(x);
|
|
356
388
|
}
|
|
357
389
|
return piles;
|
|
358
390
|
};
|
|
@@ -380,6 +412,9 @@ var Pantheon = (function (_super) {
|
|
|
380
412
|
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntitySacrificed, card: card.getItem(), cardIndex: card.getIndex() });
|
|
381
413
|
return this.updateGrid();
|
|
382
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
|
+
};
|
|
383
418
|
return Pantheon;
|
|
384
419
|
}(rules_api_1.MaterialRulesPart));
|
|
385
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
|
}
|
|
@@ -17,6 +17,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.MoveEffectRule = void 0;
|
|
19
19
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var CustomMoveType_1 = require("../../CustomMoveType");
|
|
20
21
|
var LocationType_1 = require("../LocationType");
|
|
21
22
|
var MaterialType_1 = require("../MaterialType");
|
|
22
23
|
var Pantheon_1 = require("../Pantheon");
|
|
@@ -73,9 +74,12 @@ var MoveEffectRule = (function (_super) {
|
|
|
73
74
|
MoveEffectRule.prototype.onCardMoved = function (_move) {
|
|
74
75
|
return this.endEffect();
|
|
75
76
|
};
|
|
76
|
-
MoveEffectRule.prototype.
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
MoveEffectRule.prototype.onCustomMove = function (move) {
|
|
78
|
+
if (move.type === CustomMoveType_1.CustomMoveType.EndEffect) {
|
|
79
|
+
var pantheon = new Pantheon_1.Pantheon(this.game, this.player);
|
|
80
|
+
return pantheon.updateGrid();
|
|
81
|
+
}
|
|
82
|
+
return [];
|
|
79
83
|
};
|
|
80
84
|
return MoveEffectRule;
|
|
81
85
|
}(Effect_1.PlayerEffectRule));
|