@firestone-hs/simulate-bgs-battle 1.1.487 → 1.1.488

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 (273) hide show
  1. package/dist/bgs-player-entity.d.ts +2 -1
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/cards/card.interface.d.ts +12 -0
  4. package/dist/cards/card.interface.js +3 -0
  5. package/dist/cards/card.interface.js.map +1 -0
  6. package/dist/cards/cards-data.js +6 -0
  7. package/dist/cards/cards-data.js.map +1 -1
  8. package/dist/cards/impl/anomaly/anomalous-twin.d.ts +8 -0
  9. package/dist/cards/impl/anomaly/anomalous-twin.js +24 -0
  10. package/dist/cards/impl/anomaly/anomalous-twin.js.map +1 -0
  11. package/dist/cards/impl/anomaly/blessed-or-blighted.d.ts +5 -0
  12. package/dist/cards/impl/anomaly/blessed-or-blighted.js +16 -0
  13. package/dist/cards/impl/anomaly/blessed-or-blighted.js.map +1 -0
  14. package/dist/cards/impl/hero-power/aim-high.d.ts +5 -0
  15. package/dist/cards/impl/hero-power/aim-high.js +18 -0
  16. package/dist/cards/impl/hero-power/aim-high.js.map +1 -0
  17. package/dist/cards/impl/hero-power/aim-left.d.ts +5 -0
  18. package/dist/cards/impl/hero-power/aim-left.js +16 -0
  19. package/dist/cards/impl/hero-power/aim-left.js.map +1 -0
  20. package/dist/cards/impl/hero-power/aim-low.d.ts +5 -0
  21. package/dist/cards/impl/hero-power/aim-low.js +18 -0
  22. package/dist/cards/impl/hero-power/aim-low.js.map +1 -0
  23. package/dist/cards/impl/hero-power/aim-right.d.ts +5 -0
  24. package/dist/cards/impl/hero-power/aim-right.js +16 -0
  25. package/dist/cards/impl/hero-power/aim-right.js.map +1 -0
  26. package/dist/cards/impl/hero-power/all-will-burn.d.ts +5 -0
  27. package/dist/cards/impl/hero-power/all-will-burn.js +18 -0
  28. package/dist/cards/impl/hero-power/all-will-burn.js.map +1 -0
  29. package/dist/cards/impl/hero-power/earth-invocation.d.ts +5 -0
  30. package/dist/cards/impl/hero-power/earth-invocation.js +13 -0
  31. package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -0
  32. package/dist/cards/impl/hero-power/embrace-your-rage.d.ts +8 -0
  33. package/dist/cards/impl/hero-power/embrace-your-rage.js +26 -0
  34. package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -0
  35. package/dist/cards/impl/hero-power/fire-invocation.d.ts +5 -0
  36. package/dist/cards/impl/hero-power/fire-invocation.js +13 -0
  37. package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -0
  38. package/dist/cards/impl/hero-power/fragrant-phylactery.d.ts +8 -0
  39. package/dist/cards/impl/hero-power/fragrant-phylactery.js +25 -0
  40. package/dist/cards/impl/hero-power/fragrant-phylactery.js.map +1 -0
  41. package/dist/cards/impl/hero-power/glorious-gloop.d.ts +5 -0
  42. package/dist/cards/impl/hero-power/glorious-gloop.js +40 -0
  43. package/dist/cards/impl/hero-power/glorious-gloop.js.map +1 -0
  44. package/dist/cards/impl/hero-power/lightning-invocation.d.ts +5 -0
  45. package/dist/cards/impl/hero-power/lightning-invocation.js +13 -0
  46. package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -0
  47. package/dist/cards/impl/hero-power/rapid-reanimation.d.ts +8 -0
  48. package/dist/cards/impl/hero-power/rapid-reanimation.js +29 -0
  49. package/dist/cards/impl/hero-power/rapid-reanimation.js.map +1 -0
  50. package/dist/cards/impl/hero-power/reborn-rites.d.ts +5 -0
  51. package/dist/cards/impl/hero-power/reborn-rites.js +18 -0
  52. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -0
  53. package/dist/cards/impl/hero-power/swatting-insects.d.ts +5 -0
  54. package/dist/cards/impl/hero-power/swatting-insects.js +21 -0
  55. package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -0
  56. package/dist/cards/impl/hero-power/tentacular.d.ts +8 -0
  57. package/dist/cards/impl/hero-power/tentacular.js +10 -0
  58. package/dist/cards/impl/hero-power/tentacular.js.map +1 -0
  59. package/dist/cards/impl/hero-power/water-invocation.d.ts +5 -0
  60. package/dist/cards/impl/hero-power/water-invocation.js +13 -0
  61. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -0
  62. package/dist/cards/impl/hero-power/wax-warband.d.ts +5 -0
  63. package/dist/cards/impl/hero-power/wax-warband.js +56 -0
  64. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -0
  65. package/dist/cards/impl/minion/amber-guardian.d.ts +5 -0
  66. package/dist/cards/impl/minion/amber-guardian.js +31 -0
  67. package/dist/cards/impl/minion/amber-guardian.js.map +1 -0
  68. package/dist/cards/impl/minion/audacious-anchor.d.ts +5 -0
  69. package/dist/cards/impl/minion/audacious-anchor.js +25 -0
  70. package/dist/cards/impl/minion/audacious-anchor.js.map +1 -0
  71. package/dist/cards/impl/minion/carbonic-copy.d.ts +5 -0
  72. package/dist/cards/impl/minion/carbonic-copy.js +24 -0
  73. package/dist/cards/impl/minion/carbonic-copy.js.map +1 -0
  74. package/dist/cards/impl/minion/choral-mrrrglr.d.ts +5 -0
  75. package/dist/cards/impl/minion/choral-mrrrglr.js +14 -0
  76. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -0
  77. package/dist/cards/impl/minion/corrupted-myrmidon.d.ts +5 -0
  78. package/dist/cards/impl/minion/corrupted-myrmidon.js +13 -0
  79. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -0
  80. package/dist/cards/impl/minion/crabby.d.ts +5 -0
  81. package/dist/cards/impl/minion/crabby.js +18 -0
  82. package/dist/cards/impl/minion/crabby.js.map +1 -0
  83. package/dist/cards/impl/minion/diremuck-forager.d.ts +5 -0
  84. package/dist/cards/impl/minion/diremuck-forager.js +32 -0
  85. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -0
  86. package/dist/cards/impl/minion/elder-taggawag.d.ts +5 -0
  87. package/dist/cards/impl/minion/elder-taggawag.js +19 -0
  88. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -0
  89. package/dist/cards/impl/minion/hawkstrider-herald.d.ts +5 -0
  90. package/dist/cards/impl/minion/hawkstrider-herald.js +27 -0
  91. package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -0
  92. package/dist/cards/impl/minion/hoarding-hatespawn.d.ts +5 -0
  93. package/dist/cards/impl/minion/hoarding-hatespawn.js +22 -0
  94. package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -0
  95. package/dist/cards/impl/minion/humming-bird.d.ts +5 -0
  96. package/dist/cards/impl/minion/humming-bird.js +15 -0
  97. package/dist/cards/impl/minion/humming-bird.js.map +1 -0
  98. package/dist/cards/impl/minion/interrogator-whitemane.d.ts +5 -0
  99. package/dist/cards/impl/minion/interrogator-whitemane.js +33 -0
  100. package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -0
  101. package/dist/cards/impl/minion/irate-rooster.d.ts +5 -0
  102. package/dist/cards/impl/minion/irate-rooster.js +20 -0
  103. package/dist/cards/impl/minion/irate-rooster.js.map +1 -0
  104. package/dist/cards/impl/minion/mantid-queen.d.ts +5 -0
  105. package/dist/cards/impl/minion/mantid-queen.js +52 -0
  106. package/dist/cards/impl/minion/mantid-queen.js.map +1 -0
  107. package/dist/cards/impl/minion/misfit-dragonling.d.ts +5 -0
  108. package/dist/cards/impl/minion/misfit-dragonling.js +15 -0
  109. package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -0
  110. package/dist/cards/impl/minion/piloted-whirl-o-tron.d.ts +5 -0
  111. package/dist/cards/impl/minion/piloted-whirl-o-tron.js +13 -0
  112. package/dist/cards/impl/minion/piloted-whirl-o-tron.js.map +1 -0
  113. package/dist/cards/impl/minion/prized-promo-drake.d.ts +5 -0
  114. package/dist/cards/impl/minion/prized-promo-drake.js +22 -0
  115. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -0
  116. package/dist/cards/impl/minion/red-whelp.d.ts +5 -0
  117. package/dist/cards/impl/minion/red-whelp.js +17 -0
  118. package/dist/cards/impl/minion/red-whelp.js.map +1 -0
  119. package/dist/cards/impl/minion/sanctum-rester.d.ts +5 -0
  120. package/dist/cards/impl/minion/sanctum-rester.js +20 -0
  121. package/dist/cards/impl/minion/sanctum-rester.js.map +1 -0
  122. package/dist/cards/impl/minion/sandy.d.ts +5 -0
  123. package/dist/cards/impl/minion/sandy.js +23 -0
  124. package/dist/cards/impl/minion/sandy.js.map +1 -0
  125. package/dist/cards/impl/minion/sky-pirate-flagbearer.d.ts +5 -0
  126. package/dist/cards/impl/minion/sky-pirate-flagbearer.js +24 -0
  127. package/dist/cards/impl/minion/sky-pirate-flagbearer.js.map +1 -0
  128. package/dist/cards/impl/minion/soulsplitter.d.ts +5 -0
  129. package/dist/cards/impl/minion/soulsplitter.js +23 -0
  130. package/dist/cards/impl/minion/soulsplitter.js.map +1 -0
  131. package/dist/cards/impl/minion/sun-screener.d.ts +5 -0
  132. package/dist/cards/impl/minion/sun-screener.js +15 -0
  133. package/dist/cards/impl/minion/sun-screener.js.map +1 -0
  134. package/dist/cards/impl/minion/the-uninvited-guest.d.ts +5 -0
  135. package/dist/cards/impl/minion/the-uninvited-guest.js +24 -0
  136. package/dist/cards/impl/minion/the-uninvited-guest.js.map +1 -0
  137. package/dist/cards/impl/minion/thousandth-paper-drake.d.ts +5 -0
  138. package/dist/cards/impl/minion/thousandth-paper-drake.js +24 -0
  139. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -0
  140. package/dist/cards/impl/minion/vaelastrasz.d.ts +5 -0
  141. package/dist/cards/impl/minion/vaelastrasz.js +17 -0
  142. package/dist/cards/impl/minion/vaelastrasz.js.map +1 -0
  143. package/dist/cards/impl/minion/yulon-fortune-granter.d.ts +5 -0
  144. package/dist/cards/impl/minion/yulon-fortune-granter.js +26 -0
  145. package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -0
  146. package/dist/cards/impl/quest-reward/evil-twin.d.ts +5 -0
  147. package/dist/cards/impl/quest-reward/evil-twin.js +32 -0
  148. package/dist/cards/impl/quest-reward/evil-twin.js.map +1 -0
  149. package/dist/cards/impl/quest-reward/staff-of-origination.d.ts +5 -0
  150. package/dist/cards/impl/quest-reward/staff-of-origination.js +14 -0
  151. package/dist/cards/impl/quest-reward/staff-of-origination.js.map +1 -0
  152. package/dist/cards/impl/quest-reward/stolen-gold.d.ts +5 -0
  153. package/dist/cards/impl/quest-reward/stolen-gold.js +16 -0
  154. package/dist/cards/impl/quest-reward/stolen-gold.js.map +1 -0
  155. package/dist/cards/impl/trinket/artisanal-urn.d.ts +5 -0
  156. package/dist/cards/impl/trinket/artisanal-urn.js +13 -0
  157. package/dist/cards/impl/trinket/artisanal-urn.js.map +1 -0
  158. package/dist/cards/impl/trinket/automaton-portrait.d.ts +5 -0
  159. package/dist/cards/impl/trinket/automaton-portrait.js +15 -0
  160. package/dist/cards/impl/trinket/automaton-portrait.js.map +1 -0
  161. package/dist/cards/impl/trinket/bronze-timepiece.d.ts +5 -0
  162. package/dist/cards/impl/trinket/bronze-timepiece.js +17 -0
  163. package/dist/cards/impl/trinket/bronze-timepiece.js.map +1 -0
  164. package/dist/cards/impl/trinket/emerald-dreamcatcher.d.ts +5 -0
  165. package/dist/cards/impl/trinket/emerald-dreamcatcher.js +18 -0
  166. package/dist/cards/impl/trinket/emerald-dreamcatcher.js.map +1 -0
  167. package/dist/cards/impl/trinket/eternal-portrait.d.ts +5 -0
  168. package/dist/cards/impl/trinket/eternal-portrait.js +19 -0
  169. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -0
  170. package/dist/cards/impl/trinket/fishy-sticker.d.ts +5 -0
  171. package/dist/cards/impl/trinket/fishy-sticker.js +28 -0
  172. package/dist/cards/impl/trinket/fishy-sticker.js.map +1 -0
  173. package/dist/cards/impl/trinket/hoggy-bank.d.ts +5 -0
  174. package/dist/cards/impl/trinket/hoggy-bank.js +23 -0
  175. package/dist/cards/impl/trinket/hoggy-bank.js.map +1 -0
  176. package/dist/cards/impl/trinket/holly-mallet.d.ts +5 -0
  177. package/dist/cards/impl/trinket/holly-mallet.js +18 -0
  178. package/dist/cards/impl/trinket/holly-mallet.js.map +1 -0
  179. package/dist/cards/impl/trinket/ironforge-anvil.d.ts +5 -0
  180. package/dist/cards/impl/trinket/ironforge-anvil.js +23 -0
  181. package/dist/cards/impl/trinket/ironforge-anvil.js.map +1 -0
  182. package/dist/cards/impl/trinket/jarred-frostling.d.ts +5 -0
  183. package/dist/cards/impl/trinket/jarred-frostling.js +27 -0
  184. package/dist/cards/impl/trinket/jarred-frostling.js.map +1 -0
  185. package/dist/cards/impl/trinket/karazhan-chess-set.d.ts +5 -0
  186. package/dist/cards/impl/trinket/karazhan-chess-set.js +40 -0
  187. package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -0
  188. package/dist/cards/impl/trinket/rivendare-portrait.d.ts +5 -0
  189. package/dist/cards/impl/trinket/rivendare-portrait.js +21 -0
  190. package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -0
  191. package/dist/cards/impl/trinket/rusty-trident.d.ts +5 -0
  192. package/dist/cards/impl/trinket/rusty-trident.js +23 -0
  193. package/dist/cards/impl/trinket/rusty-trident.js.map +1 -0
  194. package/dist/cards/impl/trinket/ship-in-a-bottle.d.ts +5 -0
  195. package/dist/cards/impl/trinket/ship-in-a-bottle.js +20 -0
  196. package/dist/cards/impl/trinket/ship-in-a-bottle.js.map +1 -0
  197. package/dist/cards/impl/trinket/summoning-sphere.d.ts +5 -0
  198. package/dist/cards/impl/trinket/summoning-sphere.js +31 -0
  199. package/dist/cards/impl/trinket/summoning-sphere.js.map +1 -0
  200. package/dist/cards/impl/trinket/tinyfin-onesie.d.ts +5 -0
  201. package/dist/cards/impl/trinket/tinyfin-onesie.js +15 -0
  202. package/dist/cards/impl/trinket/tinyfin-onesie.js.map +1 -0
  203. package/dist/cards/impl/trinket/training-certificate.d.ts +5 -0
  204. package/dist/cards/impl/trinket/training-certificate.js +21 -0
  205. package/dist/cards/impl/trinket/training-certificate.js.map +1 -0
  206. package/dist/cards/impl/trinket/valorous-medaillion.d.ts +5 -0
  207. package/dist/cards/impl/trinket/valorous-medaillion.js +12 -0
  208. package/dist/cards/impl/trinket/valorous-medaillion.js.map +1 -0
  209. package/dist/simulation/add-minion-to-board.js +18 -23
  210. package/dist/simulation/add-minion-to-board.js.map +1 -1
  211. package/dist/simulation/auras.js +0 -2
  212. package/dist/simulation/auras.js.map +1 -1
  213. package/dist/simulation/avenge.js +24 -4
  214. package/dist/simulation/avenge.js.map +1 -1
  215. package/dist/simulation/battlecries.js +9 -0
  216. package/dist/simulation/battlecries.js.map +1 -1
  217. package/dist/simulation/blood-gems.js +8 -0
  218. package/dist/simulation/blood-gems.js.map +1 -1
  219. package/dist/simulation/deathrattle-effects.js +7 -1
  220. package/dist/simulation/deathrattle-effects.js.map +1 -1
  221. package/dist/simulation/deathrattle-on-trigger.js +5 -0
  222. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  223. package/dist/simulation/discover.js +6 -0
  224. package/dist/simulation/discover.js.map +1 -1
  225. package/dist/simulation/magnetize.js +2 -1
  226. package/dist/simulation/magnetize.js.map +1 -1
  227. package/dist/simulation/remove-minion-from-board.js +0 -10
  228. package/dist/simulation/remove-minion-from-board.js.map +1 -1
  229. package/dist/simulation/simulator.js +1 -1
  230. package/dist/simulation/simulator.js.map +1 -1
  231. package/dist/simulation/start-of-combat/phases.d.ts +1 -0
  232. package/dist/simulation/start-of-combat/phases.js +3 -0
  233. package/dist/simulation/start-of-combat/phases.js.map +1 -0
  234. package/dist/simulation/start-of-combat/soc-action-processor.d.ts +4 -0
  235. package/dist/simulation/start-of-combat/soc-action-processor.js +286 -0
  236. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -0
  237. package/dist/simulation/start-of-combat/soc-anomalies.d.ts +4 -0
  238. package/dist/simulation/start-of-combat/soc-anomalies.js +39 -0
  239. package/dist/simulation/start-of-combat/soc-anomalies.js.map +1 -0
  240. package/dist/simulation/start-of-combat/soc-hero-power.d.ts +5 -0
  241. package/dist/simulation/start-of-combat/soc-hero-power.js +77 -0
  242. package/dist/simulation/start-of-combat/soc-hero-power.js.map +1 -0
  243. package/dist/simulation/start-of-combat/soc-illidan-hero-power.d.ts +4 -0
  244. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js +55 -0
  245. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js.map +1 -0
  246. package/dist/simulation/start-of-combat/soc-minion.d.ts +6 -0
  247. package/dist/simulation/start-of-combat/soc-minion.js +68 -0
  248. package/dist/simulation/start-of-combat/soc-minion.js.map +1 -0
  249. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.d.ts +4 -0
  250. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js +72 -0
  251. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js.map +1 -0
  252. package/dist/simulation/start-of-combat/soc-quest-reward.d.ts +4 -0
  253. package/dist/simulation/start-of-combat/soc-quest-reward.js +60 -0
  254. package/dist/simulation/start-of-combat/soc-quest-reward.js.map +1 -0
  255. package/dist/simulation/start-of-combat/soc-secret.d.ts +4 -0
  256. package/dist/simulation/start-of-combat/soc-secret.js +54 -0
  257. package/dist/simulation/start-of-combat/soc-secret.js.map +1 -0
  258. package/dist/simulation/start-of-combat/soc-trinket.d.ts +4 -0
  259. package/dist/simulation/start-of-combat/soc-trinket.js +60 -0
  260. package/dist/simulation/start-of-combat/soc-trinket.js.map +1 -0
  261. package/dist/simulation/start-of-combat/start-of-combat-input.d.ts +14 -0
  262. package/dist/simulation/start-of-combat/start-of-combat-input.js +3 -0
  263. package/dist/simulation/start-of-combat/start-of-combat-input.js.map +1 -0
  264. package/dist/simulation/start-of-combat/start-of-combat.d.ts +4 -0
  265. package/dist/simulation/start-of-combat/start-of-combat.js +68 -0
  266. package/dist/simulation/start-of-combat/start-of-combat.js.map +1 -0
  267. package/dist/temp-card-ids.d.ts +2 -0
  268. package/dist/temp-card-ids.js +3 -0
  269. package/dist/temp-card-ids.js.map +1 -0
  270. package/package.json +3 -3
  271. package/dist/simulation/start-of-combat.d.ts +0 -8
  272. package/dist/simulation/start-of-combat.js +0 -1187
  273. package/dist/simulation/start-of-combat.js.map +0 -1
@@ -1,1187 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.performStartOfCombatMinionsForPlayer = exports.getHeroPowerForHero = exports.handleStartOfCombatHeroPowers = exports.handleIllidanHeroPowers = exports.handleStartOfCombat = void 0;
4
- const reference_data_1 = require("@firestone-hs/reference-data");
5
- const divine_shield_1 = require("../divine-shield");
6
- const utils_1 = require("../services/utils");
7
- const utils_2 = require("../utils");
8
- const add_minion_to_board_1 = require("./add-minion-to-board");
9
- const attack_1 = require("./attack");
10
- const cards_in_hand_1 = require("./cards-in-hand");
11
- const deathrattle_effects_1 = require("./deathrattle-effects");
12
- const deathrattle_orchestration_1 = require("./deathrattle-orchestration");
13
- const deathrattle_spawns_1 = require("./deathrattle-spawns");
14
- const spawns_1 = require("./spawns");
15
- const stats_1 = require("./stats");
16
- const summon_when_space_1 = require("./summon-when-space");
17
- const golden_1 = require("./utils/golden");
18
- const handleStartOfCombat = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
19
- const shouldRecomputeCurrentAttacker = true;
20
- if (shouldRecomputeCurrentAttacker) {
21
- currentAttacker =
22
- playerBoard.length > opponentBoard.length
23
- ? 0
24
- : opponentBoard.length > playerBoard.length
25
- ? 1
26
- : Math.round(Math.random());
27
- }
28
- currentAttacker = handleStartOfCombatQuestRewards(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
29
- currentAttacker = handleStartOfCombatAnomalies(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
30
- currentAttacker = handlePreCombatHeroPowers(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
31
- const playerBoardBefore = playerBoard.map((e) => ({ ...e }));
32
- const opponentBoardBefore = opponentBoard.map((e) => ({ ...e }));
33
- currentAttacker = (0, exports.handleIllidanHeroPowers)(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
34
- currentAttacker = (0, exports.handleStartOfCombatHeroPowers)(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
35
- currentAttacker = handleStartOfCombatTrinkets(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
36
- currentAttacker = handleStartOfCombatSpells(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
37
- handleStartOfCombatMinions(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, playerBoardBefore, opponentBoardBefore, gameState);
38
- playerEntity.startOfCombatDone = true;
39
- opponentEntity.startOfCombatDone = true;
40
- (0, stats_1.applyAfterStatsUpdate)(gameState);
41
- return currentAttacker;
42
- };
43
- exports.handleStartOfCombat = handleStartOfCombat;
44
- const handlePreCombatHeroPowers = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
45
- const initialPlayerBoardSize0 = playerBoard.length;
46
- const initialOpponentBoardSize0 = opponentBoard.length;
47
- const initialCurrentAttacker = currentAttacker;
48
- if (Math.random() < 0.5) {
49
- currentAttacker = handlePreCombatHeroPowersForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
50
- currentAttacker = handlePreCombatHeroPowersForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
51
- }
52
- else {
53
- currentAttacker = handlePreCombatHeroPowersForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
54
- currentAttacker = handlePreCombatHeroPowersForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
55
- }
56
- const initialPlayerBoardSize = playerBoard.length;
57
- const initialOpponentBoardSize = opponentBoard.length;
58
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
59
- if (playerBoard.length !== initialPlayerBoardSize || opponentBoard.length !== initialOpponentBoardSize) {
60
- currentAttacker =
61
- playerBoard.length > opponentBoard.length
62
- ? 0
63
- : opponentBoard.length > playerBoard.length
64
- ? 1
65
- : Math.round(Math.random());
66
- }
67
- return currentAttacker;
68
- };
69
- const handlePreCombatHeroPowersForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, friendly, gameState) => {
70
- if (playerEntity.startOfCombatDone || playerEntity.hpLeft <= 0) {
71
- return currentAttacker;
72
- }
73
- let shouldRecomputeCurrentAttacker = false;
74
- const playerHeroPowerId = playerEntity.heroPowerId || (0, exports.getHeroPowerForHero)(playerEntity.cardId);
75
- if (playerHeroPowerId === "TB_BaconShop_HP_086" && playerBoard.length > 0) {
76
- handleAlakirForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
77
- }
78
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_001p_t1") {
79
- (0, deathrattle_effects_1.applyEarthInvocationEnchantment)(playerBoard, null, playerEntity, gameState);
80
- }
81
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_001p_t3") {
82
- (0, deathrattle_effects_1.applyWaterInvocationEnchantment)(playerBoard, playerEntity, null, playerEntity, gameState);
83
- }
84
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_001p_t2") {
85
- (0, deathrattle_effects_1.applyFireInvocationEnchantment)(playerBoard, playerEntity, null, playerEntity, gameState);
86
- }
87
- else if (playerHeroPowerId === "TB_BaconShop_HP_061") {
88
- applyAllWillBurn(playerBoard, playerEntity, opponentBoard, opponentEntity, playerEntity, gameState);
89
- }
90
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG20_HERO_282p") {
91
- handleTamsinForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
92
- shouldRecomputeCurrentAttacker = true;
93
- }
94
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "TB_BaconShop_HP_103") {
95
- handleEmbraceYourRageForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
96
- shouldRecomputeCurrentAttacker = true;
97
- }
98
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG23_HERO_201p") {
99
- playerEntity.heroPowerActivated = false;
100
- shouldRecomputeCurrentAttacker = true;
101
- }
102
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "TB_BaconShop_HP_024") {
103
- handleRebornRitesForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
104
- }
105
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG25_HERO_103p") {
106
- shouldRecomputeCurrentAttacker = handleTeronForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
107
- }
108
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "TB_BaconShop_HP_037a") {
109
- handleWaxWarbandForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
110
- }
111
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_001p_t4") {
112
- (0, deathrattle_effects_1.applyLightningInvocationEnchantment)(playerBoard, playerEntity, null, opponentBoard, opponentEntity, gameState);
113
- }
114
- else if (playerEntity.heroPowerUsed &&
115
- playerHeroPowerId === "BGDUO_HERO_101p") {
116
- applyGloriousGloop(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
117
- }
118
- (0, attack_1.processMinionDeath)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
119
- if (shouldRecomputeCurrentAttacker) {
120
- currentAttacker =
121
- playerBoard.length > opponentBoard.length
122
- ? friendly
123
- ? 0
124
- : 1
125
- : opponentBoard.length > playerBoard.length
126
- ? friendly
127
- ? 1
128
- : 0
129
- : Math.round(Math.random());
130
- }
131
- return currentAttacker;
132
- };
133
- const handleIllidanHeroPowers = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
134
- if (Math.random() < 0.5) {
135
- currentAttacker = handlePlayerIllidanHeroPowers(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
136
- currentAttacker = handlePlayerIllidanHeroPowers(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
137
- }
138
- else {
139
- currentAttacker = handlePlayerIllidanHeroPowers(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
140
- currentAttacker = handlePlayerIllidanHeroPowers(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
141
- }
142
- (0, attack_1.processMinionDeath)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
143
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
144
- return currentAttacker;
145
- };
146
- exports.handleIllidanHeroPowers = handleIllidanHeroPowers;
147
- const handleStartOfCombatMinions = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, playerBoardBefore, opponentBoardBefore, gameState) => {
148
- let attackerForStart = Math.random() < 0.5 ? 0 : 1;
149
- const playerAttackers = [...playerBoard];
150
- const opponentAttackers = [...opponentBoard];
151
- while (playerAttackers.length > 0 || opponentAttackers.length > 0) {
152
- let shouldUpdateNextPlayer = false;
153
- if (attackerForStart === 0 && playerAttackers.length > 0) {
154
- const attacker = playerAttackers.splice(0, 1)[0];
155
- if (attacker.health <= 0 || attacker.definitelyDead) {
156
- continue;
157
- }
158
- shouldUpdateNextPlayer = (0, exports.performStartOfCombatMinionsForPlayer)(attacker, playerBoard, playerEntity, opponentBoard, opponentEntity, playerBoardBefore, opponentBoardBefore, gameState);
159
- }
160
- else if (attackerForStart === 0 && playerAttackers.length === 0) {
161
- shouldUpdateNextPlayer = true;
162
- }
163
- else if (attackerForStart === 1 && opponentAttackers.length > 0) {
164
- const attacker = opponentAttackers.splice(0, 1)[0];
165
- if (attacker.health <= 0 || attacker.definitelyDead) {
166
- continue;
167
- }
168
- shouldUpdateNextPlayer = (0, exports.performStartOfCombatMinionsForPlayer)(attacker, opponentBoard, opponentEntity, playerBoard, playerEntity, opponentBoardBefore, playerBoardBefore, gameState);
169
- }
170
- else if (attackerForStart === 1 && opponentAttackers.length === 0) {
171
- shouldUpdateNextPlayer = true;
172
- }
173
- if (shouldUpdateNextPlayer) {
174
- attackerForStart = (attackerForStart + 1) % 2;
175
- }
176
- }
177
- return currentAttacker;
178
- };
179
- const handleStartOfCombatQuestRewards = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
180
- if (Math.random() < 0.5) {
181
- currentAttacker = handleStartOfCombatQuestRewardsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
182
- currentAttacker = handleStartOfCombatQuestRewardsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
183
- }
184
- else {
185
- currentAttacker = handleStartOfCombatQuestRewardsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
186
- currentAttacker = handleStartOfCombatQuestRewardsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
187
- }
188
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
189
- return currentAttacker;
190
- };
191
- const handleStartOfCombatSpells = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
192
- if (Math.random() < 0.5) {
193
- currentAttacker = handleStartOfCombatSpellsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
194
- currentAttacker = handleStartOfCombatSpellsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
195
- }
196
- else {
197
- currentAttacker = handleStartOfCombatSpellsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
198
- currentAttacker = handleStartOfCombatSpellsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
199
- }
200
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
201
- return currentAttacker;
202
- };
203
- const handleStartOfCombatTrinkets = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
204
- if (Math.random() < 0.5) {
205
- currentAttacker = handleStartOfCombatTrinketsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
206
- currentAttacker = handleStartOfCombatTrinketsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
207
- }
208
- else {
209
- currentAttacker = handleStartOfCombatTrinketsForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState, false);
210
- currentAttacker = handleStartOfCombatTrinketsForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, true);
211
- }
212
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
213
- return currentAttacker;
214
- };
215
- const handleStartOfCombatAnomalies = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
216
- currentAttacker = handleStartOfCombatAnomaliesForPlayer(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState);
217
- currentAttacker = handleStartOfCombatAnomaliesForPlayer(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, gameState);
218
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
219
- return currentAttacker;
220
- };
221
- const handleStartOfCombatQuestRewardsForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, playerIsFriendly) => {
222
- if (playerEntity.startOfCombatDone) {
223
- return currentAttacker;
224
- }
225
- for (const reward of playerEntity.questRewards) {
226
- switch (reward) {
227
- case "BG24_Reward_111":
228
- if (!!playerBoard.length && playerBoard.length < 7) {
229
- const highestHealthMinion = [...playerBoard].sort((a, b) => b.health - a.health)[0];
230
- const copy = {
231
- ...highestHealthMinion,
232
- lastAffectedByEntity: null,
233
- };
234
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, highestHealthMinion.friendly, true, false, false, copy);
235
- const indexFromRight = playerBoard.length - (playerBoard.indexOf(highestHealthMinion) + 1);
236
- (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, highestHealthMinion, indexFromRight, opponentBoard, opponentEntity, gameState);
237
- gameState.spectator.registerPowerTarget(playerEntity, copy, playerBoard, null, null);
238
- currentAttacker =
239
- playerBoard.length > opponentBoard.length
240
- ? playerIsFriendly
241
- ? 0
242
- : 1
243
- : opponentBoard.length > playerBoard.length
244
- ? playerIsFriendly
245
- ? 1
246
- : 0
247
- : Math.round(Math.random());
248
- }
249
- break;
250
- case "BG24_Reward_312":
251
- playerBoard.forEach((entity) => {
252
- (0, stats_1.modifyStats)(entity, 15, 15, playerBoard, playerEntity, gameState);
253
- gameState.spectator.registerPowerTarget(playerEntity, entity, playerBoard, null, null);
254
- });
255
- break;
256
- case "BG24_Reward_109":
257
- if (playerBoard.length > 0) {
258
- (0, golden_1.makeMinionGolden)(playerBoard[0], playerEntity, playerBoard, playerEntity, opponentEntity, gameState);
259
- }
260
- if (playerBoard.length > 1) {
261
- (0, golden_1.makeMinionGolden)(playerBoard[playerBoard.length - 1], playerEntity, playerBoard, playerEntity, opponentEntity, gameState);
262
- }
263
- break;
264
- }
265
- }
266
- return currentAttacker;
267
- };
268
- const handleStartOfCombatSpellsForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, playerIsFriendly) => {
269
- var _a;
270
- if (playerEntity.startOfCombatDone) {
271
- return currentAttacker;
272
- }
273
- for (const secret of (_a = playerEntity.secrets) !== null && _a !== void 0 ? _a : []) {
274
- switch (secret.cardId) {
275
- case "BG28_573":
276
- if (!!opponentBoard.length) {
277
- const target = (0, utils_1.pickRandom)(opponentBoard);
278
- target.health = 1;
279
- target.maxHealth = 1;
280
- gameState.spectator.registerPowerTarget(playerEntity, target, opponentBoard, null, null);
281
- }
282
- break;
283
- case "BG28_603":
284
- secret.scriptDataNum1 = 1;
285
- break;
286
- case "BG28_519":
287
- (0, utils_2.addStatsToBoard)(secret, playerBoard, playerEntity, 2, 1, gameState);
288
- break;
289
- case "BG28_641":
290
- if (playerBoard.length < 7) {
291
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)("BG28_641t", 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, true, false, false);
292
- newMinions[0].attackImmediately = true;
293
- (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, null, 0, opponentBoard, opponentEntity, gameState);
294
- }
295
- break;
296
- }
297
- }
298
- return currentAttacker;
299
- };
300
- const handleStartOfCombatTrinketsForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState, playerIsFriendly) => {
301
- var _a, _b;
302
- if (playerEntity.startOfCombatDone) {
303
- return currentAttacker;
304
- }
305
- for (const trinket of playerEntity.trinkets) {
306
- switch (trinket.cardId) {
307
- case "BG30_MagicItem_902":
308
- if (playerBoard.length > 0) {
309
- (0, divine_shield_1.updateDivineShield)(playerBoard[0], playerBoard, playerEntity, opponentEntity, true, gameState);
310
- gameState.spectator.registerPowerTarget(playerEntity, playerBoard[0], playerBoard, null, null);
311
- if (playerBoard.length > 1) {
312
- (0, divine_shield_1.updateDivineShield)(playerBoard[playerBoard.length - 1], playerBoard, playerEntity, opponentEntity, true, gameState);
313
- gameState.spectator.registerPowerTarget(playerEntity, playerBoard[playerBoard.length - 1], playerBoard, null, null);
314
- }
315
- }
316
- break;
317
- case "BG30_MagicItem_962":
318
- if (playerBoard.length > 0) {
319
- const minionsByAttack = [...playerBoard].sort((a, b) => a.attack - b.attack);
320
- const firstTarget = minionsByAttack[0];
321
- (0, stats_1.setEntityStats)(firstTarget, 2 * firstTarget.maxAttack, 2 * firstTarget.maxHealth, playerBoard, playerEntity, gameState);
322
- gameState.spectator.registerPowerTarget(trinket, firstTarget, playerBoard, null, null);
323
- if (playerBoard.length > 1) {
324
- const secondTarget = minionsByAttack[1];
325
- (0, stats_1.setEntityStats)(secondTarget, 2 * secondTarget.maxAttack, 2 * secondTarget.maxHealth, playerBoard, playerEntity, gameState);
326
- gameState.spectator.registerPowerTarget(trinket, secondTarget, playerBoard, null, null);
327
- }
328
- }
329
- break;
330
- case "BG30_MagicItem_970":
331
- case "BG30_MagicItem_970t":
332
- const medallionBuff = trinket.cardId === "BG30_MagicItem_970" ? 2 : 6;
333
- (0, utils_2.addStatsToBoard)(trinket, playerBoard, playerEntity, medallionBuff, medallionBuff, gameState);
334
- break;
335
- case "BG30_MagicItem_542":
336
- const highestAttack = Math.max(...playerBoard.map((entity) => entity.attack));
337
- playerBoard
338
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, playerEntity, reference_data_1.Race.DRAGON, gameState.allCards))
339
- .forEach((e) => {
340
- (0, stats_1.setEntityStats)(e, highestAttack, null, playerBoard, playerEntity, gameState);
341
- });
342
- break;
343
- case "BG30_MagicItem_952":
344
- const elementals = (0, utils_1.shuffleArray)(playerBoard.filter((e) => (0, utils_2.hasCorrectTribe)(e, playerEntity, reference_data_1.Race.ELEMENTAL, gameState.allCards)));
345
- const targets = elementals.slice(0, 2);
346
- targets.forEach((e) => {
347
- var _a;
348
- e.enchantments = (_a = e.enchantments) !== null && _a !== void 0 ? _a : [];
349
- e.enchantments.push({
350
- cardId: "BG30_MagicItem_952e",
351
- originEntityId: trinket.entityId,
352
- repeats: 1,
353
- timing: gameState.sharedState.currentEntityId++,
354
- });
355
- gameState.spectator.registerPowerTarget(playerEntity, e, playerBoard, null, null);
356
- });
357
- break;
358
- case "BG30_MagicItem_917":
359
- playerBoard
360
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, playerEntity, reference_data_1.Race.NAGA, gameState.allCards))
361
- .forEach((e) => {
362
- var _a;
363
- e.enchantments = (_a = e.enchantments) !== null && _a !== void 0 ? _a : [];
364
- e.enchantments.push({
365
- cardId: "BG30_MagicItem_917e",
366
- originEntityId: trinket.entityId,
367
- repeats: 1,
368
- timing: gameState.sharedState.currentEntityId++,
369
- });
370
- });
371
- break;
372
- case "BG30_MagicItem_411":
373
- playerBoard
374
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, playerEntity, reference_data_1.Race.QUILBOAR, gameState.allCards))
375
- .forEach((e) => {
376
- var _a;
377
- e.enchantments = (_a = e.enchantments) !== null && _a !== void 0 ? _a : [];
378
- e.enchantments.push({
379
- cardId: "BG30_MagicItem_411e",
380
- originEntityId: trinket.entityId,
381
- repeats: 1,
382
- timing: gameState.sharedState.currentEntityId++,
383
- });
384
- });
385
- break;
386
- case "BG30_MagicItem_303":
387
- if (playerBoard.length < 7) {
388
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)("BG_TTN_401", 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, true);
389
- (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, playerEntity, 0, opponentBoard, opponentEntity, gameState);
390
- }
391
- break;
392
- case "BG30_MagicItem_407":
393
- if (playerBoard.length < 7) {
394
- const target = (0, utils_1.pickRandom)(gameState.cardsData.pirateSpawns);
395
- (0, cards_in_hand_1.addCardsInHand)(playerEntity, playerBoard, [target], gameState);
396
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(target, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, false);
397
- const spawns = (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, playerEntity, 0, opponentBoard, opponentEntity, gameState);
398
- spawns.forEach((spawn) => (spawn.attackImmediately = true));
399
- }
400
- break;
401
- case "BG30_MagicItem_301":
402
- playerBoard
403
- .filter((e) => e.cardId === "BG25_008" ||
404
- e.cardId === "BG25_008_G")
405
- .forEach((knight) => {
406
- knight.taunt = true;
407
- knight.reborn = true;
408
- gameState.spectator.registerPowerTarget(playerEntity, knight, playerBoard, null, null);
409
- });
410
- break;
411
- case "BG30_MagicItem_822":
412
- case "BG30_MagicItem_822t2":
413
- break;
414
- case "BG30_MagicItem_989":
415
- case "BG30_MagicItem_989t":
416
- const artisanalUrnBuff = trinket.cardId === "BG30_MagicItem_989" ? 3 : 8;
417
- playerEntity.globalInfo.UndeadAttackBonus =
418
- ((_a = playerEntity.globalInfo.UndeadAttackBonus) !== null && _a !== void 0 ? _a : 0) + artisanalUrnBuff;
419
- break;
420
- case "BG30_MagicItem_310":
421
- if (trinket.scriptDataNum1 != 99) {
422
- const buffBonus = playerEntity.trinkets.filter((t) => t.cardId === "BG30_MagicItem_310").length;
423
- playerBoard
424
- .filter((e) => e.cardId === "BG25_354" ||
425
- e.cardId === "BG25_354_G")
426
- .forEach((e) => {
427
- (0, stats_1.modifyStats)(e, 0, buffBonus * e.health, playerBoard, playerEntity, gameState);
428
- gameState.spectator.registerPowerTarget(trinket, e, playerBoard, null, null);
429
- });
430
- playerEntity.trinkets.forEach((t) => (t.scriptDataNum1 = 99));
431
- }
432
- break;
433
- case "BG30_MagicItem_441":
434
- const highestHealthMinionInHand = (_b = playerEntity.hand) === null || _b === void 0 ? void 0 : _b.sort((a, b) => b.health - a.health)[0];
435
- if (highestHealthMinionInHand && playerBoard.length > 0) {
436
- (0, stats_1.modifyStats)(playerBoard[0], highestHealthMinionInHand.attack, highestHealthMinionInHand.health, playerBoard, playerEntity, gameState);
437
- }
438
- break;
439
- case "BG30_MagicItem_995":
440
- if (playerBoard.length > 0) {
441
- playerBoard.forEach((entity) => {
442
- const highest = Math.max(entity.attack, entity.health);
443
- (0, stats_1.setEntityStats)(entity, highest, highest, playerBoard, playerEntity, gameState);
444
- gameState.spectator.registerPowerTarget(trinket, entity, playerBoard, null, null);
445
- });
446
- }
447
- break;
448
- case "BG30_MagicItem_403":
449
- if (playerBoard.length > 0) {
450
- playerBoard
451
- .filter((e) => {
452
- const tribes = (0, utils_2.getEffectiveTribesForEntity)(e, playerEntity, gameState.allCards);
453
- return tribes.length === 0;
454
- })
455
- .forEach((entity) => {
456
- (0, stats_1.setEntityStats)(entity, 3 * entity.attack, 3 * entity.health, playerBoard, playerEntity, gameState);
457
- gameState.spectator.registerPowerTarget(trinket, entity, playerBoard, null, null);
458
- });
459
- }
460
- break;
461
- case "BG30_MagicItem_972":
462
- if (playerBoard.length > 0) {
463
- let minionsToCopy = 1;
464
- for (let i = 0; i < Math.min(playerBoard.length, 7); i++) {
465
- if (minionsToCopy <= 0) {
466
- break;
467
- }
468
- const entityToCoy = playerBoard[i];
469
- const copy = (0, utils_2.copyEntity)(entityToCoy);
470
- (0, add_minion_to_board_1.removeAurasFromSelf)(copy, playerBoard, playerEntity, gameState);
471
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, false, false, false, copy);
472
- const spawns = (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, playerEntity, playerBoard.length - i - 1, opponentBoard, opponentEntity, gameState);
473
- i += spawns.length;
474
- minionsToCopy--;
475
- }
476
- }
477
- currentAttacker =
478
- playerBoard.length > opponentBoard.length
479
- ? playerIsFriendly
480
- ? 0
481
- : 1
482
- : opponentBoard.length > playerBoard.length
483
- ? playerIsFriendly
484
- ? 1
485
- : 0
486
- : Math.round(Math.random());
487
- break;
488
- case "BG30_MagicItem_821":
489
- case "BG30_MagicItem_821t2":
490
- if (playerBoard.length < 7) {
491
- const spawnId = trinket.cardId === "BG30_MagicItem_821"
492
- ? "TB_BaconShop_HP_105t"
493
- : "TB_BaconUps_307";
494
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(spawnId, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, false);
495
- const spawns = (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, playerEntity, 0, opponentBoard, opponentEntity, gameState);
496
- currentAttacker =
497
- playerBoard.length > opponentBoard.length
498
- ? playerIsFriendly
499
- ? 0
500
- : 1
501
- : opponentBoard.length > playerBoard.length
502
- ? playerIsFriendly
503
- ? 1
504
- : 0
505
- : Math.round(Math.random());
506
- }
507
- break;
508
- }
509
- }
510
- return currentAttacker;
511
- };
512
- const handleStartOfCombatAnomaliesForPlayer = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
513
- var _a;
514
- if (!((_a = gameState.anomalies) === null || _a === void 0 ? void 0 : _a.length) || playerEntity.startOfCombatDone) {
515
- return currentAttacker;
516
- }
517
- for (const anomaly of gameState.anomalies) {
518
- switch (anomaly) {
519
- case "BG27_Anomaly_726":
520
- if (playerBoard.length > 0) {
521
- const dsTarget = playerBoard[0];
522
- (0, divine_shield_1.updateDivineShield)(dsTarget, playerBoard, playerEntity, opponentEntity, true, gameState);
523
- const rebornTarget = playerBoard[playerBoard.length - 1];
524
- rebornTarget.reborn = true;
525
- }
526
- break;
527
- case "BG27_Anomaly_560":
528
- if (!!playerBoard.length && playerBoard.length < 7) {
529
- const highestHealthMinion = [...playerBoard].sort((a, b) => b.health - a.health)[0];
530
- const copy = {
531
- ...highestHealthMinion,
532
- lastAffectedByEntity: null,
533
- };
534
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, highestHealthMinion.friendly, true, false, false, copy);
535
- const indexFromRight = playerBoard.length - (playerBoard.indexOf(highestHealthMinion) + 1);
536
- (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, highestHealthMinion, indexFromRight, opponentBoard, opponentEntity, gameState);
537
- gameState.spectator.registerPowerTarget(playerEntity, copy, playerBoard, null, null);
538
- }
539
- return playerBoard.length > opponentBoard.length
540
- ? 0
541
- : opponentBoard.length > playerBoard.length
542
- ? 1
543
- : Math.round(Math.random());
544
- }
545
- }
546
- return currentAttacker;
547
- };
548
- const handleStartOfCombatHeroPowers = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, gameState) => {
549
- if (Math.random() < 0.5) {
550
- currentAttacker = handlePlayerStartOfCombatHeroPowers(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
551
- currentAttacker = handlePlayerStartOfCombatHeroPowers(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
552
- }
553
- else {
554
- currentAttacker = handlePlayerStartOfCombatHeroPowers(opponentEntity, opponentBoard, playerEntity, playerBoard, currentAttacker, false, gameState);
555
- currentAttacker = handlePlayerStartOfCombatHeroPowers(playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, true, gameState);
556
- }
557
- (0, summon_when_space_1.handleSummonsWhenSpace)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
558
- return currentAttacker;
559
- };
560
- exports.handleStartOfCombatHeroPowers = handleStartOfCombatHeroPowers;
561
- const handlePlayerIllidanHeroPowers = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, friendly, gameState) => {
562
- if (playerEntity.hpLeft <= 0) {
563
- return currentAttacker;
564
- }
565
- const playerHeroPowerId = playerEntity.heroPowerId || (0, exports.getHeroPowerForHero)(playerEntity.cardId);
566
- if (playerHeroPowerId === "TB_BaconShop_HP_069" && playerBoard.length > 0) {
567
- handleIllidanForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, currentAttacker);
568
- currentAttacker = friendly ? 1 : 0;
569
- }
570
- return currentAttacker;
571
- };
572
- const handleIllidanForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, currentAttacker) => {
573
- if (playerEntity.startOfCombatDone) {
574
- return;
575
- }
576
- const minionsAtStart = playerBoard.length;
577
- const firstAttacker = playerBoard[0];
578
- const secondAttacker = minionsAtStart > 1 ? playerBoard[playerBoard.length - 1] : null;
579
- (0, stats_1.modifyStats)(firstAttacker, 2, 1, playerBoard, playerEntity, gameState);
580
- gameState.spectator.registerPowerTarget(firstAttacker, firstAttacker, playerBoard, playerEntity, opponentEntity);
581
- if (!!secondAttacker && !secondAttacker.definitelyDead && secondAttacker.health > 0) {
582
- (0, stats_1.modifyStats)(secondAttacker, 2, 1, playerBoard, playerEntity, gameState);
583
- gameState.spectator.registerPowerTarget(secondAttacker, secondAttacker, playerBoard, playerEntity, opponentEntity);
584
- }
585
- firstAttacker.attackImmediately = true;
586
- (0, attack_1.simulateAttack)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
587
- firstAttacker.hasAttacked = 0;
588
- if (!!secondAttacker && !secondAttacker.definitelyDead && secondAttacker.health > 0) {
589
- secondAttacker.attackImmediately = true;
590
- (0, attack_1.simulateAttack)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
591
- secondAttacker.hasAttacked = 0;
592
- }
593
- };
594
- const handleAlakirForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
595
- const firstEntity = playerBoard[0];
596
- firstEntity.windfury = true;
597
- if (!firstEntity.divineShield) {
598
- (0, divine_shield_1.updateDivineShield)(firstEntity, playerBoard, playerEntity, opponentEntity, true, gameState);
599
- }
600
- firstEntity.taunt = true;
601
- gameState.spectator.registerPowerTarget(firstEntity, firstEntity, playerBoard, playerEntity, opponentEntity);
602
- };
603
- const handleTamsinForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
604
- const chosenEntity = (0, utils_1.pickRandomLowestHealth)(playerBoard);
605
- if (!chosenEntity) {
606
- console.warn('could not pick any entity for tamsin');
607
- return;
608
- }
609
- gameState.spectator.registerPowerTarget(playerEntity, chosenEntity, playerBoard, null, null);
610
- const newBoard = playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);
611
- chosenEntity.definitelyDead = true;
612
- newBoard.forEach((e) => {
613
- (0, stats_1.modifyStats)(e, chosenEntity.attack, chosenEntity.health, newBoard, playerEntity, gameState);
614
- gameState.spectator.registerPowerTarget(chosenEntity, e, newBoard, playerEntity, opponentEntity);
615
- });
616
- };
617
- const applyGloriousGloop = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
618
- var _a;
619
- if (!(playerBoard === null || playerBoard === void 0 ? void 0 : playerBoard.length)) {
620
- return;
621
- }
622
- const target = playerBoard.find((m) => { var _a; return (_a = m.enchantments) === null || _a === void 0 ? void 0 : _a.some((e) => e.cardId === "BGDUO_HERO_101pe2"); });
623
- if (!target) {
624
- return;
625
- }
626
- const teammateState = (0, utils_2.getTeammateInitialState)(gameState.gameState, playerEntity);
627
- if (!((_a = teammateState === null || teammateState === void 0 ? void 0 : teammateState.board) === null || _a === void 0 ? void 0 : _a.length)) {
628
- return;
629
- }
630
- const highestTier = Math.max(...teammateState.board.map((entity) => gameState.allCards.getCard(entity.cardId).techLevel));
631
- const candidates = teammateState.board.filter((entity) => gameState.allCards.getCard(entity.cardId).techLevel === highestTier);
632
- if (!candidates.length) {
633
- return;
634
- }
635
- const highestTierMinion = (0, utils_1.pickRandom)(candidates);
636
- const clone = (0, utils_2.addImpliedMechanics)({
637
- ...highestTierMinion,
638
- lastAffectedByEntity: null,
639
- definitelyDead: false,
640
- attackImmediately: false,
641
- }, gameState.cardsData);
642
- gameState.spectator.registerPowerTarget(playerEntity, target, playerBoard, playerEntity, opponentEntity);
643
- const index = playerBoard.indexOf(target);
644
- playerBoard.splice(index, 1, clone);
645
- };
646
- const handleEmbraceYourRageForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
647
- const createdCardId = playerEntity.heroPowerInfo;
648
- if (!(createdCardId === null || createdCardId === void 0 ? void 0 : createdCardId.length)) {
649
- return;
650
- }
651
- const spawns = (0, deathrattle_spawns_1.spawnEntities)(createdCardId, 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, playerEntity.friendly, true, false, false);
652
- const indexFromRight = 0;
653
- (0, spawns_1.performEntitySpawns)(spawns, playerBoard, playerEntity, playerEntity, indexFromRight, opponentBoard, opponentEntity, gameState);
654
- gameState.spectator.registerPowerTarget(playerEntity, spawns[0], playerBoard, playerEntity, opponentEntity);
655
- (0, cards_in_hand_1.addCardsInHand)(playerEntity, playerBoard, spawns, gameState);
656
- gameState.spectator.registerPowerTarget(playerEntity, spawns[0], playerBoard, playerEntity, opponentEntity);
657
- };
658
- const handleRebornRitesForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
659
- const targetEntityId = playerEntity.heroPowerInfo;
660
- const target = playerBoard.find((entity) => entity.entityId === targetEntityId);
661
- if (!target) {
662
- return;
663
- }
664
- target.reborn = true;
665
- gameState.spectator.registerPowerTarget(playerEntity, target, playerBoard, playerEntity, opponentEntity);
666
- };
667
- const handleTeronForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
668
- const minionThatWillDie = playerBoard
669
- .filter((m) => m.enchantments.some((e) => e.cardId === "BG25_HERO_103pe"))
670
- .sort((a, b) => b.enchantments.find((e) => e.cardId === "BG25_HERO_103pe")
671
- .originEntityId -
672
- a.enchantments.find((e) => e.cardId === "BG25_HERO_103pe")
673
- .originEntityId || b.entityId - a.entityId)[0];
674
- if (minionThatWillDie) {
675
- const rapidReanimationIndexFromLeft = playerBoard.indexOf(minionThatWillDie);
676
- playerEntity.rapidReanimationIndexFromRight = playerBoard.length - 1 - rapidReanimationIndexFromLeft;
677
- const minionToCopy = (0, utils_2.copyEntity)(minionThatWillDie);
678
- (0, add_minion_to_board_1.removeAurasFromSelf)(minionToCopy, playerBoard, playerEntity, gameState);
679
- playerEntity.rapidReanimationMinion = minionToCopy;
680
- minionThatWillDie.definitelyDead = true;
681
- gameState.spectator.registerPowerTarget(playerEntity, minionThatWillDie, playerBoard, playerEntity, opponentEntity);
682
- return true;
683
- }
684
- return false;
685
- };
686
- const handleWaxWarbandForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
687
- if (playerBoard.length > 0) {
688
- const boardWithTribes = playerBoard.filter((e) => !!(0, utils_2.getEffectiveTribesForEntity)(e, playerEntity, gameState.allCards).length);
689
- const boardWithoutAll = boardWithTribes.filter((e) => { var _a; return !((_a = gameState.allCards.getCard(e.cardId).races) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race[reference_data_1.Race.ALL])); });
690
- const selectedMinions = selectMinions(boardWithoutAll, reference_data_1.ALL_BG_RACES, gameState.allCards);
691
- const allMinions = [
692
- ...selectedMinions,
693
- ...boardWithTribes.filter((e) => { var _a; return (_a = gameState.allCards.getCard(e.cardId).races) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race[reference_data_1.Race.ALL]); }),
694
- ];
695
- allMinions.forEach((e) => {
696
- (0, stats_1.modifyStats)(e, gameState.cardsData.getTavernLevel(e.cardId), gameState.cardsData.getTavernLevel(e.cardId), playerBoard, playerEntity, gameState);
697
- gameState.spectator.registerPowerTarget(playerEntity, e, playerBoard, playerEntity, opponentEntity);
698
- });
699
- }
700
- };
701
- const selectMinions = (minions, tribes, allCards) => {
702
- var _a, _b;
703
- const minionsByTribe = {};
704
- for (const minion of minions) {
705
- for (const tribe of (_a = allCards.getCard(minion.cardId).races) !== null && _a !== void 0 ? _a : []) {
706
- if (!minionsByTribe[tribe]) {
707
- minionsByTribe[tribe] = [];
708
- }
709
- minionsByTribe[tribe].push(minion);
710
- }
711
- }
712
- for (const tribe of reference_data_1.ALL_BG_RACES) {
713
- minionsByTribe[tribe] = (0, utils_1.shuffleArray)((_b = minionsByTribe[reference_data_1.Race[tribe]]) !== null && _b !== void 0 ? _b : []);
714
- }
715
- const selectedMinions = [];
716
- for (const tribe of tribes) {
717
- if (minionsByTribe[tribe]) {
718
- minionsByTribe[tribe].sort((a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length);
719
- for (const minion of minionsByTribe[tribe]) {
720
- if (!selectedMinions.includes(minion)) {
721
- selectedMinions.push(minion);
722
- break;
723
- }
724
- }
725
- }
726
- }
727
- return selectedMinions;
728
- };
729
- const handlePlayerStartOfCombatHeroPowers = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, friendly, gameState) => {
730
- var _a, _b, _c, _d;
731
- if (playerEntity.startOfCombatDone || playerEntity.hpLeft <= 0) {
732
- return currentAttacker;
733
- }
734
- let shouldRecomputeCurrentAttacker = false;
735
- const playerHeroPowerId = playerEntity.heroPowerId || (0, exports.getHeroPowerForHero)(playerEntity.cardId);
736
- if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_000p_t1") {
737
- const target = opponentBoard[0];
738
- const damageDone = (0, attack_1.dealDamageToMinion)(target, opponentBoard, opponentEntity, null, (_a = playerEntity.heroPowerInfo2) !== null && _a !== void 0 ? _a : 0, playerBoard, playerEntity, gameState);
739
- playerEntity.deadEyeDamageDone = damageDone;
740
- }
741
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_000p_t4") {
742
- const target = opponentBoard[opponentBoard.length - 1];
743
- const damageDone = (0, attack_1.dealDamageToMinion)(target, opponentBoard, opponentEntity, null, (_b = playerEntity.heroPowerInfo2) !== null && _b !== void 0 ? _b : 0, playerBoard, playerEntity, gameState);
744
- playerEntity.deadEyeDamageDone = damageDone;
745
- }
746
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_000p_t2") {
747
- const smallestHealthMinion = [...opponentBoard].sort((a, b) => a.health - b.health)[0];
748
- const target = (0, utils_1.pickRandom)(opponentBoard.filter((e) => e.health === smallestHealthMinion.health));
749
- const damageDone = (0, attack_1.dealDamageToMinion)(target, opponentBoard, opponentEntity, null, (_c = playerEntity.heroPowerInfo2) !== null && _c !== void 0 ? _c : 0, playerBoard, playerEntity, gameState);
750
- playerEntity.deadEyeDamageDone = damageDone;
751
- }
752
- else if (playerEntity.heroPowerUsed && playerHeroPowerId === "BG22_HERO_000p_t3") {
753
- const highestHealthMinion = [...opponentBoard].sort((a, b) => b.health - a.health)[0];
754
- const target = (0, utils_1.pickRandom)(opponentBoard.filter((e) => e.health === highestHealthMinion.health));
755
- const damageDone = (0, attack_1.dealDamageToMinion)(target, opponentBoard, opponentEntity, null, (_d = playerEntity.heroPowerInfo2) !== null && _d !== void 0 ? _d : 0, playerBoard, playerEntity, gameState);
756
- playerEntity.deadEyeDamageDone = damageDone;
757
- }
758
- (0, attack_1.processMinionDeath)(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);
759
- if (shouldRecomputeCurrentAttacker) {
760
- const previousCurrentAttacker = currentAttacker;
761
- currentAttacker =
762
- playerBoard.length > opponentBoard.length
763
- ? friendly
764
- ? 0
765
- : 1
766
- : opponentBoard.length > playerBoard.length
767
- ? friendly
768
- ? 1
769
- : 0
770
- : currentAttacker;
771
- }
772
- return currentAttacker;
773
- };
774
- const getHeroPowerForHero = (heroCardId) => {
775
- switch (heroCardId) {
776
- case "TB_BaconShop_HERO_08":
777
- return "TB_BaconShop_HP_069";
778
- case "TB_BaconShop_HERO_22":
779
- return "TB_BaconShop_HP_024";
780
- case "BG25_HERO_100":
781
- return "TB_BaconShop_HP_018";
782
- case "TB_BaconShop_HERO_52":
783
- return "TB_BaconShop_HP_061";
784
- case "BG25_HERO_103":
785
- return "BG25_HERO_103p";
786
- }
787
- return null;
788
- };
789
- exports.getHeroPowerForHero = getHeroPowerForHero;
790
- const performStartOfCombatMinionsForPlayer = (attacker, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, attackingBoardBefore, defendingBoardBefore, gameState) => {
791
- var _a, _b, _c, _d;
792
- if (attackingBoardHero.startOfCombatDone) {
793
- return false;
794
- }
795
- let hasProcessed = true;
796
- if (attacker.cardId === "BGS_019") {
797
- const damage = attackingBoardBefore.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards)).length;
798
- (0, attack_1.dealDamageToRandomEnemy)(defendingBoard, defendingBoardHero, attacker, damage, attackingBoard, attackingBoardHero, gameState);
799
- }
800
- else if (attacker.cardId === "TB_BaconUps_102") {
801
- const damage = attackingBoardBefore.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards)).length;
802
- (0, attack_1.dealDamageToRandomEnemy)(defendingBoard, defendingBoardHero, attacker, damage, attackingBoard, attackingBoardHero, gameState);
803
- (0, attack_1.dealDamageToRandomEnemy)(defendingBoard, defendingBoardHero, attacker, damage, attackingBoard, attackingBoardHero, gameState);
804
- }
805
- else if (attacker.cardId === "BG21_014" ||
806
- attacker.cardId === "BG21_014_G") {
807
- const stats = attacker.cardId === "BG21_014_G" ? 6 : 3;
808
- const targets = attackingBoard
809
- .filter((e) => e.entityId !== attacker.entityId)
810
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards));
811
- for (const entity of targets) {
812
- (0, stats_1.modifyStats)(entity, stats, stats, attackingBoard, attackingBoardHero, gameState);
813
- gameState.spectator.registerPowerTarget(attacker, entity, attackingBoard, attackingBoardHero, defendingBoardHero);
814
- }
815
- }
816
- else if (attacker.cardId === "BG26_354" ||
817
- attacker.cardId === "BG26_354_G") {
818
- const multiplier = attacker.cardId === "BG26_354_G" ? 2 : 1;
819
- (0, stats_1.modifyStats)(attacker, multiplier * ((_a = attackingBoardHero.globalInfo) === null || _a === void 0 ? void 0 : _a.ChoralAttackBuff), multiplier * ((_b = attackingBoardHero.globalInfo) === null || _b === void 0 ? void 0 : _b.ChoralHealthBuff), attackingBoard, attackingBoardHero, gameState);
820
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
821
- }
822
- else if (attacker.cardId === "BG24_500" ||
823
- attacker.cardId === "BG24_500_G") {
824
- const otherDragons = attackingBoard
825
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards))
826
- .filter((e) => e.entityId !== attacker.entityId);
827
- const loops = attacker.cardId === "BG24_500_G" ? 2 : 1;
828
- const dragonsToConsider = otherDragons;
829
- for (let i = 0; i < loops; i++) {
830
- const otherDragon = (_c = (0, utils_1.pickRandom)(dragonsToConsider.filter((e) => !e.divineShield))) !== null && _c !== void 0 ? _c : (0, utils_1.pickRandom)(dragonsToConsider);
831
- if (otherDragon) {
832
- if (!otherDragon.divineShield) {
833
- (0, divine_shield_1.updateDivineShield)(otherDragon, attackingBoard, attackingBoardHero, defendingBoardHero, true, gameState);
834
- }
835
- (0, stats_1.modifyStats)(otherDragon, 5, 5, attackingBoard, attackingBoardHero, gameState);
836
- gameState.spectator.registerPowerTarget(attacker, otherDragon, attackingBoard, attackingBoardHero, defendingBoardHero);
837
- dragonsToConsider.splice(dragonsToConsider.indexOf(otherDragon), 1);
838
- }
839
- }
840
- }
841
- else if (attacker.cardId === "BG26_356" ||
842
- attacker.cardId === "BG26_356_G") {
843
- const buff = attacker.cardId === "BG26_356_G" ? 16 : 8;
844
- const otherDragons = attackingBoard
845
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards))
846
- .filter((e) => e.entityId !== attacker.entityId);
847
- otherDragons.forEach((otherDragon) => {
848
- (0, stats_1.modifyStats)(otherDragon, 0, buff, attackingBoard, attackingBoardHero, gameState);
849
- gameState.spectator.registerPowerTarget(attacker, otherDragon, attackingBoard, attackingBoardHero, defendingBoardHero);
850
- });
851
- }
852
- else if (attacker.cardId === "BG25_023" ||
853
- attacker.cardId === "BG25_023_G") {
854
- const numberOfTargets = attacker.cardId === "BG25_023_G" ? 2 : 1;
855
- for (let i = 0; i < numberOfTargets; i++) {
856
- const undeadsWithoutReborn = attackingBoard
857
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.UNDEAD, gameState.allCards))
858
- .filter((e) => !e.reborn);
859
- const chosenUndead = (0, utils_1.pickRandom)(undeadsWithoutReborn);
860
- if (chosenUndead) {
861
- chosenUndead.reborn = true;
862
- gameState.spectator.registerPowerTarget(attacker, chosenUndead, attackingBoard, attackingBoardHero, defendingBoardHero);
863
- }
864
- }
865
- }
866
- else if (attacker.cardId === "BG22_HERO_000_Buddy" ||
867
- attacker.cardId === "BG22_HERO_000_Buddy_G") {
868
- const neighbours = (0, attack_1.getNeighbours)(attackingBoard, attacker);
869
- const multiplier = attacker.cardId === "BG22_HERO_000_Buddy_G" ? 2 : 1;
870
- neighbours.forEach((entity) => {
871
- var _a, _b;
872
- (0, stats_1.modifyStats)(entity, multiplier * ((_a = attackingBoardHero.deadEyeDamageDone) !== null && _a !== void 0 ? _a : 0), multiplier * ((_b = attackingBoardHero.deadEyeDamageDone) !== null && _b !== void 0 ? _b : 0), attackingBoard, attackingBoardHero, gameState);
873
- gameState.spectator.registerPowerTarget(attacker, entity, attackingBoard, attackingBoardHero, defendingBoardHero);
874
- });
875
- }
876
- else if (attacker.cardId === "BG23_012" ||
877
- attacker.cardId === "BG23_012_G") {
878
- const multiplier = attacker.cardId === "BG23_012_G" ? 2 : 1;
879
- (0, stats_1.modifyStats)(attacker, multiplier * attacker.attack, multiplier * attacker.health, attackingBoard, attackingBoardHero, gameState);
880
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
881
- }
882
- else if (attacker.cardId === "BG24_704" ||
883
- attacker.cardId === "BG24_704_G") {
884
- if (defendingBoard.length > 0) {
885
- const validTargets = defendingBoard.filter((e) => gameState.cardsData.getTavernLevel(e.cardId) >= 5);
886
- const numberOfPicks = attacker.cardId === "BG24_704_G" ? 2 : 1;
887
- for (let i = 0; i < numberOfPicks; i++) {
888
- const target = (0, utils_1.pickRandom)(validTargets);
889
- if (!!target) {
890
- castImpure(target, attacker, attackingBoard, gameState.spectator);
891
- const targetIndex = validTargets.findIndex((e) => e.entityId === target.entityId);
892
- validTargets.splice(targetIndex, 1);
893
- }
894
- }
895
- }
896
- }
897
- else if (attacker.cardId === "BG22_402" || attacker.cardId === "BG22_402_G") {
898
- const multiplier = attacker.cardId === "BG22_402_G" ? 2 : 1;
899
- const allRaces = attackingBoardBefore
900
- .map((entity) => entity.cardId)
901
- .flatMap((cardId) => gameState.allCards.getCard(cardId).races)
902
- .filter((race) => !!race && race !== reference_data_1.Race[reference_data_1.Race.BLANK]);
903
- const totalRaces = [...new Set(allRaces.filter((race) => race !== reference_data_1.Race[reference_data_1.Race.ALL]))].length +
904
- allRaces.filter((race) => race === reference_data_1.Race[reference_data_1.Race.ALL]).length;
905
- for (let i = 0; i < multiplier; i++) {
906
- for (let j = 0; j < totalRaces; j++) {
907
- const buffType = getRandomMantidQueenBuffType(attacker);
908
- switch (buffType) {
909
- case 'stats':
910
- (0, stats_1.modifyStats)(attacker, 5, 5, attackingBoard, attackingBoardHero, gameState);
911
- break;
912
- case 'reborn':
913
- attacker.reborn = true;
914
- break;
915
- case 'taunt':
916
- attacker.taunt = true;
917
- break;
918
- case 'windfury':
919
- attacker.windfury = true;
920
- break;
921
- }
922
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
923
- }
924
- }
925
- }
926
- else if (attacker.cardId === "BG27_503" ||
927
- attacker.cardId === "BG27_503_G") {
928
- const numberOfCopies = attacker.cardId === "BG27_503_G" ? 2 : 1;
929
- for (let i = 0; i < numberOfCopies; i++) {
930
- if (!!attackingBoard.length && attackingBoard.length < 7) {
931
- const copy = {
932
- ...attacker,
933
- lastAffectedByEntity: null,
934
- };
935
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, attacker.friendly, true, false, false, copy);
936
- const indexFromRight = attackingBoard.length - (attackingBoard.indexOf(attacker) + 1);
937
- (0, spawns_1.performEntitySpawns)(newMinions, attackingBoard, attackingBoardHero, attacker, indexFromRight, defendingBoard, defendingBoardHero, gameState);
938
- gameState.spectator.registerPowerTarget(attacker, copy, attackingBoard, attackingBoardHero, defendingBoardHero);
939
- }
940
- }
941
- }
942
- else if (attacker.cardId === "BG27_556" ||
943
- attacker.cardId === "BG27_556_G") {
944
- const potentialTargets = attackingBoardHero.hand
945
- .filter((e) => !!e.cardId)
946
- .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]; })
947
- .filter((e) => !e.locked);
948
- if (potentialTargets.length > 0) {
949
- const target = (0, utils_1.pickRandom)(potentialTargets);
950
- const diremuckBuff = attacker.cardId === "BG27_556_G" ? 4 : 2;
951
- (0, stats_1.modifyStats)(target, diremuckBuff, diremuckBuff, attackingBoard, attackingBoardHero, gameState);
952
- gameState.spectator.registerPowerTarget(attacker, target, attackingBoard, attackingBoardHero, defendingBoardHero);
953
- if (attackingBoard.length < 7) {
954
- target.locked = true;
955
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(target.cardId, 1, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, attacker.friendly, false, false, true, { ...target });
956
- for (const s of newMinions) {
957
- s.onCanceledSummon = () => (target.locked = false);
958
- }
959
- (0, spawns_1.performEntitySpawns)(newMinions, attackingBoard, attackingBoardHero, attacker, attackingBoard.length - (attackingBoard.indexOf(attacker) + 1), defendingBoard, defendingBoardHero, gameState);
960
- }
961
- }
962
- }
963
- else if (attacker.cardId === "BG27_079" ||
964
- attacker.cardId === "BG27_079_G") {
965
- const multiplier = attacker.cardId === "BG27_079_G" ? 2 : 1;
966
- for (const entity of attackingBoard) {
967
- for (let i = 0; i < multiplier; i++) {
968
- gameState.spectator.registerPowerTarget(attacker, entity, attackingBoard, attackingBoardHero, defendingBoardHero);
969
- (0, deathrattle_orchestration_1.handleDeathrattles)({
970
- gameState: gameState,
971
- playerDeadEntities: attackingBoardHero.friendly ? [entity] : [],
972
- playerDeadEntityIndexesFromRight: attackingBoardHero.friendly
973
- ? [attackingBoard.length - 1 - attackingBoard.indexOf(entity)]
974
- : [],
975
- opponentDeadEntities: attackingBoardHero.friendly ? [] : [entity],
976
- opponentDeadEntityIndexesFromRight: attackingBoardHero.friendly
977
- ? []
978
- : [attackingBoard.length - 1 - attackingBoard.indexOf(entity)],
979
- });
980
- }
981
- }
982
- }
983
- else if (attacker.cardId === "BG28_904" ||
984
- attacker.cardId === "BG28_904_G") {
985
- const iterations = attacker.cardId === "BG28_904_G" ? 2 : 1;
986
- for (let i = 0; i < iterations; i++) {
987
- const targets = (0, attack_1.findNearestEnemies)(attackingBoard, attacker, attackingBoard.length - 1 - attackingBoard.indexOf(attacker), defendingBoard, 1, gameState.allCards);
988
- if (!targets.length) {
989
- break;
990
- }
991
- if (targets.length > 2) {
992
- console.error('Invalid number of targets', targets.length);
993
- }
994
- const target = (0, utils_1.pickRandom)(targets);
995
- while (attacker.health > 0 && target.health > 0 && !attacker.definitelyDead && !target.definitelyDead) {
996
- (0, attack_1.doFullAttack)(attacker, attackingBoard, attackingBoardHero, target, defendingBoard, defendingBoardHero, gameState);
997
- }
998
- }
999
- }
1000
- else if (attacker.cardId === "BG21_HERO_030_Buddy" ||
1001
- attacker.cardId === "BG21_HERO_030_Buddy_G") {
1002
- (0, deathrattle_effects_1.rememberDeathrattles)(attacker, attackingBoard.filter((e) => e.cardId !== "BG21_HERO_030_Buddy" &&
1003
- e.cardId !== "BG21_HERO_030_Buddy_G"), gameState.cardsData, gameState.allCards, gameState.sharedState);
1004
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
1005
- }
1006
- else if (attacker.cardId === "BG29_990" ||
1007
- attacker.cardId === "BG29_990_G") {
1008
- const loops = attacker.cardId === "BG29_990_G" ? 2 : 1;
1009
- for (let i = 0; i < loops; i++) {
1010
- const neighbours = (0, attack_1.getNeighbours)(attackingBoard, attacker);
1011
- for (const neighbour of neighbours) {
1012
- gameState.spectator.registerPowerTarget(attacker, neighbour, attackingBoard, attackingBoardHero, defendingBoardHero);
1013
- (0, attack_1.dealDamageToMinion)(neighbour, attackingBoard, attackingBoardHero, attacker, 1, defendingBoard, defendingBoardHero, gameState);
1014
- (0, stats_1.modifyStats)(neighbour, 4, 0, attackingBoard, attackingBoardHero, gameState);
1015
- }
1016
- }
1017
- }
1018
- else if (attacker.cardId === "BG29_814" ||
1019
- attacker.cardId === "BG29_814_G") {
1020
- const multiplier = attacker.cardId === "BG29_814_G" ? 2 : 1;
1021
- const tier = attackingBoardHero.tavernTier;
1022
- const stats = multiplier * tier;
1023
- (0, stats_1.modifyStats)(attacker, stats, stats, attackingBoard, attackingBoardHero, gameState);
1024
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
1025
- }
1026
- else if (attacker.cardId === "BG29_810" ||
1027
- attacker.cardId === "BG29_810_G") {
1028
- const loops = attacker.cardId === "BG29_810_G" ? 2 : 1;
1029
- const pickedTargets = [];
1030
- const dragons = attackingBoard.filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.DRAGON, gameState.allCards));
1031
- for (let i = 0; i < loops; i++) {
1032
- const target = dragons.filter((e) => !pickedTargets.includes(e))[0];
1033
- if (!!target) {
1034
- (0, stats_1.modifyStats)(target, 1, 2, attackingBoard, attackingBoardHero, gameState);
1035
- target.windfury = true;
1036
- gameState.spectator.registerPowerTarget(attacker, target, attackingBoard, attackingBoardHero, defendingBoardHero);
1037
- pickedTargets.push(target);
1038
- }
1039
- }
1040
- }
1041
- else if (attacker.cardId === "BG29_811" ||
1042
- attacker.cardId === "BG29_811_G") {
1043
- const loops = attacker.cardId === "BG29_811_G" ? 2 : 1;
1044
- for (let i = 0; i < loops; i++) {
1045
- const candidateBoard = attackingBoard
1046
- .filter((e) => !(0, utils_2.isGolden)(e.cardId, gameState.allCards))
1047
- .filter((e) => e.cardId !== "BG29_811" &&
1048
- e.cardId !== "BG29_811_G");
1049
- const randomBoard = (0, utils_1.shuffleArray)(candidateBoard);
1050
- const candidates = randomBoard.sort((a, b) => gameState.cardsData.getTavernLevel(a.cardId) - gameState.cardsData.getTavernLevel(b.cardId));
1051
- const target = candidates[0];
1052
- if (!!target) {
1053
- (0, golden_1.makeMinionGolden)(target, attacker, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);
1054
- }
1055
- }
1056
- }
1057
- else if (attacker.cardId === "BG29_872" ||
1058
- attacker.cardId === "BG29_872_G") {
1059
- const stats = attacker.cardId === "BG29_872_G" ? 20 : 10;
1060
- const target = (0, utils_2.getRandomMinionWithHighestHealth)(defendingBoard);
1061
- if (!!target) {
1062
- const previousAttack = target.attack;
1063
- const previousHealth = target.health;
1064
- target.attack = Math.max(0, target.attack - stats);
1065
- target.health = Math.max(0, target.health - stats);
1066
- target.maxHealth = Math.max(0, target.maxHealth - stats);
1067
- (0, stats_1.modifyStats)(attacker, previousAttack - target.attack, previousHealth - target.health, attackingBoard, attackingBoardHero, gameState);
1068
- gameState.spectator.registerPowerTarget(attacker, target, attackingBoard, attackingBoardHero, defendingBoardHero);
1069
- }
1070
- }
1071
- else if (attacker.cardId === "BG29_875" ||
1072
- attacker.cardId === "BG29_875_G") {
1073
- const targetEnchantment = attacker.cardId === "BG29_875_G"
1074
- ? "BG29_875_Ge"
1075
- : "BG29_875e";
1076
- attackingBoard
1077
- .filter((e) => e.entityId != attacker.entityId)
1078
- .forEach((e) => {
1079
- e.enchantments = e.enchantments || [];
1080
- if (!e.enchantments.some((e) => e.cardId === targetEnchantment)) {
1081
- e.enchantments.push({
1082
- cardId: targetEnchantment,
1083
- originEntityId: attacker.entityId,
1084
- timing: gameState.sharedState.currentEntityId++,
1085
- });
1086
- }
1087
- });
1088
- }
1089
- else if (attacker.cardId === "BGDUO_125" || attacker.cardId === "BGDUO_125_G") {
1090
- const teammateState = (0, utils_2.getTeammateInitialState)(gameState.gameState, attackingBoardHero);
1091
- if ((_d = teammateState === null || teammateState === void 0 ? void 0 : teammateState.board) === null || _d === void 0 ? void 0 : _d.length) {
1092
- const isGolden = attacker.cardId === "BGDUO_125_G";
1093
- const minionToCopy = (0, utils_2.getRandomMinionWithHighestHealth)(teammateState.board);
1094
- const copy = { ...minionToCopy, enchantments: [...minionToCopy.enchantments] };
1095
- const attackerIndex = attackingBoard.indexOf(attacker);
1096
- attackingBoard.splice(attackerIndex, 0, copy);
1097
- if (isGolden) {
1098
- (0, golden_1.makeMinionGolden)(copy, copy, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);
1099
- }
1100
- }
1101
- }
1102
- else if (attacker.cardId === "TB_BaconShop_HERO_56_Buddy" ||
1103
- attacker.cardId === "TB_BaconShop_HERO_56_Buddy_G") {
1104
- const vaelastraszBonus = attacker.cardId === "TB_BaconShop_HERO_56_Buddy_G" ? 6 : 3;
1105
- attackingBoard
1106
- .filter((e) => e.entityId !== attacker.entityId)
1107
- .forEach((e) => {
1108
- (0, stats_1.modifyStats)(e, vaelastraszBonus, vaelastraszBonus, attackingBoard, attackingBoardHero, gameState);
1109
- gameState.spectator.registerPowerTarget(attacker, e, attackingBoard, attackingBoardHero, defendingBoardHero);
1110
- });
1111
- }
1112
- else if (attacker.cardId === "TB_BaconShop_HERO_14_Buddy" ||
1113
- attacker.cardId === "TB_BaconShop_HERO_14_Buddy_G") {
1114
- const minionsOfDifferentTypes = (0, utils_2.getMinionsOfDifferentTypes)(attackingBoard, attackingBoardHero, gameState);
1115
- if (minionsOfDifferentTypes.length >= 4) {
1116
- const highestAttackOnBoard = Math.max(...attackingBoard.map((entity) => entity.attack));
1117
- const highestHealthOnBoard = Math.max(...attackingBoard.map((entity) => entity.health));
1118
- const multiplier = attacker.cardId === "TB_BaconShop_HERO_14_Buddy_G" ? 2 : 1;
1119
- (0, stats_1.modifyStats)(attacker, highestAttackOnBoard * multiplier, highestHealthOnBoard * multiplier, attackingBoard, attackingBoardHero, gameState);
1120
- gameState.spectator.registerPowerTarget(attacker, attacker, attackingBoard, attackingBoardHero, defendingBoardHero);
1121
- }
1122
- }
1123
- else if (attacker.cardId === "BG30_101" || attacker.cardId === "BG30_101_G") {
1124
- if (attackingBoard.length > 0 || defendingBoard.length > 0) {
1125
- const quantity = attacker.cardId === "BG30_101" ? 3 : 6;
1126
- (0, divine_shield_1.grantDivineShieldToLeftmostMinions)(attacker, attackingBoard, attackingBoardHero, quantity, defendingBoardHero, gameState);
1127
- (0, divine_shield_1.grantDivineShieldToLeftmostMinions)(attacker, defendingBoard, defendingBoardHero, quantity, attackingBoardHero, gameState);
1128
- }
1129
- }
1130
- else if (attacker.cardId === "BG30_119" ||
1131
- attacker.cardId === "BG30_119_G") {
1132
- attackingBoard
1133
- .filter((e) => e.entityId !== attacker.entityId)
1134
- .filter((e) => (0, utils_2.hasCorrectTribe)(e, attackingBoardHero, reference_data_1.Race.PIRATE, gameState.allCards))
1135
- .forEach((e) => {
1136
- e.enchantments = e.enchantments || [];
1137
- e.enchantments.push({
1138
- cardId: attacker.cardId === "BG30_119_G"
1139
- ? "BG30_119_Ge"
1140
- : "BG30_119e",
1141
- originEntityId: attacker.entityId,
1142
- timing: gameState.sharedState.currentEntityId++,
1143
- });
1144
- });
1145
- }
1146
- else {
1147
- hasProcessed = false;
1148
- }
1149
- (0, attack_1.processMinionDeath)(attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState);
1150
- return hasProcessed;
1151
- };
1152
- exports.performStartOfCombatMinionsForPlayer = performStartOfCombatMinionsForPlayer;
1153
- const applyAllWillBurn = (board1, board1Hero, board2, board2Hero, sourceEntity, gameState) => {
1154
- for (const entity of board1) {
1155
- (0, stats_1.modifyStats)(entity, 2, 0, board1, board1Hero, gameState);
1156
- gameState.spectator.registerPowerTarget(sourceEntity, entity, board1, null, null);
1157
- }
1158
- for (const entity of board2) {
1159
- (0, stats_1.modifyStats)(entity, 2, 0, board2, board1Hero, gameState);
1160
- gameState.spectator.registerPowerTarget(sourceEntity, entity, board2, null, null);
1161
- }
1162
- };
1163
- const castImpure = (entity, source, board, spectator) => {
1164
- var _a;
1165
- if (!entity) {
1166
- return;
1167
- }
1168
- const multiplier = source.cardId === "BG24_704_G" ? 3 : 2;
1169
- entity.taunt = true;
1170
- entity.damageMultiplier = (_a = entity.damageMultiplier) !== null && _a !== void 0 ? _a : 1;
1171
- entity.damageMultiplier *= multiplier;
1172
- spectator.registerPowerTarget(source, entity, board, null, null);
1173
- };
1174
- const getRandomMantidQueenBuffType = (entity) => {
1175
- const possibilities = ['stats'];
1176
- if (!entity.reborn) {
1177
- possibilities.push('reborn');
1178
- }
1179
- if (!entity.windfury) {
1180
- possibilities.push('windfury');
1181
- }
1182
- if (!entity.taunt) {
1183
- possibilities.push('taunt');
1184
- }
1185
- return (0, utils_1.pickRandom)(possibilities);
1186
- };
1187
- //# sourceMappingURL=start-of-combat.js.map