@firestone-hs/simulate-bgs-battle 1.1.708 → 1.1.709

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 (48) hide show
  1. package/dist/cards/impl/bg-spell/back-to-back.js +3 -5
  2. package/dist/cards/impl/bg-spell/back-to-back.js.map +1 -1
  3. package/dist/cards/impl/bg-spell/ophidian-staff.js +1 -1
  4. package/dist/cards/impl/bg-spell/ophidian-staff.js.map +1 -1
  5. package/dist/cards/impl/bg-spell/queens-command.js +1 -1
  6. package/dist/cards/impl/bg-spell/queens-command.js.map +1 -1
  7. package/dist/cards/impl/minion/bronze-chromadrake.js +1 -2
  8. package/dist/cards/impl/minion/bronze-chromadrake.js.map +1 -1
  9. package/dist/cards/impl/minion/diremuck-forager.js +4 -1
  10. package/dist/cards/impl/minion/diremuck-forager.js.map +1 -1
  11. package/dist/cards/impl/minion/forsaken-weaver.js +1 -1
  12. package/dist/cards/impl/minion/forsaken-weaver.js.map +1 -1
  13. package/dist/cards/impl/minion/green-chromadrake.js +1 -2
  14. package/dist/cards/impl/minion/green-chromadrake.js.map +1 -1
  15. package/dist/cards/impl/minion/moonsteel-juggernaut.js +0 -1
  16. package/dist/cards/impl/minion/moonsteel-juggernaut.js.map +1 -1
  17. package/dist/cards/impl/minion/ring-bearer.d.ts +2 -2
  18. package/dist/cards/impl/minion/ring-bearer.js +11 -16
  19. package/dist/cards/impl/minion/ring-bearer.js.map +1 -1
  20. package/dist/cards/impl/minion/ship-jumper.d.ts +2 -2
  21. package/dist/cards/impl/minion/ship-jumper.js +25 -6
  22. package/dist/cards/impl/minion/ship-jumper.js.map +1 -1
  23. package/dist/cards/impl/spellcraft/deep-blues.js +1 -1
  24. package/dist/cards/impl/spellcraft/deep-blues.js.map +1 -1
  25. package/dist/cards/impl/trinket/bewitched-ribbon.js +1 -2
  26. package/dist/cards/impl/trinket/bewitched-ribbon.js.map +1 -1
  27. package/dist/cards/impl/trinket/bluegill-flippers.js +2 -2
  28. package/dist/cards/impl/trinket/bluegill-flippers.js.map +1 -1
  29. package/dist/cards/impl/trinket/bubble-crown.js +2 -2
  30. package/dist/cards/impl/trinket/bubble-crown.js.map +1 -1
  31. package/dist/cards/impl/trinket/copper-coil.js +1 -1
  32. package/dist/cards/impl/trinket/copper-coil.js.map +1 -1
  33. package/dist/cards/impl/trinket/eternal-portrait.d.ts +1 -1
  34. package/dist/cards/impl/trinket/eternal-portrait.js +1 -1
  35. package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
  36. package/dist/cards/impl/trinket/lorewalker-scroll.js +3 -3
  37. package/dist/cards/impl/trinket/lorewalker-scroll.js.map +1 -1
  38. package/dist/cards/impl/trinket/miniature-ship.js +1 -1
  39. package/dist/cards/impl/trinket/miniature-ship.js.map +1 -1
  40. package/dist/simulation/avenge.js +3 -1
  41. package/dist/simulation/avenge.js.map +1 -1
  42. package/dist/simulation/damage-effects.js +1 -1
  43. package/dist/simulation/damage-effects.js.map +1 -1
  44. package/dist/simulation/deathrattle-spawns.js +1 -1
  45. package/dist/simulation/deathrattle-spawns.js.map +1 -1
  46. package/dist/simulation/spawn-fail.js +1 -1
  47. package/dist/simulation/spawn-fail.js.map +1 -1
  48. package/package.json +1 -1
@@ -15,14 +15,12 @@ exports.BackToBack = {
15
15
  }
16
16
  if (!target)
17
17
  return;
18
- const { attack, health } = (0, utils_2.withTavernSpellStatBuff)(input.hero, 4, 4, input.gameState.allCards, input.spellCardId);
19
18
  const previousCasts = (_a = input.hero.globalInfo.BackToBackCastThisGame) !== null && _a !== void 0 ? _a : 0;
20
- const repetitions = 1 + previousCasts;
19
+ const mult = 1 + previousCasts;
20
+ const { attack, health } = (0, utils_2.withTavernSpellStatBuff)(input.hero, 4 * mult, 4 * mult, input.gameState.allCards, input.spellCardId);
21
21
  const hero = input.board.includes(target) ? input.hero : input.otherHero;
22
22
  const board = input.board.includes(target) ? input.board : input.otherBoard;
23
- for (let i = 0; i < repetitions; i++) {
24
- (0, stats_1.modifyStats)(target, input.source, attack, health, board, hero, input.gameState);
25
- }
23
+ (0, stats_1.modifyStats)(target, input.source, attack, health, board, hero, input.gameState);
26
24
  input.hero.globalInfo.BackToBackCastThisGame = previousCasts + 1;
27
25
  },
28
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"back-to-back.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/back-to-back.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,qDAAwD;AACxD,0CAAyD;AAG5C,QAAA,UAAU,GAAoB;IAC1C,OAAO,EAAE,YAA6B;IACtC,eAAe,EAAE,CAAC,YAAoB,EAAE,KAAqB,EAAE,EAAE;;QAChE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1G,MAAM,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAuB,EACjD,KAAK,CAAC,IAAI,EACV,CAAC,EACD,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,WAAW,CACjB,CAAC;QACF,MAAM,aAAa,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,mCAAI,CAAC,CAAC;QACxE,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACrC,IAAA,mBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAChF;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,aAAa,GAAG,CAAC,CAAC;IAClE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { withTavernSpellStatBuff } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const BackToBack: TavernSpellCard = {\r\n\tcardIds: [CardIds.BackToBack_BG35_952],\r\n\tcastTavernSpell: (_spellCardId: string, input: CastSpellInput) => {\r\n\t\tlet target = input.target;\r\n\t\tif (!target) {\r\n\t\t\tconst candidates = [...input.board, ...input.otherBoard].filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\t\ttarget = pickRandom(candidates);\r\n\t\t}\r\n\t\tif (!target) return;\r\n\r\n\t\tconst { attack, health } = withTavernSpellStatBuff(\r\n\t\t\tinput.hero,\r\n\t\t\t4,\r\n\t\t\t4,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t\tinput.spellCardId,\r\n\t\t);\r\n\t\tconst previousCasts = input.hero.globalInfo.BackToBackCastThisGame ?? 0;\r\n\t\tconst repetitions = 1 + previousCasts;\r\n\t\tconst hero = input.board.includes(target) ? input.hero : input.otherHero;\r\n\t\tconst board = input.board.includes(target) ? input.board : input.otherBoard;\r\n\t\tfor (let i = 0; i < repetitions; i++) {\r\n\t\t\tmodifyStats(target, input.source, attack, health, board, hero, input.gameState);\r\n\t\t}\r\n\t\tinput.hero.globalInfo.BackToBackCastThisGame = previousCasts + 1;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"back-to-back.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/back-to-back.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,qDAAwD;AACxD,0CAAyD;AAG5C,QAAA,UAAU,GAAoB;IAC1C,OAAO,EAAE,YAA6B;IACtC,eAAe,EAAE,CAAC,YAAoB,EAAE,KAAqB,EAAE,EAAE;;QAChE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC1G,MAAM,GAAG,IAAA,kBAAU,EAAC,UAAU,CAAC,CAAC;SAChC;QACD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,MAAM,aAAa,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,mCAAI,CAAC,CAAC;QACxE,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa,CAAC;QAC/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAuB,EACjD,KAAK,CAAC,IAAI,EACV,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,WAAW,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAC5E,IAAA,mBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,aAAa,GAAG,CAAC,CAAC;IAClE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { withTavernSpellStatBuff } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const BackToBack: TavernSpellCard = {\r\n\tcardIds: [CardIds.BackToBack_BG35_952],\r\n\tcastTavernSpell: (_spellCardId: string, input: CastSpellInput) => {\r\n\t\tlet target = input.target;\r\n\t\tif (!target) {\r\n\t\t\tconst candidates = [...input.board, ...input.otherBoard].filter((e) => e.health > 0 && !e.definitelyDead);\r\n\t\t\ttarget = pickRandom(candidates);\r\n\t\t}\r\n\t\tif (!target) return;\r\n\r\n\t\tconst previousCasts = input.hero.globalInfo.BackToBackCastThisGame ?? 0;\r\n\t\tconst mult = 1 + previousCasts;\r\n\t\tconst { attack, health } = withTavernSpellStatBuff(\r\n\t\t\tinput.hero,\r\n\t\t\t4 * mult,\r\n\t\t\t4 * mult,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t\tinput.spellCardId,\r\n\t\t);\r\n\t\tconst hero = input.board.includes(target) ? input.hero : input.otherHero;\r\n\t\tconst board = input.board.includes(target) ? input.board : input.otherBoard;\r\n\t\tmodifyStats(target, input.source, attack, health, board, hero, input.gameState);\r\n\t\tinput.hero.globalInfo.BackToBackCastThisGame = previousCasts + 1;\r\n\t},\r\n};\r\n"]}
@@ -13,7 +13,7 @@ exports.OphidianStaff = {
13
13
  (0, utils_1.hasCorrectTribe)(e, input.hero, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards));
14
14
  if (!target)
15
15
  return;
16
- (0, stats_1.modifyStats)(target, input.source, 4, 4, input.board, input.hero, input.gameState);
16
+ (0, stats_1.modifyStats)(target, input.source, 2, 2, input.board, input.hero, input.gameState);
17
17
  target.reborn = true;
18
18
  },
19
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ophidian-staff.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/ophidian-staff.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,aAAa,GAAoB;IAC7C,OAAO,EAAE,uBAA8D;IACvE,eAAe,EAAE,CAAC,YAAoB,EAAE,KAAqB,EAAE,EAAE;;QAChE,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC,cAAc;YACjB,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAA,mBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const OphidianStaff: TavernSpellCard = {\r\n\tcardIds: [CardIds.OphidianStaff_OphidianStaffToken_BG35_MagicItem_872t],\r\n\tcastTavernSpell: (_spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst target = input.target ?? input.board.find(\r\n\t\t\t(e) =>\r\n\t\t\t\te.health > 0 &&\r\n\t\t\t\t!e.definitelyDead &&\r\n\t\t\t\thasCorrectTribe(e, input.hero, Race.BEAST, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tif (!target) return;\r\n\t\tmodifyStats(target, input.source, 4, 4, input.board, input.hero, input.gameState);\r\n\t\ttarget.reborn = true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"ophidian-staff.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/ophidian-staff.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,aAAa,GAAoB;IAC7C,OAAO,EAAE,uBAA8D;IACvE,eAAe,EAAE,CAAC,YAAoB,EAAE,KAAqB,EAAE,EAAE;;QAChE,MAAM,MAAM,GACX,MAAA,KAAK,CAAC,MAAM,mCACZ,KAAK,CAAC,KAAK,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC,cAAc;YACjB,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACH,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAA,mBAAW,EAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const OphidianStaff: TavernSpellCard = {\r\n\tcardIds: [CardIds.OphidianStaff_OphidianStaffToken_BG35_MagicItem_872t],\r\n\tcastTavernSpell: (_spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst target =\r\n\t\t\tinput.target ??\r\n\t\t\tinput.board.find(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.health > 0 &&\r\n\t\t\t\t\t!e.definitelyDead &&\r\n\t\t\t\t\thasCorrectTribe(e, input.hero, Race.BEAST, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t\t);\r\n\t\tif (!target) return;\r\n\t\tmodifyStats(target, input.source, 2, 2, input.board, input.hero, input.gameState);\r\n\t\ttarget.reborn = true;\r\n\t},\r\n};\r\n"]}
@@ -8,7 +8,7 @@ exports.QueensCommand = {
8
8
  cardIds: ["BG35_922", "BG35_922_G"],
9
9
  castTavernSpell: (spellCardId, input) => {
10
10
  const mult = spellCardId === "BG35_922_G" ? 2 : 1;
11
- const { attack, health } = (0, utils_1.withTavernSpellStatBuff)(input.hero, 3 * mult, 3 * mult, input.gameState.allCards, input.spellCardId);
11
+ const { attack, health } = (0, utils_1.withTavernSpellStatBuff)(input.hero, 2 * mult, 3 * mult, input.gameState.allCards, input.spellCardId);
12
12
  for (const e of input.board) {
13
13
  if (e.health <= 0 || e.definitelyDead) {
14
14
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"queens-command.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/queens-command.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AACxD,0CAA0E;AAG7D,QAAA,aAAa,GAAoB;IAC7C,OAAO,EAAE,0BAAkE;IAC3E,eAAe,EAAE,CAAC,WAAmB,EAAE,KAAqB,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,WAAW,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAuB,EACjD,KAAK,CAAC,IAAI,EACV,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,WAAW,CACjB,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;gBACtC,SAAS;aACT;YACD,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACnG,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACvF;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe, withTavernSpellStatBuff } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const QueensCommand: TavernSpellCard = {\r\n\tcardIds: [CardIds.QueensCommand_BG35_922, CardIds.QueensCommand_BG35_922_G],\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst mult = spellCardId === CardIds.QueensCommand_BG35_922_G ? 2 : 1;\r\n\t\tconst { attack, health } = withTavernSpellStatBuff(\r\n\t\t\tinput.hero,\r\n\t\t\t3 * mult,\r\n\t\t\t3 * mult,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t\tinput.spellCardId,\r\n\t\t);\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.health <= 0 || e.definitelyDead) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tmodifyStats(e, input.source, attack, health, input.board, input.hero, input.gameState);\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.NAGA, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, input.source, attack, health, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"queens-command.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/queens-command.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AACxD,0CAA0E;AAG7D,QAAA,aAAa,GAAoB;IAC7C,OAAO,EAAE,0BAAkE;IAC3E,eAAe,EAAE,CAAC,WAAmB,EAAE,KAAqB,EAAE,EAAE;QAC/D,MAAM,IAAI,GAAG,WAAW,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAuB,EACjD,KAAK,CAAC,IAAI,EACV,CAAC,GAAG,IAAI,EACR,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,WAAW,CACjB,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;gBACtC,SAAS;aACT;YACD,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACvF,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACnG,IAAA,mBAAW,EAAC,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACvF;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe, withTavernSpellStatBuff } from '../../../utils';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const QueensCommand: TavernSpellCard = {\r\n\tcardIds: [CardIds.QueensCommand_BG35_922, CardIds.QueensCommand_BG35_922_G],\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst mult = spellCardId === CardIds.QueensCommand_BG35_922_G ? 2 : 1;\r\n\t\tconst { attack, health } = withTavernSpellStatBuff(\r\n\t\t\tinput.hero,\r\n\t\t\t2 * mult,\r\n\t\t\t3 * mult,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t\tinput.spellCardId,\r\n\t\t);\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.health <= 0 || e.definitelyDead) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tmodifyStats(e, input.source, attack, health, input.board, input.hero, input.gameState);\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.NAGA, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, input.source, attack, health, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -8,13 +8,12 @@ exports.BronzeChromadrake = {
8
8
  cardIds: ["BG34_637t", "BG34_637_Gt"],
9
9
  battlecry: (minion, input) => {
10
10
  const mult = minion.cardId === "BG34_637_Gt" ? 2 : 1;
11
- const stats = 5 * mult;
12
11
  for (const e of input.board) {
13
12
  if (e.entityId === minion.entityId) {
14
13
  continue;
15
14
  }
16
15
  if ((0, utils_1.hasCorrectTribe)(e, input.hero, reference_data_1.Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {
17
- (0, stats_1.modifyStats)(e, minion, stats, 0, input.board, input.hero, input.gameState);
16
+ (0, stats_1.modifyStats)(e, minion, 4 * mult, 2 * mult, input.board, input.hero, input.gameState);
18
17
  }
19
18
  }
20
19
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"bronze-chromadrake.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bronze-chromadrake.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,4BAAsF;IAC/F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACnC,SAAS;aACT;YACD,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACrG,IAAA,mBAAW,EAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aAC3E;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nexport const BronzeChromadrake: BattlecryCard = {\r\n\tcardIds: [CardIds.BronzeChromadrakeToken_BG34_637t, CardIds.BronzeChromadrakeToken_BG34_637_Gt],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BronzeChromadrakeToken_BG34_637_Gt ? 2 : 1;\r\n\t\tconst stats = 5 * mult;\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.entityId === minion.entityId) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, minion, stats, 0, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bronze-chromadrake.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bronze-chromadrake.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,iBAAiB,GAAkB;IAC/C,OAAO,EAAE,4BAAsF;IAC/F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAA+C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACnC,SAAS;aACT;YACD,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACrG,IAAA,mBAAW,EAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACrF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nexport const BronzeChromadrake: BattlecryCard = {\r\n\tcardIds: [CardIds.BronzeChromadrakeToken_BG34_637t, CardIds.BronzeChromadrakeToken_BG34_637_Gt],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BronzeChromadrakeToken_BG34_637_Gt ? 2 : 1;\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.entityId === minion.entityId) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, minion, 4 * mult, 2 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DiremuckForager = exports.handleDiremuckPendingSummons = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
4
5
  const hand_minion_priority_1 = require("../../../services/hand-minion-priority");
5
6
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
7
  const spawns_1 = require("../../../simulation/spawns");
8
+ const utils_1 = require("../../../utils");
7
9
  const handMinionPredicate = (allCards) => (e) => !!e.maxHealth && (0, hand_minion_priority_1.isHandMinionCandidate)(e, (id) => { var _a; return (_a = allCards.getCard(id).type) === null || _a === void 0 ? void 0 : _a.toUpperCase(); });
8
10
  const summonHandMinionFromDiremuck = (forager, handTarget, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
9
11
  var _a;
@@ -30,7 +32,8 @@ const handleDiremuckPendingSummons = (playerBoard, playerEntity, opponentBoard,
30
32
  let remaining = entry.remaining;
31
33
  const forager = (_b = playerBoard.find((e) => e.entityId === entry.foragerEntityId)) !== null && _b !== void 0 ? _b : null;
32
34
  while (playerBoard.length < 7 && remaining > 0) {
33
- const targets = (0, hand_minion_priority_1.getHighestAttackHandMinions)(playerEntity.hand, 1, predicate);
35
+ const candidates = playerEntity.hand.filter((e) => (0, utils_1.hasCorrectTribe)(e, playerEntity, reference_data_1.Race.MURLOC, gameState.anomalies, gameState.allCards));
36
+ const targets = (0, hand_minion_priority_1.getHighestAttackHandMinions)(candidates, 1, predicate);
34
37
  const handTarget = targets[0];
35
38
  if (!(handTarget === null || handTarget === void 0 ? void 0 : handTarget.cardId) || handTarget.locked) {
36
39
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"diremuck-forager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/diremuck-forager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Diremuck Forager (Tier 4, 5/6)\r\n * Start of Combat: When you have space, summon the highest-Attack minion from your hand for this combat only.\r\n *\r\n * Golden Diremuck Forager (Tier 4, 10/12)\r\n * Start of Combat: When you have space, summon the two highest-Attack minions from your hand for this combat only.\r\n */\r\nimport { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getHighestAttackHandMinions, isHandMinionCandidate } from '../../../services/hand-minion-priority';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nconst handMinionPredicate = (allCards: FullGameState['allCards']) => (e: BoardEntity) =>\r\n\t!!e.maxHealth && isHandMinionCandidate(e, (id) => allCards.getCard(id).type?.toUpperCase());\r\n\r\n/** If the Forager died after SOC, pass `null` — summons still resolve (spawn source = hero, index from right = 0). */\r\nconst summonHandMinionFromDiremuck = (\r\n\tforager: BoardEntity | null,\r\n\thandTarget: BoardEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\thandTarget.locked = true;\r\n\tconst friendly = forager?.friendly ?? playerEntity.friendly;\r\n\tconst newMinions = spawnEntities(\r\n\t\thandTarget.cardId,\r\n\t\t1,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t\tfriendly,\r\n\t\tfalse,\r\n\t\tfalse,\r\n\t\ttrue,\r\n\t\t{ ...handTarget } as BoardEntity,\r\n\t);\r\n\tfor (const s of newMinions) {\r\n\t\ts.onCanceledSummon = () => (handTarget.locked = false);\r\n\t}\r\n\tconst spawnSource = forager ?? playerEntity;\r\n\t// const indexFromRight = 0;\r\n\t// 2026-04-25: https://replays.firestoneapp.com/?reviewId=b498d69f-bf1b-4bc0-8902-3643434394d5&turn=23&action=3\r\n\t// Spawns right of the Forager, if it's on the board\r\n\tconst indexFromRight =\r\n\t\tforager != null && playerBoard.includes(forager) ? playerBoard.length - (playerBoard.indexOf(forager) + 1) : 0;\r\n\tperformEntitySpawns(\r\n\t\tnewMinions,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\tspawnSource,\r\n\t\tindexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t);\r\n};\r\n\r\n/** Called from `summon-when-space` when board space opens during start-of-combat. */\r\nexport const handleDiremuckPendingSummons = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst raw = playerEntity.globalInfo?.DiremuckPendingSummons;\r\n\tif (!raw?.length) {\r\n\t\treturn;\r\n\t}\r\n\tconst allCards = gameState.allCards;\r\n\tconst predicate = handMinionPredicate(allCards);\r\n\tconst nextQueue: { foragerEntityId: number; remaining: number }[] = [];\r\n\r\n\tfor (const entry of raw) {\r\n\t\tlet remaining = entry.remaining;\r\n\t\tconst forager = playerBoard.find((e) => e.entityId === entry.foragerEntityId) ?? null;\r\n\t\twhile (playerBoard.length < 7 && remaining > 0) {\r\n\t\t\tconst targets = getHighestAttackHandMinions(playerEntity.hand, 1, predicate);\r\n\t\t\tconst handTarget = targets[0];\r\n\t\t\tif (!handTarget?.cardId || handTarget.locked) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tsummonHandMinionFromDiremuck(\r\n\t\t\t\tforager,\r\n\t\t\t\thandTarget,\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tremaining--;\r\n\t\t}\r\n\t\tif (remaining > 0) {\r\n\t\t\tnextQueue.push({ foragerEntityId: entry.foragerEntityId, remaining });\r\n\t\t}\r\n\t}\r\n\tplayerEntity.globalInfo.DiremuckPendingSummons = nextQueue.length ? nextQueue : undefined;\r\n};\r\n\r\nexport const DiremuckForager: StartOfCombatCard = {\r\n\tcardIds: [CardIds.DiremuckForager_BG27_556, CardIds.DiremuckForager_BG27_556_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst allCards = input.gameState.allCards;\r\n\t\t// Don't clear the info, as multiple Diremuck Foragers can be on the board at the same time,\r\n\t\t// and they stack\r\n\t\t// input.playerEntity.globalInfo.DiremuckPendingSummons = undefined;\r\n\r\n\t\tconst totalWanted = minion.cardId === CardIds.DiremuckForager_BG27_556_G ? 2 : 1;\r\n\t\tconst predicate = handMinionPredicate(allCards);\r\n\r\n\t\tlet remaining = totalWanted;\r\n\t\twhile (remaining > 0 && input.playerBoard.length < 7) {\r\n\t\t\tconst targets = getHighestAttackHandMinions(input.playerEntity.hand, 1, predicate);\r\n\t\t\tconst target = targets[0];\r\n\t\t\tif (!target?.cardId || target.locked) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tsummonHandMinionFromDiremuck(\r\n\t\t\t\tminion,\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.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tremaining--;\r\n\t\t}\r\n\r\n\t\tif (remaining > 0) {\r\n\t\t\tinput.playerEntity.globalInfo.DiremuckPendingSummons = [\r\n\t\t\t\t...(input.playerEntity.globalInfo.DiremuckPendingSummons ?? []),\r\n\t\t\t\t{ foragerEntityId: minion.entityId, remaining },\r\n\t\t\t];\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"diremuck-forager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/diremuck-forager.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,iFAA4G;AAC5G,+EAAuE;AAEvE,uDAAiE;AAEjE,0CAAiD;AAGjD,MAAM,mBAAmB,GAAG,CAAC,QAAmC,EAAE,EAAE,CAAC,CAAC,CAAc,EAAE,EAAE,CACvF,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,IAAA,4CAAqB,EAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,CAAA,EAAA,CAAC,CAAC;AAG7F,MAAM,4BAA4B,GAAG,CACpC,OAA2B,EAC3B,UAAuB,EACvB,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACjB,EAAE;;IACT,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,mCAAI,YAAY,CAAC,QAAQ,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,UAAU,CAAC,MAAM,EACjB,CAAC,EACD,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,KAAK,EACL,KAAK,EACL,IAAI,EACJ,EAAE,GAAG,UAAU,EAAiB,CAChC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;QAC3B,CAAC,CAAC,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;KACvD;IACD,MAAM,WAAW,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,YAAY,CAAC;IAI5C,MAAM,cAAc,GACnB,OAAO,IAAI,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,IAAA,4BAAmB,EAClB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,SAAS,CACT,CAAC;AACH,CAAC,CAAC;AAGK,MAAM,4BAA4B,GAAG,CAC3C,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACjB,EAAE;;IACT,MAAM,GAAG,GAAG,MAAA,YAAY,CAAC,UAAU,0CAAE,sBAAsB,CAAC;IAC5D,IAAI,CAAC,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE;QACjB,OAAO;KACP;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACpC,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,SAAS,GAAqD,EAAE,CAAC;IAEvE,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE;QACxB,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAChC,MAAM,OAAO,GAAG,MAAA,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,eAAe,CAAC,mCAAI,IAAI,CAAC;QACtF,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE;YAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,IAAA,uBAAe,EAAC,CAAC,EAAE,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CACtF,CAAC;YACF,MAAM,OAAO,GAAG,IAAA,kDAA2B,EAAC,UAAU,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAA,IAAI,UAAU,CAAC,MAAM,EAAE;gBAC7C,MAAM;aACN;YACD,4BAA4B,CAC3B,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,CACT,CAAC;YACF,SAAS,EAAE,CAAC;SACZ;QACD,IAAI,SAAS,GAAG,CAAC,EAAE;YAClB,SAAS,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;SACtE;KACD;IACD,YAAY,CAAC,UAAU,CAAC,sBAAsB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3F,CAAC,CAAC;AA3CW,QAAA,4BAA4B,gCA2CvC;AAEW,QAAA,eAAe,GAAsB;IACjD,OAAO,EAAE,0BAAsE;IAC/E,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QAK1C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,SAAS,GAAG,WAAW,CAAC;QAC5B,OAAO,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,MAAM,OAAO,GAAG,IAAA,kDAA2B,EAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACnF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,IAAI,MAAM,CAAC,MAAM,EAAE;gBACrC,MAAM;aACN;YACD,4BAA4B,CAC3B,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,SAAS,EAAE,CAAC;SACZ;QAED,IAAI,SAAS,GAAG,CAAC,EAAE;YAClB,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,GAAG;gBACtD,GAAG,CAAC,MAAA,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,sBAAsB,mCAAI,EAAE,CAAC;gBAC/D,EAAE,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE;aAC/C,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Diremuck Forager (Tier 4, 5/6)\r\n * Start of Combat: When you have space, summon the highest-Attack minion from your hand for this combat only.\r\n *\r\n * Golden Diremuck Forager (Tier 4, 10/12)\r\n * Start of Combat: When you have space, summon the two highest-Attack minions from your hand for this combat only.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getHighestAttackHandMinions, isHandMinionCandidate } from '../../../services/hand-minion-priority';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nconst handMinionPredicate = (allCards: FullGameState['allCards']) => (e: BoardEntity) =>\r\n\t!!e.maxHealth && isHandMinionCandidate(e, (id) => allCards.getCard(id).type?.toUpperCase());\r\n\r\n/** If the Forager died after SOC, pass `null` — summons still resolve (spawn source = hero, index from right = 0). */\r\nconst summonHandMinionFromDiremuck = (\r\n\tforager: BoardEntity | null,\r\n\thandTarget: BoardEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\thandTarget.locked = true;\r\n\tconst friendly = forager?.friendly ?? playerEntity.friendly;\r\n\tconst newMinions = spawnEntities(\r\n\t\thandTarget.cardId,\r\n\t\t1,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t\tfriendly,\r\n\t\tfalse,\r\n\t\tfalse,\r\n\t\ttrue,\r\n\t\t{ ...handTarget } as BoardEntity,\r\n\t);\r\n\tfor (const s of newMinions) {\r\n\t\ts.onCanceledSummon = () => (handTarget.locked = false);\r\n\t}\r\n\tconst spawnSource = forager ?? playerEntity;\r\n\t// const indexFromRight = 0;\r\n\t// 2026-04-25: https://replays.firestoneapp.com/?reviewId=b498d69f-bf1b-4bc0-8902-3643434394d5&turn=23&action=3\r\n\t// Spawns right of the Forager, if it's on the board\r\n\tconst indexFromRight =\r\n\t\tforager != null && playerBoard.includes(forager) ? playerBoard.length - (playerBoard.indexOf(forager) + 1) : 0;\r\n\tperformEntitySpawns(\r\n\t\tnewMinions,\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\tspawnSource,\r\n\t\tindexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t);\r\n};\r\n\r\n/** Called from `summon-when-space` when board space opens during start-of-combat. */\r\nexport const handleDiremuckPendingSummons = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst raw = playerEntity.globalInfo?.DiremuckPendingSummons;\r\n\tif (!raw?.length) {\r\n\t\treturn;\r\n\t}\r\n\tconst allCards = gameState.allCards;\r\n\tconst predicate = handMinionPredicate(allCards);\r\n\tconst nextQueue: { foragerEntityId: number; remaining: number }[] = [];\r\n\r\n\tfor (const entry of raw) {\r\n\t\tlet remaining = entry.remaining;\r\n\t\tconst forager = playerBoard.find((e) => e.entityId === entry.foragerEntityId) ?? null;\r\n\t\twhile (playerBoard.length < 7 && remaining > 0) {\r\n\t\t\tconst candidates = playerEntity.hand.filter((e) =>\r\n\t\t\t\thasCorrectTribe(e, playerEntity, Race.MURLOC, gameState.anomalies, gameState.allCards),\r\n\t\t\t);\r\n\t\t\tconst targets = getHighestAttackHandMinions(candidates, 1, predicate);\r\n\t\t\tconst handTarget = targets[0];\r\n\t\t\tif (!handTarget?.cardId || handTarget.locked) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tsummonHandMinionFromDiremuck(\r\n\t\t\t\tforager,\r\n\t\t\t\thandTarget,\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tremaining--;\r\n\t\t}\r\n\t\tif (remaining > 0) {\r\n\t\t\tnextQueue.push({ foragerEntityId: entry.foragerEntityId, remaining });\r\n\t\t}\r\n\t}\r\n\tplayerEntity.globalInfo.DiremuckPendingSummons = nextQueue.length ? nextQueue : undefined;\r\n};\r\n\r\nexport const DiremuckForager: StartOfCombatCard = {\r\n\tcardIds: [CardIds.DiremuckForager_BG27_556, CardIds.DiremuckForager_BG27_556_G],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst allCards = input.gameState.allCards;\r\n\t\t// Don't clear the info, as multiple Diremuck Foragers can be on the board at the same time,\r\n\t\t// and they stack\r\n\t\t// input.playerEntity.globalInfo.DiremuckPendingSummons = undefined;\r\n\r\n\t\tconst totalWanted = minion.cardId === CardIds.DiremuckForager_BG27_556_G ? 2 : 1;\r\n\t\tconst predicate = handMinionPredicate(allCards);\r\n\r\n\t\tlet remaining = totalWanted;\r\n\t\twhile (remaining > 0 && input.playerBoard.length < 7) {\r\n\t\t\tconst targets = getHighestAttackHandMinions(input.playerEntity.hand, 1, predicate);\r\n\t\t\tconst target = targets[0];\r\n\t\t\tif (!target?.cardId || target.locked) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tsummonHandMinionFromDiremuck(\r\n\t\t\t\tminion,\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.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tremaining--;\r\n\t\t}\r\n\r\n\t\tif (remaining > 0) {\r\n\t\t\tinput.playerEntity.globalInfo.DiremuckPendingSummons = [\r\n\t\t\t\t...(input.playerEntity.globalInfo.DiremuckPendingSummons ?? []),\r\n\t\t\t\t{ foragerEntityId: minion.entityId, remaining },\r\n\t\t\t];\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -9,7 +9,7 @@ exports.ForsakenWeaver = {
9
9
  return;
10
10
  }
11
11
  const mult = entity.cardId === "BG34_692_G" ? 2 : 1;
12
- (0, global_info_helpers_1.increaseUndeadAttackBonus)(input.hero, input.board, input.hero, 1 * mult, input.gameState);
12
+ (0, global_info_helpers_1.increaseUndeadAttackBonus)(input.hero, input.board, input.hero, 2 * mult, input.gameState);
13
13
  },
14
14
  };
15
15
  //# sourceMappingURL=forsaken-weaver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"forsaken-weaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/forsaken-weaver.ts"],"names":[],"mappings":";;;AAUA,iFAAoF;AAGvE,QAAA,cAAc,GAA6B;IACvD,OAAO,EAAE,0BAAoE;IAC7E,oBAAoB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,+CAAyB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Forsaken Weaver (Tier 6, 3/8)\r\n * After you cast a Tavern spell, your Undead have +1 Attack this game (wherever they are).\r\n *\r\n * Golden Forsaken Weaver (Tier 6, 6/16)\r\n * After you cast a Tavern spell, your Undead have +2 Attack this game (wherever they are).\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { increaseUndeadAttackBonus } from '../../../simulation/global-info-helpers';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const ForsakenWeaver: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ForsakenWeaver_BG34_692, CardIds.ForsakenWeaver_BG34_692_G],\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = entity.cardId === CardIds.ForsakenWeaver_BG34_692_G ? 2 : 1;\r\n\t\tincreaseUndeadAttackBonus(input.hero, input.board, input.hero, 1 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"forsaken-weaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/forsaken-weaver.ts"],"names":[],"mappings":";;;AAUA,iFAAoF;AAGvE,QAAA,cAAc,GAA6B;IACvD,OAAO,EAAE,0BAAoE;IAC7E,oBAAoB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;QACnF,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAA,+CAAyB,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Forsaken Weaver (Tier 6, 3/8)\r\n * After you cast a Tavern spell, your Undead have +1 Attack this game (wherever they are).\r\n *\r\n * Golden Forsaken Weaver (Tier 6, 6/16)\r\n * After you cast a Tavern spell, your Undead have +2 Attack this game (wherever they are).\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { increaseUndeadAttackBonus } from '../../../simulation/global-info-helpers';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const ForsakenWeaver: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ForsakenWeaver_BG34_692, CardIds.ForsakenWeaver_BG34_692_G],\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = entity.cardId === CardIds.ForsakenWeaver_BG34_692_G ? 2 : 1;\r\n\t\tincreaseUndeadAttackBonus(input.hero, input.board, input.hero, 2 * mult, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -8,13 +8,12 @@ exports.GreenChromadrake = {
8
8
  cardIds: ["BG34_636t", "BG34_636_Gt"],
9
9
  battlecry: (minion, input) => {
10
10
  const mult = minion.cardId === "BG34_636_Gt" ? 2 : 1;
11
- const stats = 5 * mult;
12
11
  for (const e of input.board) {
13
12
  if (e.entityId === minion.entityId) {
14
13
  continue;
15
14
  }
16
15
  if ((0, utils_1.hasCorrectTribe)(e, input.hero, reference_data_1.Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {
17
- (0, stats_1.modifyStats)(e, minion, 0, stats, input.board, input.hero, input.gameState);
16
+ (0, stats_1.modifyStats)(e, minion, 2 * mult, 4 * mult, input.board, input.hero, input.gameState);
18
17
  }
19
18
  }
20
19
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"green-chromadrake.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/green-chromadrake.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,4BAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACnC,SAAS;aACT;YACD,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACrG,IAAA,mBAAW,EAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aAC3E;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nexport const GreenChromadrake: BattlecryCard = {\r\n\tcardIds: [CardIds.GreenChromadrakeToken_BG34_636t, CardIds.GreenChromadrakeToken_BG34_636_Gt],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.GreenChromadrakeToken_BG34_636_Gt ? 2 : 1;\r\n\t\tconst stats = 5 * mult;\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.entityId === minion.entityId) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, minion, 0, stats, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"green-chromadrake.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/green-chromadrake.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,gBAAgB,GAAkB;IAC9C,OAAO,EAAE,4BAAoF;IAC7F,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,kBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;gBACnC,SAAS;aACT;YACD,IAAI,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACrG,IAAA,mBAAW,EAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;aACrF;SACD;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nexport const GreenChromadrake: BattlecryCard = {\r\n\tcardIds: [CardIds.GreenChromadrakeToken_BG34_636t, CardIds.GreenChromadrakeToken_BG34_636_Gt],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.GreenChromadrakeToken_BG34_636_Gt ? 2 : 1;\r\n\t\tfor (const e of input.board) {\r\n\t\t\tif (e.entityId === minion.entityId) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (hasCorrectTribe(e, input.hero, Race.DRAGON, input.gameState.anomalies, input.gameState.allCards)) {\r\n\t\t\t\tmodifyStats(e, minion, 2 * mult, 4 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -5,7 +5,6 @@ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
5
  exports.MoonsteelJuggernaut = {
6
6
  cardIds: ["BG31_171", "BG31_171_G"],
7
7
  endOfTurn: (minion, input) => {
8
- const buff = minion.cardId === "BG31_171_G" ? 2 : 1;
9
8
  const cards = minion.cardId === "BG31_171_G"
10
9
  ? [
11
10
  "BG31_171t",
@@ -1 +1 @@
1
- {"version":3,"file":"moonsteel-juggernaut.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/moonsteel-juggernaut.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,mBAAmB,GAAkB;IACjD,OAAO,EAAE,0BAA8E;IACvF,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,KAAK,GACV,MAAM,CAAC,MAAM,iBAA2C;YACvD,CAAC,CAAC;;;aAGC;YACH,CAAC,CAAC,aAA+D,CAAC;QACpE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\nimport { BoardEntity } from '../../../board-entity';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const MoonsteelJuggernaut: EndOfTurnCard = {\r\n\tcardIds: [CardIds.MoonsteelJuggernaut_BG31_171, CardIds.MoonsteelJuggernaut_BG31_171_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst buff = minion.cardId === CardIds.MoonsteelJuggernaut_BG31_171_G ? 2 : 1;\r\n\t\tconst cards =\r\n\t\t\tminion.cardId === CardIds.MoonsteelJuggernaut_BG31_171_G\r\n\t\t\t\t? [\r\n\t\t\t\t\t\tCardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t,\r\n\t\t\t\t\t\tCardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t,\r\n\t\t\t\t ]\r\n\t\t\t\t: [CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t];\r\n\t\taddCardsInHand(input.hero, input.board, cards, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"moonsteel-juggernaut.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/moonsteel-juggernaut.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAGtD,QAAA,mBAAmB,GAAkB;IACjD,OAAO,EAAE,0BAA8E;IACvF,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QAEzD,MAAM,KAAK,GACV,MAAM,CAAC,MAAM,iBAA2C;YACvD,CAAC,CAAC;;;aAGC;YACH,CAAC,CAAC,aAA+D,CAAC;QACpE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const MoonsteelJuggernaut: EndOfTurnCard = {\r\n\tcardIds: [CardIds.MoonsteelJuggernaut_BG31_171, CardIds.MoonsteelJuggernaut_BG31_171_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\t// const buff = minion.cardId === CardIds.MoonsteelJuggernaut_BG31_171_G ? 2 : 1;\r\n\t\tconst cards =\r\n\t\t\tminion.cardId === CardIds.MoonsteelJuggernaut_BG31_171_G\r\n\t\t\t\t? [\r\n\t\t\t\t\t\tCardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t,\r\n\t\t\t\t\t\tCardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t,\r\n\t\t\t\t ]\r\n\t\t\t\t: [CardIds.MoonsteelJuggernaut_MoonsteelSatelliteToken_BG31_171t];\r\n\t\taddCardsInHand(input.hero, input.board, cards, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { DefaultChargesCard, OnWheneverAnotherMinionAttacksCard, RallyCard } from '../../card.interface';
2
- export declare const RingBearer: OnWheneverAnotherMinionAttacksCard & RallyCard & DefaultChargesCard;
1
+ import { OnWheneverAnotherMinionAttacksCard, RallyCard } from '../../card.interface';
2
+ export declare const RingBearer: OnWheneverAnotherMinionAttacksCard & RallyCard;
@@ -3,28 +3,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RingBearer = void 0;
4
4
  const cast_tavern_spell_1 = require("../../../mechanics/cast-tavern-spell");
5
5
  const tickRingBearer = (ringBearer, input) => {
6
- ringBearer.abiityChargesLeft = ringBearer.abiityChargesLeft - 1;
7
6
  const ringMult = ringBearer.cardId === "BG34_921_G" ? 2 : 1;
8
- while (ringBearer.abiityChargesLeft <= 0) {
9
- ringBearer.abiityChargesLeft = exports.RingBearer.defaultCharges(ringBearer);
10
- for (let i = 0; i < ringMult; i++) {
11
- (0, cast_tavern_spell_1.castTavernSpell)("BG28_168", {
12
- spellCardId: "BG28_168",
13
- source: input.attackingHero,
14
- target: null,
15
- board: input.attackingBoard,
16
- hero: input.attackingHero,
17
- otherBoard: input.defendingBoard,
18
- otherHero: input.defendingHero,
19
- gameState: input.gameState,
20
- });
21
- }
7
+ for (let i = 0; i < ringMult; i++) {
8
+ (0, cast_tavern_spell_1.castTavernSpell)("BG28_168", {
9
+ spellCardId: "BG28_168",
10
+ source: input.attackingHero,
11
+ target: null,
12
+ board: input.attackingBoard,
13
+ hero: input.attackingHero,
14
+ otherBoard: input.defendingBoard,
15
+ otherHero: input.defendingHero,
16
+ gameState: input.gameState,
17
+ });
22
18
  }
23
19
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
24
20
  };
25
21
  exports.RingBearer = {
26
22
  cardIds: ["BG34_921", "BG34_921_G"],
27
- defaultCharges: (entity) => 2,
28
23
  onWheneverAnotherMinionAttacks: (minion, input) => tickRingBearer(minion, input),
29
24
  rally: (minion, input) => tickRingBearer(minion, input),
30
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ring-bearer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ring-bearer.ts"],"names":[],"mappings":";;;AACA,4EAAuE;AAKvE,MAAM,cAAc,GAAG,CAAC,UAAuB,EAAE,KAAoB,EAAE,EAAE;IACxE,UAAU,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,iBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,UAAU,CAAC,iBAAiB,IAAI,CAAC,EAAE;QACzC,UAAU,CAAC,iBAAiB,GAAG,kBAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;YAClC,IAAA,mCAAe,cAA6B;gBAC3C,WAAW,YAA4B;gBACvC,MAAM,EAAE,KAAK,CAAC,aAAa;gBAC3B,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK,CAAC,cAAc;gBAC3B,IAAI,EAAE,KAAK,CAAC,aAAa;gBACzB,UAAU,EAAE,KAAK,CAAC,cAAc;gBAChC,SAAS,EAAE,KAAK,CAAC,aAAa;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;aAC1B,CAAC,CAAC;SACH;KACD;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC;AAEW,QAAA,UAAU,GAAwE;IAC9F,OAAO,EAAE,0BAA4D;IACrE,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,8BAA8B,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;IAC5G,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;CACnF,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { castTavernSpell } from '../../../mechanics/cast-tavern-spell';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { DefaultChargesCard, OnWheneverAnotherMinionAttacksCard, RallyCard } from '../../card.interface';\r\n\r\nconst tickRingBearer = (ringBearer: BoardEntity, input: OnAttackInput) => {\r\n\tringBearer.abiityChargesLeft = ringBearer.abiityChargesLeft - 1;\r\n\tconst ringMult = ringBearer.cardId === CardIds.RingBearer_BG34_921_G ? 2 : 1;\r\n\twhile (ringBearer.abiityChargesLeft <= 0) {\r\n\t\tringBearer.abiityChargesLeft = RingBearer.defaultCharges(ringBearer);\r\n\t\tfor (let i = 0; i < ringMult; i++) {\r\n\t\t\tcastTavernSpell(CardIds.ShinyRing_BG28_168, {\r\n\t\t\t\tspellCardId: CardIds.ShinyRing_BG28_168,\r\n\t\t\t\tsource: input.attackingHero,\r\n\t\t\t\ttarget: null,\r\n\t\t\t\tboard: input.attackingBoard,\r\n\t\t\t\thero: input.attackingHero,\r\n\t\t\t\totherBoard: input.defendingBoard,\r\n\t\t\t\totherHero: input.defendingHero,\r\n\t\t\t\tgameState: input.gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n};\r\n\r\nexport const RingBearer: OnWheneverAnotherMinionAttacksCard & RallyCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.RingBearer_BG34_921, CardIds.RingBearer_BG34_921_G],\r\n\tdefaultCharges: (entity: BoardEntity) => 2,\r\n\tonWheneverAnotherMinionAttacks: (minion: BoardEntity, input: OnAttackInput) => tickRingBearer(minion, input),\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => tickRingBearer(minion, input),\r\n};\r\n"]}
1
+ {"version":3,"file":"ring-bearer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ring-bearer.ts"],"names":[],"mappings":";;;AACA,4EAAuE;AAKvE,MAAM,cAAc,GAAG,CAAC,UAAuB,EAAE,KAAoB,EAAE,EAAE;IACxE,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,iBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAClC,IAAA,mCAAe,cAA6B;YAC3C,WAAW,YAA4B;YACvC,MAAM,EAAE,KAAK,CAAC,aAAa;YAC3B,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK,CAAC,cAAc;YAC3B,IAAI,EAAE,KAAK,CAAC,aAAa;YACzB,UAAU,EAAE,KAAK,CAAC,cAAc;YAChC,SAAS,EAAE,KAAK,CAAC,aAAa;YAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B,CAAC,CAAC;KACH;IACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;AACvD,CAAC,CAAC;AAEW,QAAA,UAAU,GAAmD;IACzE,OAAO,EAAE,0BAA4D;IACrE,8BAA8B,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;IAC5G,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC;CACnF,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { castTavernSpell } from '../../../mechanics/cast-tavern-spell';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { OnWheneverAnotherMinionAttacksCard, RallyCard } from '../../card.interface';\r\n\r\nconst tickRingBearer = (ringBearer: BoardEntity, input: OnAttackInput) => {\r\n\tconst ringMult = ringBearer.cardId === CardIds.RingBearer_BG34_921_G ? 2 : 1;\r\n\tfor (let i = 0; i < ringMult; i++) {\r\n\t\tcastTavernSpell(CardIds.ShinyRing_BG28_168, {\r\n\t\t\tspellCardId: CardIds.ShinyRing_BG28_168,\r\n\t\t\tsource: input.attackingHero,\r\n\t\t\ttarget: null,\r\n\t\t\tboard: input.attackingBoard,\r\n\t\t\thero: input.attackingHero,\r\n\t\t\totherBoard: input.defendingBoard,\r\n\t\t\totherHero: input.defendingHero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t});\r\n\t}\r\n\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n};\r\n\r\nexport const RingBearer: OnWheneverAnotherMinionAttacksCard & RallyCard = {\r\n\tcardIds: [CardIds.RingBearer_BG34_921, CardIds.RingBearer_BG34_921_G],\r\n\tonWheneverAnotherMinionAttacks: (minion: BoardEntity, input: OnAttackInput) => tickRingBearer(minion, input),\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => tickRingBearer(minion, input),\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { DeathrattleSpawnCard } from '../../card.interface';
2
- export declare const ShipJumper: DeathrattleSpawnCard;
1
+ import { RallyCard } from '../../card.interface';
2
+ export declare const ShipJumper: RallyCard;
@@ -2,21 +2,40 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ShipJumper = void 0;
4
4
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
+ const spawns_1 = require("../../../simulation/spawns");
5
6
  exports.ShipJumper = {
6
7
  cardIds: ["BG35_700", "BG35_700_G"],
7
- deathrattleSpawn: (minion, input) => {
8
+ rally: (minion, input) => {
9
+ if (!input.defendingEntity) {
10
+ return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
11
+ }
12
+ const spawnInput = {
13
+ boardWithDeadEntity: input.attackingBoard,
14
+ boardWithDeadEntityHero: input.attackingHero,
15
+ gameState: input.gameState,
16
+ deadEntity: input.attacker,
17
+ otherBoard: input.defendingBoard,
18
+ otherBoardHero: input.defendingHero,
19
+ };
8
20
  const golden = minion.cardId === "BG35_700_G";
9
- const tokenId = golden
21
+ const spawnCardId = golden
10
22
  ? "TB_BaconUps_141t"
11
23
  : "BGS_061t";
12
- const spawns = (0, deathrattle_spawns_1.spawnEntities)(tokenId, 1, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState, input.deadEntity.friendly, false, false, true);
13
- for (const s of spawns) {
24
+ const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)(spawnCardId, 1, spawnInput);
25
+ spawns.forEach((s) => {
14
26
  const bonusAtk = golden ? 2 * minion.attack : minion.attack;
15
27
  s.attack = s.attack + bonusAtk;
16
28
  s.maxAttack = s.attack;
17
29
  s.attackImmediately = true;
18
- }
19
- return spawns;
30
+ });
31
+ const spawned = (0, spawns_1.performEntitySpawns)(spawns, spawnInput.boardWithDeadEntity, spawnInput.boardWithDeadEntityHero, minion, input.attackingBoard.length - input.attackingBoard.indexOf(input.attacker) - 1, spawnInput.otherBoard, spawnInput.otherBoardHero, spawnInput.gameState, true, input.defendingEntity);
32
+ spawned.forEach((e) => {
33
+ e.hasAttacked = undefined;
34
+ });
35
+ return {
36
+ dmgDoneByAttacker: 0,
37
+ dmgDoneByDefender: 0,
38
+ };
20
39
  },
21
40
  };
22
41
  //# sourceMappingURL=ship-jumper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ship-jumper.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ship-jumper.ts"],"names":[],"mappings":";;;AAGA,+EAAuE;AAG1D,QAAA,UAAU,GAAyB;IAC/C,OAAO,EAAE,0BAA4D;IACrE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,iBAAkC,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM;YACrB,CAAC;YACD,CAAC,WAA0C,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,kCAAa,EAC3B,OAAO,EACP,CAAC,EACD,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,UAAU,CAAC,QAAQ,EACzB,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC/B,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC3B;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const ShipJumper: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.ShipJumper_BG35_700, CardIds.ShipJumper_BG35_700_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst golden = minion.cardId === CardIds.ShipJumper_BG35_700_G;\r\n\t\tconst tokenId = golden\r\n\t\t\t? CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t: CardIds.Scallywag_SkyPirateToken_BGS_061t;\r\n\t\tconst spawns = spawnEntities(\r\n\t\t\ttokenId,\r\n\t\t\t1,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tinput.otherBoard,\r\n\t\t\tinput.otherBoardHero,\r\n\t\t\tinput.gameState,\r\n\t\t\tinput.deadEntity.friendly,\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n\t\t\ttrue,\r\n\t\t);\r\n\t\tfor (const s of spawns) {\r\n\t\t\tconst bonusAtk = golden ? 2 * minion.attack : minion.attack;\r\n\t\t\ts.attack = s.attack + bonusAtk;\r\n\t\t\ts.maxAttack = s.attack;\r\n\t\t\ts.attackImmediately = true;\r\n\t\t}\r\n\t\treturn spawns;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"ship-jumper.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ship-jumper.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAEjF,uDAAiE;AAGpD,QAAA,UAAU,GAAc;IACpC,OAAO,EAAE,0BAA4D;IACrE,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QAC9G,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;YAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QACD,MAAM,UAAU,GAA8B;YAC7C,mBAAmB,EAAE,KAAK,CAAC,cAAc;YACzC,uBAAuB,EAAE,KAAK,CAAC,aAAa;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,QAAQ;YAC1B,UAAU,EAAE,KAAK,CAAC,cAAc;YAChC,cAAc,EAAE,KAAK,CAAC,aAAa;SACnC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,iBAAkC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM;YACzB,CAAC;YACD,CAAC,WAA0C,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAA,4CAAuB,EAAC,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAC5D,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC;YAC/B,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;YACvB,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,4BAAmB,EAClC,MAAM,EACN,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,uBAAuB,EAClC,MAAM,EACN,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9E,UAAU,CAAC,UAAU,EACrB,UAAU,CAAC,cAAc,EACzB,UAAU,CAAC,SAAS,EACpB,IAAI,EACJ,KAAK,CAAC,eAAe,CACrB,CAAC;QAGF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO;YACN,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;SACpB,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const ShipJumper: RallyCard = {\r\n\tcardIds: [CardIds.ShipJumper_BG35_700, CardIds.ShipJumper_BG35_700_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (!input.defendingEntity) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\tboardWithDeadEntity: input.attackingBoard,\r\n\t\t\tboardWithDeadEntityHero: input.attackingHero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t\tdeadEntity: input.attacker,\r\n\t\t\totherBoard: input.defendingBoard,\r\n\t\t\totherBoardHero: input.defendingHero,\r\n\t\t};\r\n\t\tconst golden = minion.cardId === CardIds.ShipJumper_BG35_700_G;\r\n\t\tconst spawnCardId = golden\r\n\t\t\t? CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t: CardIds.Scallywag_SkyPirateToken_BGS_061t;\r\n\t\tconst spawns = simplifiedSpawnEntities(spawnCardId, 1, spawnInput);\r\n\t\tspawns.forEach((s) => {\r\n\t\t\tconst bonusAtk = golden ? 2 * minion.attack : minion.attack;\r\n\t\t\ts.attack = s.attack + bonusAtk;\r\n\t\t\ts.maxAttack = s.attack;\r\n\t\t\ts.attackImmediately = true;\r\n\t\t});\r\n\t\tconst spawned = performEntitySpawns(\r\n\t\t\tspawns,\r\n\t\t\tspawnInput.boardWithDeadEntity,\r\n\t\t\tspawnInput.boardWithDeadEntityHero,\r\n\t\t\tminion,\r\n\t\t\tinput.attackingBoard.length - input.attackingBoard.indexOf(input.attacker) - 1,\r\n\t\t\tspawnInput.otherBoard,\r\n\t\t\tspawnInput.otherBoardHero,\r\n\t\t\tspawnInput.gameState,\r\n\t\t\ttrue,\r\n\t\t\tinput.defendingEntity,\r\n\t\t);\r\n\t\t// 2025-12-03: not sure, that might be a HS bug\r\n\t\t// https://replays.firestoneapp.com/?reviewId=67e46c7c-9ac8-41d5-8712-d12e44bef9f9&turn=9&action=6\r\n\t\tspawned.forEach((e) => {\r\n\t\t\te.hasAttacked = undefined;\r\n\t\t});\r\n\t\treturn {\r\n\t\t\tdmgDoneByAttacker: 0,\r\n\t\t\tdmgDoneByDefender: 0,\r\n\t\t};\r\n\t},\r\n};\r\n"]}
@@ -12,7 +12,7 @@ exports.DeepBlues = {
12
12
  if (!!target) {
13
13
  const currentBuff = input.hero.globalInfo.DeepBluesPlayed + 1;
14
14
  input.hero.globalInfo.DeepBluesPlayed++;
15
- (0, stats_1.modifyStats)(target, input.source, 1 * currentBuff * mult, 2 * currentBuff * mult, input.board, input.hero, input.gameState);
15
+ (0, stats_1.modifyStats)(target, input.source, 2 * currentBuff * mult, 2 * currentBuff * mult, input.board, input.hero, input.gameState);
16
16
  input.gameState.spectator.registerPowerTarget(input.source, target, input.board, input.hero, input.otherHero);
17
17
  }
18
18
  },
@@ -1 +1 @@
1
- {"version":3,"file":"deep-blues.js","sourceRoot":"","sources":["../../../../src/cards/impl/spellcraft/deep-blues.ts"],"names":[],"mappings":";;;AAQA,mDAAqD;AACrD,qDAAwD;AAG3C,QAAA,SAAS,GAAoB;IACzC,OAAO,EAAE,4BAAsG;IAC/G,eAAe,EAAE,CAAC,WAAmB,EAAE,KAAqB,EAAE,EAAE;;QAC/D,MAAM,IAAI,GAAG,WAAW,gBAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;YACxC,IAAA,mBAAW,EACV,MAAM,EACN,KAAK,CAAC,MAAM,EACZ,CAAC,GAAG,WAAW,GAAG,IAAI,EACtB,CAAC,GAAG,WAAW,GAAG,IAAI,EACtB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,MAAM,EACZ,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Deep Blues (Spellcraft token from Deep Blue Crooner)\r\n * Give a minion +1/+2 until next turn. Improve your future Deep Blues.\r\n * Golden token: +2/+4 (via mult).\r\n *\r\n * Deep Blue Crooner (Tier 3, 2/4) updated 35.2 — was +2/+3 per stack.\r\n */\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const DeepBlues: TavernSpellCard = {\r\n\tcardIds: [CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502t, CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502_Gt],\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst mult = spellCardId === CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502t ? 1 : 2;\r\n\t\tconst target = input.target ?? pickRandom(input.board);\r\n\t\tif (!!target) {\r\n\t\t\tconst currentBuff = input.hero.globalInfo.DeepBluesPlayed + 1;\r\n\t\t\tinput.hero.globalInfo.DeepBluesPlayed++;\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.source,\r\n\t\t\t\t1 * currentBuff * mult,\r\n\t\t\t\t2 * currentBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.source,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"deep-blues.js","sourceRoot":"","sources":["../../../../src/cards/impl/spellcraft/deep-blues.ts"],"names":[],"mappings":";;;AAQA,mDAAqD;AACrD,qDAAwD;AAG3C,QAAA,SAAS,GAAoB;IACzC,OAAO,EAAE,4BAAsG;IAC/G,eAAe,EAAE,CAAC,WAAmB,EAAE,KAAqB,EAAE,EAAE;;QAC/D,MAAM,IAAI,GAAG,WAAW,gBAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;YACxC,IAAA,mBAAW,EACV,MAAM,EACN,KAAK,CAAC,MAAM,EACZ,CAAC,GAAG,WAAW,GAAG,IAAI,EACtB,CAAC,GAAG,WAAW,GAAG,IAAI,EACtB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;YACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,MAAM,EACZ,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Deep Blues (Spellcraft token from Deep Blue Crooner)\r\n * Give a minion +1/+2 until next turn. Improve your future Deep Blues.\r\n * Golden token: +2/+4 (via mult).\r\n *\r\n * Deep Blue Crooner (Tier 3, 2/4) updated 35.2 — was +2/+3 per stack.\r\n */\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, TavernSpellCard } from '../../card.interface';\r\n\r\nexport const DeepBlues: TavernSpellCard = {\r\n\tcardIds: [CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502t, CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502_Gt],\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => {\r\n\t\tconst mult = spellCardId === CardIds.DeepBlueCrooner_DeepBluesToken_BG26_502t ? 1 : 2;\r\n\t\tconst target = input.target ?? pickRandom(input.board);\r\n\t\tif (!!target) {\r\n\t\t\tconst currentBuff = input.hero.globalInfo.DeepBluesPlayed + 1;\r\n\t\t\tinput.hero.globalInfo.DeepBluesPlayed++;\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.source,\r\n\t\t\t\t2 * currentBuff * mult,\r\n\t\t\t\t2 * currentBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.source,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -8,8 +8,7 @@ exports.BewitchedRibbon = {
8
8
  if (input.source !== input.hero) {
9
9
  return;
10
10
  }
11
- const buff = 3;
12
- (0, utils_1.addStatsToBoard)(input.hero, input.board, input.hero, buff, buff, input.gameState);
11
+ (0, utils_1.addStatsToBoard)(input.hero, input.board, input.hero, 3, 2, input.gameState);
13
12
  },
14
13
  };
15
14
  //# sourceMappingURL=bewitched-ribbon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bewitched-ribbon.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bewitched-ribbon.ts"],"names":[],"mappings":";;;AAEA,0CAAiD;AAGpC,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,sBAA4C;IACrD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QAED,MAAM,IAAI,GAAG,CAAC,CAAC;QACf,IAAA,uBAAe,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const BewitchedRibbon: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BewitchedRibbon_BG35_MagicItem_923],\r\n\tonTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst buff = 3;\r\n\t\taddStatsToBoard(input.hero, input.board, input.hero, buff, buff, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bewitched-ribbon.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bewitched-ribbon.ts"],"names":[],"mappings":";;;AAEA,0CAAiD;AAGpC,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,sBAA4C;IACrD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QAED,IAAA,uBAAe,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { addStatsToBoard } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const BewitchedRibbon: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BewitchedRibbon_BG35_MagicItem_923],\r\n\tonTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\taddStatsToBoard(input.hero, input.board, input.hero, 3, 2, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -13,8 +13,8 @@ exports.BluegillFlippers = {
13
13
  if (leftMost) {
14
14
  const refCard = input.gameState.allCards.getCard(leftMost.cardId);
15
15
  if ((refCard === null || refCard === void 0 ? void 0 : refCard.attack) != null) {
16
- leftMost.attack = ((_c = (_b = leftMost.attack) !== null && _b !== void 0 ? _b : refCard.attack) !== null && _c !== void 0 ? _c : 0) + 3;
17
- leftMost.health = ((_e = (_d = leftMost.health) !== null && _d !== void 0 ? _d : refCard.health) !== null && _e !== void 0 ? _e : 0) + 3;
16
+ leftMost.attack = ((_c = (_b = leftMost.attack) !== null && _b !== void 0 ? _b : refCard.attack) !== null && _c !== void 0 ? _c : 0) + 4;
17
+ leftMost.health = ((_e = (_d = leftMost.health) !== null && _d !== void 0 ? _d : refCard.health) !== null && _e !== void 0 ? _e : 0) + 4;
18
18
  }
19
19
  }
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bluegill-flippers.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bluegill-flippers.ts"],"names":[],"mappings":";;;AAIa,QAAA,gBAAgB,GAA6B;IACzD,OAAO,EAAE,sBAA6C;IACtD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO;QAExC,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,QAAQ,EAAE;gBACb,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,EAAE;oBAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC/D,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC/D;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const BluegillFlippers: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BluegillFlippers_BG32_MagicItem_893],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) return;\r\n\r\n\t\tconst hand = input.hero.hand ?? [];\r\n\t\tif (hand.length > 0) {\r\n\t\t\tconst leftMost = hand[0];\r\n\t\t\tif (leftMost) {\r\n\t\t\t\tconst refCard = input.gameState.allCards.getCard(leftMost.cardId);\r\n\t\t\t\tif (refCard?.attack != null) {\r\n\t\t\t\t\tleftMost.attack = (leftMost.attack ?? refCard.attack ?? 0) + 3;\r\n\t\t\t\t\tleftMost.health = (leftMost.health ?? refCard.health ?? 0) + 3;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bluegill-flippers.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bluegill-flippers.ts"],"names":[],"mappings":";;;AAIa,QAAA,gBAAgB,GAA6B;IACzD,OAAO,EAAE,sBAA6C;IACtD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO;QAExC,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,QAAQ,EAAE;gBACb,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,EAAE;oBAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC/D,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC/D;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const BluegillFlippers: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BluegillFlippers_BG32_MagicItem_893],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) return;\r\n\r\n\t\tconst hand = input.hero.hand ?? [];\r\n\t\tif (hand.length > 0) {\r\n\t\t\tconst leftMost = hand[0];\r\n\t\t\tif (leftMost) {\r\n\t\t\t\tconst refCard = input.gameState.allCards.getCard(leftMost.cardId);\r\n\t\t\t\tif (refCard?.attack != null) {\r\n\t\t\t\t\tleftMost.attack = (leftMost.attack ?? refCard.attack ?? 0) + 4;\r\n\t\t\t\t\tleftMost.health = (leftMost.health ?? refCard.health ?? 0) + 4;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -10,8 +10,8 @@ exports.BubbleCrown = {
10
10
  trinket.scriptDataNum1 = ((_a = trinket.scriptDataNum1) !== null && _a !== void 0 ? _a : 10) - 1;
11
11
  if (trinket.scriptDataNum1 <= 0) {
12
12
  trinket.scriptDataNum6 = 1;
13
- input.hero.globalInfo.TavernSpellAttackBuff = ((_b = input.hero.globalInfo.TavernSpellAttackBuff) !== null && _b !== void 0 ? _b : 0) + 3;
14
- input.hero.globalInfo.TavernSpellHealthBuff = ((_c = input.hero.globalInfo.TavernSpellHealthBuff) !== null && _c !== void 0 ? _c : 0) + 3;
13
+ input.hero.globalInfo.TavernSpellAttackBuff = ((_b = input.hero.globalInfo.TavernSpellAttackBuff) !== null && _b !== void 0 ? _b : 0) + 5;
14
+ input.hero.globalInfo.TavernSpellHealthBuff = ((_c = input.hero.globalInfo.TavernSpellHealthBuff) !== null && _c !== void 0 ? _c : 0) + 5;
15
15
  }
16
16
  },
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bubble-crown.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bubble-crown.ts"],"names":[],"mappings":";;;AAIa,QAAA,WAAW,GAA6B;IACpD,OAAO,EAAE,sBAAwC;IACjD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO;QACnC,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACrG;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const BubbleCrown: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BubbleCrown_BG35_MagicItem_920],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (trinket.scriptDataNum6) return;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 10) - 1;\r\n\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\ttrinket.scriptDataNum6 = 1;\r\n\t\t\tinput.hero.globalInfo.TavernSpellAttackBuff = (input.hero.globalInfo.TavernSpellAttackBuff ?? 0) + 3;\r\n\t\t\tinput.hero.globalInfo.TavernSpellHealthBuff = (input.hero.globalInfo.TavernSpellHealthBuff ?? 0) + 3;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bubble-crown.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bubble-crown.ts"],"names":[],"mappings":";;;AAIa,QAAA,WAAW,GAA6B;IACpD,OAAO,EAAE,sBAAwC;IACjD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,OAAO,CAAC,cAAc;YAAE,OAAO;QACnC,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACrG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACrG;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const BubbleCrown: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BubbleCrown_BG35_MagicItem_920],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (trinket.scriptDataNum6) return;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 10) - 1;\r\n\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\ttrinket.scriptDataNum6 = 1;\r\n\t\t\tinput.hero.globalInfo.TavernSpellAttackBuff = (input.hero.globalInfo.TavernSpellAttackBuff ?? 0) + 5;\r\n\t\t\tinput.hero.globalInfo.TavernSpellHealthBuff = (input.hero.globalInfo.TavernSpellHealthBuff ?? 0) + 5;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -5,7 +5,7 @@ exports.CopperCoil = {
5
5
  cardIds: ["BG35_MagicItem_300", "BG35_MagicItem_300t"],
6
6
  onBeforeMagnetize: (trinket, input) => {
7
7
  var _a, _b;
8
- const additionalBuff = trinket.cardId === "BG35_MagicItem_300" ? 1 : 2;
8
+ const additionalBuff = trinket.cardId === "BG35_MagicItem_300" ? 1 : 3;
9
9
  const currentBuff = (_a = trinket.scriptDataNum1) !== null && _a !== void 0 ? _a : additionalBuff;
10
10
  input.magnetizedCard.attack += currentBuff;
11
11
  input.magnetizedCard.health += currentBuff;
@@ -1 +1 @@
1
- {"version":3,"file":"copper-coil.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/copper-coil.ts"],"names":[],"mappings":";;;AAKa,QAAA,UAAU,GAA0B;IAChD,OAAO,EAAE,6CAA+F;IACxG,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAA6B,EAAE,EAAE;;QAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,cAAc,CAAC;QAC7D,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,cAAc,CAAC;IACzE,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const CopperCoil: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.CopperCoil_BG35_MagicItem_300, CardIds.CopperCoil_CopperCoilToken_BG35_MagicItem_300t],\r\n\tonBeforeMagnetize: (trinket: BoardTrinket, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst additionalBuff = trinket.cardId === CardIds.CopperCoil_BG35_MagicItem_300 ? 1 : 2;\r\n\t\tconst currentBuff = trinket.scriptDataNum1 ?? additionalBuff;\r\n\t\tinput.magnetizedCard.attack += currentBuff;\r\n\t\tinput.magnetizedCard.health += currentBuff;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 0) + additionalBuff;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"copper-coil.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/copper-coil.ts"],"names":[],"mappings":";;;AAKa,QAAA,UAAU,GAA0B;IAChD,OAAO,EAAE,6CAA+F;IACxG,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAA6B,EAAE,EAAE;;QAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,cAAc,CAAC;QAC7D,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,cAAc,CAAC;IACzE,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const CopperCoil: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.CopperCoil_BG35_MagicItem_300, CardIds.CopperCoil_CopperCoilToken_BG35_MagicItem_300t],\r\n\tonBeforeMagnetize: (trinket: BoardTrinket, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst additionalBuff = trinket.cardId === CardIds.CopperCoil_BG35_MagicItem_300 ? 1 : 3;\r\n\t\tconst currentBuff = trinket.scriptDataNum1 ?? additionalBuff;\r\n\t\tinput.magnetizedCard.attack += currentBuff;\r\n\t\tinput.magnetizedCard.health += currentBuff;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 0) + additionalBuff;\r\n\t},\r\n};\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { BoardTrinket } from '../../../bgs-player-entity';
2
2
  import { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';
3
3
  export declare const eternalKnightAttack = 4;
4
- export declare const eternalKnightHealth = 1;
4
+ export declare const eternalKnightHealth = 2;
5
5
  export declare const EternalPortrait: {
6
6
  startOfCombat: (trinket: BoardTrinket, input: SoCInput) => boolean;
7
7
  };
@@ -4,7 +4,7 @@ exports.EternalPortrait = exports.eternalKnightHealth = exports.eternalKnightAtt
4
4
  const reborn_1 = require("../../../keywords/reborn");
5
5
  const taunt_1 = require("../../../keywords/taunt");
6
6
  exports.eternalKnightAttack = 4;
7
- exports.eternalKnightHealth = 1;
7
+ exports.eternalKnightHealth = 2;
8
8
  exports.EternalPortrait = {
9
9
  startOfCombat: (trinket, input) => {
10
10
  const candidates = input.playerBoard
@@ -1 +1 @@
1
- {"version":3,"file":"eternal-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/eternal-portrait.ts"],"names":[],"mappings":";;;AACA,qDAAwD;AACxD,mDAAsD;AAIzC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAExB,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAAmC,IAAI,CAAC,CAAC,MAAM,iBAAqC,CAAC;aAC3G,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxG,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,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { updateTaunt } from '../../../keywords/taunt';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const eternalKnightAttack = 4;\r\nexport const eternalKnightHealth = 1;\r\n\r\nexport const EternalPortrait = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst candidates = input.playerBoard\r\n\t\t\t.filter((e) => e.cardId === CardIds.EternalKnight_BG25_008 || e.cardId === CardIds.EternalKnight_BG25_008_G)\r\n\t\t\t.filter((e) => !e.taunt || !e.reborn);\r\n\t\tif (candidates?.length) {\r\n\t\t\tcandidates.forEach((knight) => {\r\n\t\t\t\tupdateTaunt(knight, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);\r\n\t\t\t\tupdateReborn(\r\n\t\t\t\t\tknight,\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\tknight,\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});\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"eternal-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/eternal-portrait.ts"],"names":[],"mappings":";;;AACA,qDAAwD;AACxD,mDAAsD;AAIzC,QAAA,mBAAmB,GAAG,CAAC,CAAC;AACxB,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAExB,QAAA,eAAe,GAAG;IAC9B,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW;aAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAAmC,IAAI,CAAC,CAAC,MAAM,iBAAqC,CAAC;aAC3G,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE;YACvB,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACxG,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,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;SACZ;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { updateReborn } from '../../../keywords/reborn';\r\nimport { updateTaunt } from '../../../keywords/taunt';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\n\r\nexport const eternalKnightAttack = 4;\r\nexport const eternalKnightHealth = 2;\r\n\r\nexport const EternalPortrait = {\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst candidates = input.playerBoard\r\n\t\t\t.filter((e) => e.cardId === CardIds.EternalKnight_BG25_008 || e.cardId === CardIds.EternalKnight_BG25_008_G)\r\n\t\t\t.filter((e) => !e.taunt || !e.reborn);\r\n\t\tif (candidates?.length) {\r\n\t\t\tcandidates.forEach((knight) => {\r\n\t\t\t\tupdateTaunt(knight, true, input.playerBoard, input.playerEntity, input.opponentEntity, input.gameState);\r\n\t\t\t\tupdateReborn(\r\n\t\t\t\t\tknight,\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\tknight,\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});\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -13,9 +13,9 @@ exports.LorewalkerScroll = {
13
13
  }
14
14
  if (!input.target || input.target.health <= 0 || input.target.definitelyDead)
15
15
  return;
16
- const isUpgraded = trinket.cardId === "BG30_MagicItem_422t";
17
- const attack = isUpgraded ? 7 : 2;
18
- const health = isUpgraded ? 7 : 1;
16
+ const isGreater = trinket.cardId === "BG30_MagicItem_422t";
17
+ const attack = isGreater ? 8 : 2;
18
+ const health = isGreater ? 8 : 2;
19
19
  (0, stats_1.modifyStats)(input.target, trinket, attack, health, input.board, input.hero, input.gameState);
20
20
  },
21
21
  };