@gamepark/mythologies 0.4.1 → 0.5.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/Memory.d.ts +9 -7
- package/dist/Memory.js +9 -7
- package/dist/MythologiesRules.d.ts +41 -33
- package/dist/MythologiesRules.js +8 -0
- package/dist/MythologiesSetup.js +1 -1
- package/dist/material/Mythology.d.ts +0 -1
- package/dist/material/Mythology.js +1 -3
- package/dist/material/Pantheon.d.ts +1 -0
- package/dist/material/Pantheon.js +5 -0
- package/dist/material/entity/Effect.d.ts +2 -2
- package/dist/material/entity/Effect.js +1 -4
- package/dist/material/entity/MoveEffectRule.d.ts +4 -1
- package/dist/material/entity/MoveEffectRule.js +24 -5
- package/dist/material/entity/PlaceCardEffectRule.js +4 -27
- package/dist/material/entity/SacrificeEffectRule.d.ts +1 -1
- package/dist/material/entity/SacrificeEffectRule.js +2 -1
- package/dist/material/entity/SimultaneousMoveEffectRule.d.ts +8 -2
- package/dist/material/entity/SimultaneousMoveEffectRule.js +34 -6
- package/dist/material/entity/celtic/Dullahan.js +7 -1
- package/dist/material/entity/celtic/Leprechaun.js +7 -1
- package/dist/material/entity/celtic/Selkie.js +12 -1
- package/dist/rules/RuleId.d.ts +37 -33
- package/dist/rules/RuleId.js +37 -33
- package/dist/rules/effects/CentaurEffectRule.d.ts +5 -3
- package/dist/rules/effects/CentaurEffectRule.js +64 -16
- package/dist/rules/effects/CondorEffectRule.d.ts +1 -1
- package/dist/rules/effects/CondorEffectRule.js +5 -1
- package/dist/rules/effects/DullahanEffectRule.d.ts +11 -0
- package/dist/rules/effects/DullahanEffectRule.js +73 -0
- package/dist/rules/effects/FenrirEffectRule.js +2 -1
- package/dist/rules/effects/GarudaEffectRule.d.ts +1 -1
- package/dist/rules/effects/GarudaEffectRule.js +3 -2
- package/dist/rules/effects/GorgonEffectRule.d.ts +1 -1
- package/dist/rules/effects/GorgonEffectRule.js +2 -26
- package/dist/rules/effects/HadesEffectRule.d.ts +8 -4
- package/dist/rules/effects/HadesEffectRule.js +12 -50
- package/dist/rules/effects/IdloziEffectRule.d.ts +2 -2
- package/dist/rules/effects/IdloziEffectRule.js +4 -1
- package/dist/rules/effects/IllapaEffectRule.d.ts +1 -1
- package/dist/rules/effects/IllapaEffectRule.js +1 -1
- package/dist/rules/effects/JiangshiEffectRule.d.ts +1 -1
- package/dist/rules/effects/JiangshiEffectRule.js +2 -26
- package/dist/rules/effects/LeprechaunEffectRule.d.ts +9 -0
- package/dist/rules/effects/LeprechaunEffectRule.js +49 -0
- package/dist/rules/effects/MultipleSimultaneousMoveEffectRule.d.ts +13 -0
- package/dist/rules/effects/MultipleSimultaneousMoveEffectRule.js +160 -0
- package/dist/rules/effects/RaEffectRule.d.ts +8 -4
- package/dist/rules/effects/RaEffectRule.js +12 -50
- package/dist/rules/effects/SelkieEffectRule.d.ts +8 -0
- package/dist/rules/effects/SelkieEffectRule.js +44 -0
- package/dist/rules/effects/ShivaEffectRule.d.ts +2 -2
- package/dist/rules/effects/ShivaEffectRule.js +8 -32
- package/dist/rules/effects/SphinxEffectRule.d.ts +2 -2
- package/dist/rules/effects/SphinxEffectRule.js +4 -1
- package/dist/rules/effects/TianlongEffectRule.d.ts +2 -3
- package/dist/rules/effects/TianlongEffectRule.js +33 -39
- package/dist/rules/effects/VetalaEffectRule.d.ts +3 -2
- package/dist/rules/effects/VetalaEffectRule.js +10 -5
- package/dist/rules/effects/ViracochaEffectRule.d.ts +1 -1
- package/dist/rules/effects/ViracochaEffectRule.js +2 -26
- package/package.json +2 -2
package/dist/Memory.d.ts
CHANGED
|
@@ -5,15 +5,17 @@ export declare enum Memory {
|
|
|
5
5
|
OngoingEffect = 4,
|
|
6
6
|
OncePerTurn = 5,
|
|
7
7
|
PlayerGrid = 6,
|
|
8
|
+
TargetEntities = 7,
|
|
9
|
+
EffectCount = 8,
|
|
10
|
+
EntityMoved = 9,
|
|
8
11
|
OdinTargetMythology = 10,
|
|
9
12
|
FenrirPaid1 = 11,
|
|
10
13
|
AnubisInvoke1 = 12,
|
|
11
14
|
GarudaSacrificeCount = 13,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
FairyTargets = 20
|
|
15
|
+
IllapaLine = 14,
|
|
16
|
+
YanluoWangCount = 15,
|
|
17
|
+
NuwaPlayerCreatures = 16,
|
|
18
|
+
TianlongVector = 17,
|
|
19
|
+
InkosazanaInvoke1 = 18,
|
|
20
|
+
FairyTargets = 19
|
|
19
21
|
}
|
package/dist/Memory.js
CHANGED
|
@@ -9,15 +9,17 @@ var Memory;
|
|
|
9
9
|
Memory[Memory["OngoingEffect"] = 4] = "OngoingEffect";
|
|
10
10
|
Memory[Memory["OncePerTurn"] = 5] = "OncePerTurn";
|
|
11
11
|
Memory[Memory["PlayerGrid"] = 6] = "PlayerGrid";
|
|
12
|
+
Memory[Memory["TargetEntities"] = 7] = "TargetEntities";
|
|
13
|
+
Memory[Memory["EffectCount"] = 8] = "EffectCount";
|
|
14
|
+
Memory[Memory["EntityMoved"] = 9] = "EntityMoved";
|
|
12
15
|
Memory[Memory["OdinTargetMythology"] = 10] = "OdinTargetMythology";
|
|
13
16
|
Memory[Memory["FenrirPaid1"] = 11] = "FenrirPaid1";
|
|
14
17
|
Memory[Memory["AnubisInvoke1"] = 12] = "AnubisInvoke1";
|
|
15
18
|
Memory[Memory["GarudaSacrificeCount"] = 13] = "GarudaSacrificeCount";
|
|
16
|
-
Memory[Memory["
|
|
17
|
-
Memory[Memory["
|
|
18
|
-
Memory[Memory["
|
|
19
|
-
Memory[Memory["
|
|
20
|
-
Memory[Memory["
|
|
21
|
-
Memory[Memory["
|
|
22
|
-
Memory[Memory["FairyTargets"] = 20] = "FairyTargets";
|
|
19
|
+
Memory[Memory["IllapaLine"] = 14] = "IllapaLine";
|
|
20
|
+
Memory[Memory["YanluoWangCount"] = 15] = "YanluoWangCount";
|
|
21
|
+
Memory[Memory["NuwaPlayerCreatures"] = 16] = "NuwaPlayerCreatures";
|
|
22
|
+
Memory[Memory["TianlongVector"] = 17] = "TianlongVector";
|
|
23
|
+
Memory[Memory["InkosazanaInvoke1"] = 18] = "InkosazanaInvoke1";
|
|
24
|
+
Memory[Memory["FairyTargets"] = 19] = "FairyTargets";
|
|
23
25
|
})(Memory = exports.Memory || (exports.Memory = {}));
|
|
@@ -16,6 +16,7 @@ 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 { DullahanEffectRule } from './rules/effects/DullahanEffectRule';
|
|
19
20
|
import { FairyEffectRule } from './rules/effects/FairyEffectRule';
|
|
20
21
|
import { FenghuangEffectRule } from './rules/effects/FenghuangEffectRule';
|
|
21
22
|
import { FenrirChoiceRule, FenrirEffectRule } from './rules/effects/FenrirEffectRule';
|
|
@@ -29,12 +30,15 @@ import { ImpunduluEffectRule } from './rules/effects/ImpunduluEffectRule';
|
|
|
29
30
|
import { InkosazanaEffectRule } from './rules/effects/InkosazanaEffectRule';
|
|
30
31
|
import { JiangshiEffectRule } from './rules/effects/JiangshiEffectRule';
|
|
31
32
|
import { KinnaraEffectRule, KinnaraPlaceEffectRule } from './rules/effects/KinnaraEffectRule';
|
|
33
|
+
import { LeprechaunEffectRule } from './rules/effects/LeprechaunEffectRule';
|
|
32
34
|
import { MinotaurEffectRule } from './rules/effects/MinotaurEffectRule';
|
|
33
35
|
import { NuwaEffectRule } from './rules/effects/NuwaEffectRule';
|
|
34
36
|
import { OdinEffectRule } from './rules/effects/OdinEffectRule';
|
|
35
37
|
import { QilinEffectRule } from './rules/effects/QilinEffectRule';
|
|
38
|
+
import { RaEffectRule } from './rules/effects/RaEffectRule';
|
|
36
39
|
import { RakshasaEffectRule } from './rules/effects/RakshasaEffectRule';
|
|
37
40
|
import { ResolveEffectsRule } from './rules/effects/ResolveEffectsRule';
|
|
41
|
+
import { SelkieEffectRule } from './rules/effects/SelkieEffectRule';
|
|
38
42
|
import { ShivaEffectRule } from './rules/effects/ShivaEffectRule';
|
|
39
43
|
import { SphinxEffectRule } from './rules/effects/SphinxEffectRule';
|
|
40
44
|
import { SupayEffectRule } from './rules/effects/SupayEffectRule';
|
|
@@ -73,39 +77,43 @@ export declare class MythologiesRules extends SecretMaterialRules<PlayerColor, M
|
|
|
73
77
|
23: typeof FenrirChoiceRule;
|
|
74
78
|
24: typeof FenrirEffectRule;
|
|
75
79
|
25: typeof AlfEffectRule;
|
|
76
|
-
26: typeof
|
|
77
|
-
27: typeof
|
|
78
|
-
28: typeof
|
|
79
|
-
29: typeof
|
|
80
|
-
30: typeof
|
|
81
|
-
31: typeof
|
|
82
|
-
32: typeof
|
|
83
|
-
33: typeof
|
|
84
|
-
34: typeof
|
|
85
|
-
35: typeof
|
|
86
|
-
36: typeof
|
|
87
|
-
37: typeof
|
|
88
|
-
38: typeof
|
|
89
|
-
39: typeof
|
|
90
|
-
40: typeof
|
|
91
|
-
41: typeof
|
|
92
|
-
42: typeof
|
|
93
|
-
43: typeof
|
|
94
|
-
44: typeof
|
|
95
|
-
45: typeof
|
|
96
|
-
46: typeof
|
|
97
|
-
47: typeof
|
|
98
|
-
48: typeof
|
|
99
|
-
49: typeof
|
|
100
|
-
50: typeof
|
|
101
|
-
51: typeof
|
|
102
|
-
52: typeof
|
|
103
|
-
53: typeof
|
|
104
|
-
54: typeof
|
|
105
|
-
55: typeof
|
|
106
|
-
56: typeof
|
|
107
|
-
57: typeof
|
|
108
|
-
58: typeof
|
|
80
|
+
26: typeof RaEffectRule;
|
|
81
|
+
27: typeof AnubisEffectRule;
|
|
82
|
+
28: typeof SphinxEffectRule;
|
|
83
|
+
29: typeof CobraEffectRule;
|
|
84
|
+
30: typeof CobraInvokeEffect;
|
|
85
|
+
31: typeof BabaiEffectRule;
|
|
86
|
+
32: typeof BennuEffectRule;
|
|
87
|
+
33: typeof ShivaEffectRule;
|
|
88
|
+
34: typeof RakshasaEffectRule;
|
|
89
|
+
35: typeof GarudaEffectRule;
|
|
90
|
+
36: typeof VetalaEffectRule;
|
|
91
|
+
37: typeof KinnaraEffectRule;
|
|
92
|
+
38: typeof KinnaraPlaceEffectRule;
|
|
93
|
+
39: typeof ViracochaEffectRule;
|
|
94
|
+
40: typeof IllapaEffectRule;
|
|
95
|
+
41: typeof IllapaSacrificeRule;
|
|
96
|
+
42: typeof CaimanEffectRule;
|
|
97
|
+
43: typeof CondorEffectRule;
|
|
98
|
+
44: typeof SupayEffectRule;
|
|
99
|
+
45: typeof UkukuEffectRule;
|
|
100
|
+
46: typeof UkukuPlaceEffectRule;
|
|
101
|
+
47: typeof YanluoWangEffectRule;
|
|
102
|
+
48: typeof NuwaEffectRule;
|
|
103
|
+
49: typeof TianlongEffectRule;
|
|
104
|
+
50: typeof TianlongOpponentsEffectRule;
|
|
105
|
+
51: typeof QilinEffectRule;
|
|
106
|
+
52: typeof FenghuangEffectRule;
|
|
107
|
+
53: typeof JiangshiEffectRule;
|
|
108
|
+
54: typeof InkosazanaEffectRule;
|
|
109
|
+
55: typeof ImpunduluEffectRule;
|
|
110
|
+
56: typeof WerehyenaEffectRule;
|
|
111
|
+
57: typeof WerehyenaCallEffectRule;
|
|
112
|
+
58: typeof IdloziEffectRule;
|
|
113
|
+
59: typeof FairyEffectRule;
|
|
114
|
+
60: typeof LeprechaunEffectRule;
|
|
115
|
+
61: typeof SelkieEffectRule;
|
|
116
|
+
62: typeof DullahanEffectRule;
|
|
109
117
|
};
|
|
110
118
|
locationsStrategies: {
|
|
111
119
|
2: {
|
package/dist/MythologiesRules.js
CHANGED
|
@@ -39,6 +39,7 @@ var CobraEffectRule_1 = require("./rules/effects/CobraEffectRule");
|
|
|
39
39
|
var CondorEffectRule_1 = require("./rules/effects/CondorEffectRule");
|
|
40
40
|
var CyclopsEffectRule_1 = require("./rules/effects/CyclopsEffectRule");
|
|
41
41
|
var DraugrEffectRule_1 = require("./rules/effects/DraugrEffectRule");
|
|
42
|
+
var DullahanEffectRule_1 = require("./rules/effects/DullahanEffectRule");
|
|
42
43
|
var FairyEffectRule_1 = require("./rules/effects/FairyEffectRule");
|
|
43
44
|
var FenghuangEffectRule_1 = require("./rules/effects/FenghuangEffectRule");
|
|
44
45
|
var FenrirEffectRule_1 = require("./rules/effects/FenrirEffectRule");
|
|
@@ -52,12 +53,15 @@ var ImpunduluEffectRule_1 = require("./rules/effects/ImpunduluEffectRule");
|
|
|
52
53
|
var InkosazanaEffectRule_1 = require("./rules/effects/InkosazanaEffectRule");
|
|
53
54
|
var JiangshiEffectRule_1 = require("./rules/effects/JiangshiEffectRule");
|
|
54
55
|
var KinnaraEffectRule_1 = require("./rules/effects/KinnaraEffectRule");
|
|
56
|
+
var LeprechaunEffectRule_1 = require("./rules/effects/LeprechaunEffectRule");
|
|
55
57
|
var MinotaurEffectRule_1 = require("./rules/effects/MinotaurEffectRule");
|
|
56
58
|
var NuwaEffectRule_1 = require("./rules/effects/NuwaEffectRule");
|
|
57
59
|
var OdinEffectRule_1 = require("./rules/effects/OdinEffectRule");
|
|
58
60
|
var QilinEffectRule_1 = require("./rules/effects/QilinEffectRule");
|
|
61
|
+
var RaEffectRule_1 = require("./rules/effects/RaEffectRule");
|
|
59
62
|
var RakshasaEffectRule_1 = require("./rules/effects/RakshasaEffectRule");
|
|
60
63
|
var ResolveEffectsRule_1 = require("./rules/effects/ResolveEffectsRule");
|
|
64
|
+
var SelkieEffectRule_1 = require("./rules/effects/SelkieEffectRule");
|
|
61
65
|
var ShivaEffectRule_1 = require("./rules/effects/ShivaEffectRule");
|
|
62
66
|
var SphinxEffectRule_1 = require("./rules/effects/SphinxEffectRule");
|
|
63
67
|
var SupayEffectRule_1 = require("./rules/effects/SupayEffectRule");
|
|
@@ -102,6 +106,7 @@ var MythologiesRules = (function (_super) {
|
|
|
102
106
|
_a[RuleId_1.RuleId.FenrirChoice] = FenrirEffectRule_1.FenrirChoiceRule,
|
|
103
107
|
_a[RuleId_1.RuleId.FenrirEffect] = FenrirEffectRule_1.FenrirEffectRule,
|
|
104
108
|
_a[RuleId_1.RuleId.AlfEffect] = AlfEffectRule_1.AlfEffectRule,
|
|
109
|
+
_a[RuleId_1.RuleId.RaEffect] = RaEffectRule_1.RaEffectRule,
|
|
105
110
|
_a[RuleId_1.RuleId.AnubisEffect] = AnubisEffectRule_1.AnubisEffectRule,
|
|
106
111
|
_a[RuleId_1.RuleId.SphinxEffect] = SphinxEffectRule_1.SphinxEffectRule,
|
|
107
112
|
_a[RuleId_1.RuleId.CobraEffect] = CobraEffectRule_1.CobraEffectRule,
|
|
@@ -135,6 +140,9 @@ var MythologiesRules = (function (_super) {
|
|
|
135
140
|
_a[RuleId_1.RuleId.WerehyenaCallEffect] = WerehyenaEffectRule_1.WerehyenaCallEffectRule,
|
|
136
141
|
_a[RuleId_1.RuleId.IdloziEffect] = IdloziEffectRule_1.IdloziEffectRule,
|
|
137
142
|
_a[RuleId_1.RuleId.FairyEffect] = FairyEffectRule_1.FairyEffectRule,
|
|
143
|
+
_a[RuleId_1.RuleId.LeprechaunEffect] = LeprechaunEffectRule_1.LeprechaunEffectRule,
|
|
144
|
+
_a[RuleId_1.RuleId.SelkieEffect] = SelkieEffectRule_1.SelkieEffectRule,
|
|
145
|
+
_a[RuleId_1.RuleId.DullahanEffect] = DullahanEffectRule_1.DullahanEffectRule,
|
|
138
146
|
_a);
|
|
139
147
|
_this.locationsStrategies = (_b = {},
|
|
140
148
|
_b[MaterialType_1.MaterialType.EntityCard] = (_c = {},
|
package/dist/MythologiesSetup.js
CHANGED
|
@@ -58,7 +58,7 @@ var MythologiesSetup = (function (_super) {
|
|
|
58
58
|
return mythologies;
|
|
59
59
|
}
|
|
60
60
|
else if (mythologies.length < 4) {
|
|
61
|
-
return mythologies.concat((0, lodash_1.sampleSize)((0, lodash_1.difference)(Mythology_1.
|
|
61
|
+
return mythologies.concat((0, lodash_1.sampleSize)((0, lodash_1.difference)((0, rules_api_1.getEnumValues)(Mythology_1.Mythology), mythologies), 4 - mythologies.length));
|
|
62
62
|
}
|
|
63
63
|
else {
|
|
64
64
|
return (0, lodash_1.sampleSize)(mythologies, 4);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SanctuarySide = exports.
|
|
4
|
-
var rules_api_1 = require("@gamepark/rules-api");
|
|
3
|
+
exports.SanctuarySide = exports.Mythology = void 0;
|
|
5
4
|
var Mythology;
|
|
6
5
|
(function (Mythology) {
|
|
7
6
|
Mythology[Mythology["Greek"] = 0] = "Greek";
|
|
@@ -13,7 +12,6 @@ var Mythology;
|
|
|
13
12
|
Mythology[Mythology["Zulu"] = 6] = "Zulu";
|
|
14
13
|
Mythology[Mythology["Celtic"] = 7] = "Celtic";
|
|
15
14
|
})(Mythology = exports.Mythology || (exports.Mythology = {}));
|
|
16
|
-
exports.availableMythologies = (0, rules_api_1.getEnumValues)(Mythology).filter(function (mythology) { return mythology < 7; });
|
|
17
15
|
var SanctuarySide;
|
|
18
16
|
(function (SanctuarySide) {
|
|
19
17
|
SanctuarySide[SanctuarySide["Left"] = 0] = "Left";
|
|
@@ -44,4 +44,5 @@ export declare class Pantheon extends MaterialRulesPart {
|
|
|
44
44
|
hasCrushed(card: MaterialItem): boolean;
|
|
45
45
|
isOpponentOngoingEffect(): boolean;
|
|
46
46
|
replaceSacrifice(cards: EntityItem[]): Material<number, number, number>;
|
|
47
|
+
sacrificeToPreventMove(): MoveItem<number, number, number>[];
|
|
47
48
|
}
|
|
@@ -459,6 +459,11 @@ var Pantheon = (function (_super) {
|
|
|
459
459
|
return (0, EntityDescription_1.getEffects)(item.id.front).some(function (effect) { return !(0, Effect_1.isTriggeredEffect)(effect) && cards.some(function (card) { var _a; return (_a = effect.replaceSacrifice) === null || _a === void 0 ? void 0 : _a.call(effect, card, item); }); });
|
|
460
460
|
});
|
|
461
461
|
};
|
|
462
|
+
Pantheon.prototype.sacrificeToPreventMove = function () {
|
|
463
|
+
return this.visibleEntities
|
|
464
|
+
.filter(function (item) { return (0, EntityDescription_1.getEffects)(item.id.front).some(function (effect) { return !(0, Effect_1.isTriggeredEffect)(effect) && effect.sacrificeInsteadOfMove; }); })
|
|
465
|
+
.moveItems({ type: LocationType_1.LocationType.PlayerDiscard, player: this.player });
|
|
466
|
+
};
|
|
462
467
|
return Pantheon;
|
|
463
468
|
}(rules_api_1.MaterialRulesPart));
|
|
464
469
|
exports.Pantheon = Pantheon;
|
|
@@ -14,6 +14,7 @@ export type PermanentEffect = {
|
|
|
14
14
|
preventCrush?: (card: EntityItem, effectCard: EntityItem) => boolean;
|
|
15
15
|
replaceSacrifice?: (card: EntityItem, effectCard: EntityItem) => boolean;
|
|
16
16
|
favorTax?: (space: XYCoordinates, card: EntityItem) => number;
|
|
17
|
+
sacrificeInsteadOfMove?: boolean;
|
|
17
18
|
};
|
|
18
19
|
export type Effect = TriggeredEffect | PermanentEffect;
|
|
19
20
|
interface EffectRule {
|
|
@@ -24,10 +25,9 @@ export declare abstract class PlayerEffectRule extends PlayerTurnRule implements
|
|
|
24
25
|
canPlayEffect(_cardIndex: number): boolean;
|
|
25
26
|
ruleId?: RuleId;
|
|
26
27
|
playEffect(): MaterialMove[];
|
|
27
|
-
onRuleStart(): MaterialMove
|
|
28
|
+
onRuleStart(): MaterialMove[];
|
|
28
29
|
get card(): import("@gamepark/rules-api").MaterialItem<number, number, EntityId>;
|
|
29
30
|
getEffect<Event extends TriggerEvent>(): PendingEffect<Event>;
|
|
30
|
-
endEffect(): MaterialMove[];
|
|
31
31
|
}
|
|
32
32
|
export declare abstract class SimultaneousEffectRule extends SimultaneousRule implements EffectRule {
|
|
33
33
|
canPlayEffect(_cardIndex: number): boolean;
|
|
@@ -35,7 +35,7 @@ var PlayerEffectRule = (function (_super) {
|
|
|
35
35
|
};
|
|
36
36
|
PlayerEffectRule.prototype.onRuleStart = function () {
|
|
37
37
|
if (!this.getPlayerMoves().length) {
|
|
38
|
-
return this.
|
|
38
|
+
return [this.customMove(CustomMoveType_1.CustomMoveType.EndEffect)];
|
|
39
39
|
}
|
|
40
40
|
return [];
|
|
41
41
|
};
|
|
@@ -50,9 +50,6 @@ var PlayerEffectRule = (function (_super) {
|
|
|
50
50
|
PlayerEffectRule.prototype.getEffect = function () {
|
|
51
51
|
return this.remind(Memory_1.Memory.OngoingEffect);
|
|
52
52
|
};
|
|
53
|
-
PlayerEffectRule.prototype.endEffect = function () {
|
|
54
|
-
return [this.customMove(CustomMoveType_1.CustomMoveType.EndEffect)];
|
|
55
|
-
};
|
|
56
53
|
return PlayerEffectRule;
|
|
57
54
|
}(rules_api_1.PlayerTurnRule));
|
|
58
55
|
exports.PlayerEffectRule = PlayerEffectRule;
|
|
@@ -4,12 +4,15 @@ export declare abstract class MoveEffectRule extends PlayerEffectRule {
|
|
|
4
4
|
canPlayEffect(cardIndex: number): boolean;
|
|
5
5
|
playEffect(): MaterialMove[];
|
|
6
6
|
getPlayerMoves(): MaterialMove[];
|
|
7
|
+
getSacrificeToPreventMove(): MoveItem<number, number, number>[];
|
|
7
8
|
getMoveCardsMoves(effectCardIndex?: number): MoveItem<number, number, number>[];
|
|
8
9
|
getCardsAbleToMove(effectCardIndex: number): Material<number, number, number>;
|
|
9
10
|
getMovingCards(effectCardIndex: number): Material;
|
|
10
11
|
getAvailableDestinations(card: MaterialItem, _cardIndex: number): XYCoordinates[];
|
|
11
12
|
isLegalDestination(_space: XYCoordinates, _cardLocation: Location): boolean;
|
|
12
|
-
|
|
13
|
+
beforeItemMove(move: ItemMove): MaterialMove<number, number, number, number>[];
|
|
13
14
|
onCardMoved(_move: MoveItem): MaterialMove[];
|
|
15
|
+
onCardSacrificed(move: MoveItem): MaterialMove[];
|
|
14
16
|
onCustomMove(move: CustomMove): MaterialMove<number, number, number, number>[];
|
|
17
|
+
onRuleEnd(): never[];
|
|
15
18
|
}
|
|
@@ -43,6 +43,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
43
43
|
exports.MoveEffectRule = void 0;
|
|
44
44
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
45
45
|
var CustomMoveType_1 = require("../../CustomMoveType");
|
|
46
|
+
var Memory_1 = require("../../Memory");
|
|
46
47
|
var TriggerEffectsRule_1 = require("../../rules/effects/TriggerEffectsRule");
|
|
47
48
|
var LocationType_1 = require("../LocationType");
|
|
48
49
|
var MaterialType_1 = require("../MaterialType");
|
|
@@ -62,7 +63,10 @@ var MoveEffectRule = (function (_super) {
|
|
|
62
63
|
return _super.prototype.playEffect.call(this);
|
|
63
64
|
};
|
|
64
65
|
MoveEffectRule.prototype.getPlayerMoves = function () {
|
|
65
|
-
return this.getMoveCardsMoves();
|
|
66
|
+
return this.getMoveCardsMoves().concat(this.getSacrificeToPreventMove());
|
|
67
|
+
};
|
|
68
|
+
MoveEffectRule.prototype.getSacrificeToPreventMove = function () {
|
|
69
|
+
return this.remind(Memory_1.Memory.EntityMoved, this.player) ? [] : new Pantheon_1.Pantheon(this.game, this.player).sacrificeToPreventMove();
|
|
66
70
|
};
|
|
67
71
|
MoveEffectRule.prototype.getMoveCardsMoves = function (effectCardIndex) {
|
|
68
72
|
var _this = this;
|
|
@@ -91,14 +95,25 @@ var MoveEffectRule = (function (_super) {
|
|
|
91
95
|
MoveEffectRule.prototype.isLegalDestination = function (_space, _cardLocation) {
|
|
92
96
|
return true;
|
|
93
97
|
};
|
|
94
|
-
MoveEffectRule.prototype.
|
|
95
|
-
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.EntityCard)(move)
|
|
96
|
-
|
|
98
|
+
MoveEffectRule.prototype.beforeItemMove = function (move) {
|
|
99
|
+
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.EntityCard)(move)) {
|
|
100
|
+
if (move.location.type === LocationType_1.LocationType.Pantheon) {
|
|
101
|
+
this.memorize(Memory_1.Memory.EntityMoved, true, this.player);
|
|
102
|
+
return this.onCardMoved(move);
|
|
103
|
+
}
|
|
104
|
+
else if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
105
|
+
return this.onCardSacrificed(move);
|
|
106
|
+
}
|
|
97
107
|
}
|
|
98
108
|
return [];
|
|
99
109
|
};
|
|
100
110
|
MoveEffectRule.prototype.onCardMoved = function (_move) {
|
|
101
|
-
return this.
|
|
111
|
+
return [this.customMove(CustomMoveType_1.CustomMoveType.EndEffect)];
|
|
112
|
+
};
|
|
113
|
+
MoveEffectRule.prototype.onCardSacrificed = function (move) {
|
|
114
|
+
var card = this.material(MaterialType_1.MaterialType.EntityCard).index(move.itemIndex);
|
|
115
|
+
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntitySacrificed, card: card.getItem(), cardIndex: card.getIndex() });
|
|
116
|
+
return [this.customMove(CustomMoveType_1.CustomMoveType.EndEffect)];
|
|
102
117
|
};
|
|
103
118
|
MoveEffectRule.prototype.onCustomMove = function (move) {
|
|
104
119
|
var _a;
|
|
@@ -109,6 +124,10 @@ var MoveEffectRule = (function (_super) {
|
|
|
109
124
|
}
|
|
110
125
|
return [];
|
|
111
126
|
};
|
|
127
|
+
MoveEffectRule.prototype.onRuleEnd = function () {
|
|
128
|
+
this.forget(Memory_1.Memory.EntityMoved);
|
|
129
|
+
return [];
|
|
130
|
+
};
|
|
112
131
|
return MoveEffectRule;
|
|
113
132
|
}(Effect_1.PlayerEffectRule));
|
|
114
133
|
exports.MoveEffectRule = MoveEffectRule;
|
|
@@ -14,34 +14,10 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
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
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
18
|
exports.InvokeEffectRule = exports.PlaceCardEffectRule = void 0;
|
|
44
19
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var CustomMoveType_1 = require("../../CustomMoveType");
|
|
45
21
|
var Entity_1 = require("../Entity");
|
|
46
22
|
var LocationType_1 = require("../LocationType");
|
|
47
23
|
var MaterialType_1 = require("../MaterialType");
|
|
@@ -80,8 +56,9 @@ var PlaceCardEffectRule = (function (_super) {
|
|
|
80
56
|
return [];
|
|
81
57
|
};
|
|
82
58
|
PlaceCardEffectRule.prototype.onCardPlaced = function (move) {
|
|
83
|
-
var
|
|
84
|
-
|
|
59
|
+
var moves = new Pantheon_1.Pantheon(this.game, this.player).onCardPlaced(move);
|
|
60
|
+
moves.push(this.customMove(CustomMoveType_1.CustomMoveType.EndEffect));
|
|
61
|
+
return moves;
|
|
85
62
|
};
|
|
86
63
|
return PlaceCardEffectRule;
|
|
87
64
|
}(Effect_1.PlayerEffectRule));
|
|
@@ -7,5 +7,5 @@ export declare abstract class SacrificeEffectRule extends PlayerEffectRule {
|
|
|
7
7
|
private getCardsAbleToSacrifice;
|
|
8
8
|
getCardsToSacrifice(): Material;
|
|
9
9
|
beforeItemMove(move: ItemMove): MaterialMove[];
|
|
10
|
-
onSacrifice(_move: MoveItem): MaterialMove
|
|
10
|
+
onSacrifice(_move: MoveItem): MaterialMove[];
|
|
11
11
|
}
|
|
@@ -17,6 +17,7 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.SacrificeEffectRule = void 0;
|
|
19
19
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
|
+
var CustomMoveType_1 = require("../../CustomMoveType");
|
|
20
21
|
var PermanentEffectsRule_1 = require("../../rules/effects/PermanentEffectsRule");
|
|
21
22
|
var LocationType_1 = require("../LocationType");
|
|
22
23
|
var MaterialType_1 = require("../MaterialType");
|
|
@@ -58,7 +59,7 @@ var SacrificeEffectRule = (function (_super) {
|
|
|
58
59
|
return [];
|
|
59
60
|
};
|
|
60
61
|
SacrificeEffectRule.prototype.onSacrifice = function (_move) {
|
|
61
|
-
return this.
|
|
62
|
+
return [this.customMove(CustomMoveType_1.CustomMoveType.EndEffect)];
|
|
62
63
|
};
|
|
63
64
|
return SacrificeEffectRule;
|
|
64
65
|
}(Effect_1.PlayerEffectRule));
|
|
@@ -2,12 +2,18 @@ import { ItemMove, Location, Material, MaterialItem, MaterialMove, MoveItem, XYC
|
|
|
2
2
|
import { PlayerColor } from '../../PlayerColor';
|
|
3
3
|
import { SimultaneousEffectRule } from './Effect';
|
|
4
4
|
export declare abstract class SimultaneousMoveEffectRule extends SimultaneousEffectRule {
|
|
5
|
+
getAffectedPlayers(): PlayerColor[];
|
|
5
6
|
getActivePlayerLegalMoves(player: PlayerColor): MoveItem<number, number, number>[];
|
|
7
|
+
getSacrificeToPreventMove(player: PlayerColor): MoveItem<number, number, number>[];
|
|
8
|
+
getMovementMoves(player: PlayerColor): MoveItem<number, number, number>[];
|
|
6
9
|
private getCardsAbleToMove;
|
|
7
10
|
getMovingCards(player: PlayerColor): Material;
|
|
8
|
-
getAvailableDestinations(player: PlayerColor, card: MaterialItem
|
|
11
|
+
getAvailableDestinations(player: PlayerColor, card: MaterialItem): XYCoordinates[];
|
|
9
12
|
isLegalDestination(_space: XYCoordinates, _cardLocation: Location): boolean;
|
|
10
|
-
|
|
13
|
+
beforeItemMove(move: ItemMove): MaterialMove<number, number, number, number>[];
|
|
11
14
|
onCardMoved(move: MoveItem): MaterialMove[];
|
|
15
|
+
onCardSacrificed(move: MoveItem): MaterialMove[];
|
|
12
16
|
getMovesAfterPlayersDone(): MaterialMove[];
|
|
17
|
+
updatePlayersGrids(): MaterialMove[];
|
|
18
|
+
onRuleEnd(): never[];
|
|
13
19
|
}
|
|
@@ -53,6 +53,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
53
53
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
54
54
|
exports.SimultaneousMoveEffectRule = void 0;
|
|
55
55
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
56
|
+
var Memory_1 = require("../../Memory");
|
|
56
57
|
var TriggerEffectsRule_1 = require("../../rules/effects/TriggerEffectsRule");
|
|
57
58
|
var LocationType_1 = require("../LocationType");
|
|
58
59
|
var MaterialType_1 = require("../MaterialType");
|
|
@@ -63,12 +64,22 @@ var SimultaneousMoveEffectRule = (function (_super) {
|
|
|
63
64
|
function SimultaneousMoveEffectRule() {
|
|
64
65
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
65
66
|
}
|
|
67
|
+
SimultaneousMoveEffectRule.prototype.getAffectedPlayers = function () {
|
|
68
|
+
var _this = this;
|
|
69
|
+
return this.game.players.filter(function (player) { return _this.getMovementMoves(player).length > 0; });
|
|
70
|
+
};
|
|
66
71
|
SimultaneousMoveEffectRule.prototype.getActivePlayerLegalMoves = function (player) {
|
|
72
|
+
return this.getMovementMoves(player).concat(this.getSacrificeToPreventMove(player));
|
|
73
|
+
};
|
|
74
|
+
SimultaneousMoveEffectRule.prototype.getSacrificeToPreventMove = function (player) {
|
|
75
|
+
return this.remind(Memory_1.Memory.EntityMoved, player) ? [] : new Pantheon_1.Pantheon(this.game, player).sacrificeToPreventMove();
|
|
76
|
+
};
|
|
77
|
+
SimultaneousMoveEffectRule.prototype.getMovementMoves = function (player) {
|
|
67
78
|
var _this = this;
|
|
68
79
|
var cards = this.getCardsAbleToMove(player);
|
|
69
80
|
return cards.getIndexes().flatMap(function (cardIndex) {
|
|
70
81
|
var card = cards.index(cardIndex);
|
|
71
|
-
return _this.getAvailableDestinations(player, card.getItem()
|
|
82
|
+
return _this.getAvailableDestinations(player, card.getItem()).map(function (_a) {
|
|
72
83
|
var x = _a.x, y = _a.y;
|
|
73
84
|
return card.moveItem({ type: LocationType_1.LocationType.Pantheon, player: player, x: x, y: y });
|
|
74
85
|
});
|
|
@@ -81,23 +92,37 @@ var SimultaneousMoveEffectRule = (function (_super) {
|
|
|
81
92
|
SimultaneousMoveEffectRule.prototype.getMovingCards = function (player) {
|
|
82
93
|
return new Pantheon_1.Pantheon(this.game, player).visibleEntities;
|
|
83
94
|
};
|
|
84
|
-
SimultaneousMoveEffectRule.prototype.getAvailableDestinations = function (player, card
|
|
95
|
+
SimultaneousMoveEffectRule.prototype.getAvailableDestinations = function (player, card) {
|
|
85
96
|
var _this = this;
|
|
86
97
|
return new Pantheon_1.Pantheon(this.game, player).legalSpaces.filter(function (space) { return (space.y !== card.location.y || space.x !== card.location.x) && _this.isLegalDestination(space, card.location); });
|
|
87
98
|
};
|
|
88
99
|
SimultaneousMoveEffectRule.prototype.isLegalDestination = function (_space, _cardLocation) {
|
|
89
100
|
return true;
|
|
90
101
|
};
|
|
91
|
-
SimultaneousMoveEffectRule.prototype.
|
|
92
|
-
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.EntityCard)(move)
|
|
93
|
-
|
|
102
|
+
SimultaneousMoveEffectRule.prototype.beforeItemMove = function (move) {
|
|
103
|
+
if ((0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.EntityCard)(move)) {
|
|
104
|
+
if (move.location.type === LocationType_1.LocationType.Pantheon) {
|
|
105
|
+
this.memorize(Memory_1.Memory.EntityMoved, true, move.location.player);
|
|
106
|
+
return this.onCardMoved(move);
|
|
107
|
+
}
|
|
108
|
+
else if (move.location.type === LocationType_1.LocationType.PlayerDiscard) {
|
|
109
|
+
return this.onCardSacrificed(move);
|
|
110
|
+
}
|
|
94
111
|
}
|
|
95
112
|
return [];
|
|
96
113
|
};
|
|
97
114
|
SimultaneousMoveEffectRule.prototype.onCardMoved = function (move) {
|
|
98
115
|
return [this.endPlayerTurn(move.location.player)];
|
|
99
116
|
};
|
|
117
|
+
SimultaneousMoveEffectRule.prototype.onCardSacrificed = function (move) {
|
|
118
|
+
var card = this.material(MaterialType_1.MaterialType.EntityCard).index(move.itemIndex);
|
|
119
|
+
new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntitySacrificed, card: card.getItem(), cardIndex: card.getIndex() });
|
|
120
|
+
return [this.endPlayerTurn(move.location.player)];
|
|
121
|
+
};
|
|
100
122
|
SimultaneousMoveEffectRule.prototype.getMovesAfterPlayersDone = function () {
|
|
123
|
+
return this.updatePlayersGrids().concat(_super.prototype.getMovesAfterPlayersDone.call(this));
|
|
124
|
+
};
|
|
125
|
+
SimultaneousMoveEffectRule.prototype.updatePlayersGrids = function () {
|
|
101
126
|
var e_1, _a, _b;
|
|
102
127
|
var moves = [];
|
|
103
128
|
var events = [];
|
|
@@ -117,9 +142,12 @@ var SimultaneousMoveEffectRule = (function (_super) {
|
|
|
117
142
|
finally { if (e_1) throw e_1.error; }
|
|
118
143
|
}
|
|
119
144
|
(_b = new TriggerEffectsRule_1.TriggerEffectsRule(this.game)).triggerEffects.apply(_b, __spreadArray([], __read(events), false));
|
|
120
|
-
moves.push.apply(moves, __spreadArray([], __read(_super.prototype.getMovesAfterPlayersDone.call(this)), false));
|
|
121
145
|
return moves;
|
|
122
146
|
};
|
|
147
|
+
SimultaneousMoveEffectRule.prototype.onRuleEnd = function () {
|
|
148
|
+
this.forget(Memory_1.Memory.EntityMoved);
|
|
149
|
+
return [];
|
|
150
|
+
};
|
|
123
151
|
return SimultaneousMoveEffectRule;
|
|
124
152
|
}(Effect_1.SimultaneousEffectRule));
|
|
125
153
|
exports.SimultaneousMoveEffectRule = SimultaneousMoveEffectRule;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Dullahan = void 0;
|
|
4
|
+
var DullahanEffectRule_1 = require("../../../rules/effects/DullahanEffectRule");
|
|
5
|
+
var Effect_1 = require("../Effect");
|
|
4
6
|
exports.Dullahan = {
|
|
5
|
-
invoke: [{ gem: 1 }, {}, { gem: 1, favor: 1 }]
|
|
7
|
+
invoke: [{ gem: 1 }, {}, { gem: 1, favor: 1 }],
|
|
8
|
+
effect: {
|
|
9
|
+
trigger: Effect_1.isPlaced,
|
|
10
|
+
rule: DullahanEffectRule_1.DullahanEffectRule
|
|
11
|
+
}
|
|
6
12
|
};
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Leprechaun = void 0;
|
|
4
|
+
var LeprechaunEffectRule_1 = require("../../../rules/effects/LeprechaunEffectRule");
|
|
5
|
+
var Effect_1 = require("../Effect");
|
|
4
6
|
exports.Leprechaun = {
|
|
5
|
-
invoke: [{}, { favor: 1 }, {}]
|
|
7
|
+
invoke: [{}, { favor: 1 }, {}],
|
|
8
|
+
effect: {
|
|
9
|
+
trigger: Effect_1.oncePerTurn,
|
|
10
|
+
rule: LeprechaunEffectRule_1.LeprechaunEffectRule
|
|
11
|
+
}
|
|
6
12
|
};
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Selkie = void 0;
|
|
4
|
+
var SelkieEffectRule_1 = require("../../../rules/effects/SelkieEffectRule");
|
|
5
|
+
var Effect_1 = require("../Effect");
|
|
4
6
|
exports.Selkie = {
|
|
5
|
-
invoke: [{}, { gem: 2 }, { gem: 1 }]
|
|
7
|
+
invoke: [{}, { gem: 2 }, { gem: 1 }],
|
|
8
|
+
effects: [
|
|
9
|
+
{
|
|
10
|
+
sacrificeInsteadOfMove: true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
trigger: Effect_1.isSacrificed,
|
|
14
|
+
rule: SelkieEffectRule_1.SelkieEffectRule
|
|
15
|
+
}
|
|
16
|
+
]
|
|
6
17
|
};
|