@gamepark/skyrift 0.1.0 → 0.2.1

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.
@@ -25,6 +25,7 @@ import { MaterialType } from './material/MaterialType';
25
25
  import { ChallengeRule } from './rules/ChallengeRule';
26
26
  import { DiscardEffectRule } from './rules/DiscardEffectRule';
27
27
  import { DrawEffectRule } from './rules/DrawEffectRule';
28
+ import { EndPlayerTurnRule } from './rules/EndPlayerTurnRule';
28
29
  import { EndRoundRule } from './rules/EndRoundRule';
29
30
  import { GainCrystalEffectRule } from './rules/GainCrystalEffectRule';
30
31
  import { MayChallengeRule } from './rules/MayChallengeRule';
@@ -38,10 +39,11 @@ export declare class SkyriftRules extends SecretMaterialRules<Deck, MaterialType
38
39
  1: typeof StartRoundRule;
39
40
  2: typeof StartPlayerTurnRule;
40
41
  3: typeof PlayCardRule;
41
- 4: typeof EndRoundRule;
42
- 5: typeof PrepareNextRoundRule;
43
- 6: typeof MayChallengeRule;
44
- 7: typeof ChallengeRule;
42
+ 4: typeof EndPlayerTurnRule;
43
+ 5: typeof EndRoundRule;
44
+ 6: typeof PrepareNextRoundRule;
45
+ 7: typeof MayChallengeRule;
46
+ 8: typeof ChallengeRule;
45
47
  102: typeof LoyalSquireEffectRule;
46
48
  103: typeof PrincessLithaEffectRule;
47
49
  104: typeof RobbinsMasterOfArmsEffectRule;
@@ -26,6 +26,7 @@ import { Memory } from './Memory';
26
26
  import { ChallengeRule } from './rules/ChallengeRule';
27
27
  import { DiscardEffectRule } from './rules/DiscardEffectRule';
28
28
  import { DrawEffectRule } from './rules/DrawEffectRule';
29
+ import { EndPlayerTurnRule } from './rules/EndPlayerTurnRule';
29
30
  import { EndRoundRule } from './rules/EndRoundRule';
30
31
  import { GainCrystalEffectRule } from './rules/GainCrystalEffectRule';
31
32
  import { MayChallengeRule } from './rules/MayChallengeRule';
@@ -41,6 +42,7 @@ export class SkyriftRules extends SecretMaterialRules {
41
42
  [RuleId.StartRound]: StartRoundRule,
42
43
  [RuleId.StartPlayerTurn]: StartPlayerTurnRule,
43
44
  [RuleId.PlayCard]: PlayCardRule,
45
+ [RuleId.EndPlayerTurn]: EndPlayerTurnRule,
44
46
  [RuleId.EndRound]: EndRoundRule,
45
47
  [RuleId.PrepareNextRound]: PrepareNextRoundRule,
46
48
  [RuleId.MayChallenge]: MayChallengeRule,
@@ -32,6 +32,7 @@ export class SkyriftSetup extends MaterialGameSetup {
32
32
  }));
33
33
  this.material(MaterialType.Card).createItemsAtOnce(shuffle(cards));
34
34
  this.material(MaterialType.Card).player(player).deck().deal({ type: LocationType.PlayerHand, player }, 6);
35
+ this.memorize(Memory.CardsPlayed, [], player);
35
36
  }
36
37
  }
37
38
  start() {
@@ -32,7 +32,7 @@ export class EffectRule extends PlayerTurnRule {
32
32
  const currentPlayer = this.remind(Memory.CurrentPlayer);
33
33
  const playerHelper = new PlayerHelper(this.game, currentPlayer);
34
34
  if (this.remind(Memory.CardsPlayed, currentPlayer).length && playerHelper.hasMorePower()) {
35
- return [this.startPlayerTurn(RuleId.StartPlayerTurn, playerHelper.foe)];
35
+ return [this.startPlayerTurn(RuleId.EndPlayerTurn, currentPlayer)];
36
36
  }
37
37
  else {
38
38
  return [this.startPlayerTurn(RuleId.PlayCard, this.remind(Memory.CurrentPlayer))];
@@ -0,0 +1,6 @@
1
+ import { CustomMove, PlayerTurnRule } from '@gamepark/rules-api';
2
+ import { RuleId } from './RuleId';
3
+ export declare class EndPlayerTurnRule extends PlayerTurnRule {
4
+ getPlayerMoves(): CustomMove[];
5
+ onCustomMove(move: CustomMove): import("@gamepark/rules-api").StartPlayerTurn<number, RuleId.StartPlayerTurn>[];
6
+ }
@@ -0,0 +1,14 @@
1
+ import { PlayerTurnRule } from '@gamepark/rules-api';
2
+ import { CustomMoveType } from '../CustomMoveType';
3
+ import { RuleId } from './RuleId';
4
+ export class EndPlayerTurnRule extends PlayerTurnRule {
5
+ getPlayerMoves() {
6
+ return [this.customMove(CustomMoveType.Pass)];
7
+ }
8
+ onCustomMove(move) {
9
+ if (move.type === CustomMoveType.Pass) {
10
+ return [this.startPlayerTurn(RuleId.StartPlayerTurn, this.nextPlayer)];
11
+ }
12
+ return [];
13
+ }
14
+ }
@@ -69,7 +69,7 @@ export class PlayCardRule extends PlayerTurnRule {
69
69
  }
70
70
  if (isMoveItemType(MaterialType.Card)(move) || isMoveItemType(MaterialType.PowerToken)(move)) {
71
71
  if (this.remind(Memory.CardsPlayed, this.player).length > 0 && this.hasMorePower()) {
72
- moves.push(this.startPlayerTurn(RuleId.StartPlayerTurn, this.nextPlayer));
72
+ moves.push(this.startRule(RuleId.EndPlayerTurn));
73
73
  }
74
74
  }
75
75
  return moves;
@@ -2,10 +2,11 @@ export declare enum RuleId {
2
2
  StartRound = 1,
3
3
  StartPlayerTurn = 2,
4
4
  PlayCard = 3,
5
- EndRound = 4,
6
- PrepareNextRound = 5,
7
- MayChallenge = 6,
8
- Challenge = 7,
5
+ EndPlayerTurn = 4,
6
+ EndRound = 5,
7
+ PrepareNextRound = 6,
8
+ MayChallenge = 7,
9
+ Challenge = 8,
9
10
  LoyalSquireEffect = 102,
10
11
  PrincessLithaEffect = 103,
11
12
  RobbinsMasterOfArmsEffect = 104,
@@ -4,10 +4,11 @@ export var RuleId;
4
4
  RuleId[RuleId["StartRound"] = 1] = "StartRound";
5
5
  RuleId[RuleId["StartPlayerTurn"] = 2] = "StartPlayerTurn";
6
6
  RuleId[RuleId["PlayCard"] = 3] = "PlayCard";
7
- RuleId[RuleId["EndRound"] = 4] = "EndRound";
8
- RuleId[RuleId["PrepareNextRound"] = 5] = "PrepareNextRound";
9
- RuleId[RuleId["MayChallenge"] = 6] = "MayChallenge";
10
- RuleId[RuleId["Challenge"] = 7] = "Challenge";
7
+ RuleId[RuleId["EndPlayerTurn"] = 4] = "EndPlayerTurn";
8
+ RuleId[RuleId["EndRound"] = 5] = "EndRound";
9
+ RuleId[RuleId["PrepareNextRound"] = 6] = "PrepareNextRound";
10
+ RuleId[RuleId["MayChallenge"] = 7] = "MayChallenge";
11
+ RuleId[RuleId["Challenge"] = 8] = "Challenge";
11
12
  RuleId[RuleId["LoyalSquireEffect"] = 102] = "LoyalSquireEffect";
12
13
  RuleId[RuleId["PrincessLithaEffect"] = 103] = "PrincessLithaEffect";
13
14
  RuleId[RuleId["RobbinsMasterOfArmsEffect"] = 104] = "RobbinsMasterOfArmsEffect";
package/package.json CHANGED
@@ -1,33 +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
- }
1
+ {
2
+ "name": "@gamepark/skyrift",
3
+ "version": "0.2.1",
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
+ }