@gamepark/skyrift 0.1.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 (183) hide show
  1. package/dist/CustomMoveType.d.ts +9 -0
  2. package/dist/CustomMoveType.js +10 -0
  3. package/dist/Deck.d.ts +4 -0
  4. package/dist/Deck.js +5 -0
  5. package/dist/Memory.d.ts +10 -0
  6. package/dist/Memory.js +11 -0
  7. package/dist/SkyriftOptions.d.ts +10 -0
  8. package/dist/SkyriftOptions.js +11 -0
  9. package/dist/SkyriftRules.d.ts +90 -0
  10. package/dist/SkyriftRules.js +140 -0
  11. package/dist/SkyriftSetup.d.ts +12 -0
  12. package/dist/SkyriftSetup.js +40 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.js +3 -0
  15. package/dist/material/Card.d.ts +39 -0
  16. package/dist/material/Card.js +35 -0
  17. package/dist/material/CardProperties.d.ts +14 -0
  18. package/dist/material/CardProperties.js +67 -0
  19. package/dist/material/CardRule.d.ts +36 -0
  20. package/dist/material/CardRule.js +113 -0
  21. package/dist/material/CardSuit.d.ts +5 -0
  22. package/dist/material/CardSuit.js +6 -0
  23. package/dist/material/CardTag.d.ts +5 -0
  24. package/dist/material/CardTag.js +6 -0
  25. package/dist/material/CardType.d.ts +4 -0
  26. package/dist/material/CardType.js +5 -0
  27. package/dist/material/Effect.d.ts +4 -0
  28. package/dist/material/Effect.js +1 -0
  29. package/dist/material/LocationType.d.ts +14 -0
  30. package/dist/material/LocationType.js +15 -0
  31. package/dist/material/MaterialType.d.ts +6 -0
  32. package/dist/material/MaterialType.js +7 -0
  33. package/dist/material/decks/HearthBlade.d.ts +18 -0
  34. package/dist/material/decks/HearthBlade.js +19 -0
  35. package/dist/material/decks/HighWave.d.ts +18 -0
  36. package/dist/material/decks/HighWave.js +19 -0
  37. package/dist/material/decks/heathblade/ArcherRule.d.ts +6 -0
  38. package/dist/material/decks/heathblade/ArcherRule.js +15 -0
  39. package/dist/material/decks/heathblade/Armada.d.ts +14 -0
  40. package/dist/material/decks/heathblade/Armada.js +16 -0
  41. package/dist/material/decks/heathblade/ArmadaEffectRule.d.ts +7 -0
  42. package/dist/material/decks/heathblade/ArmadaEffectRule.js +17 -0
  43. package/dist/material/decks/heathblade/Confluence.d.ts +17 -0
  44. package/dist/material/decks/heathblade/Confluence.js +19 -0
  45. package/dist/material/decks/heathblade/CoverOfNight.d.ts +13 -0
  46. package/dist/material/decks/heathblade/CoverOfNight.js +12 -0
  47. package/dist/material/decks/heathblade/CoverOfNightEffectRule.d.ts +4 -0
  48. package/dist/material/decks/heathblade/CoverOfNightEffectRule.js +4 -0
  49. package/dist/material/decks/heathblade/ElaraBlazingArrow.d.ts +14 -0
  50. package/dist/material/decks/heathblade/ElaraBlazingArrow.js +13 -0
  51. package/dist/material/decks/heathblade/Harvest.d.ts +13 -0
  52. package/dist/material/decks/heathblade/Harvest.js +12 -0
  53. package/dist/material/decks/heathblade/HarvestEffectRule.d.ts +4 -0
  54. package/dist/material/decks/heathblade/HarvestEffectRule.js +6 -0
  55. package/dist/material/decks/heathblade/HedgeKnight.d.ts +15 -0
  56. package/dist/material/decks/heathblade/HedgeKnight.js +18 -0
  57. package/dist/material/decks/heathblade/LoyalSquire.d.ts +14 -0
  58. package/dist/material/decks/heathblade/LoyalSquire.js +16 -0
  59. package/dist/material/decks/heathblade/LoyalSquireEffectRule.d.ts +6 -0
  60. package/dist/material/decks/heathblade/LoyalSquireEffectRule.js +14 -0
  61. package/dist/material/decks/heathblade/Nightguard.d.ts +13 -0
  62. package/dist/material/decks/heathblade/Nightguard.js +22 -0
  63. package/dist/material/decks/heathblade/OzmaTheMage.d.ts +17 -0
  64. package/dist/material/decks/heathblade/OzmaTheMage.js +28 -0
  65. package/dist/material/decks/heathblade/OzmaTheMageEffectRule.d.ts +4 -0
  66. package/dist/material/decks/heathblade/OzmaTheMageEffectRule.js +20 -0
  67. package/dist/material/decks/heathblade/PrincessLitha.d.ts +17 -0
  68. package/dist/material/decks/heathblade/PrincessLitha.js +28 -0
  69. package/dist/material/decks/heathblade/PrincessLithaEffectRule.d.ts +6 -0
  70. package/dist/material/decks/heathblade/PrincessLithaEffectRule.js +15 -0
  71. package/dist/material/decks/heathblade/RobbinsMasterOfArms.d.ts +15 -0
  72. package/dist/material/decks/heathblade/RobbinsMasterOfArms.js +14 -0
  73. package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.d.ts +5 -0
  74. package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.js +29 -0
  75. package/dist/material/decks/heathblade/Sacrifice.d.ts +13 -0
  76. package/dist/material/decks/heathblade/Sacrifice.js +12 -0
  77. package/dist/material/decks/heathblade/SacrificeEffectRule.d.ts +10 -0
  78. package/dist/material/decks/heathblade/SacrificeEffectRule.js +48 -0
  79. package/dist/material/decks/heathblade/Shadowbolt.d.ts +15 -0
  80. package/dist/material/decks/heathblade/Shadowbolt.js +14 -0
  81. package/dist/material/decks/heathblade/SoulBlade.d.ts +13 -0
  82. package/dist/material/decks/heathblade/SoulBlade.js +12 -0
  83. package/dist/material/decks/heathblade/SoulBladeEffectRule.d.ts +5 -0
  84. package/dist/material/decks/heathblade/SoulBladeEffectRule.js +15 -0
  85. package/dist/material/decks/heathblade/WatchTower.d.ts +14 -0
  86. package/dist/material/decks/heathblade/WatchTower.js +16 -0
  87. package/dist/material/decks/heathblade/WatchTowerEffectRule.d.ts +4 -0
  88. package/dist/material/decks/heathblade/WatchTowerEffectRule.js +13 -0
  89. package/dist/material/decks/heathblade/WoodSlinger.d.ts +15 -0
  90. package/dist/material/decks/heathblade/WoodSlinger.js +14 -0
  91. package/dist/material/decks/highwave/AeliaSteadyHand.d.ts +13 -0
  92. package/dist/material/decks/highwave/AeliaSteadyHand.js +12 -0
  93. package/dist/material/decks/highwave/BoardingParty.d.ts +13 -0
  94. package/dist/material/decks/highwave/BoardingParty.js +12 -0
  95. package/dist/material/decks/highwave/BoardingPartyEffectRule.d.ts +10 -0
  96. package/dist/material/decks/highwave/BoardingPartyEffectRule.js +59 -0
  97. package/dist/material/decks/highwave/BrassDragon.d.ts +15 -0
  98. package/dist/material/decks/highwave/BrassDragon.js +14 -0
  99. package/dist/material/decks/highwave/CannonCardRule.d.ts +4 -0
  100. package/dist/material/decks/highwave/CannonCardRule.js +19 -0
  101. package/dist/material/decks/highwave/DarkBlazer.d.ts +15 -0
  102. package/dist/material/decks/highwave/DarkBlazer.js +14 -0
  103. package/dist/material/decks/highwave/DarkBlazerEffectRule.d.ts +4 -0
  104. package/dist/material/decks/highwave/DarkBlazerEffectRule.js +4 -0
  105. package/dist/material/decks/highwave/DawnsDoom.d.ts +15 -0
  106. package/dist/material/decks/highwave/DawnsDoom.js +14 -0
  107. package/dist/material/decks/highwave/DawnsDoomEffectRule.d.ts +4 -0
  108. package/dist/material/decks/highwave/DawnsDoomEffectRule.js +14 -0
  109. package/dist/material/decks/highwave/LongJawsSilver.d.ts +15 -0
  110. package/dist/material/decks/highwave/LongJawsSilver.js +19 -0
  111. package/dist/material/decks/highwave/MistyGunner.d.ts +14 -0
  112. package/dist/material/decks/highwave/MistyGunner.js +13 -0
  113. package/dist/material/decks/highwave/OttoPouchy.d.ts +13 -0
  114. package/dist/material/decks/highwave/OttoPouchy.js +12 -0
  115. package/dist/material/decks/highwave/OttoPouchyEffectRule.d.ts +4 -0
  116. package/dist/material/decks/highwave/OttoPouchyEffectRule.js +9 -0
  117. package/dist/material/decks/highwave/PowderMonkey.d.ts +16 -0
  118. package/dist/material/decks/highwave/PowderMonkey.js +19 -0
  119. package/dist/material/decks/highwave/PowderMonkeyEffectRule.d.ts +5 -0
  120. package/dist/material/decks/highwave/PowderMonkeyEffectRule.js +13 -0
  121. package/dist/material/decks/highwave/RicoSkeye.d.ts +16 -0
  122. package/dist/material/decks/highwave/RicoSkeye.js +20 -0
  123. package/dist/material/decks/highwave/RicoSkeyeEffectRule.d.ts +7 -0
  124. package/dist/material/decks/highwave/RicoSkeyeEffectRule.js +21 -0
  125. package/dist/material/decks/highwave/SaltyDog.d.ts +13 -0
  126. package/dist/material/decks/highwave/SaltyDog.js +12 -0
  127. package/dist/material/decks/highwave/SaltyDogEffectRule.d.ts +4 -0
  128. package/dist/material/decks/highwave/SaltyDogEffectRule.js +26 -0
  129. package/dist/material/decks/highwave/Scallywag.d.ts +13 -0
  130. package/dist/material/decks/highwave/Scallywag.js +12 -0
  131. package/dist/material/decks/highwave/ScallywagEffectRule.d.ts +5 -0
  132. package/dist/material/decks/highwave/ScallywagEffectRule.js +13 -0
  133. package/dist/material/decks/highwave/Skupper.d.ts +13 -0
  134. package/dist/material/decks/highwave/Skupper.js +12 -0
  135. package/dist/material/decks/highwave/SkupperEffectRule.d.ts +5 -0
  136. package/dist/material/decks/highwave/SkupperEffectRule.js +12 -0
  137. package/dist/material/decks/highwave/SurpriseLoot.d.ts +13 -0
  138. package/dist/material/decks/highwave/SurpriseLoot.js +12 -0
  139. package/dist/material/decks/highwave/SurpriseLootEffectRule.d.ts +4 -0
  140. package/dist/material/decks/highwave/SurpriseLootEffectRule.js +13 -0
  141. package/dist/material/decks/highwave/TreasureMap.d.ts +14 -0
  142. package/dist/material/decks/highwave/TreasureMap.js +15 -0
  143. package/dist/material/decks/highwave/TropicalRuffian.d.ts +13 -0
  144. package/dist/material/decks/highwave/TropicalRuffian.js +12 -0
  145. package/dist/rules/ChallengeRule.d.ts +7 -0
  146. package/dist/rules/ChallengeRule.js +23 -0
  147. package/dist/rules/DestroyEffectRule.d.ts +8 -0
  148. package/dist/rules/DestroyEffectRule.js +21 -0
  149. package/dist/rules/DiscardEffectRule.d.ts +10 -0
  150. package/dist/rules/DiscardEffectRule.js +35 -0
  151. package/dist/rules/DrawEffectRule.d.ts +6 -0
  152. package/dist/rules/DrawEffectRule.js +15 -0
  153. package/dist/rules/EffectRule.d.ts +7 -0
  154. package/dist/rules/EffectRule.js +41 -0
  155. package/dist/rules/EndRoundRule.d.ts +4 -0
  156. package/dist/rules/EndRoundRule.js +47 -0
  157. package/dist/rules/GainCrystalEffectRule.d.ts +5 -0
  158. package/dist/rules/GainCrystalEffectRule.js +8 -0
  159. package/dist/rules/MayChallengeRule.d.ts +6 -0
  160. package/dist/rules/MayChallengeRule.js +17 -0
  161. package/dist/rules/PlayCardRule.d.ts +9 -0
  162. package/dist/rules/PlayCardRule.js +92 -0
  163. package/dist/rules/PlayerHelper.d.ts +13 -0
  164. package/dist/rules/PlayerHelper.js +36 -0
  165. package/dist/rules/PrepareNextRoundRule.d.ts +7 -0
  166. package/dist/rules/PrepareNextRoundRule.js +24 -0
  167. package/dist/rules/PutPowerTokenEffectRule.d.ts +8 -0
  168. package/dist/rules/PutPowerTokenEffectRule.js +24 -0
  169. package/dist/rules/ReturnCardRule.d.ts +9 -0
  170. package/dist/rules/ReturnCardRule.js +27 -0
  171. package/dist/rules/RuleId.d.ts +34 -0
  172. package/dist/rules/RuleId.js +36 -0
  173. package/dist/rules/StartPlayerTurnRule.d.ts +4 -0
  174. package/dist/rules/StartPlayerTurnRule.js +42 -0
  175. package/dist/rules/StartRoundRule.d.ts +5 -0
  176. package/dist/rules/StartRoundRule.js +12 -0
  177. package/dist/rules/StashPowerTokenEffectRule.d.ts +6 -0
  178. package/dist/rules/StashPowerTokenEffectRule.js +20 -0
  179. package/dist/rules/StealCrystalEffectRule.d.ts +5 -0
  180. package/dist/rules/StealCrystalEffectRule.js +13 -0
  181. package/dist/rules/StunCardRule.d.ts +9 -0
  182. package/dist/rules/StunCardRule.js +40 -0
  183. package/package.json +33 -0
@@ -0,0 +1,113 @@
1
+ import { MaterialRulesPart } from '@gamepark/rules-api';
2
+ import { CustomMoveType } from '../CustomMoveType';
3
+ import { Memory } from '../Memory';
4
+ import { RuleId } from '../rules/RuleId';
5
+ import { cardProperties } from './CardProperties';
6
+ import { CardSuit } from './CardSuit';
7
+ import { LocationType } from './LocationType';
8
+ import { MaterialType } from './MaterialType';
9
+ export class CardRule extends MaterialRulesPart {
10
+ index;
11
+ constructor(game, index) {
12
+ super(game);
13
+ this.index = index;
14
+ }
15
+ onEnters() {
16
+ if (this.entersEffect || this.challenge) {
17
+ this.memorize(Memory.PendingEffects, (effects) => [...effects, { cardIndex: this.index, challenge: this.challenge }]);
18
+ }
19
+ return [];
20
+ }
21
+ onPlayerTurnStart(_player) {
22
+ return [];
23
+ }
24
+ onRoundEnd(win) {
25
+ return win ? this.onWinRound() : this.onLoseRound();
26
+ }
27
+ onWinRound() {
28
+ return [];
29
+ }
30
+ onLoseRound() {
31
+ return [];
32
+ }
33
+ onCardEnters(_card, _side) {
34
+ return [];
35
+ }
36
+ oncePerTurnEffect = false;
37
+ entersEffect = false;
38
+ challenge = false;
39
+ onChallengeAccepted() {
40
+ return [this.customMove(CustomMoveType.EndEffect)];
41
+ }
42
+ onChallengeDeclined() {
43
+ this.memorize(Memory.PendingEffects, []);
44
+ return [this.startPlayerTurn(RuleId.EndRound, this.opponent)];
45
+ }
46
+ onLeave() {
47
+ return [...this.removePowerTokens(), ...this.removeStunTokens()];
48
+ }
49
+ removePowerTokens() {
50
+ const tokens = this.material(MaterialType.PowerToken).location(LocationType.CardPowerTokens).parent(this.index);
51
+ return tokens.getQuantity() > 0 ? [tokens.deleteItem(tokens.getQuantity())] : [];
52
+ }
53
+ removeStunTokens() {
54
+ const tokens = this.material(MaterialType.StunToken).location(LocationType.CardStunTokens).parent(this.index);
55
+ return tokens.getQuantity() > 0 ? [tokens.deleteItem(tokens.getQuantity())] : [];
56
+ }
57
+ get item() {
58
+ return this.material(MaterialType.Card).getItem(this.index);
59
+ }
60
+ get card() {
61
+ return this.item.id.front;
62
+ }
63
+ get properties() {
64
+ return cardProperties[this.card];
65
+ }
66
+ isStunned() {
67
+ return this.material(MaterialType.StunToken).location(LocationType.CardStunTokens).parent(this.index).getQuantity() > 0;
68
+ }
69
+ getPower() {
70
+ if (this.isStunned()) {
71
+ return 0;
72
+ }
73
+ else {
74
+ return this.getPowerIfNotStunned();
75
+ }
76
+ }
77
+ getPowerIfNotStunned() {
78
+ const basePower = this.properties.power;
79
+ const powerTokensCount = this.material(MaterialType.PowerToken).location(LocationType.CardPowerTokens).parent(this.index).getQuantity();
80
+ return basePower + powerTokensCount;
81
+ }
82
+ addPendingEffect() {
83
+ this.memorize(Memory.PendingEffects, (effects) => [...effects, { cardIndex: this.index }]);
84
+ }
85
+ get player() {
86
+ return this.item.location.player;
87
+ }
88
+ get opponent() {
89
+ return this.game.players.find((p) => p !== this.player);
90
+ }
91
+ startEffect() {
92
+ const pendingEffects = this.remind(Memory.PendingEffects);
93
+ if (!pendingEffects.length) {
94
+ pendingEffects.push({ cardIndex: this.index });
95
+ }
96
+ const effect = pendingEffects[0];
97
+ if (effect.challenge) {
98
+ return [this.startPlayerTurn(RuleId.MayChallenge, this.player)];
99
+ }
100
+ else {
101
+ return [this.startPlayerTurn(this.card, this.player)];
102
+ }
103
+ }
104
+ canBePlayed() {
105
+ const currentSuit = this.remind(Memory.Suit);
106
+ const cardSuit = this.properties.suit;
107
+ return !(cardSuit === CardSuit.Night && currentSuit === CardSuit.Day) && !(cardSuit === CardSuit.Day && currentSuit === CardSuit.Night);
108
+ }
109
+ permanentEffectTag = undefined;
110
+ hasPermanentEffectOnTag(tag) {
111
+ return this.permanentEffectTag === tag && !this.isStunned();
112
+ }
113
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum CardSuit {
2
+ Day = 1,
3
+ Night = 2,
4
+ Twilight = 3
5
+ }
@@ -0,0 +1,6 @@
1
+ export var CardSuit;
2
+ (function (CardSuit) {
3
+ CardSuit[CardSuit["Day"] = 1] = "Day";
4
+ CardSuit[CardSuit["Night"] = 2] = "Night";
5
+ CardSuit[CardSuit["Twilight"] = 3] = "Twilight";
6
+ })(CardSuit || (CardSuit = {}));
@@ -0,0 +1,5 @@
1
+ export declare enum CardTag {
2
+ Knight = 1,
3
+ Archer = 2,
4
+ Cannon = 3
5
+ }
@@ -0,0 +1,6 @@
1
+ export var CardTag;
2
+ (function (CardTag) {
3
+ CardTag[CardTag["Knight"] = 1] = "Knight";
4
+ CardTag[CardTag["Archer"] = 2] = "Archer";
5
+ CardTag[CardTag["Cannon"] = 3] = "Cannon";
6
+ })(CardTag || (CardTag = {}));
@@ -0,0 +1,4 @@
1
+ export declare enum CardType {
2
+ Creature = 1,
3
+ Action = 2
4
+ }
@@ -0,0 +1,5 @@
1
+ export var CardType;
2
+ (function (CardType) {
3
+ CardType[CardType["Creature"] = 1] = "Creature";
4
+ CardType[CardType["Action"] = 2] = "Action";
5
+ })(CardType || (CardType = {}));
@@ -0,0 +1,4 @@
1
+ export type Effect = {
2
+ cardIndex: number;
3
+ challenge?: boolean;
4
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ export declare enum LocationType {
2
+ PlayerDeck = 1,
3
+ PlayerHand = 2,
4
+ CrystalStock = 3,
5
+ PowerTokenStock = 4,
6
+ StunTokenStock = 5,
7
+ Stake = 6,
8
+ PlayArea = 7,
9
+ PlayerDiscard = 8,
10
+ PlayerCrystals = 9,
11
+ CardPowerTokens = 10,
12
+ CardStunTokens = 11,
13
+ PlayerStash = 12
14
+ }
@@ -0,0 +1,15 @@
1
+ export var LocationType;
2
+ (function (LocationType) {
3
+ LocationType[LocationType["PlayerDeck"] = 1] = "PlayerDeck";
4
+ LocationType[LocationType["PlayerHand"] = 2] = "PlayerHand";
5
+ LocationType[LocationType["CrystalStock"] = 3] = "CrystalStock";
6
+ LocationType[LocationType["PowerTokenStock"] = 4] = "PowerTokenStock";
7
+ LocationType[LocationType["StunTokenStock"] = 5] = "StunTokenStock";
8
+ LocationType[LocationType["Stake"] = 6] = "Stake";
9
+ LocationType[LocationType["PlayArea"] = 7] = "PlayArea";
10
+ LocationType[LocationType["PlayerDiscard"] = 8] = "PlayerDiscard";
11
+ LocationType[LocationType["PlayerCrystals"] = 9] = "PlayerCrystals";
12
+ LocationType[LocationType["CardPowerTokens"] = 10] = "CardPowerTokens";
13
+ LocationType[LocationType["CardStunTokens"] = 11] = "CardStunTokens";
14
+ LocationType[LocationType["PlayerStash"] = 12] = "PlayerStash";
15
+ })(LocationType || (LocationType = {}));
@@ -0,0 +1,6 @@
1
+ export declare enum MaterialType {
2
+ Card = 1,
3
+ Crystal = 2,
4
+ PowerToken = 3,
5
+ StunToken = 4
6
+ }
@@ -0,0 +1,7 @@
1
+ export var MaterialType;
2
+ (function (MaterialType) {
3
+ MaterialType[MaterialType["Card"] = 1] = "Card";
4
+ MaterialType[MaterialType["Crystal"] = 2] = "Crystal";
5
+ MaterialType[MaterialType["PowerToken"] = 3] = "PowerToken";
6
+ MaterialType[MaterialType["StunToken"] = 4] = "StunToken";
7
+ })(MaterialType || (MaterialType = {}));
@@ -0,0 +1,18 @@
1
+ export declare const HearthBlade: {
2
+ 101: number;
3
+ 102: number;
4
+ 103: number;
5
+ 104: number;
6
+ 105: number;
7
+ 106: number;
8
+ 107: number;
9
+ 108: number;
10
+ 109: number;
11
+ 110: number;
12
+ 111: number;
13
+ 112: number;
14
+ 113: number;
15
+ 114: number;
16
+ 115: number;
17
+ 116: number;
18
+ };
@@ -0,0 +1,19 @@
1
+ import { Card } from '../Card';
2
+ export const HearthBlade = {
3
+ [Card.HedgeKnight]: 2,
4
+ [Card.LoyalSquire]: 2,
5
+ [Card.PrincessLitha]: 1,
6
+ [Card.RobbinsMasterOfArms]: 1,
7
+ [Card.Nightguard]: 2,
8
+ [Card.Shadowbolt]: 2,
9
+ [Card.ElaraBlazingArrow]: 1,
10
+ [Card.WoodSlinger]: 2,
11
+ [Card.OzmaTheMage]: 1,
12
+ [Card.Armada]: 2,
13
+ [Card.SoulBlade]: 1,
14
+ [Card.CoverOfNight]: 2,
15
+ [Card.Sacrifice]: 1,
16
+ [Card.WatchTower]: 1,
17
+ [Card.Confluence]: 2,
18
+ [Card.Harvest]: 1
19
+ };
@@ -0,0 +1,18 @@
1
+ export declare const HighWave: {
2
+ 601: number;
3
+ 602: number;
4
+ 603: number;
5
+ 604: number;
6
+ 605: number;
7
+ 606: number;
8
+ 607: number;
9
+ 608: number;
10
+ 609: number;
11
+ 610: number;
12
+ 611: number;
13
+ 612: number;
14
+ 613: number;
15
+ 614: number;
16
+ 615: number;
17
+ 616: number;
18
+ };
@@ -0,0 +1,19 @@
1
+ import { Card } from '../Card';
2
+ export const HighWave = {
3
+ [Card.PowderMonkey]: 2,
4
+ [Card.AeliaSteadyHand]: 2,
5
+ [Card.RicoSkeye]: 1,
6
+ [Card.MistyGunner]: 1,
7
+ [Card.TropicalRuffian]: 2,
8
+ [Card.Scallywag]: 2,
9
+ [Card.OttoPouchy]: 1,
10
+ [Card.Skupper]: 1,
11
+ [Card.SaltyDog]: 2,
12
+ [Card.LongJawsSilver]: 1,
13
+ [Card.BrassDragon]: 2,
14
+ [Card.TreasureMap]: 1,
15
+ [Card.DarkBlazer]: 2,
16
+ [Card.BoardingParty]: 1,
17
+ [Card.DawnsDoom]: 2,
18
+ [Card.SurpriseLoot]: 1
19
+ };
@@ -0,0 +1,6 @@
1
+ import { CardRule } from '../../CardRule';
2
+ export declare abstract class ArcherRule extends CardRule {
3
+ abstract powerBonus: number;
4
+ getPowerIfNotStunned(): number;
5
+ hasElaraBlazingArrow(): boolean;
6
+ }
@@ -0,0 +1,15 @@
1
+ import { Memory } from '../../../Memory';
2
+ import { PlayerHelper } from '../../../rules/PlayerHelper';
3
+ import { CardRule } from '../../CardRule';
4
+ import { CardTag } from '../../CardTag';
5
+ export class ArcherRule extends CardRule {
6
+ getPowerIfNotStunned() {
7
+ if (this.remind(Memory.CurrentPlayer) === this.player || this.hasElaraBlazingArrow()) {
8
+ return super.getPowerIfNotStunned() + this.powerBonus;
9
+ }
10
+ return super.getPowerIfNotStunned();
11
+ }
12
+ hasElaraBlazingArrow() {
13
+ return new PlayerHelper(this.game, this.player).cardRules.some((rule) => rule.hasPermanentEffectOnTag(CardTag.Archer));
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class ArmadaRule extends CardRule {
5
+ challenge: boolean;
6
+ onChallengeAccepted(): import("@gamepark/rules-api").CustomMove[];
7
+ }
8
+ export declare const Armada: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof ArmadaRule;
13
+ };
14
+ export {};
@@ -0,0 +1,16 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class ArmadaRule extends CardRule {
5
+ challenge = true;
6
+ onChallengeAccepted() {
7
+ this.addPendingEffect();
8
+ return super.onChallengeAccepted();
9
+ }
10
+ }
11
+ export const Armada = {
12
+ power: 2,
13
+ type: CardType.Action,
14
+ suit: CardSuit.Day,
15
+ rule: ArmadaRule
16
+ };
@@ -0,0 +1,7 @@
1
+ import { CustomMove } from '@gamepark/rules-api';
2
+ import { DiscardEffectRule } from '../../../rules/DiscardEffectRule';
3
+ export declare class ArmadaEffectRule extends DiscardEffectRule {
4
+ discardCount: number;
5
+ getPlayerMoves(): import("@gamepark/rules-api").MaterialMove[];
6
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").MaterialMove[];
7
+ }
@@ -0,0 +1,17 @@
1
+ import { CustomMoveType } from '../../../CustomMoveType';
2
+ import { Memory } from '../../../Memory';
3
+ import { DiscardEffectRule } from '../../../rules/DiscardEffectRule';
4
+ export class ArmadaEffectRule extends DiscardEffectRule {
5
+ discardCount = Infinity;
6
+ getPlayerMoves() {
7
+ const moves = super.getPlayerMoves();
8
+ moves.push(this.customMove(CustomMoveType.Pass));
9
+ return moves;
10
+ }
11
+ onCustomMove(move) {
12
+ if (move.type === CustomMoveType.Pass) {
13
+ return [this.customMove(CustomMoveType.Draw, { player: this.player, quantity: this.remind(Memory.EffectCount) }), ...this.endEffect()];
14
+ }
15
+ return super.onCustomMove(move);
16
+ }
17
+ }
@@ -0,0 +1,17 @@
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 ConfluenceRule extends CardRule {
8
+ entersEffect: boolean;
9
+ onCardEnters(card: Card, side: Deck): MaterialMove[];
10
+ }
11
+ export declare const Confluence: {
12
+ power: number;
13
+ type: CardType;
14
+ suit: CardSuit;
15
+ rule: typeof ConfluenceRule;
16
+ };
17
+ export {};
@@ -0,0 +1,19 @@
1
+ import { cardProperties } from '../../CardProperties';
2
+ import { CardRule } from '../../CardRule';
3
+ import { CardSuit } from '../../CardSuit';
4
+ import { CardType } from '../../CardType';
5
+ class ConfluenceRule extends CardRule {
6
+ entersEffect = true;
7
+ onCardEnters(card, side) {
8
+ if (side === this.player && cardProperties[card].type === CardType.Action) {
9
+ this.addPendingEffect();
10
+ }
11
+ return [];
12
+ }
13
+ }
14
+ export const Confluence = {
15
+ power: 1,
16
+ type: CardType.Action,
17
+ suit: CardSuit.Twilight,
18
+ rule: ConfluenceRule
19
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class CoverOfNightRule extends CardRule {
5
+ entersEffect: boolean;
6
+ }
7
+ export declare const CoverOfNight: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof CoverOfNightRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class CoverOfNightRule extends CardRule {
5
+ entersEffect = true;
6
+ }
7
+ export const CoverOfNight = {
8
+ power: 2,
9
+ type: CardType.Action,
10
+ suit: CardSuit.Night,
11
+ rule: CoverOfNightRule
12
+ };
@@ -0,0 +1,4 @@
1
+ import { StunCardRule } from '../../../rules/StunCardRule';
2
+ export declare class CoverOfNightEffectRule extends StunCardRule {
3
+ stunCount: number;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { StunCardRule } from '../../../rules/StunCardRule';
2
+ export class CoverOfNightEffectRule extends StunCardRule {
3
+ stunCount = 2;
4
+ }
@@ -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 ElaraBlazingArrowRule extends CardRule {
6
+ permanentEffectTag: CardTag;
7
+ }
8
+ export declare const ElaraBlazingArrow: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof ElaraBlazingArrowRule;
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 ElaraBlazingArrowRule extends CardRule {
6
+ permanentEffectTag = CardTag.Archer;
7
+ }
8
+ export const ElaraBlazingArrow = {
9
+ power: 2,
10
+ type: CardType.Creature,
11
+ suit: CardSuit.Night,
12
+ rule: ElaraBlazingArrowRule
13
+ };
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class HarvestRule extends CardRule {
5
+ entersEffect: boolean;
6
+ }
7
+ export declare const Harvest: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof HarvestRule;
12
+ };
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class HarvestRule extends CardRule {
5
+ entersEffect = true;
6
+ }
7
+ export const Harvest = {
8
+ power: 1,
9
+ type: CardType.Action,
10
+ suit: CardSuit.Twilight,
11
+ rule: HarvestRule
12
+ };
@@ -0,0 +1,4 @@
1
+ import { StashPowerTokenEffectRule } from '../../../rules/StashPowerTokenEffectRule';
2
+ export declare class HarvestEffectRule extends StashPowerTokenEffectRule {
3
+ getStashCount(): number;
4
+ }
@@ -0,0 +1,6 @@
1
+ import { StashPowerTokenEffectRule } from '../../../rules/StashPowerTokenEffectRule';
2
+ export class HarvestEffectRule extends StashPowerTokenEffectRule {
3
+ getStashCount() {
4
+ return 3;
5
+ }
6
+ }
@@ -0,0 +1,15 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardTag } from '../../CardTag';
4
+ import { CardType } from '../../CardType';
5
+ declare class HedgeKnightRule extends CardRule {
6
+ getPowerIfNotStunned(): number;
7
+ }
8
+ export declare const HedgeKnight: {
9
+ power: number;
10
+ type: CardType;
11
+ tag: CardTag;
12
+ suit: CardSuit;
13
+ rule: typeof HedgeKnightRule;
14
+ };
15
+ export {};
@@ -0,0 +1,18 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardTag } from '../../CardTag';
4
+ import { CardType } from '../../CardType';
5
+ import { Memory } from '../../../Memory';
6
+ class HedgeKnightRule extends CardRule {
7
+ getPowerIfNotStunned() {
8
+ const wasPlayedThisTurn = this.remind(Memory.CardsPlayed, this.player).includes(this.index);
9
+ return super.getPowerIfNotStunned() + (wasPlayedThisTurn ? 3 : 0);
10
+ }
11
+ }
12
+ export const HedgeKnight = {
13
+ power: 3,
14
+ type: CardType.Creature,
15
+ tag: CardTag.Knight,
16
+ suit: CardSuit.Day,
17
+ rule: HedgeKnightRule
18
+ };
@@ -0,0 +1,14 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class LoyalSquireRule extends CardRule {
5
+ entersEffect: boolean;
6
+ onRoundEnd(): never[];
7
+ }
8
+ export declare const LoyalSquire: {
9
+ power: number;
10
+ type: CardType;
11
+ suit: CardSuit;
12
+ rule: typeof LoyalSquireRule;
13
+ };
14
+ export {};
@@ -0,0 +1,16 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ class LoyalSquireRule extends CardRule {
5
+ entersEffect = true;
6
+ onRoundEnd() {
7
+ this.addPendingEffect();
8
+ return [];
9
+ }
10
+ }
11
+ export const LoyalSquire = {
12
+ power: 1,
13
+ type: CardType.Creature,
14
+ suit: CardSuit.Day,
15
+ rule: LoyalSquireRule
16
+ };
@@ -0,0 +1,6 @@
1
+ import { Material } from '@gamepark/rules-api';
2
+ import { ReturnCardRule } from '../../../rules/ReturnCardRule';
3
+ export declare class LoyalSquireEffectRule extends ReturnCardRule {
4
+ isOptional: boolean;
5
+ getTargets(): Material;
6
+ }
@@ -0,0 +1,14 @@
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 LoyalSquireEffectRule extends ReturnCardRule {
7
+ isOptional = false;
8
+ getTargets() {
9
+ return this.material(MaterialType.Card)
10
+ .location(LocationType.PlayArea)
11
+ .player(this.player)
12
+ .id((id) => cardProperties[id.front].tag === CardTag.Knight);
13
+ }
14
+ }
@@ -0,0 +1,13 @@
1
+ import { CardRule } from '../../CardRule';
2
+ import { CardSuit } from '../../CardSuit';
3
+ import { CardType } from '../../CardType';
4
+ declare class NightguardRule extends CardRule {
5
+ getPowerIfNotStunned(): number;
6
+ }
7
+ export declare const Nightguard: {
8
+ power: number;
9
+ type: CardType;
10
+ suit: CardSuit;
11
+ rule: typeof NightguardRule;
12
+ };
13
+ export {};