@firestone-hs/simulate-bgs-battle 1.1.564 → 1.1.566

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 (458) hide show
  1. package/dist/bgs-player-entity.d.ts +2 -0
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/cards/card.interface.d.ts +32 -6
  4. package/dist/cards/card.interface.js +13 -1
  5. package/dist/cards/card.interface.js.map +1 -1
  6. package/dist/cards/cards-data.d.ts +1 -0
  7. package/dist/cards/cards-data.js +8 -0
  8. package/dist/cards/cards-data.js.map +1 -1
  9. package/dist/cards/impl/_card-mappings.js +116 -0
  10. package/dist/cards/impl/_card-mappings.js.map +1 -1
  11. package/dist/cards/impl/bg-spell/sharing-is-caring.js +1 -1
  12. package/dist/cards/impl/bg-spell/sharing-is-caring.js.map +1 -1
  13. package/dist/cards/impl/hero-power/all-will-burn.js +2 -4
  14. package/dist/cards/impl/hero-power/all-will-burn.js.map +1 -1
  15. package/dist/cards/impl/hero-power/fragrant-phylactery.js +1 -2
  16. package/dist/cards/impl/hero-power/fragrant-phylactery.js.map +1 -1
  17. package/dist/cards/impl/hero-power/wax-warband.d.ts +3 -0
  18. package/dist/cards/impl/hero-power/wax-warband.js +4 -4
  19. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -1
  20. package/dist/cards/impl/minion/admiral-eliza-goreblade.js +1 -2
  21. package/dist/cards/impl/minion/admiral-eliza-goreblade.js.map +1 -1
  22. package/dist/cards/impl/minion/alleycat.d.ts +2 -0
  23. package/dist/cards/impl/minion/alleycat.js +24 -0
  24. package/dist/cards/impl/minion/alleycat.js.map +1 -0
  25. package/dist/cards/impl/minion/amber-guardian.js +1 -2
  26. package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
  27. package/dist/cards/impl/minion/apprentice-of-sefin.d.ts +6 -0
  28. package/dist/cards/impl/minion/apprentice-of-sefin.js +78 -0
  29. package/dist/cards/impl/minion/apprentice-of-sefin.js.map +1 -0
  30. package/dist/cards/impl/minion/ashen-corruptor.d.ts +2 -0
  31. package/dist/cards/impl/minion/ashen-corruptor.js +10 -0
  32. package/dist/cards/impl/minion/ashen-corruptor.js.map +1 -0
  33. package/dist/cards/impl/minion/assistant-guard.js +2 -1
  34. package/dist/cards/impl/minion/assistant-guard.js.map +1 -1
  35. package/dist/cards/impl/minion/auto-assembler-enchantment.d.ts +2 -0
  36. package/dist/cards/impl/minion/auto-assembler-enchantment.js +17 -0
  37. package/dist/cards/impl/minion/auto-assembler-enchantment.js.map +1 -0
  38. package/dist/cards/impl/minion/auto-assembler.d.ts +2 -0
  39. package/dist/cards/impl/minion/auto-assembler.js +14 -0
  40. package/dist/cards/impl/minion/auto-assembler.js.map +1 -0
  41. package/dist/cards/impl/minion/battlecruiser.js +2 -3
  42. package/dist/cards/impl/minion/battlecruiser.js.map +1 -1
  43. package/dist/cards/impl/minion/beetle.js +1 -1
  44. package/dist/cards/impl/minion/beetle.js.map +1 -1
  45. package/dist/cards/impl/minion/bellowing-tyrant.d.ts +2 -2
  46. package/dist/cards/impl/minion/bellowing-tyrant.js +7 -2
  47. package/dist/cards/impl/minion/bellowing-tyrant.js.map +1 -1
  48. package/dist/cards/impl/minion/blazing-skyfin.js +1 -1
  49. package/dist/cards/impl/minion/blazing-skyfin.js.map +1 -1
  50. package/dist/cards/impl/minion/bonker.d.ts +2 -0
  51. package/dist/cards/impl/minion/bonker.js +18 -0
  52. package/dist/cards/impl/minion/bonker.js.map +1 -0
  53. package/dist/cards/impl/minion/bronze-steward.d.ts +2 -0
  54. package/dist/cards/impl/minion/bronze-steward.js +29 -0
  55. package/dist/cards/impl/minion/bronze-steward.js.map +1 -0
  56. package/dist/cards/impl/minion/bubble-gunner.js +3 -34
  57. package/dist/cards/impl/minion/bubble-gunner.js.map +1 -1
  58. package/dist/cards/impl/minion/carrier.js +1 -1
  59. package/dist/cards/impl/minion/carrier.js.map +1 -1
  60. package/dist/cards/impl/minion/choral-mrrrglr.js +6 -3
  61. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
  62. package/dist/cards/impl/minion/clunker-junker.js +2 -1
  63. package/dist/cards/impl/minion/clunker-junker.js.map +1 -1
  64. package/dist/cards/impl/minion/coilskar-sapper.d.ts +2 -0
  65. package/dist/cards/impl/minion/coilskar-sapper.js +13 -0
  66. package/dist/cards/impl/minion/coilskar-sapper.js.map +1 -0
  67. package/dist/cards/impl/minion/corrupted-bristler.d.ts +2 -0
  68. package/dist/cards/impl/minion/corrupted-bristler.js +32 -0
  69. package/dist/cards/impl/minion/corrupted-bristler.js.map +1 -0
  70. package/dist/cards/impl/minion/corrupted-myrmidon.js +1 -2
  71. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -1
  72. package/dist/cards/impl/minion/crabby.js +1 -2
  73. package/dist/cards/impl/minion/crabby.js.map +1 -1
  74. package/dist/cards/impl/minion/dastardly-drust.d.ts +2 -0
  75. package/dist/cards/impl/minion/dastardly-drust.js +20 -0
  76. package/dist/cards/impl/minion/dastardly-drust.js.map +1 -0
  77. package/dist/cards/impl/minion/deadstomper.js +1 -2
  78. package/dist/cards/impl/minion/deadstomper.js.map +1 -1
  79. package/dist/cards/impl/minion/deflecto-bot.js +1 -2
  80. package/dist/cards/impl/minion/deflecto-bot.js.map +1 -1
  81. package/dist/cards/impl/minion/diremuck-forager.js +1 -2
  82. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -1
  83. package/dist/cards/impl/minion/dreaming-thornweaver.d.ts +2 -0
  84. package/dist/cards/impl/minion/dreaming-thornweaver.js +17 -0
  85. package/dist/cards/impl/minion/dreaming-thornweaver.js.map +1 -0
  86. package/dist/cards/impl/minion/drustfallen-butcher.d.ts +2 -0
  87. package/dist/cards/impl/minion/drustfallen-butcher.js +14 -0
  88. package/dist/cards/impl/minion/drustfallen-butcher.js.map +1 -0
  89. package/dist/cards/impl/minion/echoing-roar.js +1 -2
  90. package/dist/cards/impl/minion/echoing-roar.js.map +1 -1
  91. package/dist/cards/impl/minion/efficient-engineer.js +6 -1
  92. package/dist/cards/impl/minion/efficient-engineer.js.map +1 -1
  93. package/dist/cards/impl/minion/elder-taggawag.js +1 -2
  94. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -1
  95. package/dist/cards/impl/minion/electric-synthesizer.js +3 -2
  96. package/dist/cards/impl/minion/electric-synthesizer.js.map +1 -1
  97. package/dist/cards/impl/minion/elite-navigator.d.ts +2 -0
  98. package/dist/cards/impl/minion/elite-navigator.js +24 -0
  99. package/dist/cards/impl/minion/elite-navigator.js.map +1 -0
  100. package/dist/cards/impl/minion/fauna-whisperer.d.ts +2 -0
  101. package/dist/cards/impl/minion/fauna-whisperer.js +29 -0
  102. package/dist/cards/impl/minion/fauna-whisperer.js.map +1 -0
  103. package/dist/cards/impl/minion/fire-forged-evoker.d.ts +2 -0
  104. package/dist/cards/impl/minion/fire-forged-evoker.js +14 -0
  105. package/dist/cards/impl/minion/fire-forged-evoker.js.map +1 -0
  106. package/dist/cards/impl/minion/firescale-hoarder.d.ts +2 -0
  107. package/dist/cards/impl/minion/firescale-hoarder.js +19 -0
  108. package/dist/cards/impl/minion/firescale-hoarder.js.map +1 -0
  109. package/dist/cards/impl/minion/flighty-scout.d.ts +2 -0
  110. package/dist/cards/impl/minion/flighty-scout.js +24 -0
  111. package/dist/cards/impl/minion/flighty-scout.js.map +1 -0
  112. package/dist/cards/impl/minion/forest-rover.js +2 -1
  113. package/dist/cards/impl/minion/forest-rover.js.map +1 -1
  114. package/dist/cards/impl/minion/fountain-chiller.js +2 -2
  115. package/dist/cards/impl/minion/fountain-chiller.js.map +1 -1
  116. package/dist/cards/impl/minion/gem-smuggler.js +1 -0
  117. package/dist/cards/impl/minion/gem-smuggler.js.map +1 -1
  118. package/dist/cards/impl/minion/general-drakkisath.js +1 -0
  119. package/dist/cards/impl/minion/general-drakkisath.js.map +1 -1
  120. package/dist/cards/impl/minion/gentle-djinni.js +1 -0
  121. package/dist/cards/impl/minion/gentle-djinni.js.map +1 -1
  122. package/dist/cards/impl/minion/gentle-stag.js +7 -3
  123. package/dist/cards/impl/minion/gentle-stag.js.map +1 -1
  124. package/dist/cards/impl/minion/glowgullet-warlord.d.ts +2 -0
  125. package/dist/cards/impl/minion/glowgullet-warlord.js +15 -0
  126. package/dist/cards/impl/minion/glowgullet-warlord.js.map +1 -0
  127. package/dist/cards/impl/minion/goldgrubber.d.ts +2 -0
  128. package/dist/cards/impl/minion/goldgrubber.js +16 -0
  129. package/dist/cards/impl/minion/goldgrubber.js.map +1 -0
  130. package/dist/cards/impl/minion/gormling-gourmet.d.ts +2 -0
  131. package/dist/cards/impl/minion/gormling-gourmet.js +19 -0
  132. package/dist/cards/impl/minion/gormling-gourmet.js.map +1 -0
  133. package/dist/cards/impl/minion/grease-bot.js +1 -2
  134. package/dist/cards/impl/minion/grease-bot.js.map +1 -1
  135. package/dist/cards/impl/minion/greenskeeper.d.ts +2 -0
  136. package/dist/cards/impl/minion/greenskeeper.js +18 -0
  137. package/dist/cards/impl/minion/greenskeeper.js.map +1 -0
  138. package/dist/cards/impl/minion/grimscale-elegist.d.ts +2 -0
  139. package/dist/cards/impl/minion/grimscale-elegist.js +20 -0
  140. package/dist/cards/impl/minion/grimscale-elegist.js.map +1 -0
  141. package/dist/cards/impl/minion/gritty-headhunter.js +1 -0
  142. package/dist/cards/impl/minion/gritty-headhunter.js.map +1 -1
  143. package/dist/cards/impl/minion/hackerfin.js +3 -2
  144. package/dist/cards/impl/minion/hackerfin.js.map +1 -1
  145. package/dist/cards/impl/minion/hawkstrider-herald.js +1 -1
  146. package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -1
  147. package/dist/cards/impl/minion/hoarding-hatespawn.js +1 -1
  148. package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -1
  149. package/dist/cards/impl/minion/hungry-snapjaw.js +1 -1
  150. package/dist/cards/impl/minion/hungry-snapjaw.js.map +1 -1
  151. package/dist/cards/impl/minion/hydralisk.js +1 -1
  152. package/dist/cards/impl/minion/hydralisk.js.map +1 -1
  153. package/dist/cards/impl/minion/ignition-specialist.d.ts +2 -0
  154. package/dist/cards/impl/minion/ignition-specialist.js +16 -0
  155. package/dist/cards/impl/minion/ignition-specialist.js.map +1 -0
  156. package/dist/cards/impl/minion/immortal.js +1 -2
  157. package/dist/cards/impl/minion/immortal.js.map +1 -1
  158. package/dist/cards/impl/minion/implant-subject.js +1 -1
  159. package/dist/cards/impl/minion/implant-subject.js.map +1 -1
  160. package/dist/cards/impl/minion/imposing-percussionist.js +1 -0
  161. package/dist/cards/impl/minion/imposing-percussionist.js.map +1 -1
  162. package/dist/cards/impl/minion/impulsive-trickster.js +13 -1
  163. package/dist/cards/impl/minion/impulsive-trickster.js.map +1 -1
  164. package/dist/cards/impl/minion/inspiring-underdog.js +2 -2
  165. package/dist/cards/impl/minion/inspiring-underdog.js.map +1 -1
  166. package/dist/cards/impl/minion/irate-rooster.js +1 -1
  167. package/dist/cards/impl/minion/irate-rooster.js.map +1 -1
  168. package/dist/cards/impl/minion/king-bagurgle.js +4 -3
  169. package/dist/cards/impl/minion/king-bagurgle.js.map +1 -1
  170. package/dist/cards/impl/minion/lightfang-enforcer.js +1 -1
  171. package/dist/cards/impl/minion/lightfang-enforcer.js.map +1 -1
  172. package/dist/cards/impl/minion/lokholar-frostforger.d.ts +2 -0
  173. package/dist/cards/impl/minion/lokholar-frostforger.js +17 -0
  174. package/dist/cards/impl/minion/lokholar-frostforger.js.map +1 -0
  175. package/dist/cards/impl/minion/lovesick-balladist.js +6 -3
  176. package/dist/cards/impl/minion/lovesick-balladist.js.map +1 -1
  177. package/dist/cards/impl/minion/low-flier.js +1 -1
  178. package/dist/cards/impl/minion/low-flier.js.map +1 -1
  179. package/dist/cards/impl/minion/lurker.js +1 -1
  180. package/dist/cards/impl/minion/lurker.js.map +1 -1
  181. package/dist/cards/impl/minion/mantid-queen.js +1 -1
  182. package/dist/cards/impl/minion/mantid-queen.js.map +1 -1
  183. package/dist/cards/impl/minion/maw-caster.d.ts +2 -0
  184. package/dist/cards/impl/minion/maw-caster.js +25 -0
  185. package/dist/cards/impl/minion/maw-caster.js.map +1 -0
  186. package/dist/cards/impl/minion/mecha-jaraxxus.js +1 -0
  187. package/dist/cards/impl/minion/mecha-jaraxxus.js.map +1 -1
  188. package/dist/cards/impl/minion/mechagnome-interpreter.d.ts +2 -0
  189. package/dist/cards/impl/minion/mechagnome-interpreter.js +12 -0
  190. package/dist/cards/impl/minion/mechagnome-interpreter.js.map +1 -0
  191. package/dist/cards/impl/minion/menagerie-jug.js +1 -0
  192. package/dist/cards/impl/minion/menagerie-jug.js.map +1 -1
  193. package/dist/cards/impl/minion/metallic-hunter.d.ts +2 -0
  194. package/dist/cards/impl/minion/metallic-hunter.js +13 -0
  195. package/dist/cards/impl/minion/metallic-hunter.js.map +1 -0
  196. package/dist/cards/impl/minion/misfit-dragonling.js +1 -2
  197. package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -1
  198. package/dist/cards/impl/minion/monstrous-macaw.d.ts +2 -0
  199. package/dist/cards/impl/minion/monstrous-macaw.js +36 -0
  200. package/dist/cards/impl/minion/monstrous-macaw.js.map +1 -0
  201. package/dist/cards/impl/minion/murkbrine-expeditioner.d.ts +2 -0
  202. package/dist/cards/impl/minion/murkbrine-expeditioner.js +18 -0
  203. package/dist/cards/impl/minion/murkbrine-expeditioner.js.map +1 -0
  204. package/dist/cards/impl/minion/murky.js +3 -2
  205. package/dist/cards/impl/minion/murky.js.map +1 -1
  206. package/dist/cards/impl/minion/mutalisk.js +1 -1
  207. package/dist/cards/impl/minion/mutalisk.js.map +1 -1
  208. package/dist/cards/impl/minion/mutated-lasher.js +1 -2
  209. package/dist/cards/impl/minion/mutated-lasher.js.map +1 -1
  210. package/dist/cards/impl/minion/mythrax.js +1 -2
  211. package/dist/cards/impl/minion/mythrax.js.map +1 -1
  212. package/dist/cards/impl/minion/nerubian-deathswarmer.js +1 -0
  213. package/dist/cards/impl/minion/nerubian-deathswarmer.js.map +1 -1
  214. package/dist/cards/impl/minion/nightmare-par-tea-guest.d.ts +2 -0
  215. package/dist/cards/impl/minion/nightmare-par-tea-guest.js +19 -0
  216. package/dist/cards/impl/minion/nightmare-par-tea-guest.js.map +1 -0
  217. package/dist/cards/impl/minion/noisul-of-the-many-faces.d.ts +2 -0
  218. package/dist/cards/impl/minion/noisul-of-the-many-faces.js +22 -0
  219. package/dist/cards/impl/minion/noisul-of-the-many-faces.js.map +1 -0
  220. package/dist/cards/impl/minion/oozeling-gladiator.js +1 -0
  221. package/dist/cards/impl/minion/oozeling-gladiator.js.map +1 -1
  222. package/dist/cards/impl/minion/parched-wanderer.js +2 -1
  223. package/dist/cards/impl/minion/parched-wanderer.js.map +1 -1
  224. package/dist/cards/impl/minion/peggy-sturdybone.js +1 -2
  225. package/dist/cards/impl/minion/peggy-sturdybone.js.map +1 -1
  226. package/dist/cards/impl/minion/primalfin-lookout.js +1 -0
  227. package/dist/cards/impl/minion/primalfin-lookout.js.map +1 -1
  228. package/dist/cards/impl/minion/prized-promo-drake.js +1 -2
  229. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -1
  230. package/dist/cards/impl/minion/razorfen-geomancer.js +1 -0
  231. package/dist/cards/impl/minion/razorfen-geomancer.js.map +1 -1
  232. package/dist/cards/impl/minion/razorgore-the-untamed.js +1 -2
  233. package/dist/cards/impl/minion/razorgore-the-untamed.js.map +1 -1
  234. package/dist/cards/impl/minion/rickety-repairbot.d.ts +2 -0
  235. package/dist/cards/impl/minion/rickety-repairbot.js +16 -0
  236. package/dist/cards/impl/minion/rickety-repairbot.js.map +1 -0
  237. package/dist/cards/impl/minion/ripsnarl-captain.js +1 -2
  238. package/dist/cards/impl/minion/ripsnarl-captain.js.map +1 -1
  239. package/dist/cards/impl/minion/roach.js +1 -1
  240. package/dist/cards/impl/minion/roach.js.map +1 -1
  241. package/dist/cards/impl/minion/rodeo-performer.js +1 -0
  242. package/dist/cards/impl/minion/rodeo-performer.js.map +1 -1
  243. package/dist/cards/impl/minion/runed-progenitor.js +1 -1
  244. package/dist/cards/impl/minion/runed-progenitor.js.map +1 -1
  245. package/dist/cards/impl/minion/salty-hog.js +1 -2
  246. package/dist/cards/impl/minion/salty-hog.js.map +1 -1
  247. package/dist/cards/impl/minion/sanctum-rester.js +1 -2
  248. package/dist/cards/impl/minion/sanctum-rester.js.map +1 -1
  249. package/dist/cards/impl/minion/sanlayn-scribe.js +2 -2
  250. package/dist/cards/impl/minion/sanlayn-scribe.js.map +1 -1
  251. package/dist/cards/impl/minion/selfless-hero.d.ts +2 -0
  252. package/dist/cards/impl/minion/selfless-hero.js +25 -0
  253. package/dist/cards/impl/minion/selfless-hero.js.map +1 -0
  254. package/dist/cards/impl/minion/shadowdancer.d.ts +2 -0
  255. package/dist/cards/impl/minion/shadowdancer.js +13 -0
  256. package/dist/cards/impl/minion/shadowdancer.js.map +1 -0
  257. package/dist/cards/impl/minion/shell-collector.js +1 -0
  258. package/dist/cards/impl/minion/shell-collector.js.map +1 -1
  259. package/dist/cards/impl/minion/silithid-burrower.d.ts +2 -0
  260. package/dist/cards/impl/minion/silithid-burrower.js +18 -0
  261. package/dist/cards/impl/minion/silithid-burrower.js.map +1 -0
  262. package/dist/cards/impl/minion/silky-shimmermoth.d.ts +2 -0
  263. package/dist/cards/impl/minion/silky-shimmermoth.js +20 -0
  264. package/dist/cards/impl/minion/silky-shimmermoth.js.map +1 -0
  265. package/dist/cards/impl/minion/silver-handed-recruit.js +2 -1
  266. package/dist/cards/impl/minion/silver-handed-recruit.js.map +1 -1
  267. package/dist/cards/impl/minion/skulking-bristlemane.d.ts +2 -0
  268. package/dist/cards/impl/minion/skulking-bristlemane.js +17 -0
  269. package/dist/cards/impl/minion/skulking-bristlemane.js.map +1 -0
  270. package/dist/cards/impl/minion/slumber-sorcerer.d.ts +2 -0
  271. package/dist/cards/impl/minion/slumber-sorcerer.js +13 -0
  272. package/dist/cards/impl/minion/slumber-sorcerer.js.map +1 -0
  273. package/dist/cards/impl/minion/smolderwing.js +2 -1
  274. package/dist/cards/impl/minion/smolderwing.js.map +1 -1
  275. package/dist/cards/impl/minion/soul-rewinder.js +5 -1
  276. package/dist/cards/impl/minion/soul-rewinder.js.map +1 -1
  277. package/dist/cards/impl/minion/spacefarer.js +1 -1
  278. package/dist/cards/impl/minion/spacefarer.js.map +1 -1
  279. package/dist/cards/impl/minion/spirited-whimsydrake.d.ts +2 -0
  280. package/dist/cards/impl/minion/spirited-whimsydrake.js +19 -0
  281. package/dist/cards/impl/minion/spirited-whimsydrake.js.map +1 -0
  282. package/dist/cards/impl/minion/springy-spriggan.d.ts +2 -0
  283. package/dist/cards/impl/minion/springy-spriggan.js +21 -0
  284. package/dist/cards/impl/minion/springy-spriggan.js.map +1 -0
  285. package/dist/cards/impl/minion/surfing-slyvar.d.ts +2 -0
  286. package/dist/cards/impl/minion/surfing-slyvar.js +18 -0
  287. package/dist/cards/impl/minion/surfing-slyvar.js.map +1 -0
  288. package/dist/cards/impl/minion/swampstriker.js +1 -1
  289. package/dist/cards/impl/minion/swampstriker.js.map +1 -1
  290. package/dist/cards/impl/minion/thorncaller.d.ts +2 -0
  291. package/dist/cards/impl/minion/thorncaller.js +19 -0
  292. package/dist/cards/impl/minion/thorncaller.js.map +1 -0
  293. package/dist/cards/impl/minion/thousandth-paper-drake.js +1 -2
  294. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -1
  295. package/dist/cards/impl/minion/thundering-abomination.js +1 -2
  296. package/dist/cards/impl/minion/thundering-abomination.js.map +1 -1
  297. package/dist/cards/impl/minion/turquoise-skitterer.js +1 -1
  298. package/dist/cards/impl/minion/turquoise-skitterer.js.map +1 -1
  299. package/dist/cards/impl/minion/twilight-primordium.js +2 -2
  300. package/dist/cards/impl/minion/twilight-primordium.js.map +1 -1
  301. package/dist/cards/impl/minion/ultralisk.js +1 -2
  302. package/dist/cards/impl/minion/ultralisk.js.map +1 -1
  303. package/dist/cards/impl/minion/ultraviolet-ascendant.js +1 -1
  304. package/dist/cards/impl/minion/ultraviolet-ascendant.js.map +1 -1
  305. package/dist/cards/impl/minion/vaelastrasz.js +1 -2
  306. package/dist/cards/impl/minion/vaelastrasz.js.map +1 -1
  307. package/dist/cards/impl/minion/valiant-tiger.d.ts +2 -0
  308. package/dist/cards/impl/minion/valiant-tiger.js +18 -0
  309. package/dist/cards/impl/minion/valiant-tiger.js.map +1 -0
  310. package/dist/cards/impl/minion/void-ray.js +2 -2
  311. package/dist/cards/impl/minion/void-ray.js.map +1 -1
  312. package/dist/cards/impl/minion/vorkai-guardian.d.ts +2 -0
  313. package/dist/cards/impl/minion/vorkai-guardian.js +19 -0
  314. package/dist/cards/impl/minion/vorkai-guardian.js.map +1 -0
  315. package/dist/cards/impl/minion/wandering-wight.js +1 -2
  316. package/dist/cards/impl/minion/wandering-wight.js.map +1 -1
  317. package/dist/cards/impl/minion/whelp-smuggler.js +1 -2
  318. package/dist/cards/impl/minion/whelp-smuggler.js.map +1 -1
  319. package/dist/cards/impl/minion/wisp-in-the-shell.js +2 -1
  320. package/dist/cards/impl/minion/wisp-in-the-shell.js.map +1 -1
  321. package/dist/cards/impl/quest-reward/staff-of-origination.js +1 -2
  322. package/dist/cards/impl/quest-reward/staff-of-origination.js.map +1 -1
  323. package/dist/cards/impl/trinket/all-purpose-kibble.d.ts +2 -0
  324. package/dist/cards/impl/trinket/all-purpose-kibble.js +14 -0
  325. package/dist/cards/impl/trinket/all-purpose-kibble.js.map +1 -0
  326. package/dist/cards/impl/trinket/arm-of-the-empire.js +1 -2
  327. package/dist/cards/impl/trinket/arm-of-the-empire.js.map +1 -1
  328. package/dist/cards/impl/trinket/baleful-incense.d.ts +2 -0
  329. package/dist/cards/impl/trinket/baleful-incense.js +22 -0
  330. package/dist/cards/impl/trinket/baleful-incense.js.map +1 -0
  331. package/dist/cards/impl/trinket/bassgill-portrait.d.ts +2 -0
  332. package/dist/cards/impl/trinket/bassgill-portrait.js +16 -0
  333. package/dist/cards/impl/trinket/bassgill-portrait.js.map +1 -0
  334. package/dist/cards/impl/trinket/battle-horn.d.ts +2 -0
  335. package/dist/cards/impl/trinket/battle-horn.js +20 -0
  336. package/dist/cards/impl/trinket/battle-horn.js.map +1 -0
  337. package/dist/cards/impl/trinket/beetle-band.d.ts +2 -0
  338. package/dist/cards/impl/trinket/beetle-band.js +18 -0
  339. package/dist/cards/impl/trinket/beetle-band.js.map +1 -0
  340. package/dist/cards/impl/trinket/bird-feeder.d.ts +2 -0
  341. package/dist/cards/impl/trinket/bird-feeder.js +13 -0
  342. package/dist/cards/impl/trinket/bird-feeder.js.map +1 -0
  343. package/dist/cards/impl/trinket/bronze-timepiece.js +1 -3
  344. package/dist/cards/impl/trinket/bronze-timepiece.js.map +1 -1
  345. package/dist/cards/impl/trinket/crocheted-sungill.d.ts +2 -0
  346. package/dist/cards/impl/trinket/crocheted-sungill.js +31 -0
  347. package/dist/cards/impl/trinket/crocheted-sungill.js.map +1 -0
  348. package/dist/cards/impl/trinket/divine-signet.d.ts +2 -0
  349. package/dist/cards/impl/trinket/divine-signet.js +14 -0
  350. package/dist/cards/impl/trinket/divine-signet.js.map +1 -0
  351. package/dist/cards/impl/trinket/eclectic-shrine.d.ts +2 -0
  352. package/dist/cards/impl/trinket/eclectic-shrine.js +36 -0
  353. package/dist/cards/impl/trinket/eclectic-shrine.js.map +1 -0
  354. package/dist/cards/impl/trinket/faerie-dragon-scale.d.ts +2 -0
  355. package/dist/cards/impl/trinket/faerie-dragon-scale.js +20 -0
  356. package/dist/cards/impl/trinket/faerie-dragon-scale.js.map +1 -0
  357. package/dist/cards/impl/trinket/herald-sticker.d.ts +2 -0
  358. package/dist/cards/impl/trinket/herald-sticker.js +21 -0
  359. package/dist/cards/impl/trinket/herald-sticker.js.map +1 -0
  360. package/dist/cards/impl/trinket/hogwash-basin.d.ts +2 -0
  361. package/dist/cards/impl/trinket/hogwash-basin.js +14 -0
  362. package/dist/cards/impl/trinket/hogwash-basin.js.map +1 -0
  363. package/dist/cards/impl/trinket/rivendare-portrait.js +1 -2
  364. package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -1
  365. package/dist/cards/impl/trinket/sthara-sticker.d.ts +2 -0
  366. package/dist/cards/impl/trinket/sthara-sticker.js +32 -0
  367. package/dist/cards/impl/trinket/sthara-sticker.js.map +1 -0
  368. package/dist/cards/impl/trinket/tinyfin-onesie.js +1 -1
  369. package/dist/cards/impl/trinket/tinyfin-onesie.js.map +1 -1
  370. package/dist/cards/impl/trinket/unholy-sanctum.d.ts +2 -0
  371. package/dist/cards/impl/trinket/unholy-sanctum.js +15 -0
  372. package/dist/cards/impl/trinket/unholy-sanctum.js.map +1 -0
  373. package/dist/cards/impl/trinket/vashjir-anemone.d.ts +2 -0
  374. package/dist/cards/impl/trinket/vashjir-anemone.js +13 -0
  375. package/dist/cards/impl/trinket/vashjir-anemone.js.map +1 -0
  376. package/dist/cards/impl/trinket/yulon-sticker.d.ts +2 -0
  377. package/dist/cards/impl/trinket/yulon-sticker.js +20 -0
  378. package/dist/cards/impl/trinket/yulon-sticker.js.map +1 -0
  379. package/dist/keywords/divine-shield.js +19 -6
  380. package/dist/keywords/divine-shield.js.map +1 -1
  381. package/dist/keywords/venomous.js +1 -1
  382. package/dist/keywords/venomous.js.map +1 -1
  383. package/dist/services/utils.d.ts +3 -0
  384. package/dist/services/utils.js.map +1 -1
  385. package/dist/simulate-bgs-battle.js +2 -0
  386. package/dist/simulate-bgs-battle.js.map +1 -1
  387. package/dist/simulation/add-minion-to-board.js +52 -28
  388. package/dist/simulation/add-minion-to-board.js.map +1 -1
  389. package/dist/simulation/after-attack.d.ts +11 -1
  390. package/dist/simulation/after-attack.js +20 -25
  391. package/dist/simulation/after-attack.js.map +1 -1
  392. package/dist/simulation/attack.d.ts +8 -0
  393. package/dist/simulation/attack.js +16 -3
  394. package/dist/simulation/attack.js.map +1 -1
  395. package/dist/simulation/auras.js +14 -12
  396. package/dist/simulation/auras.js.map +1 -1
  397. package/dist/simulation/avenge.js +12 -13
  398. package/dist/simulation/avenge.js.map +1 -1
  399. package/dist/simulation/battlecries.d.ts +1 -0
  400. package/dist/simulation/battlecries.js +28 -36
  401. package/dist/simulation/battlecries.js.map +1 -1
  402. package/dist/simulation/blood-gems.js +8 -3
  403. package/dist/simulation/blood-gems.js.map +1 -1
  404. package/dist/simulation/cards-in-hand.js +1 -2
  405. package/dist/simulation/cards-in-hand.js.map +1 -1
  406. package/dist/simulation/damage-effects.js +4 -8
  407. package/dist/simulation/damage-effects.js.map +1 -1
  408. package/dist/simulation/death-effects.js +1 -2
  409. package/dist/simulation/death-effects.js.map +1 -1
  410. package/dist/simulation/deathrattle-effects.d.ts +1 -0
  411. package/dist/simulation/deathrattle-effects.js +51 -69
  412. package/dist/simulation/deathrattle-effects.js.map +1 -1
  413. package/dist/simulation/deathrattle-on-trigger.js +16 -2
  414. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  415. package/dist/simulation/deathrattle-spawns.d.ts +1 -0
  416. package/dist/simulation/deathrattle-spawns.js +7 -1
  417. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  418. package/dist/simulation/deathrattle-utils.d.ts +2 -1
  419. package/dist/simulation/deathrattle-utils.js +7 -3
  420. package/dist/simulation/deathrattle-utils.js.map +1 -1
  421. package/dist/simulation/discover.js +1 -1
  422. package/dist/simulation/discover.js.map +1 -1
  423. package/dist/simulation/magnetize.d.ts +9 -1
  424. package/dist/simulation/magnetize.js +17 -3
  425. package/dist/simulation/magnetize.js.map +1 -1
  426. package/dist/simulation/minion-death.js +3 -2
  427. package/dist/simulation/minion-death.js.map +1 -1
  428. package/dist/simulation/minion-kill.js +3 -3
  429. package/dist/simulation/minion-kill.js.map +1 -1
  430. package/dist/simulation/on-attack.js +24 -9
  431. package/dist/simulation/on-attack.js.map +1 -1
  432. package/dist/simulation/on-being-attacked.js +5 -10
  433. package/dist/simulation/on-being-attacked.js.map +1 -1
  434. package/dist/simulation/reborn.js +2 -4
  435. package/dist/simulation/reborn.js.map +1 -1
  436. package/dist/simulation/spawn-fail.js +1 -1
  437. package/dist/simulation/spawn-fail.js.map +1 -1
  438. package/dist/simulation/start-of-combat/soc-action-processor.js +0 -4
  439. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  440. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js +2 -4
  441. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js.map +1 -1
  442. package/dist/simulation/start-of-combat/soc-minion.js +10 -2
  443. package/dist/simulation/start-of-combat/soc-minion.js.map +1 -1
  444. package/dist/simulation/start-of-combat/start-of-combat.js +23 -17
  445. package/dist/simulation/start-of-combat/start-of-combat.js.map +1 -1
  446. package/dist/simulation/stats.d.ts +3 -3
  447. package/dist/simulation/stats.js +13 -3
  448. package/dist/simulation/stats.js.map +1 -1
  449. package/dist/simulation/summon-when-space.js +15 -0
  450. package/dist/simulation/summon-when-space.js.map +1 -1
  451. package/dist/simulation/utils/golden.js +7 -1
  452. package/dist/simulation/utils/golden.js.map +1 -1
  453. package/dist/utils.js +11 -16
  454. package/dist/utils.js.map +1 -1
  455. package/package.json +2 -2
  456. package/dist/cards/impl/trinket/artisanal-urn.d.ts +0 -5
  457. package/dist/cards/impl/trinket/artisanal-urn.js +0 -13
  458. package/dist/cards/impl/trinket/artisanal-urn.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';
2
+ export declare const CrochetedSungill: OnAfterDeathCard & DefaultScriptDataNumCard;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrochetedSungill = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
+ const spawns_1 = require("../../../simulation/spawns");
7
+ exports.CrochetedSungill = {
8
+ cardIds: ["BG32_MagicItem_960"],
9
+ defaultScriptDataNum: (cardId) => 1,
10
+ onAfterDeath: (trinket, input) => {
11
+ var _a, _b;
12
+ if (input.board.length > 0 || trinket.scriptDataNum1 <= 0) {
13
+ return;
14
+ }
15
+ const hand = (_b = (_a = input.hero.hand) === null || _a === void 0 ? void 0 : _a.filter((e) => !!(e === null || e === void 0 ? void 0 : e.cardId))) !== null && _b !== void 0 ? _b : [];
16
+ const highestHealth = Math.max(...hand.filter((c) => c.health).map((c) => c.health));
17
+ const highestHealthMinions = highestHealth ? hand.filter((c) => c.health === highestHealth) : null;
18
+ const candidate = !!(highestHealthMinions === null || highestHealthMinions === void 0 ? void 0 : highestHealthMinions.length)
19
+ ? (0, utils_1.pickRandom)(highestHealthMinions)
20
+ : hand.filter((c) => c.cardId).length
21
+ ? (0, utils_1.pickRandom)(hand.filter((c) => c.cardId))
22
+ : null;
23
+ if (!candidate) {
24
+ return;
25
+ }
26
+ const spawns = (0, deathrattle_spawns_1.spawnEntities)(candidate.cardId, 1, input.board, input.hero, input.otherBoard, input.otherHero, input.gameState, input.hero.friendly, false, false, true, { ...candidate });
27
+ (0, spawns_1.performEntitySpawns)(spawns, input.board, input.hero, input.hero, 0, input.otherBoard, input.otherHero, input.gameState);
28
+ trinket.scriptDataNum1--;
29
+ },
30
+ };
31
+ //# sourceMappingURL=crocheted-sungill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crocheted-sungill.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/crocheted-sungill.ts"],"names":[],"mappings":";;;AAGA,mDAAqD;AAErD,+EAAuE;AACvE,uDAAiE;AAGpD,QAAA,gBAAgB,GAAgD;IAC5E,OAAO,EAAE,sBAA6C;IACtD,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;;QACjE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1D,OAAO;SACP;QACD,MAAM,IAAI,GACT,MAAA,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,CAAA,CAAC,mCAE3C,EAAE,CAAC;QACJ,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,MAAM,oBAAoB,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,MAAM,SAAS,GAAG,CAAC,CAAC,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,CAAA;YAC/C,CAAC,CAAC,IAAA,kBAAU,EAAC,oBAAoB,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM;gBACrC,CAAC,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC;QACR,IAAI,CAAC,SAAS,EAAE;YACf,OAAO;SACP;QACD,MAAM,MAAM,GAAG,IAAA,kCAAa,EAC3B,SAAS,CAAC,MAAM,EAChB,CAAC,EACD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,CAAC,QAAQ,EACnB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,EAAE,GAAG,SAAS,EAAiB,CAC/B,CAAC;QACF,IAAA,4BAAmB,EAClB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,CAAC,EACD,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { OnAfterDeathInput } from '../../../simulation/attack';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';\r\n\r\nexport const CrochetedSungill: OnAfterDeathCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.CrochetedSungill_BG32_MagicItem_960],\r\n\tdefaultScriptDataNum: (cardId: string) => 1,\r\n\tonAfterDeath: (trinket: BoardTrinket, input: OnAfterDeathInput) => {\r\n\t\tif (input.board.length > 0 || trinket.scriptDataNum1 <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst hand =\r\n\t\t\tinput.hero.hand?.filter((e) => !!e?.cardId) ??\r\n\t\t\t// .filter((e) => !e.locked) // Not sure about this\r\n\t\t\t[];\r\n\t\tconst highestHealth = Math.max(...hand.filter((c) => c.health).map((c) => c.health));\r\n\t\tconst highestHealthMinions = highestHealth ? hand.filter((c) => c.health === highestHealth) : null;\r\n\t\tconst candidate = !!highestHealthMinions?.length\r\n\t\t\t? pickRandom(highestHealthMinions)\r\n\t\t\t: hand.filter((c) => c.cardId).length\r\n\t\t\t? pickRandom(hand.filter((c) => c.cardId))\r\n\t\t\t: null;\r\n\t\tif (!candidate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst spawns = spawnEntities(\r\n\t\t\tcandidate.cardId,\r\n\t\t\t1,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t\tinput.hero.friendly,\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n\t\t\ttrue,\r\n\t\t\t{ ...candidate } as BoardEntity,\r\n\t\t);\r\n\t\tperformEntitySpawns(\r\n\t\t\tspawns,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.hero,\r\n\t\t\t0,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\ttrinket.scriptDataNum1--;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnDivineShieldUpdatedCard } from '../../card.interface';
2
+ export declare const DivineSignet: OnDivineShieldUpdatedCard;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DivineSignet = void 0;
4
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
+ exports.DivineSignet = {
6
+ cardIds: ["BG32_MagicItem_171"],
7
+ onDivineShieldUpdated: (trinket, input) => {
8
+ if (trinket.scriptDataNum1 > 0) {
9
+ (0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, [input.gameState.cardsData.getRandomTavernSpell()], input.gameState);
10
+ trinket.scriptDataNum1--;
11
+ }
12
+ },
13
+ };
14
+ //# sourceMappingURL=divine-signet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"divine-signet.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/divine-signet.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,YAAY,GAA8B;IACtD,OAAO,EAAE,sBAAyC;IAClD,qBAAqB,EAAE,CAAC,OAAqB,EAAE,KAAiC,EAAE,EAAE;QACnF,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YAC/B,IAAA,8BAAc,EACb,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC,EAClD,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,CAAC,cAAc,EAAE,CAAC;SACzB;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { OnDivineShieldUpdatedInput } from '../../../keywords/divine-shield';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnDivineShieldUpdatedCard } from '../../card.interface';\r\n\r\nexport const DivineSignet: OnDivineShieldUpdatedCard = {\r\n\tcardIds: [CardIds.DivineSignet_BG32_MagicItem_171],\r\n\tonDivineShieldUpdated: (trinket: BoardTrinket, input: OnDivineShieldUpdatedInput) => {\r\n\t\tif (trinket.scriptDataNum1 > 0) {\r\n\t\t\taddCardsInHand(\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.board,\r\n\t\t\t\t[input.gameState.cardsData.getRandomTavernSpell()],\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\ttrinket.scriptDataNum1--;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const EclecticShrine: StartOfCombatCard;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EclecticShrine = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const stats_1 = require("../../../simulation/stats");
6
+ const utils_1 = require("../../../utils");
7
+ const wax_warband_1 = require("../hero-power/wax-warband");
8
+ exports.EclecticShrine = {
9
+ startOfCombatTiming: 'pre-combat',
10
+ cardIds: ["BG32_MagicItem_280"],
11
+ startOfCombat: (trinket, input) => {
12
+ var _a;
13
+ if (input.playerBoard.length > 0) {
14
+ const boardWithTribes = input.playerBoard.filter((e) => !!(0, utils_1.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.anomalies, input.gameState.allCards).length);
15
+ const boardWithoutAll = boardWithTribes.filter((e) => {
16
+ var _a;
17
+ return !((_a = (0, utils_1.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.anomalies, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL));
18
+ });
19
+ const selectedMinions = (0, wax_warband_1.selectMinions)(boardWithoutAll, reference_data_1.ALL_BG_RACES, input.gameState.allCards);
20
+ const allMinions = [
21
+ ...selectedMinions,
22
+ ...boardWithTribes.filter((e) => {
23
+ var _a;
24
+ return (_a = (0, utils_1.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.anomalies, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL);
25
+ }),
26
+ ];
27
+ const stats = 2 * ((_a = trinket.scriptDataNum1) !== null && _a !== void 0 ? _a : 1);
28
+ allMinions.forEach((e) => {
29
+ (0, stats_1.modifyStats)(e, trinket, stats, stats, input.playerBoard, input.playerEntity, input.gameState);
30
+ });
31
+ trinket.scriptDataNum1++;
32
+ return true;
33
+ }
34
+ },
35
+ };
36
+ //# sourceMappingURL=eclectic-shrine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eclectic-shrine.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/eclectic-shrine.ts"],"names":[],"mappings":";;;AAAA,iEAA2E;AAG3E,qDAAwD;AACxD,0CAA6D;AAE7D,2DAA0D;AAE7C,QAAA,cAAc,GAAsB;IAChD,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,sBAA2C;IACpD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,IAAA,mCAA2B,EAC5B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC,MAAM,CACT,CAAC;YACF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE;;gBACL,OAAA,CAAC,CAAA,MAAA,IAAA,mCAA2B,EAC3B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA,CAAA;aAAA,CACtB,CAAC;YACF,MAAM,eAAe,GAAG,IAAA,2BAAa,EAAC,eAAe,EAAE,6BAAY,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/F,MAAM,UAAU,GAAG;gBAClB,GAAG,eAAe;gBAClB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;;oBAC/B,OAAA,MAAA,IAAA,mCAA2B,EAC1B,CAAC,EACD,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,0CAAE,QAAQ,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAA;iBAAA,CACrB;aACD,CAAC;YACF,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,CAAC;YAChD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxB,IAAA,mBAAW,EAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC/F,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { ALL_BG_RACES, CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\nimport { selectMinions } from '../hero-power/wax-warband';\r\n\r\nexport const EclecticShrine: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.EclecticShrine_BG32_MagicItem_280],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerBoard.length > 0) {\r\n\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\t!!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t).length,\r\n\t\t\t);\r\n\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\t!getEffectiveTribesForEntity(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t);\r\n\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\tconst allMinions = [\r\n\t\t\t\t...selectedMinions,\r\n\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\tgetEffectiveTribesForEntity(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\t)?.includes(Race.ALL),\r\n\t\t\t\t),\r\n\t\t\t];\r\n\t\t\tconst stats = 2 * (trinket.scriptDataNum1 ?? 1);\r\n\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\tmodifyStats(e, trinket, stats, stats, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t});\r\n\t\t\ttrinket.scriptDataNum1++;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DefaultScriptDataNumCard, OnAttackCard } from '../../card.interface';
2
+ export declare const FaerieDragonScale: OnAttackCard & DefaultScriptDataNumCard;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FaerieDragonScale = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const divine_shield_1 = require("../../../keywords/divine-shield");
6
+ const utils_1 = require("../../../utils");
7
+ exports.FaerieDragonScale = {
8
+ cardIds: ["BG32_MagicItem_363"],
9
+ defaultScriptDataNum: (cardId) => 3,
10
+ onAnyMinionAttack: (trinket, input) => {
11
+ if (trinket.scriptDataNum1 > 0) {
12
+ if ((0, utils_1.hasCorrectTribe)(input.attacker, input.attackingHero, reference_data_1.Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {
13
+ (0, divine_shield_1.updateDivineShield)(input.attacker, input.attackingBoard, input.attackingHero, input.defendingHero, true, input.gameState);
14
+ trinket.scriptDataNum1--;
15
+ }
16
+ }
17
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
18
+ },
19
+ };
20
+ //# sourceMappingURL=faerie-dragon-scale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"faerie-dragon-scale.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/faerie-dragon-scale.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAE7D,mEAAqE;AAErE,0CAAiD;AAGpC,QAAA,iBAAiB,GAA4C;IACzE,OAAO,EAAE,sBAA8C;IACvD,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,iBAAiB,EAAE,CAClB,OAAqB,EACrB,KAAoB,EACuC,EAAE;QAC7D,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;YAC/B,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;gBACD,IAAA,kCAAkB,EACjB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,EACnB,IAAI,EACJ,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,OAAO,CAAC,cAAc,EAAE,CAAC;aACzB;SACD;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DefaultScriptDataNumCard, OnAttackCard } from '../../card.interface';\r\n\r\nexport const FaerieDragonScale: OnAttackCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.FaerieDragonScale_BG32_MagicItem_363],\r\n\tdefaultScriptDataNum: (cardId: string) => 3,\r\n\tonAnyMinionAttack: (\r\n\t\ttrinket: BoardTrinket,\r\n\t\tinput: OnAttackInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (trinket.scriptDataNum1 > 0) {\r\n\t\t\tif (\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\tinput.attacker,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tRace.DRAGON,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\tinput.attacker,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.defendingHero,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const HeraldSticker: StartOfCombatCard;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HeraldSticker = void 0;
4
+ const deathrattle_orchestration_1 = require("../../../simulation/deathrattle-orchestration");
5
+ const deathrattle_utils_1 = require("../../../simulation/deathrattle-utils");
6
+ exports.HeraldSticker = {
7
+ cardIds: ["BG32_MagicItem_306"],
8
+ startOfCombat: (trinket, input) => {
9
+ const candidates = (0, deathrattle_utils_1.getValidDeathrattles)(input.playerBoard, input.playerEntity, input.gameState).slice(0, 2);
10
+ for (const entity of candidates) {
11
+ input.gameState.spectator.registerPowerTarget(trinket, entity, input.playerBoard, input.playerEntity, input.opponentEntity);
12
+ const board = entity.friendly
13
+ ? input.gameState.gameState.player.board
14
+ : input.gameState.gameState.opponent.board;
15
+ const indexFromRight = board.length - (board.indexOf(entity) + 1);
16
+ (0, deathrattle_orchestration_1.processDeathrattleForMinion)(entity, indexFromRight, [entity], entity.friendly ? input.gameState.gameState.player : input.gameState.gameState.opponent, entity.friendly ? input.gameState.gameState.opponent : input.gameState.gameState.player, input.gameState, false);
17
+ }
18
+ return true;
19
+ },
20
+ };
21
+ //# sourceMappingURL=herald-sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herald-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/herald-sticker.ts"],"names":[],"mappings":";;;AAEA,6FAA4F;AAC5F,6EAA6E;AAIhE,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,sBAA0C;IACnD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,IAAA,wCAAoB,EAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5G,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAChC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,OAAO,EACP,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ;gBAC5B,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK;gBACxC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5C,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,IAAA,uDAA2B,EAC1B,MAAM,EACN,cAAc,EACd,CAAC,MAAM,CAAC,EACR,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EACvF,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EACvF,KAAK,CAAC,SAAS,EACf,KAAK,CACL,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { processDeathrattleForMinion } from '../../../simulation/deathrattle-orchestration';\r\nimport { getValidDeathrattles } from '../../../simulation/deathrattle-utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const HeraldSticker: StartOfCombatCard = {\r\n\tcardIds: [CardIds.HeraldSticker_BG32_MagicItem_306],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst candidates = getValidDeathrattles(input.playerBoard, input.playerEntity, input.gameState).slice(0, 2);\r\n\t\tfor (const entity of candidates) {\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\ttrinket,\r\n\t\t\t\tentity,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t\tconst board = entity.friendly\r\n\t\t\t\t? input.gameState.gameState.player.board\r\n\t\t\t\t: input.gameState.gameState.opponent.board;\r\n\t\t\tconst indexFromRight = board.length - (board.indexOf(entity) + 1);\r\n\t\t\tprocessDeathrattleForMinion(\r\n\t\t\t\tentity,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\t[entity],\r\n\t\t\t\tentity.friendly ? input.gameState.gameState.player : input.gameState.gameState.opponent,\r\n\t\t\t\tentity.friendly ? input.gameState.gameState.opponent : input.gameState.gameState.player,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const HogwashBasin: StartOfCombatCard;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HogwashBasin = void 0;
4
+ const blood_gems_1 = require("../../../simulation/blood-gems");
5
+ exports.HogwashBasin = {
6
+ cardIds: ["BG32_MagicItem_904"],
7
+ startOfCombat: (trinket, input) => {
8
+ for (const target of input.playerBoard) {
9
+ (0, blood_gems_1.playBloodGemsOn)(trinket, target, 4, input.playerBoard, input.playerEntity, input.gameState);
10
+ }
11
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: false };
12
+ },
13
+ };
14
+ //# sourceMappingURL=hogwash-basin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hogwash-basin.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/hogwash-basin.ts"],"names":[],"mappings":";;;AAEA,+DAAiE;AAIpD,QAAA,YAAY,GAAsB;IAC9C,OAAO,EAAE,sBAAyC;IAClD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YACvC,IAAA,4BAAe,EAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC5F;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { playBloodGemsOn } from '../../../simulation/blood-gems';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const HogwashBasin: StartOfCombatCard = {\r\n\tcardIds: [CardIds.HogwashBasin_BG32_MagicItem_904],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const target of input.playerBoard) {\r\n\t\t\tplayBloodGemsOn(trinket, target, 4, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n};\r\n"]}
@@ -10,8 +10,7 @@ exports.RivendarePortrait = {
10
10
  input.playerBoard
11
11
  .filter((e) => e.cardId === "BG25_354" || e.cardId === "BG25_354_G")
12
12
  .forEach((e) => {
13
- (0, stats_1.modifyStats)(e, 0, buffBonus * e.health, input.playerBoard, input.playerEntity, input.gameState);
14
- input.gameState.spectator.registerPowerTarget(trinket, e, input.playerBoard, null, null);
13
+ (0, stats_1.modifyStats)(e, trinket, 0, buffBonus * e.health, input.playerBoard, input.playerEntity, input.gameState);
15
14
  });
16
15
  rivendareTrinkets.forEach((t) => (t.scriptDataNum1 = 99));
17
16
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"rivendare-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/rivendare-portrait.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAE3C,QAAA,iBAAiB,GAAG;IAChC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QAGzD,IAAI,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE;YACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAiD,CAChE,CAAC;YACF,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC3C,KAAK,CAAC,WAAW;iBACf,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAoC,IAAI,CAAC,CAAC,MAAM,iBAAsC,CAC/F;iBACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAChG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1F,CAAC,CAAC,CAAC;YACJ,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const RivendarePortrait = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\t// Portraits are a bit weird, as having 2 of them makes stats go x3 instead of x4,\r\n\t\t// so we process them all in one go\r\n\t\tif (trinket.scriptDataNum1 != 99) {\r\n\t\t\tconst rivendareTrinkets = input.playerEntity.trinkets.filter(\r\n\t\t\t\t(t) => t.cardId === CardIds.RivendarePortrait_BG30_MagicItem_310,\r\n\t\t\t);\r\n\t\t\tconst buffBonus = rivendareTrinkets.length;\r\n\t\t\tinput.playerBoard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId === CardIds.TitusRivendare_BG25_354 || e.cardId === CardIds.TitusRivendare_BG25_354_G,\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(e, 0, buffBonus * e.health, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\t\tinput.gameState.spectator.registerPowerTarget(trinket, e, input.playerBoard, null, null);\r\n\t\t\t\t});\r\n\t\t\trivendareTrinkets.forEach((t) => (t.scriptDataNum1 = 99));\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"rivendare-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/rivendare-portrait.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAE3C,QAAA,iBAAiB,GAAG;IAChC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QAGzD,IAAI,OAAO,CAAC,cAAc,IAAI,EAAE,EAAE;YACjC,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAC3D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAiD,CAChE,CAAC;YACF,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC;YAC3C,KAAK,CAAC,WAAW;iBACf,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAoC,IAAI,CAAC,CAAC,MAAM,iBAAsC,CAC/F;iBACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,IAAA,mBAAW,EACV,CAAC,EACD,OAAO,EACP,CAAC,EACD,SAAS,GAAG,CAAC,CAAC,MAAM,EACpB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACH,CAAC,CAAC,CAAC;YACJ,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const RivendarePortrait = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\t// Portraits are a bit weird, as having 2 of them makes stats go x3 instead of x4,\r\n\t\t// so we process them all in one go\r\n\t\tif (trinket.scriptDataNum1 != 99) {\r\n\t\t\tconst rivendareTrinkets = input.playerEntity.trinkets.filter(\r\n\t\t\t\t(t) => t.cardId === CardIds.RivendarePortrait_BG30_MagicItem_310,\r\n\t\t\t);\r\n\t\t\tconst buffBonus = rivendareTrinkets.length;\r\n\t\t\tinput.playerBoard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId === CardIds.TitusRivendare_BG25_354 || e.cardId === CardIds.TitusRivendare_BG25_354_G,\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tbuffBonus * e.health,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\trivendareTrinkets.forEach((t) => (t.scriptDataNum1 = 99));\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';
2
+ export declare const StharaSticker: OnAfterDeathCard & DefaultScriptDataNumCard;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StharaSticker = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
+ const spawns_1 = require("../../../simulation/spawns");
7
+ const utils_1 = require("../../../utils");
8
+ exports.StharaSticker = {
9
+ cardIds: ["BG32_MagicItem_907"],
10
+ defaultScriptDataNum: (cardId) => 1,
11
+ onAfterDeath: (trinket, input) => {
12
+ if (input.board.length > 0 || trinket.scriptDataNum1 <= 0) {
13
+ return;
14
+ }
15
+ const candidate = input.gameState.sharedState.deaths
16
+ .filter((entity) => entity.friendly === input.hero.friendly)
17
+ .filter((entity) => (0, utils_1.hasCorrectTribe)(entity, input.hero, reference_data_1.Race.DEMON, input.gameState.anomalies, input.gameState.allCards))[0];
18
+ if (!candidate) {
19
+ return;
20
+ }
21
+ const spawns = (0, deathrattle_spawns_1.spawnEntities)(candidate.cardId, 1, input.board, input.hero, input.otherBoard, input.otherHero, input.gameState, input.hero.friendly, false).map((e) => ({
22
+ ...e,
23
+ attack: candidate.maxAttack,
24
+ health: candidate.maxHealth,
25
+ maxHealth: candidate.maxHealth,
26
+ maxAttack: candidate.maxAttack,
27
+ }));
28
+ (0, spawns_1.performEntitySpawns)(spawns, input.board, input.hero, input.hero, 0, input.otherBoard, input.otherHero, input.gameState);
29
+ trinket.scriptDataNum1--;
30
+ },
31
+ };
32
+ //# sourceMappingURL=sthara-sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sthara-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/sthara-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAG7D,+EAAuE;AACvE,uDAAiE;AACjE,0CAAiD;AAGpC,QAAA,aAAa,GAAgD;IACzE,OAAO,EAAE,sBAA0C;IACnD,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;QACjE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1D,OAAO;SACP;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM;aAClD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3D,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAClB,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACpG,CAAC,CAAC,CAAC,CAAC;QACN,IAAI,CAAC,SAAS,EAAE;YACf,OAAO;SACP;QACD,MAAM,MAAM,GAAG,IAAA,kCAAa,EAC3B,SAAS,CAAC,MAAM,EAChB,CAAC,EACD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,CAAC,QAAQ,EACnB,KAAK,CACL,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACb,GAAG,CAAC;YACJ,MAAM,EAAE,SAAS,CAAC,SAAS;YAC3B,MAAM,EAAE,SAAS,CAAC,SAAS;YAC3B,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,SAAS,EAAE,SAAS,CAAC,SAAS;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAA,4BAAmB,EAClB,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,EACV,CAAC,EACD,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;CACD,CAAC","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { OnAfterDeathInput } from '../../../simulation/attack';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';\r\n\r\nexport const StharaSticker: OnAfterDeathCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.StharaSticker_BG32_MagicItem_907],\r\n\tdefaultScriptDataNum: (cardId: string) => 1,\r\n\tonAfterDeath: (trinket: BoardTrinket, input: OnAfterDeathInput) => {\r\n\t\tif (input.board.length > 0 || trinket.scriptDataNum1 <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst candidate = input.gameState.sharedState.deaths\r\n\t\t\t.filter((entity) => entity.friendly === input.hero.friendly)\r\n\t\t\t.filter((entity) =>\r\n\t\t\t\thasCorrectTribe(entity, input.hero, Race.DEMON, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t\t)[0];\r\n\t\tif (!candidate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst spawns = spawnEntities(\r\n\t\t\tcandidate.cardId,\r\n\t\t\t1,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t\tinput.hero.friendly,\r\n\t\t\tfalse,\r\n\t\t).map((e) => ({\r\n\t\t\t...e,\r\n\t\t\tattack: candidate.maxAttack,\r\n\t\t\thealth: candidate.maxHealth,\r\n\t\t\tmaxHealth: candidate.maxHealth,\r\n\t\t\tmaxAttack: candidate.maxAttack,\r\n\t\t}));\r\n\t\tperformEntitySpawns(\r\n\t\t\tspawns,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\tinput.hero,\r\n\t\t\t0,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\ttrinket.scriptDataNum1--;\r\n\t},\r\n};\r\n"]}
@@ -7,7 +7,7 @@ exports.TinyfinOnesie = {
7
7
  var _a;
8
8
  const highestHealthMinionInHand = (_a = input.playerEntity.hand) === null || _a === void 0 ? void 0 : _a.sort((a, b) => b.health - a.health)[0];
9
9
  if (highestHealthMinionInHand && input.playerBoard.length > 0) {
10
- (0, stats_1.modifyStats)(input.playerBoard[0], highestHealthMinionInHand.attack, highestHealthMinionInHand.health, input.playerBoard, input.playerEntity, input.gameState);
10
+ (0, stats_1.modifyStats)(input.playerBoard[0], trinket, highestHealthMinionInHand.attack, highestHealthMinionInHand.health, input.playerBoard, input.playerEntity, input.gameState);
11
11
  return true;
12
12
  }
13
13
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tinyfin-onesie.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/tinyfin-onesie.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAE3C,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,MAAM,yBAAyB,GAAG,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,yBAAyB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,IAAA,mBAAW,EACV,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,yBAAyB,CAAC,MAAM,EAChC,yBAAyB,CAAC,MAAM,EAChC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const TinyfinOnesie = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst highestHealthMinionInHand = input.playerEntity.hand?.sort((a, b) => b.health - a.health)[0];\r\n\t\tif (highestHealthMinionInHand && input.playerBoard.length > 0) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tinput.playerBoard[0],\r\n\t\t\t\thighestHealthMinionInHand.attack,\r\n\t\t\t\thighestHealthMinionInHand.health,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"tinyfin-onesie.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/tinyfin-onesie.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAE3C,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,MAAM,yBAAyB,GAAG,MAAA,KAAK,CAAC,YAAY,CAAC,IAAI,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,yBAAyB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9D,IAAA,mBAAW,EACV,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EACpB,OAAO,EACP,yBAAyB,CAAC,MAAM,EAChC,yBAAyB,CAAC,MAAM,EAChC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const TinyfinOnesie = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst highestHealthMinionInHand = input.playerEntity.hand?.sort((a, b) => b.health - a.health)[0];\r\n\t\tif (highestHealthMinionInHand && input.playerBoard.length > 0) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tinput.playerBoard[0],\r\n\t\t\t\ttrinket,\r\n\t\t\t\thighestHealthMinionInHand.attack,\r\n\t\t\t\thighestHealthMinionInHand.health,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { DeathrattleTriggeredCard } from '../../card.interface';
2
+ export declare const UnholySanctum: DeathrattleTriggeredCard;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnholySanctum = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.UnholySanctum = {
6
+ cardIds: ["BG32_MagicItem_862", "BG32_MagicItem_862t"],
7
+ onDeathrattleTriggered: (trinket, input) => {
8
+ const mult = trinket.cardId === "BG32_MagicItem_862" ? 1 : 2;
9
+ const target = input.boardWithDeadEntity[input.boardWithDeadEntity.length - 1];
10
+ if (!!target) {
11
+ (0, stats_1.modifyStats)(target, trinket, 3 * mult, 3 * mult, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
12
+ }
13
+ },
14
+ };
15
+ //# sourceMappingURL=unholy-sanctum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unholy-sanctum.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/unholy-sanctum.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,aAAa,GAA6B;IACtD,OAAO,EAAE,6CAAwG;IACjH,sBAAsB,EAAE,CAAC,OAAqB,EAAE,KAAgC,EAAE,EAAE;QACnF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,yBAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,IAAA,mBAAW,EACV,MAAM,EACN,OAAO,EACP,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { DeathrattleTriggeredCard } from '../../card.interface';\r\n\r\nexport const UnholySanctum: DeathrattleTriggeredCard = {\r\n\tcardIds: [CardIds.UnholySanctum_BG32_MagicItem_862, CardIds.UnholySanctum_UnholySanctumToken_BG32_MagicItem_862t],\r\n\tonDeathrattleTriggered: (trinket: BoardTrinket, input: DeathrattleTriggeredInput) => {\r\n\t\tconst mult = trinket.cardId === CardIds.UnholySanctum_BG32_MagicItem_862 ? 1 : 2;\r\n\t\tconst target = input.boardWithDeadEntity[input.boardWithDeadEntity.length - 1];\r\n\t\tif (!!target) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\ttrinket,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\t3 * mult,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const VashjirAnemone: StartOfCombatCard;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VashjirAnemone = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ exports.VashjirAnemone = {
6
+ cardIds: ["BG32_MagicItem_932"],
7
+ startOfCombat: (trinket, input) => {
8
+ const buff = trinket.scriptDataNum1 || 1;
9
+ (0, utils_1.addStatsToBoard)(trinket, input.playerBoard, input.playerEntity, 0, buff, input.gameState);
10
+ return true;
11
+ },
12
+ };
13
+ //# sourceMappingURL=vashjir-anemone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vashjir-anemone.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/vashjir-anemone.ts"],"names":[],"mappings":";;;AAGA,0CAAiD;AAGpC,QAAA,cAAc,GAAsB;IAChD,OAAO,EAAE,sBAA2C;IACpD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACzC,IAAA,uBAAe,EAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1F,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const VashjirAnemone: StartOfCombatCard = {\r\n\tcardIds: [CardIds.VashjirAnemone_BG32_MagicItem_932],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst buff = trinket.scriptDataNum1 || 1;\r\n\t\taddStatsToBoard(trinket, input.playerBoard, input.playerEntity, 0, buff, input.gameState);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { StartOfCombatCard } from '../../card.interface';
2
+ export declare const YulonSticker: StartOfCombatCard;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YulonSticker = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const golden_1 = require("../../../simulation/utils/golden");
6
+ const utils_2 = require("../../../utils");
7
+ exports.YulonSticker = {
8
+ cardIds: ["BG32_MagicItem_419"],
9
+ startOfCombat: (minion, input) => {
10
+ const candidateBoard = input.playerBoard.filter((e) => !(0, utils_2.isGolden)(e.cardId, input.gameState.allCards));
11
+ const randomBoard = (0, utils_1.shuffleArray)(candidateBoard);
12
+ const candidates = randomBoard.sort((a, b) => input.gameState.cardsData.getTavernLevel(a.cardId) - input.gameState.cardsData.getTavernLevel(b.cardId));
13
+ const target = candidates[0];
14
+ if (!!target) {
15
+ (0, golden_1.makeMinionGolden)(target, minion, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState);
16
+ }
17
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: false };
18
+ },
19
+ };
20
+ //# sourceMappingURL=yulon-sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yulon-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/yulon-sticker.ts"],"names":[],"mappings":";;;AAEA,mDAAuD;AAEvD,6DAAoE;AACpE,0CAA0C;AAG7B,QAAA,YAAY,GAAsB;IAC9C,OAAO,EAAE,sBAAyC;IAClD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,gBAAQ,EAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtG,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,cAAc,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAClC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CACxG,CAAC;QACF,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,IAAA,yBAAgB,EACf,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { makeMinionGolden } from '../../../simulation/utils/golden';\r\nimport { isGolden } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const YulonSticker: StartOfCombatCard = {\r\n\tcardIds: [CardIds.YulonSticker_BG32_MagicItem_419],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst candidateBoard = input.playerBoard.filter((e) => !isGolden(e.cardId, input.gameState.allCards));\r\n\t\t// Because we pick one at random from all the ones that have the lowest tier\r\n\t\tconst randomBoard = shuffleArray(candidateBoard);\r\n\t\tconst candidates = randomBoard.sort(\r\n\t\t\t(a, b) =>\r\n\t\t\t\tinput.gameState.cardsData.getTavernLevel(a.cardId) - input.gameState.cardsData.getTavernLevel(b.cardId),\r\n\t\t);\r\n\t\tconst target = candidates[0];\r\n\t\tif (!!target) {\r\n\t\t\tmakeMinionGolden(\r\n\t\t\t\ttarget,\r\n\t\t\t\tminion,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n};\r\n"]}
@@ -9,7 +9,7 @@ const cards_in_hand_1 = require("../simulation/cards-in-hand");
9
9
  const stats_1 = require("../simulation/stats");
10
10
  const utils_2 = require("../utils");
11
11
  const updateDivineShield = (entity, board, hero, otherHero, newValue, gameState) => {
12
- var _a;
12
+ var _a, _b;
13
13
  entity.hadDivineShield = newValue || entity.divineShield || entity.hadDivineShield;
14
14
  entity.divineShield = newValue;
15
15
  if (entity.divineShield) {
@@ -32,6 +32,19 @@ const updateDivineShield = (entity, board, hero, otherHero, newValue, gameState)
32
32
  (0, exports.updateDivineShield)(entity, board, hero, otherHero, true, gameState);
33
33
  adapter.scriptDataNum1--;
34
34
  }
35
+ for (const trinket of (_a = hero.trinkets) !== null && _a !== void 0 ? _a : []) {
36
+ const onDivineShieldUpdatedImpl = _card_mappings_1.cardMappings[trinket.cardId];
37
+ if ((0, card_interface_1.hasOnDivineShieldUpdated)(onDivineShieldUpdatedImpl)) {
38
+ onDivineShieldUpdatedImpl.onDivineShieldUpdated(trinket, {
39
+ board: board,
40
+ hero: hero,
41
+ otherHero: otherHero,
42
+ gameState: gameState,
43
+ target: entity,
44
+ previousValue: entity.hadDivineShield,
45
+ });
46
+ }
47
+ }
35
48
  for (const boardEntity of board) {
36
49
  const onDivineShieldUpdatedImpl = _card_mappings_1.cardMappings[boardEntity.cardId];
37
50
  if ((0, card_interface_1.hasOnDivineShieldUpdated)(onDivineShieldUpdatedImpl)) {
@@ -47,19 +60,19 @@ const updateDivineShield = (entity, board, hero, otherHero, newValue, gameState)
47
60
  }
48
61
  for (let i = 0; i < board.length; i++) {
49
62
  if (board[i].cardId === "ICC_858") {
50
- (0, stats_1.modifyStats)(board[i], 2, 0, board, hero, gameState);
63
+ (0, stats_1.modifyStats)(board[i], board[i], 2, 0, board, hero, gameState);
51
64
  gameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);
52
65
  }
53
66
  else if (board[i].cardId === "TB_BaconUps_047") {
54
- (0, stats_1.modifyStats)(board[i], 4, 0, board, hero, gameState);
67
+ (0, stats_1.modifyStats)(board[i], board[i], 4, 0, board, hero, gameState);
55
68
  gameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);
56
69
  }
57
70
  else if (board[i].cardId === "BGS_067") {
58
- (0, stats_1.modifyStats)(board[i], 2, 2, board, hero, gameState);
71
+ (0, stats_1.modifyStats)(board[i], board[i], 2, 2, board, hero, gameState);
59
72
  gameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);
60
73
  }
61
74
  else if (board[i].cardId === "TB_BaconUps_117") {
62
- (0, stats_1.modifyStats)(board[i], 4, 4, board, hero, gameState);
75
+ (0, stats_1.modifyStats)(board[i], board[i], 4, 4, board, hero, gameState);
63
76
  gameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);
64
77
  }
65
78
  else if (board[i].entityId !== entity.entityId &&
@@ -75,7 +88,7 @@ const updateDivineShield = (entity, board, hero, otherHero, newValue, gameState)
75
88
  }
76
89
  else if (board[i].cardId === "BG24_008" ||
77
90
  board[i].cardId === "BG24_008_G") {
78
- if ((_a = board[i]) === null || _a === void 0 ? void 0 : _a.friendly) {
91
+ if ((_b = board[i]) === null || _b === void 0 ? void 0 : _b.friendly) {
79
92
  const buff = board[i].cardId === "BG24_008_G" ? 2 : 1;
80
93
  (0, utils_2.grantRandomStats)(board[i], 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]; }), hero, buff, buff, null, true, gameState);
81
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"divine-shield.js","sourceRoot":"","sources":["../../src/keywords/divine-shield.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnDivineShieldUpdated } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addCardsInHand } from '../simulation/cards-in-hand';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { modifyStats } from '../simulation/stats';\r\nimport { grantRandomStats, hasCorrectTribe } from '../utils';\r\n\r\nexport const updateDivineShield = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tnewValue: boolean,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// if ((entity.divineShield ?? false) === newValue) {\r\n\t// \treturn;\r\n\t// }\r\n\tentity.hadDivineShield = newValue || entity.divineShield || entity.hadDivineShield;\r\n\tentity.divineShield = newValue;\r\n\tif (entity.divineShield) {\r\n\t\tconst boardForDrake = board;\r\n\t\tconst statsBonus =\r\n\t\t\t6 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043).length +\r\n\t\t\t12 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043_G).length;\r\n\t\t// Don't trigger all \"on attack changed\" effects, since it's an aura\r\n\t\tentity.attack += statsBonus;\r\n\t} else {\r\n\t\t// Also consider itself\r\n\t\tconst boardForDrake = board;\r\n\t\tconst statsBonus =\r\n\t\t\t6 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043).length +\r\n\t\t\t12 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043_G).length;\r\n\t\tentity.attack -= statsBonus;\r\n\t}\r\n\r\n\t// Lost divine shield\r\n\tif (entity.hadDivineShield && !entity.divineShield) {\r\n\t\tconst adapter = hero.trinkets\r\n\t\t\t.filter((t) => t.cardId === CardIds.MechagonAdapter_BG30_MagicItem_910)\r\n\t\t\t.filter((t) => t.scriptDataNum1 > 0)[0];\r\n\t\tif (!!adapter && hasCorrectTribe(entity, hero, Race.MECH, gameState.anomalies, gameState.allCards)) {\r\n\t\t\tupdateDivineShield(entity, board, hero, otherHero, true, gameState);\r\n\t\t\tadapter.scriptDataNum1--;\r\n\t\t}\r\n\r\n\t\tfor (const boardEntity of board) {\r\n\t\t\tconst onDivineShieldUpdatedImpl = cardMappings[boardEntity.cardId];\r\n\t\t\tif (hasOnDivineShieldUpdated(onDivineShieldUpdatedImpl)) {\r\n\t\t\t\tonDivineShieldUpdatedImpl.onDivineShieldUpdated(boardEntity, {\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t\ttarget: entity,\r\n\t\t\t\t\tpreviousValue: entity.hadDivineShield,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < board.length; i++) {\r\n\t\t\tif (board[i].cardId === CardIds.BolvarFireblood_ICC_858) {\r\n\t\t\t\tmodifyStats(board[i], 2, 0, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.BolvarFireblood_TB_BaconUps_047) {\r\n\t\t\t\tmodifyStats(board[i], 4, 0, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.DrakonidEnforcer_BGS_067) {\r\n\t\t\t\tmodifyStats(board[i], 2, 2, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.DrakonidEnforcer_TB_BaconUps_117) {\r\n\t\t\t\tmodifyStats(board[i], 4, 4, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (\r\n\t\t\t\tboard[i].entityId !== entity.entityId &&\r\n\t\t\t\t(board[i].cardId === CardIds.HolyMecherel_BG20_401 ||\r\n\t\t\t\t\tboard[i].cardId === CardIds.HolyMecherel_BG20_401_G)\r\n\t\t\t) {\r\n\t\t\t\tupdateDivineShield(board[i], board, hero, otherHero, true, gameState);\r\n\t\t\t} else if (board[i].cardId === CardIds.Gemsplitter_BG21_037) {\r\n\t\t\t\taddCardsInHand(hero, board, [CardIds.BloodGem], gameState);\r\n\t\t\t} else if (board[i].cardId === CardIds.Gemsplitter_BG21_037_G) {\r\n\t\t\t\taddCardsInHand(hero, board, [CardIds.BloodGem, CardIds.BloodGem], gameState);\r\n\t\t\t} else if (\r\n\t\t\t\tboard[i].cardId === CardIds.CogworkCopter_BG24_008 ||\r\n\t\t\t\tboard[i].cardId === CardIds.CogworkCopter_BG24_008_G\r\n\t\t\t) {\r\n\t\t\t\t// When it's the opponent, the game state already contains all the buffs\r\n\t\t\t\tif (board[i]?.friendly) {\r\n\t\t\t\t\tconst buff = board[i].cardId === CardIds.CogworkCopter_BG24_008_G ? 2 : 1;\r\n\t\t\t\t\tgrantRandomStats(\r\n\t\t\t\t\t\tboard[i],\r\n\t\t\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t\tgameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\tbuff,\r\n\t\t\t\t\t\tbuff,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const grantRandomDivineShield = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst elligibleEntities = board\r\n\t\t.filter((entity) => !entity.divineShield)\r\n\t\t.filter((entity) => entity.health > 0 && !entity.definitelyDead);\r\n\tif (elligibleEntities.length > 0) {\r\n\t\tconst chosen = pickRandom(elligibleEntities);\r\n\t\tupdateDivineShield(chosen, board, hero, otherHero, true, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, chosen, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantDivineShieldToLeftmostMinions = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tquantity: number,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tfor (let i = 0; i < Math.min(quantity, board.length); i++) {\r\n\t\tupdateDivineShield(board[i], board, hero, otherHero, true, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, board[i], board, null, null);\r\n\t}\r\n};\r\n\r\nexport interface OnDivineShieldUpdatedInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n\ttarget: BoardEntity;\r\n\tpreviousValue: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"divine-shield.js","sourceRoot":"","sources":["../../src/keywords/divine-shield.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnDivineShieldUpdated } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addCardsInHand } from '../simulation/cards-in-hand';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { modifyStats } from '../simulation/stats';\r\nimport { grantRandomStats, hasCorrectTribe } from '../utils';\r\n\r\nexport const updateDivineShield = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tnewValue: boolean,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tentity.hadDivineShield = newValue || entity.divineShield || entity.hadDivineShield;\r\n\tentity.divineShield = newValue;\r\n\tif (entity.divineShield) {\r\n\t\tconst boardForDrake = board;\r\n\t\tconst statsBonus =\r\n\t\t\t6 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043).length +\r\n\t\t\t12 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043_G).length;\r\n\t\t// Don't trigger all \"on attack changed\" effects, since it's an aura\r\n\t\tentity.attack += statsBonus;\r\n\t} else {\r\n\t\t// Also consider itself\r\n\t\tconst boardForDrake = board;\r\n\t\tconst statsBonus =\r\n\t\t\t6 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043).length +\r\n\t\t\t12 * boardForDrake.filter((e) => e.cardId === CardIds.CyborgDrake_BG25_043_G).length;\r\n\t\tentity.attack -= statsBonus;\r\n\t}\r\n\r\n\t// Lost divine shield\r\n\tif (entity.hadDivineShield && !entity.divineShield) {\r\n\t\tconst adapter = hero.trinkets\r\n\t\t\t.filter((t) => t.cardId === CardIds.MechagonAdapter_BG30_MagicItem_910)\r\n\t\t\t.filter((t) => t.scriptDataNum1 > 0)[0];\r\n\t\tif (!!adapter && hasCorrectTribe(entity, hero, Race.MECH, gameState.anomalies, gameState.allCards)) {\r\n\t\t\tupdateDivineShield(entity, board, hero, otherHero, true, gameState);\r\n\t\t\tadapter.scriptDataNum1--;\r\n\t\t}\r\n\r\n\t\tfor (const trinket of hero.trinkets ?? []) {\r\n\t\t\tconst onDivineShieldUpdatedImpl = cardMappings[trinket.cardId];\r\n\t\t\tif (hasOnDivineShieldUpdated(onDivineShieldUpdatedImpl)) {\r\n\t\t\t\tonDivineShieldUpdatedImpl.onDivineShieldUpdated(trinket, {\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t\ttarget: entity,\r\n\t\t\t\t\tpreviousValue: entity.hadDivineShield,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const boardEntity of board) {\r\n\t\t\tconst onDivineShieldUpdatedImpl = cardMappings[boardEntity.cardId];\r\n\t\t\tif (hasOnDivineShieldUpdated(onDivineShieldUpdatedImpl)) {\r\n\t\t\t\tonDivineShieldUpdatedImpl.onDivineShieldUpdated(boardEntity, {\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t\ttarget: entity,\r\n\t\t\t\t\tpreviousValue: entity.hadDivineShield,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < board.length; i++) {\r\n\t\t\tif (board[i].cardId === CardIds.BolvarFireblood_ICC_858) {\r\n\t\t\t\tmodifyStats(board[i], board[i], 2, 0, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.BolvarFireblood_TB_BaconUps_047) {\r\n\t\t\t\tmodifyStats(board[i], board[i], 4, 0, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.DrakonidEnforcer_BGS_067) {\r\n\t\t\t\tmodifyStats(board[i], board[i], 2, 2, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (board[i].cardId === CardIds.DrakonidEnforcer_TB_BaconUps_117) {\r\n\t\t\t\tmodifyStats(board[i], board[i], 4, 4, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(board[i], board[i], board, hero, otherHero);\r\n\t\t\t} else if (\r\n\t\t\t\tboard[i].entityId !== entity.entityId &&\r\n\t\t\t\t(board[i].cardId === CardIds.HolyMecherel_BG20_401 ||\r\n\t\t\t\t\tboard[i].cardId === CardIds.HolyMecherel_BG20_401_G)\r\n\t\t\t) {\r\n\t\t\t\tupdateDivineShield(board[i], board, hero, otherHero, true, gameState);\r\n\t\t\t} else if (board[i].cardId === CardIds.Gemsplitter_BG21_037) {\r\n\t\t\t\taddCardsInHand(hero, board, [CardIds.BloodGem], gameState);\r\n\t\t\t} else if (board[i].cardId === CardIds.Gemsplitter_BG21_037_G) {\r\n\t\t\t\taddCardsInHand(hero, board, [CardIds.BloodGem, CardIds.BloodGem], gameState);\r\n\t\t\t} else if (\r\n\t\t\t\tboard[i].cardId === CardIds.CogworkCopter_BG24_008 ||\r\n\t\t\t\tboard[i].cardId === CardIds.CogworkCopter_BG24_008_G\r\n\t\t\t) {\r\n\t\t\t\t// When it's the opponent, the game state already contains all the buffs\r\n\t\t\t\tif (board[i]?.friendly) {\r\n\t\t\t\t\tconst buff = board[i].cardId === CardIds.CogworkCopter_BG24_008_G ? 2 : 1;\r\n\t\t\t\t\tgrantRandomStats(\r\n\t\t\t\t\t\tboard[i],\r\n\t\t\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t\tgameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\tbuff,\r\n\t\t\t\t\t\tbuff,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const grantRandomDivineShield = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst elligibleEntities = board\r\n\t\t.filter((entity) => !entity.divineShield)\r\n\t\t.filter((entity) => entity.health > 0 && !entity.definitelyDead);\r\n\tif (elligibleEntities.length > 0) {\r\n\t\tconst chosen = pickRandom(elligibleEntities);\r\n\t\tupdateDivineShield(chosen, board, hero, otherHero, true, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, chosen, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantDivineShieldToLeftmostMinions = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tquantity: number,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tfor (let i = 0; i < Math.min(quantity, board.length); i++) {\r\n\t\tupdateDivineShield(board[i], board, hero, otherHero, true, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, board[i], board, null, null);\r\n\t}\r\n};\r\n\r\nexport interface OnDivineShieldUpdatedInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n\ttarget: BoardEntity;\r\n\tpreviousValue: boolean;\r\n}\r\n"]}
@@ -13,7 +13,7 @@ const updateVenomous = (entity, newValue, board, hero, otherHero, gameState) =>
13
13
  t.cardId === "BG30_MagicItem_432t");
14
14
  belcherPortraits.forEach((p) => {
15
15
  const buff = p.cardId === "BG30_MagicItem_432t" ? 14 : 4;
16
- (0, stats_1.modifyStats)(entity, buff, buff, board, hero, gameState);
16
+ (0, stats_1.modifyStats)(entity, p, buff, buff, board, hero, gameState);
17
17
  gameState.spectator.registerPowerTarget(p, entity, board, null, null);
18
18
  });
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"venomous.js","sourceRoot":"","sources":["../../src/keywords/venomous.ts"],"names":[],"mappings":";;;AAGA,4DAA+D;AAC/D,iEAA4D;AAE5D,+CAAkD;AAE3C,MAAM,cAAc,GAAG,CAC7B,MAAmB,EACnB,QAAiB,EACjB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IACT,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC;IAClD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,IAAI,YAAY,EAAE;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,yBAA+C;YACvD,CAAC,CAAC,MAAM,0BAAqE,CAC9E,CAAC;QACF,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,0BAAqE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpG,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACxD,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;KACH;IAED,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;QAChC,MAAM,qBAAqB,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,IAAA,qCAAoB,EAAC,qBAAqB,CAAC,EAAE;YAChD,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE;gBAC3E,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;aACpB,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AAnCW,QAAA,cAAc,kBAmCzB","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnVenomousUpdated } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { modifyStats } from '../simulation/stats';\r\n\r\nexport const updateVenomous = (\r\n\tentity: BoardEntity,\r\n\tnewValue: boolean,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst previousValue = entity.venomous;\r\n\tconst lostVenomous = entity.venomous && !newValue;\r\n\tentity.venomous = newValue;\r\n\tif (lostVenomous) {\r\n\t\tconst belcherPortraits = hero.trinkets.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.BelcherPortrait_BG30_MagicItem_432 ||\r\n\t\t\t\tt.cardId === CardIds.BelcherPortrait_BelcherPortraitToken_BG30_MagicItem_432t,\r\n\t\t);\r\n\t\tbelcherPortraits.forEach((p) => {\r\n\t\t\tconst buff = p.cardId === CardIds.BelcherPortrait_BelcherPortraitToken_BG30_MagicItem_432t ? 14 : 4;\r\n\t\t\tmodifyStats(entity, buff, buff, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(p, entity, board, null, null);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const boardEntity of board) {\r\n\t\tconst onVenomousUpdatedImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnVenomousUpdated(onVenomousUpdatedImpl)) {\r\n\t\t\tonVenomousUpdatedImpl.onVenomousUpdated(boardEntity, entity, previousValue, {\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\totherHero: otherHero,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface OnVenomousUpdatedInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"venomous.js","sourceRoot":"","sources":["../../src/keywords/venomous.ts"],"names":[],"mappings":";;;AAGA,4DAA+D;AAC/D,iEAA4D;AAE5D,+CAAkD;AAE3C,MAAM,cAAc,GAAG,CAC7B,MAAmB,EACnB,QAAiB,EACjB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IACT,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC;IAClD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,IAAI,YAAY,EAAE;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,yBAA+C;YACvD,CAAC,CAAC,MAAM,0BAAqE,CAC9E,CAAC;QACF,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,0BAAqE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpG,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC3D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;KACH;IAED,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;QAChC,MAAM,qBAAqB,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/D,IAAI,IAAA,qCAAoB,EAAC,qBAAqB,CAAC,EAAE;YAChD,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE;gBAC3E,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;aACpB,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AAnCW,QAAA,cAAc,kBAmCzB","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnVenomousUpdated } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { modifyStats } from '../simulation/stats';\r\n\r\nexport const updateVenomous = (\r\n\tentity: BoardEntity,\r\n\tnewValue: boolean,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst previousValue = entity.venomous;\r\n\tconst lostVenomous = entity.venomous && !newValue;\r\n\tentity.venomous = newValue;\r\n\tif (lostVenomous) {\r\n\t\tconst belcherPortraits = hero.trinkets.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.BelcherPortrait_BG30_MagicItem_432 ||\r\n\t\t\t\tt.cardId === CardIds.BelcherPortrait_BelcherPortraitToken_BG30_MagicItem_432t,\r\n\t\t);\r\n\t\tbelcherPortraits.forEach((p) => {\r\n\t\t\tconst buff = p.cardId === CardIds.BelcherPortrait_BelcherPortraitToken_BG30_MagicItem_432t ? 14 : 4;\r\n\t\t\tmodifyStats(entity, p, buff, buff, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(p, entity, board, null, null);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const boardEntity of board) {\r\n\t\tconst onVenomousUpdatedImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnVenomousUpdated(onVenomousUpdatedImpl)) {\r\n\t\t\tonVenomousUpdatedImpl.onVenomousUpdated(boardEntity, entity, previousValue, {\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\totherHero: otherHero,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface OnVenomousUpdatedInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -13,3 +13,6 @@ export declare const encode: (input: string) => string;
13
13
  export declare const decode: (base64: string) => string;
14
14
  export declare const pickMultipleRandomDifferent: <T>(list: T[], n: number) => T[];
15
15
  export declare const shuffleArray: <T>(array: T[]) => T[];
16
+ export type Mutable<T> = {
17
+ -readonly [P in keyof T]: T[P];
18
+ };