@gamepark/skyrift 0.4.3 → 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/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/Memory.d.ts +10 -9
- package/dist/Memory.js +10 -9
- package/dist/SkyriftRules.d.ts +6 -2
- package/dist/SkyriftRules.js +6 -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 +2 -1
- package/dist/material/CardRule.js +10 -3
- package/dist/material/OngoingEffect.d.ts +3 -1
- package/dist/material/OngoingEffect.js +2 -0
- package/dist/material/decks/BlackHive.d.ts +18 -0
- package/dist/material/decks/BlackHive.js +19 -0
- package/dist/material/decks/blackhive/CarefulExcavation.d.ts +20 -0
- package/dist/material/decks/blackhive/CarefulExcavation.js +31 -0
- package/dist/material/decks/blackhive/CaveIn.d.ts +14 -0
- package/dist/material/decks/blackhive/CaveIn.js +18 -0
- package/dist/material/decks/blackhive/CaveInEffectRule.d.ts +10 -0
- package/dist/material/decks/blackhive/CaveInEffectRule.js +55 -0
- package/dist/material/decks/blackhive/CrystalMining.d.ts +15 -0
- package/dist/material/decks/blackhive/CrystalMining.js +22 -0
- package/dist/material/decks/blackhive/CrystalMiningBonusEffectRule.d.ts +4 -0
- package/dist/material/decks/blackhive/CrystalMiningBonusEffectRule.js +10 -0
- package/dist/material/decks/blackhive/CrystalShaft.d.ts +15 -0
- package/dist/material/decks/blackhive/CrystalShaft.js +18 -0
- package/dist/material/decks/blackhive/CycleKeeper.d.ts +13 -0
- package/dist/material/decks/blackhive/CycleKeeper.js +15 -0
- package/dist/material/decks/blackhive/CycleKeeperEffectRule.d.ts +6 -0
- package/dist/material/decks/blackhive/CycleKeeperEffectRule.js +21 -0
- package/dist/material/decks/blackhive/DariusAstraSmith.d.ts +13 -0
- package/dist/material/decks/blackhive/DariusAstraSmith.js +15 -0
- package/dist/material/decks/blackhive/DarkSwarm.d.ts +13 -0
- package/dist/material/decks/blackhive/DarkSwarm.js +15 -0
- package/dist/material/decks/blackhive/DarkSwarmEffectRule.d.ts +6 -0
- package/dist/material/decks/blackhive/DarkSwarmEffectRule.js +18 -0
- package/dist/material/decks/blackhive/ElevatorOfTheAbyss.d.ts +15 -0
- package/dist/material/decks/blackhive/ElevatorOfTheAbyss.js +19 -0
- package/dist/material/decks/blackhive/ExplosiveKitty.d.ts +16 -0
- package/dist/material/decks/blackhive/ExplosiveKitty.js +19 -0
- package/dist/material/decks/blackhive/GromIronspike.d.ts +13 -0
- package/dist/material/decks/blackhive/GromIronspike.js +18 -0
- package/dist/material/decks/blackhive/GuntarRustypike.d.ts +20 -0
- package/dist/material/decks/blackhive/GuntarRustypike.js +28 -0
- package/dist/material/decks/blackhive/HiveMother.d.ts +13 -0
- package/dist/material/decks/blackhive/HiveMother.js +18 -0
- package/dist/material/decks/blackhive/LotharBlackclaw.d.ts +13 -0
- package/dist/material/decks/blackhive/LotharBlackclaw.js +22 -0
- package/dist/material/decks/blackhive/LotharBlackclawEffectRule.d.ts +4 -0
- package/dist/material/decks/blackhive/LotharBlackclawEffectRule.js +20 -0
- package/dist/material/decks/blackhive/OlgaStonecrusher.d.ts +13 -0
- package/dist/material/decks/blackhive/OlgaStonecrusher.js +15 -0
- package/dist/material/decks/blackhive/ShadowDealer.d.ts +15 -0
- package/dist/material/decks/blackhive/ShadowDealer.js +22 -0
- package/dist/material/decks/blackhive/UndergroundScourge.d.ts +13 -0
- package/dist/material/decks/blackhive/UndergroundScourge.js +15 -0
- package/dist/material/decks/gravehurt/CavernSkulker.d.ts +4 -1
- package/dist/material/decks/gravehurt/CavernSkulker.js +18 -5
- package/dist/material/decks/gravehurt/Doom.d.ts +5 -1
- package/dist/material/decks/gravehurt/Doom.js +16 -2
- package/dist/material/decks/gravehurt/Nosferatis.d.ts +2 -2
- package/dist/material/decks/gravehurt/Nosferatis.js +2 -2
- package/dist/material/decks/gravehurt/TheGreatToady.d.ts +2 -2
- package/dist/material/decks/gravehurt/TheGreatToady.js +2 -2
- package/dist/material/decks/heathblade/Armada.js +1 -1
- package/dist/material/decks/highwave/EyeOfSky.d.ts +1 -1
- package/dist/material/decks/highwave/EyeOfSky.js +2 -2
- package/dist/rules/EffectRule.js +1 -1
- package/dist/rules/EndPlayerTurnRule.js +3 -0
- package/dist/rules/MulliganEffectRule.d.ts +2 -1
- package/dist/rules/MulliganEffectRule.js +15 -4
- package/dist/rules/PlayCardRule.d.ts +0 -1
- package/dist/rules/PlayCardRule.js +1 -4
- package/dist/rules/PlayerHelper.d.ts +1 -0
- package/dist/rules/PlayerHelper.js +6 -1
- package/dist/rules/RuleId.d.ts +3 -1
- package/dist/rules/RuleId.js +3 -1
- package/dist/rules/SimultaneousEffectRule.d.ts +5 -0
- package/dist/rules/SimultaneousEffectRule.js +14 -0
- package/dist/rules/StartPlayerTurnRule.js +4 -1
- package/package.json +2 -2
package/dist/CustomMoveType.d.ts
CHANGED
package/dist/CustomMoveType.js
CHANGED
|
@@ -7,4 +7,5 @@ export var CustomMoveType;
|
|
|
7
7
|
CustomMoveType[CustomMoveType["Pass"] = 5] = "Pass";
|
|
8
8
|
CustomMoveType[CustomMoveType["Challenge"] = 6] = "Challenge";
|
|
9
9
|
CustomMoveType[CustomMoveType["ActivateCard"] = 7] = "ActivateCard";
|
|
10
|
+
CustomMoveType[CustomMoveType["ChooseSuit"] = 8] = "ChooseSuit";
|
|
10
11
|
})(CustomMoveType || (CustomMoveType = {}));
|
package/dist/Deck.d.ts
CHANGED
package/dist/Deck.js
CHANGED
package/dist/Memory.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export declare enum Memory {
|
|
2
2
|
CrystalsToWin = 1,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
CurrentPlayer = 2,
|
|
4
|
+
CardsPlayed = 3,
|
|
5
|
+
Suit = 4,
|
|
6
|
+
PendingEffects = 5,
|
|
7
|
+
OngoingEffects = 6,
|
|
8
|
+
ActivatedCards = 7,
|
|
9
|
+
ChallengeConceded = 8,
|
|
10
|
+
EffectCount = 9,
|
|
11
|
+
EffectTargets = 10,
|
|
12
|
+
NextRoundStartPlayer = 11
|
|
12
13
|
}
|
package/dist/Memory.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
export var Memory;
|
|
2
2
|
(function (Memory) {
|
|
3
3
|
Memory[Memory["CrystalsToWin"] = 1] = "CrystalsToWin";
|
|
4
|
-
Memory[Memory["
|
|
5
|
-
Memory[Memory["
|
|
6
|
-
Memory[Memory["
|
|
7
|
-
Memory[Memory["
|
|
8
|
-
Memory[Memory["
|
|
9
|
-
Memory[Memory["
|
|
10
|
-
Memory[Memory["
|
|
11
|
-
Memory[Memory["
|
|
12
|
-
Memory[Memory["
|
|
4
|
+
Memory[Memory["CurrentPlayer"] = 2] = "CurrentPlayer";
|
|
5
|
+
Memory[Memory["CardsPlayed"] = 3] = "CardsPlayed";
|
|
6
|
+
Memory[Memory["Suit"] = 4] = "Suit";
|
|
7
|
+
Memory[Memory["PendingEffects"] = 5] = "PendingEffects";
|
|
8
|
+
Memory[Memory["OngoingEffects"] = 6] = "OngoingEffects";
|
|
9
|
+
Memory[Memory["ActivatedCards"] = 7] = "ActivatedCards";
|
|
10
|
+
Memory[Memory["ChallengeConceded"] = 8] = "ChallengeConceded";
|
|
11
|
+
Memory[Memory["EffectCount"] = 9] = "EffectCount";
|
|
12
|
+
Memory[Memory["EffectTargets"] = 10] = "EffectTargets";
|
|
13
|
+
Memory[Memory["NextRoundStartPlayer"] = 11] = "NextRoundStartPlayer";
|
|
13
14
|
})(Memory || (Memory = {}));
|
package/dist/SkyriftRules.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ import { CustomMove, ItemMove, MaterialGame, MaterialMove, MaterialMoveRandomize
|
|
|
2
2
|
import { Deck } from './Deck';
|
|
3
3
|
import { CavernSkulkerEffectRule } from './material/decks/gravehurt/CavernSkulkerEffectRule';
|
|
4
4
|
import { DoomEffectRule } from './material/decks/gravehurt/DoomEffectRule';
|
|
5
|
-
import { ArmadaEffectRule } from './material/decks/heathblade/ArmadaEffectRule';
|
|
6
5
|
import { PrincessLithaEffectRule } from './material/decks/heathblade/PrincessLithaEffectRule';
|
|
7
6
|
import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingPartyEffectRule';
|
|
8
7
|
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
8
|
+
import { CaveInEffectRule } from './material/decks/blackhive/CaveInEffectRule';
|
|
9
|
+
import { CycleKeeperEffectRule } from './material/decks/blackhive/CycleKeeperEffectRule';
|
|
9
10
|
import { AbiSnakeCharmerEffectRule } from './material/decks/windsands/AbiSnakeCharmerEffectRule';
|
|
10
11
|
import { WindWrathEffectRule } from './material/decks/windsands/WindWrathEffectRule';
|
|
11
12
|
import { LocationType } from './material/LocationType';
|
|
@@ -27,6 +28,7 @@ import { StartPlayerTurnRule } from './rules/StartPlayerTurnRule';
|
|
|
27
28
|
import { StartRoundRule } from './rules/StartRoundRule';
|
|
28
29
|
import { StashPowerTokensEffectRule } from './rules/StashPowerTokensEffectRule';
|
|
29
30
|
import { StealCrystalEffectRule } from './rules/StealCrystalEffectRule';
|
|
31
|
+
import { MulliganEffectRule } from './rules/MulliganEffectRule';
|
|
30
32
|
import { StunEffectRule } from './rules/StunEffectRule';
|
|
31
33
|
export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType, LocationType> implements TimeLimit<MaterialGame<Deck, MaterialType, LocationType>, MaterialMove<Deck, MaterialType, LocationType>, Deck> {
|
|
32
34
|
rules: {
|
|
@@ -49,11 +51,13 @@ export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType
|
|
|
49
51
|
30: typeof StealCrystalEffectRule;
|
|
50
52
|
204: typeof AbiSnakeCharmerEffectRule;
|
|
51
53
|
31: typeof PlayCardEffectRule;
|
|
52
|
-
|
|
54
|
+
32: typeof MulliganEffectRule;
|
|
53
55
|
103: typeof PrincessLithaEffectRule;
|
|
54
56
|
215: typeof WindWrathEffectRule;
|
|
55
57
|
302: typeof CavernSkulkerEffectRule;
|
|
56
58
|
315: typeof DoomEffectRule;
|
|
59
|
+
409: typeof CycleKeeperEffectRule;
|
|
60
|
+
413: typeof CaveInEffectRule;
|
|
57
61
|
603: typeof EyeOfSkyEffectRule;
|
|
58
62
|
614: typeof BoardingPartyEffectRule;
|
|
59
63
|
};
|
package/dist/SkyriftRules.js
CHANGED
|
@@ -3,10 +3,11 @@ import { CustomMoveType } from './CustomMoveType';
|
|
|
3
3
|
import { createCardRule } from './material/createCardRule';
|
|
4
4
|
import { CavernSkulkerEffectRule } from './material/decks/gravehurt/CavernSkulkerEffectRule';
|
|
5
5
|
import { DoomEffectRule } from './material/decks/gravehurt/DoomEffectRule';
|
|
6
|
-
import { ArmadaEffectRule } from './material/decks/heathblade/ArmadaEffectRule';
|
|
7
6
|
import { PrincessLithaEffectRule } from './material/decks/heathblade/PrincessLithaEffectRule';
|
|
8
7
|
import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingPartyEffectRule';
|
|
9
8
|
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
9
|
+
import { CaveInEffectRule } from './material/decks/blackhive/CaveInEffectRule';
|
|
10
|
+
import { CycleKeeperEffectRule } from './material/decks/blackhive/CycleKeeperEffectRule';
|
|
10
11
|
import { AbiSnakeCharmerEffectRule } from './material/decks/windsands/AbiSnakeCharmerEffectRule';
|
|
11
12
|
import { WindWrathEffectRule } from './material/decks/windsands/WindWrathEffectRule';
|
|
12
13
|
import { LocationType } from './material/LocationType';
|
|
@@ -30,6 +31,7 @@ import { StartPlayerTurnRule } from './rules/StartPlayerTurnRule';
|
|
|
30
31
|
import { StartRoundRule } from './rules/StartRoundRule';
|
|
31
32
|
import { StashPowerTokensEffectRule } from './rules/StashPowerTokensEffectRule';
|
|
32
33
|
import { StealCrystalEffectRule } from './rules/StealCrystalEffectRule';
|
|
34
|
+
import { MulliganEffectRule } from './rules/MulliganEffectRule';
|
|
33
35
|
import { StunEffectRule } from './rules/StunEffectRule';
|
|
34
36
|
export class SkyriftRules extends SecretMaterialRules {
|
|
35
37
|
rules = {
|
|
@@ -52,11 +54,13 @@ export class SkyriftRules extends SecretMaterialRules {
|
|
|
52
54
|
[RuleId.StealCrystalEffect]: StealCrystalEffectRule,
|
|
53
55
|
[RuleId.AbiSnakeCharmerEffect]: AbiSnakeCharmerEffectRule,
|
|
54
56
|
[RuleId.PlayCardEffect]: PlayCardEffectRule,
|
|
55
|
-
[RuleId.
|
|
57
|
+
[RuleId.MulliganEffect]: MulliganEffectRule,
|
|
56
58
|
[RuleId.PrincessLithaEffect]: PrincessLithaEffectRule,
|
|
57
59
|
[RuleId.WindWrathEffect]: WindWrathEffectRule,
|
|
58
60
|
[RuleId.CavernSkulkerEffect]: CavernSkulkerEffectRule,
|
|
59
61
|
[RuleId.DoomEffect]: DoomEffectRule,
|
|
62
|
+
[RuleId.CycleKeeperEffect]: CycleKeeperEffectRule,
|
|
63
|
+
[RuleId.CaveInEffect]: CaveInEffectRule,
|
|
60
64
|
[RuleId.EyeOfSkyEffect]: EyeOfSkyEffectRule,
|
|
61
65
|
[RuleId.BoardingPartyEffect]: BoardingPartyEffectRule
|
|
62
66
|
};
|
package/dist/SkyriftSetup.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { listingToList, MaterialGameSetup } from '@gamepark/rules-api';
|
|
2
2
|
import { shuffle } from 'es-toolkit';
|
|
3
3
|
import { Deck } from './Deck';
|
|
4
|
+
import { BlackHive } from './material/decks/BlackHive';
|
|
4
5
|
import { GraveHurt } from './material/decks/GraveHurt';
|
|
5
6
|
import { HearthBlade } from './material/decks/HearthBlade';
|
|
6
7
|
import { HighWave } from './material/decks/HighWave';
|
|
@@ -14,6 +15,7 @@ const deckConfigurations = {
|
|
|
14
15
|
[Deck.HearthBlade]: HearthBlade,
|
|
15
16
|
[Deck.WindSands]: WindSands,
|
|
16
17
|
[Deck.GraveHurt]: GraveHurt,
|
|
18
|
+
[Deck.BlackHive]: BlackHive,
|
|
17
19
|
[Deck.HighWave]: HighWave
|
|
18
20
|
};
|
|
19
21
|
export class SkyriftSetup extends MaterialGameSetup {
|
package/dist/material/Card.d.ts
CHANGED
|
@@ -48,6 +48,22 @@ export declare enum Card {
|
|
|
48
48
|
WitchingHour = 314,
|
|
49
49
|
Doom = 315,
|
|
50
50
|
AstralHammer = 316,
|
|
51
|
+
UndergroundScourge = 401,
|
|
52
|
+
ShadowDealer = 402,
|
|
53
|
+
DariusAstraSmith = 403,
|
|
54
|
+
GuntarRustypike = 404,
|
|
55
|
+
DarkSwarm = 405,
|
|
56
|
+
HiveMother = 406,
|
|
57
|
+
GromIronspike = 407,
|
|
58
|
+
OlgaStonecrusher = 408,
|
|
59
|
+
CycleKeeper = 409,
|
|
60
|
+
LotharBlackclaw = 410,
|
|
61
|
+
ElevatorOfTheAbyss = 411,
|
|
62
|
+
CrystalMining = 412,
|
|
63
|
+
CaveIn = 413,
|
|
64
|
+
CrystalShaft = 414,
|
|
65
|
+
ExplosiveKitty = 415,
|
|
66
|
+
CarefulExcavation = 416,
|
|
51
67
|
SeaScorcher = 601,
|
|
52
68
|
AeliaSteadyHand = 602,
|
|
53
69
|
EyeOfSky = 603,
|
package/dist/material/Card.js
CHANGED
|
@@ -48,6 +48,22 @@ export var Card;
|
|
|
48
48
|
Card[Card["WitchingHour"] = 314] = "WitchingHour";
|
|
49
49
|
Card[Card["Doom"] = 315] = "Doom";
|
|
50
50
|
Card[Card["AstralHammer"] = 316] = "AstralHammer";
|
|
51
|
+
Card[Card["UndergroundScourge"] = 401] = "UndergroundScourge";
|
|
52
|
+
Card[Card["ShadowDealer"] = 402] = "ShadowDealer";
|
|
53
|
+
Card[Card["DariusAstraSmith"] = 403] = "DariusAstraSmith";
|
|
54
|
+
Card[Card["GuntarRustypike"] = 404] = "GuntarRustypike";
|
|
55
|
+
Card[Card["DarkSwarm"] = 405] = "DarkSwarm";
|
|
56
|
+
Card[Card["HiveMother"] = 406] = "HiveMother";
|
|
57
|
+
Card[Card["GromIronspike"] = 407] = "GromIronspike";
|
|
58
|
+
Card[Card["OlgaStonecrusher"] = 408] = "OlgaStonecrusher";
|
|
59
|
+
Card[Card["CycleKeeper"] = 409] = "CycleKeeper";
|
|
60
|
+
Card[Card["LotharBlackclaw"] = 410] = "LotharBlackclaw";
|
|
61
|
+
Card[Card["ElevatorOfTheAbyss"] = 411] = "ElevatorOfTheAbyss";
|
|
62
|
+
Card[Card["CrystalMining"] = 412] = "CrystalMining";
|
|
63
|
+
Card[Card["CaveIn"] = 413] = "CaveIn";
|
|
64
|
+
Card[Card["CrystalShaft"] = 414] = "CrystalShaft";
|
|
65
|
+
Card[Card["ExplosiveKitty"] = 415] = "ExplosiveKitty";
|
|
66
|
+
Card[Card["CarefulExcavation"] = 416] = "CarefulExcavation";
|
|
51
67
|
Card[Card["SeaScorcher"] = 601] = "SeaScorcher";
|
|
52
68
|
Card[Card["AeliaSteadyHand"] = 602] = "AeliaSteadyHand";
|
|
53
69
|
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 { UndergroundScourge } from './decks/blackhive/UndergroundScourge';
|
|
67
|
+
import { ShadowDealer } from './decks/blackhive/ShadowDealer';
|
|
68
|
+
import { DariusAstraSmith } from './decks/blackhive/DariusAstraSmith';
|
|
69
|
+
import { GuntarRustypike } from './decks/blackhive/GuntarRustypike';
|
|
70
|
+
import { DarkSwarm } from './decks/blackhive/DarkSwarm';
|
|
71
|
+
import { HiveMother } from './decks/blackhive/HiveMother';
|
|
72
|
+
import { GromIronspike } from './decks/blackhive/GromIronspike';
|
|
73
|
+
import { OlgaStonecrusher } from './decks/blackhive/OlgaStonecrusher';
|
|
74
|
+
import { CycleKeeper } from './decks/blackhive/CycleKeeper';
|
|
75
|
+
import { LotharBlackclaw } from './decks/blackhive/LotharBlackclaw';
|
|
76
|
+
import { ElevatorOfTheAbyss } from './decks/blackhive/ElevatorOfTheAbyss';
|
|
77
|
+
import { CrystalMining } from './decks/blackhive/CrystalMining';
|
|
78
|
+
import { CaveIn } from './decks/blackhive/CaveIn';
|
|
79
|
+
import { CrystalShaft } from './decks/blackhive/CrystalShaft';
|
|
80
|
+
import { ExplosiveKitty } from './decks/blackhive/ExplosiveKitty';
|
|
81
|
+
import { CarefulExcavation } from './decks/blackhive/CarefulExcavation';
|
|
66
82
|
export const cardProperties = {
|
|
67
83
|
[Card.HedgeKnight]: HedgeKnight,
|
|
68
84
|
[Card.LoyalSquire]: LoyalSquire,
|
|
@@ -112,6 +128,22 @@ export const cardProperties = {
|
|
|
112
128
|
[Card.WitchingHour]: WitchingHour,
|
|
113
129
|
[Card.Doom]: Doom,
|
|
114
130
|
[Card.AstralHammer]: AstralHammer,
|
|
131
|
+
[Card.UndergroundScourge]: UndergroundScourge,
|
|
132
|
+
[Card.ShadowDealer]: ShadowDealer,
|
|
133
|
+
[Card.DariusAstraSmith]: DariusAstraSmith,
|
|
134
|
+
[Card.GuntarRustypike]: GuntarRustypike,
|
|
135
|
+
[Card.DarkSwarm]: DarkSwarm,
|
|
136
|
+
[Card.HiveMother]: HiveMother,
|
|
137
|
+
[Card.GromIronspike]: GromIronspike,
|
|
138
|
+
[Card.OlgaStonecrusher]: OlgaStonecrusher,
|
|
139
|
+
[Card.CycleKeeper]: CycleKeeper,
|
|
140
|
+
[Card.LotharBlackclaw]: LotharBlackclaw,
|
|
141
|
+
[Card.ElevatorOfTheAbyss]: ElevatorOfTheAbyss,
|
|
142
|
+
[Card.CrystalMining]: CrystalMining,
|
|
143
|
+
[Card.CaveIn]: CaveIn,
|
|
144
|
+
[Card.CrystalShaft]: CrystalShaft,
|
|
145
|
+
[Card.ExplosiveKitty]: ExplosiveKitty,
|
|
146
|
+
[Card.CarefulExcavation]: CarefulExcavation,
|
|
115
147
|
[Card.SeaScorcher]: SeaScorcher,
|
|
116
148
|
[Card.AeliaSteadyHand]: AeliaSteadyHand,
|
|
117
149
|
[Card.EyeOfSky]: EyeOfSky,
|
|
@@ -28,13 +28,14 @@ export declare class CardRule extends MaterialRulesPart {
|
|
|
28
28
|
isStunned(): boolean;
|
|
29
29
|
getPower(): number;
|
|
30
30
|
getPowerIfNotStunned(): number;
|
|
31
|
+
getFoePowerModifier(): number;
|
|
31
32
|
addPendingEffect(ruleId: number): void;
|
|
32
33
|
addOngoingEffect(type: OngoingEffectType): void;
|
|
33
34
|
removeOngoingEffect(type: OngoingEffectType): void;
|
|
34
35
|
get player(): number;
|
|
35
36
|
get foe(): number;
|
|
36
37
|
startEffect(effect: Effect): MaterialMove[];
|
|
37
|
-
|
|
38
|
+
getEffectPlayers(_effect: Effect): number[];
|
|
38
39
|
canBePlayed(): boolean;
|
|
39
40
|
canSuitBePlayed(): boolean;
|
|
40
41
|
ongoingEffectPreventsPlayCard(): boolean;
|
|
@@ -67,6 +67,9 @@ export class CardRule extends MaterialRulesPart {
|
|
|
67
67
|
const powerTokensCount = this.material(MaterialType.PowerToken).location(LocationType.CardPowerTokens).parent(this.index).getQuantity();
|
|
68
68
|
return basePower + powerTokensCount;
|
|
69
69
|
}
|
|
70
|
+
getFoePowerModifier() {
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
70
73
|
addPendingEffect(ruleId) {
|
|
71
74
|
this.memorize(Memory.PendingEffects, (effects) => [...effects, { cardIndex: this.index, ruleId }]);
|
|
72
75
|
}
|
|
@@ -83,10 +86,14 @@ export class CardRule extends MaterialRulesPart {
|
|
|
83
86
|
return this.game.players.find((p) => p !== this.player);
|
|
84
87
|
}
|
|
85
88
|
startEffect(effect) {
|
|
86
|
-
|
|
89
|
+
const players = this.getEffectPlayers(effect);
|
|
90
|
+
if (players.length > 1) {
|
|
91
|
+
return [this.startSimultaneousRule(effect.ruleId, players)];
|
|
92
|
+
}
|
|
93
|
+
return [this.startPlayerTurn(effect.ruleId, players[0])];
|
|
87
94
|
}
|
|
88
|
-
|
|
89
|
-
return this.player;
|
|
95
|
+
getEffectPlayers(_effect) {
|
|
96
|
+
return [this.player];
|
|
90
97
|
}
|
|
91
98
|
canBePlayed() {
|
|
92
99
|
return this.canSuitBePlayed() && !this.ongoingEffectPreventsPlayCard();
|
|
@@ -2,4 +2,6 @@ export var OngoingEffectType;
|
|
|
2
2
|
(function (OngoingEffectType) {
|
|
3
3
|
OngoingEffectType[OngoingEffectType["PreventPlayCard"] = 1] = "PreventPlayCard";
|
|
4
4
|
OngoingEffectType[OngoingEffectType["PreventEffects"] = 2] = "PreventEffects";
|
|
5
|
+
OngoingEffectType[OngoingEffectType["LockSuit"] = 3] = "LockSuit";
|
|
6
|
+
OngoingEffectType[OngoingEffectType["PassTurn"] = 4] = "PassTurn";
|
|
5
7
|
})(OngoingEffectType || (OngoingEffectType = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const BlackHive: {
|
|
2
|
+
401: number;
|
|
3
|
+
402: number;
|
|
4
|
+
403: number;
|
|
5
|
+
404: number;
|
|
6
|
+
405: number;
|
|
7
|
+
406: number;
|
|
8
|
+
407: number;
|
|
9
|
+
408: number;
|
|
10
|
+
409: number;
|
|
11
|
+
410: number;
|
|
12
|
+
411: number;
|
|
13
|
+
412: number;
|
|
14
|
+
413: number;
|
|
15
|
+
414: number;
|
|
16
|
+
415: number;
|
|
17
|
+
416: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Card } from '../Card';
|
|
2
|
+
export const BlackHive = {
|
|
3
|
+
[Card.UndergroundScourge]: 2,
|
|
4
|
+
[Card.ShadowDealer]: 2,
|
|
5
|
+
[Card.DariusAstraSmith]: 1,
|
|
6
|
+
[Card.GuntarRustypike]: 1,
|
|
7
|
+
[Card.DarkSwarm]: 2,
|
|
8
|
+
[Card.HiveMother]: 2,
|
|
9
|
+
[Card.GromIronspike]: 1,
|
|
10
|
+
[Card.OlgaStonecrusher]: 1,
|
|
11
|
+
[Card.CycleKeeper]: 2,
|
|
12
|
+
[Card.LotharBlackclaw]: 1,
|
|
13
|
+
[Card.ElevatorOfTheAbyss]: 2,
|
|
14
|
+
[Card.CrystalMining]: 1,
|
|
15
|
+
[Card.CaveIn]: 2,
|
|
16
|
+
[Card.CrystalShaft]: 1,
|
|
17
|
+
[Card.ExplosiveKitty]: 2,
|
|
18
|
+
[Card.CarefulExcavation]: 1
|
|
19
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Material } from '@gamepark/rules-api';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
import { DestroyEffect, DrawEffect } from '../../EffectTraits';
|
|
6
|
+
declare class CarefulExcavationRule extends CardRule implements DrawEffect, DestroyEffect {
|
|
7
|
+
onEnters(): void;
|
|
8
|
+
getDrawCount(): number;
|
|
9
|
+
getFoePowerModifier(): number;
|
|
10
|
+
onFoeTurnStart(): void;
|
|
11
|
+
getDestroyTargets(): Material;
|
|
12
|
+
isAutoDestroy(): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const CarefulExcavation: {
|
|
15
|
+
power: number;
|
|
16
|
+
type: CardType;
|
|
17
|
+
suit: CardSuit;
|
|
18
|
+
rule: typeof CarefulExcavationRule;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
import { MaterialType } from '../../MaterialType';
|
|
6
|
+
class CarefulExcavationRule extends CardRule {
|
|
7
|
+
onEnters() {
|
|
8
|
+
this.addPendingEffect(RuleId.DrawEffect);
|
|
9
|
+
}
|
|
10
|
+
getDrawCount() {
|
|
11
|
+
return 2;
|
|
12
|
+
}
|
|
13
|
+
getFoePowerModifier() {
|
|
14
|
+
return 4;
|
|
15
|
+
}
|
|
16
|
+
onFoeTurnStart() {
|
|
17
|
+
this.addPendingEffect(RuleId.DestroyEffect);
|
|
18
|
+
}
|
|
19
|
+
getDestroyTargets() {
|
|
20
|
+
return this.material(MaterialType.Card).index(this.index);
|
|
21
|
+
}
|
|
22
|
+
isAutoDestroy() {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export const CarefulExcavation = {
|
|
27
|
+
power: 0,
|
|
28
|
+
type: CardType.Action,
|
|
29
|
+
suit: CardSuit.Twilight,
|
|
30
|
+
rule: CarefulExcavationRule
|
|
31
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class CaveInRule extends CardRule {
|
|
5
|
+
onEnters(): void;
|
|
6
|
+
getEffectPlayers(): number[];
|
|
7
|
+
}
|
|
8
|
+
export declare const CaveIn: {
|
|
9
|
+
power: number;
|
|
10
|
+
type: CardType;
|
|
11
|
+
suit: CardSuit;
|
|
12
|
+
rule: typeof CaveInRule;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
5
|
+
class CaveInRule extends CardRule {
|
|
6
|
+
onEnters() {
|
|
7
|
+
this.addPendingEffect(RuleId.CaveInEffect);
|
|
8
|
+
}
|
|
9
|
+
getEffectPlayers() {
|
|
10
|
+
return [this.player, this.foe];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const CaveIn = {
|
|
14
|
+
power: 1,
|
|
15
|
+
type: CardType.Action,
|
|
16
|
+
suit: CardSuit.Night,
|
|
17
|
+
rule: CaveInRule
|
|
18
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ItemMove, MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { Deck } from '../../../Deck';
|
|
3
|
+
import { SimultaneousEffectRule } from '../../../rules/SimultaneousEffectRule';
|
|
4
|
+
export declare class CaveInEffectRule extends SimultaneousEffectRule {
|
|
5
|
+
onRuleStart(): MaterialMove[];
|
|
6
|
+
getTargets(player: Deck): import("@gamepark/rules-api").Material<number, number, number>;
|
|
7
|
+
getActivePlayerLegalMoves(player: Deck): MaterialMove[];
|
|
8
|
+
beforeItemMove(move: ItemMove): import("@gamepark/rules-api").EndPlayerTurn<Deck>[];
|
|
9
|
+
getMovesAfterPlayersDone(): MaterialMove[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { isMoveItemType } from '@gamepark/rules-api';
|
|
2
|
+
import { Memory } from '../../../Memory';
|
|
3
|
+
import { SimultaneousEffectRule } from '../../../rules/SimultaneousEffectRule';
|
|
4
|
+
import { cardProperties } from '../../CardProperties';
|
|
5
|
+
import { CardType } from '../../CardType';
|
|
6
|
+
import { createCardRule } from '../../createCardRule';
|
|
7
|
+
import { LocationType } from '../../LocationType';
|
|
8
|
+
import { MaterialType } from '../../MaterialType';
|
|
9
|
+
export class CaveInEffectRule extends SimultaneousEffectRule {
|
|
10
|
+
onRuleStart() {
|
|
11
|
+
const moves = [];
|
|
12
|
+
for (const player of this.game.players) {
|
|
13
|
+
const targets = this.material(MaterialType.Card)
|
|
14
|
+
.location(LocationType.PlayArea)
|
|
15
|
+
.player(player)
|
|
16
|
+
.id((id) => cardProperties[id.front].type === CardType.Creature)
|
|
17
|
+
.index((index) => createCardRule(this.game, index).getPower() <= 3)
|
|
18
|
+
.getIndexes();
|
|
19
|
+
if (!targets.length) {
|
|
20
|
+
moves.push(this.endPlayerTurn(player));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.memorize(Memory.EffectTargets, targets, player);
|
|
24
|
+
this.memorize(Memory.EffectCount, Math.min(2, targets.length), player);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return moves;
|
|
28
|
+
}
|
|
29
|
+
getTargets(player) {
|
|
30
|
+
const indexes = this.remind(Memory.EffectTargets, player);
|
|
31
|
+
return this.material(MaterialType.Card).index((index) => indexes.includes(index));
|
|
32
|
+
}
|
|
33
|
+
getActivePlayerLegalMoves(player) {
|
|
34
|
+
return this.getTargets(player).moveItems((item) => ({
|
|
35
|
+
type: LocationType.PlayerDiscard,
|
|
36
|
+
player: item.id.back
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
beforeItemMove(move) {
|
|
40
|
+
if (isMoveItemType(MaterialType.Card)(move) && move.location.type === LocationType.PlayerDiscard) {
|
|
41
|
+
const player = this.material(MaterialType.Card).getItem(move.itemIndex).location.player;
|
|
42
|
+
this.memorize(Memory.EffectTargets, (targets) => targets.filter((i) => i !== move.itemIndex), player);
|
|
43
|
+
const remaining = this.memorize(Memory.EffectCount, (c) => c - 1, player);
|
|
44
|
+
if (remaining <= 0 || !this.getTargets(player).length) {
|
|
45
|
+
return [this.endPlayerTurn(player)];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
getMovesAfterPlayersDone() {
|
|
51
|
+
this.forget(Memory.EffectTargets);
|
|
52
|
+
this.forget(Memory.EffectCount);
|
|
53
|
+
return super.getMovesAfterPlayersDone();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { DrawEffect } from '../../EffectTraits';
|
|
5
|
+
declare class CrystalMiningRule extends CardRule implements DrawEffect {
|
|
6
|
+
onEnters(): void;
|
|
7
|
+
getDrawCount(): 1 | 2;
|
|
8
|
+
}
|
|
9
|
+
export declare const CrystalMining: {
|
|
10
|
+
power: number;
|
|
11
|
+
type: CardType;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof CrystalMiningRule;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
import { LocationType } from '../../LocationType';
|
|
6
|
+
import { MaterialType } from '../../MaterialType';
|
|
7
|
+
class CrystalMiningRule extends CardRule {
|
|
8
|
+
onEnters() {
|
|
9
|
+
this.addPendingEffect(RuleId.DrawEffect);
|
|
10
|
+
}
|
|
11
|
+
getDrawCount() {
|
|
12
|
+
const myHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.player).length;
|
|
13
|
+
const foeHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.foe).length;
|
|
14
|
+
return myHand + 1 < foeHand ? 2 : 1;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export const CrystalMining = {
|
|
18
|
+
power: 3,
|
|
19
|
+
type: CardType.Action,
|
|
20
|
+
suit: CardSuit.Day,
|
|
21
|
+
rule: CrystalMiningRule
|
|
22
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { LocationType } from '../../LocationType';
|
|
2
|
+
import { MaterialType } from '../../MaterialType';
|
|
3
|
+
import { DrawEffectRule } from '../../../rules/DrawEffectRule';
|
|
4
|
+
export class CrystalMiningBonusEffectRule extends DrawEffectRule {
|
|
5
|
+
get drawCount() {
|
|
6
|
+
const myHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.player).length;
|
|
7
|
+
const foeHand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(this.nextPlayer).length;
|
|
8
|
+
return myHand < foeHand ? 1 : 0;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { DrawEffect } from '../../EffectTraits';
|
|
5
|
+
declare class CrystalShaftRule extends CardRule implements DrawEffect {
|
|
6
|
+
onSkirmishWin(): void;
|
|
7
|
+
getDrawCount(): number;
|
|
8
|
+
}
|
|
9
|
+
export declare const CrystalShaft: {
|
|
10
|
+
power: number;
|
|
11
|
+
type: CardType;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof CrystalShaftRule;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
class CrystalShaftRule extends CardRule {
|
|
6
|
+
onSkirmishWin() {
|
|
7
|
+
this.addPendingEffect(RuleId.DrawEffect);
|
|
8
|
+
}
|
|
9
|
+
getDrawCount() {
|
|
10
|
+
return 3;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const CrystalShaft = {
|
|
14
|
+
power: 4,
|
|
15
|
+
type: CardType.Action,
|
|
16
|
+
suit: CardSuit.Night,
|
|
17
|
+
rule: CrystalShaftRule
|
|
18
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class CycleKeeperRule extends CardRule {
|
|
5
|
+
onEnters(): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const CycleKeeper: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof CycleKeeperRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
class CycleKeeperRule extends CardRule {
|
|
6
|
+
onEnters() {
|
|
7
|
+
this.addPendingEffect(RuleId.CycleKeeperEffect);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const CycleKeeper = {
|
|
11
|
+
power: 1,
|
|
12
|
+
type: CardType.Creature,
|
|
13
|
+
suit: CardSuit.Twilight,
|
|
14
|
+
rule: CycleKeeperRule
|
|
15
|
+
};
|