@firestone-hs/simulate-bgs-battle 1.1.599 → 1.1.601

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 (270) hide show
  1. package/dist/bgs-player-entity.d.ts +2 -0
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/board-entity.d.ts +10 -9
  4. package/dist/board-entity.js.map +1 -1
  5. package/dist/cards/card.interface.d.ts +7 -7
  6. package/dist/cards/card.interface.js +3 -3
  7. package/dist/cards/card.interface.js.map +1 -1
  8. package/dist/cards/cards-data.d.ts +1 -0
  9. package/dist/cards/cards-data.js +8 -10
  10. package/dist/cards/cards-data.js.map +1 -1
  11. package/dist/cards/impl/_card-mappings.js +114 -2
  12. package/dist/cards/impl/_card-mappings.js.map +1 -1
  13. package/dist/cards/impl/minion/all-seeing-elder.d.ts +2 -0
  14. package/dist/cards/impl/minion/all-seeing-elder.js +18 -0
  15. package/dist/cards/impl/minion/all-seeing-elder.js.map +1 -0
  16. package/dist/cards/impl/minion/avalanche-caller.d.ts +2 -0
  17. package/dist/cards/impl/minion/avalanche-caller.js +14 -0
  18. package/dist/cards/impl/minion/avalanche-caller.js.map +1 -0
  19. package/dist/cards/impl/minion/bigwig-bandit.d.ts +2 -0
  20. package/dist/cards/impl/minion/bigwig-bandit.js +14 -0
  21. package/dist/cards/impl/minion/bigwig-bandit.js.map +1 -0
  22. package/dist/cards/impl/minion/bile-spitter.d.ts +2 -0
  23. package/dist/cards/impl/minion/bile-spitter.js +28 -0
  24. package/dist/cards/impl/minion/bile-spitter.js.map +1 -0
  25. package/dist/cards/impl/minion/bloodsnout-warlord.d.ts +2 -0
  26. package/dist/cards/impl/minion/bloodsnout-warlord.js +18 -0
  27. package/dist/cards/impl/minion/bloodsnout-warlord.js.map +1 -0
  28. package/dist/cards/impl/minion/blue-whelp.d.ts +2 -0
  29. package/dist/cards/impl/minion/blue-whelp.js +15 -0
  30. package/dist/cards/impl/minion/blue-whelp.js.map +1 -0
  31. package/dist/cards/impl/minion/campfire-shadow.d.ts +2 -0
  32. package/dist/cards/impl/minion/campfire-shadow.js +20 -0
  33. package/dist/cards/impl/minion/campfire-shadow.js.map +1 -0
  34. package/dist/cards/impl/minion/canopy-swinger.d.ts +2 -0
  35. package/dist/cards/impl/minion/canopy-swinger.js +19 -0
  36. package/dist/cards/impl/minion/canopy-swinger.js.map +1 -0
  37. package/dist/cards/impl/minion/carapace-raiser.d.ts +2 -0
  38. package/dist/cards/impl/minion/carapace-raiser.js +14 -0
  39. package/dist/cards/impl/minion/carapace-raiser.js.map +1 -0
  40. package/dist/cards/impl/minion/charmwing.d.ts +2 -0
  41. package/dist/cards/impl/minion/charmwing.js +29 -0
  42. package/dist/cards/impl/minion/charmwing.js.map +1 -0
  43. package/dist/cards/impl/minion/coldlight-diver.d.ts +2 -0
  44. package/dist/cards/impl/minion/coldlight-diver.js +20 -0
  45. package/dist/cards/impl/minion/coldlight-diver.js.map +1 -0
  46. package/dist/cards/impl/minion/crystal-infuser-enchantment.js.map +1 -0
  47. package/dist/cards/impl/minion/cupcake-peddler.d.ts +2 -0
  48. package/dist/cards/impl/minion/cupcake-peddler.js +14 -0
  49. package/dist/cards/impl/minion/cupcake-peddler.js.map +1 -0
  50. package/dist/cards/impl/minion/deathly-striker.js +1 -1
  51. package/dist/cards/impl/minion/deathly-striker.js.map +1 -1
  52. package/dist/cards/impl/minion/devout-hellcaller.d.ts +2 -0
  53. package/dist/cards/impl/minion/devout-hellcaller.js +17 -0
  54. package/dist/cards/impl/minion/devout-hellcaller.js.map +1 -0
  55. package/dist/cards/impl/minion/drakkari-embalmer.d.ts +2 -0
  56. package/dist/cards/impl/minion/drakkari-embalmer.js +24 -0
  57. package/dist/cards/impl/minion/drakkari-embalmer.js.map +1 -0
  58. package/dist/cards/impl/minion/exceptionnal-caretaker.d.ts +2 -0
  59. package/dist/cards/impl/minion/exceptionnal-caretaker.js +37 -0
  60. package/dist/cards/impl/minion/exceptionnal-caretaker.js.map +1 -0
  61. package/dist/cards/impl/minion/fauna-whisperer.js +11 -8
  62. package/dist/cards/impl/minion/fauna-whisperer.js.map +1 -1
  63. package/dist/cards/impl/minion/fire-forged-evoker.js +1 -1
  64. package/dist/cards/impl/minion/fire-forged-evoker.js.map +1 -1
  65. package/dist/cards/impl/minion/floating-watcher.d.ts +2 -0
  66. package/dist/cards/impl/minion/floating-watcher.js +12 -0
  67. package/dist/cards/impl/minion/floating-watcher.js.map +1 -0
  68. package/dist/cards/impl/minion/flotsam-flinger.d.ts +2 -0
  69. package/dist/cards/impl/minion/flotsam-flinger.js +17 -0
  70. package/dist/cards/impl/minion/flotsam-flinger.js.map +1 -0
  71. package/dist/cards/impl/minion/friendly-geist.d.ts +2 -0
  72. package/dist/cards/impl/minion/friendly-geist.js +12 -0
  73. package/dist/cards/impl/minion/friendly-geist.js.map +1 -0
  74. package/dist/cards/impl/minion/geared-guard.d.ts +2 -0
  75. package/dist/cards/impl/minion/geared-guard.js +23 -0
  76. package/dist/cards/impl/minion/geared-guard.js.map +1 -0
  77. package/dist/cards/impl/minion/gleaming-trader.d.ts +2 -0
  78. package/dist/cards/impl/minion/gleaming-trader.js +13 -0
  79. package/dist/cards/impl/minion/gleaming-trader.js.map +1 -0
  80. package/dist/cards/impl/minion/goldgrubber.js +1 -1
  81. package/dist/cards/impl/minion/goldgrubber.js.map +1 -1
  82. package/dist/cards/impl/minion/greedy-snaketongue.d.ts +2 -0
  83. package/dist/cards/impl/minion/greedy-snaketongue.js +17 -0
  84. package/dist/cards/impl/minion/greedy-snaketongue.js.map +1 -0
  85. package/dist/cards/impl/minion/greenskeeper.d.ts +2 -2
  86. package/dist/cards/impl/minion/greenskeeper.js +3 -2
  87. package/dist/cards/impl/minion/greenskeeper.js.map +1 -1
  88. package/dist/cards/impl/minion/hoarding-hatespawn.js +1 -1
  89. package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -1
  90. package/dist/cards/impl/minion/hog-watcher.d.ts +2 -0
  91. package/dist/cards/impl/minion/hog-watcher.js +20 -0
  92. package/dist/cards/impl/minion/hog-watcher.js.map +1 -0
  93. package/dist/cards/impl/minion/hot-springer.d.ts +2 -0
  94. package/dist/cards/impl/minion/hot-springer.js +19 -0
  95. package/dist/cards/impl/minion/hot-springer.js.map +1 -0
  96. package/dist/cards/impl/minion/lightfeather-screecher.d.ts +2 -0
  97. package/dist/cards/impl/minion/lightfeather-screecher.js +23 -0
  98. package/dist/cards/impl/minion/lightfeather-screecher.js.map +1 -0
  99. package/dist/cards/impl/minion/lokholar-frostforger.d.ts +1 -1
  100. package/dist/cards/impl/minion/lokholar-frostforger.js +3 -3
  101. package/dist/cards/impl/minion/lokholar-frostforger.js.map +1 -1
  102. package/dist/cards/impl/minion/lord-of-the-ruins.d.ts +2 -0
  103. package/dist/cards/impl/minion/lord-of-the-ruins.js +19 -0
  104. package/dist/cards/impl/minion/lord-of-the-ruins.js.map +1 -0
  105. package/dist/cards/impl/minion/lost-city-looter.d.ts +2 -0
  106. package/dist/cards/impl/minion/lost-city-looter.js +13 -0
  107. package/dist/cards/impl/minion/lost-city-looter.js.map +1 -0
  108. package/dist/cards/impl/minion/monstrous-macaw.d.ts +2 -2
  109. package/dist/cards/impl/minion/monstrous-macaw.js +3 -2
  110. package/dist/cards/impl/minion/monstrous-macaw.js.map +1 -1
  111. package/dist/cards/impl/minion/nimble-hatchling.d.ts +2 -0
  112. package/dist/cards/impl/minion/nimble-hatchling.js +14 -0
  113. package/dist/cards/impl/minion/nimble-hatchling.js.map +1 -0
  114. package/dist/cards/impl/minion/noisul-of-the-many-faces.js +1 -1
  115. package/dist/cards/impl/minion/noisul-of-the-many-faces.js.map +1 -1
  116. package/dist/cards/impl/minion/oranomonos-the-wilted.d.ts +2 -0
  117. package/dist/cards/impl/minion/oranomonos-the-wilted.js +11 -0
  118. package/dist/cards/impl/minion/oranomonos-the-wilted.js.map +1 -0
  119. package/dist/cards/impl/minion/poultron.d.ts +2 -0
  120. package/dist/cards/impl/minion/poultron.js +20 -0
  121. package/dist/cards/impl/minion/poultron.js.map +1 -0
  122. package/dist/cards/impl/minion/primeval-monstrosity.d.ts +2 -0
  123. package/dist/cards/impl/minion/primeval-monstrosity.js +16 -0
  124. package/dist/cards/impl/minion/primeval-monstrosity.js.map +1 -0
  125. package/dist/cards/impl/minion/prodigious-tusker.d.ts +2 -0
  126. package/dist/cards/impl/minion/prodigious-tusker.js +16 -0
  127. package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -0
  128. package/dist/cards/impl/minion/raptor-elder.d.ts +2 -0
  129. package/dist/cards/impl/minion/raptor-elder.js +42 -0
  130. package/dist/cards/impl/minion/raptor-elder.js.map +1 -0
  131. package/dist/cards/impl/minion/razorfen-vineweaver.d.ts +2 -0
  132. package/dist/cards/impl/minion/razorfen-vineweaver.js +16 -0
  133. package/dist/cards/impl/minion/razorfen-vineweaver.js.map +1 -0
  134. package/dist/cards/impl/minion/red-whelp.js +1 -1
  135. package/dist/cards/impl/minion/red-whelp.js.map +1 -1
  136. package/dist/cards/impl/minion/ride-or-die.d.ts +2 -0
  137. package/dist/cards/impl/minion/ride-or-die.js +35 -0
  138. package/dist/cards/impl/minion/ride-or-die.js.map +1 -0
  139. package/dist/cards/impl/minion/roadboar.d.ts +2 -0
  140. package/dist/cards/impl/minion/roadboar.js +17 -0
  141. package/dist/cards/impl/minion/roadboar.js.map +1 -0
  142. package/dist/cards/impl/minion/ruins-renovator.d.ts +2 -0
  143. package/dist/cards/impl/minion/ruins-renovator.js +17 -0
  144. package/dist/cards/impl/minion/ruins-renovator.js.map +1 -0
  145. package/dist/cards/impl/minion/sanctum-rester.js +1 -1
  146. package/dist/cards/impl/minion/sanctum-rester.js.map +1 -1
  147. package/dist/cards/impl/minion/sanguine-refiner.d.ts +2 -0
  148. package/dist/cards/impl/minion/sanguine-refiner.js +16 -0
  149. package/dist/cards/impl/minion/sanguine-refiner.js.map +1 -0
  150. package/dist/cards/impl/minion/scourge-harvester.d.ts +2 -0
  151. package/dist/cards/impl/minion/scourge-harvester.js +16 -0
  152. package/dist/cards/impl/minion/scourge-harvester.js.map +1 -0
  153. package/dist/cards/impl/minion/sharp-eyed-sabretooth.d.ts +2 -0
  154. package/dist/cards/impl/minion/sharp-eyed-sabretooth.js +20 -0
  155. package/dist/cards/impl/minion/sharp-eyed-sabretooth.js.map +1 -0
  156. package/dist/cards/impl/minion/ship-master-eudora.d.ts +2 -0
  157. package/dist/cards/impl/minion/ship-master-eudora.js +13 -0
  158. package/dist/cards/impl/minion/ship-master-eudora.js.map +1 -0
  159. package/dist/cards/impl/minion/shipwrecked-rascal.d.ts +2 -0
  160. package/dist/cards/impl/minion/shipwrecked-rascal.js +20 -0
  161. package/dist/cards/impl/minion/shipwrecked-rascal.js.map +1 -0
  162. package/dist/cards/impl/minion/silent-enforcer.d.ts +2 -0
  163. package/dist/cards/impl/minion/silent-enforcer.js +23 -0
  164. package/dist/cards/impl/minion/silent-enforcer.js.map +1 -0
  165. package/dist/cards/impl/minion/sleepy-supporter.d.ts +2 -0
  166. package/dist/cards/impl/minion/sleepy-supporter.js +24 -0
  167. package/dist/cards/impl/minion/sleepy-supporter.js.map +1 -0
  168. package/dist/cards/impl/minion/stitched-salvager.js +2 -1
  169. package/dist/cards/impl/minion/stitched-salvager.js.map +1 -1
  170. package/dist/cards/impl/minion/stomping-stegodon-enchantment.d.ts +2 -0
  171. package/dist/cards/impl/minion/stomping-stegodon-enchantment.js +32 -0
  172. package/dist/cards/impl/minion/stomping-stegodon-enchantment.js.map +1 -0
  173. package/dist/cards/impl/minion/stomping-stegodon.d.ts +2 -0
  174. package/dist/cards/impl/minion/stomping-stegodon.js +29 -0
  175. package/dist/cards/impl/minion/stomping-stegodon.js.map +1 -0
  176. package/dist/cards/impl/minion/stray-satyr.d.ts +2 -0
  177. package/dist/cards/impl/minion/stray-satyr.js +16 -0
  178. package/dist/cards/impl/minion/stray-satyr.js.map +1 -0
  179. package/dist/cards/impl/minion/tusked-camper.d.ts +2 -0
  180. package/dist/cards/impl/minion/tusked-camper.js +16 -0
  181. package/dist/cards/impl/minion/tusked-camper.js.map +1 -0
  182. package/dist/cards/impl/minion/twilight-watcher.d.ts +2 -0
  183. package/dist/cards/impl/minion/twilight-watcher.js +21 -0
  184. package/dist/cards/impl/minion/twilight-watcher.js.map +1 -0
  185. package/dist/cards/impl/minion/vengeful-protector.d.ts +2 -0
  186. package/dist/cards/impl/minion/vengeful-protector.js +19 -0
  187. package/dist/cards/impl/minion/vengeful-protector.js.map +1 -0
  188. package/dist/cards/impl/minion/void-earl.d.ts +2 -0
  189. package/dist/cards/impl/minion/void-earl.js +12 -0
  190. package/dist/cards/impl/minion/void-earl.js.map +1 -0
  191. package/dist/cards/impl/minion/whirring-protector-enchantment.d.ts +2 -0
  192. package/dist/cards/impl/minion/whirring-protector-enchantment.js +19 -0
  193. package/dist/cards/impl/minion/whirring-protector-enchantment.js.map +1 -0
  194. package/dist/cards/impl/minion/whirring-protector.d.ts +2 -0
  195. package/dist/cards/impl/minion/whirring-protector.js +16 -0
  196. package/dist/cards/impl/minion/whirring-protector.js.map +1 -0
  197. package/dist/cards/impl/minion/wildfire-elemental.js +1 -1
  198. package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -1
  199. package/dist/cards/impl/minion/wrathscale-rogue.d.ts +2 -0
  200. package/dist/cards/impl/minion/wrathscale-rogue.js +20 -0
  201. package/dist/cards/impl/minion/wrathscale-rogue.js.map +1 -0
  202. package/dist/cards/impl/minion/yorik-smite.d.ts +2 -0
  203. package/dist/cards/impl/minion/yorik-smite.js +16 -0
  204. package/dist/cards/impl/minion/yorik-smite.js.map +1 -0
  205. package/dist/cards/impl/minion/young-murk-eye.d.ts +2 -0
  206. package/dist/cards/impl/minion/young-murk-eye.js +22 -0
  207. package/dist/cards/impl/minion/young-murk-eye.js.map +1 -0
  208. package/dist/cards/impl/minion/yrel.d.ts +2 -0
  209. package/dist/cards/impl/minion/yrel.js +16 -0
  210. package/dist/cards/impl/minion/yrel.js.map +1 -0
  211. package/dist/cards/impl/minion/zergling.js +1 -1
  212. package/dist/cards/impl/minion/zergling.js.map +1 -1
  213. package/dist/cards/impl/quest-reward/stand-as-one.d.ts +2 -0
  214. package/dist/cards/impl/quest-reward/stand-as-one.js +18 -0
  215. package/dist/cards/impl/quest-reward/stand-as-one.js.map +1 -0
  216. package/dist/cards/impl/trinket/eternal-portrait.d.ts +1 -1
  217. package/dist/cards/impl/trinket/eternal-portrait.js +1 -1
  218. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
  219. package/dist/cards/impl/trinket/karazhan-chess-set.js +1 -1
  220. package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -1
  221. package/dist/keywords/divine-shield.js +1 -16
  222. package/dist/keywords/divine-shield.js.map +1 -1
  223. package/dist/simulate-bgs-battle.js +0 -4
  224. package/dist/simulate-bgs-battle.js.map +1 -1
  225. package/dist/simulation/add-minion-to-board.js +11 -49
  226. package/dist/simulation/add-minion-to-board.js.map +1 -1
  227. package/dist/simulation/after-attack.js +1 -35
  228. package/dist/simulation/after-attack.js.map +1 -1
  229. package/dist/simulation/attack.d.ts +1 -0
  230. package/dist/simulation/attack.js +17 -61
  231. package/dist/simulation/attack.js.map +1 -1
  232. package/dist/simulation/auras.js +25 -70
  233. package/dist/simulation/auras.js.map +1 -1
  234. package/dist/simulation/avenge.js +0 -50
  235. package/dist/simulation/avenge.js.map +1 -1
  236. package/dist/simulation/battlecries.js +11 -131
  237. package/dist/simulation/battlecries.js.map +1 -1
  238. package/dist/simulation/damage-effects.d.ts +9 -1
  239. package/dist/simulation/damage-effects.js +43 -83
  240. package/dist/simulation/damage-effects.js.map +1 -1
  241. package/dist/simulation/damage-to-hero.js +11 -0
  242. package/dist/simulation/damage-to-hero.js.map +1 -1
  243. package/dist/simulation/deathrattle-effects.js +7 -76
  244. package/dist/simulation/deathrattle-effects.js.map +1 -1
  245. package/dist/simulation/deathrattle-orchestration.js +2 -3
  246. package/dist/simulation/deathrattle-orchestration.js.map +1 -1
  247. package/dist/simulation/deathrattle-spawns.js +4 -65
  248. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  249. package/dist/simulation/frenzy.js +0 -6
  250. package/dist/simulation/frenzy.js.map +1 -1
  251. package/dist/simulation/minion-kill.d.ts +1 -1
  252. package/dist/simulation/minion-kill.js +2 -1
  253. package/dist/simulation/minion-kill.js.map +1 -1
  254. package/dist/simulation/on-attack.d.ts +1 -0
  255. package/dist/simulation/on-attack.js +113 -92
  256. package/dist/simulation/on-attack.js.map +1 -1
  257. package/dist/simulation/on-being-attacked.js +1 -25
  258. package/dist/simulation/on-being-attacked.js.map +1 -1
  259. package/dist/simulation/reborn.js +1 -1
  260. package/dist/simulation/reborn.js.map +1 -1
  261. package/dist/simulation/remove-minion-from-board.js +0 -9
  262. package/dist/simulation/remove-minion-from-board.js.map +1 -1
  263. package/dist/simulation/start-of-combat/soc-action-processor.js +0 -12
  264. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  265. package/dist/utils.js +2 -11
  266. package/dist/utils.js.map +1 -1
  267. package/package.json +3 -3
  268. package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js.map +0 -1
  269. /package/dist/cards/impl/{enchantments → minion}/crystal-infuser-enchantment.d.ts +0 -0
  270. /package/dist/cards/impl/{enchantments → minion}/crystal-infuser-enchantment.js +0 -0
@@ -2,122 +2,82 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.onEntityDamaged = void 0;
4
4
  const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const card_interface_1 = require("../cards/card.interface");
6
+ const _card_mappings_1 = require("../cards/impl/_card-mappings");
5
7
  const divine_shield_1 = require("../keywords/divine-shield");
6
8
  const utils_1 = require("../services/utils");
7
9
  const utils_2 = require("../utils");
8
- const attack_1 = require("./attack");
9
- const cards_in_hand_1 = require("./cards-in-hand");
10
10
  const deathrattle_spawns_1 = require("./deathrattle-spawns");
11
11
  const frenzy_1 = require("./frenzy");
12
12
  const spawns_1 = require("./spawns");
13
13
  const stats_1 = require("./stats");
14
- const onEntityDamaged = (entity, board, hero, otherBoard, otherHero, damage, gameState) => {
14
+ const onEntityDamaged = (damagedEntity, board, hero, otherBoard, otherHero, damageSource, damage, gameState) => {
15
15
  var _a, _b, _c, _d;
16
16
  const spawnedEntities = [];
17
- const friendlyBoard = ((_a = board === null || board === void 0 ? void 0 : board[0]) === null || _a === void 0 ? void 0 : _a.friendly) === entity.friendly
17
+ const friendlyBoard = ((_a = board === null || board === void 0 ? void 0 : board[0]) === null || _a === void 0 ? void 0 : _a.friendly) === damagedEntity.friendly
18
18
  ? board
19
- : ((_b = otherBoard === null || otherBoard === void 0 ? void 0 : otherBoard[0]) === null || _b === void 0 ? void 0 : _b.friendly) === entity.friendly
19
+ : ((_b = otherBoard === null || otherBoard === void 0 ? void 0 : otherBoard[0]) === null || _b === void 0 ? void 0 : _b.friendly) === damagedEntity.friendly
20
20
  ? otherBoard
21
21
  : [];
22
- const enemyBoard = ((_c = board === null || board === void 0 ? void 0 : board[0]) === null || _c === void 0 ? void 0 : _c.friendly) === entity.friendly ? otherBoard : ((_d = board === null || board === void 0 ? void 0 : board[0]) === null || _d === void 0 ? void 0 : _d.friendly) === entity.friendly ? board : [];
22
+ const enemyBoard = ((_c = board === null || board === void 0 ? void 0 : board[0]) === null || _c === void 0 ? void 0 : _c.friendly) === damagedEntity.friendly
23
+ ? otherBoard
24
+ : ((_d = board === null || board === void 0 ? void 0 : board[0]) === null || _d === void 0 ? void 0 : _d.friendly) === damagedEntity.friendly
25
+ ? board
26
+ : [];
23
27
  const friendlyHero = friendlyBoard === board ? hero : otherHero;
24
28
  const enemyHero = friendlyBoard === board ? otherHero : hero;
25
- if (entity.frenzyChargesLeft > 0 && entity.health > 0 && !entity.definitelyDead) {
26
- (0, frenzy_1.applyFrenzy)(entity, friendlyBoard, friendlyHero, gameState);
27
- entity.frenzyChargesLeft--;
29
+ if (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {
30
+ (0, frenzy_1.applyFrenzy)(damagedEntity, friendlyBoard, friendlyHero, gameState);
31
+ damagedEntity.frenzyChargesLeft--;
28
32
  }
29
- switch (entity.cardId) {
33
+ switch (damagedEntity.cardId) {
30
34
  case "BG29_844":
31
35
  case "BG29_844_G":
32
- if (entity.abiityChargesLeft > 0) {
33
- const wingedChimeraModifier = entity.cardId === "BG29_844_G" ? 2 : 1;
34
- (0, utils_2.grantStatsToMinionsOfEachType)(entity, board, hero, wingedChimeraModifier * 1, wingedChimeraModifier * 1, gameState);
35
- entity.abiityChargesLeft--;
36
+ if (damagedEntity.abiityChargesLeft > 0) {
37
+ const wingedChimeraModifier = damagedEntity.cardId === "BG29_844_G" ? 2 : 1;
38
+ (0, utils_2.grantStatsToMinionsOfEachType)(damagedEntity, board, hero, wingedChimeraModifier * 1, wingedChimeraModifier * 1, gameState);
39
+ damagedEntity.abiityChargesLeft--;
36
40
  }
37
41
  break;
38
- case "BG29_846":
39
- case "BG29_846_G":
40
- const treantModifier = entity.cardId === "BG29_846_G" ? 2 : 1;
41
- (0, utils_2.addStatsToBoard)(entity, board, hero, treantModifier * 2, 0, gameState);
42
- break;
43
42
  case "BG29_878":
44
43
  case "BG29_878_G":
45
- (0, divine_shield_1.updateDivineShield)(entity, board, hero, otherHero, true, gameState);
46
- gameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);
44
+ (0, divine_shield_1.updateDivineShield)(damagedEntity, board, hero, otherHero, true, gameState);
45
+ gameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, board, hero, otherHero);
47
46
  break;
48
47
  case "BG29_800":
49
48
  case "BG29_800_G":
50
- const trustyPupStats = entity.cardId === "BG29_800_G" ? 2 : 1;
51
- (0, stats_1.modifyStats)(entity, entity, trustyPupStats, 0, board, hero, gameState);
49
+ const trustyPupStats = damagedEntity.cardId === "BG29_800_G" ? 2 : 1;
50
+ (0, stats_1.modifyStats)(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);
52
51
  break;
53
52
  case "BG29_801":
54
53
  case "BG29_801_G":
55
- spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(entity.cardId === "BG29_801_G"
54
+ spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(damagedEntity.cardId === "BG29_801_G"
56
55
  ? "BG29_801_Gt"
57
- : "BG29_801t", 1, board, hero, otherBoard, otherHero, gameState, entity.friendly, false));
58
- break;
59
- case "BG29_821":
60
- case "BG29_821_G":
61
- const aranasiLoops = entity.cardId === "BG29_821_G" ? 2 : 1;
62
- for (let i = 0; i < aranasiLoops; i++) {
63
- (0, attack_1.dealDamageToRandomEnemy)(enemyBoard, enemyHero, entity, 5, friendlyBoard, friendlyHero, gameState);
64
- }
65
- break;
66
- case "BG29_610":
67
- case "BG29_610_G":
68
- if (entity.abiityChargesLeft > 0) {
69
- const numbersOfCardsToAdd = entity.cardId === "BG29_610_G" ? 2 : 1;
70
- const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
71
- (0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
72
- entity.abiityChargesLeft--;
73
- }
74
- break;
75
- case "BG29_300":
76
- case "BG29_300_G":
77
- const winterfinnerStats = entity.cardId === "BG29_300_G" ? 2 : 1;
78
- const minionInHand = (0, utils_1.pickRandom)(hero.hand.filter((e) => { var _a; return ((_a = gameState.allCards.getCard(e.cardId).type) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === reference_data_1.CardType[reference_data_1.CardType.MINION]; }));
79
- if (!!minionInHand) {
80
- minionInHand.attack += 2 * winterfinnerStats;
81
- minionInHand.health += winterfinnerStats;
82
- minionInHand.maxHealth += winterfinnerStats;
83
- gameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);
84
- }
85
- break;
86
- case "BG26_590":
87
- case "BG26_590_G":
88
- if (entity.abiityChargesLeft > 0) {
89
- const numbersOfCardsToAdd = entity.cardId === "BG26_590_G" ? 2 : 1;
90
- const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
91
- (0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
92
- entity.abiityChargesLeft--;
93
- }
94
- break;
95
- case "BG29_831":
96
- case "BG29_831_G":
97
- if (entity.abiityChargesLeft > 0) {
98
- const numbersOfCardsToAdd = entity.cardId === "BG29_831_G" ? 2 : 1;
99
- const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
100
- (0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
101
- entity.abiityChargesLeft--;
102
- }
103
- break;
104
- case "BG29_160":
105
- case "BG29_160_G":
106
- if (entity.abiityChargesLeft > 0) {
107
- const numbersOfCardsToAdd = entity.cardId === "BG29_160_G" ? 2 : 1;
108
- const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => "BG20_GEM");
109
- (0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
110
- entity.abiityChargesLeft--;
111
- }
56
+ : "BG29_801t", 1, board, hero, otherBoard, otherHero, gameState, damagedEntity.friendly, false));
112
57
  break;
113
58
  }
114
- handleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);
115
- const finalSpawns = (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero, entity, board.length - (board.indexOf(entity) + 1), otherBoard, otherHero, gameState);
116
- const entityRightToSpawns = board[board.indexOf(entity) + 1];
59
+ handleOtherEntityEffects(damagedEntity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);
60
+ const finalSpawns = (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero, damagedEntity, board.length - (board.indexOf(damagedEntity) + 1), otherBoard, otherHero, gameState);
61
+ const entityRightToSpawns = board[board.indexOf(damagedEntity) + 1];
117
62
  finalSpawns.forEach((e) => {
118
63
  var _a;
119
- e.hasAttacked = entity.hasAttacked > 1 ? 1 : (_a = entityRightToSpawns === null || entityRightToSpawns === void 0 ? void 0 : entityRightToSpawns.hasAttacked) !== null && _a !== void 0 ? _a : 0;
64
+ e.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : (_a = entityRightToSpawns === null || entityRightToSpawns === void 0 ? void 0 : entityRightToSpawns.hasAttacked) !== null && _a !== void 0 ? _a : 0;
120
65
  });
66
+ if (damage > 0) {
67
+ for (const entity of board) {
68
+ const afterDealDamageImpl = _card_mappings_1.cardMappings[entity.cardId];
69
+ if ((0, card_interface_1.hasAfterDealDamage)(afterDealDamageImpl)) {
70
+ afterDealDamageImpl.afterDealDamage(entity, {
71
+ damagedEntity: damagedEntity,
72
+ damageDealer: damageSource,
73
+ damage: damage,
74
+ board: board,
75
+ hero: hero,
76
+ gameState,
77
+ });
78
+ }
79
+ }
80
+ }
121
81
  return finalSpawns;
122
82
  };
123
83
  exports.onEntityDamaged = onEntityDamaged;
@@ -1 +1 @@
1
- {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { addStatsToBoard, grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { dealDamageToRandomEnemy } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { applyFrenzy } from './frenzy';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === entity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly ? otherBoard : board?.[0]?.friendly === entity.friendly ? board : [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\r\n\tif (entity.frenzyChargesLeft > 0 && entity.health > 0 && !entity.definitelyDead) {\r\n\t\tapplyFrenzy(entity, friendlyBoard, friendlyHero, gameState);\r\n\t\tentity.frenzyChargesLeft--;\r\n\t}\r\n\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = entity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846:\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t\tconst treantModifier = entity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t\taddStatsToBoard(entity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(entity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = entity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(entity, entity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tentity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tentity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CraftyAranasi_BG29_821:\r\n\t\tcase CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t\tconst aranasiLoops = entity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t\t\tdealDamageToRandomEnemy(enemyBoard, enemyHero, entity, 5, friendlyBoard, friendlyHero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MarineMatriarch_BG29_610:\r\n\t\tcase CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t\tconst winterfinnerStats = entity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t\tconst minionInHand = pickRandom(\r\n\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (!!minionInHand) {\r\n\t\t\t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t\t\tminionInHand.health += winterfinnerStats;\r\n\t\t\t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590:\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LongJohnCopper_BG29_831:\r\n\t\tcase CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160:\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tentity,\r\n\t\tboard.length - (board.indexOf(entity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(entity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = entity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, e, 2 * stats, stats, board, hero, gameState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_BG30_MagicItem_427 ||\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t,\r\n\t\t)\r\n\t\t.forEach((carving) => {\r\n\t\t\tconst target = pickRandomAlive(board);\r\n\t\t\tif (!!target) {\r\n\t\t\t\tconst buff = carving.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t ? 4 : 2;\r\n\t\t\t\tmodifyStats(target, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n"]}
1
+ {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { applyFrenzy } from './frenzy';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tdamagedEntity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamageSource: BoardEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: board?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\r\n\tif (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {\r\n\t\tapplyFrenzy(damagedEntity, friendlyBoard, friendlyHero, gameState);\r\n\t\tdamagedEntity.frenzyChargesLeft--;\r\n\t}\r\n\r\n\tswitch (damagedEntity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = damagedEntity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tdamagedEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846:\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t// \tconst treantModifier = damagedEntity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t// \taddStatsToBoard(damagedEntity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t// \tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(damagedEntity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = damagedEntity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tdamagedEntity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tdamagedEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\t// case CardIds.CraftyAranasi_BG29_821:\r\n\t\t// case CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t// \tconst aranasiLoops = damagedEntity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t// \tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t// \t\tdealDamageToRandomEnemy(\r\n\t\t// \t\t\tenemyBoard,\r\n\t\t// \t\t\tenemyHero,\r\n\t\t// \t\t\tdamagedEntity,\r\n\t\t// \t\t\t5,\r\n\t\t// \t\t\tfriendlyBoard,\r\n\t\t// \t\t\tfriendlyHero,\r\n\t\t// \t\t\tgameState,\r\n\t\t// \t\t);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.MarineMatriarch_BG29_610:\r\n\t\t// case CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t// \tconst winterfinnerStats = damagedEntity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t// \tconst minionInHand = pickRandom(\r\n\t\t// \t\thero.hand.filter(\r\n\t\t// \t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t// \t\t),\r\n\t\t// \t);\r\n\t\t// \tif (!!minionInHand) {\r\n\t\t// \t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t// \t\tminionInHand.health += winterfinnerStats;\r\n\t\t// \t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t// \t\tgameState.spectator.registerPowerTarget(damagedEntity, minionInHand, board, hero, otherHero);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590:\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.LongJohnCopper_BG29_831:\r\n\t\t// case CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160:\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(damagedEntity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tdamagedEntity,\r\n\t\tboard.length - (board.indexOf(damagedEntity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(damagedEntity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\tif (damage > 0) {\r\n\t\tfor (const entity of board) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, e, 2 * stats, stats, board, hero, gameState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_BG30_MagicItem_427 ||\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t,\r\n\t\t)\r\n\t\t.forEach((carving) => {\r\n\t\t\tconst target = pickRandomAlive(board);\r\n\t\t\tif (!!target) {\r\n\t\t\t\tconst buff = carving.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t ? 4 : 2;\r\n\t\t\t\tmodifyStats(target, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n\r\nexport interface AfterDealDamageInput {\r\n\tdamagedEntity: BoardEntity | BgsPlayerEntity;\r\n\tdamageDealer: BoardEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -14,6 +14,17 @@ const dealDamageToHero = (source, hero, board, damage, gameState) => {
14
14
  gameState,
15
15
  });
16
16
  }
17
+ const afterDealDamageImpl = _card_mappings_1.cardMappings[entity.cardId];
18
+ if ((0, card_interface_1.hasAfterDealDamage)(afterDealDamageImpl)) {
19
+ afterDealDamageImpl.afterDealDamage(entity, {
20
+ damagedEntity: hero,
21
+ damageDealer: source,
22
+ damage: damage,
23
+ board: board,
24
+ hero: hero,
25
+ gameState,
26
+ });
27
+ }
17
28
  }
18
29
  };
19
30
  exports.dealDamageToHero = dealDamageToHero;
@@ -1 +1 @@
1
- {"version":3,"file":"damage-to-hero.js","sourceRoot":"","sources":["../../src/simulation/damage-to-hero.ts"],"names":[],"mappings":";;;AAEA,4DAA8D;AAC9D,iEAA4D;AAGrD,MAAM,gBAAgB,GAAG,CAC/B,MAAmB,EACnB,IAAqB,EACrB,KAAoB,EACpB,MAAc,EACd,SAAwB,EACvB,EAAE;IACH,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAC3B,MAAM,oBAAoB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,IAAA,oCAAmB,EAAC,oBAAoB,CAAC,EAAE;YAC9C,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC7C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS;aACT,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AAlBW,QAAA,gBAAgB,oBAkB3B","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterHeroDamaged } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const dealDamageToHero = (\r\n\tsource: BoardEntity,\r\n\thero: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst afterHeroDamagedImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterHeroDamaged(afterHeroDamagedImpl)) {\r\n\t\t\tafterHeroDamagedImpl.afterHeroDamaged(entity, {\r\n\t\t\t\tdamage: damage,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface AfterHeroDamagedInput {\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"damage-to-hero.js","sourceRoot":"","sources":["../../src/simulation/damage-to-hero.ts"],"names":[],"mappings":";;;AAEA,4DAAkF;AAClF,iEAA4D;AAGrD,MAAM,gBAAgB,GAAG,CAC/B,MAAmB,EACnB,IAAqB,EACrB,KAAoB,EACpB,MAAc,EACd,SAAwB,EACvB,EAAE;IACH,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAC3B,MAAM,oBAAoB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,IAAA,oCAAmB,EAAC,oBAAoB,CAAC,EAAE;YAC9C,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC7C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS;aACT,CAAC,CAAC;SACH;QAED,MAAM,mBAAmB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAA,mCAAkB,EAAC,mBAAmB,CAAC,EAAE;YAC5C,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,MAAM;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS;aACT,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AA9BW,QAAA,gBAAgB,oBA8B3B","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage, hasAfterHeroDamaged } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const dealDamageToHero = (\r\n\tsource: BoardEntity,\r\n\thero: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst afterHeroDamagedImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterHeroDamaged(afterHeroDamagedImpl)) {\r\n\t\t\tafterHeroDamagedImpl.afterHeroDamaged(entity, {\r\n\t\t\t\tdamage: damage,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\tdamagedEntity: hero,\r\n\t\t\t\tdamageDealer: source,\r\n\t\t\t\tdamage: damage,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface AfterHeroDamagedInput {\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -100,24 +100,6 @@ const applyLeapFroggerEffect = (boardWithDeadEntity, boardWithDeadEntityHero, de
100
100
  };
101
101
  exports.applyLeapFroggerEffect = applyLeapFroggerEffect;
102
102
  const applyRecurringNightmareDeathrattleEffect = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, isPremium, gameState, multiplier = 1) => {
103
- var _a;
104
- multiplier = multiplier || 1;
105
- const target = (0, utils_1.pickRandom)(boardWithDeadEntity
106
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.UNDEAD, gameState.anomalies, gameState.allCards))
107
- .filter((e) => e.cardId !== "BG26_055" &&
108
- e.cardId !== "BG26_055_G"));
109
- if (target) {
110
- target.enchantments = (_a = target.enchantments) !== null && _a !== void 0 ? _a : [];
111
- target.enchantments.push({
112
- cardId: isPremium
113
- ? "BG26_055_Ge"
114
- : "BG26_055e",
115
- originEntityId: deadEntity.entityId,
116
- repeats: multiplier > 1 ? multiplier : 1,
117
- timing: gameState.sharedState.currentEntityId++,
118
- });
119
- gameState.spectator.registerPowerTarget(deadEntity, target, boardWithDeadEntity, null, null);
120
- }
121
103
  };
122
104
  exports.applyRecurringNightmareDeathrattleEffect = applyRecurringNightmareDeathrattleEffect;
123
105
  const handleWheneverMinionsKillEffect = (board, hero, otherBoard, otherHero, gameState) => {
@@ -186,44 +168,10 @@ const applyWheneverMinionDiesEffect = (deadEntity, deadEntityIndexFromRight, boa
186
168
  if (deadEntity.health < 0 &&
187
169
  gameState.sharedState.currentAttackerEntityId != null &&
188
170
  gameState.sharedState.currentAttackerEntityId === ((_a = deadEntity.lastAffectedByEntity) === null || _a === void 0 ? void 0 : _a.entityId)) {
189
- if (deadEntity.lastAffectedByEntity.cardId === "BGS_032") {
190
- const targets = boardWithDeadEntity.filter((entity) => entity.health > 0 && !entity.definitelyDead);
191
- if (targets.length > 0) {
192
- const target = targets[0];
193
- (0, attack_1.dealDamageToMinion)(target, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity.lastAffectedByEntity, 3, otherBoard, otherBoardHero, gameState);
194
- }
195
- }
196
- else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_103") {
197
- const targets = boardWithDeadEntity.filter((entity) => entity.health > 0 && !entity.definitelyDead);
198
- if (targets.length > 0) {
199
- const target = targets[0];
200
- (0, attack_1.dealDamageToMinion)(target, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity.lastAffectedByEntity, 6, otherBoard, otherBoardHero, gameState);
201
- }
202
- }
203
- else if (deadEntity.lastAffectedByEntity.cardId === "TRL_232") {
171
+ if (deadEntity.lastAffectedByEntity.cardId === "TRL_232") {
204
172
  const newEntities = (0, deathrattle_spawns_1.spawnEntities)("TRL_232t", 1, otherBoard, otherBoardHero, boardWithDeadEntity, boardWithDeadEntityHero, gameState, !deadEntity.friendly, false);
205
173
  otherBoard.splice(otherBoard.length - deadEntityIndexFromRight, 0, ...newEntities);
206
174
  }
207
- else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_051") {
208
- const newEntities = (0, deathrattle_spawns_1.spawnEntities)("TB_BaconUps_051t", 1, otherBoard, otherBoardHero, boardWithDeadEntity, boardWithDeadEntityHero, gameState, !deadEntity.friendly, false);
209
- otherBoard.splice(otherBoard.length - deadEntityIndexFromRight, 0, ...newEntities);
210
- }
211
- else if (deadEntity.lastAffectedByEntity.cardId === "BGS_080") {
212
- const otherPirates = otherBoard
213
- .filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.anomalies, gameState.allCards))
214
- .filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
215
- otherPirates.forEach((pirate) => {
216
- (0, stats_1.modifyStats)(pirate, deadEntity.lastAffectedByEntity, 2, 2, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
217
- });
218
- }
219
- else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_142") {
220
- const otherPirates = otherBoard
221
- .filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.anomalies, gameState.allCards))
222
- .filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
223
- otherPirates.forEach((pirate) => {
224
- (0, stats_1.modifyStats)(pirate, deadEntity.lastAffectedByEntity, 4, 4, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
225
- });
226
- }
227
175
  }
228
176
  };
229
177
  exports.applyWheneverMinionDiesEffect = applyWheneverMinionDiesEffect;
@@ -245,12 +193,15 @@ const applySoulJugglerEffect = (boardWithJugglers, boardWithJugglersHero, boardT
245
193
  }
246
194
  const jugglers = boardWithJugglers.filter((entity) => entity.cardId === "BGS_002");
247
195
  for (const juggler of jugglers) {
248
- (0, attack_1.dealDamageToRandomEnemy)(boardToAttack, boardToAttackHero, juggler, 3, boardWithJugglers, boardWithJugglersHero, gameState);
196
+ const target = (0, utils_2.getRandomMinionWithHighestHealth)(boardToAttack);
197
+ (0, attack_1.dealDamageToMinion)(target, boardToAttack, boardToAttackHero, juggler, 4, boardWithJugglers, boardWithJugglersHero, gameState);
249
198
  }
250
199
  const goldenJugglers = boardWithJugglers.filter((entity) => entity.cardId === "TB_BaconUps_075");
251
200
  for (const juggler of goldenJugglers) {
252
- (0, attack_1.dealDamageToRandomEnemy)(boardToAttack, boardToAttackHero, juggler, 3, boardWithJugglers, boardWithJugglersHero, gameState);
253
- (0, attack_1.dealDamageToRandomEnemy)(boardToAttack, boardToAttackHero, juggler, 3, boardWithJugglers, boardWithJugglersHero, gameState);
201
+ for (let i = 0; i < 2; i++) {
202
+ const target = (0, utils_2.getRandomMinionWithHighestHealth)(boardToAttack);
203
+ (0, attack_1.dealDamageToMinion)(target, boardToAttack, boardToAttackHero, juggler, 4, boardWithJugglers, boardWithJugglersHero, gameState);
204
+ }
254
205
  }
255
206
  };
256
207
  const applyScavengingHyenaEffect = (board, boardWithDeadEntityHero, gameState) => {
@@ -309,21 +260,9 @@ const applyJunkbotEffect = (board, hero, gameState) => {
309
260
  if (board[i].cardId === "GVG_106") {
310
261
  (0, stats_1.modifyStats)(board[i], board[i], 2, 2, board, hero, gameState);
311
262
  }
312
- else if (board[i].cardId === "TB_BaconUps_046") {
313
- (0, stats_1.modifyStats)(board[i], board[i], 4, 4, board, hero, gameState);
314
- }
315
263
  }
316
264
  };
317
265
  const applyQirajiHarbringerEffect = (board, hero, deadEntityIndexFromRight, gameState) => {
318
- const qiraji = board.filter((entity) => entity.cardId === "BGS_112");
319
- const goldenQiraji = board.filter((entity) => entity.cardId === "TB_BaconUps_303");
320
- if (qiraji.length + goldenQiraji.length > 0) {
321
- const neighbours = (0, attack_1.getNeighbours)(board, null, deadEntityIndexFromRight);
322
- const buff = 2 * qiraji.length + 4 * goldenQiraji.length;
323
- neighbours.forEach((entity) => {
324
- (0, stats_1.modifyStats)(entity, null, buff, buff, board, hero, gameState);
325
- });
326
- }
327
266
  };
328
267
  const applyMonstrosity = (monstrosity, deadEntities, boardWithDeadEntities, boardWithDeadEntityHero, gameState) => {
329
268
  for (const deadEntity of deadEntities) {
@@ -393,13 +332,5 @@ const rememberDeathrattles = (fish, inputDeadEntities, cardsData, allCards, shar
393
332
  };
394
333
  exports.rememberDeathrattles = rememberDeathrattles;
395
334
  const removeOldMurkEyeAttack = (boardWithDeadEntity, hero, gameState) => {
396
- const murkeyes = boardWithDeadEntity.filter((entity) => entity.cardId === "EX1_062" || entity.cardId === "VAN_EX1_062");
397
- const goldenMurkeyes = boardWithDeadEntity.filter((entity) => entity.cardId === "TB_BaconUps_036");
398
- murkeyes.forEach((entity) => {
399
- (0, stats_1.modifyStats)(entity, null, -1, 0, boardWithDeadEntity, hero, gameState);
400
- });
401
- goldenMurkeyes.forEach((entity) => {
402
- (0, stats_1.modifyStats)(entity, null, -2, 0, boardWithDeadEntity, hero, gameState);
403
- });
404
335
  };
405
336
  //# sourceMappingURL=deathrattle-effects.js.map