@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,14 @@
|
|
|
1
|
+
import { CardSuit } from '../../CardSuit';
|
|
2
|
+
import { CardTag } from '../../CardTag';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
import { CannonCardRule } from './CannonCardRule';
|
|
5
|
+
class BrassDragonRule extends CannonCardRule {
|
|
6
|
+
challenge = true;
|
|
7
|
+
}
|
|
8
|
+
export const BrassDragon = {
|
|
9
|
+
power: 5,
|
|
10
|
+
type: CardType.Action,
|
|
11
|
+
tag: CardTag.Cannon,
|
|
12
|
+
suit: CardSuit.Day,
|
|
13
|
+
rule: BrassDragonRule
|
|
14
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Memory } from '../../../Memory';
|
|
2
|
+
import { PlayerHelper } from '../../../rules/PlayerHelper';
|
|
3
|
+
import { cardProperties } from '../../CardProperties';
|
|
4
|
+
import { CardRule } from '../../CardRule';
|
|
5
|
+
import { CardTag } from '../../CardTag';
|
|
6
|
+
import { MaterialType } from '../../MaterialType';
|
|
7
|
+
export class CannonCardRule extends CardRule {
|
|
8
|
+
canBePlayed() {
|
|
9
|
+
const hasMistyGunner = new PlayerHelper(this.game, this.player).cardRules.some((rule) => rule.hasPermanentEffectOnTag(CardTag.Cannon));
|
|
10
|
+
if (hasMistyGunner) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
const hasPlayedCannon = this.remind(Memory.CardsPlayed, this.player).some((cardIndex) => cardProperties[this.material(MaterialType.Card).getItem(cardIndex).id.front].tag === CardTag.Cannon);
|
|
14
|
+
if (hasPlayedCannon) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return super.canBePlayed();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -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 DarkBlazerRule extends CannonCardRule {
|
|
6
|
+
entersEffect: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const DarkBlazer: {
|
|
9
|
+
power: number;
|
|
10
|
+
type: CardType;
|
|
11
|
+
tag: CardTag;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof DarkBlazerRule;
|
|
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 DarkBlazerRule extends CannonCardRule {
|
|
6
|
+
entersEffect = true;
|
|
7
|
+
}
|
|
8
|
+
export const DarkBlazer = {
|
|
9
|
+
power: 3,
|
|
10
|
+
type: CardType.Action,
|
|
11
|
+
tag: CardTag.Cannon,
|
|
12
|
+
suit: CardSuit.Night,
|
|
13
|
+
rule: DarkBlazerRule
|
|
14
|
+
};
|
|
@@ -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 DawnsDoomRule extends CannonCardRule {
|
|
6
|
+
entersEffect: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const DawnsDoom: {
|
|
9
|
+
power: number;
|
|
10
|
+
type: CardType;
|
|
11
|
+
tag: CardTag;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof DawnsDoomRule;
|
|
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 DawnsDoomRule extends CannonCardRule {
|
|
6
|
+
entersEffect = true;
|
|
7
|
+
}
|
|
8
|
+
export const DawnsDoom = {
|
|
9
|
+
power: 4,
|
|
10
|
+
type: CardType.Action,
|
|
11
|
+
tag: CardTag.Cannon,
|
|
12
|
+
suit: CardSuit.Twilight,
|
|
13
|
+
rule: DawnsDoomRule
|
|
14
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { DrawEffectRule } from '../../../rules/DrawEffectRule';
|
|
2
|
+
import { cardProperties } from '../../CardProperties';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { LocationType } from '../../LocationType';
|
|
5
|
+
import { MaterialType } from '../../MaterialType';
|
|
6
|
+
export class DawnsDoomEffectRule extends DrawEffectRule {
|
|
7
|
+
getDrawCount() {
|
|
8
|
+
const onlyTwilightCards = this.material(MaterialType.Card)
|
|
9
|
+
.location(LocationType.PlayArea)
|
|
10
|
+
.getItems()
|
|
11
|
+
.every((item) => cardProperties[item.id.front].suit === CardSuit.Twilight);
|
|
12
|
+
return onlyTwilightCards ? 1 : 0;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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 LongJawsSilverRule extends CardRule {
|
|
6
|
+
challenge: boolean;
|
|
7
|
+
onWinRound(): MaterialMove[];
|
|
8
|
+
}
|
|
9
|
+
export declare const LongJawsSilver: {
|
|
10
|
+
power: number;
|
|
11
|
+
type: CardType;
|
|
12
|
+
suit: CardSuit;
|
|
13
|
+
rule: typeof LongJawsSilverRule;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Memory } from '../../../Memory';
|
|
2
|
+
import { CardRule } from '../../CardRule';
|
|
3
|
+
import { CardSuit } from '../../CardSuit';
|
|
4
|
+
import { CardType } from '../../CardType';
|
|
5
|
+
class LongJawsSilverRule extends CardRule {
|
|
6
|
+
challenge = true;
|
|
7
|
+
onWinRound() {
|
|
8
|
+
if (this.remind(Memory.CurrentPlayer) !== this.player) {
|
|
9
|
+
this.addPendingEffect();
|
|
10
|
+
}
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export const LongJawsSilver = {
|
|
15
|
+
power: 3,
|
|
16
|
+
type: CardType.Creature,
|
|
17
|
+
suit: CardSuit.Twilight,
|
|
18
|
+
rule: LongJawsSilverRule
|
|
19
|
+
};
|
|
@@ -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 MistyGunnerRule extends CardRule {
|
|
6
|
+
permanentEffectTag: CardTag;
|
|
7
|
+
}
|
|
8
|
+
export declare const MistyGunner: {
|
|
9
|
+
power: number;
|
|
10
|
+
type: CardType;
|
|
11
|
+
suit: CardSuit;
|
|
12
|
+
rule: typeof MistyGunnerRule;
|
|
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 MistyGunnerRule extends CardRule {
|
|
6
|
+
permanentEffectTag = CardTag.Cannon;
|
|
7
|
+
}
|
|
8
|
+
export const MistyGunner = {
|
|
9
|
+
power: 2,
|
|
10
|
+
type: CardType.Creature,
|
|
11
|
+
suit: CardSuit.Day,
|
|
12
|
+
rule: MistyGunnerRule
|
|
13
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class OttoPouchyRule extends CardRule {
|
|
5
|
+
entersEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const OttoPouchy: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof OttoPouchyRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class OttoPouchyRule extends CardRule {
|
|
5
|
+
entersEffect = true;
|
|
6
|
+
}
|
|
7
|
+
export const OttoPouchy = {
|
|
8
|
+
power: 2,
|
|
9
|
+
type: CardType.Creature,
|
|
10
|
+
suit: CardSuit.Night,
|
|
11
|
+
rule: OttoPouchyRule
|
|
12
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DrawEffectRule } from '../../../rules/DrawEffectRule';
|
|
2
|
+
import { LocationType } from '../../LocationType';
|
|
3
|
+
import { MaterialType } from '../../MaterialType';
|
|
4
|
+
export class OttoPouchyEffectRule 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,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 PowderMonkeyRule extends CardRule {
|
|
8
|
+
onCardEnters(card: Card, side: Deck): MaterialMove[];
|
|
9
|
+
}
|
|
10
|
+
export declare const PowderMonkey: {
|
|
11
|
+
power: number;
|
|
12
|
+
type: CardType;
|
|
13
|
+
suit: CardSuit;
|
|
14
|
+
rule: typeof PowderMonkeyRule;
|
|
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 PowderMonkeyRule 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 PowderMonkey = {
|
|
15
|
+
power: 1,
|
|
16
|
+
type: CardType.Creature,
|
|
17
|
+
suit: CardSuit.Day,
|
|
18
|
+
rule: PowderMonkeyRule
|
|
19
|
+
};
|
|
@@ -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 PowderMonkeyEffectRule 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,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 RicoSkeyeRule extends CardRule {
|
|
7
|
+
onPlayerTurnStart(player: Deck): MaterialMove[];
|
|
8
|
+
startEffect(): import("@gamepark/rules-api").StartPlayerTurn<number, import("../../Card").Card>[];
|
|
9
|
+
}
|
|
10
|
+
export declare const RicoSkeye: {
|
|
11
|
+
power: number;
|
|
12
|
+
type: CardType;
|
|
13
|
+
suit: CardSuit;
|
|
14
|
+
rule: typeof RicoSkeyeRule;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class RicoSkeyeRule 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 RicoSkeye = {
|
|
16
|
+
power: 3,
|
|
17
|
+
type: CardType.Creature,
|
|
18
|
+
suit: CardSuit.Day,
|
|
19
|
+
rule: RicoSkeyeRule
|
|
20
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CustomMove, MaterialMove, MoveItem } from '@gamepark/rules-api';
|
|
2
|
+
import { DiscardEffectRule } from '../../../rules/DiscardEffectRule';
|
|
3
|
+
export declare class RicoSkeyeEffectRule 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 RicoSkeyeEffectRule 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,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class SaltyDogRule extends CardRule {
|
|
5
|
+
entersEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const SaltyDog: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof SaltyDogRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class SaltyDogRule extends CardRule {
|
|
5
|
+
entersEffect = true;
|
|
6
|
+
}
|
|
7
|
+
export const SaltyDog = {
|
|
8
|
+
power: 2,
|
|
9
|
+
type: CardType.Creature,
|
|
10
|
+
suit: CardSuit.Twilight,
|
|
11
|
+
rule: SaltyDogRule
|
|
12
|
+
};
|
|
@@ -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 SaltyDogEffectRule 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
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class ScallywagRule extends CardRule {
|
|
5
|
+
oncePerTurnEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const Scallywag: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof ScallywagRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class ScallywagRule extends CardRule {
|
|
5
|
+
oncePerTurnEffect = true;
|
|
6
|
+
}
|
|
7
|
+
export const Scallywag = {
|
|
8
|
+
power: 2,
|
|
9
|
+
type: CardType.Creature,
|
|
10
|
+
suit: CardSuit.Night,
|
|
11
|
+
rule: ScallywagRule
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DestroyEffectRule } from '../../../rules/DestroyEffectRule';
|
|
2
|
+
import { PlayerHelper } from '../../../rules/PlayerHelper';
|
|
3
|
+
import { LocationType } from '../../LocationType';
|
|
4
|
+
import { MaterialType } from '../../MaterialType';
|
|
5
|
+
export class ScallywagEffectRule extends DestroyEffectRule {
|
|
6
|
+
getTargets() {
|
|
7
|
+
const helper = new PlayerHelper(this.game);
|
|
8
|
+
const scallywagPower = this.cardRule.getPower();
|
|
9
|
+
return this.material(MaterialType.Card)
|
|
10
|
+
.location(LocationType.PlayArea)
|
|
11
|
+
.index((index) => helper.getCardRule(index).getPower() < scallywagPower);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class SkupperRule extends CardRule {
|
|
5
|
+
oncePerTurnEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const Skupper: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof SkupperRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class SkupperRule extends CardRule {
|
|
5
|
+
oncePerTurnEffect = true;
|
|
6
|
+
}
|
|
7
|
+
export const Skupper = {
|
|
8
|
+
power: 2,
|
|
9
|
+
type: CardType.Creature,
|
|
10
|
+
suit: CardSuit.Night,
|
|
11
|
+
rule: SkupperRule
|
|
12
|
+
};
|
|
@@ -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 SkupperEffectRule 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 SurpriseLootRule extends CardRule {
|
|
5
|
+
entersEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const SurpriseLoot: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof SurpriseLootRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class SurpriseLootRule extends CardRule {
|
|
5
|
+
entersEffect = true;
|
|
6
|
+
}
|
|
7
|
+
export const SurpriseLoot = {
|
|
8
|
+
power: 2,
|
|
9
|
+
type: CardType.Action,
|
|
10
|
+
suit: CardSuit.Twilight,
|
|
11
|
+
rule: SurpriseLootRule
|
|
12
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { cardProperties } from '../../CardProperties';
|
|
2
|
+
import { CardType } from '../../CardType';
|
|
3
|
+
import { LocationType } from '../../LocationType';
|
|
4
|
+
import { MaterialType } from '../../MaterialType';
|
|
5
|
+
import { StashPowerTokenEffectRule } from '../../../rules/StashPowerTokenEffectRule';
|
|
6
|
+
export class SurpriseLootEffectRule extends StashPowerTokenEffectRule {
|
|
7
|
+
getStashCount() {
|
|
8
|
+
return this.material(MaterialType.Card)
|
|
9
|
+
.location(LocationType.PlayArea)
|
|
10
|
+
.player(this.player)
|
|
11
|
+
.id((id) => cardProperties[id.front].type === CardType.Creature).length;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -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 TreasureMapRule extends CardRule {
|
|
6
|
+
onWinRound(): MaterialMove[];
|
|
7
|
+
}
|
|
8
|
+
export declare const TreasureMap: {
|
|
9
|
+
power: number;
|
|
10
|
+
type: CardType;
|
|
11
|
+
suit: CardSuit;
|
|
12
|
+
rule: typeof TreasureMapRule;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
class TreasureMapRule extends CardRule {
|
|
5
|
+
onWinRound() {
|
|
6
|
+
this.addPendingEffect();
|
|
7
|
+
return [];
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export const TreasureMap = {
|
|
11
|
+
power: 3,
|
|
12
|
+
type: CardType.Action,
|
|
13
|
+
suit: CardSuit.Day,
|
|
14
|
+
rule: TreasureMapRule
|
|
15
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardRule } from '../../CardRule';
|
|
2
|
+
import { CardSuit } from '../../CardSuit';
|
|
3
|
+
import { CardType } from '../../CardType';
|
|
4
|
+
declare class TropicalRuffianRule extends CardRule {
|
|
5
|
+
entersEffect: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const TropicalRuffian: {
|
|
8
|
+
power: number;
|
|
9
|
+
type: CardType;
|
|
10
|
+
suit: CardSuit;
|
|
11
|
+
rule: typeof TropicalRuffianRule;
|
|
12
|
+
};
|
|
13
|
+
export {};
|