@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.
- package/dist/CustomMoveType.d.ts +9 -0
- package/dist/CustomMoveType.js +10 -0
- package/dist/Deck.d.ts +4 -0
- package/dist/Deck.js +5 -0
- package/dist/Memory.d.ts +10 -0
- package/dist/Memory.js +11 -0
- package/dist/SkyriftOptions.d.ts +10 -0
- package/dist/SkyriftOptions.js +11 -0
- package/dist/SkyriftRules.d.ts +90 -0
- package/dist/SkyriftRules.js +140 -0
- package/dist/SkyriftSetup.d.ts +12 -0
- package/dist/SkyriftSetup.js +40 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/material/Card.d.ts +39 -0
- package/dist/material/Card.js +35 -0
- package/dist/material/CardProperties.d.ts +14 -0
- package/dist/material/CardProperties.js +67 -0
- package/dist/material/CardRule.d.ts +36 -0
- package/dist/material/CardRule.js +113 -0
- package/dist/material/CardSuit.d.ts +5 -0
- package/dist/material/CardSuit.js +6 -0
- package/dist/material/CardTag.d.ts +5 -0
- package/dist/material/CardTag.js +6 -0
- package/dist/material/CardType.d.ts +4 -0
- package/dist/material/CardType.js +5 -0
- package/dist/material/Effect.d.ts +4 -0
- package/dist/material/Effect.js +1 -0
- package/dist/material/LocationType.d.ts +14 -0
- package/dist/material/LocationType.js +15 -0
- package/dist/material/MaterialType.d.ts +6 -0
- package/dist/material/MaterialType.js +7 -0
- package/dist/material/decks/HearthBlade.d.ts +18 -0
- package/dist/material/decks/HearthBlade.js +19 -0
- package/dist/material/decks/HighWave.d.ts +18 -0
- package/dist/material/decks/HighWave.js +19 -0
- package/dist/material/decks/heathblade/ArcherRule.d.ts +6 -0
- package/dist/material/decks/heathblade/ArcherRule.js +15 -0
- package/dist/material/decks/heathblade/Armada.d.ts +14 -0
- package/dist/material/decks/heathblade/Armada.js +16 -0
- package/dist/material/decks/heathblade/ArmadaEffectRule.d.ts +7 -0
- package/dist/material/decks/heathblade/ArmadaEffectRule.js +17 -0
- package/dist/material/decks/heathblade/Confluence.d.ts +17 -0
- package/dist/material/decks/heathblade/Confluence.js +19 -0
- package/dist/material/decks/heathblade/CoverOfNight.d.ts +13 -0
- package/dist/material/decks/heathblade/CoverOfNight.js +12 -0
- package/dist/material/decks/heathblade/CoverOfNightEffectRule.d.ts +4 -0
- package/dist/material/decks/heathblade/CoverOfNightEffectRule.js +4 -0
- package/dist/material/decks/heathblade/ElaraBlazingArrow.d.ts +14 -0
- package/dist/material/decks/heathblade/ElaraBlazingArrow.js +13 -0
- package/dist/material/decks/heathblade/Harvest.d.ts +13 -0
- package/dist/material/decks/heathblade/Harvest.js +12 -0
- package/dist/material/decks/heathblade/HarvestEffectRule.d.ts +4 -0
- package/dist/material/decks/heathblade/HarvestEffectRule.js +6 -0
- package/dist/material/decks/heathblade/HedgeKnight.d.ts +15 -0
- package/dist/material/decks/heathblade/HedgeKnight.js +18 -0
- package/dist/material/decks/heathblade/LoyalSquire.d.ts +14 -0
- package/dist/material/decks/heathblade/LoyalSquire.js +16 -0
- package/dist/material/decks/heathblade/LoyalSquireEffectRule.d.ts +6 -0
- package/dist/material/decks/heathblade/LoyalSquireEffectRule.js +14 -0
- package/dist/material/decks/heathblade/Nightguard.d.ts +13 -0
- package/dist/material/decks/heathblade/Nightguard.js +22 -0
- package/dist/material/decks/heathblade/OzmaTheMage.d.ts +17 -0
- package/dist/material/decks/heathblade/OzmaTheMage.js +28 -0
- package/dist/material/decks/heathblade/OzmaTheMageEffectRule.d.ts +4 -0
- package/dist/material/decks/heathblade/OzmaTheMageEffectRule.js +20 -0
- package/dist/material/decks/heathblade/PrincessLitha.d.ts +17 -0
- package/dist/material/decks/heathblade/PrincessLitha.js +28 -0
- package/dist/material/decks/heathblade/PrincessLithaEffectRule.d.ts +6 -0
- package/dist/material/decks/heathblade/PrincessLithaEffectRule.js +15 -0
- package/dist/material/decks/heathblade/RobbinsMasterOfArms.d.ts +15 -0
- package/dist/material/decks/heathblade/RobbinsMasterOfArms.js +14 -0
- package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.d.ts +5 -0
- package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.js +29 -0
- package/dist/material/decks/heathblade/Sacrifice.d.ts +13 -0
- package/dist/material/decks/heathblade/Sacrifice.js +12 -0
- package/dist/material/decks/heathblade/SacrificeEffectRule.d.ts +10 -0
- package/dist/material/decks/heathblade/SacrificeEffectRule.js +48 -0
- package/dist/material/decks/heathblade/Shadowbolt.d.ts +15 -0
- package/dist/material/decks/heathblade/Shadowbolt.js +14 -0
- package/dist/material/decks/heathblade/SoulBlade.d.ts +13 -0
- package/dist/material/decks/heathblade/SoulBlade.js +12 -0
- package/dist/material/decks/heathblade/SoulBladeEffectRule.d.ts +5 -0
- package/dist/material/decks/heathblade/SoulBladeEffectRule.js +15 -0
- package/dist/material/decks/heathblade/WatchTower.d.ts +14 -0
- package/dist/material/decks/heathblade/WatchTower.js +16 -0
- package/dist/material/decks/heathblade/WatchTowerEffectRule.d.ts +4 -0
- package/dist/material/decks/heathblade/WatchTowerEffectRule.js +13 -0
- package/dist/material/decks/heathblade/WoodSlinger.d.ts +15 -0
- package/dist/material/decks/heathblade/WoodSlinger.js +14 -0
- package/dist/material/decks/highwave/AeliaSteadyHand.d.ts +13 -0
- package/dist/material/decks/highwave/AeliaSteadyHand.js +12 -0
- package/dist/material/decks/highwave/BoardingParty.d.ts +13 -0
- package/dist/material/decks/highwave/BoardingParty.js +12 -0
- package/dist/material/decks/highwave/BoardingPartyEffectRule.d.ts +10 -0
- package/dist/material/decks/highwave/BoardingPartyEffectRule.js +59 -0
- package/dist/material/decks/highwave/BrassDragon.d.ts +15 -0
- package/dist/material/decks/highwave/BrassDragon.js +14 -0
- package/dist/material/decks/highwave/CannonCardRule.d.ts +4 -0
- package/dist/material/decks/highwave/CannonCardRule.js +19 -0
- package/dist/material/decks/highwave/DarkBlazer.d.ts +15 -0
- package/dist/material/decks/highwave/DarkBlazer.js +14 -0
- package/dist/material/decks/highwave/DarkBlazerEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/DarkBlazerEffectRule.js +4 -0
- package/dist/material/decks/highwave/DawnsDoom.d.ts +15 -0
- package/dist/material/decks/highwave/DawnsDoom.js +14 -0
- package/dist/material/decks/highwave/DawnsDoomEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/DawnsDoomEffectRule.js +14 -0
- package/dist/material/decks/highwave/LongJawsSilver.d.ts +15 -0
- package/dist/material/decks/highwave/LongJawsSilver.js +19 -0
- package/dist/material/decks/highwave/MistyGunner.d.ts +14 -0
- package/dist/material/decks/highwave/MistyGunner.js +13 -0
- package/dist/material/decks/highwave/OttoPouchy.d.ts +13 -0
- package/dist/material/decks/highwave/OttoPouchy.js +12 -0
- package/dist/material/decks/highwave/OttoPouchyEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/OttoPouchyEffectRule.js +9 -0
- package/dist/material/decks/highwave/PowderMonkey.d.ts +16 -0
- package/dist/material/decks/highwave/PowderMonkey.js +19 -0
- package/dist/material/decks/highwave/PowderMonkeyEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/PowderMonkeyEffectRule.js +13 -0
- package/dist/material/decks/highwave/RicoSkeye.d.ts +16 -0
- package/dist/material/decks/highwave/RicoSkeye.js +20 -0
- package/dist/material/decks/highwave/RicoSkeyeEffectRule.d.ts +7 -0
- package/dist/material/decks/highwave/RicoSkeyeEffectRule.js +21 -0
- package/dist/material/decks/highwave/SaltyDog.d.ts +13 -0
- package/dist/material/decks/highwave/SaltyDog.js +12 -0
- package/dist/material/decks/highwave/SaltyDogEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/SaltyDogEffectRule.js +26 -0
- package/dist/material/decks/highwave/Scallywag.d.ts +13 -0
- package/dist/material/decks/highwave/Scallywag.js +12 -0
- package/dist/material/decks/highwave/ScallywagEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/ScallywagEffectRule.js +13 -0
- package/dist/material/decks/highwave/Skupper.d.ts +13 -0
- package/dist/material/decks/highwave/Skupper.js +12 -0
- package/dist/material/decks/highwave/SkupperEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/SkupperEffectRule.js +12 -0
- package/dist/material/decks/highwave/SurpriseLoot.d.ts +13 -0
- package/dist/material/decks/highwave/SurpriseLoot.js +12 -0
- package/dist/material/decks/highwave/SurpriseLootEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/SurpriseLootEffectRule.js +13 -0
- package/dist/material/decks/highwave/TreasureMap.d.ts +14 -0
- package/dist/material/decks/highwave/TreasureMap.js +15 -0
- package/dist/material/decks/highwave/TropicalRuffian.d.ts +13 -0
- package/dist/material/decks/highwave/TropicalRuffian.js +12 -0
- package/dist/rules/ChallengeRule.d.ts +7 -0
- package/dist/rules/ChallengeRule.js +23 -0
- package/dist/rules/DestroyEffectRule.d.ts +8 -0
- package/dist/rules/DestroyEffectRule.js +21 -0
- package/dist/rules/DiscardEffectRule.d.ts +10 -0
- package/dist/rules/DiscardEffectRule.js +35 -0
- package/dist/rules/DrawEffectRule.d.ts +6 -0
- package/dist/rules/DrawEffectRule.js +15 -0
- package/dist/rules/EffectRule.d.ts +7 -0
- package/dist/rules/EffectRule.js +41 -0
- package/dist/rules/EndRoundRule.d.ts +4 -0
- package/dist/rules/EndRoundRule.js +47 -0
- package/dist/rules/GainCrystalEffectRule.d.ts +5 -0
- package/dist/rules/GainCrystalEffectRule.js +8 -0
- package/dist/rules/MayChallengeRule.d.ts +6 -0
- package/dist/rules/MayChallengeRule.js +17 -0
- package/dist/rules/PlayCardRule.d.ts +9 -0
- package/dist/rules/PlayCardRule.js +92 -0
- package/dist/rules/PlayerHelper.d.ts +13 -0
- package/dist/rules/PlayerHelper.js +36 -0
- package/dist/rules/PrepareNextRoundRule.d.ts +7 -0
- package/dist/rules/PrepareNextRoundRule.js +24 -0
- package/dist/rules/PutPowerTokenEffectRule.d.ts +8 -0
- package/dist/rules/PutPowerTokenEffectRule.js +24 -0
- package/dist/rules/ReturnCardRule.d.ts +9 -0
- package/dist/rules/ReturnCardRule.js +27 -0
- package/dist/rules/RuleId.d.ts +34 -0
- package/dist/rules/RuleId.js +36 -0
- package/dist/rules/StartPlayerTurnRule.d.ts +4 -0
- package/dist/rules/StartPlayerTurnRule.js +42 -0
- package/dist/rules/StartRoundRule.d.ts +5 -0
- package/dist/rules/StartRoundRule.js +12 -0
- package/dist/rules/StashPowerTokenEffectRule.d.ts +6 -0
- package/dist/rules/StashPowerTokenEffectRule.js +20 -0
- package/dist/rules/StealCrystalEffectRule.d.ts +5 -0
- package/dist/rules/StealCrystalEffectRule.js +13 -0
- package/dist/rules/StunCardRule.d.ts +9 -0
- package/dist/rules/StunCardRule.js +40 -0
- 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 @@
|
|
|
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,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,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,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,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,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 {};
|