@firestone-hs/simulate-bgs-battle 1.1.646 → 1.1.647

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 (282) hide show
  1. package/dist/cards/impl/bg-spell/sharing-is-caring.js.map +1 -1
  2. package/dist/cards/impl/bg-spell/shiny-ring.js.map +1 -1
  3. package/dist/cards/impl/bg-spell/toxic-tumbleweed.js.map +1 -1
  4. package/dist/cards/impl/hero-power/aim-high.js.map +1 -1
  5. package/dist/cards/impl/hero-power/aim-left.js.map +1 -1
  6. package/dist/cards/impl/hero-power/aim-low.js.map +1 -1
  7. package/dist/cards/impl/hero-power/aim-right.js.map +1 -1
  8. package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -1
  9. package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -1
  10. package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -1
  11. package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -1
  12. package/dist/cards/impl/hero-power/rapid-reanimation.js.map +1 -1
  13. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -1
  14. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -1
  15. package/dist/cards/impl/minion/all-seeing-elder.js.map +1 -1
  16. package/dist/cards/impl/minion/alleycat.js.map +1 -1
  17. package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
  18. package/dist/cards/impl/minion/amplifying-lightspawn.js.map +1 -1
  19. package/dist/cards/impl/minion/apprentice-of-sefin.js.map +1 -1
  20. package/dist/cards/impl/minion/archimonde.js.map +1 -1
  21. package/dist/cards/impl/minion/arid-atrocity.js.map +1 -1
  22. package/dist/cards/impl/minion/ashen-corruptor.js.map +1 -1
  23. package/dist/cards/impl/minion/assistant-guard.js.map +1 -1
  24. package/dist/cards/impl/minion/audacious-anchor.js.map +1 -1
  25. package/dist/cards/impl/minion/auto-assembler.js.map +1 -1
  26. package/dist/cards/impl/minion/avalanche-caller.js.map +1 -1
  27. package/dist/cards/impl/minion/baneling.js.map +1 -1
  28. package/dist/cards/impl/minion/bannerboar.js.map +1 -1
  29. package/dist/cards/impl/minion/beetle.js.map +1 -1
  30. package/dist/cards/impl/minion/bellowing-tyrant.js.map +1 -1
  31. package/dist/cards/impl/minion/bigwig-bandit.js.map +1 -1
  32. package/dist/cards/impl/minion/bird-buddy.js.map +1 -1
  33. package/dist/cards/impl/minion/blazing-skyfin.js.map +1 -1
  34. package/dist/cards/impl/minion/bloodsnout-warlord.js.map +1 -1
  35. package/dist/cards/impl/minion/blue-whelp.js.map +1 -1
  36. package/dist/cards/impl/minion/boar-gamer.js.map +1 -1
  37. package/dist/cards/impl/minion/bongo-bopper.js.map +1 -1
  38. package/dist/cards/impl/minion/briarback-bookie.js.map +1 -1
  39. package/dist/cards/impl/minion/bronze-steward.js.map +1 -1
  40. package/dist/cards/impl/minion/bubble-gunner.js.map +1 -1
  41. package/dist/cards/impl/minion/buzzing-vermin.js.map +1 -1
  42. package/dist/cards/impl/minion/cadaver-caretaker.js.map +1 -1
  43. package/dist/cards/impl/minion/campfire-shadow.js.map +1 -1
  44. package/dist/cards/impl/minion/canopy-swinger.js.map +1 -1
  45. package/dist/cards/impl/minion/captain-bonerender.js.map +1 -1
  46. package/dist/cards/impl/minion/carapace-raiser.js.map +1 -1
  47. package/dist/cards/impl/minion/carbonic-copy.js.map +1 -1
  48. package/dist/cards/impl/minion/carrier.js.map +1 -1
  49. package/dist/cards/impl/minion/champion-of-the-primus.js.map +1 -1
  50. package/dist/cards/impl/minion/charlga.js.map +1 -1
  51. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
  52. package/dist/cards/impl/minion/clunker-junker.js.map +1 -1
  53. package/dist/cards/impl/minion/coilskar-sapper.js.map +1 -1
  54. package/dist/cards/impl/minion/coldlight-diver.js.map +1 -1
  55. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -1
  56. package/dist/cards/impl/minion/cruise-controller.js.map +1 -1
  57. package/dist/cards/impl/minion/crystal-infuser-enchantment.js.map +1 -1
  58. package/dist/cards/impl/minion/cupcake-peddler.js.map +1 -1
  59. package/dist/cards/impl/minion/dastardly-drust.js.map +1 -1
  60. package/dist/cards/impl/minion/deadstomper.js.map +1 -1
  61. package/dist/cards/impl/minion/deathly-striker.js.map +1 -1
  62. package/dist/cards/impl/minion/defiant-shipwright.js.map +1 -1
  63. package/dist/cards/impl/minion/deflecto-bot.js.map +1 -1
  64. package/dist/cards/impl/minion/devout-hellcaller.js.map +1 -1
  65. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -1
  66. package/dist/cards/impl/minion/drakkari-embalmer.js.map +1 -1
  67. package/dist/cards/impl/minion/dreaming-thornweaver.js.map +1 -1
  68. package/dist/cards/impl/minion/drustfallen-butcher.js.map +1 -1
  69. package/dist/cards/impl/minion/efficient-engineer.js.map +1 -1
  70. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -1
  71. package/dist/cards/impl/minion/electric-synthesizer.js.map +1 -1
  72. package/dist/cards/impl/minion/elite-navigator.js.map +1 -1
  73. package/dist/cards/impl/minion/fairy-gillmother.js.map +1 -1
  74. package/dist/cards/impl/minion/fauna-whisperer.js.map +1 -1
  75. package/dist/cards/impl/minion/fire-forged-evoker.js.map +1 -1
  76. package/dist/cards/impl/minion/firescale-hoarder.js.map +1 -1
  77. package/dist/cards/impl/minion/fireworks-fanatic.js.map +1 -1
  78. package/dist/cards/impl/minion/floating-watcher.js.map +1 -1
  79. package/dist/cards/impl/minion/flotsam-flinger.js.map +1 -1
  80. package/dist/cards/impl/minion/forest-rover.js.map +1 -1
  81. package/dist/cards/impl/minion/fountain-chiller.js.map +1 -1
  82. package/dist/cards/impl/minion/friendly-geist.js.map +1 -1
  83. package/dist/cards/impl/minion/geared-guard.js.map +1 -1
  84. package/dist/cards/impl/minion/gem-rat.js.map +1 -1
  85. package/dist/cards/impl/minion/gem-smuggler.js.map +1 -1
  86. package/dist/cards/impl/minion/general-drakkisath.js.map +1 -1
  87. package/dist/cards/impl/minion/gentle-djinni.js.map +1 -1
  88. package/dist/cards/impl/minion/gentle-stag.js.map +1 -1
  89. package/dist/cards/impl/minion/gleaming-trader.js.map +1 -1
  90. package/dist/cards/impl/minion/glowgullet-warlord.js.map +1 -1
  91. package/dist/cards/impl/minion/glowing-cinder.js.map +1 -1
  92. package/dist/cards/impl/minion/goldgrubber.js.map +1 -1
  93. package/dist/cards/impl/minion/gormling-gourmet.js.map +1 -1
  94. package/dist/cards/impl/minion/grease-bot.js.map +1 -1
  95. package/dist/cards/impl/minion/greedy-snaketongue.js.map +1 -1
  96. package/dist/cards/impl/minion/grimscale-elegist.js.map +1 -1
  97. package/dist/cards/impl/minion/gritty-headhunter.js.map +1 -1
  98. package/dist/cards/impl/minion/hackerfin.js.map +1 -1
  99. package/dist/cards/impl/minion/handless-forsaken.js.map +1 -1
  100. package/dist/cards/impl/minion/harmless-bonehead.js.map +1 -1
  101. package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -1
  102. package/dist/cards/impl/minion/hog-watcher.js.map +1 -1
  103. package/dist/cards/impl/minion/holo-rover.js.map +1 -1
  104. package/dist/cards/impl/minion/hot-springer.js.map +1 -1
  105. package/dist/cards/impl/minion/humming-bird.js.map +1 -1
  106. package/dist/cards/impl/minion/humongozz.js.map +1 -1
  107. package/dist/cards/impl/minion/hungry-snapjaw.js.map +1 -1
  108. package/dist/cards/impl/minion/hunter-of-gatherers.js.map +1 -1
  109. package/dist/cards/impl/minion/ignition-specialist.js.map +1 -1
  110. package/dist/cards/impl/minion/immortal.js.map +1 -1
  111. package/dist/cards/impl/minion/implant-subject.js.map +1 -1
  112. package/dist/cards/impl/minion/imposing-percussionist.js.map +1 -1
  113. package/dist/cards/impl/minion/impulsive-trickster.js.map +1 -1
  114. package/dist/cards/impl/minion/indomitable-mount.js.map +1 -1
  115. package/dist/cards/impl/minion/inspiring-underdog.js.map +1 -1
  116. package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -1
  117. package/dist/cards/impl/minion/irate-rooster.js.map +1 -1
  118. package/dist/cards/impl/minion/kangors-apprentice.js.map +1 -1
  119. package/dist/cards/impl/minion/king-bagurgle.js.map +1 -1
  120. package/dist/cards/impl/minion/leeroy-the-reckless.js.map +1 -1
  121. package/dist/cards/impl/minion/lightfang-enforcer.js.map +1 -1
  122. package/dist/cards/impl/minion/lightfeather-screecher.js.map +1 -1
  123. package/dist/cards/impl/minion/lokholar-frostforger.js.map +1 -1
  124. package/dist/cards/impl/minion/lord-of-the-ruins.js.map +1 -1
  125. package/dist/cards/impl/minion/lost-city-looter.js.map +1 -1
  126. package/dist/cards/impl/minion/lovesick-balladist.js.map +1 -1
  127. package/dist/cards/impl/minion/low-flier.js.map +1 -1
  128. package/dist/cards/impl/minion/lurker.js.map +1 -1
  129. package/dist/cards/impl/minion/magicfin-apprentice.js.map +1 -1
  130. package/dist/cards/impl/minion/malorne.d.ts +2 -2
  131. package/dist/cards/impl/minion/malorne.js +14 -0
  132. package/dist/cards/impl/minion/malorne.js.map +1 -1
  133. package/dist/cards/impl/minion/manasaber.js.map +1 -1
  134. package/dist/cards/impl/minion/mantid-queen.js.map +1 -1
  135. package/dist/cards/impl/minion/marquee-ticker.js.map +1 -1
  136. package/dist/cards/impl/minion/maw-caster.js.map +1 -1
  137. package/dist/cards/impl/minion/mecha-jaraxxus.js.map +1 -1
  138. package/dist/cards/impl/minion/mechagnome-interpreter.js.map +1 -1
  139. package/dist/cards/impl/minion/mechanized-gift-horse.js.map +1 -1
  140. package/dist/cards/impl/minion/mechorse.js.map +1 -1
  141. package/dist/cards/impl/minion/menagerie-jug.js.map +1 -1
  142. package/dist/cards/impl/minion/metallic-hunter.js.map +1 -1
  143. package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -1
  144. package/dist/cards/impl/minion/moonsteel-juggernaut.js.map +1 -1
  145. package/dist/cards/impl/minion/mothership.js.map +1 -1
  146. package/dist/cards/impl/minion/mummifier.js.map +1 -1
  147. package/dist/cards/impl/minion/murkbrine-expeditioner.js.map +1 -1
  148. package/dist/cards/impl/minion/murky.js.map +1 -1
  149. package/dist/cards/impl/minion/mutalisk.js.map +1 -1
  150. package/dist/cards/impl/minion/mutated-lasher.js.map +1 -1
  151. package/dist/cards/impl/minion/mythrax.js.map +1 -1
  152. package/dist/cards/impl/minion/neon-agent.js.map +1 -1
  153. package/dist/cards/impl/minion/nerubian-deathswarmer.js.map +1 -1
  154. package/dist/cards/impl/minion/nest-swarmer.js.map +1 -1
  155. package/dist/cards/impl/minion/nether-drake.js.map +1 -1
  156. package/dist/cards/impl/minion/nightmare-par-tea-guest.js.map +1 -1
  157. package/dist/cards/impl/minion/nimble-hatchling.js.map +1 -1
  158. package/dist/cards/impl/minion/noisul-of-the-many-faces.js.map +1 -1
  159. package/dist/cards/impl/minion/oozeling-gladiator.js.map +1 -1
  160. package/dist/cards/impl/minion/operatic-belcher.js.map +1 -1
  161. package/dist/cards/impl/minion/outback-smolderer.js.map +1 -1
  162. package/dist/cards/impl/minion/parched-wanderer.js.map +1 -1
  163. package/dist/cards/impl/minion/peggy-sturdybone.js.map +1 -1
  164. package/dist/cards/impl/minion/poultron.js +3 -0
  165. package/dist/cards/impl/minion/poultron.js.map +1 -1
  166. package/dist/cards/impl/minion/primalfin-lookout.js.map +1 -1
  167. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -1
  168. package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -1
  169. package/dist/cards/impl/minion/rapscallion-recruiter.js.map +1 -1
  170. package/dist/cards/impl/minion/razorfen-geomancer.js.map +1 -1
  171. package/dist/cards/impl/minion/razorgore-the-untamed.js.map +1 -1
  172. package/dist/cards/impl/minion/reckless-cliffdiver.js.map +1 -1
  173. package/dist/cards/impl/minion/rickety-repairbot.js.map +1 -1
  174. package/dist/cards/impl/minion/ride-or-die.js.map +1 -1
  175. package/dist/cards/impl/minion/roach.js.map +1 -1
  176. package/dist/cards/impl/minion/roadboar.js.map +1 -1
  177. package/dist/cards/impl/minion/rodeo-performer.js.map +1 -1
  178. package/dist/cards/impl/minion/ruins-renovator.js.map +1 -1
  179. package/dist/cards/impl/minion/runed-progenitor.js.map +1 -1
  180. package/dist/cards/impl/minion/rylak-metalhead.js.map +1 -1
  181. package/dist/cards/impl/minion/salty-hog.js.map +1 -1
  182. package/dist/cards/impl/minion/sand-swirler.js.map +1 -1
  183. package/dist/cards/impl/minion/sandy.js.map +1 -1
  184. package/dist/cards/impl/minion/sanguine-refiner.js.map +1 -1
  185. package/dist/cards/impl/minion/sanlayn-scribe.js.map +1 -1
  186. package/dist/cards/impl/minion/scallywag.js.map +1 -1
  187. package/dist/cards/impl/minion/scourge-harvester.js.map +1 -1
  188. package/dist/cards/impl/minion/selfless-hero.js.map +1 -1
  189. package/dist/cards/impl/minion/shadowdancer.js.map +1 -1
  190. package/dist/cards/impl/minion/sharp-eyed-sabretooth.js.map +1 -1
  191. package/dist/cards/impl/minion/sharptooth-snapper.js.map +1 -1
  192. package/dist/cards/impl/minion/shell-collector.js.map +1 -1
  193. package/dist/cards/impl/minion/ship-master-eudora.js.map +1 -1
  194. package/dist/cards/impl/minion/shipwrecked-rascal.js.map +1 -1
  195. package/dist/cards/impl/minion/showy-cyclist.js.map +1 -1
  196. package/dist/cards/impl/minion/silithid-burrower.js.map +1 -1
  197. package/dist/cards/impl/minion/silky-shimmermoth.js.map +1 -1
  198. package/dist/cards/impl/minion/silver-handed-recruit.js.map +1 -1
  199. package/dist/cards/impl/minion/sinodorei-straight-shot.js.map +1 -1
  200. package/dist/cards/impl/minion/skulking-bristlemane.js.map +1 -1
  201. package/dist/cards/impl/minion/slumber-sorcerer.js.map +1 -1
  202. package/dist/cards/impl/minion/smolderwing.js.map +1 -1
  203. package/dist/cards/impl/minion/soul-rewinder.js.map +1 -1
  204. package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
  205. package/dist/cards/impl/minion/spacefarer.js.map +1 -1
  206. package/dist/cards/impl/minion/spirited-whimsydrake.js.map +1 -1
  207. package/dist/cards/impl/minion/springy-spriggan.js.map +1 -1
  208. package/dist/cards/impl/minion/stitched-salvager.js.map +1 -1
  209. package/dist/cards/impl/minion/stomping-stegodon-enchantment.js.map +1 -1
  210. package/dist/cards/impl/minion/stray-satyr.js.map +1 -1
  211. package/dist/cards/impl/minion/sun-screener.js.map +1 -1
  212. package/dist/cards/impl/minion/surfing-slyvar.js.map +1 -1
  213. package/dist/cards/impl/minion/swampstriker.js.map +1 -1
  214. package/dist/cards/impl/minion/thorncaller.js.map +1 -1
  215. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -1
  216. package/dist/cards/impl/minion/three-lil-quilboar.js.map +1 -1
  217. package/dist/cards/impl/minion/thundering-abomination.js.map +1 -1
  218. package/dist/cards/impl/minion/tichondrius.js.map +1 -1
  219. package/dist/cards/impl/minion/tunnel-blaster.js.map +1 -1
  220. package/dist/cards/impl/minion/turquoise-skitterer.js.map +1 -1
  221. package/dist/cards/impl/minion/twilight-primordium.js.map +1 -1
  222. package/dist/cards/impl/minion/ultralisk.js.map +1 -1
  223. package/dist/cards/impl/minion/ultraviolet-ascendant.js.map +1 -1
  224. package/dist/cards/impl/minion/valiant-tiger.js.map +1 -1
  225. package/dist/cards/impl/minion/void-earl.js.map +1 -1
  226. package/dist/cards/impl/minion/vorkai-guardian.js.map +1 -1
  227. package/dist/cards/impl/minion/wandering-wight.js.map +1 -1
  228. package/dist/cards/impl/minion/whelp-smuggler.js.map +1 -1
  229. package/dist/cards/impl/minion/whirring-protector-enchantment.js.map +1 -1
  230. package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -1
  231. package/dist/cards/impl/minion/wisp-in-the-shell.js.map +1 -1
  232. package/dist/cards/impl/minion/yorik-smite.js.map +1 -1
  233. package/dist/cards/impl/minion/young-murk-eye.js.map +1 -1
  234. package/dist/cards/impl/minion/yrel.js.map +1 -1
  235. package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -1
  236. package/dist/cards/impl/minion/zergling.js.map +1 -1
  237. package/dist/cards/impl/quest-reward/righteous-charge.js.map +1 -1
  238. package/dist/cards/impl/trinket/all-purpose-kibble.js.map +1 -1
  239. package/dist/cards/impl/trinket/arm-of-the-empire.js.map +1 -1
  240. package/dist/cards/impl/trinket/artisanal-urn.js.map +1 -1
  241. package/dist/cards/impl/trinket/automaton-portrait.js.map +1 -1
  242. package/dist/cards/impl/trinket/baleful-incense.js.map +1 -1
  243. package/dist/cards/impl/trinket/bassgill-portrait.js.map +1 -1
  244. package/dist/cards/impl/trinket/battle-horn.js.map +1 -1
  245. package/dist/cards/impl/trinket/beetle-band.js.map +1 -1
  246. package/dist/cards/impl/trinket/bird-feeder.js.map +1 -1
  247. package/dist/cards/impl/trinket/crocheted-sungill.js.map +1 -1
  248. package/dist/cards/impl/trinket/divine-signet.js.map +1 -1
  249. package/dist/cards/impl/trinket/eclectic-shrine.js.map +1 -1
  250. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
  251. package/dist/cards/impl/trinket/faerie-dragon-scale.js.map +1 -1
  252. package/dist/cards/impl/trinket/fishy-sticker.js.map +1 -1
  253. package/dist/cards/impl/trinket/herald-sticker.js.map +1 -1
  254. package/dist/cards/impl/trinket/hogwash-basin.js.map +1 -1
  255. package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -1
  256. package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -1
  257. package/dist/cards/impl/trinket/sthara-sticker.js.map +1 -1
  258. package/dist/cards/impl/trinket/unholy-sanctum.js.map +1 -1
  259. package/dist/cards/impl/trinket/valorous-medaillion.js.map +1 -1
  260. package/dist/cards/impl/trinket/vashjir-anemone.js.map +1 -1
  261. package/dist/cards/impl/trinket/yulon-sticker.js.map +1 -1
  262. package/dist/keywords/venomous.js.map +1 -1
  263. package/dist/simulation/after-attack.js.map +1 -1
  264. package/dist/simulation/cards-in-hand.js.map +1 -1
  265. package/dist/simulation/damage-effects.js.map +1 -1
  266. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  267. package/dist/simulation/deathrattle-spawns.js +598 -578
  268. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  269. package/dist/simulation/deathrattle-utils.js.map +1 -1
  270. package/dist/simulation/discover.js.map +1 -1
  271. package/dist/simulation/frenzy.js.map +1 -1
  272. package/dist/simulation/magnetize.js.map +1 -1
  273. package/dist/simulation/minion-kill.js.map +1 -1
  274. package/dist/simulation/quest.js.map +1 -1
  275. package/dist/simulation/reborn.js.map +1 -1
  276. package/dist/simulation/remembered-deathrattle.js.map +1 -1
  277. package/dist/simulation/remove-minion-from-board.js.map +1 -1
  278. package/dist/simulation/spectator/game-action.js.map +1 -1
  279. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js.map +1 -1
  280. package/dist/simulation/utils/golden.js +1 -0
  281. package/dist/simulation/utils/golden.js.map +1 -1
  282. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cards-in-hand.js","sourceRoot":"","sources":["../../src/simulation/cards-in-hand.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnCardAddedToHand } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { buildSingleBoardEntity } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tcardsAdded: readonly any[],\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst previousCardsInHand = playerEntity.hand?.length ?? 0;\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy_G);\r\n\tconst multiplier = sages.length + 2 * sagesGolden.length;\r\n\r\n\tconst cardsThatWillBeAdded: BoardEntity[] = [];\r\n\tfor (const cardAdded of cardsAdded) {\r\n\t\tconst cardToAdd: BoardEntity = (cardAdded as BoardEntity)?.cardId\r\n\t\t\t? buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tcardAdded,\r\n\t\t\t )\r\n\t\t\t: buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tnull,\r\n\t\t\t );\r\n\t\tcardsThatWillBeAdded.push(cardToAdd);\r\n\t\tif (cardToAdd.cardId === CardIds.BloodGem) {\r\n\t\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\t\tcardsThatWillBeAdded.push({ ...cardToAdd });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < cardsThatWillBeAdded.length; i++) {\r\n\t\tif (playerEntity.hand.length >= 10) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tplayerEntity.hand.push(cardsThatWillBeAdded[i]);\r\n\t\tonCardAddedToHand(playerEntity, cardsThatWillBeAdded[i], board, gameState);\r\n\t}\r\n\r\n\treturn cardsThatWillBeAdded;\r\n};\r\n\r\nconst onCardAddedToHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tonCardAddedToHandMinion(playerEntity, card, board, gameState);\r\n\tonCardAddedToHandQuest(playerEntity, card, board, gameState);\r\n};\r\n\r\nconst onCardAddedToHandQuest = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = playerEntity.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.DustForPrints:\r\n\t\t\t\tonQuestProgressUpdated(playerEntity, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst onCardAddedToHandMinion = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst onCardAddedToHandImpl = cardMappings[entity.cardId];\r\n\t\tif (hasOnCardAddedToHand(onCardAddedToHandImpl)) {\r\n\t\t\tonCardAddedToHandImpl.onCardAddedToHand(entity, {\r\n\t\t\t\taddedCard: card,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: playerEntity,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tconst thornCaptains = board.filter(\r\n\t\t(e) => e.cardId === CardIds.Thorncaptain_BG25_045 || e.cardId === CardIds.Thorncaptain_BG25_045_G,\r\n\t);\r\n\tthornCaptains.forEach((captain) => {\r\n\t\tmodifyStats(\r\n\t\t\tcaptain,\r\n\t\t\tcaptain,\r\n\t\t\t0,\r\n\t\t\tcaptain.cardId === CardIds.Thorncaptain_BG25_045_G ? 2 : 1,\r\n\t\t\tboard,\r\n\t\t\tplayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t});\r\n};\r\n\r\nexport const removeCardFromHand = (playerEntity: BgsPlayerEntity, card: BoardEntity): void => {\r\n\tlet cardToRemove: BoardEntity;\r\n\tif (card?.entityId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.entityId !== card.entityId);\r\n\t} else if (card?.cardId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.cardId === card.cardId);\r\n\t} else {\r\n\t\t// Remove a single random card in hand that doesn't have an entityId\r\n\t\tcardToRemove =\r\n\t\t\tpickRandom(playerEntity.hand.filter((c) => !c?.entityId && !c?.cardId)) ?? pickRandom(playerEntity.hand);\r\n\t}\r\n\t// Remove the first occurrence of the card from playerEntity.cardsInHand, even if it is null\r\n\tconst index = playerEntity.hand.indexOf(cardToRemove);\r\n\tif (index !== -1) {\r\n\t\tplayerEntity.hand.splice(index, 1);\r\n\t}\r\n};\r\n\r\nexport interface OnCardAddedToHandInput {\r\n\taddedCard: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"cards-in-hand.js","sourceRoot":"","sources":["../../src/simulation/cards-in-hand.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnCardAddedToHand } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { buildSingleBoardEntity } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tcardsAdded: readonly any[],\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst previousCardsInHand = playerEntity.hand?.length ?? 0;\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy_G);\r\n\tconst multiplier = sages.length + 2 * sagesGolden.length;\r\n\r\n\tconst cardsThatWillBeAdded: BoardEntity[] = [];\r\n\tfor (const cardAdded of cardsAdded) {\r\n\t\tconst cardToAdd: BoardEntity = (cardAdded as BoardEntity)?.cardId\r\n\t\t\t? buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tcardAdded,\r\n\t\t\t )\r\n\t\t\t: buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tnull,\r\n\t\t\t );\r\n\t\tcardsThatWillBeAdded.push(cardToAdd);\r\n\t\tif (cardToAdd.cardId === CardIds.BloodGem) {\r\n\t\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\t\tcardsThatWillBeAdded.push({ ...cardToAdd });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < cardsThatWillBeAdded.length; i++) {\r\n\t\tif (playerEntity.hand.length >= 10) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tplayerEntity.hand.push(cardsThatWillBeAdded[i]);\r\n\t\tonCardAddedToHand(playerEntity, cardsThatWillBeAdded[i], board, gameState);\r\n\t}\r\n\r\n\treturn cardsThatWillBeAdded;\r\n};\r\n\r\nconst onCardAddedToHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tonCardAddedToHandMinion(playerEntity, card, board, gameState);\r\n\tonCardAddedToHandQuest(playerEntity, card, board, gameState);\r\n};\r\n\r\nconst onCardAddedToHandQuest = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = playerEntity.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.DustForPrints:\r\n\t\t\t\tonQuestProgressUpdated(playerEntity, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst onCardAddedToHandMinion = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst onCardAddedToHandImpl = cardMappings[entity.cardId];\r\n\t\tif (hasOnCardAddedToHand(onCardAddedToHandImpl)) {\r\n\t\t\tonCardAddedToHandImpl.onCardAddedToHand(entity, {\r\n\t\t\t\taddedCard: card,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: playerEntity,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tconst thornCaptains = board.filter(\r\n\t\t(e) => e.cardId === CardIds.Thorncaptain_BG25_045 || e.cardId === CardIds.Thorncaptain_BG25_045_G,\r\n\t);\r\n\tthornCaptains.forEach((captain) => {\r\n\t\tmodifyStats(\r\n\t\t\tcaptain,\r\n\t\t\tcaptain,\r\n\t\t\t0,\r\n\t\t\tcaptain.cardId === CardIds.Thorncaptain_BG25_045_G ? 2 : 1,\r\n\t\t\tboard,\r\n\t\t\tplayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t});\r\n};\r\n\r\nexport const removeCardFromHand = (playerEntity: BgsPlayerEntity, card: BoardEntity): void => {\r\n\tlet cardToRemove: BoardEntity;\r\n\tif (card?.entityId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.entityId !== card.entityId);\r\n\t} else if (card?.cardId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.cardId === card.cardId);\r\n\t} else {\r\n\t\t// Remove a single random card in hand that doesn't have an entityId\r\n\t\tcardToRemove =\r\n\t\t\tpickRandom(playerEntity.hand.filter((c) => !c?.entityId && !c?.cardId)) ?? pickRandom(playerEntity.hand);\r\n\t}\r\n\t// Remove the first occurrence of the card from playerEntity.cardsInHand, even if it is null\r\n\tconst index = playerEntity.hand.indexOf(cardToRemove);\r\n\tif (index !== -1) {\r\n\t\tplayerEntity.hand.splice(index, 1);\r\n\t}\r\n};\r\n\r\nexport interface OnCardAddedToHandInput {\r\n\taddedCard: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":";;;AACA,iEAAoD;AAGpD,4DAA6D;AAC7D,iEAA4D;AAC5D,6DAA+D;AAC/D,6CAAgE;AAChE,oCAA0E;AAC1E,6DAAqD;AACrD,qCAAuC;AAEvC,qCAA+C;AAC/C,mCAAsC;AAE/B,MAAM,eAAe,GAAG,CAC9B,aAA0B,EAC1B,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,YAA2C,EAC3C,MAAc,EACd,SAAwB,EACC,EAAE;;IAC3B,MAAM,eAAe,GAAkB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAClB,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,aAAa,CAAC,QAAQ;QAC9C,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,aAAa,CAAC,QAAQ;YACtD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GACf,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,aAAa,CAAC,QAAQ;QAC9C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,aAAa,CAAC,QAAQ;YACjD,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,YAAY,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,SAAS,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7D,IAAI,aAAa,CAAC,iBAAiB,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;QACrG,IAAA,oBAAW,EAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QACnE,aAAa,CAAC,iBAAiB,EAAE,CAAC;KAClC;IAED,QAAQ,aAAa,CAAC,MAAM,EAAE;QAC7B,gBAAoC;QACpC;YACC,IAAI,aAAa,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACxC,MAAM,qBAAqB,GAAG,aAAa,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChG,IAAA,qCAA6B,EAC5B,aAAa,EACb,KAAK,EACL,IAAI,EACJ,qBAAqB,GAAG,CAAC,EACzB,qBAAqB,GAAG,CAAC,EACzB,SAAS,CACT,CAAC;gBACF,aAAa,CAAC,iBAAiB,EAAE,CAAC;aAClC;YACD,MAAM;QAMP,gBAAkC;QAClC;YACC,IAAA,kCAAkB,EAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC3E,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC9F,MAAM;QACP,gBAAgC;QAChC;YACC,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,IAAA,mBAAW,EAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACrF,MAAM;QACP,gBAAkC;QAClC;YACC,eAAe,CAAC,IAAI,CACnB,GAAG,IAAA,kCAAa,EACf,aAAa,CAAC,MAAM,iBAAmC;gBACtD,CAAC;gBACD,CAAC,YAAmD,EACrD,CAAC,EACD,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,CAAC,QAAQ,EACtB,KAAK,CACL,CACD,CAAC;YACF,MAAM;KAmEP;IAED,wBAAwB,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG,IAAA,4BAAmB,EACtC,eAAe,EACf,KAAK,EACL,IAAI,EACJ,aAAa,EACb,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EACjD,UAAU,EACV,SAAS,EACT,SAAS,CACT,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QACzB,CAAC,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,mCAAI,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,CAAC,EAAE;QACf,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;YAC3B,MAAM,mBAAmB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,IAAA,mCAAkB,EAAC,mBAAmB,CAAC,EAAE;gBAC5C,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC3C,aAAa,EAAE,aAAa;oBAC5B,YAAY,EAAE,YAAY;oBAC1B,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,IAAI;oBACV,SAAS;iBACT,CAAC,CAAC;aACH;SACD;QACD,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAChC,MAAM,mBAAmB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,IAAA,mCAAkB,EAAC,mBAAmB,CAAC,EAAE;gBAC5C,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE;oBAC3C,aAAa,EAAE,aAAa;oBAC5B,YAAY,EAAE,YAAY;oBAC1B,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,UAAU;oBACjB,IAAI,EAAE,SAAS;oBACf,SAAS;iBACT,CAAC,CAAC;aACH;SACD;KACD;IACD,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAlMW,QAAA,eAAe,mBAkM1B;AAEF,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,eAA8B,EAC9B,SAAwB,EACvB,EAAE;IACH,IAAI,IAAA,uBAAe,EAAC,MAAM,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvF,KAAK;aACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAyC;YACjD,CAAC,CAAC,MAAM,iBAA2C,CACpD;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aACjE;QACF,CAAC,CAAC,CAAC;QACJ,KAAK;aACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAsC,IAAI,CAAC,CAAC,MAAM,iBAAwC,CACnG;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aAC7C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;KACJ;IAED,IAAI,CAAC,QAAQ;SACX,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,yBAA4C;QACpD,CAAC,CAAC,MAAM,0BAA+D,CACxE;SACA,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,0BAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;SAC9D;IACF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { CardIds } from '../services/card-ids';\nimport { Race } from '@firestone-hs/reference-data';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { applyFrenzy } from './frenzy';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tdamagedEntity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamageSource: BoardEntity | BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: board?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\r\n\tif (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {\r\n\t\tapplyFrenzy(damagedEntity, friendlyBoard, friendlyHero, gameState);\r\n\t\tdamagedEntity.frenzyChargesLeft--;\r\n\t}\r\n\r\n\tswitch (damagedEntity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = damagedEntity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tdamagedEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846:\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t// \tconst treantModifier = damagedEntity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t// \taddStatsToBoard(damagedEntity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t// \tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(damagedEntity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = damagedEntity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tdamagedEntity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tdamagedEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\t// case CardIds.CraftyAranasi_BG29_821:\r\n\t\t// case CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t// \tconst aranasiLoops = damagedEntity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t// \tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t// \t\tdealDamageToRandomEnemy(\r\n\t\t// \t\t\tenemyBoard,\r\n\t\t// \t\t\tenemyHero,\r\n\t\t// \t\t\tdamagedEntity,\r\n\t\t// \t\t\t5,\r\n\t\t// \t\t\tfriendlyBoard,\r\n\t\t// \t\t\tfriendlyHero,\r\n\t\t// \t\t\tgameState,\r\n\t\t// \t\t);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.MarineMatriarch_BG29_610:\r\n\t\t// case CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t// \tconst winterfinnerStats = damagedEntity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t// \tconst minionInHand = pickRandom(\r\n\t\t// \t\thero.hand.filter(\r\n\t\t// \t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t// \t\t),\r\n\t\t// \t);\r\n\t\t// \tif (!!minionInHand) {\r\n\t\t// \t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t// \t\tminionInHand.health += winterfinnerStats;\r\n\t\t// \t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t// \t\tgameState.spectator.registerPowerTarget(damagedEntity, minionInHand, board, hero, otherHero);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590:\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.LongJohnCopper_BG29_831:\r\n\t\t// case CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160:\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(damagedEntity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tdamagedEntity,\r\n\t\tboard.length - (board.indexOf(damagedEntity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(damagedEntity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\tif (damage > 0) {\r\n\t\tfor (const entity of board) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (const entity of otherBoard) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: otherBoard,\r\n\t\t\t\t\thero: otherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, e, 2 * stats, stats, board, hero, gameState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_BG30_MagicItem_427 ||\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t,\r\n\t\t)\r\n\t\t.forEach((carving) => {\r\n\t\t\tconst target = pickRandomAlive(board);\r\n\t\t\tif (!!target) {\r\n\t\t\t\tconst buff = carving.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t ? 4 : 2;\r\n\t\t\t\tmodifyStats(target, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n\r\nexport interface AfterDealDamageInput {\r\n\tdamagedEntity: BoardEntity | BgsPlayerEntity;\r\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { applyFrenzy } from './frenzy';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tdamagedEntity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamageSource: BoardEntity | BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: board?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\r\n\tif (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {\r\n\t\tapplyFrenzy(damagedEntity, friendlyBoard, friendlyHero, gameState);\r\n\t\tdamagedEntity.frenzyChargesLeft--;\r\n\t}\r\n\r\n\tswitch (damagedEntity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = damagedEntity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tdamagedEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846:\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t// \tconst treantModifier = damagedEntity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t// \taddStatsToBoard(damagedEntity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t// \tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(damagedEntity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = damagedEntity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tdamagedEntity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tdamagedEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\t// case CardIds.CraftyAranasi_BG29_821:\r\n\t\t// case CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t// \tconst aranasiLoops = damagedEntity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t// \tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t// \t\tdealDamageToRandomEnemy(\r\n\t\t// \t\t\tenemyBoard,\r\n\t\t// \t\t\tenemyHero,\r\n\t\t// \t\t\tdamagedEntity,\r\n\t\t// \t\t\t5,\r\n\t\t// \t\t\tfriendlyBoard,\r\n\t\t// \t\t\tfriendlyHero,\r\n\t\t// \t\t\tgameState,\r\n\t\t// \t\t);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.MarineMatriarch_BG29_610:\r\n\t\t// case CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t// \tconst winterfinnerStats = damagedEntity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t// \tconst minionInHand = pickRandom(\r\n\t\t// \t\thero.hand.filter(\r\n\t\t// \t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t// \t\t),\r\n\t\t// \t);\r\n\t\t// \tif (!!minionInHand) {\r\n\t\t// \t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t// \t\tminionInHand.health += winterfinnerStats;\r\n\t\t// \t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t// \t\tgameState.spectator.registerPowerTarget(damagedEntity, minionInHand, board, hero, otherHero);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590:\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.LongJohnCopper_BG29_831:\r\n\t\t// case CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160:\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t// \t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t// \t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t// \t\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(damagedEntity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tdamagedEntity,\r\n\t\tboard.length - (board.indexOf(damagedEntity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(damagedEntity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\tif (damage > 0) {\r\n\t\tfor (const entity of board) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (const entity of otherBoard) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: otherBoard,\r\n\t\t\t\t\thero: otherHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, e, 2 * stats, stats, board, hero, gameState);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_BG30_MagicItem_427 ||\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t,\r\n\t\t)\r\n\t\t.forEach((carving) => {\r\n\t\t\tconst target = pickRandomAlive(board);\r\n\t\t\tif (!!target) {\r\n\t\t\t\tconst buff = carving.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t ? 4 : 2;\r\n\t\t\t\tmodifyStats(target, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n\r\nexport interface AfterDealDamageInput {\r\n\tdamagedEntity: BoardEntity | BgsPlayerEntity;\r\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"deathrattle-on-trigger.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-on-trigger.ts"],"names":[],"mappings":";;;AAGA,4DAAoE;AACpE,iEAA4D;AAE5D,mCAAiD;AAY1C,MAAM,sBAAsB,GAAG,CAAC,KAAgC,EAAE,EAAE;;IAC1E,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,mBAAmB,EAAE;QACpD,MAAM,sBAAsB,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,IAAA,0CAAyB,EAAC,sBAAsB,CAAC,EAAE;YACtD,sBAAsB,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SAClE;KACD;IACD,KAAK,MAAM,OAAO,IAAI,MAAA,KAAK,CAAC,uBAAuB,CAAC,QAAQ,mCAAI,EAAE,EAAE;QACnE,MAAM,sBAAsB,GAAG,6BAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,IAAA,0CAAyB,EAAC,sBAAsB,CAAC,EAAE;YACtD,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC9D;KACD;IAED,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,uBAAuB,CAAC,aAAa,mCAAI,EAAE,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC3B,QAAQ,KAAK,CAAC,MAAM,EAAE;YACrB;gBACC,IAAA,8BAAsB,EACrB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,EACL,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,MAAM;SACP;KACD;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAQ;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAiD,CAAC;SACxE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACd,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjCW,QAAA,sBAAsB,0BAiCjC","sourcesContent":["import { CardIds } from '../services/card-ids';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnDeathrattleTriggered } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\n\r\nexport interface DeathrattleTriggeredInput {\r\n\treadonly boardWithDeadEntity: BoardEntity[];\r\n\treadonly boardWithDeadEntityHero: BgsPlayerEntity;\r\n\treadonly deadEntity: BoardEntity;\r\n\treadonly otherBoard: BoardEntity[];\r\n\treadonly otherBoardHero: BgsPlayerEntity;\r\n\treadonly deadEntityIndexFromRight?: number;\r\n\treadonly gameState: FullGameState;\r\n}\r\n\r\nexport const onDeathrattleTriggered = (input: DeathrattleTriggeredInput) => {\r\n\tfor (const boardEntity of input.boardWithDeadEntity) {\r\n\t\tconst onDeathrattleTriggered = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnDeathrattleTriggered(onDeathrattleTriggered)) {\r\n\t\t\tonDeathrattleTriggered.onDeathrattleTriggered(boardEntity, input);\r\n\t\t}\r\n\t}\r\n\tfor (const trinket of input.boardWithDeadEntityHero.trinkets ?? []) {\r\n\t\tconst onDeathrattleTriggered = cardMappings[trinket.cardId];\r\n\t\tif (hasOnDeathrattleTriggered(onDeathrattleTriggered)) {\r\n\t\t\tonDeathrattleTriggered.onDeathrattleTriggered(trinket, input);\r\n\t\t}\r\n\t}\r\n\r\n\tconst quests = input.boardWithDeadEntityHero.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.ExhumeTheBones:\r\n\t\t\t\tonQuestProgressUpdated(\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tquest,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tinput.boardWithDeadEntityHero.trinkets\r\n\t\t.filter((t) => t.cardId === CardIds.DeathlyPhylactery_BG30_MagicItem_700)\r\n\t\t.forEach((t) => {\r\n\t\t\tt.scriptDataNum1 = 0;\r\n\t\t});\r\n};\r\n"]}
1
+ {"version":3,"file":"deathrattle-on-trigger.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-on-trigger.ts"],"names":[],"mappings":";;;AAGA,4DAAoE;AACpE,iEAA4D;AAE5D,mCAAiD;AAY1C,MAAM,sBAAsB,GAAG,CAAC,KAAgC,EAAE,EAAE;;IAC1E,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,mBAAmB,EAAE;QACpD,MAAM,sBAAsB,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,IAAA,0CAAyB,EAAC,sBAAsB,CAAC,EAAE;YACtD,sBAAsB,CAAC,sBAAsB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SAClE;KACD;IACD,KAAK,MAAM,OAAO,IAAI,MAAA,KAAK,CAAC,uBAAuB,CAAC,QAAQ,mCAAI,EAAE,EAAE;QACnE,MAAM,sBAAsB,GAAG,6BAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,IAAA,0CAAyB,EAAC,sBAAsB,CAAC,EAAE;YACtD,sBAAsB,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC9D;KACD;IAED,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,uBAAuB,CAAC,aAAa,mCAAI,EAAE,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC3B,QAAQ,KAAK,CAAC,MAAM,EAAE;YACrB;gBACC,IAAA,8BAAsB,EACrB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,EACL,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,MAAM;SACP;KACD;IAED,KAAK,CAAC,uBAAuB,CAAC,QAAQ;SACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAiD,CAAC;SACxE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACd,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjCW,QAAA,sBAAsB,0BAiCjC","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnDeathrattleTriggered } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\n\r\nexport interface DeathrattleTriggeredInput {\r\n\treadonly boardWithDeadEntity: BoardEntity[];\r\n\treadonly boardWithDeadEntityHero: BgsPlayerEntity;\r\n\treadonly deadEntity: BoardEntity;\r\n\treadonly otherBoard: BoardEntity[];\r\n\treadonly otherBoardHero: BgsPlayerEntity;\r\n\treadonly deadEntityIndexFromRight?: number;\r\n\treadonly gameState: FullGameState;\r\n}\r\n\r\nexport const onDeathrattleTriggered = (input: DeathrattleTriggeredInput) => {\r\n\tfor (const boardEntity of input.boardWithDeadEntity) {\r\n\t\tconst onDeathrattleTriggered = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnDeathrattleTriggered(onDeathrattleTriggered)) {\r\n\t\t\tonDeathrattleTriggered.onDeathrattleTriggered(boardEntity, input);\r\n\t\t}\r\n\t}\r\n\tfor (const trinket of input.boardWithDeadEntityHero.trinkets ?? []) {\r\n\t\tconst onDeathrattleTriggered = cardMappings[trinket.cardId];\r\n\t\tif (hasOnDeathrattleTriggered(onDeathrattleTriggered)) {\r\n\t\t\tonDeathrattleTriggered.onDeathrattleTriggered(trinket, input);\r\n\t\t}\r\n\t}\r\n\r\n\tconst quests = input.boardWithDeadEntityHero.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.ExhumeTheBones:\r\n\t\t\t\tonQuestProgressUpdated(\r\n\t\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\t\tquest,\r\n\t\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tinput.boardWithDeadEntityHero.trinkets\r\n\t\t.filter((t) => t.cardId === CardIds.DeathlyPhylactery_BG30_MagicItem_700)\r\n\t\t.forEach((t) => {\r\n\t\t\tt.scriptDataNum1 = 0;\r\n\t\t});\r\n};\r\n"]}