@firestone-hs/simulate-bgs-battle 1.1.487 → 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 (273) 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/cards/card.interface.d.ts +12 -0
  4. package/dist/cards/card.interface.js +3 -0
  5. package/dist/cards/card.interface.js.map +1 -0
  6. package/dist/cards/cards-data.js +6 -0
  7. package/dist/cards/cards-data.js.map +1 -1
  8. package/dist/cards/impl/anomaly/anomalous-twin.d.ts +8 -0
  9. package/dist/cards/impl/anomaly/anomalous-twin.js +24 -0
  10. package/dist/cards/impl/anomaly/anomalous-twin.js.map +1 -0
  11. package/dist/cards/impl/anomaly/blessed-or-blighted.d.ts +5 -0
  12. package/dist/cards/impl/anomaly/blessed-or-blighted.js +16 -0
  13. package/dist/cards/impl/anomaly/blessed-or-blighted.js.map +1 -0
  14. package/dist/cards/impl/hero-power/aim-high.d.ts +5 -0
  15. package/dist/cards/impl/hero-power/aim-high.js +18 -0
  16. package/dist/cards/impl/hero-power/aim-high.js.map +1 -0
  17. package/dist/cards/impl/hero-power/aim-left.d.ts +5 -0
  18. package/dist/cards/impl/hero-power/aim-left.js +16 -0
  19. package/dist/cards/impl/hero-power/aim-left.js.map +1 -0
  20. package/dist/cards/impl/hero-power/aim-low.d.ts +5 -0
  21. package/dist/cards/impl/hero-power/aim-low.js +18 -0
  22. package/dist/cards/impl/hero-power/aim-low.js.map +1 -0
  23. package/dist/cards/impl/hero-power/aim-right.d.ts +5 -0
  24. package/dist/cards/impl/hero-power/aim-right.js +16 -0
  25. package/dist/cards/impl/hero-power/aim-right.js.map +1 -0
  26. package/dist/cards/impl/hero-power/all-will-burn.d.ts +5 -0
  27. package/dist/cards/impl/hero-power/all-will-burn.js +18 -0
  28. package/dist/cards/impl/hero-power/all-will-burn.js.map +1 -0
  29. package/dist/cards/impl/hero-power/earth-invocation.d.ts +5 -0
  30. package/dist/cards/impl/hero-power/earth-invocation.js +13 -0
  31. package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -0
  32. package/dist/cards/impl/hero-power/embrace-your-rage.d.ts +8 -0
  33. package/dist/cards/impl/hero-power/embrace-your-rage.js +26 -0
  34. package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -0
  35. package/dist/cards/impl/hero-power/fire-invocation.d.ts +5 -0
  36. package/dist/cards/impl/hero-power/fire-invocation.js +13 -0
  37. package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -0
  38. package/dist/cards/impl/hero-power/fragrant-phylactery.d.ts +8 -0
  39. package/dist/cards/impl/hero-power/fragrant-phylactery.js +25 -0
  40. package/dist/cards/impl/hero-power/fragrant-phylactery.js.map +1 -0
  41. package/dist/cards/impl/hero-power/glorious-gloop.d.ts +5 -0
  42. package/dist/cards/impl/hero-power/glorious-gloop.js +40 -0
  43. package/dist/cards/impl/hero-power/glorious-gloop.js.map +1 -0
  44. package/dist/cards/impl/hero-power/lightning-invocation.d.ts +5 -0
  45. package/dist/cards/impl/hero-power/lightning-invocation.js +13 -0
  46. package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -0
  47. package/dist/cards/impl/hero-power/rapid-reanimation.d.ts +8 -0
  48. package/dist/cards/impl/hero-power/rapid-reanimation.js +29 -0
  49. package/dist/cards/impl/hero-power/rapid-reanimation.js.map +1 -0
  50. package/dist/cards/impl/hero-power/reborn-rites.d.ts +5 -0
  51. package/dist/cards/impl/hero-power/reborn-rites.js +18 -0
  52. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -0
  53. package/dist/cards/impl/hero-power/swatting-insects.d.ts +5 -0
  54. package/dist/cards/impl/hero-power/swatting-insects.js +21 -0
  55. package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -0
  56. package/dist/cards/impl/hero-power/tentacular.d.ts +8 -0
  57. package/dist/cards/impl/hero-power/tentacular.js +10 -0
  58. package/dist/cards/impl/hero-power/tentacular.js.map +1 -0
  59. package/dist/cards/impl/hero-power/water-invocation.d.ts +5 -0
  60. package/dist/cards/impl/hero-power/water-invocation.js +13 -0
  61. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -0
  62. package/dist/cards/impl/hero-power/wax-warband.d.ts +5 -0
  63. package/dist/cards/impl/hero-power/wax-warband.js +56 -0
  64. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -0
  65. package/dist/cards/impl/minion/amber-guardian.d.ts +5 -0
  66. package/dist/cards/impl/minion/amber-guardian.js +31 -0
  67. package/dist/cards/impl/minion/amber-guardian.js.map +1 -0
  68. package/dist/cards/impl/minion/audacious-anchor.d.ts +5 -0
  69. package/dist/cards/impl/minion/audacious-anchor.js +25 -0
  70. package/dist/cards/impl/minion/audacious-anchor.js.map +1 -0
  71. package/dist/cards/impl/minion/carbonic-copy.d.ts +5 -0
  72. package/dist/cards/impl/minion/carbonic-copy.js +24 -0
  73. package/dist/cards/impl/minion/carbonic-copy.js.map +1 -0
  74. package/dist/cards/impl/minion/choral-mrrrglr.d.ts +5 -0
  75. package/dist/cards/impl/minion/choral-mrrrglr.js +14 -0
  76. package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -0
  77. package/dist/cards/impl/minion/corrupted-myrmidon.d.ts +5 -0
  78. package/dist/cards/impl/minion/corrupted-myrmidon.js +13 -0
  79. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -0
  80. package/dist/cards/impl/minion/crabby.d.ts +5 -0
  81. package/dist/cards/impl/minion/crabby.js +18 -0
  82. package/dist/cards/impl/minion/crabby.js.map +1 -0
  83. package/dist/cards/impl/minion/diremuck-forager.d.ts +5 -0
  84. package/dist/cards/impl/minion/diremuck-forager.js +32 -0
  85. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -0
  86. package/dist/cards/impl/minion/elder-taggawag.d.ts +5 -0
  87. package/dist/cards/impl/minion/elder-taggawag.js +19 -0
  88. package/dist/cards/impl/minion/elder-taggawag.js.map +1 -0
  89. package/dist/cards/impl/minion/hawkstrider-herald.d.ts +5 -0
  90. package/dist/cards/impl/minion/hawkstrider-herald.js +27 -0
  91. package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -0
  92. package/dist/cards/impl/minion/hoarding-hatespawn.d.ts +5 -0
  93. package/dist/cards/impl/minion/hoarding-hatespawn.js +22 -0
  94. package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -0
  95. package/dist/cards/impl/minion/humming-bird.d.ts +5 -0
  96. package/dist/cards/impl/minion/humming-bird.js +15 -0
  97. package/dist/cards/impl/minion/humming-bird.js.map +1 -0
  98. package/dist/cards/impl/minion/interrogator-whitemane.d.ts +5 -0
  99. package/dist/cards/impl/minion/interrogator-whitemane.js +33 -0
  100. package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -0
  101. package/dist/cards/impl/minion/irate-rooster.d.ts +5 -0
  102. package/dist/cards/impl/minion/irate-rooster.js +20 -0
  103. package/dist/cards/impl/minion/irate-rooster.js.map +1 -0
  104. package/dist/cards/impl/minion/mantid-queen.d.ts +5 -0
  105. package/dist/cards/impl/minion/mantid-queen.js +52 -0
  106. package/dist/cards/impl/minion/mantid-queen.js.map +1 -0
  107. package/dist/cards/impl/minion/misfit-dragonling.d.ts +5 -0
  108. package/dist/cards/impl/minion/misfit-dragonling.js +15 -0
  109. package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -0
  110. package/dist/cards/impl/minion/piloted-whirl-o-tron.d.ts +5 -0
  111. package/dist/cards/impl/minion/piloted-whirl-o-tron.js +13 -0
  112. package/dist/cards/impl/minion/piloted-whirl-o-tron.js.map +1 -0
  113. package/dist/cards/impl/minion/prized-promo-drake.d.ts +5 -0
  114. package/dist/cards/impl/minion/prized-promo-drake.js +22 -0
  115. package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -0
  116. package/dist/cards/impl/minion/red-whelp.d.ts +5 -0
  117. package/dist/cards/impl/minion/red-whelp.js +17 -0
  118. package/dist/cards/impl/minion/red-whelp.js.map +1 -0
  119. package/dist/cards/impl/minion/sanctum-rester.d.ts +5 -0
  120. package/dist/cards/impl/minion/sanctum-rester.js +20 -0
  121. package/dist/cards/impl/minion/sanctum-rester.js.map +1 -0
  122. package/dist/cards/impl/minion/sandy.d.ts +5 -0
  123. package/dist/cards/impl/minion/sandy.js +23 -0
  124. package/dist/cards/impl/minion/sandy.js.map +1 -0
  125. package/dist/cards/impl/minion/sky-pirate-flagbearer.d.ts +5 -0
  126. package/dist/cards/impl/minion/sky-pirate-flagbearer.js +24 -0
  127. package/dist/cards/impl/minion/sky-pirate-flagbearer.js.map +1 -0
  128. package/dist/cards/impl/minion/soulsplitter.d.ts +5 -0
  129. package/dist/cards/impl/minion/soulsplitter.js +23 -0
  130. package/dist/cards/impl/minion/soulsplitter.js.map +1 -0
  131. package/dist/cards/impl/minion/sun-screener.d.ts +5 -0
  132. package/dist/cards/impl/minion/sun-screener.js +15 -0
  133. package/dist/cards/impl/minion/sun-screener.js.map +1 -0
  134. package/dist/cards/impl/minion/the-uninvited-guest.d.ts +5 -0
  135. package/dist/cards/impl/minion/the-uninvited-guest.js +24 -0
  136. package/dist/cards/impl/minion/the-uninvited-guest.js.map +1 -0
  137. package/dist/cards/impl/minion/thousandth-paper-drake.d.ts +5 -0
  138. package/dist/cards/impl/minion/thousandth-paper-drake.js +24 -0
  139. package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -0
  140. package/dist/cards/impl/minion/vaelastrasz.d.ts +5 -0
  141. package/dist/cards/impl/minion/vaelastrasz.js +17 -0
  142. package/dist/cards/impl/minion/vaelastrasz.js.map +1 -0
  143. package/dist/cards/impl/minion/yulon-fortune-granter.d.ts +5 -0
  144. package/dist/cards/impl/minion/yulon-fortune-granter.js +26 -0
  145. package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -0
  146. package/dist/cards/impl/quest-reward/evil-twin.d.ts +5 -0
  147. package/dist/cards/impl/quest-reward/evil-twin.js +32 -0
  148. package/dist/cards/impl/quest-reward/evil-twin.js.map +1 -0
  149. package/dist/cards/impl/quest-reward/staff-of-origination.d.ts +5 -0
  150. package/dist/cards/impl/quest-reward/staff-of-origination.js +14 -0
  151. package/dist/cards/impl/quest-reward/staff-of-origination.js.map +1 -0
  152. package/dist/cards/impl/quest-reward/stolen-gold.d.ts +5 -0
  153. package/dist/cards/impl/quest-reward/stolen-gold.js +16 -0
  154. package/dist/cards/impl/quest-reward/stolen-gold.js.map +1 -0
  155. package/dist/cards/impl/trinket/artisanal-urn.d.ts +5 -0
  156. package/dist/cards/impl/trinket/artisanal-urn.js +13 -0
  157. package/dist/cards/impl/trinket/artisanal-urn.js.map +1 -0
  158. package/dist/cards/impl/trinket/automaton-portrait.d.ts +5 -0
  159. package/dist/cards/impl/trinket/automaton-portrait.js +15 -0
  160. package/dist/cards/impl/trinket/automaton-portrait.js.map +1 -0
  161. package/dist/cards/impl/trinket/bronze-timepiece.d.ts +5 -0
  162. package/dist/cards/impl/trinket/bronze-timepiece.js +17 -0
  163. package/dist/cards/impl/trinket/bronze-timepiece.js.map +1 -0
  164. package/dist/cards/impl/trinket/emerald-dreamcatcher.d.ts +5 -0
  165. package/dist/cards/impl/trinket/emerald-dreamcatcher.js +18 -0
  166. package/dist/cards/impl/trinket/emerald-dreamcatcher.js.map +1 -0
  167. package/dist/cards/impl/trinket/eternal-portrait.d.ts +5 -0
  168. package/dist/cards/impl/trinket/eternal-portrait.js +19 -0
  169. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -0
  170. package/dist/cards/impl/trinket/fishy-sticker.d.ts +5 -0
  171. package/dist/cards/impl/trinket/fishy-sticker.js +28 -0
  172. package/dist/cards/impl/trinket/fishy-sticker.js.map +1 -0
  173. package/dist/cards/impl/trinket/hoggy-bank.d.ts +5 -0
  174. package/dist/cards/impl/trinket/hoggy-bank.js +23 -0
  175. package/dist/cards/impl/trinket/hoggy-bank.js.map +1 -0
  176. package/dist/cards/impl/trinket/holly-mallet.d.ts +5 -0
  177. package/dist/cards/impl/trinket/holly-mallet.js +18 -0
  178. package/dist/cards/impl/trinket/holly-mallet.js.map +1 -0
  179. package/dist/cards/impl/trinket/ironforge-anvil.d.ts +5 -0
  180. package/dist/cards/impl/trinket/ironforge-anvil.js +23 -0
  181. package/dist/cards/impl/trinket/ironforge-anvil.js.map +1 -0
  182. package/dist/cards/impl/trinket/jarred-frostling.d.ts +5 -0
  183. package/dist/cards/impl/trinket/jarred-frostling.js +27 -0
  184. package/dist/cards/impl/trinket/jarred-frostling.js.map +1 -0
  185. package/dist/cards/impl/trinket/karazhan-chess-set.d.ts +5 -0
  186. package/dist/cards/impl/trinket/karazhan-chess-set.js +40 -0
  187. package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -0
  188. package/dist/cards/impl/trinket/rivendare-portrait.d.ts +5 -0
  189. package/dist/cards/impl/trinket/rivendare-portrait.js +21 -0
  190. package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -0
  191. package/dist/cards/impl/trinket/rusty-trident.d.ts +5 -0
  192. package/dist/cards/impl/trinket/rusty-trident.js +23 -0
  193. package/dist/cards/impl/trinket/rusty-trident.js.map +1 -0
  194. package/dist/cards/impl/trinket/ship-in-a-bottle.d.ts +5 -0
  195. package/dist/cards/impl/trinket/ship-in-a-bottle.js +20 -0
  196. package/dist/cards/impl/trinket/ship-in-a-bottle.js.map +1 -0
  197. package/dist/cards/impl/trinket/summoning-sphere.d.ts +5 -0
  198. package/dist/cards/impl/trinket/summoning-sphere.js +31 -0
  199. package/dist/cards/impl/trinket/summoning-sphere.js.map +1 -0
  200. package/dist/cards/impl/trinket/tinyfin-onesie.d.ts +5 -0
  201. package/dist/cards/impl/trinket/tinyfin-onesie.js +15 -0
  202. package/dist/cards/impl/trinket/tinyfin-onesie.js.map +1 -0
  203. package/dist/cards/impl/trinket/training-certificate.d.ts +5 -0
  204. package/dist/cards/impl/trinket/training-certificate.js +21 -0
  205. package/dist/cards/impl/trinket/training-certificate.js.map +1 -0
  206. package/dist/cards/impl/trinket/valorous-medaillion.d.ts +5 -0
  207. package/dist/cards/impl/trinket/valorous-medaillion.js +12 -0
  208. package/dist/cards/impl/trinket/valorous-medaillion.js.map +1 -0
  209. package/dist/simulation/add-minion-to-board.js +18 -23
  210. package/dist/simulation/add-minion-to-board.js.map +1 -1
  211. package/dist/simulation/auras.js +0 -2
  212. package/dist/simulation/auras.js.map +1 -1
  213. package/dist/simulation/avenge.js +24 -4
  214. package/dist/simulation/avenge.js.map +1 -1
  215. package/dist/simulation/battlecries.js +9 -0
  216. package/dist/simulation/battlecries.js.map +1 -1
  217. package/dist/simulation/blood-gems.js +8 -0
  218. package/dist/simulation/blood-gems.js.map +1 -1
  219. package/dist/simulation/deathrattle-effects.js +7 -1
  220. package/dist/simulation/deathrattle-effects.js.map +1 -1
  221. package/dist/simulation/deathrattle-on-trigger.js +5 -0
  222. package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
  223. package/dist/simulation/discover.js +6 -0
  224. package/dist/simulation/discover.js.map +1 -1
  225. package/dist/simulation/magnetize.js +2 -1
  226. package/dist/simulation/magnetize.js.map +1 -1
  227. package/dist/simulation/remove-minion-from-board.js +0 -10
  228. package/dist/simulation/remove-minion-from-board.js.map +1 -1
  229. package/dist/simulation/simulator.js +1 -1
  230. package/dist/simulation/simulator.js.map +1 -1
  231. package/dist/simulation/start-of-combat/phases.d.ts +1 -0
  232. package/dist/simulation/start-of-combat/phases.js +3 -0
  233. package/dist/simulation/start-of-combat/phases.js.map +1 -0
  234. package/dist/simulation/start-of-combat/soc-action-processor.d.ts +4 -0
  235. package/dist/simulation/start-of-combat/soc-action-processor.js +286 -0
  236. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -0
  237. package/dist/simulation/start-of-combat/soc-anomalies.d.ts +4 -0
  238. package/dist/simulation/start-of-combat/soc-anomalies.js +39 -0
  239. package/dist/simulation/start-of-combat/soc-anomalies.js.map +1 -0
  240. package/dist/simulation/start-of-combat/soc-hero-power.d.ts +5 -0
  241. package/dist/simulation/start-of-combat/soc-hero-power.js +77 -0
  242. package/dist/simulation/start-of-combat/soc-hero-power.js.map +1 -0
  243. package/dist/simulation/start-of-combat/soc-illidan-hero-power.d.ts +4 -0
  244. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js +55 -0
  245. package/dist/simulation/start-of-combat/soc-illidan-hero-power.js.map +1 -0
  246. package/dist/simulation/start-of-combat/soc-minion.d.ts +6 -0
  247. package/dist/simulation/start-of-combat/soc-minion.js +68 -0
  248. package/dist/simulation/start-of-combat/soc-minion.js.map +1 -0
  249. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.d.ts +4 -0
  250. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js +72 -0
  251. package/dist/simulation/start-of-combat/soc-pre-combat-hero-power.js.map +1 -0
  252. package/dist/simulation/start-of-combat/soc-quest-reward.d.ts +4 -0
  253. package/dist/simulation/start-of-combat/soc-quest-reward.js +60 -0
  254. package/dist/simulation/start-of-combat/soc-quest-reward.js.map +1 -0
  255. package/dist/simulation/start-of-combat/soc-secret.d.ts +4 -0
  256. package/dist/simulation/start-of-combat/soc-secret.js +54 -0
  257. package/dist/simulation/start-of-combat/soc-secret.js.map +1 -0
  258. package/dist/simulation/start-of-combat/soc-trinket.d.ts +4 -0
  259. package/dist/simulation/start-of-combat/soc-trinket.js +60 -0
  260. package/dist/simulation/start-of-combat/soc-trinket.js.map +1 -0
  261. package/dist/simulation/start-of-combat/start-of-combat-input.d.ts +14 -0
  262. package/dist/simulation/start-of-combat/start-of-combat-input.js +3 -0
  263. package/dist/simulation/start-of-combat/start-of-combat-input.js.map +1 -0
  264. package/dist/simulation/start-of-combat/start-of-combat.d.ts +4 -0
  265. package/dist/simulation/start-of-combat/start-of-combat.js +68 -0
  266. package/dist/simulation/start-of-combat/start-of-combat.js.map +1 -0
  267. package/dist/temp-card-ids.d.ts +2 -0
  268. package/dist/temp-card-ids.js +3 -0
  269. package/dist/temp-card-ids.js.map +1 -0
  270. package/package.json +3 -3
  271. package/dist/simulation/start-of-combat.d.ts +0 -8
  272. package/dist/simulation/start-of-combat.js +0 -1187
  273. package/dist/simulation/start-of-combat.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GloriousGloop = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const utils_2 = require("../../../utils");
6
+ exports.GloriousGloop = {
7
+ startOfCombat: (trinket, input) => {
8
+ var _a, _b;
9
+ if (input.playerEntity.heroPowerUsed) {
10
+ if (!((_a = input.playerBoard) === null || _a === void 0 ? void 0 : _a.length)) {
11
+ return false;
12
+ }
13
+ const target = input.playerBoard.find((m) => { var _a; return (_a = m.enchantments) === null || _a === void 0 ? void 0 : _a.some((e) => e.cardId === "BGDUO_HERO_101pe2"); });
14
+ if (!target) {
15
+ return false;
16
+ }
17
+ const teammateState = (0, utils_2.getTeammateInitialState)(input.gameState.gameState, input.playerEntity);
18
+ if (!((_b = teammateState === null || teammateState === void 0 ? void 0 : teammateState.board) === null || _b === void 0 ? void 0 : _b.length)) {
19
+ return false;
20
+ }
21
+ const highestTier = Math.max(...teammateState.board.map((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel));
22
+ const candidates = teammateState.board.filter((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel === highestTier);
23
+ if (!candidates.length) {
24
+ return false;
25
+ }
26
+ const highestTierMinion = (0, utils_1.pickRandom)(candidates);
27
+ const clone = (0, utils_2.addImpliedMechanics)({
28
+ ...highestTierMinion,
29
+ lastAffectedByEntity: null,
30
+ definitelyDead: false,
31
+ attackImmediately: false,
32
+ }, input.gameState.cardsData);
33
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
34
+ const index = input.playerBoard.indexOf(target);
35
+ input.playerBoard.splice(index, 1, clone);
36
+ return true;
37
+ }
38
+ },
39
+ };
40
+ //# sourceMappingURL=glorious-gloop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glorious-gloop.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/glorious-gloop.ts"],"names":[],"mappings":";;;AAGA,mDAAqD;AAErD,0CAA8E;AAEjE,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,MAAM,CAAA,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACb;YACD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAC3C,OAAA,MAAA,CAAC,CAAC,YAAY,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAAkE,CAAC,CAAA,EAAA,CACvG,CAAC;YACF,IAAI,CAAC,MAAM,EAAE;gBACZ,OAAO,KAAK,CAAC;aACb;YAED,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAC7F,IAAI,CAAC,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,0CAAE,MAAM,CAAA,EAAE;gBAClC,OAAO,KAAK,CAAC;aACb;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAC3B,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CACjG,CAAC;YACF,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,WAAW,CACrF,CAAC;YACF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBACvB,OAAO,KAAK,CAAC;aACb;YACD,MAAM,iBAAiB,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;YACjD,MAAM,KAAK,GAAgB,IAAA,2BAAmB,EAC7C;gBACC,GAAG,iBAAiB;gBACpB,oBAAoB,EAAE,IAAI;gBAC1B,cAAc,EAAE,KAAK;gBACrB,iBAAiB,EAAE,KAAK;aACxB,EACD,KAAK,CAAC,SAAS,CAAC,SAAS,CACzB,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;YAEF,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { addImpliedMechanics, getTeammateInitialState } from '../../../utils';\r\n\r\nexport const GloriousGloop = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tif (!input.playerBoard?.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tconst target = input.playerBoard.find((m) =>\r\n\t\t\t\tm.enchantments?.some((e) => e.cardId === CardIds.GloriousGloop_InTheGloopEnchantment_BGDUO_HERO_101pe2),\r\n\t\t\t);\r\n\t\t\tif (!target) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst teammateState = getTeammateInitialState(input.gameState.gameState, input.playerEntity);\r\n\t\t\tif (!teammateState?.board?.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tconst highestTier = Math.max(\r\n\t\t\t\t...teammateState.board.map((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel),\r\n\t\t\t);\r\n\t\t\tconst candidates = teammateState.board.filter(\r\n\t\t\t\t(entity) => input.gameState.allCards.getCard(entity.cardId).techLevel === highestTier,\r\n\t\t\t);\r\n\t\t\tif (!candidates.length) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tconst highestTierMinion = pickRandom(candidates);\r\n\t\t\tconst clone: BoardEntity = addImpliedMechanics(\r\n\t\t\t\t{\r\n\t\t\t\t\t...highestTierMinion,\r\n\t\t\t\t\tlastAffectedByEntity: null,\r\n\t\t\t\t\tdefinitelyDead: false,\r\n\t\t\t\t\tattackImmediately: false,\r\n\t\t\t\t},\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t\t// Replace the \"target\" minion with the \"clone\"\r\n\t\t\tconst index = input.playerBoard.indexOf(target);\r\n\t\t\tinput.playerBoard.splice(index, 1, clone);\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 LightningInvocation: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LightningInvocation = void 0;
4
+ const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
+ exports.LightningInvocation = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerEntity.heroPowerUsed) {
8
+ (0, deathrattle_effects_1.applyLightningInvocationEnchantment)(input.playerBoard, input.playerEntity, null, input.opponentBoard, input.opponentEntity, input.gameState);
9
+ return true;
10
+ }
11
+ },
12
+ };
13
+ //# sourceMappingURL=lightning-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lightning-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/lightning-invocation.ts"],"names":[],"mappings":";;;AACA,iFAA8F;AAGjF,QAAA,mBAAmB,GAAG;IAClC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,IAAA,yDAAmC,EAClC,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,IAAI,EACJ,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { applyLightningInvocationEnchantment } from '../../../simulation/deathrattle-effects';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const LightningInvocation = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tapplyLightningInvocationEnchantment(\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.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\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 RapidReanimation: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => {
5
+ hasTriggered: boolean;
6
+ shouldRecomputeCurrentAttacker: boolean;
7
+ };
8
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RapidReanimation = void 0;
4
+ const add_minion_to_board_1 = require("../../../simulation/add-minion-to-board");
5
+ const utils_1 = require("../../../utils");
6
+ exports.RapidReanimation = {
7
+ startOfCombat: (trinket, input) => {
8
+ if (input.playerEntity.heroPowerUsed) {
9
+ const minionThatWillDie = input.playerBoard
10
+ .filter((m) => m.enchantments.some((e) => e.cardId === "BG25_HERO_103pe"))
11
+ .sort((a, b) => b.enchantments.find((e) => e.cardId === "BG25_HERO_103pe")
12
+ .originEntityId -
13
+ a.enchantments.find((e) => e.cardId === "BG25_HERO_103pe")
14
+ .originEntityId || b.entityId - a.entityId)[0];
15
+ if (minionThatWillDie) {
16
+ const rapidReanimationIndexFromLeft = input.playerBoard.indexOf(minionThatWillDie);
17
+ input.playerEntity.rapidReanimationIndexFromRight =
18
+ input.playerBoard.length - 1 - rapidReanimationIndexFromLeft;
19
+ const minionToCopy = (0, utils_1.copyEntity)(minionThatWillDie);
20
+ (0, add_minion_to_board_1.removeAurasFromSelf)(minionToCopy, input.playerBoard, input.playerEntity, input.gameState);
21
+ input.playerEntity.rapidReanimationMinion = minionToCopy;
22
+ minionThatWillDie.definitelyDead = true;
23
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, minionThatWillDie, input.playerBoard, input.playerEntity, input.opponentEntity);
24
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
25
+ }
26
+ }
27
+ },
28
+ };
29
+ //# sourceMappingURL=rapid-reanimation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rapid-reanimation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/rapid-reanimation.ts"],"names":[],"mappings":";;;AAEA,iFAA8E;AAE9E,0CAA4C;AAE/B,QAAA,gBAAgB,GAAG;IAC/B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YAMrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW;iBACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAuD,CAAC,CAC3F;iBACA,IAAI,CACJ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACR,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAuD,CAAC;iBACzF,cAAc;gBACf,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAuD,CAAC;qBACzF,cAAc,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAC7C,CAAC,CAAC,CAAC,CAAC;YACN,IAAI,iBAAiB,EAAE;gBAUtB,MAAM,6BAA6B,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBACnF,KAAK,CAAC,YAAY,CAAC,8BAA8B;oBAChD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,6BAA6B,CAAC;gBAC9D,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;gBACnD,IAAA,yCAAmB,EAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1F,KAAK,CAAC,YAAY,CAAC,sBAAsB,GAAG,YAAY,CAAC;gBACzD,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC;gBACxC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,iBAAiB,EACjB,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 { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { copyEntity } from '../../../utils';\r\n\r\nexport const RapidReanimation = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\t// Getting the right enchantment can be tricky. The RapidReanimation enchantment can sometimes be\r\n\t\t\t// in the Graveyard zone, so we can't filter them out. In that case, we can have multiple\r\n\t\t\t// enchantments\r\n\t\t\t// However, because of how things are handled in the logs, we should be able to always take the one *\r\n\t\t\t// with the biggest entityId\r\n\t\t\tconst minionThatWillDie = input.playerBoard\r\n\t\t\t\t.filter((m) =>\r\n\t\t\t\t\tm.enchantments.some((e) => e.cardId === CardIds.RapidReanimation_ImpendingDeathEnchantment),\r\n\t\t\t\t)\r\n\t\t\t\t.sort(\r\n\t\t\t\t\t(a, b) =>\r\n\t\t\t\t\t\tb.enchantments.find((e) => e.cardId === CardIds.RapidReanimation_ImpendingDeathEnchantment)\r\n\t\t\t\t\t\t\t.originEntityId -\r\n\t\t\t\t\t\t\ta.enchantments.find((e) => e.cardId === CardIds.RapidReanimation_ImpendingDeathEnchantment)\r\n\t\t\t\t\t\t\t\t.originEntityId || b.entityId - a.entityId,\r\n\t\t\t\t)[0];\r\n\t\t\tif (minionThatWillDie) {\r\n\t\t\t\t// So this is a bit tricky (as all the stuff with indices...). Because in practice it's more likely that players use Rapid Reanimation\r\n\t\t\t\t// on minions that they want to die quickly, most of the time they will be placed\r\n\t\t\t\t// to the left of the board\r\n\t\t\t\t// So using a left-based index (usually 0) is more likely to be correct after minions spawn on the board\r\n\t\t\t\t// Update: this looks like it's not the case, and looking at\r\n\t\t\t\t// http://replays.firestoneapp.com/?reviewId=2e6b389f-d904-43a2-a7cd-928a60d973ce&turn=11&action=1\r\n\t\t\t\t// the index seems to be right-based at least in some cases\r\n\t\t\t\t// Looks like even this is wrong:\r\n\t\t\t\t// http://replays.firestoneapp.com/?reviewId=9a46ab39-ccf0-478c-a010-68f2abb06c6f&turn=9&action=0\r\n\t\t\t\tconst rapidReanimationIndexFromLeft = input.playerBoard.indexOf(minionThatWillDie);\r\n\t\t\t\tinput.playerEntity.rapidReanimationIndexFromRight =\r\n\t\t\t\t\tinput.playerBoard.length - 1 - rapidReanimationIndexFromLeft;\r\n\t\t\t\tconst minionToCopy = copyEntity(minionThatWillDie);\r\n\t\t\t\tremoveAurasFromSelf(minionToCopy, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\tinput.playerEntity.rapidReanimationMinion = minionToCopy;\r\n\t\t\t\tminionThatWillDie.definitelyDead = true;\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tminionThatWillDie,\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 RebornRites: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RebornRites = void 0;
4
+ exports.RebornRites = {
5
+ startOfCombat: (trinket, input) => {
6
+ if (input.playerEntity.heroPowerUsed) {
7
+ const targetEntityId = input.playerEntity.heroPowerInfo;
8
+ const target = input.playerBoard.find((entity) => entity.entityId === targetEntityId);
9
+ if (!target || target.reborn) {
10
+ return false;
11
+ }
12
+ target.reborn = true;
13
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
14
+ return true;
15
+ }
16
+ },
17
+ };
18
+ //# sourceMappingURL=reborn-rites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reborn-rites.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/reborn-rites.ts"],"names":[],"mappings":";;;AAGa,QAAA,WAAW,GAAG;IAC1B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,aAAuB,CAAC;YAClE,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;YACtF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;gBAC7B,OAAO,KAAK,CAAC;aACb;YAED,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;YACF,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const RebornRites = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst targetEntityId = input.playerEntity.heroPowerInfo as number;\r\n\t\t\tconst target = input.playerBoard.find((entity) => entity.entityId === targetEntityId);\r\n\t\t\tif (!target || target.reborn) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\ttarget.reborn = true;\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t\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 SwattingInsects: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwattingInsects = void 0;
4
+ const divine_shield_1 = require("../../../divine-shield");
5
+ exports.SwattingInsects = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerBoard.length > 0) {
8
+ const firstEntity = input.playerBoard[0];
9
+ if (!firstEntity.windfury || !firstEntity.divineShield || !firstEntity.taunt) {
10
+ firstEntity.windfury = true;
11
+ firstEntity.taunt = true;
12
+ if (!firstEntity.divineShield) {
13
+ (0, divine_shield_1.updateDivineShield)(firstEntity, input.playerBoard, input.playerEntity, input.opponentEntity, true, input.gameState);
14
+ }
15
+ input.gameState.spectator.registerPowerTarget(firstEntity, firstEntity, input.playerBoard, input.playerEntity, input.opponentEntity);
16
+ return true;
17
+ }
18
+ }
19
+ },
20
+ };
21
+ //# sourceMappingURL=swatting-insects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swatting-insects.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/swatting-insects.ts"],"names":[],"mappings":";;;AACA,0DAA4D;AAG/C,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;gBAC7E,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC5B,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC9B,IAAA,kCAAkB,EACjB,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,WAAW,EACX,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,OAAO,IAAI,CAAC;aACZ;SACD;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 SwattingInsects = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerBoard.length > 0) {\r\n\t\t\tconst firstEntity = input.playerBoard[0];\r\n\t\t\tif (!firstEntity.windfury || !firstEntity.divineShield || !firstEntity.taunt) {\r\n\t\t\t\tfirstEntity.windfury = true;\r\n\t\t\t\tfirstEntity.taunt = true;\r\n\t\t\t\tif (!firstEntity.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\t\tfirstEntity,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tfirstEntity,\r\n\t\t\t\t\tfirstEntity,\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 true;\r\n\t\t\t}\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 Tentacular: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => {
5
+ hasTriggered: boolean;
6
+ shouldRecomputeCurrentAttacker: boolean;
7
+ };
8
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tentacular = void 0;
4
+ exports.Tentacular = {
5
+ startOfCombat: (trinket, input) => {
6
+ input.playerEntity.heroPowerActivated = false;
7
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
8
+ },
9
+ };
10
+ //# sourceMappingURL=tentacular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tentacular.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/tentacular.ts"],"names":[],"mappings":";;;AAGa,QAAA,UAAU,GAAG;IACzB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,CAAC,YAAY,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAC9C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const Tentacular = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tinput.playerEntity.heroPowerActivated = false;\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: 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 WaterInvocation: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WaterInvocation = void 0;
4
+ const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
+ exports.WaterInvocation = {
6
+ startOfCombat: (trinket, input) => {
7
+ if (input.playerEntity.heroPowerUsed) {
8
+ (0, deathrattle_effects_1.applyWaterInvocationEnchantment)(input.playerBoard, input.playerEntity, null, input.playerEntity, input.gameState);
9
+ return true;
10
+ }
11
+ },
12
+ };
13
+ //# sourceMappingURL=water-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"water-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/water-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,EAC9B,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 { applyWaterInvocationEnchantment } from '../../../simulation/deathrattle-effects';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const WaterInvocation = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tapplyWaterInvocationEnchantment(\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,5 @@
1
+ import { BoardTrinket } from '../../../bgs-player-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const WaxWarband: {
4
+ startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WaxWarband = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const utils_1 = require("../../../services/utils");
6
+ const stats_1 = require("../../../simulation/stats");
7
+ const utils_2 = require("../../../utils");
8
+ exports.WaxWarband = {
9
+ startOfCombat: (trinket, input) => {
10
+ if (input.playerEntity.heroPowerUsed) {
11
+ if (input.playerBoard.length > 0) {
12
+ const boardWithTribes = input.playerBoard.filter((e) => !!(0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards).length);
13
+ const boardWithoutAll = boardWithTribes.filter((e) => { var _a; return !((_a = input.gameState.allCards.getCard(e.cardId).races) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race[reference_data_1.Race.ALL])); });
14
+ const selectedMinions = selectMinions(boardWithoutAll, reference_data_1.ALL_BG_RACES, input.gameState.allCards);
15
+ const allMinions = [
16
+ ...selectedMinions,
17
+ ...boardWithTribes.filter((e) => { var _a; return (_a = input.gameState.allCards.getCard(e.cardId).races) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race[reference_data_1.Race.ALL]); }),
18
+ ];
19
+ allMinions.forEach((e) => {
20
+ (0, stats_1.modifyStats)(e, input.gameState.cardsData.getTavernLevel(e.cardId), input.gameState.cardsData.getTavernLevel(e.cardId), input.playerBoard, input.playerEntity, input.gameState);
21
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, e, input.playerBoard, input.playerEntity, input.opponentEntity);
22
+ });
23
+ return true;
24
+ }
25
+ }
26
+ },
27
+ };
28
+ const selectMinions = (minions, tribes, allCards) => {
29
+ var _a, _b;
30
+ const minionsByTribe = {};
31
+ for (const minion of minions) {
32
+ for (const tribe of (_a = allCards.getCard(minion.cardId).races) !== null && _a !== void 0 ? _a : []) {
33
+ if (!minionsByTribe[tribe]) {
34
+ minionsByTribe[tribe] = [];
35
+ }
36
+ minionsByTribe[tribe].push(minion);
37
+ }
38
+ }
39
+ for (const tribe of reference_data_1.ALL_BG_RACES) {
40
+ minionsByTribe[tribe] = (0, utils_1.shuffleArray)((_b = minionsByTribe[reference_data_1.Race[tribe]]) !== null && _b !== void 0 ? _b : []);
41
+ }
42
+ const selectedMinions = [];
43
+ for (const tribe of tribes) {
44
+ if (minionsByTribe[tribe]) {
45
+ minionsByTribe[tribe].sort((a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length);
46
+ for (const minion of minionsByTribe[tribe]) {
47
+ if (!selectedMinions.includes(minion)) {
48
+ selectedMinions.push(minion);
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ }
54
+ return selectedMinions;
55
+ };
56
+ //# sourceMappingURL=wax-warband.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":";;;AAAA,iEAAmF;AAGnF,mDAAuD;AAEvD,qDAAwD;AACxD,0CAA6D;AAEhD,QAAA,UAAU,GAAG;IACzB,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAA,mCAA2B,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC5F,CAAC;gBACF,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAC,CAAA,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,0CAAE,QAAQ,CAAC,qBAAI,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAC,CAAA,CAAA,EAAA,CAClF,CAAC;gBACF,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,EAAE,6BAAY,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC/F,MAAM,UAAU,GAAG;oBAClB,GAAG,eAAe;oBAClB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAC/B,OAAA,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,0CAAE,QAAQ,CAAC,qBAAI,CAAC,qBAAI,CAAC,GAAG,CAAC,CAAC,CAAA,EAAA,CAC1E;iBACD,CAAC;gBACF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACxB,IAAA,mBAAW,EACV,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAClD,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAClD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;oBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC;AAGF,MAAM,aAAa,GAAG,CAAC,OAAsB,EAAE,MAAc,EAAE,QAAyB,EAAiB,EAAE;;IAE1G,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,KAAK,MAAM,KAAK,IAAI,MAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,mCAAI,EAAE,EAAE;YAChE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC3B,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aAC3B;YACD,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnC;KACD;IACD,KAAK,MAAM,KAAK,IAAI,6BAAY,EAAE;QACjC,cAAc,CAAC,KAAK,CAAC,GAAG,IAAA,oBAAY,EAAC,MAAA,cAAc,CAAC,qBAAI,CAAC,KAAK,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;KACxE;IAED,MAAM,eAAe,GAAkB,EAAE,CAAC;IAG1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC3B,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;YAC1B,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,CACzB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAC3F,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;oBACtC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC7B,MAAM;iBACN;aACD;SACD;KACD;IAGD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC","sourcesContent":["import { ALL_BG_RACES, AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { shuffleArray } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getEffectiveTribesForEntity } from '../../../utils';\r\n\r\nexport const WaxWarband = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tif (input.playerBoard.length > 0) {\r\n\t\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t\t(e) => !!getEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards).length,\r\n\t\t\t\t);\r\n\t\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t\t(e) => !input.gameState.allCards.getCard(e.cardId).races?.includes(Race[Race.ALL]),\r\n\t\t\t\t);\r\n\t\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\t\tconst allMinions = [\r\n\t\t\t\t\t...selectedMinions,\r\n\t\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\t\tinput.gameState.allCards.getCard(e.cardId).races?.includes(Race[Race.ALL]),\r\n\t\t\t\t\t),\r\n\t\t\t\t];\r\n\t\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(e.cardId),\r\n\t\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(e.cardId),\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n\r\n// Not perfect, as I don't think this solves the issue where some cards are mutually exclusive\r\nconst selectMinions = (minions: BoardEntity[], tribes: Race[], allCards: AllCardsService): BoardEntity[] => {\r\n\t// Step 1\r\n\tconst minionsByTribe: { [tribe: string]: BoardEntity[] } = {};\r\n\tfor (const minion of minions) {\r\n\t\tfor (const tribe of allCards.getCard(minion.cardId).races ?? []) {\r\n\t\t\tif (!minionsByTribe[tribe]) {\r\n\t\t\t\tminionsByTribe[tribe] = [];\r\n\t\t\t}\r\n\t\t\tminionsByTribe[tribe].push(minion);\r\n\t\t}\r\n\t}\r\n\tfor (const tribe of ALL_BG_RACES) {\r\n\t\tminionsByTribe[tribe] = shuffleArray(minionsByTribe[Race[tribe]] ?? []);\r\n\t}\r\n\r\n\tconst selectedMinions: BoardEntity[] = [];\r\n\r\n\t// Step 3\r\n\tfor (const tribe of tribes) {\r\n\t\tif (minionsByTribe[tribe]) {\r\n\t\t\tminionsByTribe[tribe].sort(\r\n\t\t\t\t(a, b) => allCards.getCard(a.cardId).races.length - allCards.getCard(b.cardId).races.length,\r\n\t\t\t);\r\n\t\t\tfor (const minion of minionsByTribe[tribe]) {\r\n\t\t\t\tif (!selectedMinions.includes(minion)) {\r\n\t\t\t\t\tselectedMinions.push(minion);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 4\r\n\treturn selectedMinions;\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AmberGuardian: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AmberGuardian = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const divine_shield_1 = require("../../../divine-shield");
6
+ const utils_1 = require("../../../services/utils");
7
+ const stats_1 = require("../../../simulation/stats");
8
+ const utils_2 = require("../../../utils");
9
+ exports.AmberGuardian = {
10
+ startOfCombat: (minion, input) => {
11
+ var _a;
12
+ const otherDragons = input.playerBoard
13
+ .filter((e) => (0, utils_2.hasCorrectTribe)(e, input.playerEntity, reference_data_1.Race.DRAGON, input.gameState.allCards))
14
+ .filter((e) => e.entityId !== minion.entityId);
15
+ const loops = minion.cardId === "BG24_500_G" ? 2 : 1;
16
+ const dragonsToConsider = otherDragons;
17
+ for (let i = 0; i < loops; i++) {
18
+ const otherDragon = (_a = (0, utils_1.pickRandom)(dragonsToConsider.filter((e) => !e.divineShield))) !== null && _a !== void 0 ? _a : (0, utils_1.pickRandom)(dragonsToConsider);
19
+ if (otherDragon) {
20
+ if (!otherDragon.divineShield) {
21
+ (0, divine_shield_1.updateDivineShield)(otherDragon, input.playerBoard, input.playerEntity, input.opponentEntity, true, input.gameState);
22
+ }
23
+ (0, stats_1.modifyStats)(otherDragon, 5, 5, input.playerBoard, input.playerEntity, input.gameState);
24
+ input.gameState.spectator.registerPowerTarget(minion, otherDragon, input.playerBoard, input.playerEntity, input.opponentEntity);
25
+ dragonsToConsider.splice(dragonsToConsider.indexOf(otherDragon), 1);
26
+ }
27
+ }
28
+ return true;
29
+ },
30
+ };
31
+ //# sourceMappingURL=amber-guardian.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"amber-guardian.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/amber-guardian.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAE7D,0DAA4D;AAC5D,mDAAqD;AAErD,qDAAwD;AACxD,0CAAiD;AAEpC,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QAEvD,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC5F,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,iBAAiB,GAAG,YAAY,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,WAAW,GAChB,MAAA,IAAA,kBAAU,EAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,mCAAI,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;YAC/F,IAAI,WAAW,EAAE;gBAChB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC9B,IAAA,kCAAkB,EACjB,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,IAAI,EACJ,KAAK,CAAC,SAAS,CACf,CAAC;iBACF;gBACD,IAAA,mBAAW,EAAC,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACvF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,WAAW,EACX,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACF,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;aACpE;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../divine-shield';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\n\r\nexport const AmberGuardian = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// First try to get a target without divine shield, and if none is available, pick one with divine shield\r\n\t\tconst otherDragons = input.playerBoard\r\n\t\t\t.filter((e) => hasCorrectTribe(e, input.playerEntity, Race.DRAGON, input.gameState.allCards))\r\n\t\t\t.filter((e) => e.entityId !== minion.entityId);\r\n\t\tconst loops = minion.cardId === CardIds.AmberGuardian_BG24_500_G ? 2 : 1;\r\n\t\tconst dragonsToConsider = otherDragons;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tconst otherDragon =\r\n\t\t\t\tpickRandom(dragonsToConsider.filter((e) => !e.divineShield)) ?? pickRandom(dragonsToConsider);\r\n\t\t\tif (otherDragon) {\r\n\t\t\t\tif (!otherDragon.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(\r\n\t\t\t\t\t\totherDragon,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tmodifyStats(otherDragon, 5, 5, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\totherDragon,\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\tdragonsToConsider.splice(dragonsToConsider.indexOf(otherDragon), 1);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const AudaciousAnchor: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AudaciousAnchor = void 0;
4
+ const utils_1 = require("../../../services/utils");
5
+ const attack_1 = require("../../../simulation/attack");
6
+ exports.AudaciousAnchor = {
7
+ startOfCombat: (minion, input) => {
8
+ const iterations = minion.cardId === "BG28_904_G" ? 2 : 1;
9
+ for (let i = 0; i < iterations; i++) {
10
+ const targets = (0, attack_1.findNearestEnemies)(input.playerBoard, minion, input.playerBoard.length - 1 - input.playerBoard.indexOf(minion), input.opponentBoard, 1, input.gameState.allCards);
11
+ if (!targets.length) {
12
+ break;
13
+ }
14
+ if (targets.length > 2) {
15
+ console.error('Invalid number of targets', targets.length);
16
+ }
17
+ const target = (0, utils_1.pickRandom)(targets);
18
+ while (minion.health > 0 && target.health > 0 && !minion.definitelyDead && !target.definitelyDead) {
19
+ (0, attack_1.doFullAttack)(minion, input.playerBoard, input.playerEntity, target, input.opponentBoard, input.opponentEntity, input.gameState);
20
+ }
21
+ }
22
+ return true;
23
+ },
24
+ };
25
+ //# sourceMappingURL=audacious-anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audacious-anchor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/audacious-anchor.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,uDAA8E;AAGjE,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,IAAA,2BAAkB,EACjC,KAAK,CAAC,WAAW,EACjB,MAAM,EACN,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAChE,KAAK,CAAC,aAAa,EACnB,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACpB,MAAM;aACN;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aAC3D;YAED,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;YACnC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAGlG,IAAA,qBAAY,EACX,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { doFullAttack, findNearestEnemies } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const AudaciousAnchor = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst iterations = minion.cardId === CardIds.AudaciousAnchor_BG28_904_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < iterations; i++) {\r\n\t\t\tconst targets = findNearestEnemies(\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tminion,\r\n\t\t\t\tinput.playerBoard.length - 1 - input.playerBoard.indexOf(minion),\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t);\r\n\t\t\tif (!targets.length) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif (targets.length > 2) {\r\n\t\t\t\tconsole.error('Invalid number of targets', targets.length);\r\n\t\t\t}\r\n\r\n\t\t\tconst target = pickRandom(targets);\r\n\t\t\twhile (minion.health > 0 && target.health > 0 && !minion.definitelyDead && !target.definitelyDead) {\r\n\t\t\t\t// Attackers don't alternate\r\n\t\t\t\t// See http://replays.firestoneapp.com/?reviewId=f9f6bf62-db73-49ad-8187-d2f8848b7f36&turn=17&action=0\r\n\t\t\t\tdoFullAttack(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const CarbonicCopy: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CarbonicCopy = void 0;
4
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
+ const spawns_1 = require("../../../simulation/spawns");
6
+ exports.CarbonicCopy = {
7
+ startOfCombat: (minion, input) => {
8
+ const numberOfCopies = minion.cardId === "BG27_503_G" ? 2 : 1;
9
+ for (let i = 0; i < numberOfCopies; i++) {
10
+ if (!!input.playerBoard.length && input.playerBoard.length < 7) {
11
+ const copy = {
12
+ ...minion,
13
+ lastAffectedByEntity: null,
14
+ };
15
+ 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, minion.friendly, true, false, false, copy);
16
+ const indexFromRight = input.playerBoard.length - (input.playerBoard.indexOf(minion) + 1);
17
+ (0, spawns_1.performEntitySpawns)(newMinions, input.playerBoard, input.playerEntity, minion, indexFromRight, input.opponentBoard, input.opponentEntity, input.gameState);
18
+ input.gameState.spectator.registerPowerTarget(minion, copy, input.playerBoard, input.playerEntity, input.opponentEntity);
19
+ }
20
+ }
21
+ return true;
22
+ },
23
+ };
24
+ //# sourceMappingURL=carbonic-copy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carbonic-copy.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/carbonic-copy.ts"],"names":[],"mappings":";;;AAEA,+EAAuE;AACvE,uDAAiE;AAGpD,QAAA,YAAY,GAAG;IAC3B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,MAAM,IAAI,GAAgB;oBACzB,GAAG,MAAM;oBACT,oBAAoB,EAAE,IAAI;iBAC1B,CAAC;gBACF,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,MAAM,CAAC,QAAQ,EACf,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;gBACF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1F,IAAA,4BAAmB,EAClB,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,IAAI,EACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\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 CarbonicCopy = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst numberOfCopies = minion.cardId === CardIds.CarbonicCopy_BG27_503_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < numberOfCopies; i++) {\r\n\t\t\tif (!!input.playerBoard.length && input.playerBoard.length < 7) {\r\n\t\t\t\tconst copy: BoardEntity = {\r\n\t\t\t\t\t...minion,\r\n\t\t\t\t\tlastAffectedByEntity: null,\r\n\t\t\t\t};\r\n\t\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\t\tcopy.cardId,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\t\tminion.friendly,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tcopy,\r\n\t\t\t\t);\r\n\t\t\t\tconst indexFromRight = input.playerBoard.length - (input.playerBoard.indexOf(minion) + 1);\r\n\t\t\t\tperformEntitySpawns(\r\n\t\t\t\t\tnewMinions,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tindexFromRight,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tcopy,\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}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const ChoralMrrrglr: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChoralMrrrglr = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.ChoralMrrrglr = {
6
+ startOfCombat: (minion, input) => {
7
+ var _a, _b;
8
+ const multiplier = minion.cardId === "BG26_354_G" ? 2 : 1;
9
+ (0, stats_1.modifyStats)(minion, multiplier * ((_a = input.playerEntity.globalInfo) === null || _a === void 0 ? void 0 : _a.ChoralAttackBuff), multiplier * ((_b = input.playerEntity.globalInfo) === null || _b === void 0 ? void 0 : _b.ChoralHealthBuff), input.playerBoard, input.playerEntity, input.gameState);
10
+ input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
11
+ return true;
12
+ },
13
+ };
14
+ //# sourceMappingURL=choral-mrrrglr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"choral-mrrrglr.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/choral-mrrrglr.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAE3C,QAAA,aAAa,GAAG;IAC5B,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,IAAG,MAAA,KAAK,CAAC,YAAY,CAAC,UAAU,0CAAE,gBAAgB,CAAA,EAC5D,UAAU,IAAG,MAAA,KAAK,CAAC,YAAY,CAAC,UAAU,0CAAE,gBAAgB,CAAA,EAC5D,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const ChoralMrrrglr = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.ChoralMrrrglr_BG26_354_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * input.playerEntity.globalInfo?.ChoralAttackBuff,\r\n\t\t\tmultiplier * input.playerEntity.globalInfo?.ChoralHealthBuff,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const CorruptedMyrmidon: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CorruptedMyrmidon = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.CorruptedMyrmidon = {
6
+ startOfCombat: (minion, input) => {
7
+ const multiplier = minion.cardId === "BG23_012_G" ? 2 : 1;
8
+ (0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
9
+ input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
10
+ return true;
11
+ },
12
+ };
13
+ //# sourceMappingURL=corrupted-myrmidon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corrupted-myrmidon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/corrupted-myrmidon.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAE3C,QAAA,iBAAiB,GAAG;IAChC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const CorruptedMyrmidon = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.CorruptedMyrmidon_BG23_012_G ? 2 : 1;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * minion.attack,\r\n\t\t\tmultiplier * minion.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const Crabby: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Crabby = void 0;
4
+ const attack_1 = require("../../../simulation/attack");
5
+ const stats_1 = require("../../../simulation/stats");
6
+ exports.Crabby = {
7
+ startOfCombat: (minion, input) => {
8
+ const neighbours = (0, attack_1.getNeighbours)(input.playerBoard, minion);
9
+ const multiplier = minion.cardId === "BG22_HERO_000_Buddy_G" ? 2 : 1;
10
+ neighbours.forEach((entity) => {
11
+ var _a, _b;
12
+ (0, stats_1.modifyStats)(entity, multiplier * ((_a = input.playerEntity.deadEyeDamageDone) !== null && _a !== void 0 ? _a : 0), multiplier * ((_b = input.playerEntity.deadEyeDamageDone) !== null && _b !== void 0 ? _b : 0), input.playerBoard, input.playerEntity, input.gameState);
13
+ input.gameState.spectator.registerPowerTarget(minion, entity, input.playerBoard, input.playerEntity, input.opponentEntity);
14
+ });
15
+ return true;
16
+ },
17
+ };
18
+ //# sourceMappingURL=crabby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crabby.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/crabby.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAE3D,qDAAwD;AAE3C,QAAA,MAAM,GAAG;IACrB,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,4BAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,mCAAI,CAAC,CAAC,EACxD,UAAU,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,mCAAI,CAAC,CAAC,EACxD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\n\r\nexport const Crabby = {\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst multiplier = minion.cardId === CardIds.Crabby_BG22_HERO_000_Buddy_G ? 2 : 1;\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tentity,\r\n\t\t\t\tmultiplier * (input.playerEntity.deadEyeDamageDone ?? 0),\r\n\t\t\t\tmultiplier * (input.playerEntity.deadEyeDamageDone ?? 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.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tminion,\r\n\t\t\t\tentity,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,5 @@
1
+ import { BoardEntity } from '../../../board-entity';
2
+ import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
+ export declare const DiremuckForager: {
4
+ startOfCombat: (minion: BoardEntity, input: SoCInput) => boolean;
5
+ };
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiremuckForager = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const utils_1 = require("../../../services/utils");
6
+ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
7
+ const spawns_1 = require("../../../simulation/spawns");
8
+ const stats_1 = require("../../../simulation/stats");
9
+ exports.DiremuckForager = {
10
+ startOfCombat: (minion, input) => {
11
+ const potentialTargets = input.playerEntity.hand
12
+ .filter((e) => !!e.cardId)
13
+ .filter((e) => { var _a; return ((_a = input.gameState.allCards.getCard(e.cardId).type) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === reference_data_1.CardType[reference_data_1.CardType.MINION]; })
14
+ .filter((e) => !e.locked);
15
+ if (potentialTargets.length > 0) {
16
+ const target = (0, utils_1.pickRandom)(potentialTargets);
17
+ const diremuckBuff = minion.cardId === "BG27_556_G" ? 4 : 2;
18
+ (0, stats_1.modifyStats)(target, diremuckBuff, diremuckBuff, input.playerBoard, input.playerEntity, input.gameState);
19
+ input.gameState.spectator.registerPowerTarget(minion, target, input.playerBoard, input.playerEntity, input.opponentEntity);
20
+ if (input.playerBoard.length < 7) {
21
+ target.locked = true;
22
+ const newMinions = (0, deathrattle_spawns_1.spawnEntities)(target.cardId, 1, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState.allCards, input.gameState.cardsData, input.gameState.sharedState, input.gameState.spectator, minion.friendly, false, false, true, { ...target });
23
+ for (const s of newMinions) {
24
+ s.onCanceledSummon = () => (target.locked = false);
25
+ }
26
+ (0, spawns_1.performEntitySpawns)(newMinions, input.playerBoard, input.playerEntity, minion, input.playerBoard.length - (input.playerBoard.indexOf(minion) + 1), input.opponentBoard, input.opponentEntity, input.gameState);
27
+ }
28
+ }
29
+ return true;
30
+ },
31
+ };
32
+ //# sourceMappingURL=diremuck-forager.js.map