@firestone-hs/simulate-bgs-battle 1.1.500 → 1.1.502

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 (278) hide show
  1. package/dist/bgs-player-entity.d.ts +6 -0
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/cards/card.interface.d.ts +110 -1
  4. package/dist/cards/card.interface.js +45 -0
  5. package/dist/cards/card.interface.js.map +1 -1
  6. package/dist/cards/cards-data.d.ts +5 -1
  7. package/dist/cards/cards-data.js +39 -6
  8. package/dist/cards/cards-data.js.map +1 -1
  9. package/dist/cards/impl/_card-mappings.d.ts +4 -0
  10. package/dist/cards/impl/_card-mappings.js +120 -0
  11. package/dist/cards/impl/_card-mappings.js.map +1 -0
  12. package/dist/cards/impl/anomaly/blessed-or-blighted.js +3 -2
  13. package/dist/cards/impl/anomaly/blessed-or-blighted.js.map +1 -1
  14. package/dist/cards/impl/bg-spell/boon-of-beetles.js +1 -1
  15. package/dist/cards/impl/bg-spell/boon-of-beetles.js.map +1 -1
  16. package/dist/cards/impl/enchantments/crystal-infuser-enchantment.d.ts +2 -0
  17. package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js +16 -0
  18. package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js.map +1 -0
  19. package/dist/cards/impl/hero-power/reborn-rites.js +2 -1
  20. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -1
  21. package/dist/cards/impl/hero-power/swatting-insects.js +5 -3
  22. package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -1
  23. package/dist/cards/impl/hero-power/water-invocation.js +1 -1
  24. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -1
  25. package/dist/cards/impl/minion/amber-guardian.js +1 -1
  26. package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
  27. package/dist/cards/impl/minion/arcane-cannoneer.d.ts +2 -0
  28. package/dist/cards/impl/minion/arcane-cannoneer.js +15 -0
  29. package/dist/cards/impl/minion/arcane-cannoneer.js.map +1 -0
  30. package/dist/cards/impl/minion/bannerboar.d.ts +2 -0
  31. package/dist/cards/impl/minion/bannerboar.js +16 -0
  32. package/dist/cards/impl/minion/bannerboar.js.map +1 -0
  33. package/dist/cards/impl/minion/beetle.d.ts +2 -0
  34. package/dist/cards/impl/minion/beetle.js +16 -0
  35. package/dist/cards/impl/minion/beetle.js.map +1 -0
  36. package/dist/cards/impl/minion/bird-buddy.d.ts +2 -0
  37. package/dist/cards/impl/minion/bird-buddy.js +14 -0
  38. package/dist/cards/impl/minion/bird-buddy.js.map +1 -0
  39. package/dist/cards/impl/minion/boar-gamer.d.ts +2 -0
  40. package/dist/cards/impl/minion/boar-gamer.js +12 -0
  41. package/dist/cards/impl/minion/boar-gamer.js.map +1 -0
  42. package/dist/cards/impl/minion/bubble-gunner.d.ts +2 -0
  43. package/dist/cards/impl/minion/bubble-gunner.js +44 -0
  44. package/dist/cards/impl/minion/bubble-gunner.js.map +1 -0
  45. package/dist/cards/impl/minion/buzzing-vermin.d.ts +2 -0
  46. package/dist/cards/impl/minion/buzzing-vermin.js +12 -0
  47. package/dist/cards/impl/minion/buzzing-vermin.js.map +1 -0
  48. package/dist/cards/impl/minion/cadaver-caretaker.d.ts +2 -0
  49. package/dist/cards/impl/minion/cadaver-caretaker.js +12 -0
  50. package/dist/cards/impl/minion/cadaver-caretaker.js.map +1 -0
  51. package/dist/cards/impl/minion/deathly-striker.d.ts +2 -0
  52. package/dist/cards/impl/minion/deathly-striker.js +32 -0
  53. package/dist/cards/impl/minion/deathly-striker.js.map +1 -0
  54. package/dist/cards/impl/minion/efficient-engineer.d.ts +2 -0
  55. package/dist/cards/impl/minion/efficient-engineer.js +24 -0
  56. package/dist/cards/impl/minion/efficient-engineer.js.map +1 -0
  57. package/dist/cards/impl/minion/electric-synthesizer.d.ts +2 -0
  58. package/dist/cards/impl/minion/electric-synthesizer.js +24 -0
  59. package/dist/cards/impl/minion/electric-synthesizer.js.map +1 -0
  60. package/dist/cards/impl/minion/fairy-gillmother.d.ts +2 -0
  61. package/dist/cards/impl/minion/fairy-gillmother.js +18 -0
  62. package/dist/cards/impl/minion/fairy-gillmother.js.map +1 -0
  63. package/dist/cards/impl/minion/forest-rover.d.ts +2 -0
  64. package/dist/cards/impl/minion/forest-rover.js +23 -0
  65. package/dist/cards/impl/minion/forest-rover.js.map +1 -0
  66. package/dist/cards/impl/minion/fountain-chiller.d.ts +2 -0
  67. package/dist/cards/impl/minion/fountain-chiller.js +27 -0
  68. package/dist/cards/impl/minion/fountain-chiller.js.map +1 -0
  69. package/dist/cards/impl/minion/gem-rat.d.ts +2 -0
  70. package/dist/cards/impl/minion/gem-rat.js +12 -0
  71. package/dist/cards/impl/minion/gem-rat.js.map +1 -0
  72. package/dist/cards/impl/minion/gentle-djinni.d.ts +2 -0
  73. package/dist/cards/impl/minion/gentle-djinni.js +25 -0
  74. package/dist/cards/impl/minion/gentle-djinni.js.map +1 -0
  75. package/dist/cards/impl/minion/goldrinn-the-great-wolf.d.ts +2 -0
  76. package/dist/cards/impl/minion/goldrinn-the-great-wolf.js +15 -0
  77. package/dist/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -0
  78. package/dist/cards/impl/minion/gritty-headhunter.d.ts +2 -0
  79. package/dist/cards/impl/minion/gritty-headhunter.js +14 -0
  80. package/dist/cards/impl/minion/gritty-headhunter.js.map +1 -0
  81. package/dist/cards/impl/minion/hackerfin.d.ts +2 -0
  82. package/dist/cards/impl/minion/hackerfin.js +21 -0
  83. package/dist/cards/impl/minion/hackerfin.js.map +1 -0
  84. package/dist/cards/impl/minion/handless-forsaken.d.ts +2 -0
  85. package/dist/cards/impl/minion/handless-forsaken.js +12 -0
  86. package/dist/cards/impl/minion/handless-forsaken.js.map +1 -0
  87. package/dist/cards/impl/minion/harmless-bonehead.d.ts +2 -0
  88. package/dist/cards/impl/minion/harmless-bonehead.js +12 -0
  89. package/dist/cards/impl/minion/harmless-bonehead.js.map +1 -0
  90. package/dist/cards/impl/minion/holo-rover.d.ts +2 -0
  91. package/dist/cards/impl/minion/holo-rover.js +16 -0
  92. package/dist/cards/impl/minion/holo-rover.js.map +1 -0
  93. package/dist/cards/impl/minion/humming-bird.d.ts +2 -5
  94. package/dist/cards/impl/minion/humming-bird.js +1 -0
  95. package/dist/cards/impl/minion/humming-bird.js.map +1 -1
  96. package/dist/cards/impl/minion/hungry-snapjaw.d.ts +2 -0
  97. package/dist/cards/impl/minion/hungry-snapjaw.js +17 -0
  98. package/dist/cards/impl/minion/hungry-snapjaw.js.map +1 -0
  99. package/dist/cards/impl/minion/implant-subject.d.ts +2 -0
  100. package/dist/cards/impl/minion/implant-subject.js +42 -0
  101. package/dist/cards/impl/minion/implant-subject.js.map +1 -0
  102. package/dist/cards/impl/minion/indomitable-mount.d.ts +2 -0
  103. package/dist/cards/impl/minion/indomitable-mount.js +23 -0
  104. package/dist/cards/impl/minion/indomitable-mount.js.map +1 -0
  105. package/dist/cards/impl/minion/interrogator-whitemane.js +5 -4
  106. package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -1
  107. package/dist/cards/impl/minion/karmic-chameleon.d.ts +2 -0
  108. package/dist/cards/impl/minion/karmic-chameleon.js +27 -0
  109. package/dist/cards/impl/minion/karmic-chameleon.js.map +1 -0
  110. package/dist/cards/impl/minion/manasaber.d.ts +2 -0
  111. package/dist/cards/impl/minion/manasaber.js +14 -0
  112. package/dist/cards/impl/minion/manasaber.js.map +1 -0
  113. package/dist/cards/impl/minion/mantid-queen.js +6 -3
  114. package/dist/cards/impl/minion/mantid-queen.js.map +1 -1
  115. package/dist/cards/impl/minion/marquee-ticker.d.ts +2 -0
  116. package/dist/cards/impl/minion/marquee-ticker.js +12 -0
  117. package/dist/cards/impl/minion/marquee-ticker.js.map +1 -0
  118. package/dist/cards/impl/minion/mechanized-gift-horse.d.ts +2 -0
  119. package/dist/cards/impl/minion/mechanized-gift-horse.js +13 -0
  120. package/dist/cards/impl/minion/mechanized-gift-horse.js.map +1 -0
  121. package/dist/cards/impl/minion/mechorse.d.ts +2 -0
  122. package/dist/cards/impl/minion/mechorse.js +16 -0
  123. package/dist/cards/impl/minion/mechorse.js.map +1 -0
  124. package/dist/cards/impl/minion/moonsteel-juggernaut.d.ts +2 -0
  125. package/dist/cards/impl/minion/moonsteel-juggernaut.js +15 -0
  126. package/dist/cards/impl/minion/moonsteel-juggernaut.js.map +1 -0
  127. package/dist/cards/impl/minion/mutated-lasher.d.ts +2 -0
  128. package/dist/cards/impl/minion/mutated-lasher.js +26 -0
  129. package/dist/cards/impl/minion/mutated-lasher.js.map +1 -0
  130. package/dist/cards/impl/minion/neon-agent.d.ts +2 -0
  131. package/dist/cards/impl/minion/neon-agent.js +18 -0
  132. package/dist/cards/impl/minion/neon-agent.js.map +1 -0
  133. package/dist/cards/impl/minion/nest-swarmer.d.ts +2 -0
  134. package/dist/cards/impl/minion/nest-swarmer.js +12 -0
  135. package/dist/cards/impl/minion/nest-swarmer.js.map +1 -0
  136. package/dist/cards/impl/minion/nether-drake.d.ts +2 -0
  137. package/dist/cards/impl/minion/nether-drake.js +15 -0
  138. package/dist/cards/impl/minion/nether-drake.js.map +1 -0
  139. package/dist/cards/impl/minion/niuzao.d.ts +2 -0
  140. package/dist/cards/impl/minion/niuzao.js +21 -0
  141. package/dist/cards/impl/minion/niuzao.js.map +1 -0
  142. package/dist/cards/impl/minion/outback-smolderer.d.ts +2 -0
  143. package/dist/cards/impl/minion/outback-smolderer.js +17 -0
  144. package/dist/cards/impl/minion/outback-smolderer.js.map +1 -0
  145. package/dist/cards/impl/minion/razorgore-the-untamed.d.ts +2 -0
  146. package/dist/cards/impl/minion/razorgore-the-untamed.js +20 -0
  147. package/dist/cards/impl/minion/razorgore-the-untamed.js.map +1 -0
  148. package/dist/cards/impl/minion/reckless-cliffdiver.d.ts +2 -0
  149. package/dist/cards/impl/minion/reckless-cliffdiver.js +19 -0
  150. package/dist/cards/impl/minion/reckless-cliffdiver.js.map +1 -0
  151. package/dist/cards/impl/minion/runed-progenitor.d.ts +2 -0
  152. package/dist/cards/impl/minion/runed-progenitor.js +24 -0
  153. package/dist/cards/impl/minion/runed-progenitor.js.map +1 -0
  154. package/dist/cards/impl/minion/rylak-metalhead.d.ts +2 -0
  155. package/dist/cards/impl/minion/rylak-metalhead.js +22 -0
  156. package/dist/cards/impl/minion/rylak-metalhead.js.map +1 -0
  157. package/dist/cards/impl/minion/salty-hog.d.ts +2 -0
  158. package/dist/cards/impl/minion/salty-hog.js +17 -0
  159. package/dist/cards/impl/minion/salty-hog.js.map +1 -0
  160. package/dist/cards/impl/minion/showy-cyclist.d.ts +2 -0
  161. package/dist/cards/impl/minion/showy-cyclist.js +14 -0
  162. package/dist/cards/impl/minion/showy-cyclist.js.map +1 -0
  163. package/dist/cards/impl/minion/silver-handed-recruit.d.ts +2 -0
  164. package/dist/cards/impl/minion/silver-handed-recruit.js +17 -0
  165. package/dist/cards/impl/minion/silver-handed-recruit.js.map +1 -0
  166. package/dist/cards/impl/minion/sly-raptor.d.ts +2 -0
  167. package/dist/cards/impl/minion/sly-raptor.js +18 -0
  168. package/dist/cards/impl/minion/sly-raptor.js.map +1 -0
  169. package/dist/cards/impl/minion/soulsplitter.js +2 -1
  170. package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
  171. package/dist/cards/impl/minion/spacefarer.d.ts +2 -0
  172. package/dist/cards/impl/minion/spacefarer.js +20 -0
  173. package/dist/cards/impl/minion/spacefarer.js.map +1 -0
  174. package/dist/cards/impl/minion/sun-screener.js +1 -1
  175. package/dist/cards/impl/minion/sun-screener.js.map +1 -1
  176. package/dist/cards/impl/minion/thousandth-paper-drake.js +2 -1
  177. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -1
  178. package/dist/cards/impl/minion/turquoise-skitterer.d.ts +2 -0
  179. package/dist/cards/impl/minion/turquoise-skitterer.js +25 -0
  180. package/dist/cards/impl/minion/turquoise-skitterer.js.map +1 -0
  181. package/dist/cards/impl/minion/twilight-primordium.d.ts +2 -0
  182. package/dist/cards/impl/minion/twilight-primordium.js +24 -0
  183. package/dist/cards/impl/minion/twilight-primordium.js.map +1 -0
  184. package/dist/cards/impl/minion/ultraviolet-ascendant.d.ts +2 -0
  185. package/dist/cards/impl/minion/ultraviolet-ascendant.js +14 -0
  186. package/dist/cards/impl/minion/ultraviolet-ascendant.js.map +1 -0
  187. package/dist/cards/impl/minion/wandering-wight.d.ts +2 -0
  188. package/dist/cards/impl/minion/wandering-wight.js +12 -0
  189. package/dist/cards/impl/minion/wandering-wight.js.map +1 -0
  190. package/dist/cards/impl/minion/wisp-in-the-shell.d.ts +2 -0
  191. package/dist/cards/impl/minion/wisp-in-the-shell.js +19 -0
  192. package/dist/cards/impl/minion/wisp-in-the-shell.js.map +1 -0
  193. package/dist/cards/impl/trinket/eternal-portrait.js +4 -2
  194. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
  195. package/dist/cards/impl/trinket/holly-mallet.js +1 -1
  196. package/dist/cards/impl/trinket/holly-mallet.js.map +1 -1
  197. package/dist/{divine-shield.d.ts → keywords/divine-shield.d.ts} +9 -3
  198. package/dist/{divine-shield.js → keywords/divine-shield.js} +18 -5
  199. package/dist/keywords/divine-shield.js.map +1 -0
  200. package/dist/keywords/reborn.d.ts +10 -0
  201. package/dist/keywords/reborn.js +22 -0
  202. package/dist/keywords/reborn.js.map +1 -0
  203. package/dist/keywords/stealth.d.ts +10 -0
  204. package/dist/keywords/stealth.js +22 -0
  205. package/dist/keywords/stealth.js.map +1 -0
  206. package/dist/keywords/taunt.d.ts +10 -0
  207. package/dist/keywords/taunt.js +22 -0
  208. package/dist/keywords/taunt.js.map +1 -0
  209. package/dist/keywords/venomous.d.ts +10 -0
  210. package/dist/keywords/venomous.js +33 -0
  211. package/dist/keywords/venomous.js.map +1 -0
  212. package/dist/keywords/windfury.d.ts +10 -0
  213. package/dist/keywords/windfury.js +22 -0
  214. package/dist/keywords/windfury.js.map +1 -0
  215. package/dist/simulate-bgs-battle.d.ts +2 -2
  216. package/dist/simulate-bgs-battle.js +19 -2
  217. package/dist/simulate-bgs-battle.js.map +1 -1
  218. package/dist/simulation/add-minion-to-board.d.ts +18 -2
  219. package/dist/simulation/add-minion-to-board.js +46 -15
  220. package/dist/simulation/add-minion-to-board.js.map +1 -1
  221. package/dist/simulation/after-attack.js +2 -1
  222. package/dist/simulation/after-attack.js.map +1 -1
  223. package/dist/simulation/attack.js +7 -24
  224. package/dist/simulation/attack.js.map +1 -1
  225. package/dist/simulation/auras.d.ts +1 -1
  226. package/dist/simulation/auras.js +21 -15
  227. package/dist/simulation/auras.js.map +1 -1
  228. package/dist/simulation/avenge.d.ts +7 -0
  229. package/dist/simulation/avenge.js +223 -229
  230. package/dist/simulation/avenge.js.map +1 -1
  231. package/dist/simulation/battlecries.d.ts +8 -0
  232. package/dist/simulation/battlecries.js +634 -609
  233. package/dist/simulation/battlecries.js.map +1 -1
  234. package/dist/simulation/blood-gems.js +1 -1
  235. package/dist/simulation/blood-gems.js.map +1 -1
  236. package/dist/simulation/cards-in-hand.d.ts +7 -1
  237. package/dist/simulation/cards-in-hand.js +14 -0
  238. package/dist/simulation/cards-in-hand.js.map +1 -1
  239. package/dist/simulation/damage-effects.js +1 -1
  240. package/dist/simulation/damage-effects.js.map +1 -1
  241. package/dist/simulation/deathrattle-effects.d.ts +1 -1
  242. package/dist/simulation/deathrattle-effects.js +498 -516
  243. package/dist/simulation/deathrattle-effects.js.map +1 -1
  244. package/dist/simulation/deathrattle-on-trigger.d.ts +1 -0
  245. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  246. package/dist/simulation/deathrattle-spawns.d.ts +2 -0
  247. package/dist/simulation/deathrattle-spawns.js +324 -384
  248. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  249. package/dist/simulation/deathrattle-utils.js +1 -1
  250. package/dist/simulation/deathrattle-utils.js.map +1 -1
  251. package/dist/simulation/frenzy.js +1 -1
  252. package/dist/simulation/frenzy.js.map +1 -1
  253. package/dist/simulation/magnetize.js.map +1 -1
  254. package/dist/simulation/on-attack.d.ts +13 -1
  255. package/dist/simulation/on-attack.js +21 -1
  256. package/dist/simulation/on-attack.js.map +1 -1
  257. package/dist/simulation/on-being-attacked.js +7 -4
  258. package/dist/simulation/on-being-attacked.js.map +1 -1
  259. package/dist/simulation/simulator.js +23 -8
  260. package/dist/simulation/simulator.js.map +1 -1
  261. package/dist/simulation/spawns.js +1 -1
  262. package/dist/simulation/spawns.js.map +1 -1
  263. package/dist/simulation/start-of-combat/soc-action-processor.js +6 -4
  264. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  265. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js +12 -4
  266. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js.map +1 -1
  267. package/dist/simulation/stats.d.ts +8 -0
  268. package/dist/simulation/stats.js +21 -4
  269. package/dist/simulation/stats.js.map +1 -1
  270. package/dist/simulation/summon-when-space.js +2 -12
  271. package/dist/simulation/summon-when-space.js.map +1 -1
  272. package/dist/temp-card-ids.d.ts +70 -0
  273. package/dist/temp-card-ids.js.map +1 -1
  274. package/dist/utils.d.ts +0 -1
  275. package/dist/utils.js +30 -36
  276. package/dist/utils.js.map +1 -1
  277. package/package.json +2 -2
  278. package/dist/divine-shield.js.map +0 -1
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.triggerBattlecry = exports.computeBattlecryMultiplier = 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");
7
+ const divine_shield_1 = require("../keywords/divine-shield");
8
+ const taunt_1 = require("../keywords/taunt");
9
+ const windfury_1 = require("../keywords/windfury");
5
10
  const utils_1 = require("../services/utils");
6
11
  const utils_2 = require("../utils");
7
12
  const attack_1 = require("./attack");
@@ -35,627 +40,635 @@ const triggerBattlecry = (board, hero, entity, otherBoard, otherHero, gameState)
35
40
  const totalTriggers = (0, exports.computeBattlecryMultiplier)(board, hero, gameState.sharedState);
36
41
  for (let z = 0; z < totalTriggers; z++) {
37
42
  let hasTriggered = true;
38
- switch (entity.cardId) {
39
- case "BG20_100":
40
- case "BG20_100_G":
41
- const razorFenCardsToAdd = entity.cardId === "BG20_100"
42
- ? ["BG20_GEM"]
43
- : ["BG20_GEM", "BG20_GEM"];
44
- (0, cards_in_hand_1.addCardsInHand)(hero, board, razorFenCardsToAdd, gameState);
45
- break;
46
- case "BG_UNG_073":
47
- case "TB_BaconUps_061":
48
- const rockPoolTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.MURLOC, gameState.allCards);
49
- if (!!rockPoolTarget) {
50
- const rockpoolStats = entity.cardId === "BG_UNG_073" ? 1 : 2;
51
- (0, stats_1.modifyStats)(rockPoolTarget, rockpoolStats, rockpoolStats, board, hero, gameState);
52
- gameState.spectator.registerPowerTarget(entity, rockPoolTarget, board, hero, otherHero);
53
- }
54
- break;
55
- case "BG23_002":
56
- case "BG23_002_G":
57
- const shellCollectorCardsToAdd = entity.cardId === "BG23_002"
58
- ? ["GAME_005"]
59
- : ["GAME_005", "GAME_005"];
60
- (0, cards_in_hand_1.addCardsInHand)(hero, board, shellCollectorCardsToAdd, gameState);
61
- break;
62
- case "BGS_082":
63
- case "TB_BaconUps_144":
64
- const menagerieMugStats = entity.cardId === "BGS_082" ? 1 : 2;
65
- (0, utils_2.grantStatsToMinionsOfEachType)(entity, board, hero, menagerieMugStats, menagerieMugStats, gameState, 3);
66
- break;
67
- case "BGS_083":
68
- case "TB_BaconUps_145":
69
- const menagerieJugStats = entity.cardId === "BGS_083" ? 2 : 4;
70
- (0, utils_2.grantStatsToMinionsOfEachType)(entity, board, hero, menagerieJugStats, menagerieJugStats, gameState, 3);
71
- break;
72
- case "BG25_011":
73
- case "BG25_011_G":
74
- const nerubianDeathswarmerStats = entity.cardId === "BG25_011" ? 1 : 2;
75
- hero.globalInfo.UndeadAttackBonus =
76
- ((_b = (_a = hero.globalInfo) === null || _a === void 0 ? void 0 : _a.UndeadAttackBonus) !== null && _b !== void 0 ? _b : 0) + nerubianDeathswarmerStats;
77
- (0, utils_2.addStatsToBoard)(entity, board, hero, nerubianDeathswarmerStats, 0, gameState, reference_data_1.Race[reference_data_1.Race.UNDEAD]);
78
- break;
79
- case "BG_AT_069":
80
- case "BG_AT_069_G":
81
- const sparringPartnersTargets = allMinions.filter((e) => !e.taunt);
82
- const sparringPartnersTarget = (0, utils_1.pickRandom)(sparringPartnersTargets);
83
- if (sparringPartnersTarget) {
84
- sparringPartnersTarget.taunt = true;
85
- }
86
- break;
87
- case "BGS_038":
88
- case "TB_BaconUps_108":
89
- const twilightEmissaryTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.DRAGON, gameState.allCards);
90
- if (!!twilightEmissaryTarget) {
91
- const twilightEmissaryStats = entity.cardId === "BGS_038" ? 2 : 4;
92
- (0, stats_1.modifyStats)(twilightEmissaryTarget, twilightEmissaryStats, twilightEmissaryStats, board, hero, gameState);
93
- gameState.spectator.registerPowerTarget(entity, twilightEmissaryTarget, board, hero, otherHero);
94
- }
95
- break;
96
- case "BGS_053":
97
- case "TB_BaconUps_138":
98
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BGS_053" ? 3 : 6, 0, gameState, reference_data_1.Race[reference_data_1.Race.PIRATE]);
99
- break;
100
- case "BG29_502":
101
- case "BG29_502_G":
102
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, 0, entity.cardId === "BG29_502" ? 4 : 8, gameState, reference_data_1.Race[reference_data_1.Race.PIRATE]);
103
- break;
104
- case "BG_EX1_103":
105
- case "TB_BaconUps_064":
106
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, 0, entity.cardId === "BG_EX1_103" ? 2 : 4, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
107
- break;
108
- case "BG_BT_010":
109
- case "TB_BaconUps_124":
110
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "TB_BaconUps_124" ? 2 : 1, entity.cardId === "TB_BaconUps_124" ? 2 : 1, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
111
- break;
112
- case "BG26_522":
113
- case "BG26_522_G":
114
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG26_522" ? 2 : 4, entity.cardId === "BG26_522" ? 2 : 4, gameState, reference_data_1.Race[reference_data_1.Race.DEMON]);
115
- const numberOfTimesToTrigger = entity.cardId === "BG26_522" ? 1 : 2;
116
- for (let i = 0; i < numberOfTimesToTrigger; i++) {
117
- (0, damage_to_hero_1.dealDamageToHero)(entity, hero, board, 2, gameState);
118
- }
119
- break;
120
- case "BG26_159":
121
- case "BG26_159_G":
122
- const moonBaconJazzerStats = entity.cardId === "BG26_159" ? 1 : 2;
123
- hero.globalInfo.BloodGemHealthBonus =
124
- ((_d = (_c = hero.globalInfo) === null || _c === void 0 ? void 0 : _c.BloodGemHealthBonus) !== null && _d !== void 0 ? _d : 0) + moonBaconJazzerStats;
125
- break;
126
- case "BG21_021":
127
- case "BG21_021_G":
128
- const smoggerLoops = entity.cardId === "BG21_021" ? 1 : 2;
129
- for (let i = 0; i < smoggerLoops; i++) {
130
- const smoggerTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards);
131
- const smoggerStats = (_e = hero.tavernTier) !== null && _e !== void 0 ? _e : 3;
132
- (0, stats_1.modifyStats)(smoggerTarget, smoggerStats, smoggerStats, board, hero, gameState);
133
- gameState.spectator.registerPowerTarget(entity, smoggerTarget, board, hero, otherHero);
134
- }
135
- break;
136
- case "BGS_010":
137
- case "TB_BaconUps_083":
138
- const startingHp = hero.cardId === "TB_BaconShop_HERO_34" ? 60 : 30;
139
- const hpMissing = startingHp - hero.hpLeft;
140
- const annihilanStats = (entity.cardId === "BGS_010" ? 2 : 4) * hpMissing;
141
- (0, stats_1.modifyStats)(entity, 0, annihilanStats, board, hero, gameState);
142
- gameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);
143
- break;
144
- case "BG26_963":
145
- case "BG26_963_G":
146
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG26_963" ? 3 : 6, entity.cardId === "BG26_963" ? 2 : 4, gameState, reference_data_1.Race[reference_data_1.Race.DRAGON]);
147
- break;
148
- case "BG20_202":
149
- case "BG20_202_G":
150
- const necrolyteBloodGems = entity.cardId === "BG20_202" ? 2 : 4;
151
- const necrolyteTarget = (0, utils_1.pickRandom)(board);
152
- (0, blood_gems_1.playBloodGemsOn)(entity, necrolyteTarget, necrolyteBloodGems, board, hero, gameState);
153
- gameState.spectator.registerPowerTarget(entity, necrolyteTarget, board, hero, otherHero);
154
- const necrolyteTargetNeighbours = (0, attack_1.getNeighbours)(board, necrolyteTarget);
155
- for (const neighbour of necrolyteTargetNeighbours) {
156
- const bloodGemStatsEnchantment = (_f = neighbour.enchantments) === null || _f === void 0 ? void 0 : _f.find((e) => e.cardId === "BG20_GEMe2");
157
- if (bloodGemStatsEnchantment) {
158
- const atk = (_g = bloodGemStatsEnchantment.tagScriptDataNum1) !== null && _g !== void 0 ? _g : 0;
159
- const heath = (_h = bloodGemStatsEnchantment.tagScriptDataNum2) !== null && _h !== void 0 ? _h : 0;
160
- neighbour.attack = Math.max(0, neighbour.attack - atk);
161
- neighbour.health = Math.max(1, neighbour.health - heath);
162
- neighbour.maxHealth = Math.max(1, neighbour.maxHealth - heath);
163
- necrolyteTarget.attack += atk;
164
- necrolyteTarget.health += heath;
165
- necrolyteTarget.maxHealth += heath;
166
- gameState.spectator.registerPowerTarget(necrolyteTarget, neighbour, board, hero, otherHero);
43
+ const battlecryImpl = _card_mappings_1.cardMappings[entity.cardId];
44
+ if ((0, card_interface_1.hasBattlecry)(battlecryImpl)) {
45
+ battlecryImpl.battlecry(entity, {
46
+ hero: hero,
47
+ board: board,
48
+ otherHero: otherHero,
49
+ otherBoard: otherBoard,
50
+ gameState,
51
+ });
52
+ }
53
+ else {
54
+ switch (entity.cardId) {
55
+ case "BG20_100":
56
+ case "BG20_100_G":
57
+ const razorFenCardsToAdd = entity.cardId === "BG20_100"
58
+ ? ["BG20_GEM"]
59
+ : ["BG20_GEM", "BG20_GEM"];
60
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, razorFenCardsToAdd, gameState);
61
+ break;
62
+ case "BG_UNG_073":
63
+ case "TB_BaconUps_061":
64
+ const rockPoolTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.MURLOC, gameState.allCards);
65
+ if (!!rockPoolTarget) {
66
+ const rockpoolStats = entity.cardId === "BG_UNG_073" ? 1 : 2;
67
+ (0, stats_1.modifyStats)(rockPoolTarget, rockpoolStats, rockpoolStats, board, hero, gameState);
68
+ gameState.spectator.registerPowerTarget(entity, rockPoolTarget, board, hero, otherHero);
167
69
  }
168
- }
169
- break;
170
- case "BGS_020":
171
- case "TB_BaconUps_089":
172
- const primalfinLoops = entity.cardId === "BGS_020" ? 1 : 2;
173
- for (let i = 0; i < primalfinLoops; i++) {
174
- const discoverOptions = [
175
- gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_j = hero.tavernTier) !== null && _j !== void 0 ? _j : 1),
176
- gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_k = hero.tavernTier) !== null && _k !== void 0 ? _k : 1),
177
- gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_l = hero.tavernTier) !== null && _l !== void 0 ? _l : 1),
178
- ];
179
- const picked = (0, utils_1.pickRandom)(discoverOptions);
180
- const others = discoverOptions.filter((e) => e !== picked);
181
- (0, cards_in_hand_1.addCardsInHand)(hero, board, [picked], gameState);
182
- (0, discover_1.afterDiscover)(hero, board, picked, others, gameState);
183
- gameState.spectator.registerPowerTarget(entity, hero, board, hero, otherHero);
184
70
  break;
185
- }
186
- break;
187
- case "BG_ICC_807":
188
- case "TB_BaconUps_072":
189
- const strongshellScavengerStats = entity.cardId === "BG_ICC_807" ? 2 : 4;
190
- const strongshellScavengerTargets = board
191
- .filter((e) => e.entityId != entity.entityId)
192
- .filter((e) => e.taunt);
193
- strongshellScavengerTargets.forEach((target) => {
194
- (0, stats_1.modifyStats)(target, strongshellScavengerStats, strongshellScavengerStats, board, hero, gameState);
195
- gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
196
- });
197
- break;
198
- case "BG24_023":
199
- case "BG24_023_G":
200
- const vigilantStonebornTarget = (0, utils_1.pickRandom)(board);
201
- const vigilantStonebornStats = entity.cardId === "BG24_023" ? 6 : 12;
202
- vigilantStonebornTarget.taunt = true;
203
- (0, stats_1.modifyStats)(vigilantStonebornTarget, 0, vigilantStonebornStats, board, hero, gameState);
204
- gameState.spectator.registerPowerTarget(entity, vigilantStonebornTarget, board, hero, otherHero);
205
- break;
206
- case "BG26_ICC_705":
207
- case "BG26_ICC_705_G":
208
- const bonemareTarget = (0, utils_1.pickRandom)(board);
209
- const bonemareStats = entity.cardId === "BG26_ICC_705" ? 4 : 8;
210
- bonemareTarget.taunt = true;
211
- (0, stats_1.modifyStats)(bonemareTarget, bonemareStats, bonemareStats, board, hero, gameState);
212
- gameState.spectator.registerPowerTarget(entity, bonemareTarget, board, hero, otherHero);
213
- break;
214
- case "BG25_309":
215
- case "BG25_309_G":
216
- const generalDrakkisathCardsToAdd = entity.cardId === "BG25_309"
217
- ? ["BG25_309t"]
218
- : [
219
- "BG25_309t",
220
- "BG25_309t",
221
- ];
222
- (0, cards_in_hand_1.addCardsInHand)(hero, board, generalDrakkisathCardsToAdd, gameState);
223
- break;
224
- case "BGS_030":
225
- case "TB_BaconUps_100":
226
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BGS_030" ? 3 : 6, entity.cardId === "BGS_030" ? 3 : 6, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
227
- break;
228
- case "BGS_043":
229
- case "TB_BaconUps_110":
230
- const murozondCardsToAdd = entity.cardId === "BGS_043"
231
- ? ["GAME_005"]
232
- : ["GAME_005", "GAME_005"];
233
- (0, cards_in_hand_1.addCardsInHand)(hero, board, murozondCardsToAdd, gameState);
234
- break;
235
- case "BGS_123":
236
- case "TB_BaconUps_162":
237
- const tavernTempestCardsToAdd = entity.cardId === "BGS_123"
238
- ? ["GAME_005"]
239
- : ["GAME_005", "GAME_005"];
240
- (0, cards_in_hand_1.addCardsInHand)(hero, board, tavernTempestCardsToAdd, gameState);
241
- break;
242
- case "BG25_807":
243
- case "BG25_807_G":
244
- const mechaJaraxxusCardsToAdd = entity.cardId === "BG25_807"
245
- ? ["GAME_005"]
246
- : ["GAME_005", "GAME_005"];
247
- (0, cards_in_hand_1.addCardsInHand)(hero, board, mechaJaraxxusCardsToAdd, gameState);
248
- break;
249
- case "BG27_002":
250
- case "BG27_002_G":
251
- const oozelingCardsToAdd = entity.cardId === "BG27_002"
252
- ? ["GAME_005", "GAME_005"]
253
- : ["GAME_005", "GAME_005", "GAME_005", "GAME_005"];
254
- (0, cards_in_hand_1.addCardsInHand)(hero, board, oozelingCardsToAdd, gameState);
255
- break;
256
- case "BG23_190":
257
- case "BG23_190_G":
258
- const utherTarget = (0, utils_1.pickRandom)(allMinions);
259
- const utherStats = entity.cardId === "BG23_190" ? 15 : 30;
260
- utherTarget.attack = utherStats;
261
- utherTarget.health = utherStats;
262
- utherTarget.maxHealth = utherStats;
263
- break;
264
- case "BG27_000":
265
- case "BG27_000_G":
266
- const ironGroundskeeperTargets = allMinions;
267
- const ironGroundskeeperTarget = (0, utils_1.pickRandom)(ironGroundskeeperTargets);
268
- ironGroundskeeperTarget.taunt = !ironGroundskeeperTarget.taunt;
269
- break;
270
- case "BG27_001":
271
- case "BG27_001_G":
272
- const differentTypes = extractUniqueTribes(board, gameState.allCards);
273
- const livingConstellationStats = (entity.cardId === "BG27_001" ? 1 : 2) * differentTypes.length;
274
- const livingConstellationTarget = (0, utils_1.pickRandom)(allMinions);
275
- const boardForTarget = board.includes(livingConstellationTarget) ? board : otherBoard;
276
- (0, stats_1.modifyStats)(livingConstellationTarget, livingConstellationStats, livingConstellationStats, boardForTarget, hero, gameState);
277
- gameState.spectator.registerPowerTarget(entity, livingConstellationTarget, boardForTarget, hero, otherHero);
278
- break;
279
- case "BG26_001":
280
- case "BG26_001_G":
281
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG26_001" ? 2 : 4, entity.cardId === "BG26_001" ? 2 : 4, gameState);
282
- break;
283
- case "BG27_019":
284
- case "BG27_019_G":
285
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG27_019" ? 1 : 2, entity.cardId === "BG27_019" ? 1 : 2, gameState);
286
- (0, utils_2.addStatsToBoard)(entity, otherBoard, hero, entity.cardId === "BG27_019" ? 1 : 2, entity.cardId === "BG27_019" ? 1 : 2, gameState);
287
- break;
288
- case "BG27_018":
289
- case "BG27_018_G":
290
- const emergentFlameTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards)));
291
- if (!!emergentFlameTarget) {
292
- const targetBoard = board.includes(emergentFlameTarget) ? board : otherBoard;
293
- const targetHero = board.includes(emergentFlameTarget) ? hero : otherHero;
294
- const emergentFlameMultiplier = entity.cardId === "BG27_018" ? 1 : 2;
295
- const emergentFlameStats = ((_m = entity.scriptDataNum1) !== null && _m !== void 0 ? _m : 1) * emergentFlameMultiplier;
296
- (0, stats_1.modifyStats)(emergentFlameTarget, emergentFlameStats, emergentFlameStats, targetBoard, targetHero, gameState);
297
- gameState.spectator.registerPowerTarget(entity, emergentFlameTarget, targetBoard, hero, otherHero);
298
- }
299
- break;
300
- case "BG25_309t":
301
- case "BG25_309_Gt":
302
- const smolderwingTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.DRAGON, gameState.allCards)));
303
- if (!!smolderwingTarget) {
304
- const targetBoard = board.includes(smolderwingTarget) ? board : otherBoard;
305
- const targetHero = board.includes(smolderwingTarget) ? hero : otherHero;
306
- const smolderwingMultiplier = entity.cardId === "BG25_309t" ? 1 : 2;
307
- const smolderwingStats = 5 * smolderwingMultiplier;
308
- (0, stats_1.modifyStats)(smolderwingTarget, smolderwingStats, 0, targetBoard, targetHero, gameState);
309
- }
310
- break;
311
- case "BG_SCH_149":
312
- case "TB_BaconUps_308":
313
- const highestAttack = Math.max(...allMinions.map((minion) => minion.attack));
314
- const highestHealth = Math.max(...allMinions.map((minion) => minion.health));
315
- const argentBraggartMultiplier = entity.cardId === "BG_SCH_149" ? 1 : 2;
316
- entity.attack = argentBraggartMultiplier * highestAttack;
317
- entity.health = argentBraggartMultiplier * highestHealth;
318
- break;
319
- case "BG25_034":
320
- case "BG25_034_G":
321
- const captainSandersTarget = (0, utils_1.pickRandom)(board.filter((e) => !(0, golden_1.isMinionGolden)(e, gameState.allCards)));
322
- if (captainSandersTarget) {
323
- (0, golden_1.makeMinionGolden)(captainSandersTarget, entity, board, hero, otherHero, gameState);
324
- }
325
- break;
326
- case "BG23_017":
327
- case "BG23_017_G":
328
- const sanguineChampionStats = entity.cardId === "BG23_017" ? 1 : 2;
329
- hero.globalInfo.BloodGemAttackBonus += sanguineChampionStats;
330
- hero.globalInfo.BloodGemHealthBonus += sanguineChampionStats;
331
- break;
332
- case "BG24_012":
333
- case "BG24_012_G":
334
- const murkyScale = entity.cardId === "BG24_012" ? 1 : 2;
335
- const murlocsControlled = board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)).length;
336
- const murkyStats = murkyScale * 3 * murlocsControlled;
337
- const murkyTarget = (0, utils_1.pickRandom)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)));
338
- if (!!murkyTarget) {
339
- (0, stats_1.modifyStats)(murkyTarget, murkyStats, murkyStats, board, hero, gameState);
340
- }
341
- break;
342
- case "BG26_814":
343
- case "BG26_814_G":
344
- const balladistMultiplier = entity.cardId === "BG26_814" ? 1 : 2;
345
- const balladistStats = balladistMultiplier * ((_o = entity.scriptDataNum1) !== null && _o !== void 0 ? _o : 0);
346
- const balladistTargets = allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.PIRATE, gameState.allCards));
347
- const balladistTarget = (0, utils_1.pickRandom)(balladistTargets);
348
- if (balladistTarget) {
349
- const targetBoard = board.includes(balladistTarget) ? board : otherBoard;
350
- const targetHero = board.includes(balladistTarget) ? hero : otherHero;
351
- (0, stats_1.modifyStats)(balladistTarget, 0, balladistStats, targetBoard, targetHero, gameState);
352
- gameState.spectator.registerPowerTarget(entity, balladistTarget, targetBoard, targetHero, otherHero);
353
- }
354
- break;
355
- case "BG24_719":
356
- case "BG24_719_G":
357
- const target = (0, utils_1.pickRandom)(allMinions.filter((e) => !e.definitelyDead && e.health > 0));
358
- if (target) {
359
- gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
360
- const minionTier = gameState.cardsData.getTavernLevel(target.cardId);
361
- const targetTier = entity.cardId === "BG24_719" ? minionTier + 1 : minionTier + 2;
362
- const maxTier = !!((_p = gameState.anomalies) === null || _p === void 0 ? void 0 : _p.includes("BG27_Anomaly_504"))
363
- ? 7
364
- : 6;
365
- const newMinionId = gameState.cardsData.getRandomMinionForTavernTier(Math.min(maxTier, targetTier));
366
- const targetBoard = board.includes(target) ? board : otherBoard;
367
- const targetHero = board.includes(target) ? hero : otherHero;
368
- const newMinion = (0, utils_2.buildSingleBoardEntity)(newMinionId, hero, board, gameState.allCards, targetHero.friendly, gameState.sharedState.currentEntityId++, false, gameState.cardsData, gameState.sharedState, null);
369
- const index = targetBoard.indexOf(target);
370
- targetBoard.splice(index, 1, newMinion);
371
- gameState.spectator.registerPowerTarget(entity, newMinion, targetBoard, hero, otherHero);
372
- }
373
- break;
374
- case "BGS_069":
375
- case "TB_BaconUps_121":
376
- const numberOfTribes = extractUniqueTribes(board, gameState.allCards).length;
377
- const amalgadonMultiplier = entity.cardId === "BGS_069" ? 1 : 2;
378
- const totalAdapts = amalgadonMultiplier * numberOfTribes;
379
- for (let i = 0; i < totalAdapts; i++) {
380
- const adapts = [
381
- "UNG_999t3",
382
- "UNG_999t2",
383
- "UNG_999t14",
384
- "UNG_999t4",
385
- ];
386
- if (!entity.divineShield) {
387
- adapts.push("UNG_999t8");
71
+ case "BG23_002":
72
+ case "BG23_002_G":
73
+ const shellCollectorCardsToAdd = entity.cardId === "BG23_002"
74
+ ? ["GAME_005"]
75
+ : ["GAME_005", "GAME_005"];
76
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, shellCollectorCardsToAdd, gameState);
77
+ break;
78
+ case "BGS_082":
79
+ case "TB_BaconUps_144":
80
+ const menagerieMugStats = entity.cardId === "BGS_082" ? 1 : 2;
81
+ (0, utils_2.grantStatsToMinionsOfEachType)(entity, board, hero, menagerieMugStats, menagerieMugStats, gameState, 3);
82
+ break;
83
+ case "BGS_083":
84
+ case "TB_BaconUps_145":
85
+ const menagerieJugStats = entity.cardId === "BGS_083" ? 2 : 4;
86
+ (0, utils_2.grantStatsToMinionsOfEachType)(entity, board, hero, menagerieJugStats, menagerieJugStats, gameState, 3);
87
+ break;
88
+ case "BG25_011":
89
+ case "BG25_011_G":
90
+ const nerubianDeathswarmerStats = entity.cardId === "BG25_011" ? 1 : 2;
91
+ hero.globalInfo.UndeadAttackBonus =
92
+ ((_b = (_a = hero.globalInfo) === null || _a === void 0 ? void 0 : _a.UndeadAttackBonus) !== null && _b !== void 0 ? _b : 0) + nerubianDeathswarmerStats;
93
+ (0, utils_2.addStatsToBoard)(entity, board, hero, nerubianDeathswarmerStats, 0, gameState, reference_data_1.Race[reference_data_1.Race.UNDEAD]);
94
+ break;
95
+ case "BG_AT_069":
96
+ case "BG_AT_069_G":
97
+ const sparringPartnersTargets = allMinions.filter((e) => !e.taunt);
98
+ const sparringPartnersTarget = (0, utils_1.pickRandom)(sparringPartnersTargets);
99
+ if (sparringPartnersTarget) {
100
+ (0, taunt_1.updateTaunt)(sparringPartnersTarget, true, board, hero, otherHero, gameState);
388
101
  }
389
- if (!entity.windfury) {
390
- adapts.push("UNG_999t7");
102
+ break;
103
+ case "BGS_038":
104
+ case "TB_BaconUps_108":
105
+ const twilightEmissaryTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.DRAGON, gameState.allCards);
106
+ if (!!twilightEmissaryTarget) {
107
+ const twilightEmissaryStats = entity.cardId === "BGS_038" ? 2 : 4;
108
+ (0, stats_1.modifyStats)(twilightEmissaryTarget, twilightEmissaryStats, twilightEmissaryStats, board, hero, gameState);
109
+ gameState.spectator.registerPowerTarget(entity, twilightEmissaryTarget, board, hero, otherHero);
391
110
  }
392
- if (!entity.taunt) {
393
- adapts.push("UNG_999t6");
111
+ break;
112
+ case "BGS_053":
113
+ case "TB_BaconUps_138":
114
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BGS_053" ? 3 : 6, 0, gameState, reference_data_1.Race[reference_data_1.Race.PIRATE]);
115
+ break;
116
+ case "BG29_502":
117
+ case "BG29_502_G":
118
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, 0, entity.cardId === "BG29_502" ? 4 : 8, gameState, reference_data_1.Race[reference_data_1.Race.PIRATE]);
119
+ break;
120
+ case "BG_EX1_103":
121
+ case "TB_BaconUps_064":
122
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, 0, entity.cardId === "BG_EX1_103" ? 2 : 4, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
123
+ break;
124
+ case "BG_BT_010":
125
+ case "TB_BaconUps_124":
126
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "TB_BaconUps_124" ? 2 : 1, entity.cardId === "TB_BaconUps_124" ? 2 : 1, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
127
+ break;
128
+ case "BG26_522":
129
+ case "BG26_522_G":
130
+ const numberOfTimesToTrigger = entity.cardId === "BG26_522" ? 1 : 2;
131
+ for (let i = 0; i < numberOfTimesToTrigger; i++) {
132
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, 2, 2, gameState, reference_data_1.Race[reference_data_1.Race.DEMON]);
133
+ (0, damage_to_hero_1.dealDamageToHero)(entity, hero, board, 2, gameState);
394
134
  }
395
- if (!entity.venomous && !entity.poisonous) {
396
- adapts.push("UNG_999t13");
135
+ break;
136
+ case "BG26_159":
137
+ case "BG26_159_G":
138
+ const moonBaconJazzerStats = entity.cardId === "BG26_159" ? 1 : 2;
139
+ hero.globalInfo.BloodGemHealthBonus =
140
+ ((_d = (_c = hero.globalInfo) === null || _c === void 0 ? void 0 : _c.BloodGemHealthBonus) !== null && _d !== void 0 ? _d : 0) + moonBaconJazzerStats;
141
+ break;
142
+ case "BG21_021":
143
+ case "BG21_021_G":
144
+ const smoggerLoops = entity.cardId === "BG21_021" ? 1 : 2;
145
+ for (let i = 0; i < smoggerLoops; i++) {
146
+ const smoggerTarget = (0, utils_2.getRandomAliveMinion)(board, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards);
147
+ const smoggerStats = (_e = hero.tavernTier) !== null && _e !== void 0 ? _e : 3;
148
+ (0, stats_1.modifyStats)(smoggerTarget, smoggerStats, smoggerStats, board, hero, gameState);
149
+ gameState.spectator.registerPowerTarget(entity, smoggerTarget, board, hero, otherHero);
397
150
  }
398
- const adapt = (0, utils_1.pickRandom)(adapts);
399
- switch (adapt) {
400
- case "UNG_999t3":
401
- (0, stats_1.modifyStats)(entity, 3, 0, board, hero, gameState);
402
- break;
403
- case "UNG_999t2":
404
- entity.enchantments = (_q = entity.enchantments) !== null && _q !== void 0 ? _q : [];
405
- entity.enchantments.push({
406
- cardId: "UNG_999t2e",
407
- timing: 0,
408
- });
409
- break;
410
- case "UNG_999t7":
411
- entity.windfury = true;
412
- break;
413
- case "UNG_999t6":
414
- entity.taunt = true;
415
- break;
416
- case "UNG_999t13":
417
- entity.poisonous = true;
418
- break;
419
- case "UNG_999t4":
420
- (0, stats_1.modifyStats)(entity, 0, 3, board, hero, gameState);
421
- break;
422
- case "UNG_999t8":
423
- entity.divineShield = true;
424
- break;
425
- case "UNG_999t14":
426
- (0, stats_1.modifyStats)(entity, 1, 1, board, hero, gameState);
427
- break;
151
+ break;
152
+ case "BGS_010":
153
+ case "TB_BaconUps_083":
154
+ const startingHp = hero.cardId === "TB_BaconShop_HERO_34" ? 60 : 30;
155
+ const hpMissing = startingHp - hero.hpLeft;
156
+ const annihilanStats = (entity.cardId === "BGS_010" ? 2 : 4) * hpMissing;
157
+ (0, stats_1.modifyStats)(entity, 0, annihilanStats, board, hero, gameState);
158
+ gameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);
159
+ break;
160
+ case "BG20_202":
161
+ case "BG20_202_G":
162
+ const necrolyteBloodGems = entity.cardId === "BG20_202" ? 2 : 4;
163
+ const necrolyteTarget = (0, utils_1.pickRandom)(board);
164
+ (0, blood_gems_1.playBloodGemsOn)(entity, necrolyteTarget, necrolyteBloodGems, board, hero, gameState);
165
+ gameState.spectator.registerPowerTarget(entity, necrolyteTarget, board, hero, otherHero);
166
+ const necrolyteTargetNeighbours = (0, attack_1.getNeighbours)(board, necrolyteTarget);
167
+ for (const neighbour of necrolyteTargetNeighbours) {
168
+ const bloodGemStatsEnchantment = (_f = neighbour.enchantments) === null || _f === void 0 ? void 0 : _f.find((e) => e.cardId === "BG20_GEMe2");
169
+ if (bloodGemStatsEnchantment) {
170
+ const atk = (_g = bloodGemStatsEnchantment.tagScriptDataNum1) !== null && _g !== void 0 ? _g : 0;
171
+ const heath = (_h = bloodGemStatsEnchantment.tagScriptDataNum2) !== null && _h !== void 0 ? _h : 0;
172
+ neighbour.attack = Math.max(0, neighbour.attack - atk);
173
+ neighbour.health = Math.max(1, neighbour.health - heath);
174
+ neighbour.maxHealth = Math.max(1, neighbour.maxHealth - heath);
175
+ necrolyteTarget.attack += atk;
176
+ necrolyteTarget.health += heath;
177
+ necrolyteTarget.maxHealth += heath;
178
+ gameState.spectator.registerPowerTarget(necrolyteTarget, neighbour, board, hero, otherHero);
179
+ }
428
180
  }
429
- }
430
- break;
431
- case "BG28_550":
432
- case "BG28_550_G":
433
- const rodeoPerformerCardsToAdd = entity.cardId === "BG28_550_G" ? [null] : [null, null];
434
- (0, cards_in_hand_1.addCardsInHand)(hero, board, rodeoPerformerCardsToAdd, gameState);
435
- break;
436
- case "BG28_630":
437
- case "BG28_630_G":
438
- const eagillMultiplier = entity.cardId === "BG28_630" ? 1 : 2;
439
- const eagillBoardTarget = (0, utils_1.pickRandom)(board.filter((e) => e.entityId !== entity.entityId));
440
- if (eagillBoardTarget) {
441
- (0, stats_1.modifyStats)(eagillBoardTarget, 2 * eagillMultiplier, 3 * eagillMultiplier, board, hero, gameState);
442
- gameState.spectator.registerPowerTarget(entity, eagillBoardTarget, board, hero, otherHero);
443
- }
444
- const eagillHandTarget = (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]; }));
445
- if (eagillHandTarget) {
446
- (0, stats_1.modifyStats)(eagillHandTarget, 2 * eagillMultiplier, 3 * eagillMultiplier, board, hero, gameState);
447
- gameState.spectator.registerPowerTarget(entity, eagillHandTarget, board, hero, otherHero);
448
- }
449
- break;
450
- case "TB_BaconShop_HERO_34_Buddy":
451
- case "TB_BaconShop_HERO_34_Buddy_G":
452
- const weebominationMultiplier = entity.cardId === "TB_BaconShop_HERO_34_Buddy" ? 1 : 2;
453
- const weebominationTarget = (0, utils_1.pickRandom)(allMinions);
454
- if (weebominationTarget) {
455
- const heroMaxHealth = (_s = (_r = gameState.allCards.getCard(hero.cardId)) === null || _r === void 0 ? void 0 : _r.health) !== null && _s !== void 0 ? _s : 40;
456
- const heroMissingHealth = heroMaxHealth - hero.hpLeft;
457
- const weebominationBuff = weebominationMultiplier * heroMissingHealth;
458
- (0, stats_1.modifyStats)(weebominationTarget, 0, weebominationBuff, board, hero, gameState);
459
- gameState.spectator.registerPowerTarget(entity, weebominationTarget, board, hero, otherHero);
460
- }
461
- break;
462
- case "BG29_845":
463
- case "BG29_845_G":
464
- const assistantGuardMultiplier = entity.cardId === "BG29_845" ? 1 : 2;
465
- const assistantGuardTarget = (0, utils_1.pickRandom)(allMinions);
466
- if (assistantGuardTarget) {
467
- assistantGuardTarget.taunt = true;
468
- gameState.spectator.registerPowerTarget(entity, assistantGuardTarget, board, hero, otherHero);
469
- }
470
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => !!e.taunt), hero, assistantGuardMultiplier * 2, assistantGuardMultiplier * 3, gameState);
471
- break;
472
- case "BG29_803":
473
- case "BG29_803_G":
474
- const goldshellMultiplier = entity.cardId === "BG29_803_G" ? 2 : 1;
475
- (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, goldshellMultiplier * 2, goldshellMultiplier * 4, gameState, reference_data_1.Race[reference_data_1.Race.BEAST]);
476
- break;
477
- case "BG26_045":
478
- case "BG26_045_G":
479
- const shellWhistlerCardsToAdd = entity.cardId === "BG26_045_G" ? [null] : [null, null];
480
- (0, cards_in_hand_1.addCardsInHand)(hero, board, shellWhistlerCardsToAdd, gameState);
481
- break;
482
- case "BG25_155":
483
- case "BG25_155_G":
484
- const gemSmugglerBloodGems = entity.cardId === "BG25_155" ? 1 : 2;
485
- board
486
- .filter((e) => e.entityId !== entity.entityId)
487
- .forEach((e) => (0, blood_gems_1.playBloodGemsOn)(entity, e, gemSmugglerBloodGems, board, hero, gameState));
488
- break;
489
- case "BG28_303":
490
- case "BG28_303_G":
491
- const disguisedGraverobberTarget = (0, utils_1.pickRandomAlive)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.UNDEAD, gameState.allCards)));
492
- if (disguisedGraverobberTarget) {
493
- const disguisedGraverobberNumberOfCopies = entity.cardId === "BG28_303" ? 1 : 2;
494
- disguisedGraverobberTarget.definitelyDead = true;
495
- const copies = Array.from({ length: disguisedGraverobberNumberOfCopies }).map((_) => disguisedGraverobberTarget.cardId);
496
- (0, cards_in_hand_1.addCardsInHand)(hero, board, copies, gameState);
497
- }
498
- break;
499
- case "BGDUO_104":
500
- case "BGDUO_104_G":
501
- const playerState = (0, utils_2.getPlayerState)(gameState.gameState, hero);
502
- if (playerState) {
503
- const cardsToAdd = entity.cardId === "BGDUO_104"
181
+ break;
182
+ case "BGS_020":
183
+ case "TB_BaconUps_089":
184
+ const primalfinLoops = entity.cardId === "BGS_020" ? 1 : 2;
185
+ for (let i = 0; i < primalfinLoops; i++) {
186
+ const discoverOptions = [
187
+ gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_j = hero.tavernTier) !== null && _j !== void 0 ? _j : 1),
188
+ gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_k = hero.tavernTier) !== null && _k !== void 0 ? _k : 1),
189
+ gameState.cardsData.getRandomMinionForTribe(reference_data_1.Race.MURLOC, (_l = hero.tavernTier) !== null && _l !== void 0 ? _l : 1),
190
+ ];
191
+ const picked = (0, utils_1.pickRandom)(discoverOptions);
192
+ const others = discoverOptions.filter((e) => e !== picked);
193
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, [picked], gameState);
194
+ (0, discover_1.afterDiscover)(hero, board, picked, others, gameState);
195
+ gameState.spectator.registerPowerTarget(entity, hero, board, hero, otherHero);
196
+ break;
197
+ }
198
+ break;
199
+ case "BG_ICC_807":
200
+ case "TB_BaconUps_072":
201
+ const strongshellScavengerStats = entity.cardId === "BG_ICC_807" ? 2 : 4;
202
+ const strongshellScavengerTargets = board
203
+ .filter((e) => e.entityId != entity.entityId)
204
+ .filter((e) => e.taunt);
205
+ strongshellScavengerTargets.forEach((target) => {
206
+ (0, stats_1.modifyStats)(target, strongshellScavengerStats, strongshellScavengerStats, board, hero, gameState);
207
+ gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
208
+ });
209
+ break;
210
+ case "BG24_023":
211
+ case "BG24_023_G":
212
+ const vigilantStonebornTarget = (0, utils_1.pickRandom)(board);
213
+ const vigilantStonebornStats = entity.cardId === "BG24_023" ? 6 : 12;
214
+ (0, taunt_1.updateTaunt)(vigilantStonebornTarget, true, board, hero, otherHero, gameState);
215
+ (0, stats_1.modifyStats)(vigilantStonebornTarget, 0, vigilantStonebornStats, board, hero, gameState);
216
+ gameState.spectator.registerPowerTarget(entity, vigilantStonebornTarget, board, hero, otherHero);
217
+ break;
218
+ case "BG26_ICC_705":
219
+ case "BG26_ICC_705_G":
220
+ const bonemareTarget = (0, utils_1.pickRandom)(board);
221
+ const bonemareStats = entity.cardId === "BG26_ICC_705" ? 4 : 8;
222
+ (0, taunt_1.updateTaunt)(bonemareTarget, true, board, hero, otherHero, gameState);
223
+ (0, stats_1.modifyStats)(bonemareTarget, bonemareStats, bonemareStats, board, hero, gameState);
224
+ gameState.spectator.registerPowerTarget(entity, bonemareTarget, board, hero, otherHero);
225
+ break;
226
+ case "BG25_309":
227
+ case "BG25_309_G":
228
+ const generalDrakkisathCardsToAdd = entity.cardId === "BG25_309"
229
+ ? ["BG25_309t"]
230
+ : [
231
+ "BG25_309t",
232
+ "BG25_309t",
233
+ ];
234
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, generalDrakkisathCardsToAdd, gameState);
235
+ break;
236
+ case "BGS_030":
237
+ case "TB_BaconUps_100":
238
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BGS_030" ? 3 : 6, entity.cardId === "BGS_030" ? 3 : 6, gameState, reference_data_1.Race[reference_data_1.Race.MURLOC]);
239
+ break;
240
+ case "BGS_043":
241
+ case "TB_BaconUps_110":
242
+ const murozondCardsToAdd = entity.cardId === "BGS_043"
504
243
  ? ["GAME_005"]
505
244
  : ["GAME_005", "GAME_005"];
506
- (0, cards_in_hand_1.addCardsInHand)(playerState.player, playerState.board, cardsToAdd, gameState);
507
- }
508
- break;
509
- case "BGDUO_111":
510
- case "BGDUO_111_G":
511
- const cardsToAdd = entity.cardId === "BGDUO_111"
512
- ? ["BG20_GEM"]
513
- : ["BG20_GEM", "BG20_GEM"];
514
- (0, cards_in_hand_1.addCardsInHand)(gameState.gameState.player.player, gameState.gameState.player.board, cardsToAdd, gameState);
515
- if (gameState.gameState.player.teammate) {
516
- (0, cards_in_hand_1.addCardsInHand)(gameState.gameState.player.teammate.player, gameState.gameState.player.teammate.board, cardsToAdd, gameState);
517
- }
518
- break;
519
- case "BGDUO_119":
520
- case "BGDUO_119_G":
521
- const conductorTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards)));
522
- if (!!conductorTarget) {
523
- const targetBoard = board.includes(conductorTarget) ? board : otherBoard;
524
- const targetHero = board.includes(conductorTarget) ? hero : otherHero;
525
- const multiplier = entity.cardId === "BGDUO_119" ? 1 : 2;
526
- const attackStats = 2 * ((_t = entity.scriptDataNum1) !== null && _t !== void 0 ? _t : 1) * multiplier;
527
- const healthStats = 2 * ((_u = entity.scriptDataNum1) !== null && _u !== void 0 ? _u : 1) * multiplier;
528
- (0, stats_1.modifyStats)(conductorTarget, attackStats, healthStats, targetBoard, targetHero, gameState);
529
- gameState.spectator.registerPowerTarget(entity, conductorTarget, targetBoard, hero, otherHero);
530
- }
531
- break;
532
- case "BGDUO_HERO_100_Buddy":
533
- case "BGDUO_HERO_100_Buddy_G":
534
- const facelessOneCardsToAdd = entity.cardId === "BGDUO_HERO_100_Buddy" ? [null] : [null, null];
535
- (0, cards_in_hand_1.addCardsInHand)(hero, board, facelessOneCardsToAdd, gameState);
536
- break;
537
- case "TB_BaconShop_HERO_91_Buddy":
538
- case "TB_BaconShop_HERO_91_Buddy_G":
539
- const phyreszCardsToAdd = entity.cardId === "TB_BaconShop_HERO_91_Buddy" ? [null] : [null, null];
540
- (0, cards_in_hand_1.addCardsInHand)(hero, board, phyreszCardsToAdd, gameState);
541
- break;
542
- case "TB_BaconShop_HERO_23_Buddy":
543
- case "TB_BaconShop_HERO_23_Buddy_G":
544
- const muckslingerCardsToAdd = entity.cardId === "TB_BaconShop_HERO_23_Buddy"
545
- ? [(0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions)]
546
- : [
547
- (0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions),
548
- (0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions),
549
- ];
550
- (0, cards_in_hand_1.addCardsInHand)(hero, board, muckslingerCardsToAdd, gameState);
551
- break;
552
- case "BG29_861":
553
- case "BG29_861_G":
554
- const barrendsBrawlerCardsToAdd = entity.cardId === "BG29_861"
555
- ? [(0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions)]
556
- : [
557
- (0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions),
558
- (0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions),
559
- ];
560
- (0, cards_in_hand_1.addCardsInHand)(hero, board, barrendsBrawlerCardsToAdd, gameState);
561
- break;
562
- case "TB_BaconShop_HERO_56_Buddy":
563
- case "TB_BaconShop_HERO_56_Buddy_G":
564
- const vaelastraszBonus = entity.cardId === "TB_BaconShop_HERO_56_Buddy_G" ? 6 : 3;
565
- board
566
- .filter((e) => e.entityId !== entity.entityId)
567
- .forEach((e) => {
568
- (0, stats_1.modifyStats)(e, vaelastraszBonus, vaelastraszBonus, board, hero, gameState);
569
- });
570
- break;
571
- case "BG29_503":
572
- case "BG29_503_G":
573
- const boardWithMechs = board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MECH, gameState.allCards));
574
- const junkerTarget = (0, utils_1.pickRandom)(boardWithMechs);
575
- if (junkerTarget) {
576
- const numberOfMagnetizes = entity.cardId === "BG29_503" ? 1 : 2;
577
- for (let i = 0; i < numberOfMagnetizes; i++) {
578
- const minionToMagnetize = gameState.cardsData.getRandomMechToMagnetize((_v = hero.tavernTier) !== null && _v !== void 0 ? _v : 1);
579
- gameState.spectator.registerPowerTarget(entity, junkerTarget, board, null, null);
580
- (0, magnetize_1.magnetizeToTarget)(junkerTarget, minionToMagnetize, board, hero, gameState);
245
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, murozondCardsToAdd, gameState);
246
+ break;
247
+ case "BGS_123":
248
+ case "TB_BaconUps_162":
249
+ const tavernTempestCardsToAdd = entity.cardId === "BGS_123"
250
+ ? ["GAME_005"]
251
+ : ["GAME_005", "GAME_005"];
252
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, tavernTempestCardsToAdd, gameState);
253
+ break;
254
+ case "BG25_807":
255
+ case "BG25_807_G":
256
+ const mechaJaraxxusCardsToAdd = entity.cardId === "BG25_807"
257
+ ? ["GAME_005"]
258
+ : ["GAME_005", "GAME_005"];
259
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, mechaJaraxxusCardsToAdd, gameState);
260
+ break;
261
+ case "BG27_002":
262
+ case "BG27_002_G":
263
+ const oozelingCardsToAdd = entity.cardId === "BG27_002"
264
+ ? ["GAME_005", "GAME_005"]
265
+ : ["GAME_005", "GAME_005", "GAME_005", "GAME_005"];
266
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, oozelingCardsToAdd, gameState);
267
+ break;
268
+ case "BG23_190":
269
+ case "BG23_190_G":
270
+ const utherTarget = (0, utils_1.pickRandom)(allMinions);
271
+ const utherStats = entity.cardId === "BG23_190" ? 15 : 30;
272
+ utherTarget.attack = utherStats;
273
+ utherTarget.health = utherStats;
274
+ utherTarget.maxHealth = utherStats;
275
+ break;
276
+ case "BG27_000":
277
+ case "BG27_000_G":
278
+ const ironGroundskeeperTargets = allMinions;
279
+ const ironGroundskeeperTarget = (0, utils_1.pickRandom)(ironGroundskeeperTargets);
280
+ (0, taunt_1.updateTaunt)(ironGroundskeeperTarget, !ironGroundskeeperTarget.taunt, board, hero, otherHero, gameState);
281
+ break;
282
+ case "BG27_001":
283
+ case "BG27_001_G":
284
+ const differentTypes = extractUniqueTribes(board, gameState.allCards);
285
+ const livingConstellationStats = (entity.cardId === "BG27_001" ? 1 : 2) * differentTypes.length;
286
+ const livingConstellationTarget = (0, utils_1.pickRandom)(allMinions);
287
+ const boardForTarget = board.includes(livingConstellationTarget) ? board : otherBoard;
288
+ (0, stats_1.modifyStats)(livingConstellationTarget, livingConstellationStats, livingConstellationStats, boardForTarget, hero, gameState);
289
+ gameState.spectator.registerPowerTarget(entity, livingConstellationTarget, boardForTarget, hero, otherHero);
290
+ break;
291
+ case "BG26_001":
292
+ case "BG26_001_G":
293
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG26_001" ? 2 : 4, entity.cardId === "BG26_001" ? 2 : 4, gameState);
294
+ break;
295
+ case "BG27_019":
296
+ case "BG27_019_G":
297
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, entity.cardId === "BG27_019" ? 1 : 2, entity.cardId === "BG27_019" ? 1 : 2, gameState);
298
+ (0, utils_2.addStatsToBoard)(entity, otherBoard, hero, entity.cardId === "BG27_019" ? 1 : 2, entity.cardId === "BG27_019" ? 1 : 2, gameState);
299
+ break;
300
+ case "BG27_018":
301
+ case "BG27_018_G":
302
+ const emergentFlameTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards)));
303
+ if (!!emergentFlameTarget) {
304
+ const targetBoard = board.includes(emergentFlameTarget) ? board : otherBoard;
305
+ const targetHero = board.includes(emergentFlameTarget) ? hero : otherHero;
306
+ const emergentFlameMultiplier = entity.cardId === "BG27_018" ? 1 : 2;
307
+ const emergentFlameStats = ((_m = entity.scriptDataNum1) !== null && _m !== void 0 ? _m : 1) * emergentFlameMultiplier;
308
+ (0, stats_1.modifyStats)(emergentFlameTarget, emergentFlameStats, emergentFlameStats, targetBoard, targetHero, gameState);
309
+ gameState.spectator.registerPowerTarget(entity, emergentFlameTarget, targetBoard, hero, otherHero);
581
310
  }
582
- }
583
- break;
584
- case "BG23_HERO_306_Buddy":
585
- case "BG23_HERO_306_Buddy_G":
586
- const nathanosTarget = (0, utils_1.pickRandom)(board);
587
- if (nathanosTarget) {
588
- gameState.spectator.registerPowerTarget(entity, nathanosTarget, board, null, null);
589
- nathanosTarget.definitelyDead = true;
590
- const buffMultiplier = entity.cardId === "BG23_HERO_306_Buddy" ? 1 : 2;
591
- const attackBuff = nathanosTarget.attack * buffMultiplier;
592
- const healthBuff = nathanosTarget.health * buffMultiplier;
593
- const buffTargets = (0, attack_1.getNeighbours)(board, nathanosTarget);
594
- buffTargets.forEach((e) => {
595
- (0, stats_1.modifyStats)(e, attackBuff, healthBuff, board, hero, gameState);
596
- gameState.spectator.registerPowerTarget(entity, e, board, null, null);
311
+ break;
312
+ case "BG25_309t":
313
+ case "BG25_309_Gt":
314
+ const smolderwingTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.DRAGON, gameState.allCards)));
315
+ if (!!smolderwingTarget) {
316
+ const targetBoard = board.includes(smolderwingTarget) ? board : otherBoard;
317
+ const targetHero = board.includes(smolderwingTarget) ? hero : otherHero;
318
+ const smolderwingMultiplier = entity.cardId === "BG25_309t" ? 1 : 2;
319
+ const smolderwingStats = 5 * smolderwingMultiplier;
320
+ (0, stats_1.modifyStats)(smolderwingTarget, smolderwingStats, 0, targetBoard, targetHero, gameState);
321
+ }
322
+ break;
323
+ case "BG_SCH_149":
324
+ case "TB_BaconUps_308":
325
+ const highestAttack = Math.max(...allMinions.map((minion) => minion.attack));
326
+ const highestHealth = Math.max(...allMinions.map((minion) => minion.health));
327
+ const argentBraggartMultiplier = entity.cardId === "BG_SCH_149" ? 1 : 2;
328
+ entity.attack = argentBraggartMultiplier * highestAttack;
329
+ entity.health = argentBraggartMultiplier * highestHealth;
330
+ break;
331
+ case "BG25_034":
332
+ case "BG25_034_G":
333
+ const captainSandersTarget = (0, utils_1.pickRandom)(board.filter((e) => !(0, golden_1.isMinionGolden)(e, gameState.allCards)));
334
+ if (captainSandersTarget) {
335
+ (0, golden_1.makeMinionGolden)(captainSandersTarget, entity, board, hero, otherHero, gameState);
336
+ }
337
+ break;
338
+ case "BG23_017":
339
+ case "BG23_017_G":
340
+ const sanguineChampionStats = entity.cardId === "BG23_017" ? 1 : 2;
341
+ hero.globalInfo.BloodGemAttackBonus += sanguineChampionStats;
342
+ hero.globalInfo.BloodGemHealthBonus += sanguineChampionStats;
343
+ break;
344
+ case "BG24_012":
345
+ case "BG24_012_G":
346
+ const murkyScale = entity.cardId === "BG24_012" ? 1 : 2;
347
+ const murlocsControlled = board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)).length;
348
+ const murkyStats = murkyScale * 3 * murlocsControlled;
349
+ const murkyTarget = (0, utils_1.pickRandom)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)));
350
+ if (!!murkyTarget) {
351
+ (0, stats_1.modifyStats)(murkyTarget, murkyStats, murkyStats, board, hero, gameState);
352
+ }
353
+ break;
354
+ case "BG26_814":
355
+ case "BG26_814_G":
356
+ const balladistMultiplier = entity.cardId === "BG26_814" ? 1 : 2;
357
+ const balladistStats = balladistMultiplier * ((_o = entity.scriptDataNum1) !== null && _o !== void 0 ? _o : 0);
358
+ const balladistTargets = allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.PIRATE, gameState.allCards));
359
+ const balladistTarget = (0, utils_1.pickRandom)(balladistTargets);
360
+ if (balladistTarget) {
361
+ const targetBoard = board.includes(balladistTarget) ? board : otherBoard;
362
+ const targetHero = board.includes(balladistTarget) ? hero : otherHero;
363
+ (0, stats_1.modifyStats)(balladistTarget, 0, balladistStats, targetBoard, targetHero, gameState);
364
+ gameState.spectator.registerPowerTarget(entity, balladistTarget, targetBoard, targetHero, otherHero);
365
+ }
366
+ break;
367
+ case "BG24_719":
368
+ case "BG24_719_G":
369
+ const target = (0, utils_1.pickRandom)(allMinions.filter((e) => !e.definitelyDead && e.health > 0));
370
+ if (target) {
371
+ gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
372
+ const minionTier = gameState.cardsData.getTavernLevel(target.cardId);
373
+ const targetTier = entity.cardId === "BG24_719" ? minionTier + 1 : minionTier + 2;
374
+ const maxTier = !!((_p = gameState.anomalies) === null || _p === void 0 ? void 0 : _p.includes("BG27_Anomaly_504"))
375
+ ? 7
376
+ : 6;
377
+ const newMinionId = gameState.cardsData.getRandomMinionForTavernTier(Math.min(maxTier, targetTier));
378
+ const targetBoard = board.includes(target) ? board : otherBoard;
379
+ const targetHero = board.includes(target) ? hero : otherHero;
380
+ const newMinion = (0, utils_2.buildSingleBoardEntity)(newMinionId, hero, board, gameState.allCards, targetHero.friendly, gameState.sharedState.currentEntityId++, false, gameState.cardsData, gameState.sharedState, null);
381
+ const index = targetBoard.indexOf(target);
382
+ targetBoard.splice(index, 1, newMinion);
383
+ gameState.spectator.registerPowerTarget(entity, newMinion, targetBoard, hero, otherHero);
384
+ }
385
+ break;
386
+ case "BGS_069":
387
+ case "TB_BaconUps_121":
388
+ const numberOfTribes = extractUniqueTribes(board, gameState.allCards).length;
389
+ const amalgadonMultiplier = entity.cardId === "BGS_069" ? 1 : 2;
390
+ const totalAdapts = amalgadonMultiplier * numberOfTribes;
391
+ for (let i = 0; i < totalAdapts; i++) {
392
+ const adapts = [
393
+ "UNG_999t3",
394
+ "UNG_999t2",
395
+ "UNG_999t14",
396
+ "UNG_999t4",
397
+ ];
398
+ if (!entity.divineShield) {
399
+ adapts.push("UNG_999t8");
400
+ }
401
+ if (!entity.windfury) {
402
+ adapts.push("UNG_999t7");
403
+ }
404
+ if (!entity.taunt) {
405
+ adapts.push("UNG_999t6");
406
+ }
407
+ if (!entity.venomous && !entity.poisonous) {
408
+ adapts.push("UNG_999t13");
409
+ }
410
+ const adapt = (0, utils_1.pickRandom)(adapts);
411
+ switch (adapt) {
412
+ case "UNG_999t3":
413
+ (0, stats_1.modifyStats)(entity, 3, 0, board, hero, gameState);
414
+ break;
415
+ case "UNG_999t2":
416
+ entity.enchantments = (_q = entity.enchantments) !== null && _q !== void 0 ? _q : [];
417
+ entity.enchantments.push({
418
+ cardId: "UNG_999t2e",
419
+ timing: 0,
420
+ });
421
+ break;
422
+ case "UNG_999t7":
423
+ (0, windfury_1.updateWindfury)(entity, true, board, hero, otherHero, gameState);
424
+ break;
425
+ case "UNG_999t6":
426
+ (0, taunt_1.updateTaunt)(entity, true, board, hero, otherHero, gameState);
427
+ break;
428
+ case "UNG_999t13":
429
+ entity.poisonous = true;
430
+ break;
431
+ case "UNG_999t4":
432
+ (0, stats_1.modifyStats)(entity, 0, 3, board, hero, gameState);
433
+ break;
434
+ case "UNG_999t8":
435
+ (0, divine_shield_1.updateDivineShield)(entity, board, hero, otherHero, true, gameState);
436
+ break;
437
+ case "UNG_999t14":
438
+ (0, stats_1.modifyStats)(entity, 1, 1, board, hero, gameState);
439
+ break;
440
+ }
441
+ }
442
+ break;
443
+ case "BG28_550":
444
+ case "BG28_550_G":
445
+ const rodeoPerformerCardsToAdd = entity.cardId === "BG28_550_G" ? [null] : [null, null];
446
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, rodeoPerformerCardsToAdd, gameState);
447
+ break;
448
+ case "BG28_630":
449
+ case "BG28_630_G":
450
+ const eagillMultiplier = entity.cardId === "BG28_630" ? 1 : 2;
451
+ const eagillBoardTarget = (0, utils_1.pickRandom)(board.filter((e) => e.entityId !== entity.entityId));
452
+ if (eagillBoardTarget) {
453
+ (0, stats_1.modifyStats)(eagillBoardTarget, 2 * eagillMultiplier, 3 * eagillMultiplier, board, hero, gameState);
454
+ gameState.spectator.registerPowerTarget(entity, eagillBoardTarget, board, hero, otherHero);
455
+ }
456
+ const eagillHandTarget = (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]; }));
457
+ if (eagillHandTarget) {
458
+ (0, stats_1.modifyStats)(eagillHandTarget, 2 * eagillMultiplier, 3 * eagillMultiplier, board, hero, gameState);
459
+ gameState.spectator.registerPowerTarget(entity, eagillHandTarget, board, hero, otherHero);
460
+ }
461
+ break;
462
+ case "TB_BaconShop_HERO_34_Buddy":
463
+ case "TB_BaconShop_HERO_34_Buddy_G":
464
+ const weebominationMultiplier = entity.cardId === "TB_BaconShop_HERO_34_Buddy" ? 1 : 2;
465
+ const weebominationTarget = (0, utils_1.pickRandom)(allMinions);
466
+ if (weebominationTarget) {
467
+ const heroMaxHealth = (_s = (_r = gameState.allCards.getCard(hero.cardId)) === null || _r === void 0 ? void 0 : _r.health) !== null && _s !== void 0 ? _s : 40;
468
+ const heroMissingHealth = heroMaxHealth - hero.hpLeft;
469
+ const weebominationBuff = weebominationMultiplier * heroMissingHealth;
470
+ (0, stats_1.modifyStats)(weebominationTarget, 0, weebominationBuff, board, hero, gameState);
471
+ gameState.spectator.registerPowerTarget(entity, weebominationTarget, board, hero, otherHero);
472
+ }
473
+ break;
474
+ case "BG29_845":
475
+ case "BG29_845_G":
476
+ const assistantGuardMultiplier = entity.cardId === "BG29_845" ? 1 : 2;
477
+ const assistantGuardTarget = (0, utils_1.pickRandom)(allMinions);
478
+ if (assistantGuardTarget) {
479
+ (0, taunt_1.updateTaunt)(assistantGuardTarget, true, board, hero, otherHero, gameState);
480
+ gameState.spectator.registerPowerTarget(entity, assistantGuardTarget, board, hero, otherHero);
481
+ }
482
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => !!e.taunt), hero, assistantGuardMultiplier * 2, assistantGuardMultiplier * 3, gameState);
483
+ break;
484
+ case "BG29_803":
485
+ case "BG29_803_G":
486
+ const goldshellMultiplier = entity.cardId === "BG29_803_G" ? 2 : 1;
487
+ (0, utils_2.addStatsToBoard)(entity, board.filter((e) => e.entityId != entity.entityId), hero, goldshellMultiplier * 2, goldshellMultiplier * 4, gameState, reference_data_1.Race[reference_data_1.Race.BEAST]);
488
+ break;
489
+ case "BG26_045":
490
+ case "BG26_045_G":
491
+ const shellWhistlerCardsToAdd = entity.cardId === "BG26_045_G" ? [null] : [null, null];
492
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, shellWhistlerCardsToAdd, gameState);
493
+ break;
494
+ case "BG25_155":
495
+ case "BG25_155_G":
496
+ const gemSmugglerBloodGems = entity.cardId === "BG25_155" ? 1 : 2;
497
+ board
498
+ .filter((e) => e.entityId !== entity.entityId)
499
+ .forEach((e) => (0, blood_gems_1.playBloodGemsOn)(entity, e, gemSmugglerBloodGems, board, hero, gameState));
500
+ break;
501
+ case "BG28_303":
502
+ case "BG28_303_G":
503
+ const disguisedGraverobberTarget = (0, utils_1.pickRandomAlive)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.UNDEAD, gameState.allCards)));
504
+ if (disguisedGraverobberTarget) {
505
+ const disguisedGraverobberNumberOfCopies = entity.cardId === "BG28_303" ? 1 : 2;
506
+ disguisedGraverobberTarget.definitelyDead = true;
507
+ const copies = Array.from({ length: disguisedGraverobberNumberOfCopies }).map((_) => disguisedGraverobberTarget.cardId);
508
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, copies, gameState);
509
+ }
510
+ break;
511
+ case "BGDUO_104":
512
+ case "BGDUO_104_G":
513
+ const playerState = (0, utils_2.getPlayerState)(gameState.gameState, hero);
514
+ if (playerState) {
515
+ const cardsToAdd = entity.cardId === "BGDUO_104"
516
+ ? ["GAME_005"]
517
+ : ["GAME_005", "GAME_005"];
518
+ (0, cards_in_hand_1.addCardsInHand)(playerState.player, playerState.board, cardsToAdd, gameState);
519
+ }
520
+ break;
521
+ case "BGDUO_111":
522
+ case "BGDUO_111_G":
523
+ const cardsToAdd = entity.cardId === "BGDUO_111"
524
+ ? ["BG20_GEM"]
525
+ : ["BG20_GEM", "BG20_GEM"];
526
+ (0, cards_in_hand_1.addCardsInHand)(gameState.gameState.player.player, gameState.gameState.player.board, cardsToAdd, gameState);
527
+ if (gameState.gameState.player.teammate) {
528
+ (0, cards_in_hand_1.addCardsInHand)(gameState.gameState.player.teammate.player, gameState.gameState.player.teammate.board, cardsToAdd, gameState);
529
+ }
530
+ break;
531
+ case "BGDUO_119":
532
+ case "BGDUO_119_G":
533
+ const conductorTarget = (0, utils_1.pickRandom)(allMinions.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.ELEMENTAL, gameState.allCards)));
534
+ if (!!conductorTarget) {
535
+ const targetBoard = board.includes(conductorTarget) ? board : otherBoard;
536
+ const targetHero = board.includes(conductorTarget) ? hero : otherHero;
537
+ const multiplier = entity.cardId === "BGDUO_119" ? 1 : 2;
538
+ const attackStats = 2 * ((_t = entity.scriptDataNum1) !== null && _t !== void 0 ? _t : 1) * multiplier;
539
+ const healthStats = 2 * ((_u = entity.scriptDataNum1) !== null && _u !== void 0 ? _u : 1) * multiplier;
540
+ (0, stats_1.modifyStats)(conductorTarget, attackStats, healthStats, targetBoard, targetHero, gameState);
541
+ gameState.spectator.registerPowerTarget(entity, conductorTarget, targetBoard, hero, otherHero);
542
+ }
543
+ break;
544
+ case "BGDUO_HERO_100_Buddy":
545
+ case "BGDUO_HERO_100_Buddy_G":
546
+ const facelessOneCardsToAdd = entity.cardId === "BGDUO_HERO_100_Buddy" ? [null] : [null, null];
547
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, facelessOneCardsToAdd, gameState);
548
+ break;
549
+ case "TB_BaconShop_HERO_91_Buddy":
550
+ case "TB_BaconShop_HERO_91_Buddy_G":
551
+ const phyreszCardsToAdd = entity.cardId === "TB_BaconShop_HERO_91_Buddy" ? [null] : [null, null];
552
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, phyreszCardsToAdd, gameState);
553
+ break;
554
+ case "TB_BaconShop_HERO_23_Buddy":
555
+ case "TB_BaconShop_HERO_23_Buddy_G":
556
+ const muckslingerCardsToAdd = entity.cardId === "TB_BaconShop_HERO_23_Buddy"
557
+ ? [(0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions)]
558
+ : [
559
+ (0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions),
560
+ (0, utils_1.pickRandom)(gameState.cardsData.battlecryMinions),
561
+ ];
562
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, muckslingerCardsToAdd, gameState);
563
+ break;
564
+ case "BG29_861":
565
+ case "BG29_861_G":
566
+ const barrendsBrawlerCardsToAdd = entity.cardId === "BG29_861"
567
+ ? [(0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions)]
568
+ : [
569
+ (0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions),
570
+ (0, utils_1.pickRandom)(gameState.cardsData.deathrattleMinions),
571
+ ];
572
+ (0, cards_in_hand_1.addCardsInHand)(hero, board, barrendsBrawlerCardsToAdd, gameState);
573
+ break;
574
+ case "TB_BaconShop_HERO_56_Buddy":
575
+ case "TB_BaconShop_HERO_56_Buddy_G":
576
+ const vaelastraszBonus = entity.cardId === "TB_BaconShop_HERO_56_Buddy_G" ? 6 : 3;
577
+ board
578
+ .filter((e) => e.entityId !== entity.entityId)
579
+ .forEach((e) => {
580
+ (0, stats_1.modifyStats)(e, vaelastraszBonus, vaelastraszBonus, board, hero, gameState);
597
581
  });
598
- }
599
- break;
600
- case "TB_BaconShop_HERO_18_Buddy":
601
- case "TB_BaconShop_HERO_18_Buddy_G":
602
- const tuskarrTarget = (0, utils_1.pickRandom)(allMinions);
603
- if (tuskarrTarget) {
604
- gameState.spectator.registerPowerTarget(entity, tuskarrTarget, board, null, null);
605
- const buffMultiplier = entity.cardId === "TB_BaconShop_HERO_18_Buddy" ? 1 : 2;
606
- const attackBuff = ((_w = hero.globalInfo.PiratesPlayedThisGame) !== null && _w !== void 0 ? _w : 0) * buffMultiplier;
607
- const healthBuff = ((_x = hero.globalInfo.PiratesPlayedThisGame) !== null && _x !== void 0 ? _x : 0) * buffMultiplier;
608
- (0, stats_1.modifyStats)(tuskarrTarget, attackBuff, healthBuff, board, hero, gameState);
609
- }
610
- break;
611
- case "BG30_127":
612
- case "BG30_127_G":
613
- if (board.length > 0) {
614
- const targets = board.filter((e) => gameState.cardsData.getTavernLevel(e.cardId) <= 3);
615
- if (targets.length > 0) {
616
- const multiplier = entity.cardId === "BG30_127" ? 1 : 2;
617
- targets.forEach((target) => {
618
- (0, stats_1.modifyStats)(target, multiplier * 2, multiplier * 1, board, hero, gameState);
619
- gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
582
+ break;
583
+ case "BG29_503":
584
+ case "BG29_503_G":
585
+ const boardWithMechs = board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MECH, gameState.allCards));
586
+ const junkerTarget = (0, utils_1.pickRandom)(boardWithMechs);
587
+ if (junkerTarget) {
588
+ const numberOfMagnetizes = entity.cardId === "BG29_503" ? 1 : 2;
589
+ for (let i = 0; i < numberOfMagnetizes; i++) {
590
+ const minionToMagnetize = gameState.cardsData.getRandomMechToMagnetize((_v = hero.tavernTier) !== null && _v !== void 0 ? _v : 1);
591
+ gameState.spectator.registerPowerTarget(entity, junkerTarget, board, null, null);
592
+ (0, magnetize_1.magnetizeToTarget)(junkerTarget, minionToMagnetize, board, hero, gameState);
593
+ }
594
+ }
595
+ break;
596
+ case "BG23_HERO_306_Buddy":
597
+ case "BG23_HERO_306_Buddy_G":
598
+ const nathanosTarget = (0, utils_1.pickRandom)(board);
599
+ if (nathanosTarget) {
600
+ gameState.spectator.registerPowerTarget(entity, nathanosTarget, board, null, null);
601
+ nathanosTarget.definitelyDead = true;
602
+ const buffMultiplier = entity.cardId === "BG23_HERO_306_Buddy" ? 1 : 2;
603
+ const attackBuff = nathanosTarget.attack * buffMultiplier;
604
+ const healthBuff = nathanosTarget.health * buffMultiplier;
605
+ const buffTargets = (0, attack_1.getNeighbours)(board, nathanosTarget);
606
+ buffTargets.forEach((e) => {
607
+ (0, stats_1.modifyStats)(e, attackBuff, healthBuff, board, hero, gameState);
608
+ gameState.spectator.registerPowerTarget(entity, e, board, null, null);
620
609
  });
621
610
  }
622
- }
623
- break;
624
- case "BG30_104":
625
- case "BG30_104_G":
626
- if (board.length > 0) {
627
- const transformedInto = gameState.cardsData.getRandomMinionForTavernTier(3);
628
- const premiumDbfId = gameState.allCards.getCard(transformedInto).battlegroundsPremiumDbfId;
629
- const goldenCardId = gameState.allCards.getCard(premiumDbfId).id;
630
- const currentIndex = board.findIndex((e) => e.entityId === entity.entityId);
631
- const currentIndexFromRight = board.length - currentIndex - 1;
632
- board.splice(currentIndex, 1);
633
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(goldenCardId, 1, board, hero, otherBoard, otherHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, entity.friendly, false);
634
- const spawns = (0, spawns_1.performEntitySpawns)(newMinions, board, hero, entity, currentIndexFromRight, otherBoard, otherHero, gameState);
635
- }
636
- break;
637
- case "BG30_850":
638
- case "BG30_850_G":
639
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)(entity.cardId === "BG30_850_G"
640
- ? "BG_ICC_026t_G"
641
- : "BG_ICC_026t", 1, board, hero, otherBoard, otherHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, entity.friendly, false);
642
- const indexFromRight = board.length - board.findIndex((e) => e.entityId === entity.entityId) - 1;
643
- const spawns = (0, spawns_1.performEntitySpawns)(newMinions, board, hero, entity, indexFromRight, otherBoard, otherHero, gameState);
644
- break;
645
- case "BG30_756":
646
- case "BG30_756_G":
647
- const wandererTarget = (0, utils_1.pickRandom)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)));
648
- if (!!wandererTarget) {
649
- const wandererMultiplier = entity.cardId === "BG30_756" ? 1 : 2;
650
- wandererTarget.taunt = true;
651
- (0, stats_1.modifyStats)(wandererTarget, wandererMultiplier * 3, wandererMultiplier * 3, board, hero, gameState);
652
- }
653
- break;
654
- default:
655
- const hasBattlecry = (_z = (_y = gameState.allCards
656
- .getCard(entity.cardId)) === null || _y === void 0 ? void 0 : _y.mechanics) === null || _z === void 0 ? void 0 : _z.includes(reference_data_1.GameTag[reference_data_1.GameTag.BATTLECRY]);
657
- hasTriggered = hasBattlecry;
658
- break;
611
+ break;
612
+ case "TB_BaconShop_HERO_18_Buddy":
613
+ case "TB_BaconShop_HERO_18_Buddy_G":
614
+ const tuskarrTarget = (0, utils_1.pickRandom)(allMinions);
615
+ if (tuskarrTarget) {
616
+ gameState.spectator.registerPowerTarget(entity, tuskarrTarget, board, null, null);
617
+ const buffMultiplier = entity.cardId === "TB_BaconShop_HERO_18_Buddy" ? 1 : 2;
618
+ const attackBuff = ((_w = hero.globalInfo.PiratesPlayedThisGame) !== null && _w !== void 0 ? _w : 0) * buffMultiplier;
619
+ const healthBuff = ((_x = hero.globalInfo.PiratesPlayedThisGame) !== null && _x !== void 0 ? _x : 0) * buffMultiplier;
620
+ (0, stats_1.modifyStats)(tuskarrTarget, attackBuff, healthBuff, board, hero, gameState);
621
+ }
622
+ break;
623
+ case "BG30_127":
624
+ case "BG30_127_G":
625
+ if (board.length > 0) {
626
+ const targets = board.filter((e) => gameState.cardsData.getTavernLevel(e.cardId) <= 3);
627
+ if (targets.length > 0) {
628
+ const multiplier = entity.cardId === "BG30_127" ? 1 : 2;
629
+ targets.forEach((target) => {
630
+ (0, stats_1.modifyStats)(target, multiplier * 2, multiplier * 1, board, hero, gameState);
631
+ gameState.spectator.registerPowerTarget(entity, target, board, hero, otherHero);
632
+ });
633
+ }
634
+ }
635
+ break;
636
+ case "BG30_104":
637
+ case "BG30_104_G":
638
+ if (board.length > 0) {
639
+ const transformedInto = gameState.cardsData.getRandomMinionForTavernTier(3);
640
+ const premiumDbfId = gameState.allCards.getCard(transformedInto).battlegroundsPremiumDbfId;
641
+ const goldenCardId = gameState.allCards.getCard(premiumDbfId).id;
642
+ const currentIndex = board.findIndex((e) => e.entityId === entity.entityId);
643
+ const currentIndexFromRight = board.length - currentIndex - 1;
644
+ board.splice(currentIndex, 1);
645
+ const newMinions = (0, deathrattle_spawns_1.spawnEntities)(goldenCardId, 1, board, hero, otherBoard, otherHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, entity.friendly, false);
646
+ const spawns = (0, spawns_1.performEntitySpawns)(newMinions, board, hero, entity, currentIndexFromRight, otherBoard, otherHero, gameState);
647
+ }
648
+ break;
649
+ case "BG30_850":
650
+ case "BG30_850_G":
651
+ const newMinions = (0, deathrattle_spawns_1.spawnEntities)(entity.cardId === "BG30_850_G"
652
+ ? "BG_ICC_026t_G"
653
+ : "BG_ICC_026t", 1, board, hero, otherBoard, otherHero, gameState.allCards, gameState.cardsData, gameState.sharedState, gameState.spectator, entity.friendly, false);
654
+ const indexFromRight = board.length - board.findIndex((e) => e.entityId === entity.entityId) - 1;
655
+ const spawns = (0, spawns_1.performEntitySpawns)(newMinions, board, hero, entity, indexFromRight, otherBoard, otherHero, gameState);
656
+ break;
657
+ case "BG30_756":
658
+ case "BG30_756_G":
659
+ const wandererTarget = (0, utils_1.pickRandom)(board.filter((e) => (0, utils_2.hasCorrectTribe)(e, hero, reference_data_1.Race.MURLOC, gameState.allCards)));
660
+ if (!!wandererTarget) {
661
+ const wandererMultiplier = entity.cardId === "BG30_756" ? 1 : 2;
662
+ (0, taunt_1.updateTaunt)(wandererTarget, true, board, hero, otherHero, gameState);
663
+ (0, stats_1.modifyStats)(wandererTarget, wandererMultiplier * 3, wandererMultiplier * 3, board, hero, gameState);
664
+ }
665
+ break;
666
+ default:
667
+ const hasBattlecry = (_z = (_y = gameState.allCards
668
+ .getCard(entity.cardId)) === null || _y === void 0 ? void 0 : _y.mechanics) === null || _z === void 0 ? void 0 : _z.includes(reference_data_1.GameTag[reference_data_1.GameTag.BATTLECRY]);
669
+ hasTriggered = hasBattlecry;
670
+ break;
671
+ }
659
672
  }
660
673
  if (hasTriggered) {
661
674
  afterBattlecryTriggered(entity, board, hero, otherBoard, otherHero, gameState);
@@ -664,12 +677,24 @@ const triggerBattlecry = (board, hero, entity, otherBoard, otherHero, gameState)
664
677
  };
665
678
  exports.triggerBattlecry = triggerBattlecry;
666
679
  const afterBattlecryTriggered = (entity, board, hero, otherBoard, otherHero, gameState) => {
680
+ for (const boardEntity of board) {
681
+ const onBattlecryTriggeredImpl = _card_mappings_1.cardMappings[boardEntity.cardId];
682
+ if ((0, card_interface_1.hasOnBattlecryTriggered)(onBattlecryTriggeredImpl)) {
683
+ onBattlecryTriggeredImpl.onBattlecryTriggered(boardEntity, {
684
+ board: board,
685
+ hero: hero,
686
+ otherBoard: otherBoard,
687
+ otherHero: otherHero,
688
+ gameState: gameState,
689
+ });
690
+ }
691
+ }
667
692
  board
668
693
  .filter((e) => e.cardId === "BGS_041" ||
669
694
  e.cardId === "TB_BaconUps_109")
670
695
  .forEach((e) => {
671
696
  const buff = entity.cardId === "BGS_041" ? 1 : 2;
672
- (0, utils_2.addStatsToBoard)(e, board, hero, buff, buff, gameState, reference_data_1.Race[reference_data_1.Race.DRAGON]);
697
+ (0, utils_2.addStatsToBoard)(e, board, hero, buff, 2 * buff, gameState, reference_data_1.Race[reference_data_1.Race.DRAGON]);
673
698
  });
674
699
  board
675
700
  .filter((e) => e.cardId === "BG25_040" || e.cardId === "BG25_040_G")