@gamepark/mythologies 0.7.2 → 0.7.4

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.
@@ -39,6 +39,7 @@ export declare class Pantheon extends MaterialRulesPart {
39
39
  getPiles(predicate?: (space: XYCoordinates) => boolean): Material[];
40
40
  getPile({ x, y }: XYCoordinates, fullPantheon?: Material<number, number, number>): Material;
41
41
  isAbleToMove(entity: EntityItem): boolean;
42
+ isVisible(entity: EntityItem): boolean;
42
43
  get mythologies(): import("./Mythology").Mythology[];
43
44
  get missingMythologies(): import("./Mythology").Mythology[];
44
45
  onEntitySacrificed(card: Material): void;
@@ -420,7 +420,10 @@ var Pantheon = (function (_super) {
420
420
  return fullPantheon.location(function (l) { return l.x === x && l.y === y; }).sort(function (item) { return item.location.z; });
421
421
  };
422
422
  Pantheon.prototype.isAbleToMove = function (entity) {
423
- return new PermanentEffectsRule_1.PermanentEffectsRule(this.game).canMove(entity);
423
+ return !this.isVisible(entity) || new PermanentEffectsRule_1.PermanentEffectsRule(this.game).canMove(entity);
424
+ };
425
+ Pantheon.prototype.isVisible = function (entity) {
426
+ return this.getPile(entity.location).length - 1 === entity.location.z;
424
427
  };
425
428
  Object.defineProperty(Pantheon.prototype, "mythologies", {
426
429
  get: function () {
@@ -437,15 +440,13 @@ var Pantheon = (function (_super) {
437
440
  configurable: true
438
441
  });
439
442
  Pantheon.prototype.onEntitySacrificed = function (card) {
440
- var _a;
441
443
  var item = card.getItem();
442
- var _b = item.location, x = _b.x, y = _b.y, z = _b.z;
444
+ var _a = item.location, x = _a.x, y = _a.y, z = _a.z;
443
445
  var grid = this.indexGrid;
444
446
  var cardUnder = this.allCards.location(function (l) { return l.x === x && l.y === y && l.z !== z; }).maxBy(function (item) { return item.location.z; });
445
447
  grid[y][x] = cardUnder.length ? cardUnder.getIndex() : null;
446
- var effects = this.updateGrid(grid);
447
- effects.push({ type: Effect_1.TriggerEventType.EntitySacrificed, card: item, cardIndex: card.getIndex() });
448
- (_a = new TriggerEffectsRule_1.TriggerEffectsRule(this.game)).triggerEffects.apply(_a, __spreadArray([], __read(effects), false));
448
+ this.memorize(Memory_1.Memory.PlayerGrid, grid, this.player);
449
+ new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EntitySacrificed, card: item, cardIndex: card.getIndex() });
449
450
  };
450
451
  Pantheon.prototype.hasCrushed = function (card) {
451
452
  return this.allCards.location(function (l) { return l.x === card.location.x && l.y === card.location.y && l.z < card.location.z; }).length > 0;
@@ -38,6 +38,7 @@ export declare abstract class SimultaneousEffectRule extends SimultaneousRule im
38
38
  canPlayEffect(_cardIndex: number): boolean;
39
39
  ruleId?: RuleId;
40
40
  playEffect(): MaterialMove[];
41
+ onRuleStart(): MaterialMove<number, number, number, number>[];
41
42
  getAffectedPlayers(): PlayerColor[];
42
43
  isOpponent(player: PlayerColor): boolean;
43
44
  get card(): import("@gamepark/rules-api").MaterialItem<number, number, EntityId>;
@@ -80,10 +80,10 @@ var SimultaneousEffectRule = (function (_super) {
80
80
  for (var _b = __values(this.getAffectedPlayers()), _c = _b.next(); !_c.done; _c = _b.next()) {
81
81
  var player = _c.value;
82
82
  var legalMoves = this.getActivePlayerLegalMoves(player);
83
- if (legalMoves.length === 1) {
83
+ if (legalMoves.length === 1 && !(0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.EntityCard)(legalMoves[0])) {
84
84
  moves.push(legalMoves[0]);
85
85
  }
86
- else if (legalMoves.length > 1) {
86
+ else if (legalMoves.length > 0) {
87
87
  playersToActivate.push(player);
88
88
  }
89
89
  }
@@ -100,6 +100,27 @@ var SimultaneousEffectRule = (function (_super) {
100
100
  }
101
101
  return moves;
102
102
  };
103
+ SimultaneousEffectRule.prototype.onRuleStart = function () {
104
+ var e_2, _a;
105
+ var moves = [];
106
+ try {
107
+ for (var _b = __values(this.game.rule.players), _c = _b.next(); !_c.done; _c = _b.next()) {
108
+ var player = _c.value;
109
+ var legalMoves = this.getActivePlayerLegalMoves(player);
110
+ if (legalMoves.length === 1) {
111
+ moves.push(legalMoves[0]);
112
+ }
113
+ }
114
+ }
115
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
116
+ finally {
117
+ try {
118
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
119
+ }
120
+ finally { if (e_2) throw e_2.error; }
121
+ }
122
+ return moves;
123
+ };
103
124
  SimultaneousEffectRule.prototype.getAffectedPlayers = function () {
104
125
  return this.game.players;
105
126
  };
@@ -174,8 +174,26 @@ var PlaceCardsRule = (function (_super) {
174
174
  return [];
175
175
  };
176
176
  PlaceCardsRule.prototype.onPass = function () {
177
- new TriggerEffectsRule_1.TriggerEffectsRule(this.game).triggerEffects({ type: Effect_1.TriggerEventType.EndOfTurn, player: this.player });
178
- return __spreadArray(__spreadArray([], __read(new Trial_1.Trial(this.game).passTrials(this.player)), false), [this.nextRule], false);
177
+ var e_2, _a;
178
+ var moves = [];
179
+ var effects = new TriggerEffectsRule_1.TriggerEffectsRule(this.game).getPlayerEffects(this.player, { type: Effect_1.TriggerEventType.EndOfTurn, player: this.player });
180
+ var resolveEffectsRule = new ResolveEffectsRule_1.ResolveEffectsRule(this.game);
181
+ try {
182
+ for (var effects_1 = __values(effects), effects_1_1 = effects_1.next(); !effects_1_1.done; effects_1_1 = effects_1.next()) {
183
+ var effect = effects_1_1.value;
184
+ moves.push.apply(moves, __spreadArray([], __read(resolveEffectsRule.playEffect(effect)), false));
185
+ }
186
+ }
187
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
188
+ finally {
189
+ try {
190
+ if (effects_1_1 && !effects_1_1.done && (_a = effects_1.return)) _a.call(effects_1);
191
+ }
192
+ finally { if (e_2) throw e_2.error; }
193
+ }
194
+ moves.push.apply(moves, __spreadArray([], __read(new Trial_1.Trial(this.game).passTrials(this.player)), false));
195
+ moves.push(this.nextRule);
196
+ return moves;
179
197
  };
180
198
  Object.defineProperty(PlaceCardsRule.prototype, "nextRule", {
181
199
  get: function () {
@@ -4,7 +4,7 @@ import { PlayerColor } from '../../PlayerColor';
4
4
  import { RuleId } from '../RuleId';
5
5
  export declare class MinotaurEffectRule extends SimultaneousMoveEffectRule {
6
6
  ruleId: RuleId;
7
- onRuleStart(): never[];
7
+ onRuleStart(): import("@gamepark/rules-api").MaterialMove<number, number, number, number>[];
8
8
  getMovingCards(player: PlayerColor): import("@gamepark/rules-api").Material<number, number, number>;
9
9
  isLegalDestination(space: XYCoordinates, cardLocation: Location): boolean;
10
10
  onRuleEnd(): never[];
@@ -30,7 +30,7 @@ var MinotaurEffectRule = (function (_super) {
30
30
  }
31
31
  MinotaurEffectRule.prototype.onRuleStart = function () {
32
32
  this.memorize(Memory_1.Memory.TargetLine, this.card.location.x);
33
- return [];
33
+ return _super.prototype.onRuleStart.call(this);
34
34
  };
35
35
  MinotaurEffectRule.prototype.getMovingCards = function (player) {
36
36
  var column = this.remind(Memory_1.Memory.TargetLine);
@@ -5,7 +5,7 @@ import { RuleId } from '../RuleId';
5
5
  export declare class NuwaEffectRule extends SimultaneousSacrificeEffectRule {
6
6
  ruleId: RuleId;
7
7
  getAffectedPlayers(): number[];
8
- onRuleStart(): never[];
8
+ onRuleStart(): import("@gamepark/rules-api").MaterialMove<number, number, number, number>[];
9
9
  getActivePlayerLegalMoves(player: PlayerColor): import("@gamepark/rules-api").MaterialMove<number, number, number, number>[];
10
10
  getCardsToSacrifice(player: PlayerColor): Material;
11
11
  onSacrifice(move: MoveItem): import("@gamepark/rules-api").EndPlayerTurn<number>[];
@@ -61,7 +61,7 @@ var NuwaEffectRule = (function (_super) {
61
61
  }
62
62
  finally { if (e_1) throw e_1.error; }
63
63
  }
64
- return [];
64
+ return _super.prototype.onRuleStart.call(this);
65
65
  };
66
66
  NuwaEffectRule.prototype.getActivePlayerLegalMoves = function (player) {
67
67
  var moves = _super.prototype.getActivePlayerLegalMoves.call(this, player);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/mythologies",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "The rules of Mythologies adapted for Game Park",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
@@ -29,5 +29,5 @@
29
29
  "i18next": "^22.0.3",
30
30
  "lodash": "^4.17.21"
31
31
  },
32
- "gitHead": "b10370b9280251102d7b219e849cd8d8cc07ab88"
32
+ "gitHead": "5775c7ed56e3ac920aa4e85663de4803319b542c"
33
33
  }