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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/dist/bgs-player-entity.d.ts +2 -1
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/board-entity.d.ts +1 -0
  4. package/dist/board-entity.js.map +1 -1
  5. package/dist/cards/card.interface.d.ts +12 -0
  6. package/dist/cards/card.interface.js +3 -0
  7. package/dist/cards/card.interface.js.map +1 -0
  8. package/dist/cards/cards-data.js +16 -3
  9. package/dist/cards/cards-data.js.map +1 -1
  10. package/dist/cards/impl/anomaly/anomalous-twin.d.ts +8 -0
  11. package/dist/cards/impl/anomaly/anomalous-twin.js +24 -0
  12. package/dist/cards/impl/anomaly/anomalous-twin.js.map +1 -0
  13. package/dist/cards/impl/anomaly/blessed-or-blighted.d.ts +5 -0
  14. package/dist/cards/impl/anomaly/blessed-or-blighted.js +16 -0
  15. package/dist/cards/impl/anomaly/blessed-or-blighted.js.map +1 -0
  16. package/dist/cards/impl/hero-power/aim-high.d.ts +5 -0
  17. package/dist/cards/impl/hero-power/aim-high.js +18 -0
  18. package/dist/cards/impl/hero-power/aim-high.js.map +1 -0
  19. package/dist/cards/impl/hero-power/aim-left.d.ts +5 -0
  20. package/dist/cards/impl/hero-power/aim-left.js +16 -0
  21. package/dist/cards/impl/hero-power/aim-left.js.map +1 -0
  22. package/dist/cards/impl/hero-power/aim-low.d.ts +5 -0
  23. package/dist/cards/impl/hero-power/aim-low.js +18 -0
  24. package/dist/cards/impl/hero-power/aim-low.js.map +1 -0
  25. package/dist/cards/impl/hero-power/aim-right.d.ts +5 -0
  26. package/dist/cards/impl/hero-power/aim-right.js +16 -0
  27. package/dist/cards/impl/hero-power/aim-right.js.map +1 -0
  28. package/dist/cards/impl/hero-power/all-will-burn.d.ts +5 -0
  29. package/dist/cards/impl/hero-power/all-will-burn.js +18 -0
  30. package/dist/cards/impl/hero-power/all-will-burn.js.map +1 -0
  31. package/dist/cards/impl/hero-power/earth-invocation.d.ts +5 -0
  32. package/dist/cards/impl/hero-power/earth-invocation.js +13 -0
  33. package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -0
  34. package/dist/cards/impl/hero-power/embrace-your-rage.d.ts +8 -0
  35. package/dist/cards/impl/hero-power/embrace-your-rage.js +26 -0
  36. package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -0
  37. package/dist/cards/impl/hero-power/fire-invocation.d.ts +5 -0
  38. package/dist/cards/impl/hero-power/fire-invocation.js +13 -0
  39. package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -0
  40. package/dist/cards/impl/hero-power/fragrant-phylactery.d.ts +8 -0
  41. package/dist/cards/impl/hero-power/fragrant-phylactery.js +25 -0
  42. package/dist/cards/impl/hero-power/fragrant-phylactery.js.map +1 -0
  43. package/dist/cards/impl/hero-power/glorious-gloop.d.ts +5 -0
  44. package/dist/cards/impl/hero-power/glorious-gloop.js +40 -0
  45. package/dist/cards/impl/hero-power/glorious-gloop.js.map +1 -0
  46. package/dist/cards/impl/hero-power/lightning-invocation.d.ts +5 -0
  47. package/dist/cards/impl/hero-power/lightning-invocation.js +13 -0
  48. package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -0
  49. package/dist/cards/impl/hero-power/rapid-reanimation.d.ts +8 -0
  50. package/dist/cards/impl/hero-power/rapid-reanimation.js +29 -0
  51. package/dist/cards/impl/hero-power/rapid-reanimation.js.map +1 -0
  52. package/dist/cards/impl/hero-power/reborn-rites.d.ts +5 -0
  53. package/dist/cards/impl/hero-power/reborn-rites.js +18 -0
  54. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -0
  55. package/dist/cards/impl/hero-power/swatting-insects.d.ts +5 -0
  56. package/dist/cards/impl/hero-power/swatting-insects.js +21 -0
  57. package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -0
  58. package/dist/cards/impl/hero-power/tentacular.d.ts +8 -0
  59. package/dist/cards/impl/hero-power/tentacular.js +10 -0
  60. package/dist/cards/impl/hero-power/tentacular.js.map +1 -0
  61. package/dist/cards/impl/hero-power/water-invocation.d.ts +5 -0
  62. package/dist/cards/impl/hero-power/water-invocation.js +13 -0
  63. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -0
  64. package/dist/cards/impl/hero-power/wax-warband.d.ts +5 -0
  65. package/dist/cards/impl/hero-power/wax-warband.js +56 -0
  66. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -0
  67. package/dist/cards/impl/minion/amber-guardian.d.ts +5 -0
  68. package/dist/cards/impl/minion/amber-guardian.js +31 -0
  69. package/dist/cards/impl/minion/amber-guardian.js.map +1 -0
  70. package/dist/cards/impl/minion/audacious-anchor.d.ts +5 -0
  71. package/dist/cards/impl/minion/audacious-anchor.js +25 -0
  72. package/dist/cards/impl/minion/audacious-anchor.js.map +1 -0
  73. package/dist/cards/impl/minion/carbonic-copy.d.ts +5 -0
  74. package/dist/cards/impl/minion/carbonic-copy.js +24 -0
  75. package/dist/cards/impl/minion/carbonic-copy.js.map +1 -0
  76. package/dist/cards/impl/minion/choral-mrrrglr.d.ts +5 -0
  77. package/dist/cards/impl/minion/choral-mrrrglr.js +14 -0
  78. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -0
  79. package/dist/cards/impl/minion/corrupted-myrmidon.d.ts +5 -0
  80. package/dist/cards/impl/minion/corrupted-myrmidon.js +13 -0
  81. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -0
  82. package/dist/cards/impl/minion/crabby.d.ts +5 -0
  83. package/dist/cards/impl/minion/crabby.js +18 -0
  84. package/dist/cards/impl/minion/crabby.js.map +1 -0
  85. package/dist/cards/impl/minion/diremuck-forager.d.ts +5 -0
  86. package/dist/cards/impl/minion/diremuck-forager.js +32 -0
  87. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -0
  88. package/dist/cards/impl/minion/elder-taggawag.d.ts +5 -0
  89. package/dist/cards/impl/minion/elder-taggawag.js +19 -0
  90. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -0
  91. package/dist/cards/impl/minion/hawkstrider-herald.d.ts +5 -0
  92. package/dist/cards/impl/minion/hawkstrider-herald.js +27 -0
  93. package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -0
  94. package/dist/cards/impl/minion/hoarding-hatespawn.d.ts +5 -0
  95. package/dist/cards/impl/minion/hoarding-hatespawn.js +22 -0
  96. package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -0
  97. package/dist/cards/impl/minion/humming-bird.d.ts +5 -0
  98. package/dist/cards/impl/minion/humming-bird.js +15 -0
  99. package/dist/cards/impl/minion/humming-bird.js.map +1 -0
  100. package/dist/cards/impl/minion/interrogator-whitemane.d.ts +5 -0
  101. package/dist/cards/impl/minion/interrogator-whitemane.js +33 -0
  102. package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -0
  103. package/dist/cards/impl/minion/irate-rooster.d.ts +5 -0
  104. package/dist/cards/impl/minion/irate-rooster.js +20 -0
  105. package/dist/cards/impl/minion/irate-rooster.js.map +1 -0
  106. package/dist/cards/impl/minion/mantid-queen.d.ts +5 -0
  107. package/dist/cards/impl/minion/mantid-queen.js +52 -0
  108. package/dist/cards/impl/minion/mantid-queen.js.map +1 -0
  109. package/dist/cards/impl/minion/misfit-dragonling.d.ts +5 -0
  110. package/dist/cards/impl/minion/misfit-dragonling.js +15 -0
  111. package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -0
  112. package/dist/cards/impl/minion/piloted-whirl-o-tron.d.ts +5 -0
  113. package/dist/cards/impl/minion/piloted-whirl-o-tron.js +13 -0
  114. package/dist/cards/impl/minion/piloted-whirl-o-tron.js.map +1 -0
  115. package/dist/cards/impl/minion/prized-promo-drake.d.ts +5 -0
  116. package/dist/cards/impl/minion/prized-promo-drake.js +22 -0
  117. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -0
  118. package/dist/cards/impl/minion/red-whelp.d.ts +5 -0
  119. package/dist/cards/impl/minion/red-whelp.js +17 -0
  120. package/dist/cards/impl/minion/red-whelp.js.map +1 -0
  121. package/dist/cards/impl/minion/sanctum-rester.d.ts +5 -0
  122. package/dist/cards/impl/minion/sanctum-rester.js +20 -0
  123. package/dist/cards/impl/minion/sanctum-rester.js.map +1 -0
  124. package/dist/cards/impl/minion/sandy.d.ts +5 -0
  125. package/dist/cards/impl/minion/sandy.js +23 -0
  126. package/dist/cards/impl/minion/sandy.js.map +1 -0
  127. package/dist/cards/impl/minion/sky-pirate-flagbearer.d.ts +5 -0
  128. package/dist/cards/impl/minion/sky-pirate-flagbearer.js +24 -0
  129. package/dist/cards/impl/minion/sky-pirate-flagbearer.js.map +1 -0
  130. package/dist/cards/impl/minion/soulsplitter.d.ts +5 -0
  131. package/dist/cards/impl/minion/soulsplitter.js +23 -0
  132. package/dist/cards/impl/minion/soulsplitter.js.map +1 -0
  133. package/dist/cards/impl/minion/sun-screener.d.ts +5 -0
  134. package/dist/cards/impl/minion/sun-screener.js +15 -0
  135. package/dist/cards/impl/minion/sun-screener.js.map +1 -0
  136. package/dist/cards/impl/minion/the-uninvited-guest.d.ts +5 -0
  137. package/dist/cards/impl/minion/the-uninvited-guest.js +24 -0
  138. package/dist/cards/impl/minion/the-uninvited-guest.js.map +1 -0
  139. package/dist/cards/impl/minion/thousandth-paper-drake.d.ts +5 -0
  140. package/dist/cards/impl/minion/thousandth-paper-drake.js +24 -0
  141. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -0
  142. package/dist/cards/impl/minion/vaelastrasz.d.ts +5 -0
  143. package/dist/cards/impl/minion/vaelastrasz.js +17 -0
  144. package/dist/cards/impl/minion/vaelastrasz.js.map +1 -0
  145. package/dist/cards/impl/minion/yulon-fortune-granter.d.ts +5 -0
  146. package/dist/cards/impl/minion/yulon-fortune-granter.js +26 -0
  147. package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -0
  148. package/dist/cards/impl/quest-reward/evil-twin.d.ts +5 -0
  149. package/dist/cards/impl/quest-reward/evil-twin.js +32 -0
  150. package/dist/cards/impl/quest-reward/evil-twin.js.map +1 -0
  151. package/dist/cards/impl/quest-reward/staff-of-origination.d.ts +5 -0
  152. package/dist/cards/impl/quest-reward/staff-of-origination.js +14 -0
  153. package/dist/cards/impl/quest-reward/staff-of-origination.js.map +1 -0
  154. package/dist/cards/impl/quest-reward/stolen-gold.d.ts +5 -0
  155. package/dist/cards/impl/quest-reward/stolen-gold.js +16 -0
  156. package/dist/cards/impl/quest-reward/stolen-gold.js.map +1 -0
  157. package/dist/cards/impl/trinket/artisanal-urn.d.ts +5 -0
  158. package/dist/cards/impl/trinket/artisanal-urn.js +13 -0
  159. package/dist/cards/impl/trinket/artisanal-urn.js.map +1 -0
  160. package/dist/cards/impl/trinket/automaton-portrait.d.ts +5 -0
  161. package/dist/cards/impl/trinket/automaton-portrait.js +15 -0
  162. package/dist/cards/impl/trinket/automaton-portrait.js.map +1 -0
  163. package/dist/cards/impl/trinket/bronze-timepiece.d.ts +5 -0
  164. package/dist/cards/impl/trinket/bronze-timepiece.js +17 -0
  165. package/dist/cards/impl/trinket/bronze-timepiece.js.map +1 -0
  166. package/dist/cards/impl/trinket/emerald-dreamcatcher.d.ts +5 -0
  167. package/dist/cards/impl/trinket/emerald-dreamcatcher.js +18 -0
  168. package/dist/cards/impl/trinket/emerald-dreamcatcher.js.map +1 -0
  169. package/dist/cards/impl/trinket/eternal-portrait.d.ts +5 -0
  170. package/dist/cards/impl/trinket/eternal-portrait.js +19 -0
  171. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -0
  172. package/dist/cards/impl/trinket/fishy-sticker.d.ts +5 -0
  173. package/dist/cards/impl/trinket/fishy-sticker.js +28 -0
  174. package/dist/cards/impl/trinket/fishy-sticker.js.map +1 -0
  175. package/dist/cards/impl/trinket/hoggy-bank.d.ts +5 -0
  176. package/dist/cards/impl/trinket/hoggy-bank.js +23 -0
  177. package/dist/cards/impl/trinket/hoggy-bank.js.map +1 -0
  178. package/dist/cards/impl/trinket/holly-mallet.d.ts +5 -0
  179. package/dist/cards/impl/trinket/holly-mallet.js +18 -0
  180. package/dist/cards/impl/trinket/holly-mallet.js.map +1 -0
  181. package/dist/cards/impl/trinket/ironforge-anvil.d.ts +5 -0
  182. package/dist/cards/impl/trinket/ironforge-anvil.js +23 -0
  183. package/dist/cards/impl/trinket/ironforge-anvil.js.map +1 -0
  184. package/dist/cards/impl/trinket/jarred-frostling.d.ts +5 -0
  185. package/dist/cards/impl/trinket/jarred-frostling.js +27 -0
  186. package/dist/cards/impl/trinket/jarred-frostling.js.map +1 -0
  187. package/dist/cards/impl/trinket/karazhan-chess-set.d.ts +5 -0
  188. package/dist/cards/impl/trinket/karazhan-chess-set.js +40 -0
  189. package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -0
  190. package/dist/cards/impl/trinket/rivendare-portrait.d.ts +5 -0
  191. package/dist/cards/impl/trinket/rivendare-portrait.js +21 -0
  192. package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -0
  193. package/dist/cards/impl/trinket/rusty-trident.d.ts +5 -0
  194. package/dist/cards/impl/trinket/rusty-trident.js +23 -0
  195. package/dist/cards/impl/trinket/rusty-trident.js.map +1 -0
  196. package/dist/cards/impl/trinket/ship-in-a-bottle.d.ts +5 -0
  197. package/dist/cards/impl/trinket/ship-in-a-bottle.js +20 -0
  198. package/dist/cards/impl/trinket/ship-in-a-bottle.js.map +1 -0
  199. package/dist/cards/impl/trinket/summoning-sphere.d.ts +5 -0
  200. package/dist/cards/impl/trinket/summoning-sphere.js +31 -0
  201. package/dist/cards/impl/trinket/summoning-sphere.js.map +1 -0
  202. package/dist/cards/impl/trinket/tinyfin-onesie.d.ts +5 -0
  203. package/dist/cards/impl/trinket/tinyfin-onesie.js +15 -0
  204. package/dist/cards/impl/trinket/tinyfin-onesie.js.map +1 -0
  205. package/dist/cards/impl/trinket/training-certificate.d.ts +5 -0
  206. package/dist/cards/impl/trinket/training-certificate.js +21 -0
  207. package/dist/cards/impl/trinket/training-certificate.js.map +1 -0
  208. package/dist/cards/impl/trinket/valorous-medaillion.d.ts +5 -0
  209. package/dist/cards/impl/trinket/valorous-medaillion.js +12 -0
  210. package/dist/cards/impl/trinket/valorous-medaillion.js.map +1 -0
  211. package/dist/services/utils.d.ts +1 -0
  212. package/dist/services/utils.js +13 -1
  213. package/dist/services/utils.js.map +1 -1
  214. package/dist/simulation/add-minion-to-board.js +18 -23
  215. package/dist/simulation/add-minion-to-board.js.map +1 -1
  216. package/dist/simulation/attack.js +14 -4
  217. package/dist/simulation/attack.js.map +1 -1
  218. package/dist/simulation/auras.js +0 -2
  219. package/dist/simulation/auras.js.map +1 -1
  220. package/dist/simulation/avenge.js +24 -4
  221. package/dist/simulation/avenge.js.map +1 -1
  222. package/dist/simulation/battlecries.js +21 -5
  223. package/dist/simulation/battlecries.js.map +1 -1
  224. package/dist/simulation/blood-gems.js +8 -0
  225. package/dist/simulation/blood-gems.js.map +1 -1
  226. package/dist/simulation/deathrattle-effects.js +7 -1
  227. package/dist/simulation/deathrattle-effects.js.map +1 -1
  228. package/dist/simulation/deathrattle-on-trigger.js +5 -0
  229. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  230. package/dist/simulation/discover.d.ts +4 -0
  231. package/dist/simulation/discover.js +32 -0
  232. package/dist/simulation/discover.js.map +1 -0
  233. package/dist/simulation/magnetize.js +2 -1
  234. package/dist/simulation/magnetize.js.map +1 -1
  235. package/dist/simulation/minion-death.d.ts +1 -1
  236. package/dist/simulation/minion-death.js +8 -8
  237. package/dist/simulation/minion-death.js.map +1 -1
  238. package/dist/simulation/remove-minion-from-board.js +0 -10
  239. package/dist/simulation/remove-minion-from-board.js.map +1 -1
  240. package/dist/simulation/simulator.js +1 -1
  241. package/dist/simulation/simulator.js.map +1 -1
  242. package/dist/simulation/start-of-combat/phases.d.ts +1 -0
  243. package/dist/simulation/start-of-combat/phases.js +3 -0
  244. package/dist/simulation/start-of-combat/phases.js.map +1 -0
  245. package/dist/simulation/start-of-combat/soc-action-processor.d.ts +4 -0
  246. package/dist/simulation/start-of-combat/soc-action-processor.js +286 -0
  247. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -0
  248. package/dist/simulation/start-of-combat/soc-anomalies.d.ts +4 -0
  249. package/dist/simulation/start-of-combat/soc-anomalies.js +39 -0
  250. package/dist/simulation/start-of-combat/soc-anomalies.js.map +1 -0
  251. package/dist/simulation/start-of-combat/soc-hero-power.d.ts +5 -0
  252. package/dist/simulation/start-of-combat/soc-hero-power.js +77 -0
  253. package/dist/simulation/start-of-combat/soc-hero-power.js.map +1 -0
  254. package/dist/simulation/start-of-combat/soc-illidan-hero-power.d.ts +4 -0
  255. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js +55 -0
  256. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js.map +1 -0
  257. package/dist/simulation/start-of-combat/soc-minion.d.ts +6 -0
  258. package/dist/simulation/start-of-combat/soc-minion.js +68 -0
  259. package/dist/simulation/start-of-combat/soc-minion.js.map +1 -0
  260. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.d.ts +4 -0
  261. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js +72 -0
  262. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js.map +1 -0
  263. package/dist/simulation/start-of-combat/soc-quest-reward.d.ts +4 -0
  264. package/dist/simulation/start-of-combat/soc-quest-reward.js +60 -0
  265. package/dist/simulation/start-of-combat/soc-quest-reward.js.map +1 -0
  266. package/dist/simulation/start-of-combat/soc-secret.d.ts +4 -0
  267. package/dist/simulation/start-of-combat/soc-secret.js +54 -0
  268. package/dist/simulation/start-of-combat/soc-secret.js.map +1 -0
  269. package/dist/simulation/start-of-combat/soc-trinket.d.ts +4 -0
  270. package/dist/simulation/start-of-combat/soc-trinket.js +60 -0
  271. package/dist/simulation/start-of-combat/soc-trinket.js.map +1 -0
  272. package/dist/simulation/start-of-combat/start-of-combat-input.d.ts +14 -0
  273. package/dist/simulation/start-of-combat/start-of-combat-input.js +3 -0
  274. package/dist/simulation/start-of-combat/start-of-combat-input.js.map +1 -0
  275. package/dist/simulation/start-of-combat/start-of-combat.d.ts +4 -0
  276. package/dist/simulation/start-of-combat/start-of-combat.js +68 -0
  277. package/dist/simulation/start-of-combat/start-of-combat.js.map +1 -0
  278. package/dist/simulation/summon-when-space.js +5 -1
  279. package/dist/simulation/summon-when-space.js.map +1 -1
  280. package/dist/temp-card-ids.d.ts +2 -0
  281. package/dist/temp-card-ids.js +3 -0
  282. package/dist/temp-card-ids.js.map +1 -0
  283. package/package.json +3 -3
  284. package/dist/simulation/start-of-combat.d.ts +0 -8
  285. package/dist/simulation/start-of-combat.js +0 -1167
  286. package/dist/simulation/start-of-combat.js.map +0 -1
@@ -44,10 +44,11 @@ export interface BgsPlayerGlobalInfo {
44
44
  GoldrinnBuffHealth?: number;
45
45
  TavernSpellsCastThisGame?: number;
46
46
  PiratesPlayedThisGame?: number;
47
+ PiratesSummonedThisGame?: number;
48
+ PirateAttackBonus?: number;
47
49
  AstralAutomatonsSummonedThisGame?: number;
48
50
  ChoralAttackBuff?: number;
49
51
  ChoralHealthBuff?: number;
50
- PirateAttackBonus?: number;
51
52
  }
52
53
  export interface BgsQuestEntity {
53
54
  CardId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\treadonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\r\n\theroPowerId?: string | undefined | null;\r\n\treadonly heroPowerEntityId?: number;\r\n\treadonly heroPowerUsed: boolean;\r\n\treadonly heroPowerInfo?: number | string;\r\n\theroPowerInfo2?: number;\r\n\t// For Ozumat\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n\tPirateAttackBonus?: number;\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum6?: number;\r\n\trememberedMinion?: BoardEntity;\r\n\tavengeDefault?: number;\r\n\tavengeCurrent?: number;\r\n}\r\n"]}
1
+ {"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\treadonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\r\n\theroPowerId?: string | undefined | null;\r\n\treadonly heroPowerEntityId?: number;\r\n\treadonly heroPowerUsed: boolean;\r\n\treadonly heroPowerInfo?: number | string;\r\n\theroPowerInfo2?: number;\r\n\t// For Ozumat\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tPiratesSummonedThisGame?: number;\r\n\tPirateAttackBonus?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum6?: number;\r\n\trememberedMinion?: BoardEntity;\r\n\tavengeDefault?: number;\r\n\tavengeCurrent?: number;\r\n}\r\n"]}
@@ -49,6 +49,7 @@ export interface BoardEntity {
49
49
  attacking?: boolean;
50
50
  hadDivineShield?: boolean;
51
51
  abiityChargesLeft?: number;
52
+ indexFromLeftAtTimeOfDeath?: number;
52
53
  tavernTier?: number;
53
54
  onCanceledSummon?: () => void;
54
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"board-entity.js","sourceRoot":"","sources":["../src/board-entity.ts"],"names":[],"mappings":"","sourcesContent":["export interface BoardEntity {\r\n\tentityId: number;\r\n\tcardId: string;\r\n\tattack: number;\r\n\thealth: number;\r\n\r\n\tmaxHealth?: number;\r\n\tmaxAttack?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tfrenzyChargesLeft?: number;\r\n\tdefinitelyDead?: boolean;\r\n\ttaunt?: boolean;\r\n\tdivineShield?: boolean;\r\n\tpoisonous?: boolean;\r\n\tvenomous?: boolean;\r\n\treborn?: boolean;\r\n\trebornFromEntityId?: number;\r\n\tcleave?: boolean;\r\n\twindfury?: boolean;\r\n\tstealth?: boolean;\r\n\tenchantments?: {\r\n\t\tcardId: string;\r\n\t\toriginEntityId?: number;\r\n\t\ttagScriptDataNum1?: number;\r\n\t\ttagScriptDataNum2?: number;\r\n\t\ttiming: number;\r\n\t\trepeats?: number;\r\n\t\tvalue?: number;\r\n\t}[];\r\n\tpendingAttackBuffs?: number[];\r\n\tscriptDataNum1?: number;\r\n\tinInitialState?: boolean;\r\n\t// For Build-An-Undead and Zilliax\r\n\tadditionalCards?: readonly string[] | null;\r\n\r\n\t// We only store the card id, because we want all the attack and other data to be computed at runtime, based on the\r\n\t// current stats of the Fish\r\n\trememberedDeathrattles?: { cardId: string; timing: number; repeats: number }[];\r\n\tdeathrattleRepeats?: number;\r\n\tdamageMultiplier?: number;\r\n\tlocked?: boolean;\r\n\tfriendly?: boolean;\r\n\tcantAttack?: boolean;\r\n\thasAttacked?: number;\r\n\timmuneWhenAttackCharges?: number;\r\n\tattackImmediately?: boolean;\r\n\t// Used only to handle murkeye aura?\r\n\tpreviousAttack?: number;\r\n\tlastAffectedByEntity?: BoardEntity;\r\n\tattacking?: boolean;\r\n\t// Did it have divine shield at least once? (for Sinrunner Blanchy)\r\n\thadDivineShield?: boolean;\r\n\tabiityChargesLeft?: number;\r\n\r\n\t// permanentAttack?: number;\r\n\t// permanentHealth?: number;\r\n\ttavernTier?: number;\r\n\r\n\tonCanceledSummon?: () => void;\r\n}\r\n"]}
1
+ {"version":3,"file":"board-entity.js","sourceRoot":"","sources":["../src/board-entity.ts"],"names":[],"mappings":"","sourcesContent":["export interface BoardEntity {\r\n\tentityId: number;\r\n\tcardId: string;\r\n\tattack: number;\r\n\thealth: number;\r\n\r\n\tmaxHealth?: number;\r\n\tmaxAttack?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tfrenzyChargesLeft?: number;\r\n\tdefinitelyDead?: boolean;\r\n\ttaunt?: boolean;\r\n\tdivineShield?: boolean;\r\n\tpoisonous?: boolean;\r\n\tvenomous?: boolean;\r\n\treborn?: boolean;\r\n\trebornFromEntityId?: number;\r\n\tcleave?: boolean;\r\n\twindfury?: boolean;\r\n\tstealth?: boolean;\r\n\tenchantments?: {\r\n\t\tcardId: string;\r\n\t\toriginEntityId?: number;\r\n\t\ttagScriptDataNum1?: number;\r\n\t\ttagScriptDataNum2?: number;\r\n\t\ttiming: number;\r\n\t\trepeats?: number;\r\n\t\tvalue?: number;\r\n\t}[];\r\n\tpendingAttackBuffs?: number[];\r\n\tscriptDataNum1?: number;\r\n\tinInitialState?: boolean;\r\n\t// For Build-An-Undead and Zilliax\r\n\tadditionalCards?: readonly string[] | null;\r\n\r\n\t// We only store the card id, because we want all the attack and other data to be computed at runtime, based on the\r\n\t// current stats of the Fish\r\n\trememberedDeathrattles?: { cardId: string; timing: number; repeats: number }[];\r\n\tdeathrattleRepeats?: number;\r\n\tdamageMultiplier?: number;\r\n\tlocked?: boolean;\r\n\tfriendly?: boolean;\r\n\tcantAttack?: boolean;\r\n\thasAttacked?: number;\r\n\timmuneWhenAttackCharges?: number;\r\n\tattackImmediately?: boolean;\r\n\t// Used only to handle murkeye aura?\r\n\tpreviousAttack?: number;\r\n\tlastAffectedByEntity?: BoardEntity;\r\n\tattacking?: boolean;\r\n\t// Did it have divine shield at least once? (for Sinrunner Blanchy)\r\n\thadDivineShield?: boolean;\r\n\tabiityChargesLeft?: number;\r\n\tindexFromLeftAtTimeOfDeath?: number;\r\n\r\n\t// permanentAttack?: number;\r\n\t// permanentHealth?: number;\r\n\ttavernTier?: number;\r\n\r\n\tonCanceledSummon?: () => void;\r\n}\r\n"]}
@@ -0,0 +1,12 @@
1
+ import { BoardTrinket } from '../bgs-player-entity';
2
+ import { BoardEntity } from '../board-entity';
3
+ import { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';
4
+ export interface Card {
5
+ startOfCombat?: (trinket: BoardEntity | BoardTrinket, input: SoCInput) => boolean | {
6
+ hasTriggered: boolean;
7
+ shouldRecomputeCurrentAttacker: boolean;
8
+ };
9
+ }
10
+ export interface StartOfCombatCard extends Card {
11
+ startOfCombat: NonNullable<Card['startOfCombat']>;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=card.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"","sourcesContent":["import { BoardTrinket } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport interface Card {\r\n\tstartOfCombat?: (\r\n\t\ttrinket: BoardEntity | BoardTrinket,\r\n\t\tinput: SoCInput,\r\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\nexport interface StartOfCombatCard extends Card {\r\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\r\n}\r\n"]}
@@ -64,9 +64,16 @@ class CardsData {
64
64
  this.scrapScraperSpawns = this.pool
65
65
  .filter((card) => (0, utils_2.hasMechanic)(card, reference_data_1.GameTag[reference_data_1.GameTag.MAGNETIC]))
66
66
  .map((card) => card.id);
67
- this.putricidePool1 = this.pool.filter((card) => card.battlegroundsPutridicePool1).map((card) => card.id);
68
- this.putricidePool2 = this.pool.filter((card) => card.battlegroundsPutridicePool2).map((card) => card.id);
69
- this.putridicePool2ForEternalSummoner = this.pool
67
+ this.putricidePool1 = this.allCards
68
+ .getCards()
69
+ .filter((card) => card.battlegroundsPutridicePool1)
70
+ .map((card) => card.id);
71
+ this.putricidePool2 = this.allCards
72
+ .getCards()
73
+ .filter((card) => card.battlegroundsPutridicePool2)
74
+ .map((card) => card.id);
75
+ this.putridicePool2ForEternalSummoner = this.allCards
76
+ .getCards()
70
77
  .filter((card) => card.battlegroundsPutridicePool2)
71
78
  .filter((card) => !card.battlegroundsPutridiceSummonerExclusion)
72
79
  .map((card) => card.id);
@@ -129,7 +136,11 @@ class CardsData {
129
136
  case "BG27_010":
130
137
  case "BG27_010_G":
131
138
  case "BG30_MagicItem_437":
139
+ case "BG31_802":
140
+ case "BG31_802_G":
132
141
  return 5;
142
+ case "BG30_MagicItem_713":
143
+ return 6;
133
144
  case "BG28_Reward_518":
134
145
  return 7;
135
146
  }
@@ -143,6 +154,8 @@ class CardsData {
143
154
  case "BG30_MagicItem_440":
144
155
  case "BG30_MagicItem_433":
145
156
  case "BG30_MagicItem_433t":
157
+ case "BG30_MagicItem_700":
158
+ case "BG30_MagicItem_918":
146
159
  return 1;
147
160
  case "BG30_MagicItem_546":
148
161
  case "BG30_MagicItem_442":
@@ -1 +1 @@
1
- {"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tAllCardsService,\r\n\tCardIds,\r\n\tCardType,\r\n\tGameTag,\r\n\tisBattlegroundsCard,\r\n\tNON_BUYABLE_MINION_IDS,\r\n\tRace,\r\n\tReferenceCard,\r\n} from '@firestone-hs/reference-data';\r\nimport { groupByFunction, pickRandom } from '../services/utils';\r\nimport { getRaceEnum, hasMechanic, isCorrectTribe } from '../utils';\r\n\r\nexport const WHELP_CARD_IDS = [\r\n\tCardIds.RedWhelp_BGS_019,\r\n\tCardIds.RedWhelp_TB_BaconUps_102,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\n\r\nexport class CardsData {\r\n\tpublic ghastcoilerSpawns: readonly string[];\r\n\t// public shredderSpawns: readonly string[];\r\n\tpublic validDeathrattles: readonly string[];\r\n\tpublic impMamaSpawns: readonly string[];\r\n\tpublic demonSpawns: readonly string[];\r\n\tpublic gentleDjinniSpawns: readonly string[];\r\n\t// public festergutSpawns: readonly string[];\r\n\tpublic kilrekSpawns: readonly string[];\r\n\tpublic battlecryMinions: readonly string[];\r\n\tpublic deathrattleMinions: readonly string[];\r\n\t// public sneedsSpawns: readonly string[];\r\n\t// public treasureChestSpawns: readonly string[];\r\n\tpublic pirateSpawns: readonly string[];\r\n\tpublic beastSpawns: readonly string[];\r\n\tpublic scrapScraperSpawns: readonly string[];\r\n\r\n\tpublic putricidePool1: readonly string[];\r\n\tpublic putricidePool2: readonly string[];\r\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\r\n\r\n\tprivate pool: readonly ReferenceCard[];\r\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\r\n\r\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\r\n\t\tif (init) {\r\n\t\t\tthis.inititialize();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\r\n\t\tconst poolWithoutGolden = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => isBattlegroundsCard(card))\r\n\t\t\t.filter((card) => !NON_BUYABLE_MINION_IDS.includes(card.id as CardIds))\r\n\t\t\t.filter((card) => !!card.techLevel)\r\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((card) => !hasMechanic(card, GameTag[GameTag.BACON_BUDDY]))\r\n\t\t\t.filter((card) => card.set !== 'Vanilla')\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\r\n\t\t\t\t\t? card.techLevel >= 3\r\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\r\n\t\t\t\t\t? card.techLevel <= 4\r\n\t\t\t\t\t: true,\r\n\t\t\t);\r\n\t\tthis.pool = poolWithoutGolden\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\r\n\t\t\t\t\t? this.isGolden(card)\r\n\t\t\t\t\t: !this.isGolden(card),\r\n\t\t\t);\r\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\r\n\t\tthis.ghastcoilerSpawns = this.pool\r\n\t\t\t.filter((card) => card.id !== 'BGS_008')\r\n\t\t\t.filter((card) => hasMechanic(card, 'DEATHRATTLE'))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.validDeathrattles = poolWithoutGolden\r\n\t\t\t.filter((card) => hasMechanic(card, 'DEATHRATTLE'))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\r\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\r\n\t\tthis.gentleDjinniSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\r\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\r\n\t\t\t.map((card) => card.id);\r\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\r\n\t\t// this.festergutSpawns = pool\r\n\t\t// \t.filter((card) => !this.isGolden(card))\r\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\r\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\r\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\r\n\t\t// \t.map((card) => card.id);\r\n\t\tthis.kilrekSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\r\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, 'BATTLECRY')).map((card) => card.id);\r\n\t\tthis.deathrattleMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag[GameTag.DEATHRATTLE]))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\r\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\r\n\t\tthis.scrapScraperSpawns = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag[GameTag.MAGNETIC]))\r\n\t\t\t.map((card) => card.id);\r\n\r\n\t\tthis.putricidePool1 = this.pool.filter((card) => card.battlegroundsPutridicePool1).map((card) => card.id);\r\n\t\tthis.putricidePool2 = this.pool.filter((card) => card.battlegroundsPutridicePool2).map((card) => card.id);\r\n\t\tthis.putridicePool2ForEternalSummoner = this.pool\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\r\n\t\t\t.map((card) => card.id);\r\n\t}\r\n\r\n\tpublic avengeValue(cardId: string): number {\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.BirdBuddy_BG21_002:\r\n\t\t\tcase CardIds.BirdBuddy_BG21_002_G:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t// Not technically an avenge, but behaves as if\r\n\t\t\t// case CardIds.ShadowyConstruct_BG25_HERO_103_Buddy:\r\n\t\t\t// case CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G:\r\n\t\t\tcase CardIds.IceSickle:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.GhoulOfTheFeast_BG25_002:\r\n\t\t\tcase CardIds.GhoulOfTheFeast_BG25_002_G:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\tcase CardIds.VanndarStormpike_LeadTheStormpikes:\r\n\t\t\tcase CardIds.Drekthar_LeadTheFrostwolves:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030:\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030_G:\r\n\t\t\t// case CardIds.FrostwolfLieutenant:\r\n\t\t\t// case CardIds.FrostwolfLieutenantBattlegrounds:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038_G:\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tcase CardIds.ChampionOfThePrimus_BG27_029:\r\n\t\t\tcase CardIds.ChampionOfThePrimus_BG27_029_G:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\tcase CardIds.GilneanThornedRose_BG30_MagicItem_864:\r\n\t\t\tcase CardIds.FridgeMagnet_BG30_MagicItem_545:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\tcase CardIds.Sisefin_BG21_009:\r\n\t\t\tcase CardIds.Sisefin_BG21_009_G:\r\n\t\t\tcase CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\tcase CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\tcase CardIds.QuilligraphySet_QuilligraphySetToken_BG30_MagicItem_410t2:\r\n\t\t\tcase CardIds.QuilligraphySet_BG30_MagicItem_410:\r\n\t\t\t\treturn 4;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\t\treturn 5;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\treturn 7;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tpublic defaultScriptDataNum(cardId: string): number {\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\r\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\r\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\treturn 4;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getTavernLevel(cardId: string): number {\r\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\r\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\r\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\r\n\t\t// level seems to work in all cases\r\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(this.minionsForTier[tavernTier ?? 1])?.id;\r\n\t}\r\n\r\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\r\n\t\tconst magneticMechs = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag[GameTag.MODULAR]));\r\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTribe(tribe: Race, tavernLimitUpper: number): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic isGolden(card: ReferenceCard): boolean {\r\n\t\treturn card.premium || !!card.battlegroundsNormalDbfId;\r\n\t}\r\n\r\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\r\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn (cardRaces ?? [])\r\n\t\t\t.map((race) => getRaceEnum(race))\r\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tAllCardsService,\r\n\tCardIds,\r\n\tCardType,\r\n\tGameTag,\r\n\tisBattlegroundsCard,\r\n\tNON_BUYABLE_MINION_IDS,\r\n\tRace,\r\n\tReferenceCard,\r\n} from '@firestone-hs/reference-data';\r\nimport { groupByFunction, pickRandom } from '../services/utils';\r\nimport { getRaceEnum, hasMechanic, isCorrectTribe } from '../utils';\r\n\r\nexport const WHELP_CARD_IDS = [\r\n\tCardIds.RedWhelp_BGS_019,\r\n\tCardIds.RedWhelp_TB_BaconUps_102,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\n\r\nexport class CardsData {\r\n\tpublic ghastcoilerSpawns: readonly string[];\r\n\t// public shredderSpawns: readonly string[];\r\n\tpublic validDeathrattles: readonly string[];\r\n\tpublic impMamaSpawns: readonly string[];\r\n\tpublic demonSpawns: readonly string[];\r\n\tpublic gentleDjinniSpawns: readonly string[];\r\n\t// public festergutSpawns: readonly string[];\r\n\tpublic kilrekSpawns: readonly string[];\r\n\tpublic battlecryMinions: readonly string[];\r\n\tpublic deathrattleMinions: readonly string[];\r\n\t// public sneedsSpawns: readonly string[];\r\n\t// public treasureChestSpawns: readonly string[];\r\n\tpublic pirateSpawns: readonly string[];\r\n\tpublic beastSpawns: readonly string[];\r\n\tpublic scrapScraperSpawns: readonly string[];\r\n\r\n\tpublic putricidePool1: readonly string[];\r\n\tpublic putricidePool2: readonly string[];\r\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\r\n\r\n\tprivate pool: readonly ReferenceCard[];\r\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\r\n\r\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\r\n\t\tif (init) {\r\n\t\t\tthis.inititialize();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\r\n\t\tconst poolWithoutGolden = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => isBattlegroundsCard(card))\r\n\t\t\t.filter((card) => !NON_BUYABLE_MINION_IDS.includes(card.id as CardIds))\r\n\t\t\t.filter((card) => !!card.techLevel)\r\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((card) => !hasMechanic(card, GameTag[GameTag.BACON_BUDDY]))\r\n\t\t\t.filter((card) => card.set !== 'Vanilla')\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\r\n\t\t\t\t\t? card.techLevel >= 3\r\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\r\n\t\t\t\t\t? card.techLevel <= 4\r\n\t\t\t\t\t: true,\r\n\t\t\t);\r\n\t\tthis.pool = poolWithoutGolden\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\r\n\t\t\t\t\t? this.isGolden(card)\r\n\t\t\t\t\t: !this.isGolden(card),\r\n\t\t\t);\r\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\r\n\t\tthis.ghastcoilerSpawns = this.pool\r\n\t\t\t.filter((card) => card.id !== 'BGS_008')\r\n\t\t\t.filter((card) => hasMechanic(card, 'DEATHRATTLE'))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.validDeathrattles = poolWithoutGolden\r\n\t\t\t.filter((card) => hasMechanic(card, 'DEATHRATTLE'))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\r\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\r\n\t\tthis.gentleDjinniSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\r\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\r\n\t\t\t.map((card) => card.id);\r\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\r\n\t\t// this.festergutSpawns = pool\r\n\t\t// \t.filter((card) => !this.isGolden(card))\r\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\r\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\r\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\r\n\t\t// \t.map((card) => card.id);\r\n\t\tthis.kilrekSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\r\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, 'BATTLECRY')).map((card) => card.id);\r\n\t\tthis.deathrattleMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag[GameTag.DEATHRATTLE]))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\r\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\r\n\t\tthis.scrapScraperSpawns = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag[GameTag.MAGNETIC]))\r\n\t\t\t.map((card) => card.id);\r\n\r\n\t\tthis.putricidePool1 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putricidePool2 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\r\n\t\t\t.map((card) => card.id);\r\n\t}\r\n\r\n\tpublic avengeValue(cardId: string): number {\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.BirdBuddy_BG21_002:\r\n\t\t\tcase CardIds.BirdBuddy_BG21_002_G:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t// Not technically an avenge, but behaves as if\r\n\t\t\t// case CardIds.ShadowyConstruct_BG25_HERO_103_Buddy:\r\n\t\t\t// case CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G:\r\n\t\t\tcase CardIds.IceSickle:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.GhoulOfTheFeast_BG25_002:\r\n\t\t\tcase CardIds.GhoulOfTheFeast_BG25_002_G:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\tcase CardIds.VanndarStormpike_LeadTheStormpikes:\r\n\t\t\tcase CardIds.Drekthar_LeadTheFrostwolves:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030:\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030_G:\r\n\t\t\t// case CardIds.FrostwolfLieutenant:\r\n\t\t\t// case CardIds.FrostwolfLieutenantBattlegrounds:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038_G:\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tcase CardIds.ChampionOfThePrimus_BG27_029:\r\n\t\t\tcase CardIds.ChampionOfThePrimus_BG27_029_G:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\tcase CardIds.GilneanThornedRose_BG30_MagicItem_864:\r\n\t\t\tcase CardIds.FridgeMagnet_BG30_MagicItem_545:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\tcase CardIds.Sisefin_BG21_009:\r\n\t\t\tcase CardIds.Sisefin_BG21_009_G:\r\n\t\t\tcase CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\tcase CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\tcase CardIds.QuilligraphySet_QuilligraphySetToken_BG30_MagicItem_410t2:\r\n\t\t\tcase CardIds.QuilligraphySet_BG30_MagicItem_410:\r\n\t\t\t\treturn 4;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\tcase CardIds.KarmicChameleon_BG31_802:\r\n\t\t\tcase CardIds.KarmicChameleon_BG31_802_G:\r\n\t\t\t\treturn 5;\r\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\r\n\t\t\t\treturn 6;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\treturn 7;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tpublic defaultScriptDataNum(cardId: string): number {\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\r\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\r\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\r\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\r\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\treturn 4;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getTavernLevel(cardId: string): number {\r\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\r\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\r\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\r\n\t\t// level seems to work in all cases\r\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(this.minionsForTier[tavernTier ?? 1])?.id;\r\n\t}\r\n\r\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\r\n\t\tconst magneticMechs = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag[GameTag.MODULAR]));\r\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTribe(tribe: Race, tavernLimitUpper: number): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic isGolden(card: ReferenceCard): boolean {\r\n\t\treturn card.premium || !!card.battlegroundsNormalDbfId;\r\n\t}\r\n\r\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\r\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn (cardRaces ?? [])\r\n\t\t\t.map((race) => getRaceEnum(race))\r\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\r\n\t}\r\n}\r\n"]}
@@ -0,0 +1,8 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AnomalousTwin: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => {
5
+ hasTriggered: boolean;
6
+ shouldRecomputeCurrentAttacker: boolean;
7
+ };
8
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AnomalousTwin = void 0;
4
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
+ const spawns_1 = require("../../../simulation/spawns");
6
+ exports.AnomalousTwin = {
7
+ startOfCombat: (trinket, input) => {
8
+ if (!!input.playerBoard.length && input.playerBoard.length < 7) {
9
+ const highestHealthMinion = [...input.playerBoard].sort((a, b) => b.health - a.health)[0];
10
+ const copy = {
11
+ ...highestHealthMinion,
12
+ lastAffectedByEntity: null,
13
+ };
14
+ const newMinions = (0, deathrattle_spawns_1.spawnEntities)(copy.cardId, 1, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState.allCards, input.gameState.cardsData, input.gameState.sharedState, input.gameState.spectator, highestHealthMinion.friendly, true, false, false, copy);
15
+ const indexFromRight = input.playerBoard.length - (input.playerBoard.indexOf(highestHealthMinion) + 1);
16
+ const spawns = (0, spawns_1.performEntitySpawns)(newMinions, input.playerBoard, input.playerEntity, highestHealthMinion, indexFromRight, input.opponentBoard, input.opponentEntity, input.gameState);
17
+ if (spawns.length > 0) {
18
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, copy, input.playerBoard, null, null);
19
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
20
+ }
21
+ }
22
+ },
23
+ };
24
+ //# sourceMappingURL=anomalous-twin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomalous-twin.js","sourceRoot":"","sources":["../../../../src/cards/impl/anomaly/anomalous-twin.ts"],"names":[],"mappings":";;;AAEA,+EAAuE;AACvE,uDAAiE;AAGpD,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1F,MAAM,IAAI,GAAgB;gBACzB,GAAG,mBAAmB;gBACtB,oBAAoB,EAAE,IAAI;aAC1B,CAAC;YACF,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,mBAAmB,CAAC,QAAQ,EAC5B,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC;YACvG,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,mBAAmB,EACnB,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBAGvG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AnomalousTwin = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (!!input.playerBoard.length && input.playerBoard.length < 7) {\r\n\t\t\tconst highestHealthMinion = [...input.playerBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\tconst copy: BoardEntity = {\r\n\t\t\t\t...highestHealthMinion,\r\n\t\t\t\tlastAffectedByEntity: null,\r\n\t\t\t};\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\thighestHealthMinion.friendly,\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.playerBoard.length - (input.playerBoard.indexOf(highestHealthMinion) + 1);\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\thighestHealthMinion,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tif (spawns.length > 0) {\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(input.playerEntity, copy, input.playerBoard, null, null);\r\n\t\t\t\t// Recompute first attacker\r\n\t\t\t\t// See https://replays.firestoneapp.com/?reviewId=93229c4a-d864-4196-83dd-2fea2a5bf70a&turn=29&action=0\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const BlessedOrBlighted: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlessedOrBlighted = void 0;
4
+ const divine_shield_1 = require("../../../divine-shield");
5
+ exports.BlessedOrBlighted = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerBoard.length > 0) {
8
+ const dsTarget = input.playerBoard[0];
9
+ (0, divine_shield_1.updateDivineShield)(dsTarget, input.playerBoard, input.playerEntity, input.opponentEntity, true, input.gameState);
10
+ const rebornTarget = input.playerBoard[input.playerBoard.length - 1];
11
+ rebornTarget.reborn = true;
12
+ return true;
13
+ }
14
+ },
15
+ };
16
+ //# sourceMappingURL=blessed-or-blighted.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blessed-or-blighted.js","sourceRoot":"","sources":["../../../../src/cards/impl/anomaly/blessed-or-blighted.ts"],"names":[],"mappings":";;;AACA,0DAA4D;AAG/C,QAAA,iBAAiB,GAAG;IAChC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtC,IAAA,kCAAkB,EACjB,QAAQ,EACR,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,KAAK,CAAC,SAAS,CACf,CAAC;YACF,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrE,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;YAC3B,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { updateDivineShield } from '../../../divine-shield';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const BlessedOrBlighted = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerBoard.length > 0) {\r\n\t\t\tconst dsTarget = input.playerBoard[0];\r\n\t\t\tupdateDivineShield(\r\n\t\t\t\tdsTarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\ttrue,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tconst rebornTarget = input.playerBoard[input.playerBoard.length - 1];\r\n\t\t\trebornTarget.reborn = true;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AimHigh: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AimHigh = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const attack_1 = require("../../../simulation/attack");
6
+ exports.AimHigh = {
7
+ startOfCombat: (trinket, input) => {
8
+ var _a;
9
+ if (input.playerEntity.heroPowerUsed) {
10
+ const highestHealthMinion = [...input.opponentBoard].sort((a, b) => b.health - a.health)[0];
11
+ const target = (0, utils_1.pickRandom)(input.opponentBoard.filter((e) => e.health === highestHealthMinion.health));
12
+ const damageDone = (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, null, (_a = input.playerEntity.heroPowerInfo2) !== null && _a !== void 0 ? _a : 0, input.playerBoard, input.playerEntity, input.gameState);
13
+ input.playerEntity.deadEyeDamageDone = damageDone;
14
+ return true;
15
+ }
16
+ },
17
+ };
18
+ //# sourceMappingURL=aim-high.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aim-high.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/aim-high.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,uDAAgE;AAGnD,QAAA,OAAO,GAAG;IACtB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,mBAAmB,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;YACtG,MAAM,UAAU,GAAG,IAAA,2BAAkB,EACpC,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,MAAA,KAAK,CAAC,YAAY,CAAC,cAAc,mCAAI,CAAC,EACtC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;YAClD,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AimHigh = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst highestHealthMinion = [...input.opponentBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\tconst target = pickRandom(input.opponentBoard.filter((e) => e.health === highestHealthMinion.health));\r\n\t\t\tconst damageDone = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tnull,\r\n\t\t\t\tinput.playerEntity.heroPowerInfo2 ?? 0,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\t// processMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\t\tinput.playerEntity.deadEyeDamageDone = damageDone;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AimLeft: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AimLeft = void 0;
4
+ const attack_1 = require("../../../simulation/attack");
5
+ exports.AimLeft = {
6
+ startOfCombat: (trinket, input) => {
7
+ var _a;
8
+ if (input.playerEntity.heroPowerUsed) {
9
+ const target = input.opponentBoard[0];
10
+ const damageDone = (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, null, (_a = input.playerEntity.heroPowerInfo2) !== null && _a !== void 0 ? _a : 0, input.playerBoard, input.playerEntity, input.gameState);
11
+ input.playerEntity.deadEyeDamageDone = damageDone;
12
+ return true;
13
+ }
14
+ },
15
+ };
16
+ //# sourceMappingURL=aim-left.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aim-left.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/aim-left.ts"],"names":[],"mappings":";;;AACA,uDAAgE;AAGnD,QAAA,OAAO,GAAG;IACtB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,IAAA,2BAAkB,EACpC,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,MAAA,KAAK,CAAC,YAAY,CAAC,cAAc,mCAAI,CAAC,EACtC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;YAClD,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AimLeft = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst target = input.opponentBoard[0];\r\n\t\t\tconst damageDone = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tnull,\r\n\t\t\t\tinput.playerEntity.heroPowerInfo2 ?? 0,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.playerEntity.deadEyeDamageDone = damageDone;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AimLow: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AimLow = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const attack_1 = require("../../../simulation/attack");
6
+ exports.AimLow = {
7
+ startOfCombat: (trinket, input) => {
8
+ var _a;
9
+ if (input.playerEntity.heroPowerUsed) {
10
+ const smallestHealthMinion = [...input.opponentBoard].sort((a, b) => a.health - b.health)[0];
11
+ const target = (0, utils_1.pickRandom)(input.opponentBoard.filter((e) => e.health === smallestHealthMinion.health));
12
+ const damageDone = (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, null, (_a = input.playerEntity.heroPowerInfo2) !== null && _a !== void 0 ? _a : 0, input.playerBoard, input.playerEntity, input.gameState);
13
+ input.playerEntity.deadEyeDamageDone = damageDone;
14
+ return true;
15
+ }
16
+ },
17
+ };
18
+ //# sourceMappingURL=aim-low.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aim-low.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/aim-low.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,uDAAgE;AAGnD,QAAA,MAAM,GAAG;IACrB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,oBAAoB,GAAG,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7F,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;YACvG,MAAM,UAAU,GAAG,IAAA,2BAAkB,EACpC,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,MAAA,KAAK,CAAC,YAAY,CAAC,cAAc,mCAAI,CAAC,EACtC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;YAClD,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AimLow = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst smallestHealthMinion = [...input.opponentBoard].sort((a, b) => a.health - b.health)[0];\r\n\t\t\tconst target = pickRandom(input.opponentBoard.filter((e) => e.health === smallestHealthMinion.health));\r\n\t\t\tconst damageDone = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tnull,\r\n\t\t\t\tinput.playerEntity.heroPowerInfo2 ?? 0,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\t// processMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\t\tinput.playerEntity.deadEyeDamageDone = damageDone;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AimRight: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AimRight = void 0;
4
+ const attack_1 = require("../../../simulation/attack");
5
+ exports.AimRight = {
6
+ startOfCombat: (trinket, input) => {
7
+ var _a;
8
+ if (input.playerEntity.heroPowerUsed) {
9
+ const target = input.opponentBoard[input.opponentBoard.length - 1];
10
+ const damageDone = (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, null, (_a = input.playerEntity.heroPowerInfo2) !== null && _a !== void 0 ? _a : 0, input.playerBoard, input.playerEntity, input.gameState);
11
+ input.playerEntity.deadEyeDamageDone = damageDone;
12
+ return true;
13
+ }
14
+ },
15
+ };
16
+ //# sourceMappingURL=aim-right.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aim-right.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/aim-right.ts"],"names":[],"mappings":";;;AACA,uDAAgE;AAGnD,QAAA,QAAQ,GAAG;IACvB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnE,MAAM,UAAU,GAAG,IAAA,2BAAkB,EACpC,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,MAAA,KAAK,CAAC,YAAY,CAAC,cAAc,mCAAI,CAAC,EACtC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;YAClD,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AimRight = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst target = input.opponentBoard[input.opponentBoard.length - 1];\r\n\t\t\tconst damageDone = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tnull,\r\n\t\t\t\tinput.playerEntity.heroPowerInfo2 ?? 0,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.playerEntity.deadEyeDamageDone = damageDone;\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AllWillBurn: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AllWillBurn = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.AllWillBurn = {
6
+ startOfCombat: (trinket, input) => {
7
+ for (const entity of input.playerBoard) {
8
+ (0, stats_1.modifyStats)(entity, 2, 0, input.playerBoard, input.playerEntity, input.gameState);
9
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, entity, input.playerBoard, null, null);
10
+ }
11
+ for (const entity of input.opponentBoard) {
12
+ (0, stats_1.modifyStats)(entity, 2, 0, input.opponentBoard, input.opponentEntity, input.gameState);
13
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, entity, input.opponentBoard, null, null);
14
+ }
15
+ return true;
16
+ },
17
+ };
18
+ //# sourceMappingURL=all-will-burn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-will-burn.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/all-will-burn.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAE3C,QAAA,WAAW,GAAG;IAC1B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YACvC,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SACzG;QACD,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,EAAE;YACzC,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACtF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC3G;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const AllWillBurn = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const entity of input.playerBoard) {\r\n\t\t\tmodifyStats(entity, 2, 0, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(input.playerEntity, entity, input.playerBoard, null, null);\r\n\t\t}\r\n\t\tfor (const entity of input.opponentBoard) {\r\n\t\t\tmodifyStats(entity, 2, 0, input.opponentBoard, input.opponentEntity, input.gameState);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(input.playerEntity, entity, input.opponentBoard, null, null);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const EarthInvocation: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EarthInvocation = void 0;
4
+ const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
+ exports.EarthInvocation = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerEntity.heroPowerUsed) {
8
+ (0, deathrattle_effects_1.applyEarthInvocationEnchantment)(input.playerBoard, null, input.playerEntity, input.gameState);
9
+ return true;
10
+ }
11
+ },
12
+ };
13
+ //# sourceMappingURL=earth-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"earth-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/earth-invocation.ts"],"names":[],"mappings":";;;AACA,iFAA0F;AAG7E,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,IAAA,qDAA+B,EAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { applyEarthInvocationEnchantment } from '../../../simulation/deathrattle-effects';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const EarthInvocation = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tapplyEarthInvocationEnchantment(input.playerBoard, null, input.playerEntity, input.gameState);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,8 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const EmbraceYourRage: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => false | {
5
+ hasTriggered: boolean;
6
+ shouldRecomputeCurrentAttacker: boolean;
7
+ };
8
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmbraceYourRage = void 0;
4
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
+ const spawns_1 = require("../../../simulation/spawns");
7
+ exports.EmbraceYourRage = {
8
+ startOfCombat: (trinket, input) => {
9
+ if (input.playerEntity.heroPowerUsed) {
10
+ const createdCardId = input.playerEntity.heroPowerInfo;
11
+ if (!(createdCardId === null || createdCardId === void 0 ? void 0 : createdCardId.length)) {
12
+ return false;
13
+ }
14
+ const spawns = (0, deathrattle_spawns_1.spawnEntities)(createdCardId, 1, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState.allCards, input.gameState.cardsData, input.gameState.sharedState, input.gameState.spectator, input.playerEntity.friendly, true, false, false);
15
+ const indexFromRight = 0;
16
+ const spawned = (0, spawns_1.performEntitySpawns)(spawns, input.playerBoard, input.playerEntity, input.playerEntity, indexFromRight, input.opponentBoard, input.opponentEntity, input.gameState);
17
+ if (spawned === null || spawned === void 0 ? void 0 : spawned.length) {
18
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, spawns[0], input.playerBoard, input.playerEntity, input.opponentEntity);
19
+ (0, cards_in_hand_1.addCardsInHand)(input.playerEntity, input.playerBoard, spawns, input.gameState);
20
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, spawns[0], input.playerBoard, input.playerEntity, input.opponentEntity);
21
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
22
+ }
23
+ }
24
+ },
25
+ };
26
+ //# sourceMappingURL=embrace-your-rage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embrace-your-rage.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/embrace-your-rage.ts"],"names":[],"mappings":";;;AACA,qEAAmE;AACnE,+EAAuE;AACvE,uDAAiE;AAGpD,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,aAAuB,CAAC;YACjE,IAAI,CAAC,CAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,MAAM,CAAA,EAAE;gBAC3B,OAAO,KAAK,CAAC;aACb;YAED,MAAM,MAAM,GAAG,IAAA,kCAAa,EAC3B,aAAa,EACb,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,YAAY,CAAC,QAAQ,EAC3B,IAAI,EACJ,KAAK,EACL,KAAK,CACL,CAAC;YACF,MAAM,cAAc,GAAG,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,IAAA,4BAAmB,EAClC,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,EAClB,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE;gBACpB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,IAAA,8BAAc,EAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC/E,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;aACpE;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const EmbraceYourRage = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst createdCardId = input.playerEntity.heroPowerInfo as string;\r\n\t\t\tif (!createdCardId?.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst spawns = spawnEntities(\r\n\t\t\t\tcreatedCardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.playerEntity.friendly,\r\n\t\t\t\ttrue,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = 0;\r\n\t\t\tconst spawned = performEntitySpawns(\r\n\t\t\t\tspawns,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tif (spawned?.length) {\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tspawns[0],\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(input.playerEntity, input.playerBoard, spawns, input.gameState);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tspawns[0],\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t);\r\n\t\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const FireInvocation: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FireInvocation = void 0;
4
+ const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
+ exports.FireInvocation = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerEntity.heroPowerUsed) {
8
+ (0, deathrattle_effects_1.applyFireInvocationEnchantment)(input.playerBoard, input.playerEntity, null, input.playerEntity, input.gameState);
9
+ return true;
10
+ }
11
+ },
12
+ };
13
+ //# sourceMappingURL=fire-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fire-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/fire-invocation.ts"],"names":[],"mappings":";;;AACA,iFAAyF;AAG5E,QAAA,cAAc,GAAG;IAC7B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,IAAA,oDAA8B,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,IAAI,EACJ,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { applyFireInvocationEnchantment } from '../../../simulation/deathrattle-effects';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const FireInvocation = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tapplyFireInvocationEnchantment(\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tnull,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,8 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const FragrantPhylactery: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => false | {
5
+ hasTriggered: boolean;
6
+ shouldRecomputeCurrentAttacker: boolean;
7
+ };
8
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FragrantPhylactery = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const stats_1 = require("../../../simulation/stats");
6
+ exports.FragrantPhylactery = {
7
+ startOfCombat: (trinket, input) => {
8
+ if (input.playerEntity.heroPowerUsed) {
9
+ const chosenEntity = (0, utils_1.pickRandomLowestHealth)(input.playerBoard);
10
+ if (!chosenEntity) {
11
+ console.warn('could not pick any entity for tamsin');
12
+ return false;
13
+ }
14
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, chosenEntity, input.playerBoard, null, null);
15
+ const newBoard = input.playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);
16
+ chosenEntity.definitelyDead = true;
17
+ newBoard.forEach((e) => {
18
+ (0, stats_1.modifyStats)(e, chosenEntity.attack, chosenEntity.health, newBoard, input.playerEntity, input.gameState);
19
+ input.gameState.spectator.registerPowerTarget(chosenEntity, e, newBoard, input.playerEntity, input.opponentEntity);
20
+ });
21
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
22
+ }
23
+ },
24
+ };
25
+ //# sourceMappingURL=fragrant-phylactery.js.map