@firestone-hs/simulate-bgs-battle 1.1.653 → 1.1.656

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 (738) hide show
  1. package/dist/bgs-player-entity.d.ts +3 -0
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/cards/card.interface.d.ts +50 -5
  4. package/dist/cards/card.interface.js +17 -3
  5. package/dist/cards/card.interface.js.map +1 -1
  6. package/dist/cards/cards-data.d.ts +9 -1
  7. package/dist/cards/cards-data.js +19 -7
  8. package/dist/cards/cards-data.js.map +1 -1
  9. package/dist/cards/impl/_card-mappings.js +380 -0
  10. package/dist/cards/impl/_card-mappings.js.map +1 -1
  11. package/dist/cards/impl/bg-spell/azerite-empowerment.d.ts +2 -2
  12. package/dist/cards/impl/bg-spell/azerite-empowerment.js +1 -1
  13. package/dist/cards/impl/bg-spell/azerite-empowerment.js.map +1 -1
  14. package/dist/cards/impl/bg-spell/blood-gem-barrage.d.ts +2 -0
  15. package/dist/cards/impl/bg-spell/blood-gem-barrage.js +9 -0
  16. package/dist/cards/impl/bg-spell/blood-gem-barrage.js.map +1 -0
  17. package/dist/cards/impl/bg-spell/brood-of-nozdormu.d.ts +2 -0
  18. package/dist/cards/impl/bg-spell/brood-of-nozdormu.js +16 -0
  19. package/dist/cards/impl/bg-spell/brood-of-nozdormu.js.map +1 -0
  20. package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.d.ts +2 -0
  21. package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.js +19 -0
  22. package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.js.map +1 -0
  23. package/dist/cards/impl/bg-spell/hand-of-deios.d.ts +2 -0
  24. package/dist/cards/impl/bg-spell/hand-of-deios.js +36 -0
  25. package/dist/cards/impl/bg-spell/hand-of-deios.js.map +1 -0
  26. package/dist/cards/impl/bg-spell/murkys-fish.d.ts +2 -2
  27. package/dist/cards/impl/bg-spell/murkys-fish.js +1 -1
  28. package/dist/cards/impl/bg-spell/murkys-fish.js.map +1 -1
  29. package/dist/cards/impl/bg-spell/natural-blessing.d.ts +2 -2
  30. package/dist/cards/impl/bg-spell/natural-blessing.js +1 -1
  31. package/dist/cards/impl/bg-spell/natural-blessing.js.map +1 -1
  32. package/dist/cards/impl/bg-spell/shiny-ring.d.ts +2 -2
  33. package/dist/cards/impl/bg-spell/shiny-ring.js +1 -1
  34. package/dist/cards/impl/bg-spell/shiny-ring.js.map +1 -1
  35. package/dist/cards/impl/bg-spell/timewarped-bananas.d.ts +2 -0
  36. package/dist/cards/impl/bg-spell/timewarped-bananas.js +15 -0
  37. package/dist/cards/impl/bg-spell/timewarped-bananas.js.map +1 -0
  38. package/dist/cards/impl/bg-spell/timewarped-chefs-choice.d.ts +2 -0
  39. package/dist/cards/impl/bg-spell/timewarped-chefs-choice.js +17 -0
  40. package/dist/cards/impl/bg-spell/timewarped-chefs-choice.js.map +1 -0
  41. package/dist/cards/impl/bg-spell/timewarped-cloning-device.d.ts +2 -0
  42. package/dist/cards/impl/bg-spell/timewarped-cloning-device.js +24 -0
  43. package/dist/cards/impl/bg-spell/timewarped-cloning-device.js.map +1 -0
  44. package/dist/cards/impl/bg-spell/timewarped-conch.d.ts +2 -0
  45. package/dist/cards/impl/bg-spell/timewarped-conch.js +25 -0
  46. package/dist/cards/impl/bg-spell/timewarped-conch.js.map +1 -0
  47. package/dist/cards/impl/bg-spell/timewarped-corpse.d.ts +2 -0
  48. package/dist/cards/impl/bg-spell/timewarped-corpse.js +12 -0
  49. package/dist/cards/impl/bg-spell/timewarped-corpse.js.map +1 -0
  50. package/dist/cards/impl/bg-spell/timewarped-evolution.d.ts +2 -0
  51. package/dist/cards/impl/bg-spell/timewarped-evolution.js +17 -0
  52. package/dist/cards/impl/bg-spell/timewarped-evolution.js.map +1 -0
  53. package/dist/cards/impl/bg-spell/timewarped-goldenizer.d.ts +2 -0
  54. package/dist/cards/impl/bg-spell/timewarped-goldenizer.js +18 -0
  55. package/dist/cards/impl/bg-spell/timewarped-goldenizer.js.map +1 -0
  56. package/dist/cards/impl/bg-spell/timewarped-master-thief.d.ts +2 -0
  57. package/dist/cards/impl/bg-spell/timewarped-master-thief.js +21 -0
  58. package/dist/cards/impl/bg-spell/timewarped-master-thief.js.map +1 -0
  59. package/dist/cards/impl/bg-spell/timewarped-on-the-house.d.ts +2 -0
  60. package/dist/cards/impl/bg-spell/timewarped-on-the-house.js +12 -0
  61. package/dist/cards/impl/bg-spell/timewarped-on-the-house.js.map +1 -0
  62. package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.d.ts +2 -0
  63. package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.js +18 -0
  64. package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.js.map +1 -0
  65. package/dist/cards/impl/bg-spell/timewarped-ritual.d.ts +2 -0
  66. package/dist/cards/impl/bg-spell/timewarped-ritual.js +15 -0
  67. package/dist/cards/impl/bg-spell/timewarped-ritual.js.map +1 -0
  68. package/dist/cards/impl/bg-spell/timewarped-special.d.ts +2 -0
  69. package/dist/cards/impl/bg-spell/timewarped-special.js +13 -0
  70. package/dist/cards/impl/bg-spell/timewarped-special.js.map +1 -0
  71. package/dist/cards/impl/bg-spell/timewarped-thief.d.ts +2 -0
  72. package/dist/cards/impl/bg-spell/timewarped-thief.js +25 -0
  73. package/dist/cards/impl/bg-spell/timewarped-thief.js.map +1 -0
  74. package/dist/cards/impl/bg-spell/tomb-turning.d.ts +2 -0
  75. package/dist/cards/impl/bg-spell/tomb-turning.js +13 -0
  76. package/dist/cards/impl/bg-spell/tomb-turning.js.map +1 -0
  77. package/dist/cards/impl/bg-spell/wave-of-gold.d.ts +2 -0
  78. package/dist/cards/impl/bg-spell/wave-of-gold.js +16 -0
  79. package/dist/cards/impl/bg-spell/wave-of-gold.js.map +1 -0
  80. package/dist/cards/impl/minion/apexis-guardian.d.ts +2 -0
  81. package/dist/cards/impl/minion/apexis-guardian.js +27 -0
  82. package/dist/cards/impl/minion/apexis-guardian.js.map +1 -0
  83. package/dist/cards/impl/minion/arcane-cannoneer.js +3 -0
  84. package/dist/cards/impl/minion/arcane-cannoneer.js.map +1 -1
  85. package/dist/cards/impl/minion/archaedas.d.ts +2 -0
  86. package/dist/cards/impl/minion/archaedas.js +18 -0
  87. package/dist/cards/impl/minion/archaedas.js.map +1 -0
  88. package/dist/cards/impl/minion/auto-accelerator.d.ts +2 -0
  89. package/dist/cards/impl/minion/auto-accelerator.js +17 -0
  90. package/dist/cards/impl/minion/auto-accelerator.js.map +1 -0
  91. package/dist/cards/impl/minion/bannerboar.js +1 -1
  92. package/dist/cards/impl/minion/bannerboar.js.map +1 -1
  93. package/dist/cards/impl/minion/bassgill.d.ts +2 -0
  94. package/dist/cards/impl/minion/bassgill.js +35 -0
  95. package/dist/cards/impl/minion/bassgill.js.map +1 -0
  96. package/dist/cards/impl/minion/bloodsnout-warlord.js +1 -1
  97. package/dist/cards/impl/minion/bloodsnout-warlord.js.map +1 -1
  98. package/dist/cards/impl/minion/blue-volumizer.d.ts +2 -0
  99. package/dist/cards/impl/minion/blue-volumizer.js +18 -0
  100. package/dist/cards/impl/minion/blue-volumizer.js.map +1 -0
  101. package/dist/cards/impl/minion/bluesy-siren.d.ts +2 -0
  102. package/dist/cards/impl/minion/bluesy-siren.js +31 -0
  103. package/dist/cards/impl/minion/bluesy-siren.js.map +1 -0
  104. package/dist/cards/impl/minion/bongo-bopper.js +1 -1
  105. package/dist/cards/impl/minion/bongo-bopper.js.map +1 -1
  106. package/dist/cards/impl/minion/bonker.js +1 -1
  107. package/dist/cards/impl/minion/bonker.js.map +1 -1
  108. package/dist/cards/impl/minion/briarback-drummer.d.ts +2 -0
  109. package/dist/cards/impl/minion/briarback-drummer.js +14 -0
  110. package/dist/cards/impl/minion/briarback-drummer.js.map +1 -0
  111. package/dist/cards/impl/minion/briny-bootlegger.d.ts +2 -0
  112. package/dist/cards/impl/minion/briny-bootlegger.js +14 -0
  113. package/dist/cards/impl/minion/briny-bootlegger.js.map +1 -0
  114. package/dist/cards/impl/minion/budding-greenthumb.d.ts +2 -0
  115. package/dist/cards/impl/minion/budding-greenthumb.js +17 -0
  116. package/dist/cards/impl/minion/budding-greenthumb.js.map +1 -0
  117. package/dist/cards/impl/minion/canopy-swinger.js +2 -2
  118. package/dist/cards/impl/minion/canopy-swinger.js.map +1 -1
  119. package/dist/cards/impl/minion/charging-czarina.d.ts +2 -0
  120. package/dist/cards/impl/minion/charging-czarina.js +15 -0
  121. package/dist/cards/impl/minion/charging-czarina.js.map +1 -0
  122. package/dist/cards/impl/minion/charlga.js +1 -1
  123. package/dist/cards/impl/minion/charlga.js.map +1 -1
  124. package/dist/cards/impl/minion/choral-mrrrglr.d.ts +2 -5
  125. package/dist/cards/impl/minion/choral-mrrrglr.js +2 -0
  126. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
  127. package/dist/cards/impl/minion/clunker-junker.js +1 -1
  128. package/dist/cards/impl/minion/clunker-junker.js.map +1 -1
  129. package/dist/cards/impl/minion/colossus.js +3 -0
  130. package/dist/cards/impl/minion/colossus.js.map +1 -1
  131. package/dist/cards/impl/minion/conveyor-construct.d.ts +2 -0
  132. package/dist/cards/impl/minion/conveyor-construct.js +17 -0
  133. package/dist/cards/impl/minion/conveyor-construct.js.map +1 -0
  134. package/dist/cards/impl/minion/costume-enthusiast.d.ts +2 -0
  135. package/dist/cards/impl/minion/costume-enthusiast.js +20 -0
  136. package/dist/cards/impl/minion/costume-enthusiast.js.map +1 -0
  137. package/dist/cards/impl/minion/dramaloc.d.ts +2 -0
  138. package/dist/cards/impl/minion/dramaloc.js +27 -0
  139. package/dist/cards/impl/minion/dramaloc.js.map +1 -0
  140. package/dist/cards/impl/minion/efficient-engineer.js +3 -1
  141. package/dist/cards/impl/minion/efficient-engineer.js.map +1 -1
  142. package/dist/cards/impl/minion/expert-aviator.d.ts +2 -0
  143. package/dist/cards/impl/minion/expert-aviator.js +39 -0
  144. package/dist/cards/impl/minion/expert-aviator.js.map +1 -0
  145. package/dist/cards/impl/minion/festergut.d.ts +2 -0
  146. package/dist/cards/impl/minion/festergut.js +20 -0
  147. package/dist/cards/impl/minion/festergut.js.map +1 -0
  148. package/dist/cards/impl/minion/forsaken-weaver.d.ts +2 -0
  149. package/dist/cards/impl/minion/forsaken-weaver.js +11 -0
  150. package/dist/cards/impl/minion/forsaken-weaver.js.map +1 -0
  151. package/dist/cards/impl/minion/futurefin.d.ts +2 -0
  152. package/dist/cards/impl/minion/futurefin.js +15 -0
  153. package/dist/cards/impl/minion/futurefin.js.map +1 -0
  154. package/dist/cards/impl/minion/gem-smuggler.js +1 -1
  155. package/dist/cards/impl/minion/gem-smuggler.js.map +1 -1
  156. package/dist/cards/impl/minion/gemsplitter.d.ts +2 -0
  157. package/dist/cards/impl/minion/gemsplitter.js +15 -0
  158. package/dist/cards/impl/minion/gemsplitter.js.map +1 -0
  159. package/dist/cards/impl/minion/ghoul-of-the-feast.d.ts +2 -0
  160. package/dist/cards/impl/minion/ghoul-of-the-feast.js +13 -0
  161. package/dist/cards/impl/minion/ghoul-of-the-feast.js.map +1 -0
  162. package/dist/cards/impl/minion/gilded-gargoyle.d.ts +2 -0
  163. package/dist/cards/impl/minion/gilded-gargoyle.js +13 -0
  164. package/dist/cards/impl/minion/gilded-gargoyle.js.map +1 -0
  165. package/dist/cards/impl/minion/glowgullet-warlord.js +1 -1
  166. package/dist/cards/impl/minion/glowgullet-warlord.js.map +1 -1
  167. package/dist/cards/impl/minion/goldrinn-the-great-wolf.js +2 -1
  168. package/dist/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -1
  169. package/dist/cards/impl/minion/green-volumizer.d.ts +2 -0
  170. package/dist/cards/impl/minion/green-volumizer.js +19 -0
  171. package/dist/cards/impl/minion/green-volumizer.js.map +1 -0
  172. package/dist/cards/impl/minion/hardy-orca.d.ts +2 -0
  173. package/dist/cards/impl/minion/hardy-orca.js +15 -0
  174. package/dist/cards/impl/minion/hardy-orca.js.map +1 -0
  175. package/dist/cards/impl/minion/heroic-underdog.d.ts +2 -0
  176. package/dist/cards/impl/minion/heroic-underdog.js +17 -0
  177. package/dist/cards/impl/minion/heroic-underdog.js.map +1 -0
  178. package/dist/cards/impl/minion/highkeeper-ra.d.ts +2 -0
  179. package/dist/cards/impl/minion/highkeeper-ra.js +28 -0
  180. package/dist/cards/impl/minion/highkeeper-ra.js.map +1 -0
  181. package/dist/cards/impl/minion/hot-springer.js +2 -2
  182. package/dist/cards/impl/minion/hot-springer.js.map +1 -1
  183. package/dist/cards/impl/minion/hunting-tiger-shark.d.ts +2 -0
  184. package/dist/cards/impl/minion/hunting-tiger-shark.js +18 -0
  185. package/dist/cards/impl/minion/hunting-tiger-shark.js.map +1 -0
  186. package/dist/cards/impl/minion/impulsive-trickster.js +7 -11
  187. package/dist/cards/impl/minion/impulsive-trickster.js.map +1 -1
  188. package/dist/cards/impl/minion/indomitable-mount.js +1 -1
  189. package/dist/cards/impl/minion/indomitable-mount.js.map +1 -1
  190. package/dist/cards/impl/minion/jelly-belly.d.ts +2 -0
  191. package/dist/cards/impl/minion/jelly-belly.js +12 -0
  192. package/dist/cards/impl/minion/jelly-belly.js.map +1 -0
  193. package/dist/cards/impl/minion/junk-jouster.d.ts +2 -0
  194. package/dist/cards/impl/minion/junk-jouster.js +15 -0
  195. package/dist/cards/impl/minion/junk-jouster.js.map +1 -0
  196. package/dist/cards/impl/minion/king-bagurgle.js +1 -1
  197. package/dist/cards/impl/minion/king-bagurgle.js.map +1 -1
  198. package/dist/cards/impl/minion/magicfin-apprentice.js +11 -13
  199. package/dist/cards/impl/minion/magicfin-apprentice.js.map +1 -1
  200. package/dist/cards/impl/minion/metal-dispenser.d.ts +2 -0
  201. package/dist/cards/impl/minion/metal-dispenser.js +17 -0
  202. package/dist/cards/impl/minion/metal-dispenser.js.map +1 -0
  203. package/dist/cards/impl/minion/murcules.d.ts +2 -0
  204. package/dist/cards/impl/minion/murcules.js +17 -0
  205. package/dist/cards/impl/minion/murcules.js.map +1 -0
  206. package/dist/cards/impl/minion/niuzao.js +3 -0
  207. package/dist/cards/impl/minion/niuzao.js.map +1 -1
  208. package/dist/cards/impl/minion/obisidian-ravager.js +3 -0
  209. package/dist/cards/impl/minion/obisidian-ravager.js.map +1 -1
  210. package/dist/cards/impl/minion/oozeling-gladiator.js +7 -2
  211. package/dist/cards/impl/minion/oozeling-gladiator.js.map +1 -1
  212. package/dist/cards/impl/minion/paint-smudger.d.ts +2 -0
  213. package/dist/cards/impl/minion/paint-smudger.js +16 -0
  214. package/dist/cards/impl/minion/paint-smudger.js.map +1 -0
  215. package/dist/cards/impl/minion/pashmar-the-vengeful.d.ts +2 -0
  216. package/dist/cards/impl/minion/pashmar-the-vengeful.js +17 -0
  217. package/dist/cards/impl/minion/pashmar-the-vengeful.js.map +1 -0
  218. package/dist/cards/impl/minion/piloted-whirl-o-tron.js +10 -2
  219. package/dist/cards/impl/minion/piloted-whirl-o-tron.js.map +1 -1
  220. package/dist/cards/impl/minion/plankwalker.d.ts +2 -0
  221. package/dist/cards/impl/minion/plankwalker.js +16 -0
  222. package/dist/cards/impl/minion/plankwalker.js.map +1 -0
  223. package/dist/cards/impl/minion/prized-promo-drake.js +1 -0
  224. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -1
  225. package/dist/cards/impl/minion/prodigious-tusker.js +1 -1
  226. package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -1
  227. package/dist/cards/impl/minion/profound-thinker.d.ts +2 -0
  228. package/dist/cards/impl/minion/profound-thinker.js +27 -0
  229. package/dist/cards/impl/minion/profound-thinker.js.map +1 -0
  230. package/dist/cards/impl/minion/psychus.d.ts +2 -0
  231. package/dist/cards/impl/minion/psychus.js +16 -0
  232. package/dist/cards/impl/minion/psychus.js.map +1 -0
  233. package/dist/cards/impl/minion/radio-star.d.ts +2 -0
  234. package/dist/cards/impl/minion/radio-star.js +20 -0
  235. package/dist/cards/impl/minion/radio-star.js.map +1 -0
  236. package/dist/cards/impl/minion/rampager.d.ts +2 -0
  237. package/dist/cards/impl/minion/rampager.js +23 -0
  238. package/dist/cards/impl/minion/rampager.js.map +1 -0
  239. package/dist/cards/impl/minion/razorfen-flapper.d.ts +2 -0
  240. package/dist/cards/impl/minion/razorfen-flapper.js +14 -0
  241. package/dist/cards/impl/minion/razorfen-flapper.js.map +1 -0
  242. package/dist/cards/impl/minion/razorfen-geomancer.js +3 -4
  243. package/dist/cards/impl/minion/razorfen-geomancer.js.map +1 -1
  244. package/dist/cards/impl/minion/razorfen-vineweaver.js +1 -1
  245. package/dist/cards/impl/minion/razorfen-vineweaver.js.map +1 -1
  246. package/dist/cards/impl/minion/red-volumizer.d.ts +2 -0
  247. package/dist/cards/impl/minion/red-volumizer.js +18 -0
  248. package/dist/cards/impl/minion/red-volumizer.js.map +1 -0
  249. package/dist/cards/impl/minion/rickety-repairbot.js +1 -1
  250. package/dist/cards/impl/minion/rickety-repairbot.js.map +1 -1
  251. package/dist/cards/impl/minion/scourfin.d.ts +2 -0
  252. package/dist/cards/impl/minion/scourfin.js +14 -0
  253. package/dist/cards/impl/minion/scourfin.js.map +1 -0
  254. package/dist/cards/impl/minion/shell-collector.js +2 -2
  255. package/dist/cards/impl/minion/shell-collector.js.map +1 -1
  256. package/dist/cards/impl/minion/sinodorei-straight-shot.js +3 -0
  257. package/dist/cards/impl/minion/sinodorei-straight-shot.js.map +1 -1
  258. package/dist/cards/impl/minion/skulking-bristlemane.js +1 -1
  259. package/dist/cards/impl/minion/skulking-bristlemane.js.map +1 -1
  260. package/dist/cards/impl/minion/sly-raptor.js +3 -3
  261. package/dist/cards/impl/minion/sly-raptor.js.map +1 -1
  262. package/dist/cards/impl/minion/soulsplitter.d.ts +2 -5
  263. package/dist/cards/impl/minion/soulsplitter.js +3 -1
  264. package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
  265. package/dist/cards/impl/minion/spellbound-soul.d.ts +2 -0
  266. package/dist/cards/impl/minion/spellbound-soul.js +19 -0
  267. package/dist/cards/impl/minion/spellbound-soul.js.map +1 -0
  268. package/dist/cards/impl/minion/spirit-drake.d.ts +2 -0
  269. package/dist/cards/impl/minion/spirit-drake.js +17 -0
  270. package/dist/cards/impl/minion/spirit-drake.js.map +1 -0
  271. package/dist/cards/impl/minion/spirit-of-air.d.ts +2 -0
  272. package/dist/cards/impl/minion/spirit-of-air.js +33 -0
  273. package/dist/cards/impl/minion/spirit-of-air.js.map +1 -0
  274. package/dist/cards/impl/minion/stalwart-kodo.d.ts +2 -0
  275. package/dist/cards/impl/minion/stalwart-kodo.js +17 -0
  276. package/dist/cards/impl/minion/stalwart-kodo.js.map +1 -0
  277. package/dist/cards/impl/minion/stoneshell-guardian.js +10 -2
  278. package/dist/cards/impl/minion/stoneshell-guardian.js.map +1 -1
  279. package/dist/cards/impl/minion/stuntdrake.d.ts +2 -0
  280. package/dist/cards/impl/minion/stuntdrake.js +24 -0
  281. package/dist/cards/impl/minion/stuntdrake.js.map +1 -0
  282. package/dist/cards/impl/minion/sunken-advocate.d.ts +2 -0
  283. package/dist/cards/impl/minion/sunken-advocate.js +20 -0
  284. package/dist/cards/impl/minion/sunken-advocate.js.map +1 -0
  285. package/dist/cards/impl/minion/swampstriker.js +5 -10
  286. package/dist/cards/impl/minion/swampstriker.js.map +1 -1
  287. package/dist/cards/impl/minion/the-last-one-standing.d.ts +2 -0
  288. package/dist/cards/impl/minion/the-last-one-standing.js +13 -0
  289. package/dist/cards/impl/minion/the-last-one-standing.js.map +1 -0
  290. package/dist/cards/impl/minion/three-lil-quilboar.js +1 -1
  291. package/dist/cards/impl/minion/three-lil-quilboar.js.map +1 -1
  292. package/dist/cards/impl/minion/timewarped-alleycat.d.ts +2 -0
  293. package/dist/cards/impl/minion/timewarped-alleycat.js +29 -0
  294. package/dist/cards/impl/minion/timewarped-alleycat.js.map +1 -0
  295. package/dist/cards/impl/minion/timewarped-archimonde.d.ts +2 -0
  296. package/dist/cards/impl/minion/timewarped-archimonde.js +10 -0
  297. package/dist/cards/impl/minion/timewarped-archimonde.js.map +1 -0
  298. package/dist/cards/impl/minion/timewarped-arm.d.ts +2 -0
  299. package/dist/cards/impl/minion/timewarped-arm.js +12 -0
  300. package/dist/cards/impl/minion/timewarped-arm.js.map +1 -0
  301. package/dist/cards/impl/minion/timewarped-bassgill.d.ts +2 -0
  302. package/dist/cards/impl/minion/timewarped-bassgill.js +35 -0
  303. package/dist/cards/impl/minion/timewarped-bassgill.js.map +1 -0
  304. package/dist/cards/impl/minion/timewarped-bloodbinder.d.ts +2 -0
  305. package/dist/cards/impl/minion/timewarped-bloodbinder.js +23 -0
  306. package/dist/cards/impl/minion/timewarped-bloodbinder.js.map +1 -0
  307. package/dist/cards/impl/minion/timewarped-bonker.d.ts +2 -0
  308. package/dist/cards/impl/minion/timewarped-bonker.js +15 -0
  309. package/dist/cards/impl/minion/timewarped-bonker.js.map +1 -0
  310. package/dist/cards/impl/minion/timewarped-botani.d.ts +2 -0
  311. package/dist/cards/impl/minion/timewarped-botani.js +17 -0
  312. package/dist/cards/impl/minion/timewarped-botani.js.map +1 -0
  313. package/dist/cards/impl/minion/timewarped-bristler.d.ts +2 -0
  314. package/dist/cards/impl/minion/timewarped-bristler.js +39 -0
  315. package/dist/cards/impl/minion/timewarped-bristler.js.map +1 -0
  316. package/dist/cards/impl/minion/timewarped-calligrapher.d.ts +2 -0
  317. package/dist/cards/impl/minion/timewarped-calligrapher.js +29 -0
  318. package/dist/cards/impl/minion/timewarped-calligrapher.js.map +1 -0
  319. package/dist/cards/impl/minion/timewarped-caretaker.d.ts +2 -0
  320. package/dist/cards/impl/minion/timewarped-caretaker.js +21 -0
  321. package/dist/cards/impl/minion/timewarped-caretaker.js.map +1 -0
  322. package/dist/cards/impl/minion/timewarped-centurion.d.ts +2 -0
  323. package/dist/cards/impl/minion/timewarped-centurion.js +18 -0
  324. package/dist/cards/impl/minion/timewarped-centurion.js.map +1 -0
  325. package/dist/cards/impl/minion/timewarped-chameleon.d.ts +2 -0
  326. package/dist/cards/impl/minion/timewarped-chameleon.js +40 -0
  327. package/dist/cards/impl/minion/timewarped-chameleon.js.map +1 -0
  328. package/dist/cards/impl/minion/timewarped-clefthoof.d.ts +2 -0
  329. package/dist/cards/impl/minion/timewarped-clefthoof.js +21 -0
  330. package/dist/cards/impl/minion/timewarped-clefthoof.js.map +1 -0
  331. package/dist/cards/impl/minion/timewarped-copter.d.ts +2 -0
  332. package/dist/cards/impl/minion/timewarped-copter.js +22 -0
  333. package/dist/cards/impl/minion/timewarped-copter.js.map +1 -0
  334. package/dist/cards/impl/minion/timewarped-deadstomper.d.ts +2 -0
  335. package/dist/cards/impl/minion/timewarped-deadstomper.js +14 -0
  336. package/dist/cards/impl/minion/timewarped-deadstomper.js.map +1 -0
  337. package/dist/cards/impl/minion/timewarped-deathswarmer.d.ts +2 -0
  338. package/dist/cards/impl/minion/timewarped-deathswarmer.js +15 -0
  339. package/dist/cards/impl/minion/timewarped-deathswarmer.js.map +1 -0
  340. package/dist/cards/impl/minion/timewarped-dragonling.d.ts +2 -0
  341. package/dist/cards/impl/minion/timewarped-dragonling.js +21 -0
  342. package/dist/cards/impl/minion/timewarped-dragonling.js.map +1 -0
  343. package/dist/cards/impl/minion/timewarped-duskmaw.d.ts +2 -0
  344. package/dist/cards/impl/minion/timewarped-duskmaw.js +14 -0
  345. package/dist/cards/impl/minion/timewarped-duskmaw.js.map +1 -0
  346. package/dist/cards/impl/minion/timewarped-electron.d.ts +2 -0
  347. package/dist/cards/impl/minion/timewarped-electron.js +24 -0
  348. package/dist/cards/impl/minion/timewarped-electron.js.map +1 -0
  349. package/dist/cards/impl/minion/timewarped-elegist.d.ts +2 -0
  350. package/dist/cards/impl/minion/timewarped-elegist.js +15 -0
  351. package/dist/cards/impl/minion/timewarped-elegist.js.map +1 -0
  352. package/dist/cards/impl/minion/timewarped-expeditioner.d.ts +2 -0
  353. package/dist/cards/impl/minion/timewarped-expeditioner.js +22 -0
  354. package/dist/cards/impl/minion/timewarped-expeditioner.js.map +1 -0
  355. package/dist/cards/impl/minion/timewarped-festergut.d.ts +2 -0
  356. package/dist/cards/impl/minion/timewarped-festergut.js +20 -0
  357. package/dist/cards/impl/minion/timewarped-festergut.js.map +1 -0
  358. package/dist/cards/impl/minion/timewarped-geist.d.ts +2 -0
  359. package/dist/cards/impl/minion/timewarped-geist.js +13 -0
  360. package/dist/cards/impl/minion/timewarped-geist.js.map +1 -0
  361. package/dist/cards/impl/minion/timewarped-gemsplitter.d.ts +2 -0
  362. package/dist/cards/impl/minion/timewarped-gemsplitter.js +13 -0
  363. package/dist/cards/impl/minion/timewarped-gemsplitter.js.map +1 -0
  364. package/dist/cards/impl/minion/timewarped-geomancer.d.ts +2 -0
  365. package/dist/cards/impl/minion/timewarped-geomancer.js +14 -0
  366. package/dist/cards/impl/minion/timewarped-geomancer.js.map +1 -0
  367. package/dist/cards/impl/minion/timewarped-ghoul-acabra.d.ts +2 -0
  368. package/dist/cards/impl/minion/timewarped-ghoul-acabra.js +12 -0
  369. package/dist/cards/impl/minion/timewarped-ghoul-acabra.js.map +1 -0
  370. package/dist/cards/impl/minion/timewarped-goldrinn.d.ts +2 -0
  371. package/dist/cards/impl/minion/timewarped-goldrinn.js +17 -0
  372. package/dist/cards/impl/minion/timewarped-goldrinn.js.map +1 -0
  373. package/dist/cards/impl/minion/timewarped-grease-bot.d.ts +2 -0
  374. package/dist/cards/impl/minion/timewarped-grease-bot.js +12 -0
  375. package/dist/cards/impl/minion/timewarped-grease-bot.js.map +1 -0
  376. package/dist/cards/impl/minion/timewarped-greenskeeper.d.ts +2 -0
  377. package/dist/cards/impl/minion/timewarped-greenskeeper.js +33 -0
  378. package/dist/cards/impl/minion/timewarped-greenskeeper.js.map +1 -0
  379. package/dist/cards/impl/minion/timewarped-guard.d.ts +2 -0
  380. package/dist/cards/impl/minion/timewarped-guard.js +25 -0
  381. package/dist/cards/impl/minion/timewarped-guard.js.map +1 -0
  382. package/dist/cards/impl/minion/timewarped-hawkstrider.d.ts +2 -0
  383. package/dist/cards/impl/minion/timewarped-hawkstrider.js +25 -0
  384. package/dist/cards/impl/minion/timewarped-hawkstrider.js.map +1 -0
  385. package/dist/cards/impl/minion/timewarped-hooktail.d.ts +2 -0
  386. package/dist/cards/impl/minion/timewarped-hooktail.js +12 -0
  387. package/dist/cards/impl/minion/timewarped-hooktail.js.map +1 -0
  388. package/dist/cards/impl/minion/timewarped-hunter.d.ts +2 -0
  389. package/dist/cards/impl/minion/timewarped-hunter.js +20 -0
  390. package/dist/cards/impl/minion/timewarped-hunter.js.map +1 -0
  391. package/dist/cards/impl/minion/timewarped-hyena.d.ts +2 -0
  392. package/dist/cards/impl/minion/timewarped-hyena.js +18 -0
  393. package/dist/cards/impl/minion/timewarped-hyena.js.map +1 -0
  394. package/dist/cards/impl/minion/timewarped-immortal.d.ts +2 -0
  395. package/dist/cards/impl/minion/timewarped-immortal.js +17 -0
  396. package/dist/cards/impl/minion/timewarped-immortal.js.map +1 -0
  397. package/dist/cards/impl/minion/timewarped-interpreter.d.ts +2 -0
  398. package/dist/cards/impl/minion/timewarped-interpreter.js +12 -0
  399. package/dist/cards/impl/minion/timewarped-interpreter.js.map +1 -0
  400. package/dist/cards/impl/minion/timewarped-jazzer.d.ts +2 -0
  401. package/dist/cards/impl/minion/timewarped-jazzer.js +12 -0
  402. package/dist/cards/impl/minion/timewarped-jazzer.js.map +1 -0
  403. package/dist/cards/impl/minion/timewarped-jelly-belly.d.ts +2 -0
  404. package/dist/cards/impl/minion/timewarped-jelly-belly.js +12 -0
  405. package/dist/cards/impl/minion/timewarped-jelly-belly.js.map +1 -0
  406. package/dist/cards/impl/minion/timewarped-jungle-king.d.ts +2 -0
  407. package/dist/cards/impl/minion/timewarped-jungle-king.js +24 -0
  408. package/dist/cards/impl/minion/timewarped-jungle-king.js.map +1 -0
  409. package/dist/cards/impl/minion/timewarped-karathress.d.ts +2 -0
  410. package/dist/cards/impl/minion/timewarped-karathress.js +13 -0
  411. package/dist/cards/impl/minion/timewarped-karathress.js.map +1 -0
  412. package/dist/cards/impl/minion/timewarped-kilrek.d.ts +2 -0
  413. package/dist/cards/impl/minion/timewarped-kilrek.js +17 -0
  414. package/dist/cards/impl/minion/timewarped-kilrek.js.map +1 -0
  415. package/dist/cards/impl/minion/timewarped-lab-rat.d.ts +2 -0
  416. package/dist/cards/impl/minion/timewarped-lab-rat.js +13 -0
  417. package/dist/cards/impl/minion/timewarped-lab-rat.js.map +1 -0
  418. package/dist/cards/impl/minion/timewarped-lil-quilboar.d.ts +2 -0
  419. package/dist/cards/impl/minion/timewarped-lil-quilboar.js +19 -0
  420. package/dist/cards/impl/minion/timewarped-lil-quilboar.js.map +1 -0
  421. package/dist/cards/impl/minion/timewarped-low-flier.d.ts +2 -0
  422. package/dist/cards/impl/minion/timewarped-low-flier.js +19 -0
  423. package/dist/cards/impl/minion/timewarped-low-flier.js.map +1 -0
  424. package/dist/cards/impl/minion/timewarped-mothership.d.ts +2 -0
  425. package/dist/cards/impl/minion/timewarped-mothership.js +14 -0
  426. package/dist/cards/impl/minion/timewarped-mothership.js.map +1 -0
  427. package/dist/cards/impl/minion/timewarped-mrrrglr.d.ts +2 -0
  428. package/dist/cards/impl/minion/timewarped-mrrrglr.js +25 -0
  429. package/dist/cards/impl/minion/timewarped-mrrrglr.js.map +1 -0
  430. package/dist/cards/impl/minion/timewarped-murcules.d.ts +2 -0
  431. package/dist/cards/impl/minion/timewarped-murcules.js +16 -0
  432. package/dist/cards/impl/minion/timewarped-murcules.js.map +1 -0
  433. package/dist/cards/impl/minion/timewarped-murk-eye.d.ts +2 -0
  434. package/dist/cards/impl/minion/timewarped-murk-eye.js +20 -0
  435. package/dist/cards/impl/minion/timewarped-murk-eye.js.map +1 -0
  436. package/dist/cards/impl/minion/timewarped-murky.d.ts +2 -0
  437. package/dist/cards/impl/minion/timewarped-murky.js +13 -0
  438. package/dist/cards/impl/minion/timewarped-murky.js.map +1 -0
  439. package/dist/cards/impl/minion/timewarped-nalaa.d.ts +2 -0
  440. package/dist/cards/impl/minion/timewarped-nalaa.js +12 -0
  441. package/dist/cards/impl/minion/timewarped-nalaa.js.map +1 -0
  442. package/dist/cards/impl/minion/timewarped-nellies-ship.d.ts +2 -0
  443. package/dist/cards/impl/minion/timewarped-nellies-ship.js +22 -0
  444. package/dist/cards/impl/minion/timewarped-nellies-ship.js.map +1 -0
  445. package/dist/cards/impl/minion/timewarped-painter.d.ts +2 -0
  446. package/dist/cards/impl/minion/timewarped-painter.js +19 -0
  447. package/dist/cards/impl/minion/timewarped-painter.js.map +1 -0
  448. package/dist/cards/impl/minion/timewarped-paleofin.d.ts +2 -0
  449. package/dist/cards/impl/minion/timewarped-paleofin.js +13 -0
  450. package/dist/cards/impl/minion/timewarped-paleofin.js.map +1 -0
  451. package/dist/cards/impl/minion/timewarped-pashmar.d.ts +2 -0
  452. package/dist/cards/impl/minion/timewarped-pashmar.js +20 -0
  453. package/dist/cards/impl/minion/timewarped-pashmar.js.map +1 -0
  454. package/dist/cards/impl/minion/timewarped-peggy.d.ts +2 -0
  455. package/dist/cards/impl/minion/timewarped-peggy.js +12 -0
  456. package/dist/cards/impl/minion/timewarped-peggy.js.map +1 -0
  457. package/dist/cards/impl/minion/timewarped-pillager.d.ts +2 -0
  458. package/dist/cards/impl/minion/timewarped-pillager.js +14 -0
  459. package/dist/cards/impl/minion/timewarped-pillager.js.map +1 -0
  460. package/dist/cards/impl/minion/timewarped-piper.d.ts +2 -0
  461. package/dist/cards/impl/minion/timewarped-piper.js +16 -0
  462. package/dist/cards/impl/minion/timewarped-piper.js.map +1 -0
  463. package/dist/cards/impl/minion/timewarped-primscale.d.ts +2 -0
  464. package/dist/cards/impl/minion/timewarped-primscale.js +14 -0
  465. package/dist/cards/impl/minion/timewarped-primscale.js.map +1 -0
  466. package/dist/cards/impl/minion/timewarped-probius.d.ts +2 -0
  467. package/dist/cards/impl/minion/timewarped-probius.js +16 -0
  468. package/dist/cards/impl/minion/timewarped-probius.js.map +1 -0
  469. package/dist/cards/impl/minion/timewarped-promo-drake.d.ts +2 -0
  470. package/dist/cards/impl/minion/timewarped-promo-drake.js +19 -0
  471. package/dist/cards/impl/minion/timewarped-promo-drake.js.map +1 -0
  472. package/dist/cards/impl/minion/timewarped-radio-star.d.ts +2 -0
  473. package/dist/cards/impl/minion/timewarped-radio-star.js +20 -0
  474. package/dist/cards/impl/minion/timewarped-radio-star.js.map +1 -0
  475. package/dist/cards/impl/minion/timewarped-ragnaros.d.ts +2 -0
  476. package/dist/cards/impl/minion/timewarped-ragnaros.js +18 -0
  477. package/dist/cards/impl/minion/timewarped-ragnaros.js.map +1 -0
  478. package/dist/cards/impl/minion/timewarped-recycler.d.ts +2 -0
  479. package/dist/cards/impl/minion/timewarped-recycler.js +10 -0
  480. package/dist/cards/impl/minion/timewarped-recycler.js.map +1 -0
  481. package/dist/cards/impl/minion/timewarped-red-whelp.d.ts +2 -0
  482. package/dist/cards/impl/minion/timewarped-red-whelp.js +19 -0
  483. package/dist/cards/impl/minion/timewarped-red-whelp.js.map +1 -0
  484. package/dist/cards/impl/minion/timewarped-rewinder.d.ts +2 -0
  485. package/dist/cards/impl/minion/timewarped-rewinder.js +14 -0
  486. package/dist/cards/impl/minion/timewarped-rewinder.js.map +1 -0
  487. package/dist/cards/impl/minion/timewarped-riplash.d.ts +2 -0
  488. package/dist/cards/impl/minion/timewarped-riplash.js +14 -0
  489. package/dist/cards/impl/minion/timewarped-riplash.js.map +1 -0
  490. package/dist/cards/impl/minion/timewarped-sapper.d.ts +2 -0
  491. package/dist/cards/impl/minion/timewarped-sapper.js +14 -0
  492. package/dist/cards/impl/minion/timewarped-sapper.js.map +1 -0
  493. package/dist/cards/impl/minion/timewarped-saurolisk.d.ts +2 -0
  494. package/dist/cards/impl/minion/timewarped-saurolisk.js +13 -0
  495. package/dist/cards/impl/minion/timewarped-saurolisk.js.map +1 -0
  496. package/dist/cards/impl/minion/timewarped-scourfin.d.ts +2 -0
  497. package/dist/cards/impl/minion/timewarped-scourfin.js +25 -0
  498. package/dist/cards/impl/minion/timewarped-scourfin.js.map +1 -0
  499. package/dist/cards/impl/minion/timewarped-sea-glass.d.ts +2 -0
  500. package/dist/cards/impl/minion/timewarped-sea-glass.js +18 -0
  501. package/dist/cards/impl/minion/timewarped-sea-glass.js.map +1 -0
  502. package/dist/cards/impl/minion/timewarped-sellemental.d.ts +2 -0
  503. package/dist/cards/impl/minion/timewarped-sellemental.js +13 -0
  504. package/dist/cards/impl/minion/timewarped-sellemental.js.map +1 -0
  505. package/dist/cards/impl/minion/timewarped-sensei.d.ts +2 -0
  506. package/dist/cards/impl/minion/timewarped-sensei.js +20 -0
  507. package/dist/cards/impl/minion/timewarped-sensei.js.map +1 -0
  508. package/dist/cards/impl/minion/timewarped-shadowdancer.d.ts +2 -0
  509. package/dist/cards/impl/minion/timewarped-shadowdancer.js +23 -0
  510. package/dist/cards/impl/minion/timewarped-shadowdancer.js.map +1 -0
  511. package/dist/cards/impl/minion/timewarped-spirit-of-air.d.ts +2 -0
  512. package/dist/cards/impl/minion/timewarped-spirit-of-air.js +33 -0
  513. package/dist/cards/impl/minion/timewarped-spirit-of-air.js.map +1 -0
  514. package/dist/cards/impl/minion/timewarped-sporebat.d.ts +2 -0
  515. package/dist/cards/impl/minion/timewarped-sporebat.js +18 -0
  516. package/dist/cards/impl/minion/timewarped-sporebat.js.map +1 -0
  517. package/dist/cards/impl/minion/timewarped-steamer.d.ts +2 -0
  518. package/dist/cards/impl/minion/timewarped-steamer.js +13 -0
  519. package/dist/cards/impl/minion/timewarped-steamer.js.map +1 -0
  520. package/dist/cards/impl/minion/timewarped-stoneshell.d.ts +0 -0
  521. package/dist/cards/impl/minion/timewarped-stoneshell.js +1 -0
  522. package/dist/cards/impl/minion/timewarped-stoneshell.js.map +1 -0
  523. package/dist/cards/impl/minion/timewarped-stormcloud.d.ts +2 -0
  524. package/dist/cards/impl/minion/timewarped-stormcloud.js +20 -0
  525. package/dist/cards/impl/minion/timewarped-stormcloud.js.map +1 -0
  526. package/dist/cards/impl/minion/timewarped-substrate.d.ts +2 -0
  527. package/dist/cards/impl/minion/timewarped-substrate.js +13 -0
  528. package/dist/cards/impl/minion/timewarped-substrate.js.map +1 -0
  529. package/dist/cards/impl/minion/timewarped-sylvar.d.ts +2 -0
  530. package/dist/cards/impl/minion/timewarped-sylvar.js +18 -0
  531. package/dist/cards/impl/minion/timewarped-sylvar.js.map +1 -0
  532. package/dist/cards/impl/minion/timewarped-tamuzo.d.ts +2 -0
  533. package/dist/cards/impl/minion/timewarped-tamuzo.js +12 -0
  534. package/dist/cards/impl/minion/timewarped-tamuzo.js.map +1 -0
  535. package/dist/cards/impl/minion/timewarped-tender.d.ts +2 -0
  536. package/dist/cards/impl/minion/timewarped-tender.js +13 -0
  537. package/dist/cards/impl/minion/timewarped-tender.js.map +1 -0
  538. package/dist/cards/impl/minion/timewarped-thorncaller.d.ts +2 -0
  539. package/dist/cards/impl/minion/timewarped-thorncaller.js +20 -0
  540. package/dist/cards/impl/minion/timewarped-thorncaller.js.map +1 -0
  541. package/dist/cards/impl/minion/timewarped-tide-razor.d.ts +2 -0
  542. package/dist/cards/impl/minion/timewarped-tide-razor.js +22 -0
  543. package/dist/cards/impl/minion/timewarped-tide-razor.js.map +1 -0
  544. package/dist/cards/impl/minion/timewarped-tony.d.ts +2 -0
  545. package/dist/cards/impl/minion/timewarped-tony.js +14 -0
  546. package/dist/cards/impl/minion/timewarped-tony.js.map +1 -0
  547. package/dist/cards/impl/minion/timewarped-trickster.d.ts +2 -0
  548. package/dist/cards/impl/minion/timewarped-trickster.js +23 -0
  549. package/dist/cards/impl/minion/timewarped-trickster.js.map +1 -0
  550. package/dist/cards/impl/minion/timewarped-twirler.d.ts +2 -0
  551. package/dist/cards/impl/minion/timewarped-twirler.js +33 -0
  552. package/dist/cards/impl/minion/timewarped-twirler.js.map +1 -0
  553. package/dist/cards/impl/minion/timewarped-ultralisk.d.ts +2 -0
  554. package/dist/cards/impl/minion/timewarped-ultralisk.js +13 -0
  555. package/dist/cards/impl/minion/timewarped-ultralisk.js.map +1 -0
  556. package/dist/cards/impl/minion/timewarped-vaelastrasz.d.ts +2 -0
  557. package/dist/cards/impl/minion/timewarped-vaelastrasz.js +15 -0
  558. package/dist/cards/impl/minion/timewarped-vaelastrasz.js.map +1 -0
  559. package/dist/cards/impl/minion/timewarped-warghoul.d.ts +2 -0
  560. package/dist/cards/impl/minion/timewarped-warghoul.js +23 -0
  561. package/dist/cards/impl/minion/timewarped-warghoul.js.map +1 -0
  562. package/dist/cards/impl/minion/timewarped-whelp-smuggler.d.ts +2 -0
  563. package/dist/cards/impl/minion/timewarped-whelp-smuggler.js +14 -0
  564. package/dist/cards/impl/minion/timewarped-whelp-smuggler.js.map +1 -0
  565. package/dist/cards/impl/minion/tomb-pillager.d.ts +2 -0
  566. package/dist/cards/impl/minion/tomb-pillager.js +13 -0
  567. package/dist/cards/impl/minion/tomb-pillager.js.map +1 -0
  568. package/dist/cards/impl/minion/transmuted-bramblewitch.js +3 -0
  569. package/dist/cards/impl/minion/transmuted-bramblewitch.js.map +1 -1
  570. package/dist/cards/impl/minion/trench-fighter.d.ts +2 -0
  571. package/dist/cards/impl/minion/trench-fighter.js +14 -0
  572. package/dist/cards/impl/minion/trench-fighter.js.map +1 -0
  573. package/dist/cards/impl/minion/tusked-camper.js +1 -1
  574. package/dist/cards/impl/minion/tusked-camper.js.map +1 -1
  575. package/dist/cards/impl/minion/twilight-broodmother.d.ts +2 -0
  576. package/dist/cards/impl/minion/twilight-broodmother.js +17 -0
  577. package/dist/cards/impl/minion/twilight-broodmother.js.map +1 -0
  578. package/dist/cards/impl/minion/twilight-hatchling.d.ts +2 -0
  579. package/dist/cards/impl/minion/twilight-hatchling.js +19 -0
  580. package/dist/cards/impl/minion/twilight-hatchling.js.map +1 -0
  581. package/dist/cards/impl/minion/unforgiving-treant.d.ts +2 -0
  582. package/dist/cards/impl/minion/unforgiving-treant.js +14 -0
  583. package/dist/cards/impl/minion/unforgiving-treant.js.map +1 -0
  584. package/dist/cards/impl/minion/whelp-watcher.d.ts +2 -0
  585. package/dist/cards/impl/minion/whelp-watcher.js +34 -0
  586. package/dist/cards/impl/minion/whelp-watcher.js.map +1 -0
  587. package/dist/cards/impl/minion/whirling-lass-o-matic.d.ts +2 -0
  588. package/dist/cards/impl/minion/whirling-lass-o-matic.js +14 -0
  589. package/dist/cards/impl/minion/whirling-lass-o-matic.js.map +1 -0
  590. package/dist/cards/impl/minion/witchwing-nestmatron.d.ts +2 -0
  591. package/dist/cards/impl/minion/witchwing-nestmatron.js +18 -0
  592. package/dist/cards/impl/minion/witchwing-nestmatron.js.map +1 -0
  593. package/dist/cards/impl/spellcraft/anglers-lure.d.ts +2 -0
  594. package/dist/cards/impl/spellcraft/anglers-lure.js +20 -0
  595. package/dist/cards/impl/spellcraft/anglers-lure.js.map +1 -0
  596. package/dist/cards/impl/spellcraft/azsharas-hatchery.d.ts +2 -0
  597. package/dist/cards/impl/spellcraft/azsharas-hatchery.js +20 -0
  598. package/dist/cards/impl/spellcraft/azsharas-hatchery.js.map +1 -0
  599. package/dist/cards/impl/spellcraft/deep-blues.d.ts +2 -0
  600. package/dist/cards/impl/spellcraft/deep-blues.js +18 -0
  601. package/dist/cards/impl/spellcraft/deep-blues.js.map +1 -0
  602. package/dist/cards/impl/spellcraft/escape-eruption.d.ts +2 -0
  603. package/dist/cards/impl/spellcraft/escape-eruption.js +23 -0
  604. package/dist/cards/impl/spellcraft/escape-eruption.js.map +1 -0
  605. package/dist/cards/impl/spellcraft/evolving-strategy.d.ts +2 -0
  606. package/dist/cards/impl/spellcraft/evolving-strategy.js +19 -0
  607. package/dist/cards/impl/spellcraft/evolving-strategy.js.map +1 -0
  608. package/dist/cards/impl/spellcraft/glowing-crown.d.ts +2 -0
  609. package/dist/cards/impl/spellcraft/glowing-crown.js +17 -0
  610. package/dist/cards/impl/spellcraft/glowing-crown.js.map +1 -0
  611. package/dist/cards/impl/spellcraft/gold-gun.d.ts +2 -0
  612. package/dist/cards/impl/spellcraft/gold-gun.js +22 -0
  613. package/dist/cards/impl/spellcraft/gold-gun.js.map +1 -0
  614. package/dist/cards/impl/spellcraft/harvested-pearl.d.ts +2 -0
  615. package/dist/cards/impl/spellcraft/harvested-pearl.js +17 -0
  616. package/dist/cards/impl/spellcraft/harvested-pearl.js.map +1 -0
  617. package/dist/cards/impl/spellcraft/just-keep-swimming.d.ts +2 -0
  618. package/dist/cards/impl/spellcraft/just-keep-swimming.js +23 -0
  619. package/dist/cards/impl/spellcraft/just-keep-swimming.js.map +1 -0
  620. package/dist/cards/impl/spellcraft/meditation.d.ts +2 -0
  621. package/dist/cards/impl/spellcraft/meditation.js +15 -0
  622. package/dist/cards/impl/spellcraft/meditation.js.map +1 -0
  623. package/dist/cards/impl/spellcraft/mini-trident.d.ts +2 -0
  624. package/dist/cards/impl/spellcraft/mini-trident.js +18 -0
  625. package/dist/cards/impl/spellcraft/mini-trident.js.map +1 -0
  626. package/dist/cards/impl/spellcraft/reinvigoration.d.ts +2 -0
  627. package/dist/cards/impl/spellcraft/reinvigoration.js +24 -0
  628. package/dist/cards/impl/spellcraft/reinvigoration.js.map +1 -0
  629. package/dist/cards/impl/spellcraft/rime-or-reason.d.ts +2 -0
  630. package/dist/cards/impl/spellcraft/rime-or-reason.js +18 -0
  631. package/dist/cards/impl/spellcraft/rime-or-reason.js.map +1 -0
  632. package/dist/cards/impl/spellcraft/rushing-winds.d.ts +2 -0
  633. package/dist/cards/impl/spellcraft/rushing-winds.js +19 -0
  634. package/dist/cards/impl/spellcraft/rushing-winds.js.map +1 -0
  635. package/dist/cards/impl/spellcraft/sick-riffs.d.ts +2 -0
  636. package/dist/cards/impl/spellcraft/sick-riffs.js +19 -0
  637. package/dist/cards/impl/spellcraft/sick-riffs.js.map +1 -0
  638. package/dist/cards/impl/spellcraft/sunken-spells.d.ts +2 -0
  639. package/dist/cards/impl/spellcraft/sunken-spells.js +18 -0
  640. package/dist/cards/impl/spellcraft/sunken-spells.js.map +1 -0
  641. package/dist/cards/impl/spellcraft/surging-scales.d.ts +2 -0
  642. package/dist/cards/impl/spellcraft/surging-scales.js +24 -0
  643. package/dist/cards/impl/spellcraft/surging-scales.js.map +1 -0
  644. package/dist/cards/impl/spellcraft/thaumaturgy.d.ts +2 -0
  645. package/dist/cards/impl/spellcraft/thaumaturgy.js +19 -0
  646. package/dist/cards/impl/spellcraft/thaumaturgy.js.map +1 -0
  647. package/dist/cards/impl/spellcraft/the-golden-hammer.d.ts +2 -0
  648. package/dist/cards/impl/spellcraft/the-golden-hammer.js +17 -0
  649. package/dist/cards/impl/spellcraft/the-golden-hammer.js.map +1 -0
  650. package/dist/cards/impl/spellcraft/timewarped-crown.d.ts +2 -0
  651. package/dist/cards/impl/spellcraft/timewarped-crown.js +20 -0
  652. package/dist/cards/impl/spellcraft/timewarped-crown.js.map +1 -0
  653. package/dist/cards/impl/spellcraft/timewarped-eelectrify.d.ts +2 -0
  654. package/dist/cards/impl/spellcraft/timewarped-eelectrify.js +21 -0
  655. package/dist/cards/impl/spellcraft/timewarped-eelectrify.js.map +1 -0
  656. package/dist/cards/impl/spellcraft/timewarped-shoal.d.ts +2 -0
  657. package/dist/cards/impl/spellcraft/timewarped-shoal.js +25 -0
  658. package/dist/cards/impl/spellcraft/timewarped-shoal.js.map +1 -0
  659. package/dist/cards/impl/spellcraft/undersea-mount.d.ts +2 -0
  660. package/dist/cards/impl/spellcraft/undersea-mount.js +24 -0
  661. package/dist/cards/impl/spellcraft/undersea-mount.js.map +1 -0
  662. package/dist/cards/impl/trinket/ghostly-ymirjar.d.ts +2 -0
  663. package/dist/cards/impl/trinket/ghostly-ymirjar.js +10 -0
  664. package/dist/cards/impl/trinket/ghostly-ymirjar.js.map +1 -0
  665. package/dist/cards/impl/trinket/hogwash-basin.js +1 -1
  666. package/dist/cards/impl/trinket/hogwash-basin.js.map +1 -1
  667. package/dist/cards/impl/trinket/saltscale-honcho.d.ts +2 -0
  668. package/dist/cards/impl/trinket/saltscale-honcho.js +23 -0
  669. package/dist/cards/impl/trinket/saltscale-honcho.js.map +1 -0
  670. package/dist/cards/impl/trinket/sepulchral-sergent.d.ts +2 -0
  671. package/dist/cards/impl/trinket/sepulchral-sergent.js +18 -0
  672. package/dist/cards/impl/trinket/sepulchral-sergent.js.map +1 -0
  673. package/dist/cards/impl/trinket/wintergrasp-ghoul.d.ts +2 -0
  674. package/dist/cards/impl/trinket/wintergrasp-ghoul.js +14 -0
  675. package/dist/cards/impl/trinket/wintergrasp-ghoul.js.map +1 -0
  676. package/dist/keywords/divine-shield.d.ts +1 -0
  677. package/dist/keywords/divine-shield.js +5 -14
  678. package/dist/keywords/divine-shield.js.map +1 -1
  679. package/dist/mechanics/cast-tavern-spell.d.ts +3 -0
  680. package/dist/mechanics/cast-tavern-spell.js +34 -0
  681. package/dist/mechanics/cast-tavern-spell.js.map +1 -0
  682. package/dist/mechanics/rally.d.ts +7 -0
  683. package/dist/mechanics/rally.js +76 -0
  684. package/dist/mechanics/rally.js.map +1 -0
  685. package/dist/services/card-ids.d.ts +948 -9
  686. package/dist/services/card-ids.js.map +1 -1
  687. package/dist/services/utils.d.ts +1 -0
  688. package/dist/services/utils.js +13 -1
  689. package/dist/services/utils.js.map +1 -1
  690. package/dist/simulation/add-minion-to-board.js +12 -3
  691. package/dist/simulation/add-minion-to-board.js.map +1 -1
  692. package/dist/simulation/after-attack.js +1 -1
  693. package/dist/simulation/after-attack.js.map +1 -1
  694. package/dist/simulation/attack.d.ts +1 -1
  695. package/dist/simulation/attack.js +3 -3
  696. package/dist/simulation/attack.js.map +1 -1
  697. package/dist/simulation/auras.js +4 -1
  698. package/dist/simulation/auras.js.map +1 -1
  699. package/dist/simulation/avenge.js +1 -18
  700. package/dist/simulation/avenge.js.map +1 -1
  701. package/dist/simulation/battlecries.js +27 -17
  702. package/dist/simulation/battlecries.js.map +1 -1
  703. package/dist/simulation/blood-gems.d.ts +18 -1
  704. package/dist/simulation/blood-gems.js +51 -23
  705. package/dist/simulation/blood-gems.js.map +1 -1
  706. package/dist/simulation/damage-effects.js +11 -0
  707. package/dist/simulation/damage-effects.js.map +1 -1
  708. package/dist/simulation/deathrattle-effects.js +16 -14
  709. package/dist/simulation/deathrattle-effects.js.map +1 -1
  710. package/dist/simulation/deathrattle-spawns.js +6 -76
  711. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  712. package/dist/simulation/deathrattle-utils.d.ts +1 -0
  713. package/dist/simulation/deathrattle-utils.js +23 -21
  714. package/dist/simulation/deathrattle-utils.js.map +1 -1
  715. package/dist/simulation/magnetize.d.ts +11 -1
  716. package/dist/simulation/magnetize.js +57 -39
  717. package/dist/simulation/magnetize.js.map +1 -1
  718. package/dist/simulation/minion-kill.js +0 -11
  719. package/dist/simulation/minion-kill.js.map +1 -1
  720. package/dist/simulation/on-attack.js +5 -72
  721. package/dist/simulation/on-attack.js.map +1 -1
  722. package/dist/simulation/reborn.js +0 -6
  723. package/dist/simulation/reborn.js.map +1 -1
  724. package/dist/simulation/spawn-fail.js +13 -0
  725. package/dist/simulation/spawn-fail.js.map +1 -1
  726. package/dist/simulation/spawns.d.ts +1 -1
  727. package/dist/simulation/spawns.js +2 -2
  728. package/dist/simulation/spawns.js.map +1 -1
  729. package/dist/simulation/start-of-combat/soc-action-processor.js +0 -8
  730. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  731. package/dist/simulation/stats.js +3 -0
  732. package/dist/simulation/stats.js.map +1 -1
  733. package/dist/simulation/utils/golden.d.ts +2 -2
  734. package/dist/simulation/utils/golden.js.map +1 -1
  735. package/dist/utils.d.ts +3 -1
  736. package/dist/utils.js +18 -2
  737. package/dist/utils.js.map +1 -1
  738. package/package.json +1 -1
@@ -1,30 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getValidDeathrattles = void 0;
3
+ exports.hasValidDeathrattle = exports.getValidDeathrattles = void 0;
4
4
  const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const simulate_bgs_battle_1 = require("../simulate-bgs-battle");
6
6
  const utils_1 = require("../utils");
7
7
  const getValidDeathrattles = (board, hero, gameState) => {
8
- return board.filter((entity) => {
9
- var _a, _b;
10
- if ((0, utils_1.hasEntityMechanic)(entity, reference_data_1.GameTag.DEATHRATTLE, gameState.allCards)) {
11
- return true;
12
- }
13
- if (((_a = hero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG32_MagicItem_830")) &&
14
- (entity.cardId === "BG25_041" || entity.cardId === "BG25_041_G")) {
15
- return true;
16
- }
17
- if ((_b = entity.rememberedDeathrattles) === null || _b === void 0 ? void 0 : _b.length) {
18
- return true;
19
- }
20
- if (entity.enchantments &&
21
- entity.enchantments
22
- .map((enchantment) => enchantment.cardId)
23
- .some((enchantmentId) => (0, simulate_bgs_battle_1.isValidDeathrattleEnchantment)(enchantmentId))) {
24
- return true;
25
- }
26
- return false;
27
- });
8
+ return board.filter((entity) => (0, exports.hasValidDeathrattle)(entity, hero, gameState));
28
9
  };
29
10
  exports.getValidDeathrattles = getValidDeathrattles;
11
+ const hasValidDeathrattle = (entity, hero, gameState) => {
12
+ var _a, _b;
13
+ if ((0, utils_1.hasEntityMechanic)(entity, reference_data_1.GameTag.DEATHRATTLE, gameState.allCards)) {
14
+ return true;
15
+ }
16
+ if (((_a = hero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG32_MagicItem_830")) &&
17
+ (entity.cardId === "BG25_041" || entity.cardId === "BG25_041_G")) {
18
+ return true;
19
+ }
20
+ if ((_b = entity.rememberedDeathrattles) === null || _b === void 0 ? void 0 : _b.length) {
21
+ return true;
22
+ }
23
+ if (entity.enchantments &&
24
+ entity.enchantments
25
+ .map((enchantment) => enchantment.cardId)
26
+ .some((enchantmentId) => (0, simulate_bgs_battle_1.isValidDeathrattleEnchantment)(enchantmentId))) {
27
+ return true;
28
+ }
29
+ return false;
30
+ };
31
+ exports.hasValidDeathrattle = hasValidDeathrattle;
30
32
  //# sourceMappingURL=deathrattle-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deathrattle-utils.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-utils.ts"],"names":[],"mappings":";;;AACA,iEAAuD;AAGvD,gEAAuE;AACvE,oCAA6C;AAGtC,MAAM,oBAAoB,GAAG,CACnC,KAAoB,EACpB,IAAqB,EACrB,SAAwB,EACR,EAAE;IAClB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;;QAC9B,IAAI,IAAA,yBAAiB,EAAC,MAAM,EAAE,wBAAO,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACvE,OAAO,IAAI,CAAC;SACZ;QACD,IACC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAkD,CAAC;YACtF,CAAC,MAAM,CAAC,MAAM,eAAgC,IAAI,MAAM,CAAC,MAAM,iBAAkC,CAAC,EACjG;YACD,OAAO,IAAI,CAAC;SACZ;QACD,IAAI,MAAA,MAAM,CAAC,sBAAsB,0CAAE,MAAM,EAAE;YAC1C,OAAO,IAAI,CAAC;SACZ;QACD,IACC,MAAM,CAAC,YAAY;YACnB,MAAM,CAAC,YAAY;iBACjB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;iBACxC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAA,mDAA6B,EAAC,aAAa,CAAC,CAAC,EACtE;YACD,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,oBAAoB,wBA4B/B","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { GameTag } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { isValidDeathrattleEnchantment } from '../simulate-bgs-battle';\r\nimport { hasEntityMechanic } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const getValidDeathrattles = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\treturn board.filter((entity) => {\r\n\t\tif (hasEntityMechanic(entity, GameTag.DEATHRATTLE, gameState.allCards)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (\r\n\t\t\thero.trinkets?.some((t) => t.cardId === CardIds.FelementalPortrait_BG32_MagicItem_830) &&\r\n\t\t\t(entity.cardId === CardIds.Felemental_BG25_041 || entity.cardId === CardIds.Felemental_BG25_041_G)\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (entity.rememberedDeathrattles?.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (\r\n\t\t\tentity.enchantments &&\r\n\t\t\tentity.enchantments\r\n\t\t\t\t.map((enchantment) => enchantment.cardId)\r\n\t\t\t\t.some((enchantmentId) => isValidDeathrattleEnchantment(enchantmentId))\r\n\t\t) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t});\r\n};\r\n"]}
1
+ {"version":3,"file":"deathrattle-utils.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-utils.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AAIvD,gEAAuE;AACvE,oCAA6C;AAGtC,MAAM,oBAAoB,GAAG,CACnC,KAAoB,EACpB,IAAqB,EACrB,SAAwB,EACR,EAAE;IAClB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,2BAAmB,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC;AANW,QAAA,oBAAoB,wBAM/B;AAEK,MAAM,mBAAmB,GAAG,CAAC,MAAmB,EAAE,IAAqB,EAAE,SAAwB,EAAW,EAAE;;IACpH,IAAI,IAAA,yBAAiB,EAAC,MAAM,EAAE,wBAAO,CAAC,WAAW,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvE,OAAO,IAAI,CAAC;KACZ;IACD,IACC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAkD,CAAC;QACtF,CAAC,MAAM,CAAC,MAAM,eAAgC,IAAI,MAAM,CAAC,MAAM,iBAAkC,CAAC,EACjG;QACD,OAAO,IAAI,CAAC;KACZ;IACD,IAAI,MAAA,MAAM,CAAC,sBAAsB,0CAAE,MAAM,EAAE;QAC1C,OAAO,IAAI,CAAC;KACZ;IACD,IACC,MAAM,CAAC,YAAY;QACnB,MAAM,CAAC,YAAY;aACjB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;aACxC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,IAAA,mDAA6B,EAAC,aAAa,CAAC,CAAC,EACtE;QACD,OAAO,IAAI,CAAC;KACZ;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAtBW,QAAA,mBAAmB,uBAsB9B","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { isValidDeathrattleEnchantment } from '../simulate-bgs-battle';\r\nimport { hasEntityMechanic } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const getValidDeathrattles = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\treturn board.filter((entity) => hasValidDeathrattle(entity, hero, gameState));\r\n};\r\n\r\nexport const hasValidDeathrattle = (entity: BoardEntity, hero: BgsPlayerEntity, gameState: FullGameState): boolean => {\r\n\tif (hasEntityMechanic(entity, GameTag.DEATHRATTLE, gameState.allCards)) {\r\n\t\treturn true;\r\n\t}\r\n\tif (\r\n\t\thero.trinkets?.some((t) => t.cardId === CardIds.FelementalPortrait_BG32_MagicItem_830) &&\r\n\t\t(entity.cardId === CardIds.Felemental_BG25_041 || entity.cardId === CardIds.Felemental_BG25_041_G)\r\n\t) {\r\n\t\treturn true;\r\n\t}\r\n\tif (entity.rememberedDeathrattles?.length) {\r\n\t\treturn true;\r\n\t}\r\n\tif (\r\n\t\tentity.enchantments &&\r\n\t\tentity.enchantments\r\n\t\t\t.map((enchantment) => enchantment.cardId)\r\n\t\t\t.some((enchantmentId) => isValidDeathrattleEnchantment(enchantmentId))\r\n\t) {\r\n\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n"]}
@@ -3,10 +3,20 @@ import { BgsPlayerEntity } from '../bgs-player-entity';
3
3
  import { BoardEntity } from '../board-entity';
4
4
  import { Mutable } from '../services/utils';
5
5
  import { FullGameState } from './internal-game-state';
6
- export declare const magnetizeToTarget: (target: BoardEntity, source: BoardEntity, cardIdToMagnetize: string, board: BoardEntity[], hero: BgsPlayerEntity, gameState: FullGameState) => void;
6
+ export declare const magnetizeToTarget: (target: BoardEntity, source: BoardEntity, cardToMagnetize: string | ReferenceCard, board: BoardEntity[], hero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, gameState: FullGameState) => void;
7
7
  export interface OnBeforeMagnetizeInput {
8
8
  board: BoardEntity[];
9
9
  hero: BgsPlayerEntity;
10
10
  magnetizedCard: Mutable<ReferenceCard>;
11
+ magnetizeTarget: BoardEntity;
12
+ gameState: FullGameState;
13
+ }
14
+ export interface OnAfterMagnetizeInput {
15
+ board: BoardEntity[];
16
+ hero: BgsPlayerEntity;
17
+ otherHero: BgsPlayerEntity;
18
+ otherBoard: BoardEntity[];
19
+ magnetizedCard: ReferenceCard;
20
+ magnetizeTarget: BoardEntity;
11
21
  gameState: FullGameState;
12
22
  }
@@ -5,55 +5,73 @@ const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const card_interface_1 = require("../cards/card.interface");
6
6
  const _card_mappings_1 = require("../cards/impl/_card-mappings");
7
7
  const stats_1 = require("./stats");
8
- const magnetizeToTarget = (target, source, cardIdToMagnetize, board, hero, gameState) => {
8
+ const magnetizeToTarget = (target, source, cardToMagnetize, board, hero, otherBoard, otherHero, gameState) => {
9
9
  var _a, _b, _c, _d, _e, _f, _g;
10
10
  const electromagneticDevices = hero.trinkets.filter((t) => t.cardId === "BG30_MagicItem_709").length;
11
11
  const greaterElecromagneticDevices = hero.trinkets.filter((t) => t.cardId === "BG30_MagicItem_709t").length;
12
- const modularCard = { ...gameState.allCards.getCard(cardIdToMagnetize) };
13
- for (const boardEntity of board) {
14
- const onBeforeMagnetizeImpl = _card_mappings_1.cardMappings[boardEntity.cardId];
15
- if ((0, card_interface_1.hasOnBeforeMagnetize)(onBeforeMagnetizeImpl)) {
16
- onBeforeMagnetizeImpl.onBeforeMagnetize(boardEntity, {
12
+ const modularCard = typeof cardToMagnetize === 'string' ? { ...gameState.allCards.getCard(cardToMagnetize) } : cardToMagnetize;
13
+ const magnetMult = board.some((e) => e.cardId === "BG34_177_G")
14
+ ? 3
15
+ : board.some((e) => e.cardId === "BG34_177")
16
+ ? 2
17
+ : 1;
18
+ for (let i = 0; i < magnetMult; i++) {
19
+ for (const boardEntity of board) {
20
+ const onBeforeMagnetizeImpl = _card_mappings_1.cardMappings[boardEntity.cardId];
21
+ if ((0, card_interface_1.hasOnBeforeMagnetize)(onBeforeMagnetizeImpl)) {
22
+ onBeforeMagnetizeImpl.onBeforeMagnetize(boardEntity, {
23
+ board: board,
24
+ hero: hero,
25
+ magnetizedCard: modularCard,
26
+ magnetizeTarget: target,
27
+ gameState: gameState,
28
+ });
29
+ }
30
+ }
31
+ (0, stats_1.modifyStats)(target, source, modularCard.attack + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices, modularCard.health + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices, board, hero, gameState);
32
+ target.taunt = target.taunt || ((_a = modularCard.mechanics) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.GameTag[reference_data_1.GameTag.TAUNT]));
33
+ target.divineShield = target.divineShield || ((_b = modularCard.mechanics) === null || _b === void 0 ? void 0 : _b.includes(reference_data_1.GameTag[reference_data_1.GameTag.DIVINE_SHIELD]));
34
+ target.poisonous = target.poisonous || ((_c = modularCard.mechanics) === null || _c === void 0 ? void 0 : _c.includes(reference_data_1.GameTag[reference_data_1.GameTag.POISONOUS]));
35
+ target.venomous = target.venomous || ((_d = modularCard.mechanics) === null || _d === void 0 ? void 0 : _d.includes(reference_data_1.GameTag[reference_data_1.GameTag.VENOMOUS]));
36
+ target.windfury = target.windfury || ((_e = modularCard.mechanics) === null || _e === void 0 ? void 0 : _e.includes(reference_data_1.GameTag[reference_data_1.GameTag.WINDFURY]));
37
+ target.reborn = target.reborn || ((_f = modularCard.mechanics) === null || _f === void 0 ? void 0 : _f.includes(reference_data_1.GameTag[reference_data_1.GameTag.REBORN]));
38
+ target.stealth = target.stealth || ((_g = modularCard.mechanics) === null || _g === void 0 ? void 0 : _g.includes(reference_data_1.GameTag[reference_data_1.GameTag.STEALTH]));
39
+ const magneticEnchantment = modularCard.enchantmentDbfId;
40
+ if (magneticEnchantment) {
41
+ const enchantment = gameState.allCards.getCard(magneticEnchantment).id;
42
+ target.enchantments.push({
43
+ cardId: enchantment,
44
+ originEntityId: modularCard.dbfId,
45
+ timing: gameState.sharedState.currentEntityId++,
46
+ });
47
+ }
48
+ if (["BG31_176", "BG31_176_G"].includes(cardToMagnetize)) {
49
+ const mult = cardToMagnetize === "BG31_176" ? 1 : 2;
50
+ target.attack += 2 * hero.globalInfo.MagnetizedThisGame * mult;
51
+ target.health += 2 * hero.globalInfo.MagnetizedThisGame * mult;
52
+ }
53
+ hero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame + 1;
54
+ for (const entity of board) {
55
+ const drBoomBases = (entity.cardId === "BG31_176" ? 1 : 0) +
56
+ entity.enchantments.filter((e) => e.cardId === "BG31_176e").length;
57
+ const drBoomGoldens = (entity.cardId === "BG31_176_G" ? 1 : 0) +
58
+ entity.enchantments.filter((e) => e.cardId === "BG31_176_Ge").length;
59
+ entity.attack += drBoomBases * 2 + drBoomGoldens * 4;
60
+ entity.health += drBoomBases * 2 + drBoomGoldens * 4;
61
+ }
62
+ const onAfterMagnetizeImpl = _card_mappings_1.cardMappings[modularCard.id];
63
+ if ((0, card_interface_1.hasOnAfterMagnetize)(onAfterMagnetizeImpl)) {
64
+ onAfterMagnetizeImpl.onAfterMagnetize(target, {
17
65
  board: board,
18
66
  hero: hero,
67
+ otherHero: otherHero,
68
+ otherBoard: otherBoard,
19
69
  magnetizedCard: modularCard,
70
+ magnetizeTarget: target,
20
71
  gameState: gameState,
21
72
  });
22
73
  }
23
74
  }
24
- (0, stats_1.modifyStats)(target, source, modularCard.attack + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices, modularCard.health + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices, board, hero, gameState);
25
- target.taunt = target.taunt || ((_a = modularCard.mechanics) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.GameTag[reference_data_1.GameTag.TAUNT]));
26
- target.divineShield = target.divineShield || ((_b = modularCard.mechanics) === null || _b === void 0 ? void 0 : _b.includes(reference_data_1.GameTag[reference_data_1.GameTag.DIVINE_SHIELD]));
27
- target.poisonous = target.poisonous || ((_c = modularCard.mechanics) === null || _c === void 0 ? void 0 : _c.includes(reference_data_1.GameTag[reference_data_1.GameTag.POISONOUS]));
28
- target.venomous = target.venomous || ((_d = modularCard.mechanics) === null || _d === void 0 ? void 0 : _d.includes(reference_data_1.GameTag[reference_data_1.GameTag.VENOMOUS]));
29
- target.windfury = target.windfury || ((_e = modularCard.mechanics) === null || _e === void 0 ? void 0 : _e.includes(reference_data_1.GameTag[reference_data_1.GameTag.WINDFURY]));
30
- target.reborn = target.reborn || ((_f = modularCard.mechanics) === null || _f === void 0 ? void 0 : _f.includes(reference_data_1.GameTag[reference_data_1.GameTag.REBORN]));
31
- target.stealth = target.stealth || ((_g = modularCard.mechanics) === null || _g === void 0 ? void 0 : _g.includes(reference_data_1.GameTag[reference_data_1.GameTag.STEALTH]));
32
- const magneticEnchantment = modularCard.enchantmentDbfId;
33
- if (magneticEnchantment) {
34
- const enchantment = gameState.allCards.getCard(magneticEnchantment).id;
35
- target.enchantments.push({
36
- cardId: enchantment,
37
- originEntityId: modularCard.dbfId,
38
- timing: gameState.sharedState.currentEntityId++,
39
- });
40
- }
41
- if (["BG31_176", "BG31_176_G"].includes(cardIdToMagnetize)) {
42
- const mult = cardIdToMagnetize === "BG31_176" ? 1 : 2;
43
- target.attack += 2 * hero.globalInfo.MagnetizedThisGame * mult;
44
- target.health += 2 * hero.globalInfo.MagnetizedThisGame * mult;
45
- }
46
- hero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame + 1;
47
- for (const entity of board) {
48
- const drBoomBases = (entity.cardId === "BG31_176" ? 1 : 0) +
49
- entity.enchantments.filter((e) => e.cardId === "BG31_176e")
50
- .length;
51
- const drBoomGoldens = (entity.cardId === "BG31_176_G" ? 1 : 0) +
52
- entity.enchantments.filter((e) => e.cardId === "BG31_176_Ge")
53
- .length;
54
- entity.attack += drBoomBases * 2 + drBoomGoldens * 4;
55
- entity.health += drBoomBases * 2 + drBoomGoldens * 4;
56
- }
57
75
  };
58
76
  exports.magnetizeToTarget = magnetizeToTarget;
59
77
  //# sourceMappingURL=magnetize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"magnetize.js","sourceRoot":"","sources":["../../src/simulation/magnetize.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { GameTag, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnBeforeMagnetize } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { Mutable } from '../services/utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const magnetizeToTarget = (\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity,\r\n\tcardIdToMagnetize: string,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst electromagneticDevices = hero.trinkets.filter(\r\n\t\t(t) => t.cardId === CardIds.ElectromagneticDevice_BG30_MagicItem_709,\r\n\t).length;\r\n\tconst greaterElecromagneticDevices = hero.trinkets.filter(\r\n\t\t(t) => t.cardId === CardIds.ElectromagneticDevice_ElectromagneticDeviceToken_BG30_MagicItem_709t,\r\n\t).length;\r\n\r\n\tconst modularCard = { ...gameState.allCards.getCard(cardIdToMagnetize) };\r\n\tfor (const boardEntity of board) {\r\n\t\tconst onBeforeMagnetizeImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnBeforeMagnetize(onBeforeMagnetizeImpl)) {\r\n\t\t\tonBeforeMagnetizeImpl.onBeforeMagnetize(boardEntity, {\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tmagnetizedCard: modularCard,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tmodifyStats(\r\n\t\ttarget,\r\n\t\tsource,\r\n\t\tmodularCard.attack + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices,\r\n\t\tmodularCard.health + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tgameState,\r\n\t);\r\n\ttarget.taunt = target.taunt || modularCard.mechanics?.includes(GameTag[GameTag.TAUNT]);\r\n\ttarget.divineShield = target.divineShield || modularCard.mechanics?.includes(GameTag[GameTag.DIVINE_SHIELD]);\r\n\ttarget.poisonous = target.poisonous || modularCard.mechanics?.includes(GameTag[GameTag.POISONOUS]);\r\n\ttarget.venomous = target.venomous || modularCard.mechanics?.includes(GameTag[GameTag.VENOMOUS]);\r\n\ttarget.windfury = target.windfury || modularCard.mechanics?.includes(GameTag[GameTag.WINDFURY]);\r\n\ttarget.reborn = target.reborn || modularCard.mechanics?.includes(GameTag[GameTag.REBORN]);\r\n\ttarget.stealth = target.stealth || modularCard.mechanics?.includes(GameTag[GameTag.STEALTH]);\r\n\r\n\tconst magneticEnchantment = modularCard.enchantmentDbfId;\r\n\tif (magneticEnchantment) {\r\n\t\tconst enchantment = gameState.allCards.getCard(magneticEnchantment).id;\r\n\t\ttarget.enchantments.push({\r\n\t\t\tcardId: enchantment,\r\n\t\t\toriginEntityId: modularCard.dbfId,\r\n\t\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\t});\r\n\t}\r\n\tif ([CardIds.DrBoomsMonster_BG31_176, CardIds.DrBoomsMonster_BG31_176_G].includes(cardIdToMagnetize as CardIds)) {\r\n\t\tconst mult = cardIdToMagnetize === CardIds.DrBoomsMonster_BG31_176 ? 1 : 2;\r\n\t\ttarget.attack += 2 * hero.globalInfo.MagnetizedThisGame * mult;\r\n\t\ttarget.health += 2 * hero.globalInfo.MagnetizedThisGame * mult;\r\n\t}\r\n\r\n\t// Dr Boom's Monster?\r\n\thero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame + 1;\r\n\tfor (const entity of board) {\r\n\t\tconst drBoomBases =\r\n\t\t\t(entity.cardId === CardIds.DrBoomsMonster_BG31_176 ? 1 : 0) +\r\n\t\t\tentity.enchantments.filter((e) => e.cardId === CardIds.DrBoomsMonster_DrBoomsMonsterEnchantment_BG31_176e)\r\n\t\t\t\t.length;\r\n\t\tconst drBoomGoldens =\r\n\t\t\t(entity.cardId === CardIds.DrBoomsMonster_BG31_176_G ? 1 : 0) +\r\n\t\t\tentity.enchantments.filter((e) => e.cardId === CardIds.DrBoomsMonster_DrBoomsMonsterEnchantment_BG31_176_Ge)\r\n\t\t\t\t.length;\r\n\t\tentity.attack += drBoomBases * 2 + drBoomGoldens * 4;\r\n\t\tentity.health += drBoomBases * 2 + drBoomGoldens * 4;\r\n\t}\r\n};\r\n\r\nexport interface OnBeforeMagnetizeInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tmagnetizedCard: Mutable<ReferenceCard>;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"magnetize.js","sourceRoot":"","sources":["../../src/simulation/magnetize.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnAfterMagnetize, hasOnBeforeMagnetize } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { Mutable } from '../services/utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const magnetizeToTarget = (\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity,\r\n\tcardToMagnetize: string | ReferenceCard,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst electromagneticDevices = hero.trinkets.filter(\r\n\t\t(t) => t.cardId === CardIds.ElectromagneticDevice_BG30_MagicItem_709,\r\n\t).length;\r\n\tconst greaterElecromagneticDevices = hero.trinkets.filter(\r\n\t\t(t) => t.cardId === CardIds.ElectromagneticDevice_ElectromagneticDeviceToken_BG30_MagicItem_709t,\r\n\t).length;\r\n\r\n\tconst modularCard =\r\n\t\ttypeof cardToMagnetize === 'string' ? { ...gameState.allCards.getCard(cardToMagnetize) } : cardToMagnetize;\r\n\r\n\tconst magnetMult = board.some((e) => e.cardId === CardIds.DoubleDemolisher_BG34_177_G)\r\n\t\t? 3\r\n\t\t: board.some((e) => e.cardId === CardIds.DoubleDemolisher_BG34_177)\r\n\t\t? 2\r\n\t\t: 1;\r\n\tfor (let i = 0; i < magnetMult; i++) {\r\n\t\tfor (const boardEntity of board) {\r\n\t\t\tconst onBeforeMagnetizeImpl = cardMappings[boardEntity.cardId];\r\n\t\t\tif (hasOnBeforeMagnetize(onBeforeMagnetizeImpl)) {\r\n\t\t\t\tonBeforeMagnetizeImpl.onBeforeMagnetize(boardEntity, {\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\tmagnetizedCard: modularCard,\r\n\t\t\t\t\tmagnetizeTarget: target,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tmodifyStats(\r\n\t\t\ttarget,\r\n\t\t\tsource,\r\n\t\t\tmodularCard.attack + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices,\r\n\t\t\tmodularCard.health + 2 * electromagneticDevices + 4 * greaterElecromagneticDevices,\r\n\t\t\tboard,\r\n\t\t\thero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t\ttarget.taunt = target.taunt || modularCard.mechanics?.includes(GameTag[GameTag.TAUNT]);\r\n\t\ttarget.divineShield = target.divineShield || modularCard.mechanics?.includes(GameTag[GameTag.DIVINE_SHIELD]);\r\n\t\ttarget.poisonous = target.poisonous || modularCard.mechanics?.includes(GameTag[GameTag.POISONOUS]);\r\n\t\ttarget.venomous = target.venomous || modularCard.mechanics?.includes(GameTag[GameTag.VENOMOUS]);\r\n\t\ttarget.windfury = target.windfury || modularCard.mechanics?.includes(GameTag[GameTag.WINDFURY]);\r\n\t\ttarget.reborn = target.reborn || modularCard.mechanics?.includes(GameTag[GameTag.REBORN]);\r\n\t\ttarget.stealth = target.stealth || modularCard.mechanics?.includes(GameTag[GameTag.STEALTH]);\r\n\r\n\t\tconst magneticEnchantment = modularCard.enchantmentDbfId;\r\n\t\tif (magneticEnchantment) {\r\n\t\t\tconst enchantment = gameState.allCards.getCard(magneticEnchantment).id;\r\n\t\t\ttarget.enchantments.push({\r\n\t\t\t\tcardId: enchantment,\r\n\t\t\t\toriginEntityId: modularCard.dbfId,\r\n\t\t\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\t\t});\r\n\t\t}\r\n\t\tif ([CardIds.DrBoomsMonster_BG31_176, CardIds.DrBoomsMonster_BG31_176_G].includes(cardToMagnetize as CardIds)) {\r\n\t\t\tconst mult = cardToMagnetize === CardIds.DrBoomsMonster_BG31_176 ? 1 : 2;\r\n\t\t\ttarget.attack += 2 * hero.globalInfo.MagnetizedThisGame * mult;\r\n\t\t\ttarget.health += 2 * hero.globalInfo.MagnetizedThisGame * mult;\r\n\t\t}\r\n\r\n\t\t// Dr Boom's Monster?\r\n\t\thero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame + 1;\r\n\t\tfor (const entity of board) {\r\n\t\t\tconst drBoomBases =\r\n\t\t\t\t(entity.cardId === CardIds.DrBoomsMonster_BG31_176 ? 1 : 0) +\r\n\t\t\t\tentity.enchantments.filter(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.DrBoomsMonster_DrBoomsMonsterEnchantment_BG31_176e,\r\n\t\t\t\t).length;\r\n\t\t\tconst drBoomGoldens =\r\n\t\t\t\t(entity.cardId === CardIds.DrBoomsMonster_BG31_176_G ? 1 : 0) +\r\n\t\t\t\tentity.enchantments.filter(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.DrBoomsMonster_DrBoomsMonsterEnchantment_BG31_176_Ge,\r\n\t\t\t\t).length;\r\n\t\t\tentity.attack += drBoomBases * 2 + drBoomGoldens * 4;\r\n\t\t\tentity.health += drBoomBases * 2 + drBoomGoldens * 4;\r\n\t\t}\r\n\r\n\t\tconst onAfterMagnetizeImpl = cardMappings[modularCard.id];\r\n\t\tif (hasOnAfterMagnetize(onAfterMagnetizeImpl)) {\r\n\t\t\tonAfterMagnetizeImpl.onAfterMagnetize(target, {\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\totherBoard: otherBoard,\r\n\t\t\t\tmagnetizedCard: modularCard,\r\n\t\t\t\tmagnetizeTarget: target,\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 OnBeforeMagnetizeInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tmagnetizedCard: Mutable<ReferenceCard>;\r\n\tmagnetizeTarget: BoardEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface OnAfterMagnetizeInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherHero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\tmagnetizedCard: ReferenceCard;\r\n\tmagnetizeTarget: BoardEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
@@ -32,17 +32,6 @@ const onMinionKill = (killer, killerIsAttacking, victim, killerBoard, killerHero
32
32
  }
33
33
  }
34
34
  switch (killer.cardId) {
35
- case "BG27_023":
36
- case "BG27_023_G":
37
- const murculesTarget = (0, utils_1.pickRandom)(killerHero.hand
38
- .filter((e) => !!(e === null || e === void 0 ? void 0 : e.cardId))
39
- .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]; }));
40
- if (murculesTarget) {
41
- const murculesStats = killer.cardId === "BG27_023" ? 2 : 4;
42
- (0, stats_1.modifyStats)(murculesTarget, killer, murculesStats, murculesStats, killerBoard, killerHero, gameState);
43
- gameState.spectator.registerPowerTarget(killer, murculesTarget, killerBoard, killerHero, victimHero);
44
- }
45
- break;
46
35
  case "BG27_507":
47
36
  case "BG27_507_G":
48
37
  if (killer.health > 0 && !killer.definitelyDead && killer.abiityChargesLeft > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"minion-kill.js","sourceRoot":"","sources":["../../src/simulation/minion-kill.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { CardType } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnMinionKilled } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onMinionKill = (\r\n\tkiller: BoardEntity,\r\n\tkillerIsAttacking: boolean,\r\n\tvictim: BoardEntity,\r\n\tkillerBoard: BoardEntity[],\r\n\tkillerHero: BgsPlayerEntity,\r\n\tvictimBoard: BoardEntity[],\r\n\tvictimHero: BgsPlayerEntity,\r\n\tdefenderNeighbours: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t// Can be null if killed by a hero power for instance\r\n\tif (!killer?.cardId) {\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t}\r\n\r\n\tlet damageDoneByAttacker = 0;\r\n\tlet damageDoneByDefender = 0;\r\n\tfor (const boardEntity of killerBoard) {\r\n\t\tconst onMinionKilledImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnMinionKilled(onMinionKilledImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onMinionKilledImpl.onMinionKilled(boardEntity, {\r\n\t\t\t\tkiller: killer,\r\n\t\t\t\tkillerIsAttacking: killerIsAttacking,\r\n\t\t\t\tminionKilled: victim,\r\n\t\t\t\tattackingHero: killerHero,\r\n\t\t\t\tattackingBoard: killerBoard,\r\n\t\t\t\tdefendingHero: victimHero,\r\n\t\t\t\tdefendingBoard: victimBoard,\r\n\t\t\t\tdefenderNeighbours: defenderNeighbours,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: killerHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (killer.cardId) {\r\n\t\tcase CardIds.Murcules_BG27_023:\r\n\t\tcase CardIds.Murcules_BG27_023_G:\r\n\t\t\tconst murculesTarget = pickRandom(\r\n\t\t\t\tkillerHero.hand\r\n\t\t\t\t\t.filter((e) => !!e?.cardId)\r\n\t\t\t\t\t.filter(\r\n\t\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (murculesTarget) {\r\n\t\t\t\tconst murculesStats = killer.cardId === CardIds.Murcules_BG27_023 ? 2 : 4;\r\n\t\t\t\tmodifyStats(murculesTarget, killer, murculesStats, murculesStats, killerBoard, killerHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(killer, murculesTarget, killerBoard, killerHero, victimHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Mannoroth_BG27_507:\r\n\t\tcase CardIds.Mannoroth_BG27_507_G:\r\n\t\t\tif (killer.health > 0 && !killer.definitelyDead && killer.abiityChargesLeft > 0) {\r\n\t\t\t\tmodifyStats(killer, killer, victim.attack, victim.maxHealth, killerBoard, killerHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(killer, killer, killerBoard, killerHero, victimHero);\r\n\t\t\t\tkiller.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TideOracleMorgl_BG27_513:\r\n\t\tcase CardIds.TideOracleMorgl_BG27_513_G:\r\n\t\t\tif (\r\n\t\t\t\tgameState.sharedState.currentAttackerEntityId != null &&\r\n\t\t\t\tgameState.sharedState.currentAttackerEntityId === killer.entityId\r\n\t\t\t) {\r\n\t\t\t\tconst tideOracleMorgleTarget = pickRandom(\r\n\t\t\t\t\tkillerHero.hand\r\n\t\t\t\t\t\t.filter((e) => !!e?.cardId)\r\n\t\t\t\t\t\t.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);\r\n\t\t\t\tif (tideOracleMorgleTarget) {\r\n\t\t\t\t\tconst tideOracleMorgleMultiplier = killer.cardId === CardIds.TideOracleMorgl_BG27_513 ? 1 : 2;\r\n\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\ttideOracleMorgleTarget,\r\n\t\t\t\t\t\tkiller,\r\n\t\t\t\t\t\ttideOracleMorgleMultiplier * victim.attack,\r\n\t\t\t\t\t\ttideOracleMorgleMultiplier * victim.maxHealth,\r\n\t\t\t\t\t\tkillerBoard,\r\n\t\t\t\t\t\tkillerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tkiller,\r\n\t\t\t\t\t\ttideOracleMorgleTarget,\r\n\t\t\t\t\t\tkillerBoard,\r\n\t\t\t\t\t\tkillerHero,\r\n\t\t\t\t\t\tvictimHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t}\r\n\r\n\treturn { dmgDoneByAttacker: damageDoneByAttacker, dmgDoneByDefender: damageDoneByDefender };\r\n};\r\n"]}
1
+ {"version":3,"file":"minion-kill.js","sourceRoot":"","sources":["../../src/simulation/minion-kill.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardType } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnMinionKilled } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { pickRandom } from '../services/utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onMinionKill = (\r\n\tkiller: BoardEntity,\r\n\tkillerIsAttacking: boolean,\r\n\tvictim: BoardEntity,\r\n\tkillerBoard: BoardEntity[],\r\n\tkillerHero: BgsPlayerEntity,\r\n\tvictimBoard: BoardEntity[],\r\n\tvictimHero: BgsPlayerEntity,\r\n\tdefenderNeighbours: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t// Can be null if killed by a hero power for instance\r\n\tif (!killer?.cardId) {\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t}\r\n\r\n\tlet damageDoneByAttacker = 0;\r\n\tlet damageDoneByDefender = 0;\r\n\tfor (const boardEntity of killerBoard) {\r\n\t\tconst onMinionKilledImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnMinionKilled(onMinionKilledImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onMinionKilledImpl.onMinionKilled(boardEntity, {\r\n\t\t\t\tkiller: killer,\r\n\t\t\t\tkillerIsAttacking: killerIsAttacking,\r\n\t\t\t\tminionKilled: victim,\r\n\t\t\t\tattackingHero: killerHero,\r\n\t\t\t\tattackingBoard: killerBoard,\r\n\t\t\t\tdefendingHero: victimHero,\r\n\t\t\t\tdefendingBoard: victimBoard,\r\n\t\t\t\tdefenderNeighbours: defenderNeighbours,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: killerHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (killer.cardId) {\r\n\t\tcase CardIds.Mannoroth_BG27_507:\r\n\t\tcase CardIds.Mannoroth_BG27_507_G:\r\n\t\t\tif (killer.health > 0 && !killer.definitelyDead && killer.abiityChargesLeft > 0) {\r\n\t\t\t\tmodifyStats(killer, killer, victim.attack, victim.maxHealth, killerBoard, killerHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(killer, killer, killerBoard, killerHero, victimHero);\r\n\t\t\t\tkiller.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TideOracleMorgl_BG27_513:\r\n\t\tcase CardIds.TideOracleMorgl_BG27_513_G:\r\n\t\t\tif (\r\n\t\t\t\tgameState.sharedState.currentAttackerEntityId != null &&\r\n\t\t\t\tgameState.sharedState.currentAttackerEntityId === killer.entityId\r\n\t\t\t) {\r\n\t\t\t\tconst tideOracleMorgleTarget = pickRandom(\r\n\t\t\t\t\tkillerHero.hand\r\n\t\t\t\t\t\t.filter((e) => !!e?.cardId)\r\n\t\t\t\t\t\t.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);\r\n\t\t\t\tif (tideOracleMorgleTarget) {\r\n\t\t\t\t\tconst tideOracleMorgleMultiplier = killer.cardId === CardIds.TideOracleMorgl_BG27_513 ? 1 : 2;\r\n\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\ttideOracleMorgleTarget,\r\n\t\t\t\t\t\tkiller,\r\n\t\t\t\t\t\ttideOracleMorgleMultiplier * victim.attack,\r\n\t\t\t\t\t\ttideOracleMorgleMultiplier * victim.maxHealth,\r\n\t\t\t\t\t\tkillerBoard,\r\n\t\t\t\t\t\tkillerHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tkiller,\r\n\t\t\t\t\t\ttideOracleMorgleTarget,\r\n\t\t\t\t\t\tkillerBoard,\r\n\t\t\t\t\t\tkillerHero,\r\n\t\t\t\t\t\tvictimHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t}\r\n\r\n\treturn { dmgDoneByAttacker: damageDoneByAttacker, dmgDoneByDefender: damageDoneByDefender };\r\n};\r\n"]}
@@ -5,13 +5,11 @@ const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const card_interface_1 = require("../cards/card.interface");
6
6
  const _card_mappings_1 = require("../cards/impl/_card-mappings");
7
7
  const reborn_1 = require("../keywords/reborn");
8
+ const rally_1 = require("../mechanics/rally");
8
9
  const utils_1 = require("../utils");
9
- const attack_1 = require("./attack");
10
- const cards_in_hand_1 = require("./cards-in-hand");
11
- const enchantments_1 = require("./enchantments");
12
10
  const stats_1 = require("./stats");
13
11
  const applyOnAttackEffects = (attacker, attackingBoard, attackingBoardHero, defendingEntity, defendingBoard, defendingBoardHero, gameState) => {
14
- var _a, _b, _c;
12
+ var _a;
15
13
  let damageDoneByAttacker = 0;
16
14
  let damageDoneByDefender = 0;
17
15
  for (const trinket of (_a = attackingBoardHero.trinkets) !== null && _a !== void 0 ? _a : []) {
@@ -67,54 +65,9 @@ const applyOnAttackEffects = (attacker, attackingBoard, attackingBoardHero, defe
67
65
  }
68
66
  }
69
67
  }
70
- const isAttackerRallying = (0, utils_1.hasEntityMechanic)(attacker, reference_data_1.GameTag.BACON_RALLY, gameState.allCards);
71
- const numberOfRallyingCries = (_c = (_b = attackingBoardHero.questRewardEntities) === null || _b === void 0 ? void 0 : _b.filter((r) => r.cardId === "BG33_Reward_021").length) !== null && _c !== void 0 ? _c : 0;
72
- const rallyLoops = 1 + (isAttackerRallying ? numberOfRallyingCries : 0);
73
- for (let i = 0; i < rallyLoops; i++) {
74
- const onAttackImpl = _card_mappings_1.cardMappings[attacker.cardId];
75
- if ((0, card_interface_1.hasRally)(onAttackImpl)) {
76
- const { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.rally(attacker, {
77
- attacker: attacker,
78
- attackingHero: attackingBoardHero,
79
- attackingBoard: attackingBoard,
80
- defendingEntity: defendingEntity,
81
- defendingHero: defendingBoardHero,
82
- defendingBoard: defendingBoard,
83
- gameState,
84
- playerIsFriendly: attackingBoardHero.friendly,
85
- });
86
- damageDoneByAttacker += dmgDoneByAttacker;
87
- damageDoneByDefender += dmgDoneByDefender;
88
- }
89
- const enchantments = attacker.enchantments;
90
- for (const enchantment of enchantments) {
91
- const onAttackImpl = _card_mappings_1.cardMappings[enchantment.cardId];
92
- if ((0, card_interface_1.hasRally)(onAttackImpl)) {
93
- let enchantmentToMinion = {
94
- ...enchantment,
95
- entityId: attacker.entityId,
96
- attack: attacker.attack,
97
- health: attacker.health,
98
- maxHealth: attacker.maxHealth,
99
- maxAttack: attacker.maxAttack,
100
- abiityChargesLeft: attacker.abiityChargesLeft,
101
- };
102
- enchantmentToMinion = (0, enchantments_1.fixEnchantments)(enchantmentToMinion, gameState.allCards);
103
- const { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.rally(enchantmentToMinion, {
104
- attacker: attacker,
105
- attackingHero: attackingBoardHero,
106
- attackingBoard: attackingBoard,
107
- defendingEntity: defendingEntity,
108
- defendingHero: defendingBoardHero,
109
- defendingBoard: defendingBoard,
110
- gameState,
111
- playerIsFriendly: attackingBoardHero.friendly,
112
- });
113
- damageDoneByAttacker += dmgDoneByAttacker;
114
- damageDoneByDefender += dmgDoneByDefender;
115
- }
116
- }
117
- }
68
+ const { dmgDoneByAttacker: dmgDoneByRally, dmgDoneByDefender: dmgDoneByRallyDefender } = (0, rally_1.triggerRally)(attackingBoard, attackingBoardHero, attacker, defendingBoard, defendingBoardHero, defendingEntity, gameState);
69
+ damageDoneByAttacker += dmgDoneByRally;
70
+ damageDoneByDefender += dmgDoneByRallyDefender;
118
71
  if (attacker.cardId === "BG29_888" || attacker.cardId === "BG29_888_G") {
119
72
  const multiplier = attacker.cardId === "BG29_888_G" ? 2 : 1;
120
73
  (0, stats_1.modifyStats)(attacker, attacker, 2 * multiplier, 0, attackingBoard, attackingBoardHero, gameState);
@@ -127,26 +80,6 @@ const applyOnAttackEffects = (attacker, attackingBoard, attackingBoardHero, defe
127
80
  (0, stats_1.modifyStats)(e, attacker, attacker.cardId === "BG24_708_G" ? 4 : 2, attacker.cardId === "BG24_708_G" ? 4 : 2, attackingBoard, attackingBoardHero, gameState);
128
81
  });
129
82
  }
130
- else if (attacker.cardId === "BG28_635" ||
131
- attacker.cardId === "BG28_635_G") {
132
- const numberOfCardsToAdd = attacker.cardId === "BG28_635_G" ? 2 : 1;
133
- const cardsToAdd = Array.from({ length: numberOfCardsToAdd }).map(() => null);
134
- (0, cards_in_hand_1.addCardsInHand)(attackingBoardHero, attackingBoard, cardsToAdd, gameState);
135
- }
136
- else if (attacker.cardId === "BG29_809" || attacker.cardId === "BG29_809_G") {
137
- const loops = attacker.cardId === "BG29_809_G" ? 2 : 1;
138
- for (let i = 0; i < loops; i++) {
139
- for (const entity of [...attackingBoard]) {
140
- if (entity.entityId === attacker.entityId) {
141
- continue;
142
- }
143
- const isSameSide = entity.friendly === attacker.friendly;
144
- const board = isSameSide ? attackingBoard : defendingBoard;
145
- const hero = isSameSide ? attackingBoardHero : defendingBoardHero;
146
- (0, attack_1.dealDamageToMinion)(entity, board, hero, attacker, 1, isSameSide ? defendingBoard : attackingBoard, isSameSide ? defendingBoardHero : attackingBoardHero, gameState);
147
- }
148
- }
149
- }
150
83
  else if (attacker.cardId === "BG29_120" || attacker.cardId === "BG29_120_G") {
151
84
  const loops = attacker.cardId === "BG29_120_G" ? 2 : 1;
152
85
  const attackerIndex = attackingBoard.indexOf(attacker);
@@ -1 +1 @@
1
- {"version":3,"file":"on-attack.js","sourceRoot":"","sources":["../../src/simulation/on-attack.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnWheneverAnotherMinionAttacks, hasRally } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateReborn } from '../keywords/reborn';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { pickRandom } from '../services/utils';\r\nimport { hasCorrectTribe, hasEntityMechanic } from '../utils';\r\nimport { dealDamageToMinion, getNeighbours } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { fixEnchantments } from './enchantments';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\n// Whenever it attacks\r\nexport const applyOnAttackEffects = (\r\n\tattacker: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): { damageDoneByAttacker: number; damageDoneByDefender: number } => {\r\n\tlet damageDoneByAttacker = 0;\r\n\tlet damageDoneByDefender = 0;\r\n\r\n\tfor (const trinket of attackingBoardHero.trinkets ?? []) {\r\n\t\tconst onAttackImpl = cardMappings[trinket.cardId];\r\n\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(trinket, {\r\n\t\t\t\tattacker: attacker,\r\n\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t}\r\n\r\n\t// \"Whenever friendly minion attacks\" triggers before the rally itself?\r\n\t// https://replays.firestoneapp.com/?reviewId=04e6a624-ccd5-4068-9420-884843f3685f&turn=25&action=1\r\n\tconst attackingBoardOtherEntities = attackingBoard.filter((e) => e !== attacker);\r\n\tfor (const boardEntity of attackingBoardOtherEntities) {\r\n\t\tconst onAttackImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(boardEntity, {\r\n\t\t\t\tattacker: attacker,\r\n\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t\tconst enchantments = boardEntity.enchantments;\r\n\t\tfor (const enchantment of enchantments) {\r\n\t\t\tconst onAttackImpl = cardMappings[enchantment.cardId];\r\n\t\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(\r\n\t\t\t\t\tenchantment,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tattacker: attacker,\r\n\t\t\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// This assumes that only \"Rally\" effects trigger on attack\r\n\t// 2025-08-20: this is false. \"Whenever a friendly minion attacks\" is not a rally effect\r\n\tconst isAttackerRallying = hasEntityMechanic(attacker, GameTag.BACON_RALLY, gameState.allCards);\r\n\tconst numberOfRallyingCries =\r\n\t\tattackingBoardHero.questRewardEntities?.filter((r) => r.cardId === CardIds.RallyingCry_BG33_Reward_021)\r\n\t\t\t.length ?? 0;\r\n\tconst rallyLoops = 1 + (isAttackerRallying ? numberOfRallyingCries : 0);\r\n\tfor (let i = 0; i < rallyLoops; i++) {\r\n\t\tconst onAttackImpl = cardMappings[attacker.cardId];\r\n\t\tif (hasRally(onAttackImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.rally(attacker, {\r\n\t\t\t\tattacker: attacker,\r\n\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t\tconst enchantments = attacker.enchantments;\r\n\t\tfor (const enchantment of enchantments) {\r\n\t\t\tconst onAttackImpl = cardMappings[enchantment.cardId];\r\n\t\t\tif (hasRally(onAttackImpl)) {\r\n\t\t\t\tlet enchantmentToMinion: BoardEntity = {\r\n\t\t\t\t\t...enchantment,\r\n\t\t\t\t\tentityId: attacker.entityId,\r\n\t\t\t\t\tattack: attacker.attack,\r\n\t\t\t\t\thealth: attacker.health,\r\n\t\t\t\t\tmaxHealth: attacker.maxHealth,\r\n\t\t\t\t\tmaxAttack: attacker.maxAttack,\r\n\t\t\t\t\tabiityChargesLeft: attacker.abiityChargesLeft,\r\n\t\t\t\t};\r\n\t\t\t\tenchantmentToMinion = fixEnchantments(enchantmentToMinion, gameState.allCards);\r\n\t\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.rally(enchantmentToMinion, {\r\n\t\t\t\t\tattacker: attacker,\r\n\t\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t\t});\r\n\t\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// if (attacker.cardId === CardIds.GlyphGuardian_BGS_045) {\r\n\t// \t// For now the utility method only works additively, so we hack around it\r\n\t// \tmodifyStats(\r\n\t// \t\tattacker,\r\n\t// \t\tnull,\r\n\t// \t\t2 * attacker.attack - attacker.attack,\r\n\t// \t\t0,\r\n\t// \t\tattackingBoard,\r\n\t// \t\tattackingBoardHero,\r\n\t// \t\tgameState,\r\n\t// \t);\r\n\t// } else if (attacker.cardId === CardIds.GlyphGuardian_TB_BaconUps_115) {\r\n\t// \tmodifyStats(\r\n\t// \t\tattacker,\r\n\t// \t\tnull,\r\n\t// \t\t3 * attacker.attack - attacker.attack,\r\n\t// \t\t0,\r\n\t// \t\tattackingBoard,\r\n\t// \t\tattackingBoardHero,\r\n\t// \t\tgameState,\r\n\t// \t);\r\n\t// } else\r\n\tif (attacker.cardId === CardIds.GlimGuardian_BG29_888 || attacker.cardId === CardIds.GlimGuardian_BG29_888_G) {\r\n\t\tconst multiplier = attacker.cardId === CardIds.GlimGuardian_BG29_888_G ? 2 : 1;\r\n\t\tmodifyStats(attacker, attacker, 2 * multiplier, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t} else if (\r\n\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708 ||\r\n\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G\r\n\t) {\r\n\t\tattackingBoard\r\n\t\t\t.filter((e) => hasCorrectTribe(e, attackingBoardHero, Race.PIRATE, gameState.anomalies, gameState.allCards))\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tattacker,\r\n\t\t\t\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G ? 4 : 2,\r\n\t\t\t\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G ? 4 : 2,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t} else if (\r\n\t\tattacker.cardId === CardIds.WhirlingLassOMatic_BG28_635 ||\r\n\t\tattacker.cardId === CardIds.WhirlingLassOMatic_BG28_635_G\r\n\t) {\r\n\t\tconst numberOfCardsToAdd = attacker.cardId === CardIds.WhirlingLassOMatic_BG28_635_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array.from({ length: numberOfCardsToAdd }).map(() => null);\r\n\t\taddCardsInHand(attackingBoardHero, attackingBoard, cardsToAdd, gameState);\r\n\t} else if (attacker.cardId === CardIds.Rampager_BG29_809 || attacker.cardId === CardIds.Rampager_BG29_809_G) {\r\n\t\tconst loops = attacker.cardId === CardIds.Rampager_BG29_809_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t// Don't include new spawns\r\n\t\t\tfor (const entity of [...attackingBoard]) {\r\n\t\t\t\tif (entity.entityId === attacker.entityId) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tconst isSameSide = entity.friendly === attacker.friendly;\r\n\t\t\t\tconst board = isSameSide ? attackingBoard : defendingBoard;\r\n\t\t\t\tconst hero = isSameSide ? attackingBoardHero : defendingBoardHero;\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\tattacker,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tisSameSide ? defendingBoard : attackingBoard,\r\n\t\t\t\t\tisSameSide ? defendingBoardHero : attackingBoardHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t} else if (attacker.cardId === CardIds.HatefulHag_BG29_120 || attacker.cardId === CardIds.HatefulHag_BG29_120_G) {\r\n\t\tconst loops = attacker.cardId === CardIds.HatefulHag_BG29_120_G ? 2 : 1;\r\n\t\tconst attackerIndex = attackingBoard.indexOf(attacker);\r\n\t\tfor (let i = 1; i <= loops; i++) {\r\n\t\t\tconst target = attackingBoard[attackerIndex + i];\r\n\t\t\tif (!!target) {\r\n\t\t\t\tupdateReborn(target, true, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tattacker,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tdefendingBoardHero,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst eclipsion = attackingBoard.find(\r\n\t\t(e) =>\r\n\t\t\t[\r\n\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy,\r\n\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t].includes(e.cardId as CardIds) && e.abiityChargesLeft > 0,\r\n\t);\r\n\t// Only once per minion\r\n\tif (!!eclipsion && attacker.immuneWhenAttackCharges == null) {\r\n\t\tattacker.immuneWhenAttackCharges = 1;\r\n\t\t// If we have 2 eclipsions, the first minion that attacks eats both charges\r\n\t\tattackingBoard\r\n\t\t\t.filter((e) =>\r\n\t\t\t\t[\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy,\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t\t].includes(e.cardId as CardIds),\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\te.abiityChargesLeft--;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfor (const trinket of attackingBoardHero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.CeremonialSword_BG30_MagicItem_925:\r\n\t\t\t\tmodifyStats(attacker, trinket, 4, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn { damageDoneByAttacker, damageDoneByDefender };\r\n};\r\n\r\nexport interface OnAttackInput {\r\n\tattacker: BoardEntity;\r\n\tattackingHero: BgsPlayerEntity;\r\n\tattackingBoard: BoardEntity[];\r\n\tdefendingEntity: BoardEntity;\r\n\tdefendingHero: BgsPlayerEntity;\r\n\tdefendingBoard: BoardEntity[];\r\n\tgameState: FullGameState;\r\n\tplayerIsFriendly: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"on-attack.js","sourceRoot":"","sources":["../../src/simulation/on-attack.ts"],"names":[],"mappings":"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","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnWheneverAnotherMinionAttacks } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateReborn } from '../keywords/reborn';\r\nimport { triggerRally } from '../mechanics/rally';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { hasCorrectTribe } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\n// Whenever it attacks\r\nexport const applyOnAttackEffects = (\r\n\tattacker: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): { damageDoneByAttacker: number; damageDoneByDefender: number } => {\r\n\tlet damageDoneByAttacker = 0;\r\n\tlet damageDoneByDefender = 0;\r\n\r\n\tfor (const trinket of attackingBoardHero.trinkets ?? []) {\r\n\t\tconst onAttackImpl = cardMappings[trinket.cardId];\r\n\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(trinket, {\r\n\t\t\t\tattacker: attacker,\r\n\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t}\r\n\r\n\t// \"Whenever friendly minion attacks\" triggers before the rally itself?\r\n\t// https://replays.firestoneapp.com/?reviewId=04e6a624-ccd5-4068-9420-884843f3685f&turn=25&action=1\r\n\tconst attackingBoardOtherEntities = attackingBoard.filter((e) => e !== attacker);\r\n\tfor (const boardEntity of attackingBoardOtherEntities) {\r\n\t\tconst onAttackImpl = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(boardEntity, {\r\n\t\t\t\tattacker: attacker,\r\n\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\tgameState,\r\n\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t});\r\n\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t}\r\n\t\tconst enchantments = boardEntity.enchantments;\r\n\t\tfor (const enchantment of enchantments) {\r\n\t\t\tconst onAttackImpl = cardMappings[enchantment.cardId];\r\n\t\t\tif (hasOnWheneverAnotherMinionAttacks(onAttackImpl)) {\r\n\t\t\t\tconst { dmgDoneByAttacker, dmgDoneByDefender } = onAttackImpl.onWheneverAnotherMinionAttacks(\r\n\t\t\t\t\tenchantment,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tattacker: attacker,\r\n\t\t\t\t\t\tattackingHero: attackingBoardHero,\r\n\t\t\t\t\t\tattackingBoard: attackingBoard,\r\n\t\t\t\t\t\tdefendingEntity: defendingEntity,\r\n\t\t\t\t\t\tdefendingHero: defendingBoardHero,\r\n\t\t\t\t\t\tdefendingBoard: defendingBoard,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tplayerIsFriendly: attackingBoardHero.friendly,\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t\tdamageDoneByAttacker += dmgDoneByAttacker;\r\n\t\t\t\tdamageDoneByDefender += dmgDoneByDefender;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// This assumes that only \"Rally\" effects trigger on attack\r\n\t// 2025-08-20: this is false. \"Whenever a friendly minion attacks\" is not a rally effect\r\n\tconst { dmgDoneByAttacker: dmgDoneByRally, dmgDoneByDefender: dmgDoneByRallyDefender } = triggerRally(\r\n\t\tattackingBoard,\r\n\t\tattackingBoardHero,\r\n\t\tattacker,\r\n\t\tdefendingBoard,\r\n\t\tdefendingBoardHero,\r\n\t\tdefendingEntity,\r\n\t\tgameState,\r\n\t);\r\n\tdamageDoneByAttacker += dmgDoneByRally;\r\n\tdamageDoneByDefender += dmgDoneByRallyDefender;\r\n\r\n\t// if (attacker.cardId === CardIds.GlyphGuardian_BGS_045) {\r\n\t// \t// For now the utility method only works additively, so we hack around it\r\n\t// \tmodifyStats(\r\n\t// \t\tattacker,\r\n\t// \t\tnull,\r\n\t// \t\t2 * attacker.attack - attacker.attack,\r\n\t// \t\t0,\r\n\t// \t\tattackingBoard,\r\n\t// \t\tattackingBoardHero,\r\n\t// \t\tgameState,\r\n\t// \t);\r\n\t// } else if (attacker.cardId === CardIds.GlyphGuardian_TB_BaconUps_115) {\r\n\t// \tmodifyStats(\r\n\t// \t\tattacker,\r\n\t// \t\tnull,\r\n\t// \t\t3 * attacker.attack - attacker.attack,\r\n\t// \t\t0,\r\n\t// \t\tattackingBoard,\r\n\t// \t\tattackingBoardHero,\r\n\t// \t\tgameState,\r\n\t// \t);\r\n\t// } else\r\n\tif (attacker.cardId === CardIds.GlimGuardian_BG29_888 || attacker.cardId === CardIds.GlimGuardian_BG29_888_G) {\r\n\t\tconst multiplier = attacker.cardId === CardIds.GlimGuardian_BG29_888_G ? 2 : 1;\r\n\t\tmodifyStats(attacker, attacker, 2 * multiplier, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t} else if (\r\n\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708 ||\r\n\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G\r\n\t) {\r\n\t\tattackingBoard\r\n\t\t\t.filter((e) => hasCorrectTribe(e, attackingBoardHero, Race.PIRATE, gameState.anomalies, gameState.allCards))\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tattacker,\r\n\t\t\t\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G ? 4 : 2,\r\n\t\t\t\t\tattacker.cardId === CardIds.VanessaVancleef_BG24_708_G ? 4 : 2,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t} else if (attacker.cardId === CardIds.HatefulHag_BG29_120 || attacker.cardId === CardIds.HatefulHag_BG29_120_G) {\r\n\t\tconst loops = attacker.cardId === CardIds.HatefulHag_BG29_120_G ? 2 : 1;\r\n\t\tconst attackerIndex = attackingBoard.indexOf(attacker);\r\n\t\tfor (let i = 1; i <= loops; i++) {\r\n\t\t\tconst target = attackingBoard[attackerIndex + i];\r\n\t\t\tif (!!target) {\r\n\t\t\t\tupdateReborn(target, true, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tattacker,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tdefendingBoardHero,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst eclipsion = attackingBoard.find(\r\n\t\t(e) =>\r\n\t\t\t[\r\n\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy,\r\n\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t].includes(e.cardId as CardIds) && e.abiityChargesLeft > 0,\r\n\t);\r\n\t// Only once per minion\r\n\tif (!!eclipsion && attacker.immuneWhenAttackCharges == null) {\r\n\t\tattacker.immuneWhenAttackCharges = 1;\r\n\t\t// If we have 2 eclipsions, the first minion that attacks eats both charges\r\n\t\tattackingBoard\r\n\t\t\t.filter((e) =>\r\n\t\t\t\t[\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy,\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t\t].includes(e.cardId as CardIds),\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\te.abiityChargesLeft--;\r\n\t\t\t});\r\n\t}\r\n\r\n\tfor (const trinket of attackingBoardHero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.CeremonialSword_BG30_MagicItem_925:\r\n\t\t\t\tmodifyStats(attacker, trinket, 4, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn { damageDoneByAttacker, damageDoneByDefender };\r\n};\r\n\r\nexport interface OnAttackInput {\r\n\tattacker: BoardEntity;\r\n\tattackingHero: BgsPlayerEntity;\r\n\tattackingBoard: BoardEntity[];\r\n\tdefendingEntity: BoardEntity;\r\n\tdefendingHero: BgsPlayerEntity;\r\n\tdefendingBoard: BoardEntity[];\r\n\tgameState: FullGameState;\r\n\tplayerIsFriendly: boolean;\r\n}\r\n"]}
@@ -91,12 +91,6 @@ const handleRebornForEntity = (boardWithKilledMinion, boardWithKilledMinionHero,
91
91
  const multiplier = e.cardId === "BG25_020_G" ? 2 : 1;
92
92
  (0, utils_1.addStatsToBoard)(e, boardWithKilledMinion, boardWithKilledMinionHero, multiplier * 1, multiplier * 3, gameState);
93
93
  });
94
- boardWithKilledMinion
95
- .filter((e) => e.cardId === "BG25_005" || e.cardId === "BG25_005_G")
96
- .forEach((e) => {
97
- const multiplier = e.cardId === "BG25_005_G" ? 2 : 1;
98
- (0, stats_1.modifyStats)(e, e, multiplier * 2, multiplier * 3, boardWithKilledMinion, boardWithKilledMinionHero, gameState);
99
- });
100
94
  }
101
95
  };
102
96
  exports.handleRebornForEntity = handleRebornForEntity;
@@ -1 +1 @@
1
- {"version":3,"file":"reborn.js","sourceRoot":"","sources":["../../src/simulation/reborn.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasRebornEffect, hasRebornSelfEffect } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { addStatsToBoard } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const handleRebornForEntity = (\r\n\tboardWithKilledMinion: BoardEntity[],\r\n\tboardWithKilledMinionHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadMinionIndexFromRight: number,\r\n\topponentBoard: BoardEntity[],\r\n\topponentBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst numberOfReborns = 1;\r\n\tlet entityToSpawn: BoardEntity = null;\r\n\tif (\r\n\t\tdeadEntity.cardId === CardIds.SinrunnerBlanchy_BG24_005 ||\r\n\t\tdeadEntity.cardId === CardIds.SinrunnerBlanchy_BG24_005_G\r\n\t) {\r\n\t\tentityToSpawn = {\r\n\t\t\t...deadEntity,\r\n\t\t\thasAttacked: 0,\r\n\t\t\thealth: deadEntity.maxHealth,\r\n\t\t\tdivineShield: deadEntity.hadDivineShield,\r\n\t\t\treborn: false,\r\n\t\t};\r\n\t}\r\n\tconst entitiesFromReborn: readonly BoardEntity[] =\r\n\t\tdeadEntity.reborn && deadMinionIndexFromRight >= 0\r\n\t\t\t? spawnEntities(\r\n\t\t\t\t\tdeadEntity.cardId,\r\n\t\t\t\t\tnumberOfReborns,\r\n\t\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\t\topponentBoard,\r\n\t\t\t\t\topponentBoardHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tentityToSpawn,\r\n\t\t\t\t\tdeadEntity,\r\n\t\t\t )\r\n\t\t\t: [];\r\n\tif (!entitiesFromReborn.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (\r\n\t\tdeadEntity.cardId === CardIds.WannabeGargoyle_BG30_109 ||\r\n\t\tdeadEntity.cardId === CardIds.WannabeGargoyle_BG30_109_G\r\n\t) {\r\n\t\tentitiesFromReborn.forEach((e) => {\r\n\t\t\tconst attack = deadEntity.maxAttack;\r\n\t\t\tconst health = deadEntity.cardId === CardIds.WannabeGargoyle_BG30_109_G ? deadEntity.maxHealth : 1;\r\n\t\t\te.attack = attack;\r\n\t\t\te.health = health;\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of entitiesFromReborn) {\r\n\t\tconst rebornImpl = cardMappings[entity.cardId];\r\n\t\tif (hasRebornSelfEffect(rebornImpl)) {\r\n\t\t\trebornImpl.rebornSelfEffect(entity, {\r\n\t\t\t\trebornEntity: deadEntity,\r\n\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const entity of boardWithKilledMinion) {\r\n\t\tconst rebornImpl = cardMappings[entity.cardId];\r\n\t\tif (hasRebornEffect(rebornImpl)) {\r\n\t\t\trebornImpl.rebornEffect(entity, {\r\n\t\t\t\trebornEntity: deadEntity,\r\n\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconst entitiesThatWereReborn = performEntitySpawns(\r\n\t\tentitiesFromReborn,\r\n\t\tboardWithKilledMinion,\r\n\t\tboardWithKilledMinionHero,\r\n\t\tdeadEntity,\r\n\t\tdeadMinionIndexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\tentitiesThatWereReborn.forEach((e) => (e.rebornFromEntityId = deadEntity.entityId));\r\n\tconst entityRightToSpawns =\r\n\t\tdeadMinionIndexFromRight === 0\r\n\t\t\t? null\r\n\t\t\t: boardWithKilledMinion[boardWithKilledMinion.length - deadMinionIndexFromRight];\r\n\tentitiesThatWereReborn.forEach((entity) => {\r\n\t\tentity.hasAttacked = deadEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\t// Arfus\r\n\tboardWithKilledMinion\r\n\t\t.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy ||\r\n\t\t\t\te.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G,\r\n\t\t)\r\n\t\t.forEach((arfus) => {\r\n\t\t\tconst multiplier = arfus.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G ? 2 : 1;\r\n\t\t\tconst attackBonus = arfus.attack * multiplier;\r\n\t\t\tentitiesThatWereReborn\r\n\t\t\t\t.filter((e) => e.entityId !== arfus.entityId && e.rebornFromEntityId !== arfus.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(e, arfus, attackBonus, 0, boardWithKilledMinion, boardWithKilledMinionHero, gameState);\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\tconst numberOfTriggersForDeathwhisper = Math.min(entitiesThatWereReborn.length, 1);\r\n\tfor (let i = 0; i < numberOfTriggersForDeathwhisper; i++) {\r\n\t\tboardWithKilledMinion\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.SisterDeathwhisper_BG25_020 ||\r\n\t\t\t\t\te.cardId === CardIds.SisterDeathwhisper_BG25_020_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst multiplier = e.cardId === CardIds.SisterDeathwhisper_BG25_020_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\t\tmultiplier * 1,\r\n\t\t\t\t\tmultiplier * 3,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\tboardWithKilledMinion\r\n\t\t\t.filter((e) => e.cardId === CardIds.JellyBelly_BG25_005 || e.cardId === CardIds.JellyBelly_BG25_005_G)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst multiplier = e.cardId === CardIds.JellyBelly_BG25_005_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\te,\r\n\t\t\t\t\te,\r\n\t\t\t\t\tmultiplier * 2,\r\n\t\t\t\t\tmultiplier * 3,\r\n\t\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t}\r\n};\r\n\r\nexport interface RebornEffectInput {\r\n\treadonly rebornEntity: BoardEntity;\r\n\treadonly boardWithKilledMinion: BoardEntity[];\r\n\treadonly boardWithKilledMinionHero: BgsPlayerEntity;\r\n\treadonly opponentBoard: BoardEntity[];\r\n\treadonly opponentBoardHero: BgsPlayerEntity;\r\n\treadonly gameState: FullGameState;\r\n}\r\n"]}
1
+ {"version":3,"file":"reborn.js","sourceRoot":"","sources":["../../src/simulation/reborn.ts"],"names":[],"mappings":";;;AAEA,4DAA+E;AAC/E,iEAA4D;AAE5D,oCAA2C;AAC3C,6DAAqD;AAErD,qCAA+C;AAC/C,mCAAsC;AAE/B,MAAM,qBAAqB,GAAG,CACpC,qBAAoC,EACpC,yBAA0C,EAC1C,UAAuB,EACvB,wBAAgC,EAChC,aAA4B,EAC5B,iBAAkC,EAClC,SAAwB,EACjB,EAAE;IACT,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,IAAI,aAAa,GAAgB,IAAI,CAAC;IACtC,IACC,UAAU,CAAC,MAAM,eAAsC;QACvD,UAAU,CAAC,MAAM,iBAAwC,EACxD;QACD,aAAa,GAAG;YACf,GAAG,UAAU;YACb,WAAW,EAAE,CAAC;YACd,MAAM,EAAE,UAAU,CAAC,SAAS;YAC5B,YAAY,EAAE,UAAU,CAAC,eAAe;YACxC,MAAM,EAAE,KAAK;SACb,CAAC;KACF;IACD,MAAM,kBAAkB,GACvB,UAAU,CAAC,MAAM,IAAI,wBAAwB,IAAI,CAAC;QACjD,CAAC,CAAC,IAAA,kCAAa,EACb,UAAU,CAAC,MAAM,EACjB,eAAe,EACf,qBAAqB,EACrB,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,UAAU,CACT;QACH,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;QAC/B,OAAO;KACP;IAED,IACC,UAAU,CAAC,MAAM,eAAqC;QACtD,UAAU,CAAC,MAAM,iBAAuC,EACvD;QACD,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC;YACpC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;YAClB,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC;QACnB,CAAC,CAAC,CAAC;KACH;IAED,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE;QACxC,MAAM,UAAU,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,oCAAmB,EAAC,UAAU,CAAC,EAAE;YACpC,UAAU,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBACnC,YAAY,EAAE,UAAU;gBACxB,qBAAqB;gBACrB,yBAAyB;gBACzB,aAAa;gBACb,iBAAiB;gBACjB,SAAS;aACT,CAAC,CAAC;SACH;KACD;IAED,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE;QAC3C,MAAM,UAAU,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,IAAA,gCAAe,EAAC,UAAU,CAAC,EAAE;YAChC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE;gBAC/B,YAAY,EAAE,UAAU;gBACxB,qBAAqB;gBACrB,yBAAyB;gBACzB,aAAa;gBACb,iBAAiB;gBACjB,SAAS;aACT,CAAC,CAAC;SACH;KACD;IAED,MAAM,sBAAsB,GAAG,IAAA,4BAAmB,EACjD,kBAAkB,EAClB,qBAAqB,EACrB,yBAAyB,EACzB,UAAU,EACV,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,SAAS,CACT,CAAC;IACF,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpF,MAAM,mBAAmB,GACxB,wBAAwB,KAAK,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAC;IACnF,sBAAsB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;QACzC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,mCAAI,CAAC,CAAC;IAC7F,CAAC,CAAC,CAAC;IAGH,qBAAqB;SACnB,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,iCAA6C;QACrD,CAAC,CAAC,MAAM,mCAA+C,CACxD;SACA,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,mCAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAC9C,sBAAsB;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,kBAAkB,KAAK,KAAK,CAAC,QAAQ,CAAC;aACvF,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,SAAS,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEJ,MAAM,+BAA+B,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,+BAA+B,EAAE,CAAC,EAAE,EAAE;QACzD,qBAAqB;aACnB,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAwC;YAChD,CAAC,CAAC,MAAM,iBAA0C,CACnD;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAA,uBAAe,EACd,CAAC,EACD,qBAAqB,EACrB,yBAAyB,EACzB,UAAU,GAAG,CAAC,EACd,UAAU,GAAG,CAAC,EACd,SAAS,CACT,CAAC;QACH,CAAC,CAAC,CAAC;KACJ;AACF,CAAC,CAAC;AA7IW,QAAA,qBAAqB,yBA6IhC","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasRebornEffect, hasRebornSelfEffect } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { addStatsToBoard } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const handleRebornForEntity = (\r\n\tboardWithKilledMinion: BoardEntity[],\r\n\tboardWithKilledMinionHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadMinionIndexFromRight: number,\r\n\topponentBoard: BoardEntity[],\r\n\topponentBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst numberOfReborns = 1;\r\n\tlet entityToSpawn: BoardEntity = null;\r\n\tif (\r\n\t\tdeadEntity.cardId === CardIds.SinrunnerBlanchy_BG24_005 ||\r\n\t\tdeadEntity.cardId === CardIds.SinrunnerBlanchy_BG24_005_G\r\n\t) {\r\n\t\tentityToSpawn = {\r\n\t\t\t...deadEntity,\r\n\t\t\thasAttacked: 0,\r\n\t\t\thealth: deadEntity.maxHealth,\r\n\t\t\tdivineShield: deadEntity.hadDivineShield,\r\n\t\t\treborn: false,\r\n\t\t};\r\n\t}\r\n\tconst entitiesFromReborn: readonly BoardEntity[] =\r\n\t\tdeadEntity.reborn && deadMinionIndexFromRight >= 0\r\n\t\t\t? spawnEntities(\r\n\t\t\t\t\tdeadEntity.cardId,\r\n\t\t\t\t\tnumberOfReborns,\r\n\t\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\t\topponentBoard,\r\n\t\t\t\t\topponentBoardHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tentityToSpawn,\r\n\t\t\t\t\tdeadEntity,\r\n\t\t\t )\r\n\t\t\t: [];\r\n\tif (!entitiesFromReborn.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (\r\n\t\tdeadEntity.cardId === CardIds.WannabeGargoyle_BG30_109 ||\r\n\t\tdeadEntity.cardId === CardIds.WannabeGargoyle_BG30_109_G\r\n\t) {\r\n\t\tentitiesFromReborn.forEach((e) => {\r\n\t\t\tconst attack = deadEntity.maxAttack;\r\n\t\t\tconst health = deadEntity.cardId === CardIds.WannabeGargoyle_BG30_109_G ? deadEntity.maxHealth : 1;\r\n\t\t\te.attack = attack;\r\n\t\t\te.health = health;\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of entitiesFromReborn) {\r\n\t\tconst rebornImpl = cardMappings[entity.cardId];\r\n\t\tif (hasRebornSelfEffect(rebornImpl)) {\r\n\t\t\trebornImpl.rebornSelfEffect(entity, {\r\n\t\t\t\trebornEntity: deadEntity,\r\n\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const entity of boardWithKilledMinion) {\r\n\t\tconst rebornImpl = cardMappings[entity.cardId];\r\n\t\tif (hasRebornEffect(rebornImpl)) {\r\n\t\t\trebornImpl.rebornEffect(entity, {\r\n\t\t\t\trebornEntity: deadEntity,\r\n\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tconst entitiesThatWereReborn = performEntitySpawns(\r\n\t\tentitiesFromReborn,\r\n\t\tboardWithKilledMinion,\r\n\t\tboardWithKilledMinionHero,\r\n\t\tdeadEntity,\r\n\t\tdeadMinionIndexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\tentitiesThatWereReborn.forEach((e) => (e.rebornFromEntityId = deadEntity.entityId));\r\n\tconst entityRightToSpawns =\r\n\t\tdeadMinionIndexFromRight === 0\r\n\t\t\t? null\r\n\t\t\t: boardWithKilledMinion[boardWithKilledMinion.length - deadMinionIndexFromRight];\r\n\tentitiesThatWereReborn.forEach((entity) => {\r\n\t\tentity.hasAttacked = deadEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\t// Arfus\r\n\tboardWithKilledMinion\r\n\t\t.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy ||\r\n\t\t\t\te.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G,\r\n\t\t)\r\n\t\t.forEach((arfus) => {\r\n\t\t\tconst multiplier = arfus.cardId === CardIds.Arfus_TB_BaconShop_HERO_22_Buddy_G ? 2 : 1;\r\n\t\t\tconst attackBonus = arfus.attack * multiplier;\r\n\t\t\tentitiesThatWereReborn\r\n\t\t\t\t.filter((e) => e.entityId !== arfus.entityId && e.rebornFromEntityId !== arfus.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(e, arfus, attackBonus, 0, boardWithKilledMinion, boardWithKilledMinionHero, gameState);\r\n\t\t\t\t});\r\n\t\t});\r\n\r\n\tconst numberOfTriggersForDeathwhisper = Math.min(entitiesThatWereReborn.length, 1);\r\n\tfor (let i = 0; i < numberOfTriggersForDeathwhisper; i++) {\r\n\t\tboardWithKilledMinion\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.SisterDeathwhisper_BG25_020 ||\r\n\t\t\t\t\te.cardId === CardIds.SisterDeathwhisper_BG25_020_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst multiplier = e.cardId === CardIds.SisterDeathwhisper_BG25_020_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tboardWithKilledMinion,\r\n\t\t\t\t\tboardWithKilledMinionHero,\r\n\t\t\t\t\tmultiplier * 1,\r\n\t\t\t\t\tmultiplier * 3,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t}\r\n};\r\n\r\nexport interface RebornEffectInput {\r\n\treadonly rebornEntity: BoardEntity;\r\n\treadonly boardWithKilledMinion: BoardEntity[];\r\n\treadonly boardWithKilledMinionHero: BgsPlayerEntity;\r\n\treadonly opponentBoard: BoardEntity[];\r\n\treadonly opponentBoardHero: BgsPlayerEntity;\r\n\treadonly gameState: FullGameState;\r\n}\r\n"]}
@@ -1,12 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.onMinionFailedToSpawn = void 0;
4
+ const card_interface_1 = require("../cards/card.interface");
5
+ const _card_mappings_1 = require("../cards/impl/_card-mappings");
4
6
  const utils_1 = require("../utils");
5
7
  const stats_1 = require("./stats");
6
8
  const onMinionFailedToSpawn = (entity, board, hero, gameState) => {
7
9
  if (entity === null || entity === void 0 ? void 0 : entity.onCanceledSummon) {
8
10
  entity.onCanceledSummon();
9
11
  }
12
+ for (const boardEntity of board) {
13
+ const onSpawnFailImp = _card_mappings_1.cardMappings[boardEntity.cardId];
14
+ if ((0, card_interface_1.hasOnSpawnFail)(onSpawnFailImp)) {
15
+ onSpawnFailImp.onSpawnFail(boardEntity, {
16
+ failedSpawn: entity,
17
+ board: board,
18
+ hero: hero,
19
+ gameState: gameState,
20
+ });
21
+ }
22
+ }
10
23
  hero.trinkets
11
24
  .filter((t) => t.cardId === "BG30_MagicItem_438t")
12
25
  .forEach((t) => (0, utils_1.addStatsToBoard)(t, board, hero, 5, 0, gameState));
@@ -1 +1 @@
1
- {"version":3,"file":"spawn-fail.js","sourceRoot":"","sources":["../../src/simulation/spawn-fail.ts"],"names":[],"mappings":";;;AAGA,oCAAiE;AAEjE,mCAAsC;AAE/B,MAAM,qBAAqB,GAAG,CACpC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAAwB,EACvB,EAAE;IACH,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,EAAE;QAC7B,MAAM,CAAC,gBAAgB,EAAE,CAAC;KAC1B;IAED,IAAI,CAAC,QAAQ;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,0BAAkD,CAAC;SACzE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnE,KAAK;SACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAA2C;QACnD,CAAC,CAAC,MAAM,iBAA6C,CACtD;SACA,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,iBAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,CAAC,EAAE,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IACJ,KAAK;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAAqC,IAAI,CAAC,CAAC,MAAM,iBAAuC,CAAC;SAC/G,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,eAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,4BAAoB,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA9BW,QAAA,qBAAqB,yBA8BhC","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { addStatsToAliveBoard, addStatsToBoard } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onMinionFailedToSpawn = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (entity?.onCanceledSummon) {\r\n\t\tentity.onCanceledSummon();\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter((t) => t.cardId === CardIds.MugOfTheSireToken_BG30_MagicItem_438t)\r\n\t\t.forEach((t) => addStatsToBoard(t, board, hero, 5, 0, gameState));\r\n\r\n\tboard\r\n\t\t.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te.cardId === CardIds.ThunderingAbomination_BG30_124 ||\r\n\t\t\t\te.cardId === CardIds.ThunderingAbomination_BG30_124_G,\r\n\t\t)\r\n\t\t.forEach((abom) => {\r\n\t\t\tconst abomStatsMultiplier = abom.cardId === CardIds.ThunderingAbomination_BG30_124_G ? 2 : 1;\r\n\t\t\tmodifyStats(abom, abom, abomStatsMultiplier * 3, abomStatsMultiplier * 3, board, hero, gameState);\r\n\t\t});\r\n\tboard\r\n\t\t.filter((e) => e.cardId === CardIds.CatacombCrasher_BG30_129 || e.cardId === CardIds.CatacombCrasher_BG30_129_G)\r\n\t\t.forEach((crasher) => {\r\n\t\t\tconst mult = crasher.cardId === CardIds.CatacombCrasher_BG30_129 ? 1 : 2;\r\n\t\t\taddStatsToAliveBoard(crasher, board, hero, 2 * mult, 1 * mult, gameState);\r\n\t\t});\r\n};\r\n"]}
1
+ {"version":3,"file":"spawn-fail.js","sourceRoot":"","sources":["../../src/simulation/spawn-fail.ts"],"names":[],"mappings":";;;AAEA,4DAAyD;AACzD,iEAA4D;AAE5D,oCAAiE;AAEjE,mCAAsC;AAE/B,MAAM,qBAAqB,GAAG,CACpC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAAwB,EACvB,EAAE;IACH,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,EAAE;QAC7B,MAAM,CAAC,gBAAgB,EAAE,CAAC;KAC1B;IAED,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;QAChC,MAAM,cAAc,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAA,+BAAc,EAAC,cAAc,CAAC,EAAE;YACnC,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE;gBACvC,WAAW,EAAE,MAAM;gBACnB,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,SAAS;aACpB,CAAC,CAAC;SACH;KACD;IAED,IAAI,CAAC,QAAQ;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,0BAAkD,CAAC;SACzE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;IAEnE,KAAK;SACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAA2C;QACnD,CAAC,CAAC,MAAM,iBAA6C,CACtD;SACA,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACjB,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,iBAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,GAAG,CAAC,EAAE,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACnG,CAAC,CAAC,CAAC;IACJ,KAAK;SACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAAqC,IAAI,CAAC,CAAC,MAAM,iBAAuC,CAAC;SAC/G,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,eAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,4BAAoB,EAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AA1CW,QAAA,qBAAqB,yBA0ChC","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnSpawnFail } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { addStatsToAliveBoard, addStatsToBoard } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onMinionFailedToSpawn = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (entity?.onCanceledSummon) {\r\n\t\tentity.onCanceledSummon();\r\n\t}\r\n\r\n\tfor (const boardEntity of board) {\r\n\t\tconst onSpawnFailImp = cardMappings[boardEntity.cardId];\r\n\t\tif (hasOnSpawnFail(onSpawnFailImp)) {\r\n\t\t\tonSpawnFailImp.onSpawnFail(boardEntity, {\r\n\t\t\t\tfailedSpawn: entity,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter((t) => t.cardId === CardIds.MugOfTheSireToken_BG30_MagicItem_438t)\r\n\t\t.forEach((t) => addStatsToBoard(t, board, hero, 5, 0, gameState));\r\n\r\n\tboard\r\n\t\t.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te.cardId === CardIds.ThunderingAbomination_BG30_124 ||\r\n\t\t\t\te.cardId === CardIds.ThunderingAbomination_BG30_124_G,\r\n\t\t)\r\n\t\t.forEach((abom) => {\r\n\t\t\tconst abomStatsMultiplier = abom.cardId === CardIds.ThunderingAbomination_BG30_124_G ? 2 : 1;\r\n\t\t\tmodifyStats(abom, abom, abomStatsMultiplier * 3, abomStatsMultiplier * 3, board, hero, gameState);\r\n\t\t});\r\n\tboard\r\n\t\t.filter((e) => e.cardId === CardIds.CatacombCrasher_BG30_129 || e.cardId === CardIds.CatacombCrasher_BG30_129_G)\r\n\t\t.forEach((crasher) => {\r\n\t\t\tconst mult = crasher.cardId === CardIds.CatacombCrasher_BG30_129 ? 1 : 2;\r\n\t\t\taddStatsToAliveBoard(crasher, board, hero, 2 * mult, 1 * mult, gameState);\r\n\t\t});\r\n};\r\n"]}
@@ -1,4 +1,4 @@
1
1
  import { BgsPlayerEntity, BoardTrinket } from '../bgs-player-entity';
2
2
  import { BoardEntity } from '../board-entity';
3
3
  import { FullGameState } from './internal-game-state';
4
- export declare const performEntitySpawns: (candidateEntities: readonly BoardEntity[], boardWithKilledMinion: BoardEntity[], boardWithKilledMinionHero: BgsPlayerEntity, spawnSourceEntity: BoardEntity | BgsPlayerEntity | BoardTrinket, spawnSourceEntityIndexFromRight: number, opponentBoard: BoardEntity[], opponentBoardHero: BgsPlayerEntity, gameState: FullGameState, applySelfAuras?: boolean) => readonly BoardEntity[];
4
+ export declare const performEntitySpawns: (candidateEntities: readonly BoardEntity[], boardWithKilledMinion: BoardEntity[], boardWithKilledMinionHero: BgsPlayerEntity, spawnSourceEntity: BoardEntity | BgsPlayerEntity | BoardTrinket, spawnSourceEntityIndexFromRight: number, opponentBoard: BoardEntity[], opponentBoardHero: BgsPlayerEntity, gameState: FullGameState, applySelfAuras?: boolean, forceTarget?: BoardEntity) => readonly BoardEntity[];