@gamepark/skyrift 0.4.3 → 0.6.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 +3 -1
- package/dist/CustomMoveType.js +2 -0
- package/dist/Deck.d.ts +2 -0
- package/dist/Deck.js +2 -0
- package/dist/Memory.d.ts +10 -9
- package/dist/Memory.js +10 -9
- package/dist/SkyriftRules.d.ts +20 -8
- package/dist/SkyriftRules.js +16 -4
- package/dist/SkyriftSetup.js +4 -0
- package/dist/material/Card.d.ts +32 -0
- package/dist/material/Card.js +32 -0
- package/dist/material/CardProperties.js +64 -0
- package/dist/material/CardRule.d.ts +9 -4
- package/dist/material/CardRule.js +70 -22
- package/dist/material/Effect.d.ts +2 -0
- package/dist/material/EffectTraits.d.ts +7 -2
- package/dist/material/OngoingEffect.d.ts +11 -2
- package/dist/material/OngoingEffect.js +7 -1
- package/dist/material/decks/BlackHive.d.ts +18 -0
- package/dist/material/decks/BlackHive.js +19 -0
- 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 +21 -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 +8 -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/CavernSkulkerEffectRule.js +1 -1
- 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/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/Armada.js +1 -1
- 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/highwave/EyeOfSky.d.ts +1 -1
- package/dist/material/decks/highwave/EyeOfSky.js +2 -2
- 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 +7 -1
- 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/EndPlayerTurnRule.js +3 -0
- package/dist/rules/EndRoundRule.d.ts +1 -1
- package/dist/rules/GainCrystalEffectRule.js +1 -1
- package/dist/rules/MulliganEffectRule.d.ts +2 -1
- package/dist/rules/MulliganEffectRule.js +15 -4
- package/dist/rules/PlayCardEffectRule.d.ts +1 -0
- package/dist/rules/PlayCardEffectRule.js +9 -2
- package/dist/rules/PlayCardRule.d.ts +0 -1
- package/dist/rules/PlayCardRule.js +1 -4
- package/dist/rules/PlayerHelper.d.ts +2 -1
- package/dist/rules/PlayerHelper.js +24 -17
- package/dist/rules/PrepareNextRoundRule.d.ts +5 -1
- package/dist/rules/PrepareNextRoundRule.js +4 -2
- package/dist/rules/RuleId.d.ts +8 -2
- package/dist/rules/RuleId.js +8 -2
- package/dist/rules/SimultaneousEffectRule.d.ts +5 -0
- package/dist/rules/SimultaneousEffectRule.js +14 -0
- package/dist/rules/StartPlayerTurnRule.js +20 -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
|
@@ -1,5 +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
|
+
OngoingEffectType[OngoingEffectType["LockSuit"] = 3] = "LockSuit";
|
|
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";
|
|
5
11
|
})(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,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
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Material } from '@gamepark/rules-api';
|
|
2
|
+
import { Deck } from '../../../Deck';
|
|
3
|
+
import { CardRule } from '../../CardRule';
|
|
4
|
+
import { CardSuit } from '../../CardSuit';
|
|
5
|
+
import { CardType } from '../../CardType';
|
|
6
|
+
import { DestroyEffect, DrawEffect } from '../../EffectTraits';
|
|
7
|
+
declare class CarefulExcavationRule extends CardRule implements DrawEffect, DestroyEffect {
|
|
8
|
+
onEnters(): void;
|
|
9
|
+
getDrawCount(): number;
|
|
10
|
+
getPlayerPowerModifier(player: Deck): 4 | 0;
|
|
11
|
+
onFoeTurnStart(): void;
|
|
12
|
+
getDestroyTargets(): Material;
|
|
13
|
+
isAutoDestroy(): boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const CarefulExcavation: {
|
|
16
|
+
power: number;
|
|
17
|
+
type: CardType;
|
|
18
|
+
suit: CardSuit;
|
|
19
|
+
rule: typeof CarefulExcavationRule;
|
|
20
|
+
};
|
|
21
|
+
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
|
+
getPlayerPowerModifier(player) {
|
|
14
|
+
return player === this.foe ? 4 : 0;
|
|
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
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CustomMove } from '@gamepark/rules-api';
|
|
2
|
+
import { CustomMoveType } from '../../../CustomMoveType';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { EffectRule } from '../../../rules/EffectRule';
|
|
5
|
+
export declare class CycleKeeperEffectRule extends EffectRule {
|
|
6
|
+
getPlayerMoves(): CustomMove<CustomMoveType.ChooseSuit, CardSuit>[];
|
|
7
|
+
onCustomMove(move: CustomMove): import("@gamepark/rules-api").MaterialMove[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CustomMoveType } from '../../../CustomMoveType';
|
|
2
|
+
import { Memory } from '../../../Memory';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { OngoingEffectType } from '../../OngoingEffect';
|
|
5
|
+
import { EffectRule } from '../../../rules/EffectRule';
|
|
6
|
+
export class CycleKeeperEffectRule extends EffectRule {
|
|
7
|
+
getPlayerMoves() {
|
|
8
|
+
return [
|
|
9
|
+
this.customMove(CustomMoveType.ChooseSuit, CardSuit.Day),
|
|
10
|
+
this.customMove(CustomMoveType.ChooseSuit, CardSuit.Night)
|
|
11
|
+
];
|
|
12
|
+
}
|
|
13
|
+
onCustomMove(move) {
|
|
14
|
+
if (move.type === CustomMoveType.ChooseSuit) {
|
|
15
|
+
this.memorize(Memory.Suit, move.data);
|
|
16
|
+
this.cardRule.addOngoingEffect(OngoingEffectType.LockSuit);
|
|
17
|
+
return this.endEffect();
|
|
18
|
+
}
|
|
19
|
+
return super.onCustomMove(move);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class DariusAstraSmithRule extends CardRule {
|
|
5
|
+
onEnters(): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const DariusAstraSmith: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof DariusAstraSmithRule;
|
|
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 DariusAstraSmithRule extends CardRule {
|
|
6
|
+
onEnters() {
|
|
7
|
+
this.addPendingEffect(RuleId.MulliganEffect);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const DariusAstraSmith = {
|
|
11
|
+
power: 2,
|
|
12
|
+
type: CardType.Creature,
|
|
13
|
+
suit: CardSuit.Day,
|
|
14
|
+
rule: DariusAstraSmithRule
|
|
15
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class DarkSwarmRule extends CardRule {
|
|
5
|
+
onEnters(): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const DarkSwarm: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof DarkSwarmRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { OngoingEffectType } from '../../OngoingEffect';
|
|
5
|
+
class DarkSwarmRule extends CardRule {
|
|
6
|
+
onEnters() {
|
|
7
|
+
this.addOngoingEffect(OngoingEffectType.PassTurn);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const DarkSwarm = {
|
|
11
|
+
power: 1,
|
|
12
|
+
type: CardType.Creature,
|
|
13
|
+
suit: CardSuit.Night,
|
|
14
|
+
rule: DarkSwarmRule
|
|
15
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Memory } from '../../../Memory';
|
|
2
|
+
import { EffectRule } from '../../../rules/EffectRule';
|
|
3
|
+
import { PlayerHelper } from '../../../rules/PlayerHelper';
|
|
4
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
5
|
+
export class DarkSwarmEffectRule extends EffectRule {
|
|
6
|
+
onRuleStart() {
|
|
7
|
+
return this.endEffect();
|
|
8
|
+
}
|
|
9
|
+
onEndEffect() {
|
|
10
|
+
this.memorize(Memory.PendingEffects, (effects) => effects.slice(1));
|
|
11
|
+
const pendingEffects = this.remind(Memory.PendingEffects);
|
|
12
|
+
if (pendingEffects.length > 0) {
|
|
13
|
+
return new PlayerHelper(this.game, this.player).startEffect(pendingEffects[0]);
|
|
14
|
+
}
|
|
15
|
+
const currentPlayer = this.remind(Memory.CurrentPlayer);
|
|
16
|
+
return [this.startPlayerTurn(RuleId.EndPlayerTurn, currentPlayer)];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { ReturnCardEffect } from '../../EffectTraits';
|
|
5
|
+
declare class ElevatorOfTheAbyssRule extends CardRule implements ReturnCardEffect {
|
|
6
|
+
onEnters(): void;
|
|
7
|
+
getReturnTargets(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
8
|
+
}
|
|
9
|
+
export declare const ElevatorOfTheAbyss: {
|
|
10
|
+
power: number;
|
|
11
|
+
type: CardType;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof ElevatorOfTheAbyssRule;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
class ElevatorOfTheAbyssRule extends CardRule {
|
|
6
|
+
onEnters() {
|
|
7
|
+
this.addPendingEffect(RuleId.ReturnCardEffect);
|
|
8
|
+
this.addPendingEffect(RuleId.ChallengeEffect);
|
|
9
|
+
}
|
|
10
|
+
getReturnTargets() {
|
|
11
|
+
return this.creatures.player(this.player);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const ElevatorOfTheAbyss = {
|
|
15
|
+
power: 1,
|
|
16
|
+
type: CardType.Action,
|
|
17
|
+
suit: CardSuit.Day,
|
|
18
|
+
rule: ElevatorOfTheAbyssRule
|
|
19
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
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 } from '../../EffectTraits';
|
|
6
|
+
declare class ExplosiveKittyRule extends CardRule implements DestroyEffect {
|
|
7
|
+
onEnters(): void;
|
|
8
|
+
getDestroyTargets(): Material;
|
|
9
|
+
}
|
|
10
|
+
export declare const ExplosiveKitty: {
|
|
11
|
+
power: number;
|
|
12
|
+
type: CardType;
|
|
13
|
+
suit: CardSuit;
|
|
14
|
+
rule: typeof ExplosiveKittyRule;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { cardProperties } from '../../CardProperties';
|
|
3
|
+
import { CardRule } from '../../CardRule';
|
|
4
|
+
import { CardSuit } from '../../CardSuit';
|
|
5
|
+
import { CardType } from '../../CardType';
|
|
6
|
+
class ExplosiveKittyRule extends CardRule {
|
|
7
|
+
onEnters() {
|
|
8
|
+
this.addPendingEffect(RuleId.DestroyEffect);
|
|
9
|
+
}
|
|
10
|
+
getDestroyTargets() {
|
|
11
|
+
return this.playArea.id((id) => cardProperties[id.front].type === CardType.Action);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const ExplosiveKitty = {
|
|
15
|
+
power: 1,
|
|
16
|
+
type: CardType.Action,
|
|
17
|
+
suit: CardSuit.Twilight,
|
|
18
|
+
rule: ExplosiveKittyRule
|
|
19
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class GromIronspikeRule extends CardRule {
|
|
5
|
+
canBePlayed(): boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const GromIronspike: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof GromIronspikeRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { PlayerHelper } from '../../../rules/PlayerHelper';
|
|
5
|
+
class GromIronspikeRule extends CardRule {
|
|
6
|
+
canBePlayed() {
|
|
7
|
+
if (!super.canBePlayed())
|
|
8
|
+
return false;
|
|
9
|
+
const foePower = new PlayerHelper(this.game, this.foe).getPower();
|
|
10
|
+
return foePower >= 12;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export const GromIronspike = {
|
|
14
|
+
power: 7,
|
|
15
|
+
type: CardType.Creature,
|
|
16
|
+
suit: CardSuit.Night,
|
|
17
|
+
rule: GromIronspikeRule
|
|
18
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Material } from '@gamepark/rules-api';
|
|
2
|
+
import { Deck } from '../../../Deck';
|
|
3
|
+
import { Card } from '../../Card';
|
|
4
|
+
import { CardRule } from '../../CardRule';
|
|
5
|
+
import { CardSuit } from '../../CardSuit';
|
|
6
|
+
import { CardType } from '../../CardType';
|
|
7
|
+
import { DestroyEffect } from '../../EffectTraits';
|
|
8
|
+
declare class GuntarRustypikeRule extends CardRule implements DestroyEffect {
|
|
9
|
+
onEnters(): void;
|
|
10
|
+
onCardEnters(card: Card, side: Deck): void;
|
|
11
|
+
getDestroyTargets(): Material;
|
|
12
|
+
isAutoDestroy(): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const GuntarRustypike: {
|
|
15
|
+
power: number;
|
|
16
|
+
type: CardType;
|
|
17
|
+
suit: CardSuit;
|
|
18
|
+
rule: typeof GuntarRustypikeRule;
|
|
19
|
+
};
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { RuleId } from '../../../rules/RuleId';
|
|
2
|
+
import { cardProperties } from '../../CardProperties';
|
|
3
|
+
import { CardRule } from '../../CardRule';
|
|
4
|
+
import { CardSuit } from '../../CardSuit';
|
|
5
|
+
import { CardType } from '../../CardType';
|
|
6
|
+
import { MaterialType } from '../../MaterialType';
|
|
7
|
+
class GuntarRustypikeRule extends CardRule {
|
|
8
|
+
onEnters() {
|
|
9
|
+
this.addPendingEffect(RuleId.DrawEffect);
|
|
10
|
+
}
|
|
11
|
+
onCardEnters(card, side) {
|
|
12
|
+
if (side === this.foe && cardProperties[card].type === CardType.Action) {
|
|
13
|
+
this.addPendingEffect(RuleId.DestroyEffect);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
getDestroyTargets() {
|
|
17
|
+
return this.material(MaterialType.Card).index(this.index);
|
|
18
|
+
}
|
|
19
|
+
isAutoDestroy() {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export const GuntarRustypike = {
|
|
24
|
+
power: 5,
|
|
25
|
+
type: CardType.Creature,
|
|
26
|
+
suit: CardSuit.Day,
|
|
27
|
+
rule: GuntarRustypikeRule
|
|
28
|
+
};
|