@gamepark/skyrift 0.5.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CustomMoveType.d.ts +2 -1
- package/dist/CustomMoveType.js +1 -0
- package/dist/Deck.d.ts +1 -0
- package/dist/Deck.js +1 -0
- package/dist/SkyriftRules.d.ts +14 -6
- package/dist/SkyriftRules.js +10 -2
- package/dist/SkyriftSetup.js +2 -0
- package/dist/material/Card.d.ts +16 -0
- package/dist/material/Card.js +16 -0
- package/dist/material/CardProperties.js +32 -0
- package/dist/material/CardRule.d.ts +8 -4
- package/dist/material/CardRule.js +61 -20
- package/dist/material/Effect.d.ts +2 -0
- package/dist/material/EffectTraits.d.ts +7 -2
- package/dist/material/OngoingEffect.d.ts +9 -2
- package/dist/material/OngoingEffect.js +5 -1
- package/dist/material/decks/MoonDragon.d.ts +18 -0
- package/dist/material/decks/MoonDragon.js +19 -0
- package/dist/material/decks/blackhive/CarefulExcavation.d.ts +2 -1
- package/dist/material/decks/blackhive/CarefulExcavation.js +2 -2
- package/dist/material/decks/blackhive/CycleKeeperEffectRule.d.ts +3 -1
- package/dist/material/decks/gravehurt/CavernSkulkerEffectRule.js +1 -1
- package/dist/material/decks/gravehurt/Umbraboros.d.ts +1 -1
- package/dist/material/decks/gravehurt/Umbraboros.js +4 -3
- package/dist/material/decks/gravehurt/WitchingHour.d.ts +3 -3
- package/dist/material/decks/gravehurt/WitchingHour.js +3 -3
- package/dist/material/decks/heathblade/HedgeKnight.d.ts +1 -1
- package/dist/material/decks/heathblade/HedgeKnight.js +3 -4
- package/dist/material/decks/heathblade/PrincessLithaEffectRule.d.ts +2 -1
- package/dist/material/decks/moondragon/AkiraClearink.d.ts +13 -0
- package/dist/material/decks/moondragon/AkiraClearink.js +15 -0
- package/dist/material/decks/moondragon/AzureDragonsPeace.d.ts +13 -0
- package/dist/material/decks/moondragon/AzureDragonsPeace.js +18 -0
- package/dist/material/decks/moondragon/AzureDragonsPeaceEffectRule.d.ts +10 -0
- package/dist/material/decks/moondragon/AzureDragonsPeaceEffectRule.js +49 -0
- package/dist/material/decks/moondragon/CopyPlayEffectRule.d.ts +6 -0
- package/dist/material/decks/moondragon/CopyPlayEffectRule.js +33 -0
- package/dist/material/decks/moondragon/DartYusagi.d.ts +14 -0
- package/dist/material/decks/moondragon/DartYusagi.js +26 -0
- package/dist/material/decks/moondragon/DuelOfHonor.d.ts +19 -0
- package/dist/material/decks/moondragon/DuelOfHonor.js +35 -0
- package/dist/material/decks/moondragon/Embush.d.ts +17 -0
- package/dist/material/decks/moondragon/Embush.js +26 -0
- package/dist/material/decks/moondragon/EmbushEffectRule.d.ts +7 -0
- package/dist/material/decks/moondragon/EmbushEffectRule.js +26 -0
- package/dist/material/decks/moondragon/EmpressSama.d.ts +13 -0
- package/dist/material/decks/moondragon/EmpressSama.js +15 -0
- package/dist/material/decks/moondragon/EmpressSamaEffectRule.d.ts +7 -0
- package/dist/material/decks/moondragon/EmpressSamaEffectRule.js +29 -0
- package/dist/material/decks/moondragon/GardenProtector.d.ts +15 -0
- package/dist/material/decks/moondragon/GardenProtector.js +18 -0
- package/dist/material/decks/moondragon/ImperialBlade.d.ts +16 -0
- package/dist/material/decks/moondragon/ImperialBlade.js +19 -0
- package/dist/material/decks/moondragon/LotusMuse.d.ts +17 -0
- package/dist/material/decks/moondragon/LotusMuse.js +34 -0
- package/dist/material/decks/moondragon/LotusMuseEffectRule.d.ts +6 -0
- package/dist/material/decks/moondragon/LotusMuseEffectRule.js +24 -0
- package/dist/material/decks/moondragon/PortalOfTheAncestors.d.ts +16 -0
- package/dist/material/decks/moondragon/PortalOfTheAncestors.js +21 -0
- package/dist/material/decks/moondragon/RiteOfTastes.d.ts +15 -0
- package/dist/material/decks/moondragon/RiteOfTastes.js +18 -0
- package/dist/material/decks/moondragon/RoosterDance.d.ts +16 -0
- package/dist/material/decks/moondragon/RoosterDance.js +19 -0
- package/dist/material/decks/moondragon/ShardsAlchimist.d.ts +16 -0
- package/dist/material/decks/moondragon/ShardsAlchimist.js +22 -0
- package/dist/material/decks/moondragon/SpiritOracle.d.ts +16 -0
- package/dist/material/decks/moondragon/SpiritOracle.js +27 -0
- package/dist/material/decks/moondragon/SteppesColossus.d.ts +13 -0
- package/dist/material/decks/moondragon/SteppesColossus.js +15 -0
- package/dist/material/decks/moondragon/YoruNightink.d.ts +13 -0
- package/dist/material/decks/moondragon/YoruNightink.js +18 -0
- package/dist/material/decks/windsands/AbiSnakeCharmer.d.ts +4 -1
- package/dist/material/decks/windsands/AbiSnakeCharmer.js +14 -1
- package/dist/material/decks/windsands/DeathTrap.d.ts +2 -0
- package/dist/material/decks/windsands/DeathTrap.js +4 -0
- package/dist/material/decks/windsands/MalikShadowtracker.d.ts +3 -3
- package/dist/material/decks/windsands/MalikShadowtracker.js +4 -4
- package/dist/material/decks/windsands/OasisShaman.d.ts +3 -1
- package/dist/material/decks/windsands/OasisShaman.js +3 -0
- package/dist/rules/ChallengeEffectRule.d.ts +2 -1
- package/dist/rules/ChallengeResponseRule.d.ts +2 -1
- package/dist/rules/DiscardEffectRule.js +1 -1
- package/dist/rules/DrawEffectRule.js +1 -1
- package/dist/rules/EffectRule.js +6 -0
- package/dist/rules/EffectsHelper.d.ts +6 -0
- package/dist/rules/EffectsHelper.js +15 -0
- package/dist/rules/EndPlayerTurnRule.d.ts +2 -1
- package/dist/rules/EndRoundRule.d.ts +1 -1
- package/dist/rules/GainCrystalEffectRule.js +1 -1
- package/dist/rules/PlayCardEffectRule.d.ts +1 -0
- package/dist/rules/PlayCardEffectRule.js +9 -2
- package/dist/rules/PlayerHelper.d.ts +1 -1
- package/dist/rules/PlayerHelper.js +21 -19
- package/dist/rules/PrepareNextRoundRule.d.ts +5 -1
- package/dist/rules/PrepareNextRoundRule.js +6 -3
- package/dist/rules/RuleId.d.ts +5 -1
- package/dist/rules/RuleId.js +5 -1
- package/dist/rules/StartPlayerTurnRule.js +17 -2
- package/dist/rules/StashPowerTokensEffectRule.js +1 -1
- package/dist/rules/StealCrystalEffectRule.js +2 -2
- package/dist/rules/SwitchSideEffectRule.d.ts +3 -5
- package/dist/rules/SwitchSideEffectRule.js +2 -6
- package/package.json +3 -3
package/dist/CustomMoveType.d.ts
CHANGED
package/dist/CustomMoveType.js
CHANGED
|
@@ -8,4 +8,5 @@ export var CustomMoveType;
|
|
|
8
8
|
CustomMoveType[CustomMoveType["Challenge"] = 6] = "Challenge";
|
|
9
9
|
CustomMoveType[CustomMoveType["ActivateCard"] = 7] = "ActivateCard";
|
|
10
10
|
CustomMoveType[CustomMoveType["ChooseSuit"] = 8] = "ChooseSuit";
|
|
11
|
+
CustomMoveType[CustomMoveType["ChooseCard"] = 9] = "ChooseCard";
|
|
11
12
|
})(CustomMoveType || (CustomMoveType = {}));
|
package/dist/Deck.d.ts
CHANGED
package/dist/Deck.js
CHANGED
package/dist/SkyriftRules.d.ts
CHANGED
|
@@ -7,7 +7,10 @@ import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingParty
|
|
|
7
7
|
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
8
8
|
import { CaveInEffectRule } from './material/decks/blackhive/CaveInEffectRule';
|
|
9
9
|
import { CycleKeeperEffectRule } from './material/decks/blackhive/CycleKeeperEffectRule';
|
|
10
|
-
import {
|
|
10
|
+
import { CopyPlayEffectRule } from './material/decks/moondragon/CopyPlayEffectRule';
|
|
11
|
+
import { EmpressSamaEffectRule } from './material/decks/moondragon/EmpressSamaEffectRule';
|
|
12
|
+
import { LotusMuseEffectRule } from './material/decks/moondragon/LotusMuseEffectRule';
|
|
13
|
+
import { AzureDragonsPeaceEffectRule } from './material/decks/moondragon/AzureDragonsPeaceEffectRule';
|
|
11
14
|
import { WindWrathEffectRule } from './material/decks/windsands/WindWrathEffectRule';
|
|
12
15
|
import { LocationType } from './material/LocationType';
|
|
13
16
|
import { MaterialType } from './material/MaterialType';
|
|
@@ -30,6 +33,7 @@ import { StashPowerTokensEffectRule } from './rules/StashPowerTokensEffectRule';
|
|
|
30
33
|
import { StealCrystalEffectRule } from './rules/StealCrystalEffectRule';
|
|
31
34
|
import { MulliganEffectRule } from './rules/MulliganEffectRule';
|
|
32
35
|
import { StunEffectRule } from './rules/StunEffectRule';
|
|
36
|
+
import { SwitchSideEffectRule } from './rules/SwitchSideEffectRule';
|
|
33
37
|
export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType, LocationType> implements TimeLimit<MaterialGame<Deck, MaterialType, LocationType>, MaterialMove<Deck, MaterialType, LocationType>, Deck> {
|
|
34
38
|
rules: {
|
|
35
39
|
1: typeof StartRoundRule;
|
|
@@ -49,15 +53,19 @@ export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType
|
|
|
49
53
|
28: typeof StashPowerTokensEffectRule;
|
|
50
54
|
29: typeof GainCrystalEffectRule;
|
|
51
55
|
30: typeof StealCrystalEffectRule;
|
|
52
|
-
204: typeof AbiSnakeCharmerEffectRule;
|
|
53
56
|
31: typeof PlayCardEffectRule;
|
|
54
57
|
32: typeof MulliganEffectRule;
|
|
58
|
+
33: typeof SwitchSideEffectRule;
|
|
55
59
|
103: typeof PrincessLithaEffectRule;
|
|
56
60
|
215: typeof WindWrathEffectRule;
|
|
57
61
|
302: typeof CavernSkulkerEffectRule;
|
|
58
62
|
315: typeof DoomEffectRule;
|
|
59
63
|
409: typeof CycleKeeperEffectRule;
|
|
60
64
|
413: typeof CaveInEffectRule;
|
|
65
|
+
503: typeof CopyPlayEffectRule;
|
|
66
|
+
509: typeof EmpressSamaEffectRule;
|
|
67
|
+
510: typeof LotusMuseEffectRule;
|
|
68
|
+
513: typeof AzureDragonsPeaceEffectRule;
|
|
61
69
|
603: typeof EyeOfSkyEffectRule;
|
|
62
70
|
614: typeof BoardingPartyEffectRule;
|
|
63
71
|
};
|
|
@@ -77,10 +85,10 @@ export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType
|
|
|
77
85
|
14: import("@gamepark/rules-api").HidingStrategy<number, number>;
|
|
78
86
|
};
|
|
79
87
|
};
|
|
80
|
-
play(move: MaterialMoveRandomized<Deck, MaterialType, LocationType> | MaterialMoveView<Deck, MaterialType, LocationType>, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number>[];
|
|
81
|
-
protected beforeItemMove(move: ItemMove): MaterialMove<Deck, MaterialType, LocationType, number>[];
|
|
82
|
-
protected afterItemMove(move: ItemMove, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number>[];
|
|
83
|
-
protected onCustomMove(move: CustomMove, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number>[];
|
|
88
|
+
play(move: MaterialMoveRandomized<Deck, MaterialType, LocationType> | MaterialMoveView<Deck, MaterialType, LocationType>, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number, number>[];
|
|
89
|
+
protected beforeItemMove(move: ItemMove): MaterialMove<Deck, MaterialType, LocationType, number, number>[];
|
|
90
|
+
protected afterItemMove(move: ItemMove, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number, number>[];
|
|
91
|
+
protected onCustomMove(move: CustomMove, context?: PlayMoveContext): MaterialMove<Deck, MaterialType, LocationType, number, number>[];
|
|
84
92
|
isUnpredictableMove(move: MaterialMove<Deck, MaterialType, LocationType>, player: Deck): boolean;
|
|
85
93
|
giveTime(): number;
|
|
86
94
|
}
|
package/dist/SkyriftRules.js
CHANGED
|
@@ -8,7 +8,10 @@ import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingParty
|
|
|
8
8
|
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
9
9
|
import { CaveInEffectRule } from './material/decks/blackhive/CaveInEffectRule';
|
|
10
10
|
import { CycleKeeperEffectRule } from './material/decks/blackhive/CycleKeeperEffectRule';
|
|
11
|
-
import {
|
|
11
|
+
import { CopyPlayEffectRule } from './material/decks/moondragon/CopyPlayEffectRule';
|
|
12
|
+
import { EmpressSamaEffectRule } from './material/decks/moondragon/EmpressSamaEffectRule';
|
|
13
|
+
import { LotusMuseEffectRule } from './material/decks/moondragon/LotusMuseEffectRule';
|
|
14
|
+
import { AzureDragonsPeaceEffectRule } from './material/decks/moondragon/AzureDragonsPeaceEffectRule';
|
|
12
15
|
import { WindWrathEffectRule } from './material/decks/windsands/WindWrathEffectRule';
|
|
13
16
|
import { LocationType } from './material/LocationType';
|
|
14
17
|
import { MaterialType } from './material/MaterialType';
|
|
@@ -33,6 +36,7 @@ import { StashPowerTokensEffectRule } from './rules/StashPowerTokensEffectRule';
|
|
|
33
36
|
import { StealCrystalEffectRule } from './rules/StealCrystalEffectRule';
|
|
34
37
|
import { MulliganEffectRule } from './rules/MulliganEffectRule';
|
|
35
38
|
import { StunEffectRule } from './rules/StunEffectRule';
|
|
39
|
+
import { SwitchSideEffectRule } from './rules/SwitchSideEffectRule';
|
|
36
40
|
export class SkyriftRules extends SecretMaterialRules {
|
|
37
41
|
rules = {
|
|
38
42
|
[RuleId.StartRound]: StartRoundRule,
|
|
@@ -52,15 +56,19 @@ export class SkyriftRules extends SecretMaterialRules {
|
|
|
52
56
|
[RuleId.StashPowerTokensEffect]: StashPowerTokensEffectRule,
|
|
53
57
|
[RuleId.GainCrystalEffect]: GainCrystalEffectRule,
|
|
54
58
|
[RuleId.StealCrystalEffect]: StealCrystalEffectRule,
|
|
55
|
-
[RuleId.AbiSnakeCharmerEffect]: AbiSnakeCharmerEffectRule,
|
|
56
59
|
[RuleId.PlayCardEffect]: PlayCardEffectRule,
|
|
57
60
|
[RuleId.MulliganEffect]: MulliganEffectRule,
|
|
61
|
+
[RuleId.SwitchSideEffect]: SwitchSideEffectRule,
|
|
58
62
|
[RuleId.PrincessLithaEffect]: PrincessLithaEffectRule,
|
|
59
63
|
[RuleId.WindWrathEffect]: WindWrathEffectRule,
|
|
60
64
|
[RuleId.CavernSkulkerEffect]: CavernSkulkerEffectRule,
|
|
61
65
|
[RuleId.DoomEffect]: DoomEffectRule,
|
|
62
66
|
[RuleId.CycleKeeperEffect]: CycleKeeperEffectRule,
|
|
63
67
|
[RuleId.CaveInEffect]: CaveInEffectRule,
|
|
68
|
+
[RuleId.CopyPlayEffect]: CopyPlayEffectRule,
|
|
69
|
+
[RuleId.EmpressSamaEffect]: EmpressSamaEffectRule,
|
|
70
|
+
[RuleId.LotusMuseEffect]: LotusMuseEffectRule,
|
|
71
|
+
[RuleId.AzureDragonsPeaceEffect]: AzureDragonsPeaceEffectRule,
|
|
64
72
|
[RuleId.EyeOfSkyEffect]: EyeOfSkyEffectRule,
|
|
65
73
|
[RuleId.BoardingPartyEffect]: BoardingPartyEffectRule
|
|
66
74
|
};
|
package/dist/SkyriftSetup.js
CHANGED
|
@@ -4,6 +4,7 @@ import { Deck } from './Deck';
|
|
|
4
4
|
import { BlackHive } from './material/decks/BlackHive';
|
|
5
5
|
import { GraveHurt } from './material/decks/GraveHurt';
|
|
6
6
|
import { HearthBlade } from './material/decks/HearthBlade';
|
|
7
|
+
import { MoonDragon } from './material/decks/MoonDragon';
|
|
7
8
|
import { HighWave } from './material/decks/HighWave';
|
|
8
9
|
import { WindSands } from './material/decks/WindSands';
|
|
9
10
|
import { LocationType } from './material/LocationType';
|
|
@@ -16,6 +17,7 @@ const deckConfigurations = {
|
|
|
16
17
|
[Deck.WindSands]: WindSands,
|
|
17
18
|
[Deck.GraveHurt]: GraveHurt,
|
|
18
19
|
[Deck.BlackHive]: BlackHive,
|
|
20
|
+
[Deck.MoonDragon]: MoonDragon,
|
|
19
21
|
[Deck.HighWave]: HighWave
|
|
20
22
|
};
|
|
21
23
|
export class SkyriftSetup extends MaterialGameSetup {
|
package/dist/material/Card.d.ts
CHANGED
|
@@ -64,6 +64,22 @@ export declare enum Card {
|
|
|
64
64
|
CrystalShaft = 414,
|
|
65
65
|
ExplosiveKitty = 415,
|
|
66
66
|
CarefulExcavation = 416,
|
|
67
|
+
GardenProtector = 501,
|
|
68
|
+
ImperialBlade = 502,
|
|
69
|
+
AkiraClearink = 503,
|
|
70
|
+
DartYusagi = 504,
|
|
71
|
+
SteppesColossus = 505,
|
|
72
|
+
ShardsAlchimist = 506,
|
|
73
|
+
SpiritOracle = 507,
|
|
74
|
+
YoruNightink = 508,
|
|
75
|
+
EmpressSama = 509,
|
|
76
|
+
LotusMuse = 510,
|
|
77
|
+
RoosterDance = 511,
|
|
78
|
+
RiteOfTastes = 512,
|
|
79
|
+
AzureDragonsPeace = 513,
|
|
80
|
+
Embush = 514,
|
|
81
|
+
DuelOfHonor = 515,
|
|
82
|
+
PortalOfTheAncestors = 516,
|
|
67
83
|
SeaScorcher = 601,
|
|
68
84
|
AeliaSteadyHand = 602,
|
|
69
85
|
EyeOfSky = 603,
|
package/dist/material/Card.js
CHANGED
|
@@ -64,6 +64,22 @@ export var Card;
|
|
|
64
64
|
Card[Card["CrystalShaft"] = 414] = "CrystalShaft";
|
|
65
65
|
Card[Card["ExplosiveKitty"] = 415] = "ExplosiveKitty";
|
|
66
66
|
Card[Card["CarefulExcavation"] = 416] = "CarefulExcavation";
|
|
67
|
+
Card[Card["GardenProtector"] = 501] = "GardenProtector";
|
|
68
|
+
Card[Card["ImperialBlade"] = 502] = "ImperialBlade";
|
|
69
|
+
Card[Card["AkiraClearink"] = 503] = "AkiraClearink";
|
|
70
|
+
Card[Card["DartYusagi"] = 504] = "DartYusagi";
|
|
71
|
+
Card[Card["SteppesColossus"] = 505] = "SteppesColossus";
|
|
72
|
+
Card[Card["ShardsAlchimist"] = 506] = "ShardsAlchimist";
|
|
73
|
+
Card[Card["SpiritOracle"] = 507] = "SpiritOracle";
|
|
74
|
+
Card[Card["YoruNightink"] = 508] = "YoruNightink";
|
|
75
|
+
Card[Card["EmpressSama"] = 509] = "EmpressSama";
|
|
76
|
+
Card[Card["LotusMuse"] = 510] = "LotusMuse";
|
|
77
|
+
Card[Card["RoosterDance"] = 511] = "RoosterDance";
|
|
78
|
+
Card[Card["RiteOfTastes"] = 512] = "RiteOfTastes";
|
|
79
|
+
Card[Card["AzureDragonsPeace"] = 513] = "AzureDragonsPeace";
|
|
80
|
+
Card[Card["Embush"] = 514] = "Embush";
|
|
81
|
+
Card[Card["DuelOfHonor"] = 515] = "DuelOfHonor";
|
|
82
|
+
Card[Card["PortalOfTheAncestors"] = 516] = "PortalOfTheAncestors";
|
|
67
83
|
Card[Card["SeaScorcher"] = 601] = "SeaScorcher";
|
|
68
84
|
Card[Card["AeliaSteadyHand"] = 602] = "AeliaSteadyHand";
|
|
69
85
|
Card[Card["EyeOfSky"] = 603] = "EyeOfSky";
|
|
@@ -63,6 +63,22 @@ import { Shadowbolt } from './decks/heathblade/Shadowbolt';
|
|
|
63
63
|
import { SoulBlade } from './decks/heathblade/SoulBlade';
|
|
64
64
|
import { WatchTower } from './decks/heathblade/WatchTower';
|
|
65
65
|
import { WoodSlinger } from './decks/heathblade/WoodSlinger';
|
|
66
|
+
import { GardenProtector } from './decks/moondragon/GardenProtector';
|
|
67
|
+
import { ImperialBlade } from './decks/moondragon/ImperialBlade';
|
|
68
|
+
import { AkiraClearink } from './decks/moondragon/AkiraClearink';
|
|
69
|
+
import { DartYusagi } from './decks/moondragon/DartYusagi';
|
|
70
|
+
import { SteppesColossus } from './decks/moondragon/SteppesColossus';
|
|
71
|
+
import { ShardsAlchimist } from './decks/moondragon/ShardsAlchimist';
|
|
72
|
+
import { SpiritOracle } from './decks/moondragon/SpiritOracle';
|
|
73
|
+
import { YoruNightink } from './decks/moondragon/YoruNightink';
|
|
74
|
+
import { EmpressSama } from './decks/moondragon/EmpressSama';
|
|
75
|
+
import { LotusMuse } from './decks/moondragon/LotusMuse';
|
|
76
|
+
import { RoosterDance } from './decks/moondragon/RoosterDance';
|
|
77
|
+
import { RiteOfTastes } from './decks/moondragon/RiteOfTastes';
|
|
78
|
+
import { AzureDragonsPeace } from './decks/moondragon/AzureDragonsPeace';
|
|
79
|
+
import { Embush } from './decks/moondragon/Embush';
|
|
80
|
+
import { DuelOfHonor } from './decks/moondragon/DuelOfHonor';
|
|
81
|
+
import { PortalOfTheAncestors } from './decks/moondragon/PortalOfTheAncestors';
|
|
66
82
|
import { UndergroundScourge } from './decks/blackhive/UndergroundScourge';
|
|
67
83
|
import { ShadowDealer } from './decks/blackhive/ShadowDealer';
|
|
68
84
|
import { DariusAstraSmith } from './decks/blackhive/DariusAstraSmith';
|
|
@@ -144,6 +160,22 @@ export const cardProperties = {
|
|
|
144
160
|
[Card.CrystalShaft]: CrystalShaft,
|
|
145
161
|
[Card.ExplosiveKitty]: ExplosiveKitty,
|
|
146
162
|
[Card.CarefulExcavation]: CarefulExcavation,
|
|
163
|
+
[Card.GardenProtector]: GardenProtector,
|
|
164
|
+
[Card.ImperialBlade]: ImperialBlade,
|
|
165
|
+
[Card.AkiraClearink]: AkiraClearink,
|
|
166
|
+
[Card.DartYusagi]: DartYusagi,
|
|
167
|
+
[Card.SteppesColossus]: SteppesColossus,
|
|
168
|
+
[Card.ShardsAlchimist]: ShardsAlchimist,
|
|
169
|
+
[Card.SpiritOracle]: SpiritOracle,
|
|
170
|
+
[Card.YoruNightink]: YoruNightink,
|
|
171
|
+
[Card.EmpressSama]: EmpressSama,
|
|
172
|
+
[Card.LotusMuse]: LotusMuse,
|
|
173
|
+
[Card.RoosterDance]: RoosterDance,
|
|
174
|
+
[Card.RiteOfTastes]: RiteOfTastes,
|
|
175
|
+
[Card.AzureDragonsPeace]: AzureDragonsPeace,
|
|
176
|
+
[Card.Embush]: Embush,
|
|
177
|
+
[Card.DuelOfHonor]: DuelOfHonor,
|
|
178
|
+
[Card.PortalOfTheAncestors]: PortalOfTheAncestors,
|
|
147
179
|
[Card.SeaScorcher]: SeaScorcher,
|
|
148
180
|
[Card.AeliaSteadyHand]: AeliaSteadyHand,
|
|
149
181
|
[Card.EyeOfSky]: EyeOfSky,
|
|
@@ -2,7 +2,7 @@ import { MaterialGame, MaterialMove, MaterialRulesPart } from '@gamepark/rules-a
|
|
|
2
2
|
import { Deck } from '../Deck';
|
|
3
3
|
import { Card, CardId } from './Card';
|
|
4
4
|
import { Effect } from './Effect';
|
|
5
|
-
import { OngoingEffectType } from './OngoingEffect';
|
|
5
|
+
import { OngoingEffect, OngoingEffectType } from './OngoingEffect';
|
|
6
6
|
export declare class CardRule extends MaterialRulesPart {
|
|
7
7
|
index: number;
|
|
8
8
|
constructor(game: MaterialGame, index: number);
|
|
@@ -14,7 +14,7 @@ export declare class CardRule extends MaterialRulesPart {
|
|
|
14
14
|
onSkirmishEnd?(): void;
|
|
15
15
|
onSkirmishWin?(): void;
|
|
16
16
|
onSkirmishLost?(): void;
|
|
17
|
-
|
|
17
|
+
isNeutralized(): boolean;
|
|
18
18
|
canActivate(): boolean;
|
|
19
19
|
onLeaves(): MaterialMove[];
|
|
20
20
|
removePowerTokens(): MaterialMove[];
|
|
@@ -23,18 +23,22 @@ export declare class CardRule extends MaterialRulesPart {
|
|
|
23
23
|
get item(): import("@gamepark/rules-api").MaterialItem<number, number, CardId>;
|
|
24
24
|
get card(): Card;
|
|
25
25
|
get properties(): import("./CardProperties").CardProperties;
|
|
26
|
+
get powerTokens(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
27
|
+
get stunTokens(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
28
|
+
get specialTokens(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
26
29
|
get playArea(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
27
30
|
get creatures(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
28
31
|
isStunned(): boolean;
|
|
29
32
|
getPower(): number;
|
|
30
33
|
getPowerIfNotStunned(): number;
|
|
31
|
-
|
|
34
|
+
getPlayerPowerModifier(_player: Deck): number;
|
|
32
35
|
addPendingEffect(ruleId: number): void;
|
|
33
|
-
addOngoingEffect(type: OngoingEffectType): void;
|
|
36
|
+
addOngoingEffect(type: OngoingEffectType, options?: Omit<OngoingEffect, 'type' | 'cardIndex'>): void;
|
|
34
37
|
removeOngoingEffect(type: OngoingEffectType): void;
|
|
35
38
|
get player(): number;
|
|
36
39
|
get foe(): number;
|
|
37
40
|
startEffect(effect: Effect): MaterialMove[];
|
|
41
|
+
isAutomaticEffect(effect: Effect): boolean;
|
|
38
42
|
getEffectPlayers(_effect: Effect): number[];
|
|
39
43
|
canBePlayed(): boolean;
|
|
40
44
|
canSuitBePlayed(): boolean;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
2
|
import { Memory } from '../Memory';
|
|
3
|
+
import { EffectsHelper } from '../rules/EffectsHelper';
|
|
4
|
+
import { RuleId } from '../rules/RuleId';
|
|
3
5
|
import { cardProperties } from './CardProperties';
|
|
4
6
|
import { CardSuit } from './CardSuit';
|
|
5
7
|
import { CardType } from './CardType';
|
|
@@ -13,11 +15,16 @@ export class CardRule extends MaterialRulesPart {
|
|
|
13
15
|
super(game);
|
|
14
16
|
this.index = index;
|
|
15
17
|
}
|
|
18
|
+
isNeutralized() {
|
|
19
|
+
return this.remind(Memory.OngoingEffects).some((e) => e.type === OngoingEffectType.Neutralized && e.targets?.includes(this.index));
|
|
20
|
+
}
|
|
16
21
|
canActivate() {
|
|
17
22
|
if (!this.activate)
|
|
18
23
|
return false;
|
|
19
24
|
if (this.isStunned())
|
|
20
25
|
return false;
|
|
26
|
+
if (this.isNeutralized())
|
|
27
|
+
return false;
|
|
21
28
|
const activatedCards = this.remind(Memory.ActivatedCards);
|
|
22
29
|
return !activatedCards.includes(this.index);
|
|
23
30
|
}
|
|
@@ -25,16 +32,13 @@ export class CardRule extends MaterialRulesPart {
|
|
|
25
32
|
return [...this.removePowerTokens(), ...this.removeStunTokens(), ...this.removeSpecialTokens()];
|
|
26
33
|
}
|
|
27
34
|
removePowerTokens() {
|
|
28
|
-
|
|
29
|
-
return tokens.getQuantity() > 0 ? [tokens.deleteItem(tokens.getQuantity())] : [];
|
|
35
|
+
return this.powerTokens.getQuantity() > 0 ? [this.powerTokens.deleteItem(this.powerTokens.getQuantity())] : [];
|
|
30
36
|
}
|
|
31
37
|
removeStunTokens() {
|
|
32
|
-
|
|
33
|
-
return tokens.getQuantity() > 0 ? [tokens.deleteItem(tokens.getQuantity())] : [];
|
|
38
|
+
return this.stunTokens.getQuantity() > 0 ? [this.stunTokens.deleteItem(this.stunTokens.getQuantity())] : [];
|
|
34
39
|
}
|
|
35
40
|
removeSpecialTokens() {
|
|
36
|
-
|
|
37
|
-
return tokens.getQuantity() > 0 ? [tokens.deleteItem(tokens.getQuantity())] : [];
|
|
41
|
+
return this.specialTokens.getQuantity() > 0 ? [this.specialTokens.deleteItem(this.specialTokens.getQuantity())] : [];
|
|
38
42
|
}
|
|
39
43
|
get item() {
|
|
40
44
|
return this.material(MaterialType.Card).getItem(this.index);
|
|
@@ -45,6 +49,15 @@ export class CardRule extends MaterialRulesPart {
|
|
|
45
49
|
get properties() {
|
|
46
50
|
return cardProperties[this.card];
|
|
47
51
|
}
|
|
52
|
+
get powerTokens() {
|
|
53
|
+
return this.material(MaterialType.PowerToken).location(LocationType.CardPowerTokens).parent(this.index);
|
|
54
|
+
}
|
|
55
|
+
get stunTokens() {
|
|
56
|
+
return this.material(MaterialType.StunToken).location(LocationType.CardStunTokens).parent(this.index);
|
|
57
|
+
}
|
|
58
|
+
get specialTokens() {
|
|
59
|
+
return this.material(MaterialType.SpecialToken).location(LocationType.CardSpecialTokens).parent(this.index);
|
|
60
|
+
}
|
|
48
61
|
get playArea() {
|
|
49
62
|
return this.material(MaterialType.Card).location(LocationType.PlayArea);
|
|
50
63
|
}
|
|
@@ -52,10 +65,10 @@ export class CardRule extends MaterialRulesPart {
|
|
|
52
65
|
return this.playArea.id((id) => cardProperties[id.front].type === CardType.Creature);
|
|
53
66
|
}
|
|
54
67
|
isStunned() {
|
|
55
|
-
return this.
|
|
68
|
+
return this.stunTokens.getQuantity() > 0;
|
|
56
69
|
}
|
|
57
70
|
getPower() {
|
|
58
|
-
if (this.isStunned()) {
|
|
71
|
+
if (this.isStunned() || this.isNeutralized()) {
|
|
59
72
|
return 0;
|
|
60
73
|
}
|
|
61
74
|
else {
|
|
@@ -64,17 +77,21 @@ export class CardRule extends MaterialRulesPart {
|
|
|
64
77
|
}
|
|
65
78
|
getPowerIfNotStunned() {
|
|
66
79
|
const basePower = this.properties.power;
|
|
67
|
-
const
|
|
68
|
-
|
|
80
|
+
const powerModifier = this.remind(Memory.OngoingEffects)
|
|
81
|
+
.filter((e) => e.type === OngoingEffectType.PowerModifier && e.cardIndex === this.index)
|
|
82
|
+
.reduce((sum, e) => sum + (e.value ?? 0), 0);
|
|
83
|
+
return basePower + this.powerTokens.getQuantity() + powerModifier;
|
|
69
84
|
}
|
|
70
|
-
|
|
85
|
+
getPlayerPowerModifier(_player) {
|
|
71
86
|
return 0;
|
|
72
87
|
}
|
|
73
88
|
addPendingEffect(ruleId) {
|
|
89
|
+
if (this.isNeutralized())
|
|
90
|
+
return;
|
|
74
91
|
this.memorize(Memory.PendingEffects, (effects) => [...effects, { cardIndex: this.index, ruleId }]);
|
|
75
92
|
}
|
|
76
|
-
addOngoingEffect(type) {
|
|
77
|
-
this.memorize(Memory.OngoingEffects, (effects) => [...effects, { type, cardIndex: this.index }]);
|
|
93
|
+
addOngoingEffect(type, options) {
|
|
94
|
+
this.memorize(Memory.OngoingEffects, (effects) => [...effects, { type, cardIndex: this.index, ...options }]);
|
|
78
95
|
}
|
|
79
96
|
removeOngoingEffect(type) {
|
|
80
97
|
this.memorize(Memory.OngoingEffects, (effects) => effects.filter((e) => !(e.type === type && e.cardIndex === this.index)));
|
|
@@ -86,12 +103,38 @@ export class CardRule extends MaterialRulesPart {
|
|
|
86
103
|
return this.game.players.find((p) => p !== this.player);
|
|
87
104
|
}
|
|
88
105
|
startEffect(effect) {
|
|
106
|
+
if (this.isAutomaticEffect(effect)) {
|
|
107
|
+
return [this.startRule(effect.ruleId)];
|
|
108
|
+
}
|
|
89
109
|
const players = this.getEffectPlayers(effect);
|
|
90
110
|
if (players.length > 1) {
|
|
91
111
|
return [this.startSimultaneousRule(effect.ruleId, players)];
|
|
92
112
|
}
|
|
93
113
|
return [this.startPlayerTurn(effect.ruleId, players[0])];
|
|
94
114
|
}
|
|
115
|
+
isAutomaticEffect(effect) {
|
|
116
|
+
switch (effect.ruleId) {
|
|
117
|
+
case RuleId.DrawEffect:
|
|
118
|
+
case RuleId.GainCrystalEffect:
|
|
119
|
+
case RuleId.StashPowerTokensEffect:
|
|
120
|
+
case RuleId.StealCrystalEffect:
|
|
121
|
+
case RuleId.WindWrathEffect:
|
|
122
|
+
case RuleId.CavernSkulkerEffect:
|
|
123
|
+
return true;
|
|
124
|
+
case RuleId.StunEffect:
|
|
125
|
+
return !!this.isAutoStun?.();
|
|
126
|
+
case RuleId.DestroyEffect:
|
|
127
|
+
return !!this.isAutoDestroy?.();
|
|
128
|
+
case RuleId.DiscardEffect:
|
|
129
|
+
return !!this.isAutoDiscard?.();
|
|
130
|
+
case RuleId.ReturnCardEffect:
|
|
131
|
+
return !!this.isAutoReturn?.();
|
|
132
|
+
case RuleId.PutPowerTokensEffect:
|
|
133
|
+
return !!this.isAutoPutPowerToken?.();
|
|
134
|
+
default:
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
95
138
|
getEffectPlayers(_effect) {
|
|
96
139
|
return [this.player];
|
|
97
140
|
}
|
|
@@ -104,13 +147,11 @@ export class CardRule extends MaterialRulesPart {
|
|
|
104
147
|
return !currentSuit || cardSuit === CardSuit.Twilight || cardSuit === currentSuit;
|
|
105
148
|
}
|
|
106
149
|
ongoingEffectPreventsPlayCard() {
|
|
107
|
-
const
|
|
108
|
-
for (const effect of
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
150
|
+
const effectsHelper = new EffectsHelper(this.game);
|
|
151
|
+
for (const effect of effectsHelper.getActiveOngoingEffects(OngoingEffectType.PlayCardCondition)) {
|
|
152
|
+
const sourceCardRule = createCardRule(this.game, effect.cardIndex);
|
|
153
|
+
if (!sourceCardRule.canPlayCard(this.card, this.player)) {
|
|
154
|
+
return true;
|
|
114
155
|
}
|
|
115
156
|
}
|
|
116
157
|
return false;
|
|
@@ -32,6 +32,7 @@ export interface StashPowerTokenEffect {
|
|
|
32
32
|
export interface PlayCardEffect {
|
|
33
33
|
getPlayCardTargets?(): Material;
|
|
34
34
|
isPlayCardOptional?(): boolean;
|
|
35
|
+
ignorePlayCardConditions?(): boolean;
|
|
35
36
|
}
|
|
36
37
|
export interface ChallengeEffect {
|
|
37
38
|
onChallengeAccepted?(): void;
|
|
@@ -43,8 +44,12 @@ export interface StunEffect {
|
|
|
43
44
|
getStunTargetsCount?(): number;
|
|
44
45
|
isAutoStun?(): boolean;
|
|
45
46
|
}
|
|
46
|
-
export interface
|
|
47
|
-
|
|
47
|
+
export interface PlayCardConditionEffect {
|
|
48
|
+
canPlayCard(card: Card, player: Deck): boolean;
|
|
49
|
+
onPlayCardCondition?(card: Card, player: Deck): void;
|
|
50
|
+
}
|
|
51
|
+
export interface SwitchSideEffect {
|
|
52
|
+
getSwitchSideTargets?(): Material;
|
|
48
53
|
}
|
|
49
54
|
export interface PreventEffectsEffect {
|
|
50
55
|
preventEnterEffects(cardIndex: number): boolean;
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
export declare enum OngoingEffectType {
|
|
2
|
-
|
|
2
|
+
PlayCardCondition = 1,
|
|
3
3
|
PreventEffects = 2,
|
|
4
4
|
LockSuit = 3,
|
|
5
|
-
PassTurn = 4
|
|
5
|
+
PassTurn = 4,
|
|
6
|
+
SurvivesSkirmish = 5,
|
|
7
|
+
KeepActionCard = 6,
|
|
8
|
+
Neutralized = 7,
|
|
9
|
+
PowerModifier = 8
|
|
6
10
|
}
|
|
7
11
|
export type OngoingEffect = {
|
|
8
12
|
type: OngoingEffectType;
|
|
9
13
|
cardIndex: number;
|
|
14
|
+
targets?: number[];
|
|
15
|
+
value?: number;
|
|
16
|
+
turnsLeft?: number;
|
|
10
17
|
};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export var OngoingEffectType;
|
|
2
2
|
(function (OngoingEffectType) {
|
|
3
|
-
OngoingEffectType[OngoingEffectType["
|
|
3
|
+
OngoingEffectType[OngoingEffectType["PlayCardCondition"] = 1] = "PlayCardCondition";
|
|
4
4
|
OngoingEffectType[OngoingEffectType["PreventEffects"] = 2] = "PreventEffects";
|
|
5
5
|
OngoingEffectType[OngoingEffectType["LockSuit"] = 3] = "LockSuit";
|
|
6
6
|
OngoingEffectType[OngoingEffectType["PassTurn"] = 4] = "PassTurn";
|
|
7
|
+
OngoingEffectType[OngoingEffectType["SurvivesSkirmish"] = 5] = "SurvivesSkirmish";
|
|
8
|
+
OngoingEffectType[OngoingEffectType["KeepActionCard"] = 6] = "KeepActionCard";
|
|
9
|
+
OngoingEffectType[OngoingEffectType["Neutralized"] = 7] = "Neutralized";
|
|
10
|
+
OngoingEffectType[OngoingEffectType["PowerModifier"] = 8] = "PowerModifier";
|
|
7
11
|
})(OngoingEffectType || (OngoingEffectType = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const MoonDragon: {
|
|
2
|
+
501: number;
|
|
3
|
+
502: number;
|
|
4
|
+
503: number;
|
|
5
|
+
504: number;
|
|
6
|
+
505: number;
|
|
7
|
+
506: number;
|
|
8
|
+
507: number;
|
|
9
|
+
508: number;
|
|
10
|
+
509: number;
|
|
11
|
+
510: number;
|
|
12
|
+
511: number;
|
|
13
|
+
512: number;
|
|
14
|
+
513: number;
|
|
15
|
+
514: number;
|
|
16
|
+
515: number;
|
|
17
|
+
516: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Card } from '../Card';
|
|
2
|
+
export const MoonDragon = {
|
|
3
|
+
[Card.GardenProtector]: 2,
|
|
4
|
+
[Card.ImperialBlade]: 2,
|
|
5
|
+
[Card.AkiraClearink]: 1,
|
|
6
|
+
[Card.DartYusagi]: 1,
|
|
7
|
+
[Card.SteppesColossus]: 2,
|
|
8
|
+
[Card.ShardsAlchimist]: 2,
|
|
9
|
+
[Card.SpiritOracle]: 2,
|
|
10
|
+
[Card.YoruNightink]: 1,
|
|
11
|
+
[Card.EmpressSama]: 1,
|
|
12
|
+
[Card.LotusMuse]: 1,
|
|
13
|
+
[Card.RoosterDance]: 2,
|
|
14
|
+
[Card.RiteOfTastes]: 1,
|
|
15
|
+
[Card.AzureDragonsPeace]: 1,
|
|
16
|
+
[Card.Embush]: 1,
|
|
17
|
+
[Card.DuelOfHonor]: 2,
|
|
18
|
+
[Card.PortalOfTheAncestors]: 2
|
|
19
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Material } from '@gamepark/rules-api';
|
|
2
|
+
import { Deck } from '../../../Deck';
|
|
2
3
|
import { CardRule } from '../../CardRule';
|
|
3
4
|
import { CardSuit } from '../../CardSuit';
|
|
4
5
|
import { CardType } from '../../CardType';
|
|
@@ -6,7 +7,7 @@ import { DestroyEffect, DrawEffect } from '../../EffectTraits';
|
|
|
6
7
|
declare class CarefulExcavationRule extends CardRule implements DrawEffect, DestroyEffect {
|
|
7
8
|
onEnters(): void;
|
|
8
9
|
getDrawCount(): number;
|
|
9
|
-
|
|
10
|
+
getPlayerPowerModifier(player: Deck): 4 | 0;
|
|
10
11
|
onFoeTurnStart(): void;
|
|
11
12
|
getDestroyTargets(): Material;
|
|
12
13
|
isAutoDestroy(): boolean;
|
|
@@ -10,8 +10,8 @@ class CarefulExcavationRule extends CardRule {
|
|
|
10
10
|
getDrawCount() {
|
|
11
11
|
return 2;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
return 4;
|
|
13
|
+
getPlayerPowerModifier(player) {
|
|
14
|
+
return player === this.foe ? 4 : 0;
|
|
15
15
|
}
|
|
16
16
|
onFoeTurnStart() {
|
|
17
17
|
this.addPendingEffect(RuleId.DestroyEffect);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { CustomMove } from '@gamepark/rules-api';
|
|
2
|
+
import { CustomMoveType } from '../../../CustomMoveType';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
2
4
|
import { EffectRule } from '../../../rules/EffectRule';
|
|
3
5
|
export declare class CycleKeeperEffectRule extends EffectRule {
|
|
4
|
-
getPlayerMoves(): CustomMove[];
|
|
6
|
+
getPlayerMoves(): CustomMove<CustomMoveType.ChooseSuit, CardSuit>[];
|
|
5
7
|
onCustomMove(move: CustomMove): import("@gamepark/rules-api").MaterialMove[];
|
|
6
8
|
}
|
|
@@ -5,7 +5,7 @@ import { MaterialType } from '../../MaterialType';
|
|
|
5
5
|
export class CavernSkulkerEffectRule extends EffectRule {
|
|
6
6
|
onRuleStart() {
|
|
7
7
|
const moves = this.endEffect();
|
|
8
|
-
const foeHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.
|
|
8
|
+
const foeHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.cardRule.foe);
|
|
9
9
|
if (foeHand.length > 0) {
|
|
10
10
|
const randomIndex = sample(foeHand.getIndexes());
|
|
11
11
|
moves.unshift(foeHand.index(randomIndex).moveItem({ type: LocationType.UnderCard, parent: this.effectCardIndex }));
|
|
@@ -7,10 +7,10 @@ import { CardType } from '../../CardType';
|
|
|
7
7
|
import { DestroyEffect } from '../../EffectTraits';
|
|
8
8
|
import { UndeadRule } from './UndeadRule';
|
|
9
9
|
declare class UmbraborosRule extends UndeadRule implements DestroyEffect {
|
|
10
|
+
onEnters(): void;
|
|
10
11
|
onCardEnters(card: Card, side: Deck): void;
|
|
11
12
|
getDestroyTargets(): Material;
|
|
12
13
|
isAutoDestroy(): boolean;
|
|
13
|
-
survivesSkirmish(): boolean;
|
|
14
14
|
}
|
|
15
15
|
export declare const Umbraboros: {
|
|
16
16
|
power: number;
|
|
@@ -4,8 +4,12 @@ import { CardSuit } from '../../CardSuit';
|
|
|
4
4
|
import { CardTag } from '../../CardTag';
|
|
5
5
|
import { CardType } from '../../CardType';
|
|
6
6
|
import { MaterialType } from '../../MaterialType';
|
|
7
|
+
import { OngoingEffectType } from '../../OngoingEffect';
|
|
7
8
|
import { UndeadRule } from './UndeadRule';
|
|
8
9
|
class UmbraborosRule extends UndeadRule {
|
|
10
|
+
onEnters() {
|
|
11
|
+
this.addOngoingEffect(OngoingEffectType.SurvivesSkirmish);
|
|
12
|
+
}
|
|
9
13
|
onCardEnters(card, side) {
|
|
10
14
|
if (side === this.player && cardProperties[card].suit === CardSuit.Day) {
|
|
11
15
|
this.addPendingEffect(RuleId.DestroyEffect);
|
|
@@ -17,9 +21,6 @@ class UmbraborosRule extends UndeadRule {
|
|
|
17
21
|
isAutoDestroy() {
|
|
18
22
|
return true;
|
|
19
23
|
}
|
|
20
|
-
survivesSkirmish() {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
24
|
}
|
|
24
25
|
export const Umbraboros = {
|
|
25
26
|
power: 3,
|
|
@@ -2,10 +2,10 @@ import { Card } from '../../Card';
|
|
|
2
2
|
import { CardRule } from '../../CardRule';
|
|
3
3
|
import { CardSuit } from '../../CardSuit';
|
|
4
4
|
import { CardType } from '../../CardType';
|
|
5
|
-
import {
|
|
6
|
-
declare class WitchingHourRule extends CardRule implements
|
|
5
|
+
import { PlayCardConditionEffect } from '../../EffectTraits';
|
|
6
|
+
declare class WitchingHourRule extends CardRule implements PlayCardConditionEffect {
|
|
7
7
|
onEnters(): void;
|
|
8
|
-
|
|
8
|
+
canPlayCard(card: Card): boolean;
|
|
9
9
|
}
|
|
10
10
|
export declare const WitchingHour: {
|
|
11
11
|
power: number;
|