@gamepark/skyrift 0.2.8 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Deck.d.ts +1 -0
- package/dist/Deck.js +1 -0
- package/dist/Memory.d.ts +2 -1
- package/dist/Memory.js +1 -0
- package/dist/SkyriftRules.d.ts +35 -14
- package/dist/SkyriftRules.js +42 -15
- package/dist/SkyriftSetup.js +3 -0
- package/dist/material/Card.d.ts +26 -10
- package/dist/material/Card.js +26 -10
- package/dist/material/CardProperties.js +52 -20
- package/dist/material/CardRule.d.ts +3 -2
- package/dist/material/CardRule.js +14 -0
- package/dist/material/OngoingEffect.d.ts +8 -0
- package/dist/material/OngoingEffect.js +5 -0
- package/dist/material/decks/HearthBlade.js +4 -4
- package/dist/material/decks/HighWave.js +10 -10
- package/dist/material/decks/WinSands.d.ts +18 -0
- package/dist/material/decks/WinSands.js +19 -0
- package/dist/material/decks/heathblade/Confluence.js +1 -1
- package/dist/material/decks/heathblade/Harvest.js +1 -1
- package/dist/material/decks/heathblade/OzmaTheMageEffectRule.js +1 -3
- package/dist/material/decks/heathblade/RobbinsMasterOfArmsEffectRule.js +1 -3
- package/dist/material/decks/highwave/BonnyTheGunner.d.ts +14 -0
- package/dist/material/decks/highwave/BonnyTheGunner.js +13 -0
- package/dist/material/decks/highwave/CannonCardRule.js +5 -3
- package/dist/material/decks/highwave/DarkArmageddon.d.ts +15 -0
- package/dist/material/decks/highwave/DarkArmageddon.js +14 -0
- package/dist/material/decks/highwave/DarkArmageddonEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/DarkArmageddonEffectRule.js +4 -0
- package/dist/material/decks/highwave/EyeOfSky.d.ts +16 -0
- package/dist/material/decks/highwave/EyeOfSky.js +20 -0
- package/dist/material/decks/highwave/EyeOfSkyEffectRule.d.ts +7 -0
- package/dist/material/decks/highwave/EyeOfSkyEffectRule.js +21 -0
- package/dist/material/decks/highwave/FortunesCourse.d.ts +14 -0
- package/dist/material/decks/highwave/FortunesCourse.js +15 -0
- package/dist/material/decks/highwave/GoldenApocalypse.d.ts +15 -0
- package/dist/material/decks/highwave/GoldenApocalypse.js +14 -0
- package/dist/material/decks/highwave/OscarScullion.d.ts +13 -0
- package/dist/material/decks/highwave/OscarScullion.js +12 -0
- package/dist/material/decks/highwave/OscarScullionEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/OscarScullionEffectRule.js +12 -0
- package/dist/material/decks/highwave/OttoFactotum.d.ts +13 -0
- package/dist/material/decks/highwave/OttoFactotum.js +12 -0
- package/dist/material/decks/highwave/OttoFactotumEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/OttoFactotumEffectRule.js +9 -0
- package/dist/material/decks/highwave/RiggingRaiders.d.ts +13 -0
- package/dist/material/decks/highwave/RiggingRaiders.js +12 -0
- package/dist/material/decks/highwave/RiggingRaidersEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/RiggingRaidersEffectRule.js +17 -0
- package/dist/material/decks/highwave/SeaScorcher.d.ts +16 -0
- package/dist/material/decks/highwave/SeaScorcher.js +19 -0
- package/dist/material/decks/highwave/SeaScorcherEffectRule.d.ts +5 -0
- package/dist/material/decks/highwave/SeaScorcherEffectRule.js +13 -0
- package/dist/material/decks/highwave/TideRover.d.ts +13 -0
- package/dist/material/decks/highwave/TideRover.js +12 -0
- package/dist/material/decks/highwave/TideRoverEffectRule.d.ts +4 -0
- package/dist/material/decks/highwave/TideRoverEffectRule.js +26 -0
- package/dist/material/decks/highwave/TropicalRuffian.js +1 -1
- package/dist/material/decks/winsands/AbiSnakeCharmer.d.ts +13 -0
- package/dist/material/decks/winsands/AbiSnakeCharmer.js +12 -0
- package/dist/material/decks/winsands/AbiSnakeCharmerEffectRule.d.ts +7 -0
- package/dist/material/decks/winsands/AbiSnakeCharmerEffectRule.js +33 -0
- package/dist/material/decks/winsands/AncientCurse.d.ts +16 -0
- package/dist/material/decks/winsands/AncientCurse.js +23 -0
- package/dist/material/decks/winsands/Catadjinn.d.ts +14 -0
- package/dist/material/decks/winsands/Catadjinn.js +24 -0
- package/dist/material/decks/winsands/CreatureBonusCardRule.d.ts +4 -0
- package/dist/material/decks/winsands/CreatureBonusCardRule.js +14 -0
- package/dist/material/decks/winsands/DeathTrap.d.ts +14 -0
- package/dist/material/decks/winsands/DeathTrap.js +16 -0
- package/dist/material/decks/winsands/DeathTrapEffectRule.d.ts +4 -0
- package/dist/material/decks/winsands/DeathTrapEffectRule.js +18 -0
- package/dist/material/decks/winsands/DesertRaider.d.ts +13 -0
- package/dist/material/decks/winsands/DesertRaider.js +12 -0
- package/dist/material/decks/winsands/DesertRaiderEffectRule.d.ts +4 -0
- package/dist/material/decks/winsands/DesertRaiderEffectRule.js +17 -0
- package/dist/material/decks/winsands/DuneWardrums.d.ts +12 -0
- package/dist/material/decks/winsands/DuneWardrums.js +22 -0
- package/dist/material/decks/winsands/ErgDeathslayer.d.ts +13 -0
- package/dist/material/decks/winsands/ErgDeathslayer.js +19 -0
- package/dist/material/decks/winsands/MalikShadowtracker.d.ts +14 -0
- package/dist/material/decks/winsands/MalikShadowtracker.js +16 -0
- package/dist/material/decks/winsands/MalikShadowtrackerEffectRule.d.ts +4 -0
- package/dist/material/decks/winsands/MalikShadowtrackerEffectRule.js +13 -0
- package/dist/material/decks/winsands/Metamorph.d.ts +14 -0
- package/dist/material/decks/winsands/Metamorph.js +15 -0
- package/dist/material/decks/winsands/MushaFakir.d.ts +15 -0
- package/dist/material/decks/winsands/MushaFakir.js +16 -0
- package/dist/material/decks/winsands/OasisShaman.d.ts +13 -0
- package/dist/material/decks/winsands/OasisShaman.js +12 -0
- package/dist/material/decks/winsands/OasisShamanEffectRule.d.ts +8 -0
- package/dist/material/decks/winsands/OasisShamanEffectRule.js +33 -0
- package/dist/material/decks/winsands/SandWalkers.d.ts +17 -0
- package/dist/material/decks/winsands/SandWalkers.js +26 -0
- package/dist/material/decks/winsands/SandWalkersEffectRule.d.ts +5 -0
- package/dist/material/decks/winsands/SandWalkersEffectRule.js +25 -0
- package/dist/material/decks/winsands/StarlightBazaar.d.ts +13 -0
- package/dist/material/decks/winsands/StarlightBazaar.js +12 -0
- package/dist/material/decks/winsands/StarlightBazaarEffectRule.d.ts +4 -0
- package/dist/material/decks/winsands/StarlightBazaarEffectRule.js +6 -0
- package/dist/material/decks/winsands/Vandals.d.ts +13 -0
- package/dist/material/decks/winsands/Vandals.js +12 -0
- package/dist/material/decks/winsands/VandalsEffectRule.d.ts +4 -0
- package/dist/material/decks/winsands/VandalsEffectRule.js +14 -0
- package/dist/material/decks/winsands/WindWrath.d.ts +13 -0
- package/dist/material/decks/winsands/WindWrath.js +12 -0
- package/dist/material/decks/winsands/WindWrathEffectRule.d.ts +5 -0
- package/dist/material/decks/winsands/WindWrathEffectRule.js +20 -0
- package/dist/material/decks/winsands/WishLamp.d.ts +13 -0
- package/dist/material/decks/winsands/WishLamp.js +12 -0
- package/dist/material/decks/winsands/WishLampEffectRule.d.ts +10 -0
- package/dist/material/decks/winsands/WishLampEffectRule.js +46 -0
- package/dist/rules/EffectRule.d.ts +1 -0
- package/dist/rules/EffectRule.js +4 -2
- package/dist/rules/PlayCardRule.js +4 -19
- package/dist/rules/PlayerHelper.d.ts +2 -1
- package/dist/rules/PlayerHelper.js +32 -0
- package/dist/rules/PrepareNextRoundRule.js +1 -0
- package/dist/rules/RuleId.d.ts +20 -8
- package/dist/rules/RuleId.js +20 -8
- package/package.json +2 -2
package/dist/Deck.d.ts
CHANGED
package/dist/Deck.js
CHANGED
package/dist/Memory.d.ts
CHANGED
package/dist/Memory.js
CHANGED
|
@@ -9,4 +9,5 @@ export var Memory;
|
|
|
9
9
|
Memory[Memory["NextRoundStartPlayer"] = 7] = "NextRoundStartPlayer";
|
|
10
10
|
Memory[Memory["EffectCount"] = 8] = "EffectCount";
|
|
11
11
|
Memory[Memory["ChallengeConceded"] = 9] = "ChallengeConceded";
|
|
12
|
+
Memory[Memory["OngoingEffects"] = 10] = "OngoingEffects";
|
|
12
13
|
})(Memory || (Memory = {}));
|
package/dist/SkyriftRules.d.ts
CHANGED
|
@@ -11,15 +11,24 @@ import { SacrificeEffectRule } from './material/decks/heathblade/SacrificeEffect
|
|
|
11
11
|
import { SoulBladeEffectRule } from './material/decks/heathblade/SoulBladeEffectRule';
|
|
12
12
|
import { WatchTowerEffectRule } from './material/decks/heathblade/WatchTowerEffectRule';
|
|
13
13
|
import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingPartyEffectRule';
|
|
14
|
-
import {
|
|
14
|
+
import { DarkArmageddonEffectRule } from './material/decks/highwave/DarkArmageddonEffectRule';
|
|
15
15
|
import { DawnsDoomEffectRule } from './material/decks/highwave/DawnsDoomEffectRule';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
16
|
+
import { OttoFactotumEffectRule } from './material/decks/highwave/OttoFactotumEffectRule';
|
|
17
|
+
import { SeaScorcherEffectRule } from './material/decks/highwave/SeaScorcherEffectRule';
|
|
18
|
+
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
19
|
+
import { TideRoverEffectRule } from './material/decks/highwave/TideRoverEffectRule';
|
|
20
|
+
import { RiggingRaidersEffectRule } from './material/decks/highwave/RiggingRaidersEffectRule';
|
|
21
|
+
import { OscarScullionEffectRule } from './material/decks/highwave/OscarScullionEffectRule';
|
|
22
22
|
import { SurpriseLootEffectRule } from './material/decks/highwave/SurpriseLootEffectRule';
|
|
23
|
+
import { AbiSnakeCharmerEffectRule } from './material/decks/winsands/AbiSnakeCharmerEffectRule';
|
|
24
|
+
import { DeathTrapEffectRule } from './material/decks/winsands/DeathTrapEffectRule';
|
|
25
|
+
import { DesertRaiderEffectRule } from './material/decks/winsands/DesertRaiderEffectRule';
|
|
26
|
+
import { OasisShamanEffectRule } from './material/decks/winsands/OasisShamanEffectRule';
|
|
27
|
+
import { SandWalkersEffectRule } from './material/decks/winsands/SandWalkersEffectRule';
|
|
28
|
+
import { StarlightBazaarEffectRule } from './material/decks/winsands/StarlightBazaarEffectRule';
|
|
29
|
+
import { VandalsEffectRule } from './material/decks/winsands/VandalsEffectRule';
|
|
30
|
+
import { WindWrathEffectRule } from './material/decks/winsands/WindWrathEffectRule';
|
|
31
|
+
import { WishLampEffectRule } from './material/decks/winsands/WishLampEffectRule';
|
|
23
32
|
import { LocationType } from './material/LocationType';
|
|
24
33
|
import { MaterialType } from './material/MaterialType';
|
|
25
34
|
import { ChallengeRule } from './rules/ChallengeRule';
|
|
@@ -55,17 +64,29 @@ export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType
|
|
|
55
64
|
114: typeof WatchTowerEffectRule;
|
|
56
65
|
115: typeof DrawEffectRule;
|
|
57
66
|
116: typeof HarvestEffectRule;
|
|
58
|
-
|
|
67
|
+
201: typeof DesertRaiderEffectRule;
|
|
68
|
+
202: typeof DrawEffectRule;
|
|
69
|
+
204: typeof AbiSnakeCharmerEffectRule;
|
|
70
|
+
206: typeof VandalsEffectRule;
|
|
71
|
+
207: typeof DrawEffectRule;
|
|
72
|
+
208: typeof OasisShamanEffectRule;
|
|
73
|
+
211: typeof SandWalkersEffectRule;
|
|
74
|
+
212: typeof WishLampEffectRule;
|
|
75
|
+
213: typeof StarlightBazaarEffectRule;
|
|
76
|
+
214: typeof DrawEffectRule;
|
|
77
|
+
215: typeof WindWrathEffectRule;
|
|
78
|
+
216: typeof DeathTrapEffectRule;
|
|
79
|
+
601: typeof SeaScorcherEffectRule;
|
|
59
80
|
602: typeof DrawEffectRule;
|
|
60
|
-
603: typeof
|
|
81
|
+
603: typeof EyeOfSkyEffectRule;
|
|
61
82
|
605: typeof DiscardEffectRule;
|
|
62
|
-
606: typeof
|
|
63
|
-
607: typeof
|
|
64
|
-
608: typeof
|
|
65
|
-
609: typeof
|
|
83
|
+
606: typeof RiggingRaidersEffectRule;
|
|
84
|
+
607: typeof OttoFactotumEffectRule;
|
|
85
|
+
608: typeof OscarScullionEffectRule;
|
|
86
|
+
609: typeof TideRoverEffectRule;
|
|
66
87
|
610: typeof StealCrystalEffectRule;
|
|
67
88
|
612: typeof GainCrystalEffectRule;
|
|
68
|
-
613: typeof
|
|
89
|
+
613: typeof DarkArmageddonEffectRule;
|
|
69
90
|
614: typeof BoardingPartyEffectRule;
|
|
70
91
|
615: typeof DawnsDoomEffectRule;
|
|
71
92
|
616: typeof SurpriseLootEffectRule;
|
package/dist/SkyriftRules.js
CHANGED
|
@@ -11,15 +11,24 @@ import { SacrificeEffectRule } from './material/decks/heathblade/SacrificeEffect
|
|
|
11
11
|
import { SoulBladeEffectRule } from './material/decks/heathblade/SoulBladeEffectRule';
|
|
12
12
|
import { WatchTowerEffectRule } from './material/decks/heathblade/WatchTowerEffectRule';
|
|
13
13
|
import { BoardingPartyEffectRule } from './material/decks/highwave/BoardingPartyEffectRule';
|
|
14
|
-
import {
|
|
14
|
+
import { DarkArmageddonEffectRule } from './material/decks/highwave/DarkArmageddonEffectRule';
|
|
15
15
|
import { DawnsDoomEffectRule } from './material/decks/highwave/DawnsDoomEffectRule';
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
16
|
+
import { OttoFactotumEffectRule } from './material/decks/highwave/OttoFactotumEffectRule';
|
|
17
|
+
import { SeaScorcherEffectRule } from './material/decks/highwave/SeaScorcherEffectRule';
|
|
18
|
+
import { EyeOfSkyEffectRule } from './material/decks/highwave/EyeOfSkyEffectRule';
|
|
19
|
+
import { TideRoverEffectRule } from './material/decks/highwave/TideRoverEffectRule';
|
|
20
|
+
import { RiggingRaidersEffectRule } from './material/decks/highwave/RiggingRaidersEffectRule';
|
|
21
|
+
import { OscarScullionEffectRule } from './material/decks/highwave/OscarScullionEffectRule';
|
|
22
22
|
import { SurpriseLootEffectRule } from './material/decks/highwave/SurpriseLootEffectRule';
|
|
23
|
+
import { AbiSnakeCharmerEffectRule } from './material/decks/winsands/AbiSnakeCharmerEffectRule';
|
|
24
|
+
import { DeathTrapEffectRule } from './material/decks/winsands/DeathTrapEffectRule';
|
|
25
|
+
import { DesertRaiderEffectRule } from './material/decks/winsands/DesertRaiderEffectRule';
|
|
26
|
+
import { OasisShamanEffectRule } from './material/decks/winsands/OasisShamanEffectRule';
|
|
27
|
+
import { SandWalkersEffectRule } from './material/decks/winsands/SandWalkersEffectRule';
|
|
28
|
+
import { StarlightBazaarEffectRule } from './material/decks/winsands/StarlightBazaarEffectRule';
|
|
29
|
+
import { VandalsEffectRule } from './material/decks/winsands/VandalsEffectRule';
|
|
30
|
+
import { WindWrathEffectRule } from './material/decks/winsands/WindWrathEffectRule';
|
|
31
|
+
import { WishLampEffectRule } from './material/decks/winsands/WishLampEffectRule';
|
|
23
32
|
import { LocationType } from './material/LocationType';
|
|
24
33
|
import { MaterialType } from './material/MaterialType';
|
|
25
34
|
import { Memory } from './Memory';
|
|
@@ -58,17 +67,29 @@ export class SkyriftRules extends SecretMaterialRules {
|
|
|
58
67
|
[RuleId.WatchTowerEffect]: WatchTowerEffectRule,
|
|
59
68
|
[RuleId.ConfluenceEffect]: DrawEffectRule,
|
|
60
69
|
[RuleId.HarvestEffect]: HarvestEffectRule,
|
|
61
|
-
[RuleId.
|
|
70
|
+
[RuleId.DesertRaiderEffect]: DesertRaiderEffectRule,
|
|
71
|
+
[RuleId.MetamorphEffect]: DrawEffectRule,
|
|
72
|
+
[RuleId.AbiSnakeCharmerEffect]: AbiSnakeCharmerEffectRule,
|
|
73
|
+
[RuleId.VandalsEffect]: VandalsEffectRule,
|
|
74
|
+
[RuleId.MushaFakirEffect]: DrawEffectRule,
|
|
75
|
+
[RuleId.OasisShamanEffect]: OasisShamanEffectRule,
|
|
76
|
+
[RuleId.SandWalkersEffect]: SandWalkersEffectRule,
|
|
77
|
+
[RuleId.WishLampEffect]: WishLampEffectRule,
|
|
78
|
+
[RuleId.StarlightBazaarEffect]: StarlightBazaarEffectRule,
|
|
79
|
+
[RuleId.AncientCurseEffect]: DrawEffectRule,
|
|
80
|
+
[RuleId.WindWrathEffect]: WindWrathEffectRule,
|
|
81
|
+
[RuleId.DeathTrapEffect]: DeathTrapEffectRule,
|
|
82
|
+
[RuleId.SeaScorcherEffect]: SeaScorcherEffectRule,
|
|
62
83
|
[RuleId.AeliaSteadyHandEffect]: DrawEffectRule,
|
|
63
|
-
[RuleId.
|
|
84
|
+
[RuleId.EyeOfSkyEffect]: EyeOfSkyEffectRule,
|
|
64
85
|
[RuleId.TropicalRuffianEffect]: DiscardEffectRule,
|
|
65
|
-
[RuleId.
|
|
66
|
-
[RuleId.
|
|
67
|
-
[RuleId.
|
|
68
|
-
[RuleId.
|
|
86
|
+
[RuleId.RiggingRaidersEffect]: RiggingRaidersEffectRule,
|
|
87
|
+
[RuleId.OttoFactotumEffect]: OttoFactotumEffectRule,
|
|
88
|
+
[RuleId.OscarScullionEffect]: OscarScullionEffectRule,
|
|
89
|
+
[RuleId.TideRoverEffect]: TideRoverEffectRule,
|
|
69
90
|
[RuleId.LongJawsSilverEffect]: StealCrystalEffectRule,
|
|
70
|
-
[RuleId.
|
|
71
|
-
[RuleId.
|
|
91
|
+
[RuleId.FortunesCourseEffect]: GainCrystalEffectRule,
|
|
92
|
+
[RuleId.DarkArmageddonEffect]: DarkArmageddonEffectRule,
|
|
72
93
|
[RuleId.BoardingPartyEffect]: BoardingPartyEffectRule,
|
|
73
94
|
[RuleId.DawnsDoomEffect]: DawnsDoomEffectRule,
|
|
74
95
|
[RuleId.SurpriseLootEffect]: SurpriseLootEffectRule
|
|
@@ -100,16 +121,22 @@ export class SkyriftRules extends SecretMaterialRules {
|
|
|
100
121
|
if (origin.type === LocationType.PlayArea && move.location.type !== LocationType.PlayArea) {
|
|
101
122
|
const cardRule = new PlayerHelper(this.game).getCardRule(move.itemIndex);
|
|
102
123
|
moves.push(...cardRule.onLeave());
|
|
124
|
+
this.memorize(Memory.OngoingEffects, (effects) => effects.filter((e) => e.cardIndex !== move.itemIndex));
|
|
103
125
|
}
|
|
104
126
|
}
|
|
105
127
|
else if (isMoveItemTypeAtOnce(MaterialType.Card)(move)) {
|
|
128
|
+
const leavingIndexes = [];
|
|
106
129
|
for (const itemIndex of move.indexes) {
|
|
107
130
|
const origin = this.material(MaterialType.Card).getItem(itemIndex).location;
|
|
108
131
|
if (origin.type === LocationType.PlayArea && move.location.type !== LocationType.PlayArea) {
|
|
109
132
|
const cardRule = new PlayerHelper(this.game).getCardRule(itemIndex);
|
|
110
133
|
moves.push(...cardRule.onLeave());
|
|
134
|
+
leavingIndexes.push(itemIndex);
|
|
111
135
|
}
|
|
112
136
|
}
|
|
137
|
+
if (leavingIndexes.length > 0) {
|
|
138
|
+
this.memorize(Memory.OngoingEffects, (effects) => effects.filter((e) => !leavingIndexes.includes(e.cardIndex)));
|
|
139
|
+
}
|
|
113
140
|
}
|
|
114
141
|
return moves;
|
|
115
142
|
}
|
package/dist/SkyriftSetup.js
CHANGED
|
@@ -3,6 +3,7 @@ import { shuffle } from 'es-toolkit';
|
|
|
3
3
|
import { Deck } from './Deck';
|
|
4
4
|
import { HearthBlade } from './material/decks/HearthBlade';
|
|
5
5
|
import { HighWave } from './material/decks/HighWave';
|
|
6
|
+
import { WinSands } from './material/decks/WinSands';
|
|
6
7
|
import { LocationType } from './material/LocationType';
|
|
7
8
|
import { MaterialType } from './material/MaterialType';
|
|
8
9
|
import { Memory } from './Memory';
|
|
@@ -10,6 +11,7 @@ import { RuleId } from './rules/RuleId';
|
|
|
10
11
|
import { SkyriftRules } from './SkyriftRules';
|
|
11
12
|
const deckConfigurations = {
|
|
12
13
|
[Deck.HearthBlade]: HearthBlade,
|
|
14
|
+
[Deck.WinSands]: WinSands,
|
|
13
15
|
[Deck.HighWave]: HighWave
|
|
14
16
|
};
|
|
15
17
|
export class SkyriftSetup extends MaterialGameSetup {
|
|
@@ -17,6 +19,7 @@ export class SkyriftSetup extends MaterialGameSetup {
|
|
|
17
19
|
setupMaterial(_options) {
|
|
18
20
|
this.setupDecks();
|
|
19
21
|
this.memorize(Memory.PendingEffects, []);
|
|
22
|
+
this.memorize(Memory.OngoingEffects, []);
|
|
20
23
|
this.memorize(Memory.CrystalsToWin, 6);
|
|
21
24
|
}
|
|
22
25
|
setupDecks() {
|
package/dist/material/Card.d.ts
CHANGED
|
@@ -16,19 +16,35 @@ export declare enum Card {
|
|
|
16
16
|
WatchTower = 114,
|
|
17
17
|
Confluence = 115,
|
|
18
18
|
Harvest = 116,
|
|
19
|
-
|
|
19
|
+
DesertRaider = 201,
|
|
20
|
+
Metamorph = 202,
|
|
21
|
+
ErgDeathslayer = 203,
|
|
22
|
+
AbiSnakeCharmer = 204,
|
|
23
|
+
Catadjinn = 205,
|
|
24
|
+
Vandals = 206,
|
|
25
|
+
MushaFakir = 207,
|
|
26
|
+
OasisShaman = 208,
|
|
27
|
+
MalikShadowtracker = 209,
|
|
28
|
+
DuneWardrums = 210,
|
|
29
|
+
SandWalkers = 211,
|
|
30
|
+
WishLamp = 212,
|
|
31
|
+
StarlightBazaar = 213,
|
|
32
|
+
AncientCurse = 214,
|
|
33
|
+
WindWrath = 215,
|
|
34
|
+
DeathTrap = 216,
|
|
35
|
+
SeaScorcher = 601,
|
|
20
36
|
AeliaSteadyHand = 602,
|
|
21
|
-
|
|
22
|
-
|
|
37
|
+
EyeOfSky = 603,
|
|
38
|
+
BonnyTheGunner = 604,
|
|
23
39
|
TropicalRuffian = 605,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
40
|
+
RiggingRaiders = 606,
|
|
41
|
+
OttoFactotum = 607,
|
|
42
|
+
OscarScullion = 608,
|
|
43
|
+
TideRover = 609,
|
|
28
44
|
LongJawsSilver = 610,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
45
|
+
GoldenApocalypse = 611,
|
|
46
|
+
FortunesCourse = 612,
|
|
47
|
+
DarkArmageddon = 613,
|
|
32
48
|
BoardingParty = 614,
|
|
33
49
|
DawnsDoom = 615,
|
|
34
50
|
SurpriseLoot = 616
|
package/dist/material/Card.js
CHANGED
|
@@ -16,19 +16,35 @@ export var Card;
|
|
|
16
16
|
Card[Card["WatchTower"] = 114] = "WatchTower";
|
|
17
17
|
Card[Card["Confluence"] = 115] = "Confluence";
|
|
18
18
|
Card[Card["Harvest"] = 116] = "Harvest";
|
|
19
|
-
Card[Card["
|
|
19
|
+
Card[Card["DesertRaider"] = 201] = "DesertRaider";
|
|
20
|
+
Card[Card["Metamorph"] = 202] = "Metamorph";
|
|
21
|
+
Card[Card["ErgDeathslayer"] = 203] = "ErgDeathslayer";
|
|
22
|
+
Card[Card["AbiSnakeCharmer"] = 204] = "AbiSnakeCharmer";
|
|
23
|
+
Card[Card["Catadjinn"] = 205] = "Catadjinn";
|
|
24
|
+
Card[Card["Vandals"] = 206] = "Vandals";
|
|
25
|
+
Card[Card["MushaFakir"] = 207] = "MushaFakir";
|
|
26
|
+
Card[Card["OasisShaman"] = 208] = "OasisShaman";
|
|
27
|
+
Card[Card["MalikShadowtracker"] = 209] = "MalikShadowtracker";
|
|
28
|
+
Card[Card["DuneWardrums"] = 210] = "DuneWardrums";
|
|
29
|
+
Card[Card["SandWalkers"] = 211] = "SandWalkers";
|
|
30
|
+
Card[Card["WishLamp"] = 212] = "WishLamp";
|
|
31
|
+
Card[Card["StarlightBazaar"] = 213] = "StarlightBazaar";
|
|
32
|
+
Card[Card["AncientCurse"] = 214] = "AncientCurse";
|
|
33
|
+
Card[Card["WindWrath"] = 215] = "WindWrath";
|
|
34
|
+
Card[Card["DeathTrap"] = 216] = "DeathTrap";
|
|
35
|
+
Card[Card["SeaScorcher"] = 601] = "SeaScorcher";
|
|
20
36
|
Card[Card["AeliaSteadyHand"] = 602] = "AeliaSteadyHand";
|
|
21
|
-
Card[Card["
|
|
22
|
-
Card[Card["
|
|
37
|
+
Card[Card["EyeOfSky"] = 603] = "EyeOfSky";
|
|
38
|
+
Card[Card["BonnyTheGunner"] = 604] = "BonnyTheGunner";
|
|
23
39
|
Card[Card["TropicalRuffian"] = 605] = "TropicalRuffian";
|
|
24
|
-
Card[Card["
|
|
25
|
-
Card[Card["
|
|
26
|
-
Card[Card["
|
|
27
|
-
Card[Card["
|
|
40
|
+
Card[Card["RiggingRaiders"] = 606] = "RiggingRaiders";
|
|
41
|
+
Card[Card["OttoFactotum"] = 607] = "OttoFactotum";
|
|
42
|
+
Card[Card["OscarScullion"] = 608] = "OscarScullion";
|
|
43
|
+
Card[Card["TideRover"] = 609] = "TideRover";
|
|
28
44
|
Card[Card["LongJawsSilver"] = 610] = "LongJawsSilver";
|
|
29
|
-
Card[Card["
|
|
30
|
-
Card[Card["
|
|
31
|
-
Card[Card["
|
|
45
|
+
Card[Card["GoldenApocalypse"] = 611] = "GoldenApocalypse";
|
|
46
|
+
Card[Card["FortunesCourse"] = 612] = "FortunesCourse";
|
|
47
|
+
Card[Card["DarkArmageddon"] = 613] = "DarkArmageddon";
|
|
32
48
|
Card[Card["BoardingParty"] = 614] = "BoardingParty";
|
|
33
49
|
Card[Card["DawnsDoom"] = 615] = "DawnsDoom";
|
|
34
50
|
Card[Card["SurpriseLoot"] = 616] = "SurpriseLoot";
|
|
@@ -1,20 +1,36 @@
|
|
|
1
1
|
import { Card } from './Card';
|
|
2
2
|
import { AeliaSteadyHand } from './decks/highwave/AeliaSteadyHand';
|
|
3
3
|
import { BoardingParty } from './decks/highwave/BoardingParty';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { GoldenApocalypse } from './decks/highwave/GoldenApocalypse';
|
|
5
|
+
import { DarkArmageddon } from './decks/highwave/DarkArmageddon';
|
|
6
6
|
import { DawnsDoom } from './decks/highwave/DawnsDoom';
|
|
7
7
|
import { LongJawsSilver } from './decks/highwave/LongJawsSilver';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
8
|
+
import { BonnyTheGunner } from './decks/highwave/BonnyTheGunner';
|
|
9
|
+
import { OttoFactotum } from './decks/highwave/OttoFactotum';
|
|
10
|
+
import { SeaScorcher } from './decks/highwave/SeaScorcher';
|
|
11
|
+
import { EyeOfSky } from './decks/highwave/EyeOfSky';
|
|
12
|
+
import { TideRover } from './decks/highwave/TideRover';
|
|
13
|
+
import { RiggingRaiders } from './decks/highwave/RiggingRaiders';
|
|
14
|
+
import { OscarScullion } from './decks/highwave/OscarScullion';
|
|
15
15
|
import { SurpriseLoot } from './decks/highwave/SurpriseLoot';
|
|
16
|
-
import {
|
|
16
|
+
import { FortunesCourse } from './decks/highwave/FortunesCourse';
|
|
17
17
|
import { TropicalRuffian } from './decks/highwave/TropicalRuffian';
|
|
18
|
+
import { AbiSnakeCharmer } from './decks/winsands/AbiSnakeCharmer';
|
|
19
|
+
import { AncientCurse } from './decks/winsands/AncientCurse';
|
|
20
|
+
import { Catadjinn } from './decks/winsands/Catadjinn';
|
|
21
|
+
import { DeathTrap } from './decks/winsands/DeathTrap';
|
|
22
|
+
import { DesertRaider } from './decks/winsands/DesertRaider';
|
|
23
|
+
import { DuneWardrums } from './decks/winsands/DuneWardrums';
|
|
24
|
+
import { ErgDeathslayer } from './decks/winsands/ErgDeathslayer';
|
|
25
|
+
import { MalikShadowtracker } from './decks/winsands/MalikShadowtracker';
|
|
26
|
+
import { Metamorph } from './decks/winsands/Metamorph';
|
|
27
|
+
import { MushaFakir } from './decks/winsands/MushaFakir';
|
|
28
|
+
import { OasisShaman } from './decks/winsands/OasisShaman';
|
|
29
|
+
import { SandWalkers } from './decks/winsands/SandWalkers';
|
|
30
|
+
import { StarlightBazaar } from './decks/winsands/StarlightBazaar';
|
|
31
|
+
import { Vandals } from './decks/winsands/Vandals';
|
|
32
|
+
import { WindWrath } from './decks/winsands/WindWrath';
|
|
33
|
+
import { WishLamp } from './decks/winsands/WishLamp';
|
|
18
34
|
import { Armada } from './decks/heathblade/Armada';
|
|
19
35
|
import { Confluence } from './decks/heathblade/Confluence';
|
|
20
36
|
import { CoverOfNight } from './decks/heathblade/CoverOfNight';
|
|
@@ -48,19 +64,35 @@ export const cardProperties = {
|
|
|
48
64
|
[Card.WatchTower]: WatchTower,
|
|
49
65
|
[Card.Confluence]: Confluence,
|
|
50
66
|
[Card.Harvest]: Harvest,
|
|
51
|
-
[Card.
|
|
67
|
+
[Card.DesertRaider]: DesertRaider,
|
|
68
|
+
[Card.Metamorph]: Metamorph,
|
|
69
|
+
[Card.ErgDeathslayer]: ErgDeathslayer,
|
|
70
|
+
[Card.AbiSnakeCharmer]: AbiSnakeCharmer,
|
|
71
|
+
[Card.Catadjinn]: Catadjinn,
|
|
72
|
+
[Card.Vandals]: Vandals,
|
|
73
|
+
[Card.MushaFakir]: MushaFakir,
|
|
74
|
+
[Card.OasisShaman]: OasisShaman,
|
|
75
|
+
[Card.MalikShadowtracker]: MalikShadowtracker,
|
|
76
|
+
[Card.DuneWardrums]: DuneWardrums,
|
|
77
|
+
[Card.SandWalkers]: SandWalkers,
|
|
78
|
+
[Card.WishLamp]: WishLamp,
|
|
79
|
+
[Card.StarlightBazaar]: StarlightBazaar,
|
|
80
|
+
[Card.AncientCurse]: AncientCurse,
|
|
81
|
+
[Card.WindWrath]: WindWrath,
|
|
82
|
+
[Card.DeathTrap]: DeathTrap,
|
|
83
|
+
[Card.SeaScorcher]: SeaScorcher,
|
|
52
84
|
[Card.AeliaSteadyHand]: AeliaSteadyHand,
|
|
53
|
-
[Card.
|
|
54
|
-
[Card.
|
|
85
|
+
[Card.EyeOfSky]: EyeOfSky,
|
|
86
|
+
[Card.BonnyTheGunner]: BonnyTheGunner,
|
|
55
87
|
[Card.TropicalRuffian]: TropicalRuffian,
|
|
56
|
-
[Card.
|
|
57
|
-
[Card.
|
|
58
|
-
[Card.
|
|
59
|
-
[Card.
|
|
88
|
+
[Card.RiggingRaiders]: RiggingRaiders,
|
|
89
|
+
[Card.OttoFactotum]: OttoFactotum,
|
|
90
|
+
[Card.OscarScullion]: OscarScullion,
|
|
91
|
+
[Card.TideRover]: TideRover,
|
|
60
92
|
[Card.LongJawsSilver]: LongJawsSilver,
|
|
61
|
-
[Card.
|
|
62
|
-
[Card.
|
|
63
|
-
[Card.
|
|
93
|
+
[Card.GoldenApocalypse]: GoldenApocalypse,
|
|
94
|
+
[Card.FortunesCourse]: FortunesCourse,
|
|
95
|
+
[Card.DarkArmageddon]: DarkArmageddon,
|
|
64
96
|
[Card.BoardingParty]: BoardingParty,
|
|
65
97
|
[Card.DawnsDoom]: DawnsDoom,
|
|
66
98
|
[Card.SurpriseLoot]: SurpriseLoot
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { MaterialGame, MaterialMove, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
2
|
import { Deck } from '../Deck';
|
|
3
|
-
import { RuleId } from '../rules/RuleId';
|
|
4
3
|
import { Card, CardId } from './Card';
|
|
5
4
|
import { CardTag } from './CardTag';
|
|
5
|
+
import { OngoingEffectType } from './OngoingEffect';
|
|
6
6
|
export declare class CardRule extends MaterialRulesPart {
|
|
7
7
|
index: number;
|
|
8
8
|
constructor(game: MaterialGame, index: number);
|
|
@@ -16,7 +16,7 @@ export declare class CardRule extends MaterialRulesPart {
|
|
|
16
16
|
entersEffect: boolean;
|
|
17
17
|
challenge: boolean;
|
|
18
18
|
onChallengeAccepted(): import("@gamepark/rules-api").CustomMove[];
|
|
19
|
-
onChallengeDeclined():
|
|
19
|
+
onChallengeDeclined(): MaterialMove[];
|
|
20
20
|
onLeave(): MaterialMove[];
|
|
21
21
|
removePowerTokens(): import("@gamepark/rules-api").DeleteItem<number>[];
|
|
22
22
|
removeStunTokens(): import("@gamepark/rules-api").DeleteItem<number>[];
|
|
@@ -27,6 +27,7 @@ export declare class CardRule extends MaterialRulesPart {
|
|
|
27
27
|
getPower(): number;
|
|
28
28
|
getPowerIfNotStunned(): number;
|
|
29
29
|
addPendingEffect(): void;
|
|
30
|
+
addOngoingEffect(type: OngoingEffectType): void;
|
|
30
31
|
get player(): number;
|
|
31
32
|
get opponent(): number;
|
|
32
33
|
startEffect(): MaterialMove[];
|
|
@@ -6,6 +6,7 @@ import { cardProperties } from './CardProperties';
|
|
|
6
6
|
import { CardSuit } from './CardSuit';
|
|
7
7
|
import { LocationType } from './LocationType';
|
|
8
8
|
import { MaterialType } from './MaterialType';
|
|
9
|
+
import { OngoingEffectType } from './OngoingEffect';
|
|
9
10
|
export class CardRule extends MaterialRulesPart {
|
|
10
11
|
index;
|
|
11
12
|
constructor(game, index) {
|
|
@@ -83,6 +84,9 @@ export class CardRule extends MaterialRulesPart {
|
|
|
83
84
|
addPendingEffect() {
|
|
84
85
|
this.memorize(Memory.PendingEffects, (effects) => [...effects, { cardIndex: this.index }]);
|
|
85
86
|
}
|
|
87
|
+
addOngoingEffect(type) {
|
|
88
|
+
this.memorize(Memory.OngoingEffects, (effects) => [...effects, { type, cardIndex: this.index }]);
|
|
89
|
+
}
|
|
86
90
|
get player() {
|
|
87
91
|
return this.item.location.player;
|
|
88
92
|
}
|
|
@@ -103,6 +107,16 @@ export class CardRule extends MaterialRulesPart {
|
|
|
103
107
|
}
|
|
104
108
|
}
|
|
105
109
|
canBePlayed() {
|
|
110
|
+
const ongoingEffects = this.remind(Memory.OngoingEffects);
|
|
111
|
+
const forcedSuit = ongoingEffects.find((e) => e.type === OngoingEffectType.ForcedSuit);
|
|
112
|
+
if (forcedSuit) {
|
|
113
|
+
const sourceCard = this.material(MaterialType.Card).getItem(forcedSuit.cardIndex);
|
|
114
|
+
if (sourceCard.location.player !== this.player) {
|
|
115
|
+
const forcedSuitValue = cardProperties[sourceCard.id.front].suit;
|
|
116
|
+
if (this.properties.suit !== forcedSuitValue)
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
106
120
|
const currentSuit = this.remind(Memory.Suit);
|
|
107
121
|
const cardSuit = this.properties.suit;
|
|
108
122
|
return !(cardSuit === CardSuit.Night && currentSuit === CardSuit.Day) && !(cardSuit === CardSuit.Day && currentSuit === CardSuit.Night);
|
|
@@ -9,11 +9,11 @@ export const HearthBlade = {
|
|
|
9
9
|
[Card.ElaraBlazingArrow]: 1,
|
|
10
10
|
[Card.WoodSlinger]: 2,
|
|
11
11
|
[Card.OzmaTheMage]: 1,
|
|
12
|
-
[Card.Armada]:
|
|
13
|
-
[Card.SoulBlade]:
|
|
14
|
-
[Card.CoverOfNight]:
|
|
12
|
+
[Card.Armada]: 1,
|
|
13
|
+
[Card.SoulBlade]: 2,
|
|
14
|
+
[Card.CoverOfNight]: 1,
|
|
15
15
|
[Card.Sacrifice]: 1,
|
|
16
|
-
[Card.WatchTower]:
|
|
16
|
+
[Card.WatchTower]: 2,
|
|
17
17
|
[Card.Confluence]: 2,
|
|
18
18
|
[Card.Harvest]: 1
|
|
19
19
|
};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Card } from '../Card';
|
|
2
2
|
export const HighWave = {
|
|
3
|
-
[Card.
|
|
3
|
+
[Card.SeaScorcher]: 2,
|
|
4
4
|
[Card.AeliaSteadyHand]: 1,
|
|
5
|
-
[Card.
|
|
6
|
-
[Card.
|
|
5
|
+
[Card.EyeOfSky]: 2,
|
|
6
|
+
[Card.BonnyTheGunner]: 1,
|
|
7
7
|
[Card.TropicalRuffian]: 2,
|
|
8
|
-
[Card.
|
|
9
|
-
[Card.
|
|
10
|
-
[Card.
|
|
11
|
-
[Card.
|
|
8
|
+
[Card.RiggingRaiders]: 2,
|
|
9
|
+
[Card.OttoFactotum]: 1,
|
|
10
|
+
[Card.OscarScullion]: 1,
|
|
11
|
+
[Card.TideRover]: 2,
|
|
12
12
|
[Card.LongJawsSilver]: 1,
|
|
13
|
-
[Card.
|
|
14
|
-
[Card.
|
|
15
|
-
[Card.
|
|
13
|
+
[Card.GoldenApocalypse]: 2,
|
|
14
|
+
[Card.FortunesCourse]: 1,
|
|
15
|
+
[Card.DarkArmageddon]: 2,
|
|
16
16
|
[Card.BoardingParty]: 1,
|
|
17
17
|
[Card.DawnsDoom]: 2,
|
|
18
18
|
[Card.SurpriseLoot]: 1
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const WinSands: {
|
|
2
|
+
201: number;
|
|
3
|
+
202: number;
|
|
4
|
+
203: number;
|
|
5
|
+
204: number;
|
|
6
|
+
205: number;
|
|
7
|
+
206: number;
|
|
8
|
+
207: number;
|
|
9
|
+
208: number;
|
|
10
|
+
209: number;
|
|
11
|
+
210: number;
|
|
12
|
+
211: number;
|
|
13
|
+
212: number;
|
|
14
|
+
213: number;
|
|
15
|
+
214: number;
|
|
16
|
+
215: number;
|
|
17
|
+
216: number;
|
|
18
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Card } from '../Card';
|
|
2
|
+
export const WinSands = {
|
|
3
|
+
[Card.DesertRaider]: 2,
|
|
4
|
+
[Card.Metamorph]: 2,
|
|
5
|
+
[Card.ErgDeathslayer]: 1,
|
|
6
|
+
[Card.AbiSnakeCharmer]: 1,
|
|
7
|
+
[Card.Catadjinn]: 2,
|
|
8
|
+
[Card.Vandals]: 2,
|
|
9
|
+
[Card.MushaFakir]: 1,
|
|
10
|
+
[Card.OasisShaman]: 2,
|
|
11
|
+
[Card.MalikShadowtracker]: 1,
|
|
12
|
+
[Card.DuneWardrums]: 2,
|
|
13
|
+
[Card.SandWalkers]: 1,
|
|
14
|
+
[Card.WishLamp]: 2,
|
|
15
|
+
[Card.StarlightBazaar]: 1,
|
|
16
|
+
[Card.AncientCurse]: 1,
|
|
17
|
+
[Card.WindWrath]: 1,
|
|
18
|
+
[Card.DeathTrap]: 2
|
|
19
|
+
};
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { EffectRule } from '../../../rules/EffectRule';
|
|
2
|
-
import { Memory } from '../../../Memory';
|
|
3
2
|
import { LocationType } from '../../LocationType';
|
|
4
3
|
import { MaterialType } from '../../MaterialType';
|
|
5
4
|
export class OzmaTheMageEffectRule extends EffectRule {
|
|
6
5
|
onRuleStart() {
|
|
7
|
-
const ozmaIndex = this.remind(Memory.PendingEffects)[0].cardIndex;
|
|
8
6
|
return [
|
|
9
7
|
this.material(MaterialType.PowerToken)
|
|
10
8
|
.location(LocationType.PowerTokenStock)
|
|
11
9
|
.createItem({
|
|
12
10
|
location: {
|
|
13
11
|
type: LocationType.CardPowerTokens,
|
|
14
|
-
parent:
|
|
12
|
+
parent: this.effectCardIndex
|
|
15
13
|
}
|
|
16
14
|
}),
|
|
17
15
|
...this.endEffect()
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Memory } from '../../../Memory';
|
|
2
1
|
import { cardProperties } from '../../CardProperties';
|
|
3
2
|
import { CardType } from '../../CardType';
|
|
4
3
|
import { LocationType } from '../../LocationType';
|
|
@@ -7,13 +6,12 @@ import { EffectRule } from '../../../rules/EffectRule';
|
|
|
7
6
|
export class RobbinsMasterOfArmsEffectRule extends EffectRule {
|
|
8
7
|
onRuleStart() {
|
|
9
8
|
const moves = [];
|
|
10
|
-
const robbinsIndex = this.remind(Memory.PendingEffects)[0].cardIndex;
|
|
11
9
|
const otherCreatures = this.material(MaterialType.Card)
|
|
12
10
|
.location(LocationType.PlayArea)
|
|
13
11
|
.player(this.player)
|
|
14
12
|
.id((id) => cardProperties[id.front].type === CardType.Creature)
|
|
15
13
|
.getIndexes()
|
|
16
|
-
.filter(index => index !==
|
|
14
|
+
.filter(index => index !== this.effectCardIndex);
|
|
17
15
|
for (const creatureIndex of otherCreatures) {
|
|
18
16
|
moves.push(this.material(MaterialType.PowerToken)
|
|
19
17
|
.location(LocationType.PowerTokenStock)
|