@firestone-hs/simulate-bgs-battle 1.1.726 → 1.1.727

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 (109) hide show
  1. package/dist/bgs-battle-info.d.ts +1 -0
  2. package/dist/bgs-battle-info.js.map +1 -1
  3. package/dist/bgs-battle-options.d.ts +1 -0
  4. package/dist/bgs-battle-options.js.map +1 -1
  5. package/dist/cards/impl/_card-mappings.js +36 -0
  6. package/dist/cards/impl/_card-mappings.js.map +1 -1
  7. package/dist/cards/impl/hero-power/die-insects.d.ts +2 -0
  8. package/dist/cards/impl/hero-power/die-insects.js +21 -0
  9. package/dist/cards/impl/hero-power/die-insects.js.map +1 -0
  10. package/dist/cards/impl/hero-power/fire-the-cannons.d.ts +2 -0
  11. package/dist/cards/impl/hero-power/fire-the-cannons.js +21 -0
  12. package/dist/cards/impl/hero-power/fire-the-cannons.js.map +1 -0
  13. package/dist/cards/impl/hero-power/murloc-king-enchantment.d.ts +2 -0
  14. package/dist/cards/impl/hero-power/murloc-king-enchantment.js +9 -0
  15. package/dist/cards/impl/hero-power/murloc-king-enchantment.js.map +1 -0
  16. package/dist/cards/impl/hero-power/murloc-king.d.ts +2 -0
  17. package/dist/cards/impl/hero-power/murloc-king.js +24 -0
  18. package/dist/cards/impl/hero-power/murloc-king.js.map +1 -0
  19. package/dist/cards/impl/hero-power/nefarious-fire.d.ts +2 -0
  20. package/dist/cards/impl/hero-power/nefarious-fire.js +19 -0
  21. package/dist/cards/impl/hero-power/nefarious-fire.js.map +1 -0
  22. package/dist/cards/impl/hero-power/wax-warband.js +5 -1
  23. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -1
  24. package/dist/cards/impl/minion/arfus.d.ts +2 -0
  25. package/dist/cards/impl/minion/arfus.js +17 -0
  26. package/dist/cards/impl/minion/arfus.js.map +1 -0
  27. package/dist/cards/impl/minion/branns-epic-egg.d.ts +2 -0
  28. package/dist/cards/impl/minion/branns-epic-egg.js +23 -0
  29. package/dist/cards/impl/minion/branns-epic-egg.js.map +1 -0
  30. package/dist/cards/impl/minion/choral-mrrrglr.js +15 -5
  31. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
  32. package/dist/cards/impl/minion/elder-taggawag.d.ts +2 -5
  33. package/dist/cards/impl/minion/elder-taggawag.js +1 -0
  34. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -1
  35. package/dist/cards/impl/minion/elementium-squirrel-bomb.d.ts +2 -0
  36. package/dist/cards/impl/minion/elementium-squirrel-bomb.js +22 -0
  37. package/dist/cards/impl/minion/elementium-squirrel-bomb.js.map +1 -0
  38. package/dist/cards/impl/minion/kilrek.d.ts +2 -0
  39. package/dist/cards/impl/minion/kilrek.js +18 -0
  40. package/dist/cards/impl/minion/kilrek.js.map +1 -0
  41. package/dist/cards/impl/minion/lady-sinestra.d.ts +2 -0
  42. package/dist/cards/impl/minion/lady-sinestra.js +14 -0
  43. package/dist/cards/impl/minion/lady-sinestra.js.map +1 -0
  44. package/dist/cards/impl/minion/loyal-henchman.d.ts +2 -0
  45. package/dist/cards/impl/minion/loyal-henchman.js +21 -0
  46. package/dist/cards/impl/minion/loyal-henchman.js.map +1 -0
  47. package/dist/cards/impl/minion/mawsworn-soulkeeper.d.ts +2 -0
  48. package/dist/cards/impl/minion/mawsworn-soulkeeper.js +21 -0
  49. package/dist/cards/impl/minion/mawsworn-soulkeeper.js.map +1 -0
  50. package/dist/cards/impl/minion/probius.d.ts +2 -0
  51. package/dist/cards/impl/minion/probius.js +16 -0
  52. package/dist/cards/impl/minion/probius.js.map +1 -0
  53. package/dist/cards/impl/minion/sr-tomb-diver.d.ts +2 -0
  54. package/dist/cards/impl/minion/sr-tomb-diver.js +18 -0
  55. package/dist/cards/impl/minion/sr-tomb-diver.js.map +1 -0
  56. package/dist/cards/impl/minion/stalwart-kodo.js +3 -1
  57. package/dist/cards/impl/minion/stalwart-kodo.js.map +1 -1
  58. package/dist/cards/impl/minion/timewarped-mrrrglr.js +11 -5
  59. package/dist/cards/impl/minion/timewarped-mrrrglr.js.map +1 -1
  60. package/dist/cards/impl/minion/tuskarr-raider.d.ts +2 -0
  61. package/dist/cards/impl/minion/tuskarr-raider.js +36 -0
  62. package/dist/cards/impl/minion/tuskarr-raider.js.map +1 -0
  63. package/dist/cards/impl/minion/twilight-hatchling.js +1 -4
  64. package/dist/cards/impl/minion/twilight-hatchling.js.map +1 -1
  65. package/dist/cards/impl/minion/unearthed-underling.d.ts +2 -0
  66. package/dist/cards/impl/minion/unearthed-underling.js +14 -0
  67. package/dist/cards/impl/minion/unearthed-underling.js.map +1 -0
  68. package/dist/cards/impl/spell/fleeting-vigor.js +6 -1
  69. package/dist/cards/impl/spell/fleeting-vigor.js.map +1 -1
  70. package/dist/input-clone.js +5 -1
  71. package/dist/input-clone.js.map +1 -1
  72. package/dist/input-sanitation.js +3 -0
  73. package/dist/input-sanitation.js.map +1 -1
  74. package/dist/services/rng.d.ts +8 -0
  75. package/dist/services/rng.js +40 -0
  76. package/dist/services/rng.js.map +1 -0
  77. package/dist/services/utils.js +3 -2
  78. package/dist/services/utils.js.map +1 -1
  79. package/dist/simulate-bgs-battle.d.ts +10 -0
  80. package/dist/simulate-bgs-battle.js +119 -77
  81. package/dist/simulate-bgs-battle.js.map +1 -1
  82. package/dist/simulation/add-minion-to-board.js +8 -6
  83. package/dist/simulation/add-minion-to-board.js.map +1 -1
  84. package/dist/simulation/auras.js +42 -41
  85. package/dist/simulation/auras.js.map +1 -1
  86. package/dist/simulation/damage-cap.d.ts +2 -0
  87. package/dist/simulation/damage-cap.js +28 -0
  88. package/dist/simulation/damage-cap.js.map +1 -0
  89. package/dist/simulation/deathrattle-spawns.js +0 -57
  90. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  91. package/dist/simulation/internal-game-state.d.ts +2 -0
  92. package/dist/simulation/internal-game-state.js.map +1 -1
  93. package/dist/simulation/reborn.js +0 -13
  94. package/dist/simulation/reborn.js.map +1 -1
  95. package/dist/simulation/shared-state.d.ts +3 -1
  96. package/dist/simulation/shared-state.js +4 -1
  97. package/dist/simulation/shared-state.js.map +1 -1
  98. package/dist/simulation/simulator.d.ts +1 -0
  99. package/dist/simulation/simulator.js +13 -4
  100. package/dist/simulation/simulator.js.map +1 -1
  101. package/dist/simulation/spawns.js +1 -1
  102. package/dist/simulation/spawns.js.map +1 -1
  103. package/dist/simulation/start-of-combat/soc-action-processor.js +12 -0
  104. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  105. package/dist/simulation/stats.js +41 -24
  106. package/dist/simulation/stats.js.map +1 -1
  107. package/dist/utils.js +4 -4
  108. package/dist/utils.js.map +1 -1
  109. package/package.json +2 -2
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MurlocKingEnchantment = void 0;
4
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
+ exports.MurlocKingEnchantment = {
6
+ cardIds: ["TB_BaconShop_HP_017e"],
7
+ deathrattleSpawnEnchantmentEffect: (_enchantment, _minion, input) => (0, deathrattle_spawns_1.simplifiedSpawnEntities)("EX1_506a", 1, input),
8
+ };
9
+ //# sourceMappingURL=murloc-king-enchantment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murloc-king-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/murloc-king-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,qBAAqB,GAAoC;IACrE,OAAO,EAAE,wBAA0C;IACnD,iCAAiC,EAAE,CAClC,YAA8B,EAC9B,OAAoB,EACpB,KAAgC,EAC/B,EAAE,CAAC,IAAA,4CAAuB,cAA6C,CAAC,EAAE,KAAK,CAAC;CAClF,CAAC","sourcesContent":["import { BoardEnchantment, 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 MurlocKingEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.MurlocKing_MurlocKingEnchantment],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\t_enchantment: BoardEnchantment,\r\n\t\t_minion: BoardEntity,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => simplifiedSpawnEntities(CardIds.MurlocTidehunter_MurlocScoutLegacy, 1, input),\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const MurlocKing: StartOfCombatCard;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MurlocKing = void 0;
4
+ exports.MurlocKing = {
5
+ startOfCombatTiming: 'start-of-combat',
6
+ cardIds: ["TB_BaconShop_HP_017"],
7
+ startOfCombat: (trinket, input) => {
8
+ var _a;
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.MurlocKing.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ for (const minion of input.playerBoard) {
12
+ minion.enchantments = (_a = minion.enchantments) !== null && _a !== void 0 ? _a : [];
13
+ minion.enchantments.push({
14
+ cardId: "TB_BaconShop_HP_017e",
15
+ originEntityId: input.playerEntity.entityId,
16
+ timing: input.gameState.sharedState.currentEntityId++,
17
+ });
18
+ }
19
+ return true;
20
+ }
21
+ }
22
+ },
23
+ };
24
+ //# sourceMappingURL=murloc-king.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"murloc-king.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/murloc-king.ts"],"names":[],"mappings":";;;AAOa,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAoB;IAC7B,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,kBAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACpE,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;oBACvC,MAAM,CAAC,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,mCAAI,EAAE,CAAC;oBAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;wBACxB,MAAM,wBAA0C;wBAChD,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,QAAQ;wBAC3C,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;qBACrD,CAAC,CAAC;iBACH;gBACD,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const MurlocKing: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.MurlocKing],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (MurlocKing.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tfor (const minion of input.playerBoard) {\r\n\t\t\t\t\tminion.enchantments = minion.enchantments ?? [];\r\n\t\t\t\t\tminion.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.MurlocKing_MurlocKingEnchantment,\r\n\t\t\t\t\t\toriginEntityId: input.playerEntity.entityId,\r\n\t\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const NefariousFire: StartOfCombatCard;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NefariousFire = void 0;
4
+ const attack_1 = require("../../../simulation/attack");
5
+ exports.NefariousFire = {
6
+ startOfCombatTiming: 'start-of-combat',
7
+ cardIds: ["TB_BaconShop_HP_043"],
8
+ startOfCombat: (trinket, input) => {
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.NefariousFire.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ for (const target of [...input.opponentBoard]) {
12
+ (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, input.playerEntity, 1, input.playerBoard, input.playerEntity, input.gameState);
13
+ }
14
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
15
+ }
16
+ }
17
+ },
18
+ };
19
+ //# sourceMappingURL=nefarious-fire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nefarious-fire.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/nefarious-fire.ts"],"names":[],"mappings":";;;AAIA,uDAAgE;AAInD,QAAA,aAAa,GAAsB;IAC/C,mBAAmB,EAAE,iBAAiB;IACtC,OAAO,EAAE,uBAAuB;IAChC,aAAa,EAAE,CAAC,OAAmE,EAAE,KAAe,EAAE,EAAE;QACvG,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,qBAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACvE,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE;oBAC9C,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const NefariousFire: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tcardIds: [CardIds.NefariousFire],\r\n\tstartOfCombat: (trinket: BoardTrinket | BoardEntity | BgsPlayerEntity | BoardSecret, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (NefariousFire.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tfor (const target of [...input.opponentBoard]) {\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -26,7 +26,11 @@ exports.WaxWarband = {
26
26
  }),
27
27
  ];
28
28
  allMinions.forEach((e) => {
29
- (0, stats_1.modifyStats)(e, trinket, +heroPower.info3, +heroPower.info3, input.playerBoard, input.playerEntity, input.gameState);
29
+ var _a, _b, _c;
30
+ const buff = typeof heroPower.info3 === 'number' && heroPower.info3 > 0
31
+ ? heroPower.info3
32
+ : (_c = (_b = (_a = input.gameState.allCards.getCard(heroPower.cardId)) === null || _a === void 0 ? void 0 : _a.tags) === null || _b === void 0 ? void 0 : _b['TAG_SCRIPT_DATA_NUM_3']) !== null && _c !== void 0 ? _c : 1;
33
+ (0, stats_1.modifyStats)(e, trinket, +buff, +buff, input.playerBoard, input.playerEntity, input.gameState);
30
34
  });
31
35
  return true;
32
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":"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","sourcesContent":["import { ALL_BG_RACES, AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaxWarband: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.WaxWarband],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (WaxWarband.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tif (input.playerBoard.length > 0) {\r\n\t\t\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t).length,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\t\t\tconst allMinions = [\r\n\t\t\t\t\t\t...selectedMinions,\r\n\t\t\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\t\t\tgetEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t];\r\n\t\t\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t\t+heroPower.info3,\r\n\t\t\t\t\t\t\t+heroPower.info3,\r\n\t\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n\r\n// Not perfect, as I don't think this solves the issue where some cards are mutually exclusive\r\nexport const selectMinions = (minions: BoardEntity[], tribes: Race[], allCards: AllCardsService): BoardEntity[] => {\r\n\t// Step 1\r\n\tconst minionsByTribe: { [tribe: string]: BoardEntity[] } = {};\r\n\tfor (const minion of minions) {\r\n\t\tfor (const tribe of allCards.getCard(minion.cardId).races ?? []) {\r\n\t\t\tif (!minionsByTribe[tribe]) {\r\n\t\t\t\tminionsByTribe[tribe] = [];\r\n\t\t\t}\r\n\t\t\tminionsByTribe[tribe].push(minion);\r\n\t\t}\r\n\t}\r\n\tfor (const tribe of ALL_BG_RACES) {\r\n\t\tminionsByTribe[tribe] = shuffleArray(minionsByTribe[Race[tribe]] ?? []);\r\n\t}\r\n\r\n\tconst selectedMinions: BoardEntity[] = [];\r\n\r\n\t// Step 3\r\n\tfor (const tribe of tribes) {\r\n\t\tif (minionsByTribe[tribe]) {\r\n\t\t\tminionsByTribe[tribe].sort(\r\n\t\t\t\t(a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length,\r\n\t\t\t);\r\n\t\t\tfor (const minion of minionsByTribe[tribe]) {\r\n\t\t\t\tif (!selectedMinions.includes(minion)) {\r\n\t\t\t\t\tselectedMinions.push(minion);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 4\r\n\treturn selectedMinions;\r\n};\r\n"]}
1
+ {"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":"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","sourcesContent":["import { ALL_BG_RACES, AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaxWarband: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.WaxWarband],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (WaxWarband.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tif (input.playerBoard.length > 0) {\r\n\t\t\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t).length,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\t\t\tconst allMinions = [\r\n\t\t\t\t\t\t...selectedMinions,\r\n\t\t\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\t\t\tgetEffectiveTribesForEntity(\r\n\t\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t];\r\n\t\t\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\t\t\t// Entity often omits TAG_SCRIPT_DATA_NUM_3 while still at the card default (1).\r\n\t\t\t\t\t\tconst buff =\r\n\t\t\t\t\t\t\ttypeof heroPower.info3 === 'number' && heroPower.info3 > 0\r\n\t\t\t\t\t\t\t\t? heroPower.info3\r\n\t\t\t\t\t\t\t\t: input.gameState.allCards.getCard(heroPower.cardId)?.tags?.[\r\n\t\t\t\t\t\t\t\t\t\t'TAG_SCRIPT_DATA_NUM_3'\r\n\t\t\t\t\t\t\t\t ] ?? 1;\r\n\t\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t\t+buff,\r\n\t\t\t\t\t\t\t+buff,\r\n\t\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n\r\n// Not perfect, as I don't think this solves the issue where some cards are mutually exclusive\r\nexport const selectMinions = (minions: BoardEntity[], tribes: Race[], allCards: AllCardsService): BoardEntity[] => {\r\n\t// Step 1\r\n\tconst minionsByTribe: { [tribe: string]: BoardEntity[] } = {};\r\n\tfor (const minion of minions) {\r\n\t\tfor (const tribe of allCards.getCard(minion.cardId).races ?? []) {\r\n\t\t\tif (!minionsByTribe[tribe]) {\r\n\t\t\t\tminionsByTribe[tribe] = [];\r\n\t\t\t}\r\n\t\t\tminionsByTribe[tribe].push(minion);\r\n\t\t}\r\n\t}\r\n\tfor (const tribe of ALL_BG_RACES) {\r\n\t\tminionsByTribe[tribe] = shuffleArray(minionsByTribe[Race[tribe]] ?? []);\r\n\t}\r\n\r\n\tconst selectedMinions: BoardEntity[] = [];\r\n\r\n\t// Step 3\r\n\tfor (const tribe of tribes) {\r\n\t\tif (minionsByTribe[tribe]) {\r\n\t\t\tminionsByTribe[tribe].sort(\r\n\t\t\t\t(a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length,\r\n\t\t\t);\r\n\t\t\tfor (const minion of minionsByTribe[tribe]) {\r\n\t\t\t\tif (!selectedMinions.includes(minion)) {\r\n\t\t\t\t\tselectedMinions.push(minion);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 4\r\n\treturn selectedMinions;\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { AfterRebornCard } from '../../card.interface';
2
+ export declare const Arfus: AfterRebornCard;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Arfus = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.Arfus = {
6
+ cardIds: ["TB_BaconShop_HERO_22_Buddy", "TB_BaconShop_HERO_22_Buddy_G"],
7
+ afterReborn: (minion, input) => {
8
+ if (input.rebornEntity.entityId === minion.entityId ||
9
+ input.rebornEntity.rebornFromEntityId === minion.entityId) {
10
+ return;
11
+ }
12
+ const multiplier = minion.cardId === "TB_BaconShop_HERO_22_Buddy_G" ? 2 : 1;
13
+ const attackBonus = minion.attack * multiplier;
14
+ (0, stats_1.modifyStats)(input.rebornEntity, minion, attackBonus, 0, input.boardWithKilledMinion, input.boardWithKilledMinionHero, input.gameState);
15
+ },
16
+ };
17
+ //# sourceMappingURL=arfus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arfus.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/arfus.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,KAAK,GAAoB;IACrC,OAAO,EAAE,8DAAsF;IAC/F,WAAW,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QAE9D,IACC,KAAK,CAAC,YAAY,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAC/C,KAAK,CAAC,YAAY,CAAC,kBAAkB,KAAK,MAAM,CAAC,QAAQ,EACxD;YACD,OAAO;SACP;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QAC/C,IAAA,mBAAW,EACV,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,WAAW,EACX,CAAC,EACD,KAAK,CAAC,qBAAqB,EAC3B,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterRebornCard } from '../../card.interface';\r\n\r\nexport const Arfus: AfterRebornCard = {\r\n\tcardIds: [CardIds.Arfus_TB_BaconShop_HERO_22_Buddy, CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G],\r\n\tafterReborn: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\t// Don't buff Arfus' own Reborn spawn, nor Arfus itself\r\n\t\tif (\r\n\t\t\tinput.rebornEntity.entityId === minion.entityId ||\r\n\t\t\tinput.rebornEntity.rebornFromEntityId === minion.entityId\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst multiplier = minion.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G ? 2 : 1;\r\n\t\tconst attackBonus = minion.attack * multiplier;\r\n\t\tmodifyStats(\r\n\t\t\tinput.rebornEntity,\r\n\t\t\tminion,\r\n\t\t\tattackBonus,\r\n\t\t\t0,\r\n\t\t\tinput.boardWithKilledMinion,\r\n\t\t\tinput.boardWithKilledMinionHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleSpawnCard } from '../../card.interface';
2
+ export declare const BrannsEpicEgg: DeathrattleSpawnCard;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BrannsEpicEgg = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
6
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
7
+ exports.BrannsEpicEgg = {
8
+ cardIds: ["TB_BaconShop_HERO_43_Buddy", "TB_BaconShop_HERO_43_Buddy_G"],
9
+ deathrattleSpawn: (minion, input) => {
10
+ const mult = minion.cardId === "TB_BaconShop_HERO_43_Buddy_G" ? 2 : 1;
11
+ const spawns = [];
12
+ for (let i = 0; i < mult; i++) {
13
+ spawns.push((0, utils_1.pickRandom)(input.gameState.cardsData.battlecryMinions));
14
+ }
15
+ const spawnedEntities = [];
16
+ for (const spawn of spawns) {
17
+ spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(spawn, 1, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState, input.deadEntity.friendly, false));
18
+ }
19
+ (0, cards_in_hand_1.addCardsInHand)(input.boardWithDeadEntityHero, input.boardWithDeadEntity, spawns, input.gameState);
20
+ return spawnedEntities;
21
+ },
22
+ };
23
+ //# sourceMappingURL=branns-epic-egg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branns-epic-egg.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/branns-epic-egg.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,qEAAmE;AAEnE,+EAAuE;AAG1D,QAAA,aAAa,GAAyB;IAClD,OAAO,EAAE,8DAAsG;IAC/G,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;SACpE;QACD,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC3B,eAAe,CAAC,IAAI,CACnB,GAAG,IAAA,kCAAa,EACf,KAAK,EACL,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,CACL,CACD,CAAC;SACF;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClG,OAAO,eAAe,CAAC;IACxB,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const BrannsEpicEgg: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy, CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BrannsEpicEgg_TB_BaconShop_HERO_43_Buddy_G ? 2 : 1;\r\n\t\tconst spawns: string[] = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tspawns.push(pickRandom(input.gameState.cardsData.battlecryMinions));\r\n\t\t}\r\n\t\tconst spawnedEntities: BoardEntity[] = [];\r\n\t\tfor (const spawn of spawns) {\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tspawn,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\tinput.deadEntity.friendly,\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\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, spawns, input.gameState);\r\n\t\treturn spawnedEntities;\r\n\t},\r\n};\r\n"]}
@@ -6,14 +6,24 @@ exports.ChoralMrrrglr = {
6
6
  cardIds: ["BG26_354", "BG26_354_G"],
7
7
  startOfCombatTiming: 'start-of-combat',
8
8
  startOfCombat: (minion, input) => {
9
- var _a, _b, _c, _d;
9
+ var _a, _b;
10
10
  const multiplier = minion.cardId === "BG26_354_G" ? 2 : 1;
11
- const totalAttackInHand = (_b = (_a = input.playerEntity.hand) === null || _a === void 0 ? void 0 : _a.map((e) => { var _a; return (_a = e.attack) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0)) !== null && _b !== void 0 ? _b : 0;
12
- const totalHealthInHand = (_d = (_c = input.playerEntity.hand) === null || _c === void 0 ? void 0 : _c.map((e) => { var _a; return (_a = e.health) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0)) !== null && _d !== void 0 ? _d : 0;
11
+ const realHand = ((_a = input.playerEntity.hand) !== null && _a !== void 0 ? _a : []).filter((e) => { var _a; return !((_a = e.enchantments) === null || _a === void 0 ? void 0 : _a.some((ench) => ench.cardId === 'TB_BaconShopBadsongE')); });
12
+ const totalAttackInHand = realHand.map((e) => { var _a; return (_a = e.attack) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
13
+ const totalHealthInHand = realHand.map((e) => { var _a; return (_a = e.health) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
14
+ const hasChorusEnchant = !!((_b = minion.enchantments) === null || _b === void 0 ? void 0 : _b.some((e) => e.cardId === "BG26_354e"));
13
15
  const attackBuff = multiplier *
14
- (totalAttackInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralAttackBuff) || 0);
16
+ (totalAttackInHand ||
17
+ (hasChorusEnchant || minion.gildedInCombat
18
+ ? 0
19
+ : input.playerEntity.globalInfo.ChoralAttackBuff) ||
20
+ 0);
15
21
  const healthBuff = multiplier *
16
- (totalHealthInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralHealthBuff) || 0);
22
+ (totalHealthInHand ||
23
+ (hasChorusEnchant || minion.gildedInCombat
24
+ ? 0
25
+ : input.playerEntity.globalInfo.ChoralHealthBuff) ||
26
+ 0);
17
27
  (0, stats_1.modifyStats)(minion, minion, attackBuff, healthBuff, input.playerBoard, input.playerEntity, input.gameState);
18
28
  return true;
19
29
  },
@@ -1 +1 @@
1
- {"version":3,"file":"choral-mrrrglr.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/choral-mrrrglr.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,0BAAkE;IAC3E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE9E,MAAM,iBAAiB,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAI,CAAC,CAAC;QAC7G,MAAM,iBAAiB,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,mCAAI,CAAC,CAAC;QAK7G,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1G,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1G,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\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 ChoralMrrrglr: StartOfCombatCard = {\r\n\tcardIds: [CardIds.ChoralMrrrglr_BG26_354, CardIds.ChoralMrrrglr_BG26_354_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Multiplier not needed if relying on global info?\r\n\t\tconst multiplier = minion.cardId === CardIds.ChoralMrrrglr_BG26_354_G ? 2 : 1;\r\n\t\t// When it's summoned by Y'Shaarj hero power, the info isn't set\r\n\t\tconst totalAttackInHand = input.playerEntity.hand?.map((e) => e.attack ?? 0).reduce((a, b) => a + b, 0) ?? 0;\r\n\t\tconst totalHealthInHand = input.playerEntity.hand?.map((e) => e.health ?? 0).reduce((a, b) => a + b, 0) ?? 0;\r\n\t\t// If the minion is gilded in combat, the global info becomes unreliable\r\n\t\t// Update 2026-04-25: using the enchantment is not really reliable, in case we have a Mrrrglr and a\r\n\t\t// Timewarped Mrrrlgr. It seems to me, however, that we're getting information about the hand of both players,\r\n\t\t// not only the opponent, so we could use that instead.\r\n\t\tconst attackBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalAttackInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralAttackBuff) || 0);\r\n\t\tconst healthBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalHealthInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralHealthBuff) || 0);\r\n\t\tmodifyStats(minion, minion, attackBuff, healthBuff, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"choral-mrrrglr.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/choral-mrrrglr.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,0BAAkE;IAC3E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9E,MAAM,QAAQ,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC,MAAM,CACtD,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,CAAC,CAAC,YAAY,0CAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAA,CAAA,EAAA,CAC9E,CAAC;QACF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,MAAM,mCAAI,CAAC,CAAA,EAAA,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAKxF,MAAM,gBAAgB,GAAG,CAAC,CAAC,CAAA,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAA4C,CAC3D,CAAA,CAAC;QACF,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB;gBACjB,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc;oBACzC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAClD,CAAC,CAAC,CAAC;QACL,MAAM,UAAU,GACf,UAAU;YACV,CAAC,iBAAiB;gBACjB,CAAC,gBAAgB,IAAI,MAAM,CAAC,cAAc;oBACzC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAClD,CAAC,CAAC,CAAC;QACL,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC5G,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\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 ChoralMrrrglr: StartOfCombatCard = {\r\n\tcardIds: [CardIds.ChoralMrrrglr_BG26_354, CardIds.ChoralMrrrglr_BG26_354_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Multiplier not needed if relying on global info?\r\n\t\tconst multiplier = minion.cardId === CardIds.ChoralMrrrglr_BG26_354_G ? 2 : 1;\r\n\t\t// When it's summoned by Y'Shaarj hero power, the info isn't set.\r\n\t\t// Ignore Badsong-revealed hand cards — they are not real combat hand.\r\n\t\tconst realHand = (input.playerEntity.hand ?? []).filter(\r\n\t\t\t(e) => !e.enchantments?.some((ench) => ench.cardId === 'TB_BaconShopBadsongE'),\r\n\t\t);\r\n\t\tconst totalAttackInHand = realHand.map((e) => e.attack ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tconst totalHealthInHand = realHand.map((e) => e.health ?? 0).reduce((a, b) => a + b, 0);\r\n\t\t// Chorus enchantment script-data (and thus Choral*Buff globalInfo) mirrors buffs already\r\n\t\t// baked into ATK/HP from prior SoCs. Re-applying that fallback when hand is empty\r\n\t\t// (common for opponent extracts) double-counts. Only use globalInfo for fresh summons\r\n\t\t// that do not yet carry the enchantment (e.g. Y'Shaarj).\r\n\t\tconst hasChorusEnchant = !!minion.enchantments?.some(\r\n\t\t\t(e) => e.cardId === CardIds.ChoralMrrrglr_ChorusEnchantment,\r\n\t\t);\r\n\t\tconst attackBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalAttackInHand ||\r\n\t\t\t\t(hasChorusEnchant || minion.gildedInCombat\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: input.playerEntity.globalInfo.ChoralAttackBuff) ||\r\n\t\t\t\t0);\r\n\t\tconst healthBuff =\r\n\t\t\tmultiplier *\r\n\t\t\t(totalHealthInHand ||\r\n\t\t\t\t(hasChorusEnchant || minion.gildedInCombat\r\n\t\t\t\t\t? 0\r\n\t\t\t\t\t: input.playerEntity.globalInfo.ChoralHealthBuff) ||\r\n\t\t\t\t0);\r\n\t\tmodifyStats(minion, minion, attackBuff, healthBuff, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -1,5 +1,2 @@
1
- import { BoardEntity } from '../../../board-entity';
2
- import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
- export declare const ElderTaggawag: {
4
- startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
- };
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const ElderTaggawag: StartOfCombatCard;
@@ -4,6 +4,7 @@ exports.ElderTaggawag = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  const utils_1 = require("../../../utils");
6
6
  exports.ElderTaggawag = {
7
+ cardIds: ["TB_BaconShop_HERO_14_Buddy", "TB_BaconShop_HERO_14_Buddy_G"],
7
8
  startOfCombat: (minion, input) => {
8
9
  const minionsOfDifferentTypes = (0, utils_1.getMinionsOfDifferentTypes)(input.playerBoard, input.playerEntity, input.gameState);
9
10
  if (minionsOfDifferentTypes.length >= 4) {
@@ -1 +1 @@
1
- {"version":3,"file":"elder-taggawag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elder-taggawag.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AACxD,0CAA4D;AAE/C,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,uBAAuB,GAAG,IAAA,kCAA0B,EACzD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,IAAI,uBAAuB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChG,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,oBAAoB,GAAG,UAAU,EACjC,oBAAoB,GAAG,UAAU,EACjC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getMinionsOfDifferentTypes } from '../../../utils';\r\n\r\nexport const ElderTaggawag = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionsOfDifferentTypes = getMinionsOfDifferentTypes(\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\tif (minionsOfDifferentTypes.length >= 4) {\r\n\t\t\tconst highestAttackOnBoard = Math.max(...input.playerBoard.map((entity) => entity.attack));\r\n\t\t\tconst highestHealthOnBoard = Math.max(...input.playerBoard.map((entity) => entity.health));\r\n\t\t\tconst multiplier = minion.cardId === CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy_G ? 2 : 1;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tminion,\r\n\t\t\t\tminion,\r\n\t\t\t\thighestAttackOnBoard * multiplier,\r\n\t\t\t\thighestHealthOnBoard * multiplier,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\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":"elder-taggawag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elder-taggawag.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AACxD,0CAA4D;AAG/C,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,8DAAsG;IAC/G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,uBAAuB,GAAG,IAAA,kCAA0B,EACzD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,IAAI,uBAAuB,CAAC,MAAM,IAAI,CAAC,EAAE;YACxC,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3F,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChG,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,oBAAoB,GAAG,UAAU,EACjC,oBAAoB,GAAG,UAAU,EACjC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getMinionsOfDifferentTypes } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const ElderTaggawag: StartOfCombatCard = {\r\n\tcardIds: [CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy, CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionsOfDifferentTypes = getMinionsOfDifferentTypes(\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\tif (minionsOfDifferentTypes.length >= 4) {\r\n\t\t\tconst highestAttackOnBoard = Math.max(...input.playerBoard.map((entity) => entity.attack));\r\n\t\t\tconst highestHealthOnBoard = Math.max(...input.playerBoard.map((entity) => entity.health));\r\n\t\t\tconst multiplier = minion.cardId === CardIds.ElderTaggawag_TB_BaconShop_HERO_14_Buddy_G ? 2 : 1;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tminion,\r\n\t\t\t\tminion,\r\n\t\t\t\thighestAttackOnBoard * multiplier,\r\n\t\t\t\thighestHealthOnBoard * multiplier,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\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 { DeathrattleEffectCard } from '../../card.interface';
2
+ export declare const ElementiumSquirrelBomb: DeathrattleEffectCard;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ElementiumSquirrelBomb = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const attack_1 = require("../../../simulation/attack");
6
+ const utils_1 = require("../../../utils");
7
+ exports.ElementiumSquirrelBomb = {
8
+ cardIds: [
9
+ "TB_BaconShop_HERO_17_Buddy",
10
+ "TB_BaconShop_HERO_17_Buddy_G",
11
+ ],
12
+ deathrattleEffect: (minion, input) => {
13
+ const damage = minion.cardId === "TB_BaconShop_HERO_17_Buddy_G" ? 8 : 4;
14
+ const numberOfDeadMechsThisCombat = input.gameState.sharedState.deaths
15
+ .filter((entity) => entity.friendly === minion.friendly)
16
+ .filter((entity) => (0, utils_1.hasCorrectTribe)(entity, input.boardWithDeadEntityHero, reference_data_1.Race.MECH, input.gameState.anomalies, input.gameState.allCards)).length;
17
+ for (let i = 0; i < numberOfDeadMechsThisCombat; i++) {
18
+ (0, attack_1.dealDamageToRandomEnemy)(input.otherBoard, input.otherBoardHero, minion, damage, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
19
+ }
20
+ },
21
+ };
22
+ //# sourceMappingURL=elementium-squirrel-bomb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementium-squirrel-bomb.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/elementium-squirrel-bomb.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,uDAAqE;AAErE,0CAAiD;AAGpC,QAAA,sBAAsB,GAA0B;IAC5D,OAAO,EAAE;;;KAGR;IACD,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,mCAAgE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAGrG,MAAM,2BAA2B,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;aACpE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aACvD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,IAAA,uBAAe,EACd,MAAM,EACN,KAAK,CAAC,uBAAuB,EAC7B,qBAAI,CAAC,IAAI,EACT,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,CAAC,MAAM,CAAC;QACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE;YACrD,IAAA,gCAAuB,EACtB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,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 { dealDamageToRandomEnemy } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nexport const ElementiumSquirrelBomb: DeathrattleEffectCard = {\r\n\tcardIds: [\r\n\t\tCardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy,\r\n\t\tCardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy_G,\r\n\t],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst damage = minion.cardId === CardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy_G ? 8 : 4;\r\n\t\t// FIXME: this doesn't account for the fact that some mechs could still die from deathrattles\r\n\t\t// spawned after this point in the same combat, but it's good enough for now\r\n\t\tconst numberOfDeadMechsThisCombat = input.gameState.sharedState.deaths\r\n\t\t\t.filter((entity) => entity.friendly === minion.friendly)\r\n\t\t\t.filter((entity) =>\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tRace.MECH,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t),\r\n\t\t\t).length;\r\n\t\tfor (let i = 0; i < numberOfDeadMechsThisCombat; i++) {\r\n\t\t\tdealDamageToRandomEnemy(\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleSpawnCard } from '../../card.interface';
2
+ export declare const Kilrek: DeathrattleSpawnCard;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Kilrek = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
6
+ exports.Kilrek = {
7
+ cardIds: ["TB_BaconShop_HERO_37_Buddy", "TB_BaconShop_HERO_37_Buddy_G"],
8
+ deathrattleSpawn: (minion, input) => {
9
+ const mult = minion.cardId === "TB_BaconShop_HERO_37_Buddy_G" ? 2 : 1;
10
+ const cardsToAdd = [];
11
+ for (let i = 0; i < mult; i++) {
12
+ cardsToAdd.push((0, utils_1.pickRandom)(input.gameState.cardsData.demonSpawns));
13
+ }
14
+ (0, cards_in_hand_1.addCardsInHand)(input.boardWithDeadEntityHero, input.boardWithDeadEntity, cardsToAdd, input.gameState);
15
+ return [];
16
+ },
17
+ };
18
+ //# sourceMappingURL=kilrek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kilrek.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/kilrek.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,qEAAmE;AAItD,QAAA,MAAM,GAAyB;IAC3C,OAAO,EAAE,8DAAwF;IACjG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mCAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;SACnE;QACD,IAAA,8BAAc,EAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,mBAAmB,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtG,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 { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const Kilrek: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy, CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy_G ? 2 : 1;\r\n\t\tconst cardsToAdd: string[] = [];\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tcardsToAdd.push(pickRandom(input.gameState.cardsData.demonSpawns));\r\n\t\t}\r\n\t\taddCardsInHand(input.boardWithDeadEntityHero, input.boardWithDeadEntity, cardsToAdd, input.gameState);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnStatsChangedCard } from '../../card.interface';
2
+ export declare const LadySinestra: OnStatsChangedCard;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LadySinestra = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.LadySinestra = {
6
+ cardIds: ["TB_BaconShop_HERO_52_Buddy", "TB_BaconShop_HERO_52_Buddy_G"],
7
+ onStatsChanged: (minion, input) => {
8
+ if (input.attackAmount > 0) {
9
+ const buff = minion.cardId === "TB_BaconShop_HERO_52_Buddy_G" ? 2 : 1;
10
+ (0, stats_1.modifyStats)(input.target, minion, 0, buff, input.board, input.hero, input.gameState);
11
+ }
12
+ },
13
+ };
14
+ //# sourceMappingURL=lady-sinestra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lady-sinestra.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/lady-sinestra.ts"],"names":[],"mappings":";;;AAEA,qDAA6E;AAGhE,QAAA,YAAY,GAAuB;IAC/C,OAAO,EAAE,8DAAoG;IAC7G,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mCAAsD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,IAAA,mBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACrF;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 LadySinestra: OnStatsChangedCard = {\r\n\tcardIds: [CardIds.LadySinestra_TB_BaconShop_HERO_52_Buddy, CardIds.LadySinestra_TB_BaconShop_HERO_52_Buddy_G],\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tif (input.attackAmount > 0) {\r\n\t\t\tconst buff = minion.cardId === CardIds.LadySinestra_TB_BaconShop_HERO_52_Buddy_G ? 2 : 1;\r\n\t\t\tmodifyStats(input.target, minion, 0, buff, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnMinionKilledCard } from '../../card.interface';
2
+ export declare const LoyalHenchman: OnMinionKilledCard;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoyalHenchman = void 0;
4
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
+ exports.LoyalHenchman = {
6
+ cardIds: ["TB_BaconShop_HERO_45_Buddy", "TB_BaconShop_HERO_45_Buddy_G"],
7
+ onMinionKilled: (minion, input) => {
8
+ var _a;
9
+ if (input.killer.friendly === input.minionKilled.friendly) {
10
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
11
+ }
12
+ const kills = ((_a = minion.memory) !== null && _a !== void 0 ? _a : 0) + 1;
13
+ minion.memory = kills;
14
+ if (kills === 2) {
15
+ const mult = minion.cardId === "TB_BaconShop_HERO_45_Buddy_G" ? 2 : 1;
16
+ (0, cards_in_hand_1.addCardsInHand)(input.attackingHero, input.attackingBoard, Array(mult).fill(input.minionKilled.cardId), input.gameState);
17
+ }
18
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
19
+ },
20
+ };
21
+ //# sourceMappingURL=loyal-henchman.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loyal-henchman.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/loyal-henchman.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,aAAa,GAAuB;IAChD,OAAO,EAAE,8DAAsG;IAC/G,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;YAC1D,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QACD,MAAM,KAAK,GAAG,CAAC,MAAC,MAAM,CAAC,MAAiB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtB,IAAI,KAAK,KAAK,CAAC,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mCAAuD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,IAAA,8BAAc,EACb,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAC3C,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 { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const LoyalHenchman: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.LoyalHenchman_TB_BaconShop_HERO_45_Buddy, CardIds.LoyalHenchman_TB_BaconShop_HERO_45_Buddy_G],\r\n\tonMinionKilled: (minion: BoardEntity, input: OnMinionKilledInput) => {\r\n\t\tif (input.killer.friendly === input.minionKilled.friendly) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\t\tconst kills = ((minion.memory as number) ?? 0) + 1;\r\n\t\tminion.memory = kills;\r\n\t\tif (kills === 2) {\r\n\t\t\tconst mult = minion.cardId === CardIds.LoyalHenchman_TB_BaconShop_HERO_45_Buddy_G ? 2 : 1;\r\n\t\t\taddCardsInHand(\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tArray(mult).fill(input.minionKilled.cardId),\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"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleSpawnCard } from '../../card.interface';
2
+ export declare const MawswornSoulkeeper: DeathrattleSpawnCard;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MawswornSoulkeeper = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
+ exports.MawswornSoulkeeper = {
7
+ cardIds: [
8
+ "TB_BaconShop_HERO_702_Buddy",
9
+ "TB_BaconShop_HERO_702_Buddy_G",
10
+ ],
11
+ deathrattleSpawn: (minion, input) => {
12
+ const numberOfMinionsToSpawn = minion.cardId === "TB_BaconShop_HERO_702_Buddy_G" ? 4 : 2;
13
+ const spawnedEntities = [];
14
+ for (let i = 0; i < numberOfMinionsToSpawn; i++) {
15
+ const minionCardId = input.gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.UNDEAD, input.boardWithDeadEntityHero.tavernTier);
16
+ spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(minionCardId, 1, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState, input.deadEntity.friendly, false));
17
+ }
18
+ return spawnedEntities;
19
+ },
20
+ };
21
+ //# sourceMappingURL=mawsworn-soulkeeper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mawsworn-soulkeeper.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mawsworn-soulkeeper.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,+EAAuE;AAG1D,QAAA,kBAAkB,GAAyB;IACvD,OAAO,EAAE;;;KAGR;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,sBAAsB,GAC3B,MAAM,CAAC,MAAM,oCAA6D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,eAAe,GAAkB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,uBAAuB,CACrE,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,uBAAuB,CAAC,UAAU,CACxC,CAAC;YACF,eAAe,CAAC,IAAI,CACnB,GAAG,IAAA,kCAAa,EACf,YAAY,EACZ,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,CACL,CACD,CAAC;SACF;QACD,OAAO,eAAe,CAAC;IACxB,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 { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const MawswornSoulkeeper: DeathrattleSpawnCard = {\r\n\tcardIds: [\r\n\t\tCardIds.MawswornSoulkeeper_TB_BaconShop_HERO_702_Buddy,\r\n\t\tCardIds.MawswornSoulkeeper_TB_BaconShop_HERO_702_Buddy_G,\r\n\t],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst numberOfMinionsToSpawn =\r\n\t\t\tminion.cardId === CardIds.MawswornSoulkeeper_TB_BaconShop_HERO_702_Buddy_G ? 4 : 2;\r\n\t\tconst spawnedEntities: BoardEntity[] = [];\r\n\t\tfor (let i = 0; i < numberOfMinionsToSpawn; i++) {\r\n\t\t\tconst minionCardId = input.gameState.cardsData.getRandomMinionForTribe(\r\n\t\t\t\tRace.UNDEAD,\r\n\t\t\t\tinput.boardWithDeadEntityHero.tavernTier,\r\n\t\t\t);\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tminionCardId,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\tinput.deadEntity.friendly,\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\treturn spawnedEntities;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnAfterMagnetizeSelfCard } from '../../card.interface';
2
+ export declare const Probius: OnAfterMagnetizeSelfCard;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Probius = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const golden_1 = require("../../../simulation/utils/golden");
6
+ const utils_1 = require("../../../utils");
7
+ exports.Probius = {
8
+ cardIds: ["BG31_HERO_802_Buddy", "BG31_HERO_802_Buddy_G"],
9
+ onAfterMagnetizeSelf: (entity, input) => {
10
+ if ((0, utils_1.hasCorrectTribe)(input.magnetizeTarget, input.hero, reference_data_1.Race.MECH, input.gameState.anomalies, input.gameState.allCards)) {
11
+ (0, golden_1.makeMinionGolden)(input.magnetizeTarget, entity, input.board, input.hero, input.otherBoard, input.otherHero, input.gameState);
12
+ input.gameState.spectator.registerPowerTarget(entity, input.magnetizeTarget, input.board, input.hero, input.otherHero);
13
+ }
14
+ },
15
+ };
16
+ //# sourceMappingURL=probius.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probius.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/probius.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,6DAAoE;AACpE,0CAAiD;AAGpC,QAAA,OAAO,GAA6B;IAChD,OAAO,EAAE,gDAA4E;IACrF,oBAAoB,EAAE,CAAC,MAAmB,EAAE,KAA4B,EAAE,EAAE;QAC3E,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,eAAe,EACrB,KAAK,CAAC,IAAI,EACV,qBAAI,CAAC,IAAI,EACT,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,IAAA,yBAAgB,EACf,KAAK,CAAC,eAAe,EACrB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,KAAK,CAAC,eAAe,EACrB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,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 { OnAfterMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { OnAfterMagnetizeSelfCard } from '../../card.interface';\r\n\r\nexport const Probius: OnAfterMagnetizeSelfCard = {\r\n\tcardIds: [CardIds.Probius_BG31_HERO_802_Buddy, CardIds.Probius_BG31_HERO_802_Buddy_G],\r\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.magnetizeTarget,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tRace.MECH,\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\tmakeMinionGolden(\r\n\t\t\t\tinput.magnetizeTarget,\r\n\t\t\t\tentity,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tentity,\r\n\t\t\t\tinput.magnetizeTarget,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleEffectCard } from '../../card.interface';
2
+ export declare const SrTombDiver: DeathrattleEffectCard;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SrTombDiver = void 0;
4
+ const golden_1 = require("../../../simulation/utils/golden");
5
+ exports.SrTombDiver = {
6
+ cardIds: ["TB_BaconShop_HERO_41_Buddy", "TB_BaconShop_HERO_41_Buddy_G"],
7
+ deathrattleEffect: (minion, input) => {
8
+ const numberToGild = minion.cardId === "TB_BaconShop_HERO_41_Buddy_G" ? 2 : 1;
9
+ const targetBoard = input.boardWithDeadEntity;
10
+ for (let i = 0; i < Math.min(numberToGild, targetBoard.length); i++) {
11
+ const rightMostMinion = targetBoard[targetBoard.length - 1 - i];
12
+ if (rightMostMinion && !rightMostMinion.definitelyDead && rightMostMinion.health > 0) {
13
+ (0, golden_1.makeMinionGolden)(rightMostMinion, minion, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState);
14
+ }
15
+ }
16
+ },
17
+ };
18
+ //# sourceMappingURL=sr-tomb-diver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sr-tomb-diver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/sr-tomb-diver.ts"],"names":[],"mappings":";;;AAGA,6DAAoE;AAGvD,QAAA,WAAW,GAA0B;IACjD,OAAO,EAAE,8DAAkG;IAC3G,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,mCAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,MAAM,WAAW,GAAG,KAAK,CAAC,mBAAmB,CAAC;QAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,eAAe,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,IAAI,eAAe,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrF,IAAA,yBAAgB,EACf,eAAe,EACf,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,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 { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nexport const SrTombDiver: DeathrattleEffectCard = {\r\n\tcardIds: [CardIds.SrTombDiver_TB_BaconShop_HERO_41_Buddy, CardIds.SrTombDiver_TB_BaconShop_HERO_41_Buddy_G],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst numberToGild = minion.cardId === CardIds.SrTombDiver_TB_BaconShop_HERO_41_Buddy_G ? 2 : 1;\r\n\t\tconst targetBoard = input.boardWithDeadEntity;\r\n\t\t// Always target the right-most minion, even if it happens to be dead already\r\n\t\tfor (let i = 0; i < Math.min(numberToGild, targetBoard.length); i++) {\r\n\t\t\tconst rightMostMinion = targetBoard[targetBoard.length - 1 - i];\r\n\t\t\tif (rightMostMinion && !rightMostMinion.definitelyDead && rightMostMinion.health > 0) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\trightMostMinion,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tinput.otherBoard,\r\n\t\t\t\t\tinput.otherBoardHero,\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"]}
@@ -4,7 +4,9 @@ exports.StalwartKodo = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.StalwartKodo = {
6
6
  cardIds: ["BG34_322", "BG34_322_G"],
7
- defaultCharges: (entity) => 3,
7
+ defaultCharges: (entity) => entity.scriptDataNum1 != null && Number.isFinite(entity.scriptDataNum1)
8
+ ? Math.max(0, entity.scriptDataNum1)
9
+ : 3,
8
10
  afterOtherSpawned: (minion, input) => {
9
11
  const mult = minion.cardId === "BG34_322_G" ? 2 : 1;
10
12
  if (minion.abiityChargesLeft > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"stalwart-kodo.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stalwart-kodo.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,YAAY,GAA+C;IACvE,OAAO,EAAE,0BAAgE;IACzE,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;YACjC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAA,mBAAW,EACV,KAAK,CAAC,OAAO,EACb,MAAM,EACN,MAAM,CAAC,SAAS,GAAG,IAAI,EACvB,MAAM,CAAC,SAAS,GAAG,IAAI,EACvB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO;SACP;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterOtherSpawnedCard, DefaultChargesCard } from '../../card.interface';\r\n\r\nexport const StalwartKodo: AfterOtherSpawnedCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.StalwartKodo_BG34_322, CardIds.StalwartKodo_BG34_322_G],\r\n\tdefaultCharges: (entity: BoardEntity) => 3,\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.StalwartKodo_BG34_322_G ? 2 : 1;\r\n\t\tif (minion.abiityChargesLeft > 0) {\r\n\t\t\tminion.abiityChargesLeft--;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tinput.spawned,\r\n\t\t\t\tminion,\r\n\t\t\t\tminion.maxAttack * mult,\r\n\t\t\t\tminion.maxHealth * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"stalwart-kodo.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stalwart-kodo.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,YAAY,GAA+C;IACvE,OAAO,EAAE,0BAAgE;IACzE,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CACvC,MAAM,CAAC,cAAc,IAAI,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC;QACtE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACpE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;YACjC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAA,mBAAW,EACV,KAAK,CAAC,OAAO,EACb,MAAM,EACN,MAAM,CAAC,SAAS,GAAG,IAAI,EACvB,MAAM,CAAC,SAAS,GAAG,IAAI,EACvB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO;SACP;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterOtherSpawnedCard, DefaultChargesCard } from '../../card.interface';\r\n\r\nexport const StalwartKodo: AfterOtherSpawnedCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.StalwartKodo_BG34_322, CardIds.StalwartKodo_BG34_322_G],\r\n\tdefaultCharges: (entity: BoardEntity) =>\r\n\t\tentity.scriptDataNum1 != null && Number.isFinite(entity.scriptDataNum1)\r\n\t\t\t? Math.max(0, entity.scriptDataNum1)\r\n\t\t\t: 3,\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.StalwartKodo_BG34_322_G ? 2 : 1;\r\n\t\tif (minion.abiityChargesLeft > 0) {\r\n\t\t\tminion.abiityChargesLeft--;\r\n\t\t\tmodifyStats(\r\n\t\t\t\tinput.spawned,\r\n\t\t\t\tminion,\r\n\t\t\t\tminion.maxAttack * mult,\r\n\t\t\t\tminion.maxHealth * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -9,13 +9,19 @@ exports.TimewarpedMrrrglr = {
9
9
  cardIds: ["BG34_Giant_321", "BG34_Giant_321_G"],
10
10
  startOfCombatTiming: 'start-of-combat',
11
11
  startOfCombat: (minion, input) => {
12
- var _a, _b, _c, _d;
12
+ var _a;
13
13
  const targets = (0, attack_1.getNeighbours)(input.playerBoard, minion);
14
14
  const mult = minion.cardId === "BG34_Giant_321_G" ? 2 : 1;
15
- const totalAttackInHand = (_b = (_a = input.playerEntity.hand) === null || _a === void 0 ? void 0 : _a.map((e) => { var _a; return (_a = e.attack) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0)) !== null && _b !== void 0 ? _b : 0;
16
- const totalHealthInHand = (_d = (_c = input.playerEntity.hand) === null || _c === void 0 ? void 0 : _c.map((e) => { var _a; return (_a = e.health) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0)) !== null && _d !== void 0 ? _d : 0;
17
- const attackBuff = totalAttackInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralAttackBuff) || 0;
18
- const healthBuff = totalHealthInHand || (minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralHealthBuff) || 0;
15
+ const realHand = ((_a = input.playerEntity.hand) !== null && _a !== void 0 ? _a : []).filter((e) => { var _a; return !((_a = e.enchantments) === null || _a === void 0 ? void 0 : _a.some((ench) => ench.cardId === 'TB_BaconShopBadsongE')); });
16
+ const totalAttackInHand = realHand.map((e) => { var _a; return (_a = e.attack) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
17
+ const totalHealthInHand = realHand.map((e) => { var _a; return (_a = e.health) !== null && _a !== void 0 ? _a : 0; }).reduce((a, b) => a + b, 0);
18
+ const boardHasChorus = input.playerBoard.some((e) => { var _a; return (_a = e.enchantments) === null || _a === void 0 ? void 0 : _a.some((ench) => ench.cardId === "BG26_354e"); });
19
+ const attackBuff = totalAttackInHand ||
20
+ (boardHasChorus || minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralAttackBuff) ||
21
+ 0;
22
+ const healthBuff = totalHealthInHand ||
23
+ (boardHasChorus || minion.gildedInCombat ? 0 : input.playerEntity.globalInfo.ChoralHealthBuff) ||
24
+ 0;
19
25
  for (let i = 0; i < mult; i++) {
20
26
  for (const target of targets) {
21
27
  if ((0, utils_1.hasCorrectTribe)(target, input.playerEntity, reference_data_1.Race.MURLOC, input.gameState.anomalies, input.gameState.allCards)) {