@gamepark/skyrift 0.2.8 → 0.3.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 (121) hide show
  1. package/dist/Deck.d.ts +1 -0
  2. package/dist/Deck.js +1 -0
  3. package/dist/Memory.d.ts +2 -1
  4. package/dist/Memory.js +1 -0
  5. package/dist/SkyriftRules.d.ts +35 -14
  6. package/dist/SkyriftRules.js +42 -15
  7. package/dist/SkyriftSetup.js +3 -0
  8. package/dist/material/Card.d.ts +26 -10
  9. package/dist/material/Card.js +26 -10
  10. package/dist/material/CardProperties.js +52 -20
  11. package/dist/material/CardRule.d.ts +3 -2
  12. package/dist/material/CardRule.js +14 -0
  13. package/dist/material/OngoingEffect.d.ts +8 -0
  14. package/dist/material/OngoingEffect.js +5 -0
  15. package/dist/material/decks/HearthBlade.js +4 -4
  16. package/dist/material/decks/HighWave.js +10 -10
  17. package/dist/material/decks/WinSands.d.ts +18 -0
  18. package/dist/material/decks/WinSands.js +19 -0
  19. package/dist/material/decks/heathblade/Confluence.js +1 -1
  20. package/dist/material/decks/heathblade/Harvest.js +1 -1
  21. package/dist/material/decks/heathblade/OzmaTheMageEffectRule.js +1 -3
  22. package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.js +1 -3
  23. package/dist/material/decks/highwave/BonnyTheGunner.d.ts +14 -0
  24. package/dist/material/decks/highwave/BonnyTheGunner.js +13 -0
  25. package/dist/material/decks/highwave/CannonCardRule.js +5 -3
  26. package/dist/material/decks/highwave/DarkArmageddon.d.ts +15 -0
  27. package/dist/material/decks/highwave/DarkArmageddon.js +14 -0
  28. package/dist/material/decks/highwave/DarkArmageddonEffectRule.d.ts +4 -0
  29. package/dist/material/decks/highwave/DarkArmageddonEffectRule.js +4 -0
  30. package/dist/material/decks/highwave/EyeOfSky.d.ts +16 -0
  31. package/dist/material/decks/highwave/EyeOfSky.js +20 -0
  32. package/dist/material/decks/highwave/EyeOfSkyEffectRule.d.ts +7 -0
  33. package/dist/material/decks/highwave/EyeOfSkyEffectRule.js +21 -0
  34. package/dist/material/decks/highwave/FortunesCourse.d.ts +14 -0
  35. package/dist/material/decks/highwave/FortunesCourse.js +15 -0
  36. package/dist/material/decks/highwave/GoldenApocalypse.d.ts +15 -0
  37. package/dist/material/decks/highwave/GoldenApocalypse.js +14 -0
  38. package/dist/material/decks/highwave/OscarScullion.d.ts +13 -0
  39. package/dist/material/decks/highwave/OscarScullion.js +12 -0
  40. package/dist/material/decks/highwave/OscarScullionEffectRule.d.ts +5 -0
  41. package/dist/material/decks/highwave/OscarScullionEffectRule.js +12 -0
  42. package/dist/material/decks/highwave/OttoFactotum.d.ts +13 -0
  43. package/dist/material/decks/highwave/OttoFactotum.js +12 -0
  44. package/dist/material/decks/highwave/OttoFactotumEffectRule.d.ts +4 -0
  45. package/dist/material/decks/highwave/OttoFactotumEffectRule.js +9 -0
  46. package/dist/material/decks/highwave/RiggingRaiders.d.ts +13 -0
  47. package/dist/material/decks/highwave/RiggingRaiders.js +12 -0
  48. package/dist/material/decks/highwave/RiggingRaidersEffectRule.d.ts +5 -0
  49. package/dist/material/decks/highwave/RiggingRaidersEffectRule.js +17 -0
  50. package/dist/material/decks/highwave/SeaScorcher.d.ts +16 -0
  51. package/dist/material/decks/highwave/SeaScorcher.js +19 -0
  52. package/dist/material/decks/highwave/SeaScorcherEffectRule.d.ts +5 -0
  53. package/dist/material/decks/highwave/SeaScorcherEffectRule.js +13 -0
  54. package/dist/material/decks/highwave/TideRover.d.ts +13 -0
  55. package/dist/material/decks/highwave/TideRover.js +12 -0
  56. package/dist/material/decks/highwave/TideRoverEffectRule.d.ts +4 -0
  57. package/dist/material/decks/highwave/TideRoverEffectRule.js +26 -0
  58. package/dist/material/decks/highwave/TropicalRuffian.js +1 -1
  59. package/dist/material/decks/winsands/AbiSnakeCharmer.d.ts +13 -0
  60. package/dist/material/decks/winsands/AbiSnakeCharmer.js +12 -0
  61. package/dist/material/decks/winsands/AbiSnakeCharmerEffectRule.d.ts +7 -0
  62. package/dist/material/decks/winsands/AbiSnakeCharmerEffectRule.js +33 -0
  63. package/dist/material/decks/winsands/AncientCurse.d.ts +16 -0
  64. package/dist/material/decks/winsands/AncientCurse.js +23 -0
  65. package/dist/material/decks/winsands/Catadjinn.d.ts +14 -0
  66. package/dist/material/decks/winsands/Catadjinn.js +24 -0
  67. package/dist/material/decks/winsands/CreatureBonusCardRule.d.ts +4 -0
  68. package/dist/material/decks/winsands/CreatureBonusCardRule.js +14 -0
  69. package/dist/material/decks/winsands/DeathTrap.d.ts +14 -0
  70. package/dist/material/decks/winsands/DeathTrap.js +16 -0
  71. package/dist/material/decks/winsands/DeathTrapEffectRule.d.ts +4 -0
  72. package/dist/material/decks/winsands/DeathTrapEffectRule.js +18 -0
  73. package/dist/material/decks/winsands/DesertRaider.d.ts +13 -0
  74. package/dist/material/decks/winsands/DesertRaider.js +12 -0
  75. package/dist/material/decks/winsands/DesertRaiderEffectRule.d.ts +4 -0
  76. package/dist/material/decks/winsands/DesertRaiderEffectRule.js +17 -0
  77. package/dist/material/decks/winsands/DuneWardrums.d.ts +12 -0
  78. package/dist/material/decks/winsands/DuneWardrums.js +22 -0
  79. package/dist/material/decks/winsands/ErgDeathslayer.d.ts +13 -0
  80. package/dist/material/decks/winsands/ErgDeathslayer.js +19 -0
  81. package/dist/material/decks/winsands/MalikShadowtracker.d.ts +14 -0
  82. package/dist/material/decks/winsands/MalikShadowtracker.js +16 -0
  83. package/dist/material/decks/winsands/MalikShadowtrackerEffectRule.d.ts +4 -0
  84. package/dist/material/decks/winsands/MalikShadowtrackerEffectRule.js +13 -0
  85. package/dist/material/decks/winsands/Metamorph.d.ts +14 -0
  86. package/dist/material/decks/winsands/Metamorph.js +15 -0
  87. package/dist/material/decks/winsands/MushaFakir.d.ts +15 -0
  88. package/dist/material/decks/winsands/MushaFakir.js +16 -0
  89. package/dist/material/decks/winsands/OasisShaman.d.ts +13 -0
  90. package/dist/material/decks/winsands/OasisShaman.js +12 -0
  91. package/dist/material/decks/winsands/OasisShamanEffectRule.d.ts +8 -0
  92. package/dist/material/decks/winsands/OasisShamanEffectRule.js +33 -0
  93. package/dist/material/decks/winsands/SandWalkers.d.ts +17 -0
  94. package/dist/material/decks/winsands/SandWalkers.js +26 -0
  95. package/dist/material/decks/winsands/SandWalkersEffectRule.d.ts +5 -0
  96. package/dist/material/decks/winsands/SandWalkersEffectRule.js +25 -0
  97. package/dist/material/decks/winsands/StarlightBazaar.d.ts +13 -0
  98. package/dist/material/decks/winsands/StarlightBazaar.js +12 -0
  99. package/dist/material/decks/winsands/StarlightBazaarEffectRule.d.ts +4 -0
  100. package/dist/material/decks/winsands/StarlightBazaarEffectRule.js +6 -0
  101. package/dist/material/decks/winsands/Vandals.d.ts +13 -0
  102. package/dist/material/decks/winsands/Vandals.js +12 -0
  103. package/dist/material/decks/winsands/VandalsEffectRule.d.ts +4 -0
  104. package/dist/material/decks/winsands/VandalsEffectRule.js +14 -0
  105. package/dist/material/decks/winsands/WindWrath.d.ts +13 -0
  106. package/dist/material/decks/winsands/WindWrath.js +12 -0
  107. package/dist/material/decks/winsands/WindWrathEffectRule.d.ts +5 -0
  108. package/dist/material/decks/winsands/WindWrathEffectRule.js +20 -0
  109. package/dist/material/decks/winsands/WishLamp.d.ts +13 -0
  110. package/dist/material/decks/winsands/WishLamp.js +12 -0
  111. package/dist/material/decks/winsands/WishLampEffectRule.d.ts +10 -0
  112. package/dist/material/decks/winsands/WishLampEffectRule.js +46 -0
  113. package/dist/rules/EffectRule.d.ts +1 -0
  114. package/dist/rules/EffectRule.js +4 -2
  115. package/dist/rules/PlayCardRule.js +4 -19
  116. package/dist/rules/PlayerHelper.d.ts +2 -1
  117. package/dist/rules/PlayerHelper.js +32 -0
  118. package/dist/rules/PrepareNextRoundRule.js +1 -0
  119. package/dist/rules/RuleId.d.ts +20 -8
  120. package/dist/rules/RuleId.js +20 -8
  121. package/package.json +2 -2
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardTag } from '../../CardTag';
4
+ import { CardType } from '../../CardType';
5
+ declare class BonnyTheGunnerRule extends CardRule {
6
+ permanentEffectTag: CardTag;
7
+ }
8
+ export declare const BonnyTheGunner: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof BonnyTheGunnerRule;
13
+ };
14
+ export {};
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardTag } from '../../CardTag';
4
+ import { CardType } from '../../CardType';
5
+ class BonnyTheGunnerRule extends CardRule {
6
+ permanentEffectTag = CardTag.Cannon;
7
+ }
8
+ export const BonnyTheGunner = {
9
+ power: 2,
10
+ type: CardType.Creature,
11
+ suit: CardSuit.Day,
12
+ rule: BonnyTheGunnerRule
13
+ };
@@ -2,13 +2,15 @@ import { Memory } from '../../../Memory';
2
2
  import { PlayerHelper } from '../../../rules/PlayerHelper';
3
3
  import { cardProperties } from '../../CardProperties';
4
4
  import { CardRule } from '../../CardRule';
5
+ import { CardSuit } from '../../CardSuit';
5
6
  import { CardTag } from '../../CardTag';
6
7
  import { MaterialType } from '../../MaterialType';
7
8
  export class CannonCardRule extends CardRule {
8
9
  canBePlayed() {
9
- const hasMistyGunner = new PlayerHelper(this.game, this.player).cardRules.some((rule) => rule.hasPermanentEffectOnTag(CardTag.Cannon));
10
- if (hasMistyGunner) {
11
- return true;
10
+ const hasBonnyTheGunner = new PlayerHelper(this.game, this.player).cardRules.some((rule) => rule.hasPermanentEffectOnTag(CardTag.Cannon));
11
+ if (hasBonnyTheGunner) {
12
+ const currentSuit = this.remind(Memory.Suit);
13
+ return this.properties.suit !== CardSuit.Day || currentSuit !== CardSuit.Night;
12
14
  }
13
15
  const hasPlayedCannon = this.remind(Memory.CardsPlayed, this.player).some((cardIndex) => cardProperties[this.material(MaterialType.Card).getItem(cardIndex).id.front].tag === CardTag.Cannon);
14
16
  if (hasPlayedCannon) {
@@ -0,0 +1,15 @@
1
+ import { CardSuit } from '../../CardSuit';
2
+ import { CardTag } from '../../CardTag';
3
+ import { CardType } from '../../CardType';
4
+ import { CannonCardRule } from './CannonCardRule';
5
+ declare class DarkArmageddonRule extends CannonCardRule {
6
+ entersEffect: boolean;
7
+ }
8
+ export declare const DarkArmageddon: {
9
+ power: number;
10
+ type: CardType;
11
+ tag: CardTag;
12
+ suit: CardSuit;
13
+ rule: typeof DarkArmageddonRule;
14
+ };
15
+ export {};
@@ -0,0 +1,14 @@
1
+ import { CardSuit } from '../../CardSuit';
2
+ import { CardTag } from '../../CardTag';
3
+ import { CardType } from '../../CardType';
4
+ import { CannonCardRule } from './CannonCardRule';
5
+ class DarkArmageddonRule extends CannonCardRule {
6
+ entersEffect = true;
7
+ }
8
+ export const DarkArmageddon = {
9
+ power: 2,
10
+ type: CardType.Action,
11
+ tag: CardTag.Cannon,
12
+ suit: CardSuit.Night,
13
+ rule: DarkArmageddonRule
14
+ };
@@ -0,0 +1,4 @@
1
+ import { StunCardRule } from '../../../rules/StunCardRule';
2
+ export declare class DarkArmageddonEffectRule extends StunCardRule {
3
+ stunCount: number;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { StunCardRule } from '../../../rules/StunCardRule';
2
+ export class DarkArmageddonEffectRule extends StunCardRule {
3
+ stunCount = 3;
4
+ }
@@ -0,0 +1,16 @@
1
+ import { MaterialMove } 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
+ declare class EyeOfSkyRule extends CardRule {
7
+ onPlayerTurnStart(player: Deck): MaterialMove[];
8
+ startEffect(): import("@gamepark/rules-api").StartPlayerTurn<number, import("../../Card").Card>[];
9
+ }
10
+ export declare const EyeOfSky: {
11
+ power: number;
12
+ type: CardType;
13
+ suit: CardSuit;
14
+ rule: typeof EyeOfSkyRule;
15
+ };
16
+ export {};
@@ -0,0 +1,20 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class EyeOfSkyRule extends CardRule {
5
+ onPlayerTurnStart(player) {
6
+ if (player !== this.player) {
7
+ this.addPendingEffect();
8
+ }
9
+ return [];
10
+ }
11
+ startEffect() {
12
+ return [this.startPlayerTurn(this.card, this.opponent)];
13
+ }
14
+ }
15
+ export const EyeOfSky = {
16
+ power: 2,
17
+ type: CardType.Creature,
18
+ suit: CardSuit.Day,
19
+ rule: EyeOfSkyRule
20
+ };
@@ -0,0 +1,7 @@
1
+ import { CustomMove, MaterialMove, MoveItem } from '@gamepark/rules-api';
2
+ import { DiscardEffectRule } from '../../../rules/DiscardEffectRule';
3
+ export declare class EyeOfSkyEffectRule extends DiscardEffectRule {
4
+ getPlayerMoves(): MaterialMove[];
5
+ onDiscard(move: MoveItem): MaterialMove[];
6
+ onCustomMove(move: CustomMove): MaterialMove[];
7
+ }
@@ -0,0 +1,21 @@
1
+ import { CustomMoveType } from '../../../CustomMoveType';
2
+ import { Memory } from '../../../Memory';
3
+ import { DiscardEffectRule } from '../../../rules/DiscardEffectRule';
4
+ import { RuleId } from '../../../rules/RuleId';
5
+ export class EyeOfSkyEffectRule extends DiscardEffectRule {
6
+ getPlayerMoves() {
7
+ return [...super.getPlayerMoves(), this.customMove(CustomMoveType.ConcedeRound)];
8
+ }
9
+ onDiscard(move) {
10
+ this.memorize(Memory.CardsPlayed, (cards) => [...cards, move.itemIndex], this.player);
11
+ return [this.customMove(CustomMoveType.Draw, { player: this.player, quantity: 1 }), ...this.endEffect()];
12
+ }
13
+ onCustomMove(move) {
14
+ if (move.type === CustomMoveType.ConcedeRound) {
15
+ return [this.customMove(CustomMoveType.EndEffect), this.startRule(RuleId.EndRound)];
16
+ }
17
+ else {
18
+ return super.onCustomMove(move);
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,14 @@
1
+ import { MaterialMove } from '@gamepark/rules-api';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ declare class FortunesCourseRule extends CardRule {
6
+ onWinRound(): MaterialMove[];
7
+ }
8
+ export declare const FortunesCourse: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof FortunesCourseRule;
13
+ };
14
+ export {};
@@ -0,0 +1,15 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class FortunesCourseRule extends CardRule {
5
+ onWinRound() {
6
+ this.addPendingEffect();
7
+ return [];
8
+ }
9
+ }
10
+ export const FortunesCourse = {
11
+ power: 3,
12
+ type: CardType.Action,
13
+ suit: CardSuit.Day,
14
+ rule: FortunesCourseRule
15
+ };
@@ -0,0 +1,15 @@
1
+ import { CardSuit } from '../../CardSuit';
2
+ import { CardTag } from '../../CardTag';
3
+ import { CardType } from '../../CardType';
4
+ import { CannonCardRule } from './CannonCardRule';
5
+ declare class GoldenApocalypseRule extends CannonCardRule {
6
+ challenge: boolean;
7
+ }
8
+ export declare const GoldenApocalypse: {
9
+ power: number;
10
+ type: CardType;
11
+ tag: CardTag;
12
+ suit: CardSuit;
13
+ rule: typeof GoldenApocalypseRule;
14
+ };
15
+ export {};
@@ -0,0 +1,14 @@
1
+ import { CardSuit } from '../../CardSuit';
2
+ import { CardTag } from '../../CardTag';
3
+ import { CardType } from '../../CardType';
4
+ import { CannonCardRule } from './CannonCardRule';
5
+ class GoldenApocalypseRule extends CannonCardRule {
6
+ challenge = true;
7
+ }
8
+ export const GoldenApocalypse = {
9
+ power: 5,
10
+ type: CardType.Action,
11
+ tag: CardTag.Cannon,
12
+ suit: CardSuit.Day,
13
+ rule: GoldenApocalypseRule
14
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class OscarScullionRule extends CardRule {
5
+ oncePerTurnEffect: boolean;
6
+ }
7
+ export declare const OscarScullion: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof OscarScullionRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class OscarScullionRule extends CardRule {
5
+ oncePerTurnEffect = true;
6
+ }
7
+ export const OscarScullion = {
8
+ power: 2,
9
+ type: CardType.Creature,
10
+ suit: CardSuit.Night,
11
+ rule: OscarScullionRule
12
+ };
@@ -0,0 +1,5 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { PutPowerTokenEffectRule } from '../../../rules/PutPowerTokenEffectRule';
3
+ export declare class OscarScullionEffectRule extends PutPowerTokenEffectRule {
4
+ getTargets(): Material;
5
+ }
@@ -0,0 +1,12 @@
1
+ import { PutPowerTokenEffectRule } from '../../../rules/PutPowerTokenEffectRule';
2
+ import { cardProperties } from '../../CardProperties';
3
+ import { CardType } from '../../CardType';
4
+ import { LocationType } from '../../LocationType';
5
+ import { MaterialType } from '../../MaterialType';
6
+ export class OscarScullionEffectRule extends PutPowerTokenEffectRule {
7
+ getTargets() {
8
+ return this.material(MaterialType.Card)
9
+ .location(LocationType.PlayArea)
10
+ .id((id) => cardProperties[id.front].type === CardType.Creature);
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class OttoFactotumRule extends CardRule {
5
+ entersEffect: boolean;
6
+ }
7
+ export declare const OttoFactotum: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof OttoFactotumRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class OttoFactotumRule extends CardRule {
5
+ entersEffect = true;
6
+ }
7
+ export const OttoFactotum = {
8
+ power: 2,
9
+ type: CardType.Creature,
10
+ suit: CardSuit.Night,
11
+ rule: OttoFactotumRule
12
+ };
@@ -0,0 +1,4 @@
1
+ import { DrawEffectRule } from '../../../rules/DrawEffectRule';
2
+ export declare class OttoFactotumEffectRule extends DrawEffectRule {
3
+ getDrawCount(): number;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { DrawEffectRule } from '../../../rules/DrawEffectRule';
2
+ import { LocationType } from '../../LocationType';
3
+ import { MaterialType } from '../../MaterialType';
4
+ export class OttoFactotumEffectRule extends DrawEffectRule {
5
+ getDrawCount() {
6
+ const cardsInHands = this.material(MaterialType.Card).location(LocationType.PlayerHand);
7
+ return cardsInHands.player(this.nextPlayer).length - cardsInHands.player(this.player).length;
8
+ }
9
+ }
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class RiggingRaidersRule extends CardRule {
5
+ oncePerTurnEffect: boolean;
6
+ }
7
+ export declare const RiggingRaiders: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof RiggingRaidersRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class RiggingRaidersRule extends CardRule {
5
+ oncePerTurnEffect = true;
6
+ }
7
+ export const RiggingRaiders = {
8
+ power: 2,
9
+ type: CardType.Creature,
10
+ suit: CardSuit.Night,
11
+ rule: RiggingRaidersRule
12
+ };
@@ -0,0 +1,5 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { DestroyEffectRule } from '../../../rules/DestroyEffectRule';
3
+ export declare class RiggingRaidersEffectRule extends DestroyEffectRule {
4
+ getTargets(): Material;
5
+ }
@@ -0,0 +1,17 @@
1
+ import { DestroyEffectRule } from '../../../rules/DestroyEffectRule';
2
+ import { PlayerHelper } from '../../../rules/PlayerHelper';
3
+ import { cardProperties } from '../../CardProperties';
4
+ import { CardType } from '../../CardType';
5
+ import { LocationType } from '../../LocationType';
6
+ import { MaterialType } from '../../MaterialType';
7
+ export class RiggingRaidersEffectRule extends DestroyEffectRule {
8
+ getTargets() {
9
+ const helper = new PlayerHelper(this.game);
10
+ const scallywagPower = this.cardRule.getPower();
11
+ return this.material(MaterialType.Card)
12
+ .location(LocationType.PlayArea)
13
+ .player(helper.foe)
14
+ .id((id) => cardProperties[id.front].type === CardType.Creature)
15
+ .index((index) => helper.getCardRule(index).getPower() < scallywagPower);
16
+ }
17
+ }
@@ -0,0 +1,16 @@
1
+ import { MaterialMove } 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
+ declare class SeaScorcherRule extends CardRule {
8
+ onCardEnters(card: Card, side: Deck): MaterialMove[];
9
+ }
10
+ export declare const SeaScorcher: {
11
+ power: number;
12
+ type: CardType;
13
+ suit: CardSuit;
14
+ rule: typeof SeaScorcherRule;
15
+ };
16
+ export {};
@@ -0,0 +1,19 @@
1
+ import { cardProperties } from '../../CardProperties';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardTag } from '../../CardTag';
5
+ import { CardType } from '../../CardType';
6
+ class SeaScorcherRule extends CardRule {
7
+ onCardEnters(card, side) {
8
+ if (side === this.player && cardProperties[card].tag === CardTag.Cannon) {
9
+ this.addPendingEffect();
10
+ }
11
+ return [];
12
+ }
13
+ }
14
+ export const SeaScorcher = {
15
+ power: 1,
16
+ type: CardType.Creature,
17
+ suit: CardSuit.Day,
18
+ rule: SeaScorcherRule
19
+ };
@@ -0,0 +1,5 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { ReturnCardRule } from '../../../rules/ReturnCardRule';
3
+ export declare class SeaScorcherEffectRule extends ReturnCardRule {
4
+ getTargets(): Material;
5
+ }
@@ -0,0 +1,13 @@
1
+ import { ReturnCardRule } from '../../../rules/ReturnCardRule';
2
+ import { cardProperties } from '../../CardProperties';
3
+ import { CardTag } from '../../CardTag';
4
+ import { LocationType } from '../../LocationType';
5
+ import { MaterialType } from '../../MaterialType';
6
+ export class SeaScorcherEffectRule extends ReturnCardRule {
7
+ getTargets() {
8
+ return this.material(MaterialType.Card)
9
+ .location(LocationType.PlayerDiscard)
10
+ .player(this.player)
11
+ .id((id) => cardProperties[id.front].tag === CardTag.Cannon);
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class TideRoverRule extends CardRule {
5
+ entersEffect: boolean;
6
+ }
7
+ export declare const TideRover: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof TideRoverRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class TideRoverRule extends CardRule {
5
+ entersEffect = true;
6
+ }
7
+ export const TideRover = {
8
+ power: 2,
9
+ type: CardType.Creature,
10
+ suit: CardSuit.Twilight,
11
+ rule: TideRoverRule
12
+ };
@@ -0,0 +1,4 @@
1
+ import { EffectRule } from '../../../rules/EffectRule';
2
+ export declare class TideRoverEffectRule extends EffectRule {
3
+ onRuleStart(): import("@gamepark/rules-api").MaterialMove[];
4
+ }
@@ -0,0 +1,26 @@
1
+ import { Memory } from '../../../Memory';
2
+ import { EffectRule } from '../../../rules/EffectRule';
3
+ import { cardProperties } from '../../CardProperties';
4
+ import { CardType } from '../../CardType';
5
+ import { LocationType } from '../../LocationType';
6
+ import { MaterialType } from '../../MaterialType';
7
+ export class TideRoverEffectRule extends EffectRule {
8
+ onRuleStart() {
9
+ const moves = this.endEffect();
10
+ const cardsPlayed = this.remind(Memory.CardsPlayed, this.nextPlayer);
11
+ if (cardsPlayed.length > 0) {
12
+ const cardIndex = cardsPlayed[cardsPlayed.length - 1];
13
+ const card = this.material(MaterialType.Card).getItem(cardIndex);
14
+ if (card.location.type === LocationType.PlayArea && cardProperties[card.id.front].type === CardType.Creature) {
15
+ moves.unshift(this.material(MaterialType.StunToken).createItem({
16
+ location: {
17
+ type: LocationType.CardStunTokens,
18
+ parent: cardIndex
19
+ },
20
+ quantity: 2
21
+ }));
22
+ }
23
+ }
24
+ return moves;
25
+ }
26
+ }
@@ -5,7 +5,7 @@ class TropicalRuffianRule extends CardRule {
5
5
  entersEffect = true;
6
6
  }
7
7
  export const TropicalRuffian = {
8
- power: 5,
8
+ power: 6,
9
9
  type: CardType.Creature,
10
10
  suit: CardSuit.Night,
11
11
  rule: TropicalRuffianRule
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class AbiSnakeCharmerRule extends CardRule {
5
+ entersEffect: boolean;
6
+ }
7
+ export declare const AbiSnakeCharmer: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof AbiSnakeCharmerRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class AbiSnakeCharmerRule extends CardRule {
5
+ entersEffect = true;
6
+ }
7
+ export const AbiSnakeCharmer = {
8
+ power: 1,
9
+ type: CardType.Creature,
10
+ suit: CardSuit.Day,
11
+ rule: AbiSnakeCharmerRule
12
+ };
@@ -0,0 +1,7 @@
1
+ import { ItemMove, MaterialMove } from '@gamepark/rules-api';
2
+ import { EffectRule } from '../../../rules/EffectRule';
3
+ export declare class AbiSnakeCharmerEffectRule extends EffectRule {
4
+ onRuleStart(): MaterialMove[];
5
+ getPlayerMoves(): MaterialMove[];
6
+ afterItemMove(move: ItemMove): MaterialMove[];
7
+ }
@@ -0,0 +1,33 @@
1
+ import { isMoveItemType } from '@gamepark/rules-api';
2
+ import { EffectRule } from '../../../rules/EffectRule';
3
+ import { PlayerHelper } from '../../../rules/PlayerHelper';
4
+ import { cardProperties } from '../../CardProperties';
5
+ import { CardType } from '../../CardType';
6
+ import { LocationType } from '../../LocationType';
7
+ import { MaterialType } from '../../MaterialType';
8
+ export class AbiSnakeCharmerEffectRule extends EffectRule {
9
+ onRuleStart() {
10
+ const playerHelper = new PlayerHelper(this.game, this.player);
11
+ const foeHelper = new PlayerHelper(this.game, this.nextPlayer);
12
+ if (foeHelper.getPower() < playerHelper.getPower() + 7) {
13
+ return this.endEffect();
14
+ }
15
+ return [];
16
+ }
17
+ getPlayerMoves() {
18
+ return this.material(MaterialType.Card)
19
+ .location(LocationType.PlayArea)
20
+ .id((id) => cardProperties[id.front].type === CardType.Creature)
21
+ .moveItems((item) => ({
22
+ type: LocationType.PlayArea,
23
+ player: item.location.player === this.player ? this.nextPlayer : this.player,
24
+ id: cardProperties[item.id.front].type
25
+ }));
26
+ }
27
+ afterItemMove(move) {
28
+ if (isMoveItemType(MaterialType.Card)(move) && move.location.type === LocationType.PlayArea) {
29
+ return this.endEffect();
30
+ }
31
+ return [];
32
+ }
33
+ }
@@ -0,0 +1,16 @@
1
+ import { MaterialMove } from '@gamepark/rules-api';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ declare class AncientCurseRule extends CardRule {
6
+ challenge: boolean;
7
+ onChallengeAccepted(): import("@gamepark/rules-api").CustomMove[];
8
+ onChallengeDeclined(): MaterialMove[];
9
+ }
10
+ export declare const AncientCurse: {
11
+ power: number;
12
+ type: CardType;
13
+ suit: CardSuit;
14
+ rule: typeof AncientCurseRule;
15
+ };
16
+ export {};
@@ -0,0 +1,23 @@
1
+ import { CustomMoveType } from '../../../CustomMoveType';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ class AncientCurseRule extends CardRule {
6
+ challenge = true;
7
+ onChallengeAccepted() {
8
+ this.addPendingEffect();
9
+ return super.onChallengeAccepted();
10
+ }
11
+ onChallengeDeclined() {
12
+ return [
13
+ this.customMove(CustomMoveType.Draw, { player: this.opponent, quantity: 1 }),
14
+ ...super.onChallengeDeclined()
15
+ ];
16
+ }
17
+ }
18
+ export const AncientCurse = {
19
+ power: 3,
20
+ type: CardType.Action,
21
+ suit: CardSuit.Night,
22
+ rule: AncientCurseRule
23
+ };
@@ -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
+ challenge: boolean;
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 {};