@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.
Files changed (164) hide show
  1. package/dist/CustomMoveType.d.ts +3 -1
  2. package/dist/CustomMoveType.js +2 -0
  3. package/dist/Deck.d.ts +2 -0
  4. package/dist/Deck.js +2 -0
  5. package/dist/Memory.d.ts +10 -9
  6. package/dist/Memory.js +10 -9
  7. package/dist/SkyriftRules.d.ts +20 -8
  8. package/dist/SkyriftRules.js +16 -4
  9. package/dist/SkyriftSetup.js +4 -0
  10. package/dist/material/Card.d.ts +32 -0
  11. package/dist/material/Card.js +32 -0
  12. package/dist/material/CardProperties.js +64 -0
  13. package/dist/material/CardRule.d.ts +9 -4
  14. package/dist/material/CardRule.js +70 -22
  15. package/dist/material/Effect.d.ts +2 -0
  16. package/dist/material/EffectTraits.d.ts +7 -2
  17. package/dist/material/OngoingEffect.d.ts +11 -2
  18. package/dist/material/OngoingEffect.js +7 -1
  19. package/dist/material/decks/BlackHive.d.ts +18 -0
  20. package/dist/material/decks/BlackHive.js +19 -0
  21. package/dist/material/decks/MoonDragon.d.ts +18 -0
  22. package/dist/material/decks/MoonDragon.js +19 -0
  23. package/dist/material/decks/blackhive/CarefulExcavation.d.ts +21 -0
  24. package/dist/material/decks/blackhive/CarefulExcavation.js +31 -0
  25. package/dist/material/decks/blackhive/CaveIn.d.ts +14 -0
  26. package/dist/material/decks/blackhive/CaveIn.js +18 -0
  27. package/dist/material/decks/blackhive/CaveInEffectRule.d.ts +10 -0
  28. package/dist/material/decks/blackhive/CaveInEffectRule.js +55 -0
  29. package/dist/material/decks/blackhive/CrystalMining.d.ts +15 -0
  30. package/dist/material/decks/blackhive/CrystalMining.js +22 -0
  31. package/dist/material/decks/blackhive/CrystalMiningBonusEffectRule.d.ts +4 -0
  32. package/dist/material/decks/blackhive/CrystalMiningBonusEffectRule.js +10 -0
  33. package/dist/material/decks/blackhive/CrystalShaft.d.ts +15 -0
  34. package/dist/material/decks/blackhive/CrystalShaft.js +18 -0
  35. package/dist/material/decks/blackhive/CycleKeeper.d.ts +13 -0
  36. package/dist/material/decks/blackhive/CycleKeeper.js +15 -0
  37. package/dist/material/decks/blackhive/CycleKeeperEffectRule.d.ts +8 -0
  38. package/dist/material/decks/blackhive/CycleKeeperEffectRule.js +21 -0
  39. package/dist/material/decks/blackhive/DariusAstraSmith.d.ts +13 -0
  40. package/dist/material/decks/blackhive/DariusAstraSmith.js +15 -0
  41. package/dist/material/decks/blackhive/DarkSwarm.d.ts +13 -0
  42. package/dist/material/decks/blackhive/DarkSwarm.js +15 -0
  43. package/dist/material/decks/blackhive/DarkSwarmEffectRule.d.ts +6 -0
  44. package/dist/material/decks/blackhive/DarkSwarmEffectRule.js +18 -0
  45. package/dist/material/decks/blackhive/ElevatorOfTheAbyss.d.ts +15 -0
  46. package/dist/material/decks/blackhive/ElevatorOfTheAbyss.js +19 -0
  47. package/dist/material/decks/blackhive/ExplosiveKitty.d.ts +16 -0
  48. package/dist/material/decks/blackhive/ExplosiveKitty.js +19 -0
  49. package/dist/material/decks/blackhive/GromIronspike.d.ts +13 -0
  50. package/dist/material/decks/blackhive/GromIronspike.js +18 -0
  51. package/dist/material/decks/blackhive/GuntarRustypike.d.ts +20 -0
  52. package/dist/material/decks/blackhive/GuntarRustypike.js +28 -0
  53. package/dist/material/decks/blackhive/HiveMother.d.ts +13 -0
  54. package/dist/material/decks/blackhive/HiveMother.js +18 -0
  55. package/dist/material/decks/blackhive/LotharBlackclaw.d.ts +13 -0
  56. package/dist/material/decks/blackhive/LotharBlackclaw.js +22 -0
  57. package/dist/material/decks/blackhive/LotharBlackclawEffectRule.d.ts +4 -0
  58. package/dist/material/decks/blackhive/LotharBlackclawEffectRule.js +20 -0
  59. package/dist/material/decks/blackhive/OlgaStonecrusher.d.ts +13 -0
  60. package/dist/material/decks/blackhive/OlgaStonecrusher.js +15 -0
  61. package/dist/material/decks/blackhive/ShadowDealer.d.ts +15 -0
  62. package/dist/material/decks/blackhive/ShadowDealer.js +22 -0
  63. package/dist/material/decks/blackhive/UndergroundScourge.d.ts +13 -0
  64. package/dist/material/decks/blackhive/UndergroundScourge.js +15 -0
  65. package/dist/material/decks/gravehurt/CavernSkulker.d.ts +4 -1
  66. package/dist/material/decks/gravehurt/CavernSkulker.js +18 -5
  67. package/dist/material/decks/gravehurt/CavernSkulkerEffectRule.js +1 -1
  68. package/dist/material/decks/gravehurt/Doom.d.ts +5 -1
  69. package/dist/material/decks/gravehurt/Doom.js +16 -2
  70. package/dist/material/decks/gravehurt/Nosferatis.d.ts +2 -2
  71. package/dist/material/decks/gravehurt/Nosferatis.js +2 -2
  72. package/dist/material/decks/gravehurt/TheGreatToady.d.ts +2 -2
  73. package/dist/material/decks/gravehurt/TheGreatToady.js +2 -2
  74. package/dist/material/decks/gravehurt/Umbraboros.d.ts +1 -1
  75. package/dist/material/decks/gravehurt/Umbraboros.js +4 -3
  76. package/dist/material/decks/gravehurt/WitchingHour.d.ts +3 -3
  77. package/dist/material/decks/gravehurt/WitchingHour.js +3 -3
  78. package/dist/material/decks/heathblade/Armada.js +1 -1
  79. package/dist/material/decks/heathblade/HedgeKnight.d.ts +1 -1
  80. package/dist/material/decks/heathblade/HedgeKnight.js +3 -4
  81. package/dist/material/decks/heathblade/PrincessLithaEffectRule.d.ts +2 -1
  82. package/dist/material/decks/highwave/EyeOfSky.d.ts +1 -1
  83. package/dist/material/decks/highwave/EyeOfSky.js +2 -2
  84. package/dist/material/decks/moondragon/AkiraClearink.d.ts +13 -0
  85. package/dist/material/decks/moondragon/AkiraClearink.js +15 -0
  86. package/dist/material/decks/moondragon/AzureDragonsPeace.d.ts +13 -0
  87. package/dist/material/decks/moondragon/AzureDragonsPeace.js +18 -0
  88. package/dist/material/decks/moondragon/AzureDragonsPeaceEffectRule.d.ts +10 -0
  89. package/dist/material/decks/moondragon/AzureDragonsPeaceEffectRule.js +49 -0
  90. package/dist/material/decks/moondragon/CopyPlayEffectRule.d.ts +6 -0
  91. package/dist/material/decks/moondragon/CopyPlayEffectRule.js +33 -0
  92. package/dist/material/decks/moondragon/DartYusagi.d.ts +14 -0
  93. package/dist/material/decks/moondragon/DartYusagi.js +26 -0
  94. package/dist/material/decks/moondragon/DuelOfHonor.d.ts +19 -0
  95. package/dist/material/decks/moondragon/DuelOfHonor.js +35 -0
  96. package/dist/material/decks/moondragon/Embush.d.ts +17 -0
  97. package/dist/material/decks/moondragon/Embush.js +26 -0
  98. package/dist/material/decks/moondragon/EmbushEffectRule.d.ts +7 -0
  99. package/dist/material/decks/moondragon/EmbushEffectRule.js +26 -0
  100. package/dist/material/decks/moondragon/EmpressSama.d.ts +13 -0
  101. package/dist/material/decks/moondragon/EmpressSama.js +15 -0
  102. package/dist/material/decks/moondragon/EmpressSamaEffectRule.d.ts +7 -0
  103. package/dist/material/decks/moondragon/EmpressSamaEffectRule.js +29 -0
  104. package/dist/material/decks/moondragon/GardenProtector.d.ts +15 -0
  105. package/dist/material/decks/moondragon/GardenProtector.js +18 -0
  106. package/dist/material/decks/moondragon/ImperialBlade.d.ts +16 -0
  107. package/dist/material/decks/moondragon/ImperialBlade.js +19 -0
  108. package/dist/material/decks/moondragon/LotusMuse.d.ts +17 -0
  109. package/dist/material/decks/moondragon/LotusMuse.js +34 -0
  110. package/dist/material/decks/moondragon/LotusMuseEffectRule.d.ts +6 -0
  111. package/dist/material/decks/moondragon/LotusMuseEffectRule.js +24 -0
  112. package/dist/material/decks/moondragon/PortalOfTheAncestors.d.ts +16 -0
  113. package/dist/material/decks/moondragon/PortalOfTheAncestors.js +21 -0
  114. package/dist/material/decks/moondragon/RiteOfTastes.d.ts +15 -0
  115. package/dist/material/decks/moondragon/RiteOfTastes.js +18 -0
  116. package/dist/material/decks/moondragon/RoosterDance.d.ts +16 -0
  117. package/dist/material/decks/moondragon/RoosterDance.js +19 -0
  118. package/dist/material/decks/moondragon/ShardsAlchimist.d.ts +16 -0
  119. package/dist/material/decks/moondragon/ShardsAlchimist.js +22 -0
  120. package/dist/material/decks/moondragon/SpiritOracle.d.ts +16 -0
  121. package/dist/material/decks/moondragon/SpiritOracle.js +27 -0
  122. package/dist/material/decks/moondragon/SteppesColossus.d.ts +13 -0
  123. package/dist/material/decks/moondragon/SteppesColossus.js +15 -0
  124. package/dist/material/decks/moondragon/YoruNightink.d.ts +13 -0
  125. package/dist/material/decks/moondragon/YoruNightink.js +18 -0
  126. package/dist/material/decks/windsands/AbiSnakeCharmer.d.ts +4 -1
  127. package/dist/material/decks/windsands/AbiSnakeCharmer.js +14 -1
  128. package/dist/material/decks/windsands/DeathTrap.d.ts +2 -0
  129. package/dist/material/decks/windsands/DeathTrap.js +4 -0
  130. package/dist/material/decks/windsands/MalikShadowtracker.d.ts +3 -3
  131. package/dist/material/decks/windsands/MalikShadowtracker.js +4 -4
  132. package/dist/material/decks/windsands/OasisShaman.d.ts +3 -1
  133. package/dist/material/decks/windsands/OasisShaman.js +3 -0
  134. package/dist/rules/ChallengeEffectRule.d.ts +2 -1
  135. package/dist/rules/ChallengeResponseRule.d.ts +2 -1
  136. package/dist/rules/DiscardEffectRule.js +1 -1
  137. package/dist/rules/DrawEffectRule.js +1 -1
  138. package/dist/rules/EffectRule.js +7 -1
  139. package/dist/rules/EffectsHelper.d.ts +6 -0
  140. package/dist/rules/EffectsHelper.js +15 -0
  141. package/dist/rules/EndPlayerTurnRule.d.ts +2 -1
  142. package/dist/rules/EndPlayerTurnRule.js +3 -0
  143. package/dist/rules/EndRoundRule.d.ts +1 -1
  144. package/dist/rules/GainCrystalEffectRule.js +1 -1
  145. package/dist/rules/MulliganEffectRule.d.ts +2 -1
  146. package/dist/rules/MulliganEffectRule.js +15 -4
  147. package/dist/rules/PlayCardEffectRule.d.ts +1 -0
  148. package/dist/rules/PlayCardEffectRule.js +9 -2
  149. package/dist/rules/PlayCardRule.d.ts +0 -1
  150. package/dist/rules/PlayCardRule.js +1 -4
  151. package/dist/rules/PlayerHelper.d.ts +2 -1
  152. package/dist/rules/PlayerHelper.js +24 -17
  153. package/dist/rules/PrepareNextRoundRule.d.ts +5 -1
  154. package/dist/rules/PrepareNextRoundRule.js +4 -2
  155. package/dist/rules/RuleId.d.ts +8 -2
  156. package/dist/rules/RuleId.js +8 -2
  157. package/dist/rules/SimultaneousEffectRule.d.ts +5 -0
  158. package/dist/rules/SimultaneousEffectRule.js +14 -0
  159. package/dist/rules/StartPlayerTurnRule.js +20 -2
  160. package/dist/rules/StashPowerTokensEffectRule.js +1 -1
  161. package/dist/rules/StealCrystalEffectRule.js +2 -2
  162. package/dist/rules/SwitchSideEffectRule.d.ts +3 -5
  163. package/dist/rules/SwitchSideEffectRule.js +2 -6
  164. package/package.json +3 -3
@@ -1,5 +1,11 @@
1
1
  export var OngoingEffectType;
2
2
  (function (OngoingEffectType) {
3
- OngoingEffectType[OngoingEffectType["PreventPlayCard"] = 1] = "PreventPlayCard";
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,4 @@
1
+ import { DrawEffectRule } from '../../../rules/DrawEffectRule';
2
+ export declare class CrystalMiningBonusEffectRule extends DrawEffectRule {
3
+ get drawCount(): 1 | 0;
4
+ }
@@ -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,6 @@
1
+ import { MaterialMove } from '@gamepark/rules-api';
2
+ import { EffectRule } from '../../../rules/EffectRule';
3
+ export declare class DarkSwarmEffectRule extends EffectRule {
4
+ onRuleStart(): MaterialMove[];
5
+ onEndEffect(): MaterialMove[];
6
+ }
@@ -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
+ };