@firestone-hs/simulate-bgs-battle 1.1.657 → 1.1.661

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.
Files changed (84) hide show
  1. package/dist/cards/card.interface.d.ts +5 -1
  2. package/dist/cards/card.interface.js +3 -1
  3. package/dist/cards/card.interface.js.map +1 -1
  4. package/dist/cards/cards-data.d.ts +3 -1
  5. package/dist/cards/cards-data.js +3 -2
  6. package/dist/cards/cards-data.js.map +1 -1
  7. package/dist/cards/impl/_card-mappings.js +6 -0
  8. package/dist/cards/impl/_card-mappings.js.map +1 -1
  9. package/dist/cards/impl/minion/apexis-guardian.js +16 -12
  10. package/dist/cards/impl/minion/apexis-guardian.js.map +1 -1
  11. package/dist/cards/impl/minion/bassgill.js +1 -1
  12. package/dist/cards/impl/minion/bassgill.js.map +1 -1
  13. package/dist/cards/impl/minion/blue-volumizer.d.ts +2 -2
  14. package/dist/cards/impl/minion/blue-volumizer.js +4 -7
  15. package/dist/cards/impl/minion/blue-volumizer.js.map +1 -1
  16. package/dist/cards/impl/minion/bluesy-siren.js +1 -1
  17. package/dist/cards/impl/minion/bluesy-siren.js.map +1 -1
  18. package/dist/cards/impl/minion/expert-aviator.js +3 -1
  19. package/dist/cards/impl/minion/expert-aviator.js.map +1 -1
  20. package/dist/cards/impl/minion/green-volumizer.d.ts +2 -2
  21. package/dist/cards/impl/minion/green-volumizer.js +5 -9
  22. package/dist/cards/impl/minion/green-volumizer.js.map +1 -1
  23. package/dist/cards/impl/minion/pashmar-the-vengeful.js +2 -1
  24. package/dist/cards/impl/minion/pashmar-the-vengeful.js.map +1 -1
  25. package/dist/cards/impl/minion/profound-thinker.d.ts +2 -2
  26. package/dist/cards/impl/minion/profound-thinker.js +11 -8
  27. package/dist/cards/impl/minion/profound-thinker.js.map +1 -1
  28. package/dist/cards/impl/minion/red-volumizer.d.ts +2 -2
  29. package/dist/cards/impl/minion/red-volumizer.js +4 -7
  30. package/dist/cards/impl/minion/red-volumizer.js.map +1 -1
  31. package/dist/cards/impl/minion/roaring-rallier.d.ts +2 -2
  32. package/dist/cards/impl/minion/roaring-rallier.js +1 -1
  33. package/dist/cards/impl/minion/roaring-rallier.js.map +1 -1
  34. package/dist/cards/impl/minion/silent-enforcer.js +1 -1
  35. package/dist/cards/impl/minion/silent-enforcer.js.map +1 -1
  36. package/dist/cards/impl/minion/soulsplitter.js +6 -11
  37. package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
  38. package/dist/cards/impl/minion/surf-n-surf-crab-riding.d.ts +2 -0
  39. package/dist/cards/impl/minion/surf-n-surf-crab-riding.js +14 -0
  40. package/dist/cards/impl/minion/surf-n-surf-crab-riding.js.map +1 -0
  41. package/dist/cards/impl/minion/the-glad-iator.d.ts +2 -0
  42. package/dist/cards/impl/minion/the-glad-iator.js +12 -0
  43. package/dist/cards/impl/minion/the-glad-iator.js.map +1 -0
  44. package/dist/cards/impl/minion/timewarped-expeditioner.js +2 -2
  45. package/dist/cards/impl/minion/timewarped-expeditioner.js.map +1 -1
  46. package/dist/cards/impl/minion/timewarped-immortal.js +2 -2
  47. package/dist/cards/impl/minion/timewarped-immortal.js.map +1 -1
  48. package/dist/cards/impl/minion/timewarped-interpreter.js +2 -1
  49. package/dist/cards/impl/minion/timewarped-interpreter.js.map +1 -1
  50. package/dist/cards/impl/minion/timewarped-murcules.js +3 -0
  51. package/dist/cards/impl/minion/timewarped-murcules.js.map +1 -1
  52. package/dist/cards/impl/minion/timewarped-pashmar.js +2 -1
  53. package/dist/cards/impl/minion/timewarped-pashmar.js.map +1 -1
  54. package/dist/cards/impl/minion/timewarped-trickster.js +5 -8
  55. package/dist/cards/impl/minion/timewarped-trickster.js.map +1 -1
  56. package/dist/cards/impl/minion/timewarped-warghoul.js +9 -1
  57. package/dist/cards/impl/minion/timewarped-warghoul.js.map +1 -1
  58. package/dist/cards/impl/minion/twilight-hatchling.js +3 -6
  59. package/dist/cards/impl/minion/twilight-hatchling.js.map +1 -1
  60. package/dist/cards/impl/spellcraft/crab-mount.d.ts +2 -0
  61. package/dist/cards/impl/spellcraft/crab-mount.js +23 -0
  62. package/dist/cards/impl/spellcraft/crab-mount.js.map +1 -0
  63. package/dist/cards/impl/spellcraft/deep-blues.js +2 -1
  64. package/dist/cards/impl/spellcraft/deep-blues.js.map +1 -1
  65. package/dist/mechanics/player-global-effects.d.ts +4 -0
  66. package/dist/mechanics/player-global-effects.js +16 -0
  67. package/dist/mechanics/player-global-effects.js.map +1 -0
  68. package/dist/mechanics/rally.js +1 -1
  69. package/dist/mechanics/rally.js.map +1 -1
  70. package/dist/simulation/damage-effects.js +1 -1
  71. package/dist/simulation/damage-effects.js.map +1 -1
  72. package/dist/simulation/deathrattle-effects.js +10 -2
  73. package/dist/simulation/deathrattle-effects.js.map +1 -1
  74. package/dist/simulation/deathrattle-spawns.js +10 -10
  75. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  76. package/dist/simulation/enchantments.js +7 -2
  77. package/dist/simulation/enchantments.js.map +1 -1
  78. package/dist/simulation/magnetize.d.ts +6 -0
  79. package/dist/simulation/magnetize.js +14 -1
  80. package/dist/simulation/magnetize.js.map +1 -1
  81. package/dist/utils.d.ts +4 -2
  82. package/dist/utils.js +10 -8
  83. package/dist/utils.js.map +1 -1
  84. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pashmar-the-vengeful.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/pashmar-the-vengeful.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;SACjE;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const PashmarTheVengeful: AvengeCard = {\r\n\tcardIds: [CardIds.PashmarTheVengeful_BG23_014, CardIds.PashmarTheVengeful_BG23_014_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.PashmarTheVengeful_BG23_014_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(input.gameState.cardsData.getRandomSpellcraft());\r\n\t\t}\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"pashmar-the-vengeful.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/pashmar-the-vengeful.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CACd,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,mCAAI,CAAC,EAAE,CAAC,CAC5F,CAAC;SACF;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const PashmarTheVengeful: AvengeCard = {\r\n\tcardIds: [CardIds.PashmarTheVengeful_BG23_014, CardIds.PashmarTheVengeful_BG23_014_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.PashmarTheVengeful_BG23_014_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(\r\n\t\t\t\tinput.gameState.cardsData.getRandomSpellcraft({ maxTavernTier: input.hero.tavernTier ?? 3 }),\r\n\t\t\t);\r\n\t\t}\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { BattlecryCard } from '../../card.interface';
2
- export declare const ProfoundThinker: BattlecryCard;
1
+ import { RallyCard } from '../../card.interface';
2
+ export declare const ProfoundThinker: RallyCard;
@@ -5,23 +5,26 @@ const cast_tavern_spell_1 = require("../../../mechanics/cast-tavern-spell");
5
5
  const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
6
6
  exports.ProfoundThinker = {
7
7
  cardIds: ["BG34_929", "BG34_929_G"],
8
- battlecry: (minion, input) => {
8
+ rally: (minion, input) => {
9
+ var _a;
9
10
  const mult = minion.cardId === "BG34_929_G" ? 2 : 1;
10
11
  for (let i = 0; i < mult; i++) {
11
- const spell = input.gameState.cardsData.getRandomSpellcraft();
12
+ const spell = input.gameState.cardsData.getRandomSpellcraft({
13
+ maxTavernTier: (_a = input.attackingHero.tavernTier) !== null && _a !== void 0 ? _a : 3,
14
+ });
12
15
  (0, cast_tavern_spell_1.castTavernSpell)(spell, {
13
16
  spellCardId: spell,
14
17
  source: minion,
15
18
  target: minion,
16
- board: input.board,
17
- hero: input.hero,
18
- otherBoard: input.otherBoard,
19
- otherHero: input.otherHero,
19
+ board: input.attackingBoard,
20
+ hero: input.attackingHero,
21
+ otherBoard: input.defendingBoard,
22
+ otherHero: input.defendingHero,
20
23
  gameState: input.gameState,
21
24
  });
22
- (0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, [spell], input.gameState);
25
+ (0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, [spell], input.gameState);
23
26
  }
24
- return true;
27
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
25
28
  },
26
29
  };
27
30
  //# sourceMappingURL=profound-thinker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profound-thinker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/profound-thinker.ts"],"names":[],"mappings":";;;AACA,4EAAuE;AAGvE,qEAAmE;AAGtD,QAAA,eAAe,GAAkB;IAC7C,OAAO,EAAE,0BAAsE;IAC/E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;YAC9D,IAAA,mCAAe,EAAC,KAAK,EAAE;gBACtB,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAClE;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { castTavernSpell } from '../../../mechanics/cast-tavern-spell';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nexport const ProfoundThinker: BattlecryCard = {\r\n\tcardIds: [CardIds.ProfoundThinker_BG34_929, CardIds.ProfoundThinker_BG34_929_G],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.ProfoundThinker_BG34_929_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tconst spell = input.gameState.cardsData.getRandomSpellcraft();\r\n\t\t\tcastTavernSpell(spell, {\r\n\t\t\t\tspellCardId: spell,\r\n\t\t\t\tsource: minion,\r\n\t\t\t\ttarget: minion,\r\n\t\t\t\tboard: input.board,\r\n\t\t\t\thero: input.hero,\r\n\t\t\t\totherBoard: input.otherBoard,\r\n\t\t\t\totherHero: input.otherHero,\r\n\t\t\t\tgameState: input.gameState,\r\n\t\t\t});\r\n\t\t\taddCardsInHand(input.hero, input.board, [spell], input.gameState);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"profound-thinker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/profound-thinker.ts"],"names":[],"mappings":";;;AACA,4EAAuE;AAEvE,qEAAmE;AAItD,QAAA,eAAe,GAAc;IACzC,OAAO,EAAE,0BAAsE;IAC/E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC;gBAC3D,aAAa,EAAE,MAAA,KAAK,CAAC,aAAa,CAAC,UAAU,mCAAI,CAAC;aAClD,CAAC,CAAC;YACH,IAAA,mCAAe,EAAC,KAAK,EAAE;gBACtB,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK,CAAC,cAAc;gBAC3B,IAAI,EAAE,KAAK,CAAC,aAAa;gBACzB,UAAU,EAAE,KAAK,CAAC,cAAc;gBAChC,SAAS,EAAE,KAAK,CAAC,aAAa;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;aAC1B,CAAC,CAAC;YACH,IAAA,8BAAc,EAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACpF;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { castTavernSpell } from '../../../mechanics/cast-tavern-spell';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const ProfoundThinker: RallyCard = {\r\n\tcardIds: [CardIds.ProfoundThinker_BG34_929, CardIds.ProfoundThinker_BG34_929_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.ProfoundThinker_BG34_929_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tconst spell = input.gameState.cardsData.getRandomSpellcraft({\r\n\t\t\t\tmaxTavernTier: input.attackingHero.tavernTier ?? 3,\r\n\t\t\t});\r\n\t\t\tcastTavernSpell(spell, {\r\n\t\t\t\tspellCardId: spell,\r\n\t\t\t\tsource: minion,\r\n\t\t\t\ttarget: minion,\r\n\t\t\t\tboard: input.attackingBoard,\r\n\t\t\t\thero: input.attackingHero,\r\n\t\t\t\totherBoard: input.defendingBoard,\r\n\t\t\t\totherHero: input.defendingHero,\r\n\t\t\t\tgameState: input.gameState,\r\n\t\t\t});\r\n\t\t\taddCardsInHand(input.attackingHero, input.attackingBoard, [spell], input.gameState);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { OnBeforeMagnetizeCard } from '../../card.interface';
2
- export declare const RedVolumizer: OnBeforeMagnetizeCard;
1
+ import { OnBeforeMagnetizeSelfCard } from '../../card.interface';
2
+ export declare const RedVolumizer: OnBeforeMagnetizeSelfCard;
@@ -1,18 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedVolumizer = void 0;
4
+ const player_global_effects_1 = require("../../../mechanics/player-global-effects");
4
5
  const stats_1 = require("../../../simulation/stats");
5
- const utils_1 = require("../../../utils");
6
6
  exports.RedVolumizer = {
7
7
  cardIds: ["BG34_170t", "BG34_170t_G"],
8
- onBeforeMagnetize: (entity, input) => {
8
+ onBeforeMagnetizeSelf: (entity, input) => {
9
9
  const mult = entity.cardId === "BG34_170t_G" ? 2 : 1;
10
10
  const buff = 3 * mult;
11
- input.hero.globalInfo.VolumizerAttackBuff += buff;
12
- const targets = input.board.filter((e) => (0, utils_1.isVolumizer)(e.cardId, input.hero, input.gameState.anomalies, input.gameState.allCards));
13
- for (const target of targets) {
14
- (0, stats_1.modifyStats)(target, entity, buff, 0, input.board, input.hero, input.gameState);
15
- }
11
+ (0, player_global_effects_1.updateVolumizerBuffs)(input.hero, input.board, buff, 0, input.gameState);
12
+ (0, stats_1.modifyStats)(entity, entity, input.hero.globalInfo.VolumizerAttackBuff, input.hero.globalInfo.VolumizerHealthBuff, input.board, input.hero, input.gameState);
16
13
  },
17
14
  };
18
15
  //# sourceMappingURL=red-volumizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"red-volumizer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/red-volumizer.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AACxD,0CAA6C;AAGhC,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,4BAAuF;IAChG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,IAAI,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,IAAA,mBAAW,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACtF,CAAC;QACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC/E;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { isVolumizer } from '../../../utils';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const RedVolumizer: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.AutoAccelerator_RedVolumizerToken_BG34_170t, CardIds.RedVolumizer_BG34_170t_G],\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.RedVolumizer_BG34_170t_G ? 2 : 1;\r\n\t\tconst buff = 3 * mult;\r\n\t\tinput.hero.globalInfo.VolumizerAttackBuff += buff;\r\n\t\tconst targets = input.board.filter((e) =>\r\n\t\t\tisVolumizer(e.cardId, input.hero, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, entity, buff, 0, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"red-volumizer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/red-volumizer.ts"],"names":[],"mappings":";;;AACA,oFAAgF;AAGhF,qDAAwD;AAG3C,QAAA,YAAY,GAA8B;IACtD,OAAO,EAAE,4BAAuF;IAChG,qBAAqB,EAAE,CAAC,MAAmB,EAAE,KAAiC,EAAE,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;QACtB,IAAA,4CAAoB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACxE,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EACzC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EACzC,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { updateVolumizerBuffs } from '../../../mechanics/player-global-effects';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeSelfInput } from '../../../simulation/magnetize';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnBeforeMagnetizeSelfCard } from '../../card.interface';\r\n\r\nexport const RedVolumizer: OnBeforeMagnetizeSelfCard = {\r\n\tcardIds: [CardIds.AutoAccelerator_RedVolumizerToken_BG34_170t, CardIds.RedVolumizer_BG34_170t_G],\r\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.RedVolumizer_BG34_170t_G ? 2 : 1;\r\n\t\tconst buff = 3 * mult;\r\n\t\tupdateVolumizerBuffs(input.hero, input.board, buff, 0, input.gameState);\r\n\t\tmodifyStats(\r\n\t\t\tentity,\r\n\t\t\tentity,\r\n\t\t\tinput.hero.globalInfo.VolumizerAttackBuff,\r\n\t\t\tinput.hero.globalInfo.VolumizerHealthBuff,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { RallyCard } from '../../card.interface';
2
- export declare const RoaringRallier: RallyCard;
1
+ import { OnWheneverAnotherMinionAttacksCard } from '../../card.interface';
2
+ export declare const RoaringRallier: OnWheneverAnotherMinionAttacksCard;
@@ -6,7 +6,7 @@ const stats_1 = require("../../../simulation/stats");
6
6
  const utils_1 = require("../../../utils");
7
7
  exports.RoaringRallier = {
8
8
  cardIds: ["BG29_816", "BG29_816_G"],
9
- rally: (minion, input) => {
9
+ onWheneverAnotherMinionAttacks: (minion, input) => {
10
10
  if ((0, utils_1.hasCorrectTribe)(input.attacker, input.attackingHero, reference_data_1.Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {
11
11
  if (minion !== input.attacker) {
12
12
  const stats = minion.cardId === "BG29_816_G" ? 2 : 1;
@@ -1 +1 @@
1
- {"version":3,"file":"roaring-rallier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/roaring-rallier.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAMpD,qDAAwE;AACxE,0CAAiD;AAGpC,QAAA,cAAc,GAAc;IACxC,OAAO,EAAE,0BAAoE;IAC7E,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QAC9G,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,IAAA,mBAAW,EACV,KAAK,CAAC,QAAQ,EACd,MAAM,EACN,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { dealDamageToMinion, getNeighbours } from '../../../simulation/attack';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats, setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DefaultChargesCard, RallyCard } from '../../card.interface';\r\n\r\nexport const RoaringRallier: RallyCard = {\r\n\tcardIds: [CardIds.RoaringRallier_BG29_816, CardIds.RoaringRallier_BG29_816_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tRace.DRAGON,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tif (minion !== input.attacker) {\r\n\t\t\t\tconst stats = minion.cardId === CardIds.RoaringRallier_BG29_816_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\tinput.attacker,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\t3 * stats,\r\n\t\t\t\t\t1 * stats,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"roaring-rallier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/roaring-rallier.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,cAAc,GAAuC;IACjE,OAAO,EAAE,0BAAoE;IAC7E,8BAA8B,EAAE,CAC/B,MAAmB,EACnB,KAAoB,EACuC,EAAE;QAC7D,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,IAAA,mBAAW,EACV,KAAK,CAAC,QAAQ,EACd,MAAM,EACN,CAAC,GAAG,KAAK,EACT,CAAC,GAAG,KAAK,EACT,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { OnWheneverAnotherMinionAttacksCard } from '../../card.interface';\r\n\r\nexport const RoaringRallier: OnWheneverAnotherMinionAttacksCard = {\r\n\tcardIds: [CardIds.RoaringRallier_BG29_816, CardIds.RoaringRallier_BG29_816_G],\r\n\tonWheneverAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnAttackInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tRace.DRAGON,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tif (minion !== input.attacker) {\r\n\t\t\t\tconst stats = minion.cardId === CardIds.RoaringRallier_BG29_816_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\tinput.attacker,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\t3 * stats,\r\n\t\t\t\t\t1 * stats,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -17,7 +17,7 @@ exports.SilentEnforcer = {
17
17
  ];
18
18
  for (const target of targets) {
19
19
  input.gameState.spectator.registerPowerTarget(minion, target, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoardHero);
20
- (0, attack_1.dealDamageToMinion)(target, input.otherBoard, input.otherBoardHero, minion, 4, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
20
+ (0, attack_1.dealDamageToMinion)(target, input.otherBoard, input.otherBoardHero, minion, 2, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
21
21
  }
22
22
  }
23
23
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"silent-enforcer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/silent-enforcer.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAAgE;AAEhE,0CAAiD;AAGpC,QAAA,cAAc,GAAyB;IACnD,OAAO,EAAE,0BAAoE;IAC7E,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,2BAA2B,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC/G,MAAM,2BAA2B,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACtG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG;gBAEf,GAAG,2BAA2B,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,IAAA,uBAAe,EACf,CAAC,EACD,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF;gBAED,GAAG,2BAA2B;aAC9B,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const SilentEnforcer: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.SilentEnforcer_BG33_156, CardIds.SilentEnforcer_BG33_156_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.SilentEnforcer_BG33_156_G ? 2 : 1;\r\n\t\tconst friendlyMinionsAliveAtStart = input.boardWithDeadEntity.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\tconst opponentMinionsAliveAtStart = input.otherBoard.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tconst targets = [\r\n\t\t\t\t// Friendly non-demons\r\n\t\t\t\t...friendlyMinionsAliveAtStart.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t!hasCorrectTribe(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\t\t\tRace.DEMON,\r\n\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t),\r\n\t\t\t\t// All opponent minions\r\n\t\t\t\t...opponentMinionsAliveAtStart,\r\n\t\t\t];\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\t4,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"silent-enforcer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/silent-enforcer.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAAgE;AAEhE,0CAAiD;AAGpC,QAAA,cAAc,GAAyB;IACnD,OAAO,EAAE,0BAAoE;IAC7E,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,2BAA2B,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QAC/G,MAAM,2BAA2B,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;QACtG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG;gBAEf,GAAG,2BAA2B,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,IAAA,uBAAe,EACf,CAAC,EACD,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF;gBAED,GAAG,2BAA2B;aAC9B,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const SilentEnforcer: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.SilentEnforcer_BG33_156, CardIds.SilentEnforcer_BG33_156_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.SilentEnforcer_BG33_156_G ? 2 : 1;\r\n\t\tconst friendlyMinionsAliveAtStart = input.boardWithDeadEntity.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\tconst opponentMinionsAliveAtStart = input.otherBoard.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tconst targets = [\r\n\t\t\t\t// Friendly non-demons\r\n\t\t\t\t...friendlyMinionsAliveAtStart.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t!hasCorrectTribe(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\t\t\tRace.DEMON,\r\n\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t),\r\n\t\t\t\t// All opponent minions\r\n\t\t\t\t...opponentMinionsAliveAtStart,\r\n\t\t\t];\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\t2,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -1,24 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Soulsplitter = void 0;
4
- const reference_data_1 = require("@firestone-hs/reference-data");
5
4
  const reborn_1 = require("../../../keywords/reborn");
6
5
  const utils_1 = require("../../../services/utils");
7
- const utils_2 = require("../../../utils");
6
+ const deathrattle_utils_1 = require("../../../simulation/deathrattle-utils");
8
7
  exports.Soulsplitter = {
9
8
  cardIds: ["BG25_023", "BG25_023_G"],
10
9
  startOfCombatTiming: 'start-of-combat',
11
10
  startOfCombat: (minion, input) => {
12
11
  const numberOfTargets = minion.cardId === "BG25_023_G" ? 2 : 1;
13
- for (let i = 0; i < numberOfTargets; i++) {
14
- const undeadsWithoutReborn = input.playerBoard
15
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, input.playerEntity, reference_data_1.Race.UNDEAD, input.gameState.anomalies, input.gameState.allCards) && (0, utils_2.hasEntityMechanic)(e, reference_data_1.GameTag.REBORN, input.gameState.allCards))
16
- .filter((e) => !e.reborn);
17
- const chosenUndead = (0, utils_1.pickRandom)(undeadsWithoutReborn);
18
- if (chosenUndead) {
19
- (0, reborn_1.updateReborn)(chosenUndead, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
20
- input.gameState.spectator.registerPowerTarget(minion, chosenUndead, input.playerBoard, input.playerEntity, input.opponentEntity);
21
- }
12
+ const candidates = input.playerBoard.filter((e) => (0, deathrattle_utils_1.hasValidDeathrattle)(e, input.playerEntity, input.gameState) && !e.reborn);
13
+ const targets = (0, utils_1.pickMultipleRandom)(candidates, numberOfTargets);
14
+ for (const target of targets) {
15
+ (0, reborn_1.updateReborn)(target, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
16
+ input.gameState.spectator.registerPowerTarget(minion, target, input.playerBoard, input.playerEntity, input.opponentEntity);
22
17
  }
23
18
  return true;
24
19
  },
@@ -1 +1 @@
1
- {"version":3,"file":"soulsplitter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/soulsplitter.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAE7D,qDAAwD;AAExD,mDAAqD;AAErD,0CAAoE;AAGvD,QAAA,YAAY,GAAsB;IAC9C,OAAO,EAAE,0BAAgE;IACzE,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW;iBAC5C,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,IAAI,IAAA,yBAAiB,EAAC,CAAC,EAAE,wBAAO,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACpE;iBACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,oBAAoB,CAAC,CAAC;YACtD,IAAI,YAAY,EAAE;gBACjB,IAAA,qBAAY,EACX,YAAY,EACZ,IAAI,EACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { GameTag, Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { hasCorrectTribe, hasEntityMechanic } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Soulsplitter: StartOfCombatCard = {\r\n\tcardIds: [CardIds.Soulsplitter_BG25_023, CardIds.Soulsplitter_BG25_023_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst numberOfTargets = minion.cardId === CardIds.Soulsplitter_BG25_023_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < numberOfTargets; i++) {\r\n\t\t\tconst undeadsWithoutReborn = input.playerBoard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tRace.UNDEAD,\r\n\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t) && hasEntityMechanic(e, GameTag.REBORN, input.gameState.allCards),\r\n\t\t\t\t)\r\n\t\t\t\t.filter((e) => !e.reborn);\r\n\t\t\tconst chosenUndead = pickRandom(undeadsWithoutReborn);\r\n\t\t\tif (chosenUndead) {\r\n\t\t\t\tupdateReborn(\r\n\t\t\t\t\tchosenUndead,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tchosenUndead,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"soulsplitter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/soulsplitter.ts"],"names":[],"mappings":";;;AACA,qDAAwD;AAExD,mDAA6D;AAC7D,6EAA4E;AAI/D,QAAA,YAAY,GAAsB;IAC9C,OAAO,EAAE,0BAAgE;IACzE,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uCAAmB,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAC/E,CAAC;QACF,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,qBAAY,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACzG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandom } from '../../../services/utils';\r\nimport { hasValidDeathrattle } from '../../../simulation/deathrattle-utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Soulsplitter: StartOfCombatCard = {\r\n\tcardIds: [CardIds.Soulsplitter_BG25_023, CardIds.Soulsplitter_BG25_023_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst numberOfTargets = minion.cardId === CardIds.Soulsplitter_BG25_023_G ? 2 : 1;\r\n\t\tconst candidates = input.playerBoard.filter(\r\n\t\t\t(e) => hasValidDeathrattle(e, input.playerEntity, input.gameState) && !e.reborn,\r\n\t\t);\r\n\t\tconst targets = pickMultipleRandom(candidates, numberOfTargets);\r\n\t\tfor (const target of targets) {\r\n\t\t\tupdateReborn(target, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tminion,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleSpawnEnchantmentCard } from '../../card.interface';
2
+ export declare const SurfNSurfCrabRiding: DeathrattleSpawnEnchantmentCard;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SurfNSurfCrabRiding = void 0;
4
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
+ exports.SurfNSurfCrabRiding = {
6
+ cardIds: ["BG27_004e", "BG27_004_Ge"],
7
+ deathrattleSpawnEnchantmentEffect: (enchantment, minion, input) => {
8
+ const spawnId = enchantment.cardId === "BG27_004_Ge"
9
+ ? "BG27_004_Gt2"
10
+ : "BG27_004t2";
11
+ return (0, deathrattle_spawns_1.simplifiedSpawnEntities)(spawnId, 1, input);
12
+ },
13
+ };
14
+ //# sourceMappingURL=surf-n-surf-crab-riding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surf-n-surf-crab-riding.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/surf-n-surf-crab-riding.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,mBAAmB,GAAoC;IACnE,OAAO,EAAE,4BAAwG;IACjH,iCAAiC,EAAE,CAClC,WAA+B,EAC/B,MAAsC,EACtC,KAAgC,EAC/B,EAAE;QACH,MAAM,OAAO,GACZ,WAAW,CAAC,MAAM,kBAAwD;YACzE,CAAC;YACD,CAAC,aAAuC,CAAC;QAC3C,OAAO,IAAA,4CAAuB,EAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const SurfNSurfCrabRiding: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.SurfNSurf_CrabRidingEnchantment_BG27_004e, CardIds.SurfNSurf_CrabRidingEnchantment_BG27_004_Ge],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: { cardId: string },\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => {\r\n\t\tconst spawnId =\r\n\t\t\tenchantment.cardId === CardIds.SurfNSurf_CrabRidingEnchantment_BG27_004_Ge\r\n\t\t\t\t? CardIds.SurfNSurf_CrabToken_BG27_004_Gt2\r\n\t\t\t\t: CardIds.SurfNSurf_CrabToken_BG27_004t2;\r\n\t\treturn simplifiedSpawnEntities(spawnId, 1, input);\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnTavernSpellCastCard } from '../../card.interface';
2
+ export declare const TheGladIator: OnTavernSpellCastCard;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TheGladIator = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.TheGladIator = {
6
+ cardIds: ["BG27_025", "BG27_025_G"],
7
+ onTavernSpellCast: (minion, input) => {
8
+ const mult = minion.cardId === "BG27_025_G" ? 2 : 1;
9
+ (0, stats_1.modifyStats)(minion, minion, 1 * mult, 0, input.board, input.hero, input.gameState);
10
+ },
11
+ };
12
+ //# sourceMappingURL=the-glad-iator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"the-glad-iator.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/the-glad-iator.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAG3C,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,0BAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACpF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const TheGladIator: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TheGladIator_BG27_025, CardIds.TheGladIator_BG27_025_G],\r\n\tonTavernSpellCast: (minion: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TheGladIator_BG27_025_G ? 2 : 1;\r\n\t\tmodifyStats(minion, minion, 1 * mult, 0, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -10,11 +10,11 @@ exports.TimewarpedExpeditioner = {
10
10
  const minionsInHand = input.hero.hand.filter((c) => !!(c === null || c === void 0 ? void 0 : c.maxHealth));
11
11
  if (minionsInHand.length > 0) {
12
12
  const target = minionsInHand[0];
13
- (0, stats_1.modifyStats)(target, minion, input.attackAmount * mult, input.healthAmount * mult, input.board, input.hero, input.gameState);
13
+ (0, stats_1.modifyStats)(target, minion, input.attackAmount * mult, input.healthAmount * mult, input.board, input.hero, input.gameState, true, true, false);
14
14
  }
15
15
  if (minionsInHand.length > 1) {
16
16
  const target = minionsInHand[1];
17
- (0, stats_1.modifyStats)(target, minion, input.attackAmount * mult, input.healthAmount * mult, input.board, input.hero, input.gameState);
17
+ (0, stats_1.modifyStats)(target, minion, input.attackAmount * mult, input.healthAmount * mult, input.board, input.hero, input.gameState, true, true, false);
18
18
  }
19
19
  }
20
20
  },
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-expeditioner.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-expeditioner.ts"],"names":[],"mappings":";;;AAEA,qDAA6E;AAGhE,QAAA,sBAAsB,GAAuB;IACzD,OAAO,EAAE,sCAAgG;IACzG,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAClF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAA,CAAC,CAAC;YACpE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;aACF;YACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats, OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { OnStatsChangedCard } from '../../card.interface';\r\n\r\nexport const TimewarpedExpeditioner: OnStatsChangedCard = {\r\n\tcardIds: [CardIds.TimewarpedExpeditioner_BG34_Giant_317, CardIds.TimewarpedExpeditioner_BG34_Giant_317_G],\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedExpeditioner_BG34_Giant_317_G ? 2 : 1;\r\n\t\tif ((input.attackAmount > 0 || input.healthAmount > 0) && input.target === minion) {\r\n\t\t\tconst minionsInHand = input.hero.hand.filter((c) => !!c?.maxHealth);\r\n\t\t\tif (minionsInHand.length > 0) {\r\n\t\t\t\tconst target = minionsInHand[0];\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.attackAmount * mult,\r\n\t\t\t\t\tinput.healthAmount * mult,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (minionsInHand.length > 1) {\r\n\t\t\t\tconst target = minionsInHand[1];\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.attackAmount * mult,\r\n\t\t\t\t\tinput.healthAmount * mult,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-expeditioner.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-expeditioner.ts"],"names":[],"mappings":";;;AAEA,qDAA6E;AAGhE,QAAA,sBAAsB,GAAuB;IACzD,OAAO,EAAE,sCAAgG;IACzG,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;YAClF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,SAAS,CAAA,CAAC,CAAC;YACpE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,EACf,IAAI,EACJ,IAAI,EACJ,KAAK,CACL,CAAC;aACF;YACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAChC,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,YAAY,GAAG,IAAI,EACzB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,EACf,IAAI,EACJ,IAAI,EACJ,KAAK,CACL,CAAC;aACF;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats, OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { OnStatsChangedCard } from '../../card.interface';\r\n\r\nexport const TimewarpedExpeditioner: OnStatsChangedCard = {\r\n\tcardIds: [CardIds.TimewarpedExpeditioner_BG34_Giant_317, CardIds.TimewarpedExpeditioner_BG34_Giant_317_G],\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedExpeditioner_BG34_Giant_317_G ? 2 : 1;\r\n\t\tif ((input.attackAmount > 0 || input.healthAmount > 0) && input.target === minion) {\r\n\t\t\tconst minionsInHand = input.hero.hand.filter((c) => !!c?.maxHealth);\r\n\t\t\tif (minionsInHand.length > 0) {\r\n\t\t\t\tconst target = minionsInHand[0];\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.attackAmount * mult,\r\n\t\t\t\t\tinput.healthAmount * mult,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (minionsInHand.length > 1) {\r\n\t\t\t\tconst target = minionsInHand[1];\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.attackAmount * mult,\r\n\t\t\t\t\tinput.healthAmount * mult,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -8,8 +8,8 @@ exports.TimewarpedImmortal = {
8
8
  startOfCombat: (minion, input) => {
9
9
  const multiplier = minion.cardId === "BG34_Giant_597_G" ? 2 : 1;
10
10
  const neighbours = (0, attack_1.getNeighbours)(input.playerBoard, minion);
11
- const neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);
12
- const neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);
11
+ const neighboursAttack = neighbours.map((entity) => entity.maxAttack).reduce((a, b) => a + b, 0);
12
+ const neighboursHealth = neighbours.map((entity) => entity.maxHealth).reduce((a, b) => a + b, 0);
13
13
  (0, stats_1.modifyStats)(minion, minion, multiplier * neighboursAttack, multiplier * neighboursHealth, input.playerBoard, input.playerEntity, input.gameState);
14
14
  return true;
15
15
  },
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-immortal.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-immortal.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAE3D,qDAAwD;AAG3C,QAAA,kBAAkB,GAAsB;IACpD,OAAO,EAAE,sCAAwF;IACjG,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,UAAU,GAAG,gBAAgB,EAC7B,UAAU,GAAG,gBAAgB,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const TimewarpedImmortal: StartOfCombatCard = {\r\n\tcardIds: [CardIds.TimewarpedImmortal_BG34_Giant_597, CardIds.TimewarpedImmortal_BG34_Giant_597_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.TimewarpedImmortal_BG34_Giant_597_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);\r\n\t\tconst neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tmultiplier * neighboursAttack,\r\n\t\t\tmultiplier * neighboursHealth,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-immortal.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-immortal.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAE3D,qDAAwD;AAG3C,QAAA,kBAAkB,GAAsB;IACpD,OAAO,EAAE,sCAAwF;IACjG,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjG,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,UAAU,GAAG,gBAAgB,EAC7B,UAAU,GAAG,gBAAgB,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const TimewarpedImmortal: StartOfCombatCard = {\r\n\tcardIds: [CardIds.TimewarpedImmortal_BG34_Giant_597, CardIds.TimewarpedImmortal_BG34_Giant_597_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.TimewarpedImmortal_BG34_Giant_597_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst neighboursAttack = neighbours.map((entity) => entity.maxAttack).reduce((a, b) => a + b, 0);\r\n\t\tconst neighboursHealth = neighbours.map((entity) => entity.maxHealth).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tmultiplier * neighboursAttack,\r\n\t\t\tmultiplier * neighboursHealth,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TimewarpedInterpreter = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
4
5
  const utils_1 = require("../../../utils");
5
6
  exports.TimewarpedInterpreter = {
6
7
  cardIds: ["BG34_Giant_120", "BG34_Giant_120_G"],
7
8
  onBeforeMagnetize: (entity, input) => {
8
9
  const mult = entity.cardId === "BG34_Giant_120_G" ? 2 : 1;
9
- (0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 3 * mult, 1 * mult, input.gameState);
10
+ (0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 3 * mult, 1 * mult, input.gameState, reference_data_1.Race[reference_data_1.Race.MECH]);
10
11
  },
11
12
  };
12
13
  //# sourceMappingURL=timewarped-interpreter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-interpreter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-interpreter.ts"],"names":[],"mappings":";;;AAGA,0CAAiD;AAGpC,QAAA,qBAAqB,GAA0B;IAC3D,OAAO,EAAE,sCAA8F;IACvG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedInterpreter: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.TimewarpedInterpreter_BG34_Giant_120, CardIds.TimewarpedInterpreter_BG34_Giant_120_G],\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedInterpreter_BG34_Giant_120_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 3 * mult, 1 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-interpreter.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-interpreter.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,0CAAiD;AAGpC,QAAA,qBAAqB,GAA0B;IAC3D,OAAO,EAAE,sCAA8F;IACvG,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAmD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,qBAAI,CAAC,qBAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxG,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedInterpreter: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.TimewarpedInterpreter_BG34_Giant_120, CardIds.TimewarpedInterpreter_BG34_Giant_120_G],\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.TimewarpedInterpreter_BG34_Giant_120_G ? 2 : 1;\r\n\t\taddStatsToBoard(entity, input.board, input.hero, 3 * mult, 1 * mult, input.gameState, Race[Race.MECH]);\r\n\t},\r\n};\r\n"]}
@@ -5,6 +5,9 @@ const stats_1 = require("../../../simulation/stats");
5
5
  exports.TimewarpedMurcules = {
6
6
  cardIds: ["BG34_Giant_207", "BG34_Giant_207_G"],
7
7
  onMinionKilled: (minion, input) => {
8
+ if (input.killer !== minion || !input.killerIsAttacking) {
9
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
10
+ }
8
11
  const mult = minion.cardId === "BG34_Giant_207_G" ? 2 : 1;
9
12
  const murculesTarget = input.attackingHero.hand.filter((e) => !!(e === null || e === void 0 ? void 0 : e.cardId) && !!e.maxHealth)[0];
10
13
  if (murculesTarget) {
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-murcules.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-murcules.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,kBAAkB,GAAuB;IACrD,OAAO,EAAE,sCAAwF;IACjG,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,cAAc,EAAE;YACnB,IAAA,mBAAW,EACV,cAAc,EACd,MAAM,EACN,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const TimewarpedMurcules: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.TimewarpedMurcules_BG34_Giant_207, CardIds.TimewarpedMurcules_BG34_Giant_207_G],\r\n\tonMinionKilled: (minion: BoardEntity, input: OnMinionKilledInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedMurcules_BG34_Giant_207_G ? 2 : 1;\r\n\t\tconst murculesTarget = input.attackingHero.hand.filter((e) => !!e?.cardId && !!e.maxHealth)[0];\r\n\t\tif (murculesTarget) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tmurculesTarget,\r\n\t\t\t\tminion,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-murcules.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-murcules.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,kBAAkB,GAAuB;IACrD,OAAO,EAAE,sCAAwF;IACjG,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE;YACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,cAAc,EAAE;YACnB,IAAA,mBAAW,EACV,cAAc,EACd,MAAM,EACN,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const TimewarpedMurcules: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.TimewarpedMurcules_BG34_Giant_207, CardIds.TimewarpedMurcules_BG34_Giant_207_G],\r\n\tonMinionKilled: (minion: BoardEntity, input: OnMinionKilledInput) => {\r\n\t\tif (input.killer !== minion || !input.killerIsAttacking) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedMurcules_BG34_Giant_207_G ? 2 : 1;\r\n\t\tconst murculesTarget = input.attackingHero.hand.filter((e) => !!e?.cardId && !!e.maxHealth)[0];\r\n\t\tif (murculesTarget) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tmurculesTarget,\r\n\t\t\t\tminion,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -6,10 +6,11 @@ exports.TimewarpedPashmar = {
6
6
  cardIds: ["BG34_Giant_211", "BG34_Giant_211_G"],
7
7
  baseAvengeValue: (cardId) => 4,
8
8
  avenge: (minion, input) => {
9
+ var _a;
9
10
  const mult = minion.cardId === "BG34_Giant_211_G" ? 2 : 1;
10
11
  const cardsToAdd = [];
11
12
  for (let i = 0; i < mult; i++) {
12
- cardsToAdd.push(input.gameState.cardsData.getRandomSpellcraft());
13
+ cardsToAdd.push(input.gameState.cardsData.getRandomSpellcraft({ maxTavernTier: (_a = input.hero.tavernTier) !== null && _a !== void 0 ? _a : 3 }));
13
14
  }
14
15
  for (let i = 0; i < mult; i++) {
15
16
  cardsToAdd.push(input.gameState.cardsData.getRandomTavernSpell());
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-pashmar.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-pashmar.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,iBAAiB,GAAe;IAC5C,OAAO,EAAE,sCAAsF;IAC/F,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;SACjE;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAClE;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedPashmar: AvengeCard = {\r\n\tcardIds: [CardIds.TimewarpedPashmar_BG34_Giant_211, CardIds.TimewarpedPashmar_BG34_Giant_211_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedPashmar_BG34_Giant_211_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(input.gameState.cardsData.getRandomSpellcraft());\r\n\t\t}\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(input.gameState.cardsData.getRandomTavernSpell());\r\n\t\t}\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-pashmar.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-pashmar.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,iBAAiB,GAAe;IAC5C,OAAO,EAAE,sCAAsF;IAC/F,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CACd,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,mCAAI,CAAC,EAAE,CAAC,CAC5F,CAAC;SACF;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,CAAC;SAClE;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const TimewarpedPashmar: AvengeCard = {\r\n\tcardIds: [CardIds.TimewarpedPashmar_BG34_Giant_211, CardIds.TimewarpedPashmar_BG34_Giant_211_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedPashmar_BG34_Giant_211_G ? 2 : 1;\r\n\t\tconst cardsToAdd = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(\r\n\t\t\t\tinput.gameState.cardsData.getRandomSpellcraft({ maxTavernTier: input.hero.tavernTier ?? 3 }),\r\n\t\t\t);\r\n\t\t}\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(input.gameState.cardsData.getRandomTavernSpell());\r\n\t\t}\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -1,19 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TimewarpedTrickster = void 0;
4
- const attack_1 = require("../../../simulation/attack");
4
+ const utils_1 = require("../../../services/utils");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  exports.TimewarpedTrickster = {
7
7
  cardIds: ["BG34_Giant_010", "BG34_Giant_010_G"],
8
8
  deathrattleSpawn: (minion, input) => {
9
- var _a;
10
9
  const mult = minion.cardId === "BG34_Giant_010_G" ? 2 : 1;
11
- const hasImpulsivePortrait = (_a = input.boardWithDeadEntityHero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG32_MagicItem_820");
12
- const targets = hasImpulsivePortrait
13
- ? (0, attack_1.getNeighbours)(input.boardWithDeadEntity, input.deadEntity, input.deadEntityIndexFromRight)
14
- : input.boardWithDeadEntity.filter((e) => e != minion);
15
- for (let j = 0; j < mult; j++) {
16
- for (const target of targets) {
10
+ const targets = input.boardWithDeadEntity.filter((e) => e != minion);
11
+ const target = (0, utils_1.pickRandomAlive)(targets);
12
+ if (!!target) {
13
+ for (let j = 0; j < mult; j++) {
17
14
  (0, stats_1.modifyStats)(target, minion, minion.maxAttack, minion.maxHealth, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
18
15
  }
19
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-trickster.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-trickster.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAE3D,qDAAwD;AAG3C,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,sCAA0F;IACnG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,oBAAoB,GAAG,MAAA,KAAK,CAAC,uBAAuB,CAAC,QAAQ,0CAAE,IAAI,CACxE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAiD,CAChE,CAAC;QACF,MAAM,OAAO,GAAG,oBAAoB;YACnC,CAAC,CAAC,IAAA,sBAAa,EAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,wBAAwB,CAAC;YAC5F,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;QACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedTrickster: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedTrickster_BG34_Giant_010, CardIds.TimewarpedTrickster_BG34_Giant_010_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedTrickster_BG34_Giant_010_G ? 2 : 1;\r\n\t\tconst hasImpulsivePortrait = input.boardWithDeadEntityHero.trinkets?.some(\r\n\t\t\t(t) => t.cardId === CardIds.ImpulsivePortrait_BG32_MagicItem_820,\r\n\t\t);\r\n\t\tconst targets = hasImpulsivePortrait\r\n\t\t\t? getNeighbours(input.boardWithDeadEntity, input.deadEntity, input.deadEntityIndexFromRight)\r\n\t\t\t: input.boardWithDeadEntity.filter((e) => e != minion);\r\n\t\tfor (let j = 0; j < mult; j++) {\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tminion.maxAttack,\r\n\t\t\t\t\tminion.maxHealth,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-trickster.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-trickster.ts"],"names":[],"mappings":";;;AAEA,mDAA0D;AAE1D,qDAAwD;AAG3C,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,sCAA0F;IACnG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,uBAAiD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,EAChB,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandomAlive } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedTrickster: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedTrickster_BG34_Giant_010, CardIds.TimewarpedTrickster_BG34_Giant_010_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.TimewarpedTrickster_BG34_Giant_010_G ? 2 : 1;\r\n\t\tconst targets = input.boardWithDeadEntity.filter((e) => e != minion);\r\n\t\tconst target = pickRandomAlive(targets);\r\n\t\tif (!!target) {\r\n\t\t\tfor (let j = 0; j < mult; j++) {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tminion.maxAttack,\r\n\t\t\t\t\tminion.maxHealth,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -5,23 +5,31 @@ const utils_1 = require("../../../services/utils");
5
5
  const attack_1 = require("../../../simulation/attack");
6
6
  const deathrattle_orchestration_1 = require("../../../simulation/deathrattle-orchestration");
7
7
  const deathrattle_utils_1 = require("../../../simulation/deathrattle-utils");
8
+ let callStackDepth = 0;
8
9
  exports.TimewarpedWarghoul = {
9
10
  cardIds: ["BG34_Giant_331", "BG34_Giant_331_G"],
10
11
  deathrattleSpawn: (minion, input) => {
12
+ callStackDepth++;
11
13
  const allNeighbours = (0, attack_1.getNeighbours)(input.boardWithDeadEntity, minion, input.deadEntityIndexFromRight).filter((e) => !!e &&
12
14
  (0, deathrattle_utils_1.hasValidDeathrattle)(e, input.boardWithDeadEntityHero, input.gameState) &&
13
- !exports.TimewarpedWarghoul.cardIds.includes(e.cardId));
15
+ !exports.TimewarpedWarghoul.cardIds.includes(e.cardId) &&
16
+ e.entityId !== minion.entityId);
14
17
  const neighbours = minion.cardId === "BG34_Giant_331_G"
15
18
  ? allNeighbours
16
19
  : [(0, utils_1.pickRandom)(allNeighbours)].filter((e) => !!e);
17
20
  if (neighbours.length === 0) {
21
+ callStackDepth--;
18
22
  return [];
19
23
  }
24
+ if (callStackDepth > 10) {
25
+ console.log('warning: timewarped warghoul call stack depth is too deep');
26
+ }
20
27
  for (const neighbour of neighbours) {
21
28
  input.gameState.spectator.registerPowerTarget(minion, neighbour, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoardHero);
22
29
  const indexFromRight = input.boardWithDeadEntity.length - (input.boardWithDeadEntity.indexOf(neighbour) + 1);
23
30
  (0, deathrattle_orchestration_1.processDeathrattleForMinion)(neighbour, indexFromRight, [neighbour], neighbour.friendly ? input.gameState.gameState.player : input.gameState.gameState.opponent, neighbour.friendly ? input.gameState.gameState.opponent : input.gameState.gameState.player, input.gameState, false);
24
31
  }
32
+ callStackDepth--;
25
33
  return [];
26
34
  },
27
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-warghoul.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-warghoul.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,uDAA2D;AAE3D,6FAA4F;AAC5F,6EAA4E;AAG/D,QAAA,kBAAkB,GAAyB;IACvD,OAAO,EAAE,sCAAwF;IACjG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,aAAa,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAC5G,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC;YACH,IAAA,uCAAmB,EAAC,CAAC,EAAE,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,SAAS,CAAC;YACtE,CAAC,0BAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAC/C,CAAC;QACF,MAAM,UAAU,GACf,MAAM,CAAC,MAAM,uBAAgD;YAC5D,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,OAAO,EAAE,CAAC;SACV;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,SAAS,EACT,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,CACpB,CAAC;YACF,MAAM,cAAc,GACnB,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,IAAA,uDAA2B,EAC1B,SAAS,EACT,cAAc,EACd,CAAC,SAAS,CAAC,EACX,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAC1F,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAC1F,KAAK,CAAC,SAAS,EACf,KAAK,CACL,CAAC;SACF;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { processDeathrattleForMinion } from '../../../simulation/deathrattle-orchestration';\r\nimport { hasValidDeathrattle } from '../../../simulation/deathrattle-utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedWarghoul: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedWarghoul_BG34_Giant_331, CardIds.TimewarpedWarghoul_BG34_Giant_331_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst allNeighbours = getNeighbours(input.boardWithDeadEntity, minion, input.deadEntityIndexFromRight).filter(\r\n\t\t\t(e) =>\r\n\t\t\t\t!!e &&\r\n\t\t\t\thasValidDeathrattle(e, input.boardWithDeadEntityHero, input.gameState) &&\r\n\t\t\t\t!TimewarpedWarghoul.cardIds.includes(e.cardId),\r\n\t\t);\r\n\t\tconst neighbours =\r\n\t\t\tminion.cardId === CardIds.TimewarpedWarghoul_BG34_Giant_331_G\r\n\t\t\t\t? allNeighbours\r\n\t\t\t\t: [pickRandom(allNeighbours)].filter((e) => !!e);\r\n\t\tif (neighbours.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tminion,\r\n\t\t\t\tneighbour,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight =\r\n\t\t\t\tinput.boardWithDeadEntity.length - (input.boardWithDeadEntity.indexOf(neighbour) + 1);\r\n\t\t\tprocessDeathrattleForMinion(\r\n\t\t\t\tneighbour,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\t[neighbour],\r\n\t\t\t\tneighbour.friendly ? input.gameState.gameState.player : input.gameState.gameState.opponent,\r\n\t\t\t\tneighbour.friendly ? input.gameState.gameState.opponent : input.gameState.gameState.player,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-warghoul.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-warghoul.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,uDAA2D;AAE3D,6FAA4F;AAC5F,6EAA4E;AAG5E,IAAI,cAAc,GAAG,CAAC,CAAC;AAEV,QAAA,kBAAkB,GAAyB;IACvD,OAAO,EAAE,sCAAwF;IACjG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,cAAc,EAAE,CAAC;QACjB,MAAM,aAAa,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAC5G,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC;YACH,IAAA,uCAAmB,EAAC,CAAC,EAAE,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,SAAS,CAAC;YACtE,CAAC,0BAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;YAI9C,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAG/B,CAAC;QACF,MAAM,UAAU,GACf,MAAM,CAAC,MAAM,uBAAgD;YAC5D,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,CAAC;SACV;QACD,IAAI,cAAc,GAAG,EAAE,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;SACzE;QACD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,SAAS,EACT,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,cAAc,CACpB,CAAC;YACF,MAAM,cAAc,GACnB,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACvF,IAAA,uDAA2B,EAC1B,SAAS,EACT,cAAc,EACd,CAAC,SAAS,CAAC,EACX,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAC1F,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAC1F,KAAK,CAAC,SAAS,EACf,KAAK,CACL,CAAC;SACF;QACD,cAAc,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { processDeathrattleForMinion } from '../../../simulation/deathrattle-orchestration';\r\nimport { hasValidDeathrattle } from '../../../simulation/deathrattle-utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nlet callStackDepth = 0; // Global variable to track call stack depth\r\n\r\nexport const TimewarpedWarghoul: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedWarghoul_BG34_Giant_331, CardIds.TimewarpedWarghoul_BG34_Giant_331_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tcallStackDepth++;\r\n\t\tconst allNeighbours = getNeighbours(input.boardWithDeadEntity, minion, input.deadEntityIndexFromRight).filter(\r\n\t\t\t(e) =>\r\n\t\t\t\t!!e &&\r\n\t\t\t\thasValidDeathrattle(e, input.boardWithDeadEntityHero, input.gameState) &&\r\n\t\t\t\t!TimewarpedWarghoul.cardIds.includes(e.cardId) &&\r\n\t\t\t\t// The Warghoul will proc all the Whirl-O-Trons deathrattles but the copied deathrattle\r\n\t\t\t\t// cannot re-proc on the Warghoul itself. (If you manage to get a set up with 2 Whirl-O-Trons,\r\n\t\t\t\t// Macaw and Warghoul then congrats! Things may start to loop)\r\n\t\t\t\te.entityId !== minion.entityId,\r\n\t\t\t// !e.enchantments?.some((e) => TimewarpedWarghoul.cardIds.includes(e.cardId)) &&\r\n\t\t\t// !e.rememberedDeathrattles?.some((e) => TimewarpedWarghoul.cardIds.includes(e.cardId)),\r\n\t\t);\r\n\t\tconst neighbours =\r\n\t\t\tminion.cardId === CardIds.TimewarpedWarghoul_BG34_Giant_331_G\r\n\t\t\t\t? allNeighbours\r\n\t\t\t\t: [pickRandom(allNeighbours)].filter((e) => !!e);\r\n\t\tif (neighbours.length === 0) {\r\n\t\t\tcallStackDepth--;\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tif (callStackDepth > 10) {\r\n\t\t\tconsole.log('warning: timewarped warghoul call stack depth is too deep');\r\n\t\t}\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tminion,\r\n\t\t\t\tneighbour,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight =\r\n\t\t\t\tinput.boardWithDeadEntity.length - (input.boardWithDeadEntity.indexOf(neighbour) + 1);\r\n\t\t\tprocessDeathrattleForMinion(\r\n\t\t\t\tneighbour,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\t[neighbour],\r\n\t\t\t\tneighbour.friendly ? input.gameState.gameState.player : input.gameState.gameState.opponent,\r\n\t\t\t\tneighbour.friendly ? input.gameState.gameState.opponent : input.gameState.gameState.player,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t}\r\n\t\tcallStackDepth--;\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -3,13 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TwilightHatchling = void 0;
4
4
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
5
  exports.TwilightHatchling = {
6
- cardIds: [
7
- "BG34_630t",
8
- "BG34_630_Gt",
9
- ],
6
+ cardIds: ["BG34_630", "BG34_630_G"],
10
7
  deathrattleSpawn: (minion, input) => {
11
- const mult = minion.cardId === "BG34_630_Gt" ? 2 : 1;
12
- const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BRM_004", mult, input);
8
+ const mult = minion.cardId === "BG34_630_G" ? 2 : 1;
9
+ const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BG34_630t", mult, input);
13
10
  spawns.forEach((e) => {
14
11
  e.attackImmediately = true;
15
12
  });
@@ -1 +1 @@
1
- {"version":3,"file":"twilight-hatchling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/twilight-hatchling.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,iBAAiB,GAAyB;IACtD,OAAO,EAAE;;;KAGR;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,IAAA,4CAAuB,aAAwB,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TwilightHatchling: DeathrattleSpawnCard = {\r\n\tcardIds: [\r\n\t\tCardIds.TwilightHatchling_TwilightWhelpToken_BG34_630t,\r\n\t\tCardIds.TwilightHatchling_TwilightWhelpToken_BG34_630_Gt,\r\n\t],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.TwilightHatchling_TwilightWhelpToken_BG34_630_Gt ? 2 : 1;\r\n\t\tconst spawns = simplifiedSpawnEntities(CardIds.TwilightWhelp, mult, input);\r\n\t\tspawns.forEach((e) => {\r\n\t\t\te.attackImmediately = true;\r\n\t\t});\r\n\t\treturn spawns;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"twilight-hatchling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/twilight-hatchling.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,iBAAiB,GAAyB;IACtD,OAAO,EAAE,0BAA0E;IACnF,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,IAAA,4CAAuB,eAAyD,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5G,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TwilightHatchling: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TwilightHatchling_BG34_630, CardIds.TwilightHatchling_BG34_630_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.TwilightHatchling_BG34_630_G ? 2 : 1;\r\n\t\tconst spawns = simplifiedSpawnEntities(CardIds.TwilightHatchling_TwilightWhelpToken_BG34_630t, mult, input);\r\n\t\tspawns.forEach((e) => {\r\n\t\t\te.attackImmediately = true;\r\n\t\t});\r\n\t\treturn spawns;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { TavernSpellCard } from '../../card.interface';
2
+ export declare const CrabMount: TavernSpellCard;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrabMount = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ exports.CrabMount = {
6
+ cardIds: ["BG27_004t", "BG27_004_Gt"],
7
+ castTavernSpell: (spellCardId, input) => {
8
+ var _a;
9
+ const target = (_a = input.target) !== null && _a !== void 0 ? _a : (0, utils_1.pickRandom)(input.board);
10
+ if (!!target) {
11
+ const enchantmentId = spellCardId === "BG27_004_Gt"
12
+ ? "BG27_004_Ge"
13
+ : "BG27_004e";
14
+ target.enchantments.push({
15
+ cardId: enchantmentId,
16
+ originEntityId: input.source.entityId,
17
+ timing: input.gameState.sharedState.currentEntityId++,
18
+ });
19
+ input.gameState.spectator.registerPowerTarget(input.source, target, input.board, input.hero, input.otherHero);
20
+ }
21
+ },
22
+ };
23
+ //# sourceMappingURL=crab-mount.js.map