@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,42 @@
|
|
|
1
|
+
import { PlayerTurnRule } from '@gamepark/rules-api';
|
|
2
|
+
import { cardProperties } from '../material/CardProperties';
|
|
3
|
+
import { CardType } from '../material/CardType';
|
|
4
|
+
import { LocationType } from '../material/LocationType';
|
|
5
|
+
import { MaterialType } from '../material/MaterialType';
|
|
6
|
+
import { Memory } from '../Memory';
|
|
7
|
+
import { PlayerHelper } from './PlayerHelper';
|
|
8
|
+
import { RuleId } from './RuleId';
|
|
9
|
+
export class StartPlayerTurnRule extends PlayerTurnRule {
|
|
10
|
+
onRuleStart() {
|
|
11
|
+
const moves = [];
|
|
12
|
+
this.memorize(Memory.CurrentPlayer, this.player);
|
|
13
|
+
this.memorize(Memory.CardsPlayed, [], this.player);
|
|
14
|
+
this.memorize(Memory.OncePerTurnEffects, []);
|
|
15
|
+
this.forget(Memory.Suit);
|
|
16
|
+
const actionCards = this.material(MaterialType.Card)
|
|
17
|
+
.location(LocationType.PlayArea)
|
|
18
|
+
.player(this.player)
|
|
19
|
+
.filter((card) => cardProperties[card.id.front].type === CardType.Action);
|
|
20
|
+
moves.push(...actionCards.moveItems({ type: LocationType.PlayerDiscard, player: this.player }));
|
|
21
|
+
for (const cardRule of new PlayerHelper(this.game, this.player).cardRules) {
|
|
22
|
+
if (!cardRule.isStunned()) {
|
|
23
|
+
moves.push(...cardRule.onPlayerTurnStart(this.player));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
for (const cardRule of new PlayerHelper(this.game, this.nextPlayer).cardRules) {
|
|
27
|
+
if (!cardRule.isStunned()) {
|
|
28
|
+
moves.push(...cardRule.onPlayerTurnStart(this.player));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const stunTokens = this.material(MaterialType.StunToken).location(LocationType.CardStunTokens);
|
|
32
|
+
moves.push(...stunTokens.deleteItems(1));
|
|
33
|
+
const pendingEffects = this.remind(Memory.PendingEffects);
|
|
34
|
+
if (pendingEffects.length > 0) {
|
|
35
|
+
moves.push(...new PlayerHelper(this.game, this.player).getCardRule(pendingEffects[0].cardIndex).startEffect());
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
moves.push(this.startRule(RuleId.PlayCard));
|
|
39
|
+
}
|
|
40
|
+
return moves;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { PlayerTurnRule } from '@gamepark/rules-api';
|
|
2
|
+
import { RuleId } from './RuleId';
|
|
3
|
+
export declare class StartRoundRule extends PlayerTurnRule {
|
|
4
|
+
onRuleStart(): (import("@gamepark/rules-api").CreateItem<number, number, number> | import("@gamepark/rules-api").StartRule<RuleId.StartPlayerTurn>)[];
|
|
5
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { PlayerTurnRule } from '@gamepark/rules-api';
|
|
2
|
+
import { LocationType } from '../material/LocationType';
|
|
3
|
+
import { MaterialType } from '../material/MaterialType';
|
|
4
|
+
import { RuleId } from './RuleId';
|
|
5
|
+
export class StartRoundRule extends PlayerTurnRule {
|
|
6
|
+
onRuleStart() {
|
|
7
|
+
return [
|
|
8
|
+
this.material(MaterialType.Crystal).createItem({ location: { type: LocationType.Stake } }),
|
|
9
|
+
this.startRule(RuleId.StartPlayerTurn)
|
|
10
|
+
];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LocationType } from '../material/LocationType';
|
|
2
|
+
import { MaterialType } from '../material/MaterialType';
|
|
3
|
+
import { EffectRule } from './EffectRule';
|
|
4
|
+
export class StashPowerTokenEffectRule extends EffectRule {
|
|
5
|
+
onRuleStart() {
|
|
6
|
+
const moves = [];
|
|
7
|
+
const stashCount = this.getStashCount();
|
|
8
|
+
if (stashCount > 0) {
|
|
9
|
+
moves.push(this.material(MaterialType.PowerToken).createItem({
|
|
10
|
+
location: { type: LocationType.PlayerStash, player: this.player },
|
|
11
|
+
quantity: stashCount
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
moves.push(...this.endEffect());
|
|
15
|
+
return moves;
|
|
16
|
+
}
|
|
17
|
+
getStashCount() {
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { LocationType } from '../material/LocationType';
|
|
2
|
+
import { MaterialType } from '../material/MaterialType';
|
|
3
|
+
import { EffectRule } from './EffectRule';
|
|
4
|
+
export class StealCrystalEffectRule extends EffectRule {
|
|
5
|
+
onRuleStart() {
|
|
6
|
+
const moves = this.endEffect();
|
|
7
|
+
const opponentCrystals = this.material(MaterialType.Crystal).location(LocationType.PlayerCrystals).player(this.nextPlayer);
|
|
8
|
+
if (opponentCrystals.length > 0) {
|
|
9
|
+
moves.unshift(opponentCrystals.moveItem({ type: LocationType.PlayerCrystals, player: this.player }));
|
|
10
|
+
}
|
|
11
|
+
return moves;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ItemMove, Material, MaterialMove } from '@gamepark/rules-api';
|
|
2
|
+
import { EffectRule } from './EffectRule';
|
|
3
|
+
export declare class StunCardRule extends EffectRule {
|
|
4
|
+
stunCount: number;
|
|
5
|
+
onRuleStart(): MaterialMove[];
|
|
6
|
+
getPlayerMoves(): MaterialMove[];
|
|
7
|
+
getTargets(): Material;
|
|
8
|
+
afterItemMove(move: ItemMove): MaterialMove[];
|
|
9
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { isCreateItemType } from '@gamepark/rules-api';
|
|
2
|
+
import { cardProperties } from '../material/CardProperties';
|
|
3
|
+
import { CardType } from '../material/CardType';
|
|
4
|
+
import { LocationType } from '../material/LocationType';
|
|
5
|
+
import { MaterialType } from '../material/MaterialType';
|
|
6
|
+
import { EffectRule } from './EffectRule';
|
|
7
|
+
export class StunCardRule extends EffectRule {
|
|
8
|
+
stunCount = 1;
|
|
9
|
+
onRuleStart() {
|
|
10
|
+
if (!this.getTargets().length) {
|
|
11
|
+
return this.endEffect();
|
|
12
|
+
}
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
getPlayerMoves() {
|
|
16
|
+
const creatures = this.getTargets().getIndexes();
|
|
17
|
+
const moves = [];
|
|
18
|
+
for (const creatureIndex of creatures) {
|
|
19
|
+
moves.push(this.material(MaterialType.StunToken).createItem({
|
|
20
|
+
location: {
|
|
21
|
+
type: LocationType.CardStunTokens,
|
|
22
|
+
parent: creatureIndex
|
|
23
|
+
},
|
|
24
|
+
quantity: this.stunCount
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
return moves;
|
|
28
|
+
}
|
|
29
|
+
getTargets() {
|
|
30
|
+
return this.material(MaterialType.Card)
|
|
31
|
+
.location(LocationType.PlayArea)
|
|
32
|
+
.id((id) => cardProperties[id.front].type === CardType.Creature);
|
|
33
|
+
}
|
|
34
|
+
afterItemMove(move) {
|
|
35
|
+
if (isCreateItemType(MaterialType.StunToken)(move) && move.item.location.type === LocationType.CardStunTokens) {
|
|
36
|
+
return this.endEffect();
|
|
37
|
+
}
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gamepark/skyrift",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The rules of SkyRift adapted for Game Park",
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"author": "Romain Fromi <romain@game-park.com> (https://game-park.com/)",
|
|
13
|
+
"license": "ISC",
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"test": "vitest",
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"prepublishOnly": "tsc",
|
|
21
|
+
"publish": "lerna publish",
|
|
22
|
+
"lint": "eslint --fix"
|
|
23
|
+
},
|
|
24
|
+
"peerDependencies": {
|
|
25
|
+
"@gamepark/rules-api": ">=7",
|
|
26
|
+
"es-toolkit": "^1.39.10"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@gamepark/rules-api": "~7.2.0",
|
|
30
|
+
"es-toolkit": "^1.43.0",
|
|
31
|
+
"vitest": "^4.0.15"
|
|
32
|
+
}
|
|
33
|
+
}
|