@gamepark/skyrift 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/dist/Deck.d.ts +2 -1
  2. package/dist/Deck.js +2 -1
  3. package/dist/Memory.d.ts +1 -1
  4. package/dist/Memory.js +1 -1
  5. package/dist/SkyriftRules.d.ts +32 -63
  6. package/dist/SkyriftRules.js +40 -71
  7. package/dist/SkyriftSetup.js +4 -2
  8. package/dist/material/Card.d.ts +16 -0
  9. package/dist/material/Card.js +16 -0
  10. package/dist/material/CardProperties.js +48 -16
  11. package/dist/material/CardRule.d.ts +24 -20
  12. package/dist/material/CardRule.js +48 -65
  13. package/dist/material/CardTag.d.ts +2 -1
  14. package/dist/material/CardTag.js +2 -1
  15. package/dist/material/Effect.d.ts +1 -1
  16. package/dist/material/EffectTraits.d.ts +51 -0
  17. package/dist/material/EffectTraits.js +1 -0
  18. package/dist/material/LocationType.d.ts +3 -1
  19. package/dist/material/LocationType.js +2 -0
  20. package/dist/material/MaterialType.d.ts +2 -1
  21. package/dist/material/MaterialType.js +1 -0
  22. package/dist/material/OngoingEffect.d.ts +2 -2
  23. package/dist/material/OngoingEffect.js +2 -2
  24. package/dist/material/SpecialTokenType.d.ts +3 -0
  25. package/dist/material/SpecialTokenType.js +4 -0
  26. package/dist/material/createCardRule.d.ts +3 -0
  27. package/dist/material/createCardRule.js +7 -0
  28. package/dist/material/decks/GraveHurt.d.ts +18 -0
  29. package/dist/material/decks/GraveHurt.js +19 -0
  30. package/dist/material/decks/WindSands.d.ts +18 -0
  31. package/dist/material/decks/WindSands.js +19 -0
  32. package/dist/material/decks/gravehurt/AstralHammer.d.ts +18 -0
  33. package/dist/material/decks/gravehurt/AstralHammer.js +25 -0
  34. package/dist/material/decks/gravehurt/AstralHammerEffectRule.d.ts +4 -0
  35. package/dist/material/decks/gravehurt/AstralHammerEffectRule.js +26 -0
  36. package/dist/material/decks/gravehurt/CallOfTheEclipse.d.ts +17 -0
  37. package/dist/material/decks/gravehurt/CallOfTheEclipse.js +28 -0
  38. package/dist/material/decks/gravehurt/CallOfTheEclipseEffectRule.d.ts +5 -0
  39. package/dist/material/decks/gravehurt/CallOfTheEclipseEffectRule.js +11 -0
  40. package/dist/material/decks/gravehurt/CavernSkulker.d.ts +16 -0
  41. package/dist/material/decks/gravehurt/CavernSkulker.js +26 -0
  42. package/dist/material/decks/gravehurt/CavernSkulkerEffectRule.d.ts +4 -0
  43. package/dist/material/decks/gravehurt/CavernSkulkerEffectRule.js +15 -0
  44. package/dist/material/decks/gravehurt/Doom.d.ts +18 -0
  45. package/dist/material/decks/gravehurt/Doom.js +29 -0
  46. package/dist/material/decks/gravehurt/DoomEffectRule.d.ts +8 -0
  47. package/dist/material/decks/gravehurt/DoomEffectRule.js +32 -0
  48. package/dist/material/decks/gravehurt/InsatiableUmbraphage.d.ts +19 -0
  49. package/dist/material/decks/gravehurt/InsatiableUmbraphage.js +28 -0
  50. package/dist/material/decks/gravehurt/InsatiableUmbraphageEffectRule.d.ts +5 -0
  51. package/dist/material/decks/gravehurt/InsatiableUmbraphageEffectRule.js +21 -0
  52. package/dist/material/decks/gravehurt/MacabreLegion.d.ts +17 -0
  53. package/dist/material/decks/gravehurt/MacabreLegion.js +20 -0
  54. package/dist/material/decks/gravehurt/MoonFang.d.ts +17 -0
  55. package/dist/material/decks/gravehurt/MoonFang.js +20 -0
  56. package/dist/material/decks/gravehurt/Nosferatis.d.ts +20 -0
  57. package/dist/material/decks/gravehurt/Nosferatis.js +29 -0
  58. package/dist/material/decks/gravehurt/OstraVoiceOfTheSoul.d.ts +12 -0
  59. package/dist/material/decks/gravehurt/OstraVoiceOfTheSoul.js +11 -0
  60. package/dist/material/decks/gravehurt/ReturnInTime.d.ts +15 -0
  61. package/dist/material/decks/gravehurt/ReturnInTime.js +18 -0
  62. package/dist/material/decks/gravehurt/ScrabDoombird.d.ts +18 -0
  63. package/dist/material/decks/gravehurt/ScrabDoombird.js +21 -0
  64. package/dist/material/decks/gravehurt/TerrifyingSummoning.d.ts +18 -0
  65. package/dist/material/decks/gravehurt/TerrifyingSummoning.js +26 -0
  66. package/dist/material/decks/gravehurt/TerrifyingSummoningEffectRule.d.ts +5 -0
  67. package/dist/material/decks/gravehurt/TerrifyingSummoningEffectRule.js +11 -0
  68. package/dist/material/decks/gravehurt/TheGreatToady.d.ts +19 -0
  69. package/dist/material/decks/gravehurt/TheGreatToady.js +42 -0
  70. package/dist/material/decks/gravehurt/Umbraboros.d.ts +22 -0
  71. package/dist/material/decks/gravehurt/Umbraboros.js +30 -0
  72. package/dist/material/decks/gravehurt/UndeadRule.d.ts +5 -0
  73. package/dist/material/decks/gravehurt/UndeadRule.js +11 -0
  74. package/dist/material/decks/gravehurt/Whisperers.d.ts +13 -0
  75. package/dist/material/decks/gravehurt/Whisperers.js +17 -0
  76. package/dist/material/decks/gravehurt/WitchingHour.d.ts +16 -0
  77. package/dist/material/decks/gravehurt/WitchingHour.js +19 -0
  78. package/dist/material/decks/heathblade/ArcherRule.js +2 -2
  79. package/dist/material/decks/heathblade/Armada.d.ts +4 -3
  80. package/dist/material/decks/heathblade/Armada.js +5 -3
  81. package/dist/material/decks/heathblade/ArmadaEffectRule.d.ts +2 -1
  82. package/dist/material/decks/heathblade/ArmadaEffectRule.js +8 -1
  83. package/dist/material/decks/heathblade/Confluence.d.ts +2 -3
  84. package/dist/material/decks/heathblade/Confluence.js +5 -3
  85. package/dist/material/decks/heathblade/CoverOfNight.d.ts +4 -2
  86. package/dist/material/decks/heathblade/CoverOfNight.js +7 -1
  87. package/dist/material/decks/heathblade/Harvest.d.ts +4 -2
  88. package/dist/material/decks/heathblade/Harvest.js +7 -1
  89. package/dist/material/decks/heathblade/LoyalSquire.d.ts +6 -3
  90. package/dist/material/decks/heathblade/LoyalSquire.js +11 -4
  91. package/dist/material/decks/heathblade/Nightguard.js +3 -9
  92. package/dist/material/decks/heathblade/OzmaTheMage.d.ts +6 -4
  93. package/dist/material/decks/heathblade/OzmaTheMage.js +9 -3
  94. package/dist/material/decks/heathblade/PrincessLitha.d.ts +1 -2
  95. package/dist/material/decks/heathblade/PrincessLitha.js +4 -11
  96. package/dist/material/decks/heathblade/RobbinsMasterOfArms.d.ts +6 -2
  97. package/dist/material/decks/heathblade/RobbinsMasterOfArms.js +10 -1
  98. package/dist/material/decks/heathblade/Sacrifice.d.ts +7 -2
  99. package/dist/material/decks/heathblade/Sacrifice.js +19 -1
  100. package/dist/material/decks/heathblade/SoulBlade.d.ts +5 -2
  101. package/dist/material/decks/heathblade/SoulBlade.js +8 -1
  102. package/dist/material/decks/heathblade/WatchTower.d.ts +5 -3
  103. package/dist/material/decks/heathblade/WatchTower.js +10 -3
  104. package/dist/material/decks/highwave/AeliaSteadyHand.d.ts +1 -1
  105. package/dist/material/decks/highwave/AeliaSteadyHand.js +4 -1
  106. package/dist/material/decks/highwave/BoardingParty.d.ts +1 -1
  107. package/dist/material/decks/highwave/BoardingParty.js +4 -1
  108. package/dist/material/decks/highwave/BoardingPartyEffectRule.d.ts +4 -3
  109. package/dist/material/decks/highwave/BoardingPartyEffectRule.js +18 -23
  110. package/dist/material/decks/highwave/BonnyTheGunner.d.ts +0 -2
  111. package/dist/material/decks/highwave/BonnyTheGunner.js +0 -2
  112. package/dist/material/decks/highwave/CannonCardRule.d.ts +3 -0
  113. package/dist/material/decks/highwave/CannonCardRule.js +11 -10
  114. package/dist/material/decks/highwave/DarkArmageddon.d.ts +4 -2
  115. package/dist/material/decks/highwave/DarkArmageddon.js +7 -1
  116. package/dist/material/decks/highwave/DawnsDoom.d.ts +4 -2
  117. package/dist/material/decks/highwave/DawnsDoom.js +9 -1
  118. package/dist/material/decks/highwave/EyeOfSky.d.ts +2 -4
  119. package/dist/material/decks/highwave/EyeOfSky.js +5 -7
  120. package/dist/material/decks/highwave/EyeOfSkyEffectRule.d.ts +4 -4
  121. package/dist/material/decks/highwave/EyeOfSkyEffectRule.js +1 -3
  122. package/dist/material/decks/highwave/FortunesCourse.d.ts +1 -2
  123. package/dist/material/decks/highwave/FortunesCourse.js +3 -3
  124. package/dist/material/decks/highwave/GoldenApocalypse.d.ts +1 -1
  125. package/dist/material/decks/highwave/GoldenApocalypse.js +4 -1
  126. package/dist/material/decks/highwave/LongJawsSilver.d.ts +2 -3
  127. package/dist/material/decks/highwave/LongJawsSilver.js +7 -5
  128. package/dist/material/decks/highwave/OscarScullion.d.ts +4 -2
  129. package/dist/material/decks/highwave/OscarScullion.js +7 -1
  130. package/dist/material/decks/highwave/OttoFactotum.d.ts +4 -2
  131. package/dist/material/decks/highwave/OttoFactotum.js +10 -1
  132. package/dist/material/decks/highwave/RiggingRaiders.d.ts +5 -2
  133. package/dist/material/decks/highwave/RiggingRaiders.js +9 -1
  134. package/dist/material/decks/highwave/SeaScorcher.d.ts +6 -3
  135. package/dist/material/decks/highwave/SeaScorcher.js +13 -2
  136. package/dist/material/decks/highwave/SurpriseLoot.d.ts +4 -2
  137. package/dist/material/decks/highwave/SurpriseLoot.js +7 -1
  138. package/dist/material/decks/highwave/TideRover.d.ts +6 -2
  139. package/dist/material/decks/highwave/TideRover.js +15 -1
  140. package/dist/material/decks/highwave/TropicalRuffian.d.ts +1 -1
  141. package/dist/material/decks/highwave/TropicalRuffian.js +4 -1
  142. package/dist/material/decks/windsands/AbiSnakeCharmer.d.ts +13 -0
  143. package/dist/material/decks/windsands/AbiSnakeCharmer.js +15 -0
  144. package/dist/material/decks/windsands/AbiSnakeCharmerEffectRule.d.ts +8 -0
  145. package/dist/material/decks/windsands/AbiSnakeCharmerEffectRule.js +35 -0
  146. package/dist/material/decks/windsands/AncientCurse.d.ts +17 -0
  147. package/dist/material/decks/windsands/AncientCurse.js +25 -0
  148. package/dist/material/decks/windsands/Catadjinn.d.ts +14 -0
  149. package/dist/material/decks/windsands/Catadjinn.js +20 -0
  150. package/dist/material/decks/windsands/DeathTrap.d.ts +20 -0
  151. package/dist/material/decks/windsands/DeathTrap.js +38 -0
  152. package/dist/material/decks/windsands/DesertRaider.d.ts +17 -0
  153. package/dist/material/decks/windsands/DesertRaider.js +21 -0
  154. package/dist/material/decks/windsands/DuneWardrums.d.ts +12 -0
  155. package/dist/material/decks/windsands/DuneWardrums.js +14 -0
  156. package/dist/material/decks/windsands/ErgDeathslayer.d.ts +13 -0
  157. package/dist/material/decks/windsands/ErgDeathslayer.js +15 -0
  158. package/dist/material/decks/windsands/MalikShadowtracker.d.ts +18 -0
  159. package/dist/material/decks/windsands/MalikShadowtracker.js +24 -0
  160. package/dist/material/decks/windsands/Metamorph.d.ts +14 -0
  161. package/dist/material/decks/windsands/Metamorph.js +18 -0
  162. package/dist/material/decks/windsands/MushaFakir.d.ts +14 -0
  163. package/dist/material/decks/windsands/MushaFakir.js +18 -0
  164. package/dist/material/decks/windsands/OasisShaman.d.ts +13 -0
  165. package/dist/material/decks/windsands/OasisShaman.js +15 -0
  166. package/dist/material/decks/windsands/SandWalkers.d.ts +21 -0
  167. package/dist/material/decks/windsands/SandWalkers.js +30 -0
  168. package/dist/material/decks/windsands/StarlightBazaar.d.ts +15 -0
  169. package/dist/material/decks/windsands/StarlightBazaar.js +18 -0
  170. package/dist/material/decks/windsands/Vandals.d.ts +18 -0
  171. package/dist/material/decks/windsands/Vandals.js +25 -0
  172. package/dist/material/decks/windsands/WindWrath.d.ts +13 -0
  173. package/dist/material/decks/windsands/WindWrath.js +15 -0
  174. package/dist/material/decks/windsands/WindWrathEffectRule.d.ts +5 -0
  175. package/dist/material/decks/windsands/WindWrathEffectRule.js +17 -0
  176. package/dist/material/decks/windsands/WishLamp.d.ts +16 -0
  177. package/dist/material/decks/windsands/WishLamp.js +22 -0
  178. package/dist/rules/ChallengeEffectRule.d.ts +6 -0
  179. package/dist/rules/ChallengeEffectRule.js +17 -0
  180. package/dist/rules/ChallengeResponseRule.d.ts +8 -0
  181. package/dist/rules/ChallengeResponseRule.js +31 -0
  182. package/dist/rules/ChooseStartPlayerEffectRule.d.ts +6 -0
  183. package/dist/rules/ChooseStartPlayerEffectRule.js +15 -0
  184. package/dist/rules/DestroyEffectRule.d.ts +5 -2
  185. package/dist/rules/DestroyEffectRule.js +26 -3
  186. package/dist/rules/DiscardEffectRule.d.ts +5 -3
  187. package/dist/rules/DiscardEffectRule.js +17 -4
  188. package/dist/rules/DrawEffectRule.d.ts +4 -2
  189. package/dist/rules/DrawEffectRule.js +9 -6
  190. package/dist/rules/EffectRule.d.ts +3 -2
  191. package/dist/rules/EffectRule.js +9 -3
  192. package/dist/rules/EndRoundRule.js +11 -17
  193. package/dist/rules/GainPowerTokensEffectRule.d.ts +8 -0
  194. package/dist/rules/GainPowerTokensEffectRule.js +25 -0
  195. package/dist/rules/MulliganEffectRule.d.ts +7 -0
  196. package/dist/rules/MulliganEffectRule.js +19 -0
  197. package/dist/rules/PlayCardEffectRule.d.ts +9 -0
  198. package/dist/rules/PlayCardEffectRule.js +37 -0
  199. package/dist/rules/PlayCardRule.js +12 -12
  200. package/dist/rules/PlayerHelper.d.ts +9 -5
  201. package/dist/rules/PlayerHelper.js +25 -23
  202. package/dist/rules/PrepareNextRoundRule.js +6 -3
  203. package/dist/rules/PutCardUnderEffectRule.d.ts +7 -0
  204. package/dist/rules/PutCardUnderEffectRule.js +22 -0
  205. package/dist/rules/PutPowerTokenEffectRule.d.ts +4 -2
  206. package/dist/rules/PutPowerTokenEffectRule.js +24 -4
  207. package/dist/rules/ReturnCardEffectRule.d.ts +9 -0
  208. package/dist/rules/ReturnCardEffectRule.js +36 -0
  209. package/dist/rules/ReturnCardRule.d.ts +5 -3
  210. package/dist/rules/ReturnCardRule.js +18 -8
  211. package/dist/rules/RuleId.d.ts +15 -34
  212. package/dist/rules/RuleId.js +14 -33
  213. package/dist/rules/StartPlayerTurnRule.js +5 -5
  214. package/dist/rules/StashPowerTokensEffectRule.d.ts +5 -0
  215. package/dist/rules/StashPowerTokensEffectRule.js +15 -0
  216. package/dist/rules/StealCrystalEffectRule.js +3 -3
  217. package/dist/rules/StunCardRule.d.ts +4 -2
  218. package/dist/rules/StunCardRule.js +24 -19
  219. package/dist/rules/StunEffectRule.d.ts +11 -0
  220. package/dist/rules/StunEffectRule.js +45 -0
  221. package/dist/rules/SwitchSideEffectRule.d.ts +11 -0
  222. package/dist/rules/SwitchSideEffectRule.js +33 -0
  223. package/package.json +3 -3
@@ -0,0 +1,25 @@
1
+ import { Memory } from '../../../Memory';
2
+ import { RuleId } from '../../../rules/RuleId';
3
+ import { CardRule } from '../../CardRule';
4
+ import { CardSuit } from '../../CardSuit';
5
+ import { CardType } from '../../CardType';
6
+ class AncientCurseRule extends CardRule {
7
+ onEnters() {
8
+ this.addPendingEffect(RuleId.ChallengeEffect);
9
+ }
10
+ getDrawPlayer() {
11
+ return this.remind(Memory.ChallengeConceded) ?? this.player;
12
+ }
13
+ onChallengeAccepted() {
14
+ this.addPendingEffect(RuleId.DrawEffect);
15
+ }
16
+ onChallengeDeclined() {
17
+ this.addPendingEffect(RuleId.DrawEffect);
18
+ }
19
+ }
20
+ export const AncientCurse = {
21
+ power: 3,
22
+ type: CardType.Action,
23
+ suit: CardSuit.Night,
24
+ rule: AncientCurseRule
25
+ };
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class CatadjinnRule extends CardRule {
5
+ onEnters(): void;
6
+ getPowerIfNotStunned(): number;
7
+ }
8
+ export declare const Catadjinn: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof CatadjinnRule;
13
+ };
14
+ export {};
@@ -0,0 +1,20 @@
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 CatadjinnRule extends CardRule {
7
+ onEnters() {
8
+ this.addPendingEffect(RuleId.ChallengeEffect);
9
+ }
10
+ getPowerIfNotStunned() {
11
+ const nonNightCards = this.playArea.id((id) => cardProperties[id.front].suit !== CardSuit.Night);
12
+ return super.getPowerIfNotStunned() - nonNightCards.length;
13
+ }
14
+ }
15
+ export const Catadjinn = {
16
+ power: 6,
17
+ type: CardType.Creature,
18
+ suit: CardSuit.Night,
19
+ rule: CatadjinnRule
20
+ };
@@ -0,0 +1,20 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { Card } from '../../Card';
3
+ import { CardRule } from '../../CardRule';
4
+ import { CardSuit } from '../../CardSuit';
5
+ import { CardType } from '../../CardType';
6
+ import { DestroyEffect, PreventEffectsEffect } from '../../EffectTraits';
7
+ declare class DeathTrapRule extends CardRule implements DestroyEffect, PreventEffectsEffect {
8
+ onEnters(): void;
9
+ preventEnterEffects(cardIndex: number): boolean;
10
+ onCardEnters(card: Card): void;
11
+ getDestroyTargets(): Material;
12
+ isAutoDestroy(): boolean;
13
+ }
14
+ export declare const DeathTrap: {
15
+ power: number;
16
+ type: CardType;
17
+ suit: CardSuit;
18
+ rule: typeof DeathTrapRule;
19
+ };
20
+ export {};
@@ -0,0 +1,38 @@
1
+ import { Memory } from '../../../Memory';
2
+ import { RuleId } from '../../../rules/RuleId';
3
+ import { cardProperties } from '../../CardProperties';
4
+ import { CardRule } from '../../CardRule';
5
+ import { createCardRule } from '../../createCardRule';
6
+ import { CardSuit } from '../../CardSuit';
7
+ import { CardType } from '../../CardType';
8
+ import { MaterialType } from '../../MaterialType';
9
+ import { OngoingEffectType } from '../../OngoingEffect';
10
+ class DeathTrapRule extends CardRule {
11
+ onEnters() {
12
+ this.addOngoingEffect(OngoingEffectType.PreventEffects);
13
+ }
14
+ preventEnterEffects(cardIndex) {
15
+ return createCardRule(this.game, cardIndex).properties.type === CardType.Creature;
16
+ }
17
+ onCardEnters(card) {
18
+ if (cardProperties[card].type === CardType.Creature) {
19
+ this.removeOngoingEffect(OngoingEffectType.PreventEffects);
20
+ this.addPendingEffect(RuleId.DestroyEffect);
21
+ }
22
+ }
23
+ getDestroyTargets() {
24
+ const currentPlayer = this.remind(Memory.CurrentPlayer);
25
+ const cardsPlayed = this.remind(Memory.CardsPlayed, currentPlayer);
26
+ const targetIndex = cardsPlayed[cardsPlayed.length - 1];
27
+ return this.material(MaterialType.Card).index(targetIndex);
28
+ }
29
+ isAutoDestroy() {
30
+ return true;
31
+ }
32
+ }
33
+ export const DeathTrap = {
34
+ power: 2,
35
+ type: CardType.Action,
36
+ suit: CardSuit.Twilight,
37
+ rule: DeathTrapRule
38
+ };
@@ -0,0 +1,17 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ import { StunEffect } from '../../EffectTraits';
6
+ declare class DesertRaiderRule extends CardRule implements StunEffect {
7
+ onEnters(): void;
8
+ getStunTargets(): Material;
9
+ isAutoStun(): boolean;
10
+ }
11
+ export declare const DesertRaider: {
12
+ power: number;
13
+ type: CardType;
14
+ suit: CardSuit;
15
+ rule: typeof DesertRaiderRule;
16
+ };
17
+ export {};
@@ -0,0 +1,21 @@
1
+ import { RuleId } from '../../../rules/RuleId';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ class DesertRaiderRule extends CardRule {
6
+ onEnters() {
7
+ this.addPendingEffect(RuleId.StunEffect);
8
+ }
9
+ getStunTargets() {
10
+ return this.playArea.index(this.index);
11
+ }
12
+ isAutoStun() {
13
+ return true;
14
+ }
15
+ }
16
+ export const DesertRaider = {
17
+ power: 5,
18
+ type: CardType.Creature,
19
+ suit: CardSuit.Day,
20
+ rule: DesertRaiderRule
21
+ };
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ export declare class DuneWardrumsRule extends CardRule {
5
+ getPowerIfNotStunned(): number;
6
+ }
7
+ export declare const DuneWardrums: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof DuneWardrumsRule;
12
+ };
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ export class DuneWardrumsRule extends CardRule {
5
+ getPowerIfNotStunned() {
6
+ return super.getPowerIfNotStunned() + this.creatures.player(this.player).length;
7
+ }
8
+ }
9
+ export const DuneWardrums = {
10
+ power: 2,
11
+ type: CardType.Action,
12
+ suit: CardSuit.Day,
13
+ rule: DuneWardrumsRule
14
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class ErgDeathslayerRule extends CardRule {
5
+ canBePlayed(): boolean;
6
+ }
7
+ export declare const ErgDeathslayer: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof ErgDeathslayerRule;
12
+ };
13
+ export {};
@@ -0,0 +1,15 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class ErgDeathslayerRule extends CardRule {
5
+ canBePlayed() {
6
+ const hasOtherCardInPlay = this.playArea.player(this.player).length > 0;
7
+ return !hasOtherCardInPlay && super.canBePlayed();
8
+ }
9
+ }
10
+ export const ErgDeathslayer = {
11
+ power: 5,
12
+ type: CardType.Creature,
13
+ suit: CardSuit.Day,
14
+ rule: ErgDeathslayerRule
15
+ };
@@ -0,0 +1,18 @@
1
+ import { Deck } from '../../../Deck';
2
+ import { Card } from '../../Card';
3
+ import { CardRule } from '../../CardRule';
4
+ import { CardSuit } from '../../CardSuit';
5
+ import { CardType } from '../../CardType';
6
+ import { PreventPlayCardEffect } from '../../EffectTraits';
7
+ declare class MalikShadowtrackerRule extends CardRule implements PreventPlayCardEffect {
8
+ onEnters(): void;
9
+ preventPlayCard(card: Card, player: Deck): boolean;
10
+ onCardEnters(_card: Card, side: Deck): void;
11
+ }
12
+ export declare const MalikShadowtracker: {
13
+ power: number;
14
+ type: CardType;
15
+ suit: CardSuit;
16
+ rule: typeof MalikShadowtrackerRule;
17
+ };
18
+ export {};
@@ -0,0 +1,24 @@
1
+ import { cardProperties } from '../../CardProperties';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ import { OngoingEffectType } from '../../OngoingEffect';
6
+ class MalikShadowtrackerRule extends CardRule {
7
+ onEnters() {
8
+ this.addOngoingEffect(OngoingEffectType.PreventPlayCard);
9
+ }
10
+ preventPlayCard(card, player) {
11
+ return player !== this.player && cardProperties[card].suit !== CardSuit.Twilight;
12
+ }
13
+ onCardEnters(_card, side) {
14
+ if (side !== this.player) {
15
+ this.removeOngoingEffect(OngoingEffectType.PreventPlayCard);
16
+ }
17
+ }
18
+ }
19
+ export const MalikShadowtracker = {
20
+ power: 2,
21
+ type: CardType.Creature,
22
+ suit: CardSuit.Twilight,
23
+ rule: MalikShadowtrackerRule
24
+ };
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class MetamorphRule extends CardRule {
5
+ getPowerIfNotStunned(): number;
6
+ onSkirmishWin(): void;
7
+ }
8
+ export declare const Metamorph: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof MetamorphRule;
13
+ };
14
+ 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 MetamorphRule extends CardRule {
6
+ getPowerIfNotStunned() {
7
+ return super.getPowerIfNotStunned() + this.creatures.player(this.player).length - 1;
8
+ }
9
+ onSkirmishWin() {
10
+ this.addPendingEffect(RuleId.DrawEffect);
11
+ }
12
+ }
13
+ export const Metamorph = {
14
+ power: 1,
15
+ type: CardType.Creature,
16
+ suit: CardSuit.Day,
17
+ rule: MetamorphRule
18
+ };
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class MushaFakirRule extends CardRule {
5
+ onEnters(): void;
6
+ onSkirmishLost(): void;
7
+ }
8
+ export declare const MushaFakir: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof MushaFakirRule;
13
+ };
14
+ 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 MushaFakirRule extends CardRule {
6
+ onEnters() {
7
+ this.addPendingEffect(RuleId.DrawEffect);
8
+ }
9
+ onSkirmishLost() {
10
+ this.addPendingEffect(RuleId.DrawEffect);
11
+ }
12
+ }
13
+ export const MushaFakir = {
14
+ power: 2,
15
+ type: CardType.Creature,
16
+ suit: CardSuit.Night,
17
+ rule: MushaFakirRule
18
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class OasisShamanRule extends CardRule {
5
+ onEnters(): void;
6
+ }
7
+ export declare const OasisShaman: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof OasisShamanRule;
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 OasisShamanRule extends CardRule {
6
+ onEnters() {
7
+ this.addPendingEffect(RuleId.PlayCardEffect);
8
+ }
9
+ }
10
+ export const OasisShaman = {
11
+ power: 1,
12
+ type: CardType.Creature,
13
+ suit: CardSuit.Twilight,
14
+ rule: OasisShamanRule
15
+ };
@@ -0,0 +1,21 @@
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 { PutPowerTokenEffect, ReturnCardEffect } from '../../EffectTraits';
8
+ declare class SandWalkersRule extends CardRule implements ReturnCardEffect, PutPowerTokenEffect {
9
+ onEnters(): void;
10
+ getPutPowerTokenTargets(): Material;
11
+ isAutoPutPowerToken(): boolean;
12
+ onCardEnters(card: Card, side: Deck): void;
13
+ isAutoReturn(): boolean;
14
+ }
15
+ export declare const SandWalkers: {
16
+ power: number;
17
+ type: CardType;
18
+ suit: CardSuit;
19
+ rule: typeof SandWalkersRule;
20
+ };
21
+ export {};
@@ -0,0 +1,30 @@
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 SandWalkersRule extends CardRule {
7
+ onEnters() {
8
+ this.addPendingEffect(RuleId.PutPowerTokensEffect);
9
+ }
10
+ getPutPowerTokenTargets() {
11
+ return this.creatures.player(this.player);
12
+ }
13
+ isAutoPutPowerToken() {
14
+ return true;
15
+ }
16
+ onCardEnters(card, side) {
17
+ if (side === this.player && cardProperties[card].type === CardType.Creature) {
18
+ this.addPendingEffect(RuleId.ReturnCardEffect);
19
+ }
20
+ }
21
+ isAutoReturn() {
22
+ return true;
23
+ }
24
+ }
25
+ export const SandWalkers = {
26
+ power: 1,
27
+ type: CardType.Action,
28
+ suit: CardSuit.Day,
29
+ rule: SandWalkersRule
30
+ };
@@ -0,0 +1,15 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { DrawEffect } from '../../EffectTraits';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ declare class StarlightBazaarRule extends CardRule implements DrawEffect {
6
+ onEnters(): void;
7
+ getDrawCount(): number;
8
+ }
9
+ export declare const StarlightBazaar: {
10
+ power: number;
11
+ type: CardType;
12
+ suit: CardSuit;
13
+ rule: typeof StarlightBazaarRule;
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 StarlightBazaarRule extends CardRule {
6
+ onEnters() {
7
+ this.addPendingEffect(RuleId.DrawEffect);
8
+ }
9
+ getDrawCount() {
10
+ return 3;
11
+ }
12
+ }
13
+ export const StarlightBazaar = {
14
+ power: 1,
15
+ type: CardType.Action,
16
+ suit: CardSuit.Night,
17
+ rule: StarlightBazaarRule
18
+ };
@@ -0,0 +1,18 @@
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 VandalsRule extends CardRule implements DestroyEffect {
7
+ getPowerIfNotStunned(): number;
8
+ activate(): void;
9
+ getDestroyTargets(): Material;
10
+ isAutoDestroy(): boolean;
11
+ }
12
+ export declare const Vandals: {
13
+ power: number;
14
+ type: CardType;
15
+ suit: CardSuit;
16
+ rule: typeof VandalsRule;
17
+ };
18
+ export {};
@@ -0,0 +1,25 @@
1
+ import { RuleId } from '../../../rules/RuleId';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ class VandalsRule extends CardRule {
6
+ getPowerIfNotStunned() {
7
+ return super.getPowerIfNotStunned() + this.creatures.player(this.player).length - 1;
8
+ }
9
+ activate() {
10
+ this.addPendingEffect(RuleId.DestroyEffect);
11
+ this.addPendingEffect(RuleId.DrawEffect);
12
+ }
13
+ getDestroyTargets() {
14
+ return this.playArea.index(this.index);
15
+ }
16
+ isAutoDestroy() {
17
+ return true;
18
+ }
19
+ }
20
+ export const Vandals = {
21
+ power: 1,
22
+ type: CardType.Creature,
23
+ suit: CardSuit.Night,
24
+ rule: VandalsRule
25
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class WindWrathRule extends CardRule {
5
+ onEnters(): void;
6
+ }
7
+ export declare const WindWrath: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof WindWrathRule;
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 WindWrathRule extends CardRule {
6
+ onEnters() {
7
+ this.addPendingEffect(RuleId.WindWrathEffect);
8
+ }
9
+ }
10
+ export const WindWrath = {
11
+ power: 2,
12
+ type: CardType.Action,
13
+ suit: CardSuit.Twilight,
14
+ rule: WindWrathRule
15
+ };
@@ -0,0 +1,5 @@
1
+ import { MaterialMove } from '@gamepark/rules-api';
2
+ import { EffectRule } from '../../../rules/EffectRule';
3
+ export declare class WindWrathEffectRule extends EffectRule {
4
+ onRuleStart(): MaterialMove[];
5
+ }
@@ -0,0 +1,17 @@
1
+ import { CustomMoveType } from '../../../CustomMoveType';
2
+ import { LocationType } from '../../LocationType';
3
+ import { MaterialType } from '../../MaterialType';
4
+ import { EffectRule } from '../../../rules/EffectRule';
5
+ export class WindWrathEffectRule extends EffectRule {
6
+ onRuleStart() {
7
+ const moves = [];
8
+ for (const player of this.game.players) {
9
+ const hand = this.material(MaterialType.Card).location(LocationType.PlayerHand).player(player);
10
+ if (hand.length > 0) {
11
+ moves.push(hand.moveItemsAtOnce({ type: LocationType.PlayerDiscard, player }));
12
+ moves.push(this.customMove(CustomMoveType.Draw, { player, quantity: hand.length }));
13
+ }
14
+ }
15
+ return [...moves, ...this.endEffect()];
16
+ }
17
+ }
@@ -0,0 +1,16 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ import { StunEffect } from '../../EffectTraits';
5
+ declare class WishLampRule extends CardRule implements StunEffect {
6
+ onEnters(): void;
7
+ getStunCount(): number;
8
+ getStunTargetsCount(): number;
9
+ }
10
+ export declare const WishLamp: {
11
+ power: number;
12
+ type: CardType;
13
+ suit: CardSuit;
14
+ rule: typeof WishLampRule;
15
+ };
16
+ export {};
@@ -0,0 +1,22 @@
1
+ import { RuleId } from '../../../rules/RuleId';
2
+ import { Card } from '../../Card';
3
+ import { CardRule } from '../../CardRule';
4
+ import { CardSuit } from '../../CardSuit';
5
+ import { CardType } from '../../CardType';
6
+ class WishLampRule extends CardRule {
7
+ onEnters() {
8
+ this.addPendingEffect(RuleId.StunEffect);
9
+ }
10
+ getStunCount() {
11
+ return 2;
12
+ }
13
+ getStunTargetsCount() {
14
+ return 1 + this.playArea.player(this.player).id((id) => id.front === Card.Catadjinn).length;
15
+ }
16
+ }
17
+ export const WishLamp = {
18
+ power: 2,
19
+ type: CardType.Action,
20
+ suit: CardSuit.Night,
21
+ rule: WishLampRule
22
+ };
@@ -0,0 +1,6 @@
1
+ import { CustomMove } from '@gamepark/rules-api';
2
+ import { EffectRule } from './EffectRule';
3
+ export declare class ChallengeEffectRule extends EffectRule {
4
+ getPlayerMoves(): CustomMove[];
5
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").MaterialMove[];
6
+ }
@@ -0,0 +1,17 @@
1
+ import { CustomMoveType } from '../CustomMoveType';
2
+ import { EffectRule } from './EffectRule';
3
+ import { RuleId } from './RuleId';
4
+ export class ChallengeEffectRule extends EffectRule {
5
+ getPlayerMoves() {
6
+ return [this.customMove(CustomMoveType.Challenge), this.customMove(CustomMoveType.Pass)];
7
+ }
8
+ onCustomMove(move) {
9
+ if (move.type === CustomMoveType.Challenge) {
10
+ return [this.startPlayerTurn(RuleId.ChallengeResponse, this.nextPlayer)];
11
+ }
12
+ else if (move.type === CustomMoveType.Pass) {
13
+ return this.endEffect();
14
+ }
15
+ return super.onCustomMove(move);
16
+ }
17
+ }
@@ -0,0 +1,8 @@
1
+ import { CustomMove, ItemMove } from '@gamepark/rules-api';
2
+ import { ChallengeEffect } from '../material/EffectTraits';
3
+ import { EffectRule } from './EffectRule';
4
+ export declare class ChallengeResponseRule extends EffectRule<ChallengeEffect> {
5
+ getPlayerMoves(): (CustomMove | import("@gamepark/rules-api").CreateItem<number, number, number>)[];
6
+ afterItemMove(move: ItemMove): import("@gamepark/rules-api").MaterialMove[];
7
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").MaterialMove[];
8
+ }