@firestone-hs/simulate-bgs-battle 1.1.541 → 1.1.544

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 (49) 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/cards-data.js +1 -1
  4. package/dist/cards/cards-data.js.map +1 -1
  5. package/dist/cards/impl/_card-mappings.js +2 -0
  6. package/dist/cards/impl/_card-mappings.js.map +1 -1
  7. package/dist/cards/impl/hero-power/aim-high.js +9 -6
  8. package/dist/cards/impl/hero-power/aim-high.js.map +1 -1
  9. package/dist/cards/impl/hero-power/aim-left.js +8 -5
  10. package/dist/cards/impl/hero-power/aim-left.js.map +1 -1
  11. package/dist/cards/impl/hero-power/aim-low.js +9 -6
  12. package/dist/cards/impl/hero-power/aim-low.js.map +1 -1
  13. package/dist/cards/impl/hero-power/aim-right.js +8 -5
  14. package/dist/cards/impl/hero-power/aim-right.js.map +1 -1
  15. package/dist/cards/impl/hero-power/earth-invocation.js +6 -3
  16. package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -1
  17. package/dist/cards/impl/hero-power/embrace-your-rage.js +16 -13
  18. package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -1
  19. package/dist/cards/impl/hero-power/fire-invocation.js +6 -3
  20. package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -1
  21. package/dist/cards/impl/hero-power/fragrant-phylactery.js +16 -13
  22. package/dist/cards/impl/hero-power/fragrant-phylactery.js.map +1 -1
  23. package/dist/cards/impl/hero-power/glorious-gloop.js +33 -28
  24. package/dist/cards/impl/hero-power/glorious-gloop.js.map +1 -1
  25. package/dist/cards/impl/hero-power/lightning-invocation.js +6 -3
  26. package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -1
  27. package/dist/cards/impl/hero-power/rapid-reanimation.js +18 -16
  28. package/dist/cards/impl/hero-power/rapid-reanimation.js.map +1 -1
  29. package/dist/cards/impl/hero-power/reborn-rites.js +11 -8
  30. package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -1
  31. package/dist/cards/impl/hero-power/tentacular.js +1 -1
  32. package/dist/cards/impl/hero-power/tentacular.js.map +1 -1
  33. package/dist/cards/impl/hero-power/water-invocation.js +6 -3
  34. package/dist/cards/impl/hero-power/water-invocation.js.map +1 -1
  35. package/dist/cards/impl/hero-power/wax-warband.js +22 -19
  36. package/dist/cards/impl/hero-power/wax-warband.js.map +1 -1
  37. package/dist/cards/impl/minion/battlecruiser.js +2 -2
  38. package/dist/cards/impl/minion/battlecruiser.js.map +1 -1
  39. package/dist/cards/impl/minion/corrupted-myrmidon.js +1 -1
  40. package/dist/cards/impl/minion/corrupted-myrmidon.js.map +1 -1
  41. package/dist/cards/impl/minion/mutalisk.js +3 -0
  42. package/dist/cards/impl/minion/mutalisk.js.map +1 -1
  43. package/dist/cards/impl/minion/ultralisk.js +1 -1
  44. package/dist/cards/impl/minion/ultralisk.js.map +1 -1
  45. package/dist/simulation/spectator/game-action.js +8 -8
  46. package/dist/simulation/spectator/game-action.js.map +1 -1
  47. package/dist/simulation/summon-when-space.js +11 -9
  48. package/dist/simulation/summon-when-space.js.map +1 -1
  49. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fragrant-phylactery.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/fragrant-phylactery.ts"],"names":[],"mappings":";;;AACA,mDAAiE;AAEjE,qDAAwD;AAG3C,QAAA,kBAAkB,GAAsB;IACpD,mBAAmB,EAAE,YAAY;IACjC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE;YACrC,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC/D,IAAI,CAAC,YAAY,EAAE;gBAClB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACrD,OAAO,KAAK,CAAC;aACb;YAED,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,IAAI,EACJ,IAAI,CACJ,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEvF,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;YACnC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtB,IAAA,mBAAW,EAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,YAAY,EACZ,CAAC,EACD,QAAQ,EACR,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;YACH,CAAC,CAAC,CAAC;YAIH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;SACpE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { pickRandomLowestHealth } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FragrantPhylactery: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerEntity.heroPowerUsed) {\r\n\t\t\tconst chosenEntity = pickRandomLowestHealth(input.playerBoard);\r\n\t\t\tif (!chosenEntity) {\r\n\t\t\t\tconsole.warn('could not pick any entity for tamsin');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tchosenEntity,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t);\r\n\t\t\tconst newBoard = input.playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);\r\n\t\t\t// How to mark the minion as dead\r\n\t\t\tchosenEntity.definitelyDead = true;\r\n\t\t\tnewBoard.forEach((e) => {\r\n\t\t\t\tmodifyStats(e, chosenEntity.attack, chosenEntity.health, newBoard, input.playerEntity, input.gameState);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tchosenEntity,\r\n\t\t\t\t\te,\r\n\t\t\t\t\tnewBoard,\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\t// Tamsin's hero power somehow happens before the current attacker is chosen.\r\n\t\t\t// See http://replays.firestoneapp.com/?reviewId=bce94e6b-c807-48e4-9c72-2c5c04421213&turn=6&action=9\r\n\t\t\t// Even worse: if a scallywag token pops, it attacks before the first attacker is recomputed\r\n\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"fragrant-phylactery.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/fragrant-phylactery.ts"],"names":[],"mappings":";;;AAEA,mDAAiE;AAEjE,qDAAwD;AAG3C,QAAA,kBAAkB,GAAsB;IACpD,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,kBAAwC;IACjD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,0BAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBAC5E,MAAM,YAAY,GAAG,IAAA,8BAAsB,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAC/D,IAAI,CAAC,YAAY,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;oBACrD,OAAO,KAAK,CAAC;iBACb;gBAED,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,YAAY,EACZ,KAAK,CAAC,WAAW,EACjB,IAAI,EACJ,IAAI,CACJ,CAAC;gBACF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAEvF,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;gBACnC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACtB,IAAA,mBAAW,EACV,CAAC,EACD,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,MAAM,EACnB,QAAQ,EACR,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;oBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,YAAY,EACZ,CAAC,EACD,QAAQ,EACR,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAIH,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 { pickRandomLowestHealth } from '../../../services/utils';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FragrantPhylactery: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.TamsinRoame_FragrantPhylactery],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (FragrantPhylactery.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tconst chosenEntity = pickRandomLowestHealth(input.playerBoard);\r\n\t\t\t\tif (!chosenEntity) {\r\n\t\t\t\t\tconsole.warn('could not pick any entity for tamsin');\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tchosenEntity,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t);\r\n\t\t\t\tconst newBoard = input.playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);\r\n\t\t\t\t// How to mark the minion as dead\r\n\t\t\t\tchosenEntity.definitelyDead = true;\r\n\t\t\t\tnewBoard.forEach((e) => {\r\n\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tchosenEntity.attack,\r\n\t\t\t\t\t\tchosenEntity.health,\r\n\t\t\t\t\t\tnewBoard,\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\tchosenEntity,\r\n\t\t\t\t\t\te,\r\n\t\t\t\t\t\tnewBoard,\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\t// Tamsin's hero power somehow happens before the current attacker is chosen.\r\n\t\t\t\t// See http://replays.firestoneapp.com/?reviewId=bce94e6b-c807-48e4-9c72-2c5c04421213&turn=6&action=9\r\n\t\t\t\t// Even worse: if a scallywag token pops, it attacks before the first attacker is recomputed\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"]}
@@ -8,35 +8,40 @@ exports.GloriousGloop = {
8
8
  startOfCombatTiming: 'pre-combat',
9
9
  startOfCombat: (trinket, input) => {
10
10
  var _a, _b;
11
- if (input.playerEntity.heroPowerUsed) {
12
- if (!((_a = input.playerBoard) === null || _a === void 0 ? void 0 : _a.length)) {
13
- return false;
11
+ for (const heroPower of input.playerEntity.heroPowers) {
12
+ if (exports.GloriousGloop.cardIds.includes(heroPower.cardId) && heroPower.used) {
13
+ if (!((_a = input.playerBoard) === null || _a === void 0 ? void 0 : _a.length)) {
14
+ return false;
15
+ }
16
+ const target = input.playerBoard.find((m) => {
17
+ var _a;
18
+ return (_a = m.enchantments) === null || _a === void 0 ? void 0 : _a.some((e) => e.cardId === "BGDUO_HERO_101pe2");
19
+ });
20
+ if (!target) {
21
+ return false;
22
+ }
23
+ const teammateState = (0, utils_2.getTeammateInitialState)(input.gameState.gameState, input.playerEntity);
24
+ if (!((_b = teammateState === null || teammateState === void 0 ? void 0 : teammateState.board) === null || _b === void 0 ? void 0 : _b.length)) {
25
+ return false;
26
+ }
27
+ const highestTier = Math.max(...teammateState.board.map((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel));
28
+ const candidates = teammateState.board.filter((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel === highestTier);
29
+ if (!candidates.length) {
30
+ return false;
31
+ }
32
+ const highestTierMinion = (0, utils_1.pickRandom)(candidates);
33
+ const clone = (0, utils_2.addImpliedMechanics)({
34
+ ...highestTierMinion,
35
+ entityId: input.gameState.sharedState.currentEntityId++,
36
+ lastAffectedByEntity: null,
37
+ definitelyDead: false,
38
+ attackImmediately: false,
39
+ }, input.gameState.cardsData);
40
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
41
+ const index = input.playerBoard.indexOf(target);
42
+ input.playerBoard.splice(index, 1, clone);
43
+ return true;
14
44
  }
15
- 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"); });
16
- if (!target) {
17
- return false;
18
- }
19
- const teammateState = (0, utils_2.getTeammateInitialState)(input.gameState.gameState, input.playerEntity);
20
- if (!((_b = teammateState === null || teammateState === void 0 ? void 0 : teammateState.board) === null || _b === void 0 ? void 0 : _b.length)) {
21
- return false;
22
- }
23
- const highestTier = Math.max(...teammateState.board.map((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel));
24
- const candidates = teammateState.board.filter((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel === highestTier);
25
- if (!candidates.length) {
26
- return false;
27
- }
28
- const highestTierMinion = (0, utils_1.pickRandom)(candidates);
29
- const clone = (0, utils_2.addImpliedMechanics)({
30
- ...highestTierMinion,
31
- entityId: input.gameState.sharedState.currentEntityId++,
32
- lastAffectedByEntity: null,
33
- definitelyDead: false,
34
- attackImmediately: false,
35
- }, input.gameState.cardsData);
36
- input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
37
- const index = input.playerBoard.indexOf(target);
38
- input.playerBoard.splice(index, 1, clone);
39
- return true;
40
45
  }
41
46
  },
42
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"glorious-gloop.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/glorious-gloop.ts"],"names":[],"mappings":";;;AAGA,mDAAqD;AAErD,0CAA8E;AAGjE,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,mBAAyD;IAClE,mBAAmB,EAAE,YAAY;IACjC,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,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;gBACvD,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const GloriousGloop: StartOfCombatCard = {\r\n\tcardIds: [CardIds.FlobbidinousFloop_GloriousGloop_BGDUO_HERO_101p],\r\n\tstartOfCombatTiming: 'pre-combat',\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\tentityId: input.gameState.sharedState.currentEntityId++,\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"]}
1
+ {"version":3,"file":"glorious-gloop.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/glorious-gloop.ts"],"names":[],"mappings":";;;AAGA,mDAAqD;AAErD,0CAA8E;AAGjE,QAAA,aAAa,GAAsB;IAC/C,OAAO,EAAE,mBAAyD;IAClE,mBAAmB,EAAE,YAAY;IACjC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,qBAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACvE,IAAI,CAAC,CAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,MAAM,CAAA,EAAE;oBAC/B,OAAO,KAAK,CAAC;iBACb;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;;oBAC3C,OAAA,MAAA,CAAC,CAAC,YAAY,0CAAE,IAAI,CACnB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAAkE,CACjF,CAAA;iBAAA,CACD,CAAC;gBACF,IAAI,CAAC,MAAM,EAAE;oBACZ,OAAO,KAAK,CAAC;iBACb;gBAED,MAAM,aAAa,GAAG,IAAA,+BAAuB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;gBAC7F,IAAI,CAAC,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,0CAAE,MAAM,CAAA,EAAE;oBAClC,OAAO,KAAK,CAAC;iBACb;gBACD,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;gBACF,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;gBACF,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;oBACvB,OAAO,KAAK,CAAC;iBACb;gBACD,MAAM,iBAAiB,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAgB,IAAA,2BAAmB,EAC7C;oBACC,GAAG,iBAAiB;oBACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;oBACvD,oBAAoB,EAAE,IAAI;oBAC1B,cAAc,EAAE,KAAK;oBACrB,iBAAiB,EAAE,KAAK;iBACxB,EACD,KAAK,CAAC,SAAS,CAAC,SAAS,CACzB,CAAC;gBACF,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;gBAEF,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC;aACZ;SACD;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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const GloriousGloop: StartOfCombatCard = {\r\n\tcardIds: [CardIds.FlobbidinousFloop_GloriousGloop_BGDUO_HERO_101p],\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (GloriousGloop.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tif (!input.playerBoard?.length) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tconst target = input.playerBoard.find((m) =>\r\n\t\t\t\t\tm.enchantments?.some(\r\n\t\t\t\t\t\t(e) => e.cardId === CardIds.GloriousGloop_InTheGloopEnchantment_BGDUO_HERO_101pe2,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tif (!target) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst teammateState = getTeammateInitialState(input.gameState.gameState, input.playerEntity);\r\n\t\t\t\tif (!teammateState?.board?.length) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tconst highestTier = Math.max(\r\n\t\t\t\t\t...teammateState.board.map((entity) => input.gameState.allCards.getCard(entity.cardId).techLevel),\r\n\t\t\t\t);\r\n\t\t\t\tconst candidates = teammateState.board.filter(\r\n\t\t\t\t\t(entity) => input.gameState.allCards.getCard(entity.cardId).techLevel === highestTier,\r\n\t\t\t\t);\r\n\t\t\t\tif (!candidates.length) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tconst highestTierMinion = pickRandom(candidates);\r\n\t\t\t\tconst clone: BoardEntity = addImpliedMechanics(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...highestTierMinion,\r\n\t\t\t\t\t\tentityId: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\t\tlastAffectedByEntity: null,\r\n\t\t\t\t\t\tdefinitelyDead: false,\r\n\t\t\t\t\t\tattackImmediately: false,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\t);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\ttarget,\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\t// Replace the \"target\" minion with the \"clone\"\r\n\t\t\t\tconst index = input.playerBoard.indexOf(target);\r\n\t\t\t\tinput.playerBoard.splice(index, 1, clone);\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -4,10 +4,13 @@ exports.LightningInvocation = void 0;
4
4
  const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
5
  exports.LightningInvocation = {
6
6
  startOfCombatTiming: 'pre-combat',
7
+ cardIds: ["BG22_HERO_001p_t4", "BG22_HERO_001p_t4_s"],
7
8
  startOfCombat: (trinket, input) => {
8
- if (input.playerEntity.heroPowerUsed) {
9
- (0, deathrattle_effects_1.applyLightningInvocationEnchantment)(input.playerBoard, input.playerEntity, null, input.opponentBoard, input.opponentEntity, input.gameState);
10
- return true;
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.LightningInvocation.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ (0, deathrattle_effects_1.applyLightningInvocationEnchantment)(input.playerBoard, input.playerEntity, null, input.opponentBoard, input.opponentEntity, input.gameState);
12
+ return true;
13
+ }
11
14
  }
12
15
  },
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lightning-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/lightning-invocation.ts"],"names":[],"mappings":";;;AACA,iFAA8F;AAIjF,QAAA,mBAAmB,GAAsB;IACrD,mBAAmB,EAAE,YAAY;IACjC,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const LightningInvocation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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"]}
1
+ {"version":3,"file":"lightning-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/lightning-invocation.ts"],"names":[],"mappings":";;;AAEA,iFAA8F;AAIjF,QAAA,mBAAmB,GAAsB;IACrD,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,4CAA+D;IACxE,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,2BAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBAC7E,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;gBACF,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { 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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const LightningInvocation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.LightningInvocationToken, CardIds.LightningInvocation],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (LightningInvocation.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tapplyLightningInvocationEnchantment(\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tnull,\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\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -4,23 +4,25 @@ exports.RapidReanimation = void 0;
4
4
  const utils_1 = require("../../../utils");
5
5
  exports.RapidReanimation = {
6
6
  startOfCombatTiming: 'pre-combat',
7
+ cardIds: ["BG25_HERO_103p"],
7
8
  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
- input.playerEntity.rapidReanimationMinion = minionToCopy;
21
- minionThatWillDie.definitelyDead = true;
22
- input.gameState.spectator.registerPowerTarget(input.playerEntity, minionThatWillDie, input.playerBoard, input.playerEntity, input.opponentEntity);
23
- return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.RapidReanimation.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ const minionThatWillDie = input.playerBoard
12
+ .filter((m) => m.enchantments.some((e) => e.cardId === "BG25_HERO_103pe"))
13
+ .sort((a, b) => b.enchantments.find((e) => e.cardId === "BG25_HERO_103pe")
14
+ .originEntityId -
15
+ a.enchantments.find((e) => e.cardId === "BG25_HERO_103pe").originEntityId || b.entityId - a.entityId)[0];
16
+ if (minionThatWillDie) {
17
+ const rapidReanimationIndexFromLeft = input.playerBoard.indexOf(minionThatWillDie);
18
+ input.playerEntity.rapidReanimationIndexFromRight =
19
+ input.playerBoard.length - 1 - rapidReanimationIndexFromLeft;
20
+ const minionToCopy = (0, utils_1.copyEntity)(minionThatWillDie);
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
+ }
24
26
  }
25
27
  }
26
28
  },
@@ -1 +1 @@
1
- {"version":3,"file":"rapid-reanimation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/rapid-reanimation.ts"],"names":[],"mappings":";;;AAGA,0CAA4C;AAG/B,QAAA,gBAAgB,GAAsB;IAClD,mBAAmB,EAAE,YAAY;IACjC,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;gBAGnD,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 { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { copyEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const RapidReanimation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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\t// We don't reapply auras when resummoning\r\n\t\t\t\t// removeAurasFromSelf(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"]}
1
+ {"version":3,"file":"rapid-reanimation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/rapid-reanimation.ts"],"names":[],"mappings":";;;AAGA,0CAA4C;AAG/B,QAAA,gBAAgB,GAAsB;IAClD,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,kBAAyC;IAClD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,wBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBAM1E,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW;qBACzC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAuD,CAAC,CAC3F;qBACA,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;qBACzF,cAAc;oBACf,CAAC,CAAC,YAAY,CAAC,IAAI,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAAuD,CACtE,CAAC,cAAc,IAAI,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAC7C,CAAC,CAAC,CAAC,CAAC;gBACN,IAAI,iBAAiB,EAAE;oBAUtB,MAAM,6BAA6B,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBACnF,KAAK,CAAC,YAAY,CAAC,8BAA8B;wBAChD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,6BAA6B,CAAC;oBAC9D,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,iBAAiB,CAAC,CAAC;oBAGnD,KAAK,CAAC,YAAY,CAAC,sBAAsB,GAAG,YAAY,CAAC;oBACzD,iBAAiB,CAAC,cAAc,GAAG,IAAI,CAAC;oBACxC,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;oBACF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;iBACpE;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { copyEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const RapidReanimation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.TeronGorefiend_RapidReanimation],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (RapidReanimation.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\t// Getting the right enchantment can be tricky. The RapidReanimation enchantment can sometimes be\r\n\t\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\t// enchantments\r\n\t\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\t// with the biggest entityId\r\n\t\t\t\tconst minionThatWillDie = input.playerBoard\r\n\t\t\t\t\t.filter((m) =>\r\n\t\t\t\t\t\tm.enchantments.some((e) => e.cardId === CardIds.RapidReanimation_ImpendingDeathEnchantment),\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.sort(\r\n\t\t\t\t\t\t(a, b) =>\r\n\t\t\t\t\t\t\tb.enchantments.find((e) => e.cardId === CardIds.RapidReanimation_ImpendingDeathEnchantment)\r\n\t\t\t\t\t\t\t\t.originEntityId -\r\n\t\t\t\t\t\t\t\ta.enchantments.find(\r\n\t\t\t\t\t\t\t\t\t(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\t)[0];\r\n\t\t\t\tif (minionThatWillDie) {\r\n\t\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\t// on minions that they want to die quickly, most of the time they will be placed\r\n\t\t\t\t\t// to the left of the board\r\n\t\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\t// Update: this looks like it's not the case, and looking at\r\n\t\t\t\t\t// http://replays.firestoneapp.com/?reviewId=2e6b389f-d904-43a2-a7cd-928a60d973ce&turn=11&action=1\r\n\t\t\t\t\t// the index seems to be right-based at least in some cases\r\n\t\t\t\t\t// Looks like even this is wrong:\r\n\t\t\t\t\t// http://replays.firestoneapp.com/?reviewId=9a46ab39-ccf0-478c-a010-68f2abb06c6f&turn=9&action=0\r\n\t\t\t\t\tconst rapidReanimationIndexFromLeft = input.playerBoard.indexOf(minionThatWillDie);\r\n\t\t\t\t\tinput.playerEntity.rapidReanimationIndexFromRight =\r\n\t\t\t\t\t\tinput.playerBoard.length - 1 - rapidReanimationIndexFromLeft;\r\n\t\t\t\t\tconst minionToCopy = copyEntity(minionThatWillDie);\r\n\t\t\t\t\t// We don't reapply auras when resummoning\r\n\t\t\t\t\t// removeAurasFromSelf(minionToCopy, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\t\tinput.playerEntity.rapidReanimationMinion = minionToCopy;\r\n\t\t\t\t\tminionThatWillDie.definitelyDead = true;\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\tminionThatWillDie,\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\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -4,16 +4,19 @@ exports.RebornRites = void 0;
4
4
  const reborn_1 = require("../../../keywords/reborn");
5
5
  exports.RebornRites = {
6
6
  startOfCombatTiming: 'pre-combat',
7
+ cardIds: ["TB_BaconShop_HP_024"],
7
8
  startOfCombat: (trinket, input) => {
8
- if (input.playerEntity.heroPowerUsed) {
9
- const targetEntityId = input.playerEntity.heroPowerInfo;
10
- const target = input.playerBoard.find((entity) => entity.entityId === targetEntityId);
11
- if (!target || target.reborn) {
12
- return false;
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.RebornRites.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ const targetEntityId = heroPower.info;
12
+ const target = input.playerBoard.find((entity) => entity.entityId === targetEntityId);
13
+ if (!target || target.reborn) {
14
+ return false;
15
+ }
16
+ (0, reborn_1.updateReborn)(target, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
17
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
18
+ return true;
13
19
  }
14
- (0, reborn_1.updateReborn)(target, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);
15
- input.gameState.spectator.registerPowerTarget(input.playerEntity, target, input.playerBoard, input.playerEntity, input.opponentEntity);
16
- return true;
17
20
  }
18
21
  },
19
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"reborn-rites.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/reborn-rites.ts"],"names":[],"mappings":";;;AACA,qDAAwD;AAI3C,QAAA,WAAW,GAAsB;IAC7C,mBAAmB,EAAE,YAAY;IACjC,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,IAAA,qBAAY,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACzG,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 { updateReborn } from '../../../keywords/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const RebornRites: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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\tupdateReborn(target, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);\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"]}
1
+ {"version":3,"file":"reborn-rites.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/reborn-rites.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,WAAW,GAAsB;IAC7C,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,uBAAqB;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,mBAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACrE,MAAM,cAAc,GAAG,SAAS,CAAC,IAAc,CAAC;gBAChD,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;gBACtF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;oBAC7B,OAAO,KAAK,CAAC;iBACb;gBAED,IAAA,qBAAY,EACX,MAAM,EACN,IAAI,EACJ,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,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;gBACF,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const RebornRites: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.RebornRites],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (RebornRites.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tconst targetEntityId = heroPower.info as number;\r\n\t\t\t\tconst target = input.playerBoard.find((entity) => entity.entityId === targetEntityId);\r\n\t\t\t\tif (!target || target.reborn) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tupdateReborn(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\ttrue,\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\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\ttarget,\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"]}
@@ -4,7 +4,7 @@ exports.Tentacular = void 0;
4
4
  exports.Tentacular = {
5
5
  startOfCombatTiming: 'pre-combat',
6
6
  startOfCombat: (trinket, input) => {
7
- input.playerEntity.heroPowerActivated = false;
7
+ input.playerEntity.heroPowers.find((h) => h.cardId === "BG23_HERO_201p").activated = false;
8
8
  return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
9
9
  },
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tentacular.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/tentacular.ts"],"names":[],"mappings":";;;AAIa,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,YAAY;IACjC,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Tentacular: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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"]}
1
+ {"version":3,"file":"tentacular.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/tentacular.ts"],"names":[],"mappings":";;;AAKa,QAAA,UAAU,GAAsB;IAC5C,mBAAmB,EAAE,YAAY;IACjC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,qBAA8B,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;QACpG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Tentacular: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tinput.playerEntity.heroPowers.find((h) => h.cardId === CardIds.Ozumat_Tentacular).activated = false;\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n};\r\n"]}
@@ -4,10 +4,13 @@ exports.WaterInvocation = void 0;
4
4
  const deathrattle_effects_1 = require("../../../simulation/deathrattle-effects");
5
5
  exports.WaterInvocation = {
6
6
  startOfCombatTiming: 'pre-combat',
7
+ cardIds: ["BG22_HERO_001p_t3", "BG22_HERO_001p_t3_s"],
7
8
  startOfCombat: (trinket, input) => {
8
- if (input.playerEntity.heroPowerUsed) {
9
- (0, deathrattle_effects_1.applyWaterInvocationEnchantment)(input.playerBoard, input.playerEntity, null, null, input.playerEntity, input.gameState);
10
- return true;
9
+ for (const heroPower of input.playerEntity.heroPowers) {
10
+ if (exports.WaterInvocation.cardIds.includes(heroPower.cardId) && heroPower.used) {
11
+ (0, deathrattle_effects_1.applyWaterInvocationEnchantment)(input.playerBoard, input.playerEntity, null, null, input.playerEntity, input.gameState);
12
+ return true;
13
+ }
11
14
  }
12
15
  },
13
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"water-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/water-invocation.ts"],"names":[],"mappings":";;;AACA,iFAA0F;AAI7E,QAAA,eAAe,GAAsB;IACjD,mBAAmB,EAAE,YAAY;IACjC,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,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaterInvocation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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\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"]}
1
+ {"version":3,"file":"water-invocation.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/water-invocation.ts"],"names":[],"mappings":";;;AAEA,iFAA0F;AAI7E,QAAA,eAAe,GAAsB;IACjD,mBAAmB,EAAE,YAAY;IACjC,OAAO,EAAE,4CAAuD;IAChE,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE;YACtD,IAAI,uBAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE;gBACzE,IAAA,qDAA+B,EAC9B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,IAAI,EACJ,IAAI,EACJ,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,OAAO,IAAI,CAAC;aACZ;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { 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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaterInvocation: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.WaterInvocationToken, CardIds.WaterInvocation],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (WaterInvocation.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tapplyWaterInvocationEnchantment(\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.gameState,\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"]}
@@ -7,27 +7,30 @@ const stats_1 = require("../../../simulation/stats");
7
7
  const utils_2 = require("../../../utils");
8
8
  exports.WaxWarband = {
9
9
  startOfCombatTiming: 'pre-combat',
10
+ cardIds: ["TB_BaconShop_HP_037a"],
10
11
  startOfCombat: (trinket, input) => {
11
- if (input.playerEntity.heroPowerUsed) {
12
- if (input.playerBoard.length > 0) {
13
- const boardWithTribes = input.playerBoard.filter((e) => !!(0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards).length);
14
- const boardWithoutAll = boardWithTribes.filter((e) => {
15
- var _a;
16
- return !((_a = (0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL));
17
- });
18
- const selectedMinions = selectMinions(boardWithoutAll, reference_data_1.ALL_BG_RACES, input.gameState.allCards);
19
- const allMinions = [
20
- ...selectedMinions,
21
- ...boardWithTribes.filter((e) => {
12
+ for (const heroPower of input.playerEntity.heroPowers) {
13
+ if (exports.WaxWarband.cardIds.includes(heroPower.cardId) && heroPower.used) {
14
+ if (input.playerBoard.length > 0) {
15
+ const boardWithTribes = input.playerBoard.filter((e) => !!(0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards).length);
16
+ const boardWithoutAll = boardWithTribes.filter((e) => {
22
17
  var _a;
23
- return (_a = (0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL);
24
- }),
25
- ];
26
- allMinions.forEach((e) => {
27
- (0, stats_1.modifyStats)(e, input.gameState.cardsData.getTavernLevel(e.cardId), input.gameState.cardsData.getTavernLevel(e.cardId), input.playerBoard, input.playerEntity, input.gameState);
28
- input.gameState.spectator.registerPowerTarget(input.playerEntity, e, input.playerBoard, input.playerEntity, input.opponentEntity);
29
- });
30
- return true;
18
+ return !((_a = (0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL));
19
+ });
20
+ const selectedMinions = selectMinions(boardWithoutAll, reference_data_1.ALL_BG_RACES, input.gameState.allCards);
21
+ const allMinions = [
22
+ ...selectedMinions,
23
+ ...boardWithTribes.filter((e) => {
24
+ var _a;
25
+ return (_a = (0, utils_2.getEffectiveTribesForEntity)(e, input.playerEntity, input.gameState.allCards)) === null || _a === void 0 ? void 0 : _a.includes(reference_data_1.Race.ALL);
26
+ }),
27
+ ];
28
+ allMinions.forEach((e) => {
29
+ (0, stats_1.modifyStats)(e, input.gameState.cardsData.getTavernLevel(e.cardId), input.gameState.cardsData.getTavernLevel(e.cardId), input.playerBoard, input.playerEntity, input.gameState);
30
+ input.gameState.spectator.registerPowerTarget(input.playerEntity, e, input.playerBoard, input.playerEntity, input.opponentEntity);
31
+ });
32
+ return true;
33
+ }
31
34
  }
32
35
  }
33
36
  },
@@ -1 +1 @@
1
- {"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":"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","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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaxWarband: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\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) =>\r\n\t\t\t\t\t\t!getEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards)?.includes(\r\n\t\t\t\t\t\t\tRace.ALL,\r\n\t\t\t\t\t\t),\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\tgetEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards)?.includes(\r\n\t\t\t\t\t\t\tRace.ALL,\r\n\t\t\t\t\t\t),\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"]}
1
+ {"version":3,"file":"wax-warband.js","sourceRoot":"","sources":["../../../../src/cards/impl/hero-power/wax-warband.ts"],"names":[],"mappings":"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","sourcesContent":["import { ALL_BG_RACES, AllCardsService, CardIds, 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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const WaxWarband: StartOfCombatCard = {\r\n\tstartOfCombatTiming: 'pre-combat',\r\n\tcardIds: [CardIds.WaxWarband],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tfor (const heroPower of input.playerEntity.heroPowers) {\r\n\t\t\tif (WaxWarband.cardIds.includes(heroPower.cardId) && heroPower.used) {\r\n\t\t\t\tif (input.playerBoard.length > 0) {\r\n\t\t\t\t\tconst boardWithTribes = input.playerBoard.filter(\r\n\t\t\t\t\t\t(e) => !!getEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards).length,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst boardWithoutAll = boardWithTribes.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\t!getEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards)?.includes(\r\n\t\t\t\t\t\t\t\tRace.ALL,\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tconst selectedMinions = selectMinions(boardWithoutAll, ALL_BG_RACES, input.gameState.allCards);\r\n\t\t\t\t\tconst allMinions = [\r\n\t\t\t\t\t\t...selectedMinions,\r\n\t\t\t\t\t\t...boardWithTribes.filter((e) =>\r\n\t\t\t\t\t\t\tgetEffectiveTribesForEntity(e, input.playerEntity, input.gameState.allCards)?.includes(\r\n\t\t\t\t\t\t\t\tRace.ALL,\r\n\t\t\t\t\t\t\t),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t];\r\n\t\t\t\t\tallMinions.forEach((e) => {\r\n\t\t\t\t\t\tmodifyStats(\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(e.cardId),\r\n\t\t\t\t\t\t\tinput.gameState.cardsData.getTavernLevel(e.cardId),\r\n\t\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\te,\r\n\t\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\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"]}
@@ -27,7 +27,7 @@ exports.Battlecruiser = {
27
27
  },
28
28
  rebornEffect: (minion, input) => {
29
29
  var _a;
30
- const ultraCapacitor = (_a = minion.enchantments) === null || _a === void 0 ? void 0 : _a.find((e) => e.cardId === "BG31_HERO_801ptje");
30
+ const ultraCapacitor = (_a = input.initialEntity.enchantments) === null || _a === void 0 ? void 0 : _a.find((e) => e.cardId === "BG31_HERO_801ptje");
31
31
  if (!ultraCapacitor) {
32
32
  return;
33
33
  }
@@ -45,7 +45,7 @@ exports.Battlecruiser = {
45
45
  var _a;
46
46
  const advancedBallistics = (_a = minion.enchantments) === null || _a === void 0 ? void 0 : _a.find((e) => e.cardId === "BG31_HERO_801ptde");
47
47
  if (!advancedBallistics) {
48
- return;
48
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
49
49
  }
50
50
  const buff = advancedBallistics.tagScriptDataNum1;
51
51
  const targets = input.attackingBoard.filter((entity) => entity !== minion);
@@ -1 +1 @@
1
- {"version":3,"file":"battlecruiser.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/battlecruiser.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getRandomMinionWithHighestHealth } from '../../../utils';\r\nimport { DeathrattleEffectCard, OnAttackCard, RebornEffectCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Battlecruiser: StartOfCombatCard & RebornEffectCard & OnAttackCard & DeathrattleEffectCard = {\r\n\tcardIds: [CardIds.LiftOff_BattlecruiserToken_BG31_HERO_801pt, CardIds.Battlecruiser_BG31_HERO_801pt_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst yamatoCannon = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.YamatoCannon_YamatoCannonEnchantment_BG31_HERO_801ptce,\r\n\t\t);\r\n\t\tif (!yamatoCannon) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst damage = yamatoCannon.tagScriptDataNum1;\r\n\t\tconst target = getRandomMinionWithHighestHealth(input.opponentBoard);\r\n\t\tif (!!target) {\r\n\t\t\tconst loops = !!minion.enchantments.find(\r\n\t\t\t\t(e) => e.cardId === CardIds.Battlecruiser_MissilePod_BG31_HERO_801pti,\r\n\t\t\t)\r\n\t\t\t\t? 2\r\n\t\t\t\t: 1;\r\n\t\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t\tdealDamageToMinion(\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\tminion,\r\n\t\t\t\t\tdamage,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\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\ttarget,\r\n\t\t\t\t\tinput.opponentBoard,\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\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\tconst ultraCapacitor = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.UltraCapacitor_UltraCapacitorEnchantment_BG31_HERO_801ptje,\r\n\t\t);\r\n\t\tif (!ultraCapacitor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.enchantments = input.initialEntity.enchantments;\r\n\t\tminion.attack = input.initialEntity.maxAttack;\r\n\t\tminion.maxAttack = input.initialEntity.maxAttack;\r\n\t\tminion.health = input.initialEntity.maxHealth;\r\n\t\tminion.maxHealth = input.initialEntity.maxHealth;\r\n\t\tminion.divineShield = input.initialEntity.hadDivineShield;\r\n\t\tminion.taunt = input.initialEntity.taunt;\r\n\t\tminion.windfury = input.initialEntity.windfury;\r\n\t\tminion.poisonous = input.initialEntity.poisonous;\r\n\t},\r\n\tonAttack: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnAttackInput,\r\n\t): {\r\n\t\tdmgDoneByAttacker: number;\r\n\t\tdmgDoneByDefender: number;\r\n\t} => {\r\n\t\tconst advancedBallistics = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.AdvancedBallistics_AdvancedBallisticsEnchantment_BG31_HERO_801ptde,\r\n\t\t);\r\n\t\tif (!advancedBallistics) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst buff = advancedBallistics.tagScriptDataNum1;\r\n\t\tconst targets = input.attackingBoard.filter((entity) => entity !== minion);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst caduceusReactor = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.CaduceusReactor_CaduceusReactorEnchantment_BG31_HERO_801ptee,\r\n\t\t);\r\n\t\tif (!caduceusReactor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst target = input.boardWithDeadEntity[0];\r\n\t\tif (!target) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst buff = caduceusReactor.tagScriptDataNum1;\r\n\t\tmodifyStats(target, buff, buff, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"battlecruiser.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/battlecruiser.ts"],"names":[],"mappings":";;;AAEA,uDAAgE;AAKhE,qDAAwD;AACxD,0CAAkE;AAGrD,QAAA,aAAa,GAAgF;IACzG,OAAO,EAAE,wCAA6F;IACtG,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QACvD,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAAmE,CAClF,CAAC;QACF,IAAI,CAAC,YAAY,EAAE;YAClB,OAAO,KAAK,CAAC;SACb;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAA,wCAAgC,EAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,uBAAsD,CACrE;gBACA,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAC;YACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAA,2BAAkB,EACjB,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;aACF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IACD,YAAY,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;;QAC/D,MAAM,cAAc,GAAG,MAAA,KAAK,CAAC,aAAa,CAAC,YAAY,0CAAE,IAAI,CAC5D,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAAuE,CACtF,CAAC;QACF,IAAI,CAAC,cAAc,EAAE;YACpB,OAAO;SACP;QAED,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC;QACvD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QAC9C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QACjD,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QAC9C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QACjD,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;QAC1D,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC;QACzC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;IAClD,CAAC;IACD,QAAQ,EAAE,CACT,MAAmB,EACnB,KAAoB,EAInB,EAAE;;QACH,MAAM,kBAAkB,GAAG,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CACnD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAA+E,CAC9F,CAAC;QACF,IAAI,CAAC,kBAAkB,EAAE;YACxB,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,iBAAiB,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QAC3E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACzF;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;IACD,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;;QAC5E,MAAM,eAAe,GAAG,MAAA,MAAM,CAAC,YAAY,0CAAE,IAAI,CAChD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,wBAAyE,CACxF,CAAC;QACF,IAAI,CAAC,eAAe,EAAE;YACrB,OAAO;SACP;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE;YACZ,OAAO;SACP;QAED,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC;QAC/C,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5G,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getRandomMinionWithHighestHealth } from '../../../utils';\r\nimport { DeathrattleEffectCard, OnAttackCard, RebornEffectCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Battlecruiser: StartOfCombatCard & RebornEffectCard & OnAttackCard & DeathrattleEffectCard = {\r\n\tcardIds: [CardIds.LiftOff_BattlecruiserToken_BG31_HERO_801pt, CardIds.Battlecruiser_BG31_HERO_801pt_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst yamatoCannon = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.YamatoCannon_YamatoCannonEnchantment_BG31_HERO_801ptce,\r\n\t\t);\r\n\t\tif (!yamatoCannon) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst damage = yamatoCannon.tagScriptDataNum1;\r\n\t\tconst target = getRandomMinionWithHighestHealth(input.opponentBoard);\r\n\t\tif (!!target) {\r\n\t\t\tconst loops = !!minion.enchantments.find(\r\n\t\t\t\t(e) => e.cardId === CardIds.Battlecruiser_MissilePod_BG31_HERO_801pti,\r\n\t\t\t)\r\n\t\t\t\t? 2\r\n\t\t\t\t: 1;\r\n\t\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t\tdealDamageToMinion(\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\tminion,\r\n\t\t\t\t\tdamage,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\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\ttarget,\r\n\t\t\t\t\tinput.opponentBoard,\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\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\tconst ultraCapacitor = input.initialEntity.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.UltraCapacitor_UltraCapacitorEnchantment_BG31_HERO_801ptje,\r\n\t\t);\r\n\t\tif (!ultraCapacitor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.enchantments = input.initialEntity.enchantments;\r\n\t\tminion.attack = input.initialEntity.maxAttack;\r\n\t\tminion.maxAttack = input.initialEntity.maxAttack;\r\n\t\tminion.health = input.initialEntity.maxHealth;\r\n\t\tminion.maxHealth = input.initialEntity.maxHealth;\r\n\t\tminion.divineShield = input.initialEntity.hadDivineShield;\r\n\t\tminion.taunt = input.initialEntity.taunt;\r\n\t\tminion.windfury = input.initialEntity.windfury;\r\n\t\tminion.poisonous = input.initialEntity.poisonous;\r\n\t},\r\n\tonAttack: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnAttackInput,\r\n\t): {\r\n\t\tdmgDoneByAttacker: number;\r\n\t\tdmgDoneByDefender: number;\r\n\t} => {\r\n\t\tconst advancedBallistics = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.AdvancedBallistics_AdvancedBallisticsEnchantment_BG31_HERO_801ptde,\r\n\t\t);\r\n\t\tif (!advancedBallistics) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst buff = advancedBallistics.tagScriptDataNum1;\r\n\t\tconst targets = input.attackingBoard.filter((entity) => entity !== minion);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst caduceusReactor = minion.enchantments?.find(\r\n\t\t\t(e) => e.cardId === CardIds.CaduceusReactor_CaduceusReactorEnchantment_BG31_HERO_801ptee,\r\n\t\t);\r\n\t\tif (!caduceusReactor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst target = input.boardWithDeadEntity[0];\r\n\t\tif (!target) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst buff = caduceusReactor.tagScriptDataNum1;\r\n\t\tmodifyStats(target, buff, buff, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -5,7 +5,7 @@ const stats_1 = require("../../../simulation/stats");
5
5
  exports.CorruptedMyrmidon = {
6
6
  cardIds: ["BG23_012", "BG23_012_G"],
7
7
  startOfCombat: (minion, input) => {
8
- const multiplier = minion.cardId === "BG23_012_G" ? 3 : 2;
8
+ const multiplier = minion.cardId === "BG23_012_G" ? 2 : 1;
9
9
  (0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
10
10
  input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
11
11
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"corrupted-myrmidon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/corrupted-myrmidon.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,0BAA0E;IACnF,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const CorruptedMyrmidon: StartOfCombatCard = {\r\n\tcardIds: [CardIds.CorruptedMyrmidon_BG23_012, CardIds.CorruptedMyrmidon_BG23_012_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.CorruptedMyrmidon_BG23_012_G ? 3 : 2;\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"]}
1
+ {"version":3,"file":"corrupted-myrmidon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/corrupted-myrmidon.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,0BAA0E;IACnF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QAEvD,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const CorruptedMyrmidon: StartOfCombatCard = {\r\n\tcardIds: [CardIds.CorruptedMyrmidon_BG23_012, CardIds.CorruptedMyrmidon_BG23_012_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// We add these stats\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"]}
@@ -5,6 +5,9 @@ const stats_1 = require("../../../simulation/stats");
5
5
  exports.Mutalisk = {
6
6
  cardIds: ["BG31_HERO_811t6", "BG31_HERO_811t6_G"],
7
7
  onMinionKilled: (minion, input) => {
8
+ if (!minion.attacking) {
9
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
10
+ }
8
11
  const mult = minion.cardId === "BG31_HERO_811t6_G" ? 2 : 1;
9
12
  (0, stats_1.modifyStats)(minion, 4 * mult, 4 * mult, input.attackingBoard, input.attackingHero, input.gameState);
10
13
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"mutalisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mutalisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,QAAQ,GAAuB;IAC3C,OAAO,EAAE,wCAAiG;IAC1G,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACpG,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const Mutalisk: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_MutaliskToken_BG31_HERO_811t6, CardIds.Mutalisk_BG31_HERO_811t6_G],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tconst mult = minion.cardId === CardIds.Mutalisk_BG31_HERO_811t6_G ? 2 : 1;\r\n\t\tmodifyStats(minion, 4 * mult, 4 * mult, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"mutalisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mutalisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,QAAQ,GAAuB;IAC3C,OAAO,EAAE,wCAAiG;IAC1G,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACtB,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACpG,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const Mutalisk: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_MutaliskToken_BG31_HERO_811t6, CardIds.Mutalisk_BG31_HERO_811t6_G],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (!minion.attacking) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst mult = minion.cardId === CardIds.Mutalisk_BG31_HERO_811t6_G ? 2 : 1;\r\n\t\tmodifyStats(minion, 4 * mult, 4 * mult, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -5,7 +5,7 @@ const stats_1 = require("../../../simulation/stats");
5
5
  exports.Ultralisk = {
6
6
  cardIds: ["BG31_HERO_811t10", "BG31_HERO_811t10_G"],
7
7
  startOfCombat: (minion, input) => {
8
- const multiplier = minion.cardId === "BG31_HERO_811t10_G" ? 3 : 2;
8
+ const multiplier = minion.cardId === "BG31_HERO_811t10_G" ? 2 : 1;
9
9
  (0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
10
10
  input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
11
11
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"ultralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ultralisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,0CAAqG;IAC9G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAW,EAAE;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,yBAAyC,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Ultralisk: StartOfCombatCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_UltraliskToken_BG31_HERO_811t10, CardIds.Ultralisk_BG31_HERO_811t10_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput): boolean => {\r\n\t\tconst multiplier = minion.cardId === CardIds.Ultralisk_BG31_HERO_811t10_G ? 3 : 2;\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"]}
1
+ {"version":3,"file":"ultralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ultralisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,0CAAqG;IAC9G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAW,EAAE;QAEhE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,yBAAyC,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\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Ultralisk: StartOfCombatCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_UltraliskToken_BG31_HERO_811t10, CardIds.Ultralisk_BG31_HERO_811t10_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput): boolean => {\r\n\t\t// We add the stats, so mults are -1\r\n\t\tconst multiplier = minion.cardId === CardIds.Ultralisk_BG31_HERO_811t10_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"]}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildGameAction = void 0;
4
4
  const buildGameAction = (playerHero, opponentHero, action) => {
5
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15;
5
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
6
6
  const isPlayerSireD = (_a = playerHero === null || playerHero === void 0 ? void 0 : playerHero.cardId) === null || _a === void 0 ? void 0 : _a.startsWith("BG24_HERO_100");
7
7
  const isOpponentSireD = (_b = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.cardId) === null || _b === void 0 ? void 0 : _b.startsWith("BG24_HERO_100");
8
8
  const result = {
@@ -27,19 +27,19 @@ const buildGameAction = (playerHero, opponentHero, action) => {
27
27
  opponentSecrets: ((_y = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.secrets) !== null && _y !== void 0 ? _y : []).filter((s) => !s.triggered),
28
28
  opponentCardId: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.cardId,
29
29
  opponentEntityId: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.entityId,
30
- opponentHeroPowerCardId: (_3 = (_0 = (_z = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.trinkets.find((t) => t.scriptDataNum6 === 3)) === null || _z === void 0 ? void 0 : _z.cardId) !== null && _0 !== void 0 ? _0 : (isOpponentSireD ? (_2 = (_1 = opponentHero.questRewardEntities) === null || _1 === void 0 ? void 0 : _1[0]) === null || _2 === void 0 ? void 0 : _2.cardId : null)) !== null && _3 !== void 0 ? _3 : opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerId,
30
+ opponentHeroPowerCardId: (_5 = (_3 = (_0 = (_z = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.trinkets.find((t) => t.scriptDataNum6 === 3)) === null || _z === void 0 ? void 0 : _z.cardId) !== null && _0 !== void 0 ? _0 : (isOpponentSireD ? (_2 = (_1 = opponentHero.questRewardEntities) === null || _1 === void 0 ? void 0 : _1[0]) === null || _2 === void 0 ? void 0 : _2.cardId : null)) !== null && _3 !== void 0 ? _3 : (_4 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowers[0]) === null || _4 === void 0 ? void 0 : _4.cardId) !== null && _5 !== void 0 ? _5 : opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerId,
31
31
  opponentHeroPowerEntityId: 200000002,
32
32
  opponentHeroPowerUsed: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowerUsed,
33
33
  opponentHeroPowers: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.heroPowers,
34
- opponentRewardCardId: isOpponentSireD && ((_4 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _4 === void 0 ? void 0 : _4.length) < 2
34
+ opponentRewardCardId: isOpponentSireD && ((_6 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _6 === void 0 ? void 0 : _6.length) < 2
35
35
  ? null
36
- : (_7 = (_6 = (_5 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _5 === void 0 ? void 0 : _5[1]) === null || _6 === void 0 ? void 0 : _6.cardId) !== null && _7 !== void 0 ? _7 : (_8 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewards) === null || _8 === void 0 ? void 0 : _8[0],
37
- opponentRewardEntityId: isOpponentSireD && ((_9 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _9 === void 0 ? void 0 : _9.length) < 2
36
+ : (_9 = (_8 = (_7 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _7 === void 0 ? void 0 : _7[1]) === null || _8 === void 0 ? void 0 : _8.cardId) !== null && _9 !== void 0 ? _9 : (_10 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewards) === null || _10 === void 0 ? void 0 : _10[0],
37
+ opponentRewardEntityId: isOpponentSireD && ((_11 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _11 === void 0 ? void 0 : _11.length) < 2
38
38
  ? null
39
- : (_11 = (_10 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _10 === void 0 ? void 0 : _10[1]) === null || _11 === void 0 ? void 0 : _11.entityId,
40
- opponentRewardData: isOpponentSireD && ((_12 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _12 === void 0 ? void 0 : _12.length) < 2
39
+ : (_13 = (_12 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _12 === void 0 ? void 0 : _12[1]) === null || _13 === void 0 ? void 0 : _13.entityId,
40
+ opponentRewardData: isOpponentSireD && ((_14 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _14 === void 0 ? void 0 : _14.length) < 2
41
41
  ? null
42
- : (_15 = (_14 = (_13 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _13 === void 0 ? void 0 : _13[0]) === null || _14 === void 0 ? void 0 : _14.scriptDataNum1) !== null && _15 !== void 0 ? _15 : 0,
42
+ : (_17 = (_16 = (_15 = opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.questRewardEntities) === null || _15 === void 0 ? void 0 : _15[0]) === null || _16 === void 0 ? void 0 : _16.scriptDataNum1) !== null && _17 !== void 0 ? _17 : 0,
43
43
  opponentTrinkets: opponentHero === null || opponentHero === void 0 ? void 0 : opponentHero.trinkets,
44
44
  };
45
45
  return result;