@firestone-hs/simulate-bgs-battle 1.1.701 → 1.1.702

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/card.interface.d.ts +2 -6
  2. package/dist/cards/card.interface.js.map +1 -1
  3. package/dist/cards/impl/_card-mappings.js +6 -0
  4. package/dist/cards/impl/_card-mappings.js.map +1 -1
  5. package/dist/cards/impl/minion/auto-assembler-enchantment.js +6 -1
  6. package/dist/cards/impl/minion/auto-assembler-enchantment.js.map +1 -1
  7. package/dist/cards/impl/minion/banana-slamma.js +1 -1
  8. package/dist/cards/impl/minion/banana-slamma.js.map +1 -1
  9. package/dist/cards/impl/minion/battlecruiser.js +9 -11
  10. package/dist/cards/impl/minion/battlecruiser.js.map +1 -1
  11. package/dist/cards/impl/minion/pufferquil.d.ts +2 -2
  12. package/dist/cards/impl/minion/pufferquil.js +3 -0
  13. package/dist/cards/impl/minion/pufferquil.js.map +1 -1
  14. package/dist/cards/impl/minion/scallywag.js.map +1 -1
  15. package/dist/cards/impl/minion/scarlet-survivor.js +10 -1
  16. package/dist/cards/impl/minion/scarlet-survivor.js.map +1 -1
  17. package/dist/cards/impl/minion/skulking-bristlemane.js +1 -1
  18. package/dist/cards/impl/minion/skulking-bristlemane.js.map +1 -1
  19. package/dist/cards/impl/minion/timecapn-hooktail.d.ts +2 -0
  20. package/dist/cards/impl/minion/timecapn-hooktail.js +14 -0
  21. package/dist/cards/impl/minion/timecapn-hooktail.js.map +1 -0
  22. package/dist/cards/impl/minion/timewarped-magnanimoose.js +1 -1
  23. package/dist/cards/impl/minion/timewarped-magnanimoose.js.map +1 -1
  24. package/dist/cards/impl/trinket/automaton-portrait.d.ts +4 -0
  25. package/dist/cards/impl/trinket/automaton-portrait.js +12 -6
  26. package/dist/cards/impl/trinket/automaton-portrait.js.map +1 -1
  27. package/dist/cards/impl/trinket/fang-anklet.js +2 -17
  28. package/dist/cards/impl/trinket/fang-anklet.js.map +1 -1
  29. package/dist/cards/impl/trinket/jar-o-gems.js +1 -1
  30. package/dist/cards/impl/trinket/jar-o-gems.js.map +1 -1
  31. package/dist/cards/impl/trinket/mama-bear-sticker.d.ts +2 -0
  32. package/dist/cards/impl/trinket/mama-bear-sticker.js +18 -0
  33. package/dist/cards/impl/trinket/mama-bear-sticker.js.map +1 -0
  34. package/dist/cards/impl/trinket/powder-keg-enchantment.js +5 -5
  35. package/dist/cards/impl/trinket/powder-keg-enchantment.js.map +1 -1
  36. package/dist/cards/impl/trinket/powder-keg.js +3 -1
  37. package/dist/cards/impl/trinket/powder-keg.js.map +1 -1
  38. package/dist/cards/impl/trinket/slamma-sticker.js +1 -1
  39. package/dist/cards/impl/trinket/slamma-sticker.js.map +1 -1
  40. package/dist/mechanics/cast-tavern-spell.js +8 -8
  41. package/dist/mechanics/cast-tavern-spell.js.map +1 -1
  42. package/dist/simulation/add-minion-to-board.js +15 -1
  43. package/dist/simulation/add-minion-to-board.js.map +1 -1
  44. package/dist/simulation/start-of-combat/soc-action-processor.js +0 -3
  45. package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
  46. package/dist/simulation/summon-when-space.js +7 -1
  47. package/dist/simulation/summon-when-space.js.map +1 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"auto-assembler-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/auto-assembler-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,wBAAwB,GAAoC;IACxE,OAAO,EAAE;;;KAGR;IACD,iCAAiC,EAAE,CAClC,WAA+B,EAC/B,MAAsC,EACtC,KAAgC,EACP,EAAE;QAC3B,MAAM,aAAa,GAClB,WAAW,CAAC,MAAM,kBAA+D;YAChF,CAAC;YACD,CAAC,aAAmC,CAAC;QACvC,OAAO,IAAA,4CAAuB,EAAC,aAAa,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACzD,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 { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const AutoAssemblerEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [\r\n\t\tCardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172e,\r\n\t\tCardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172_Ge,\r\n\t],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: { cardId: string },\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t): readonly BoardEntity[] => {\r\n\t\tconst cardIdToSpawn =\r\n\t\t\tenchantment.cardId === CardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172_Ge\r\n\t\t\t\t? CardIds.AstralAutomaton_BG_TTN_401_G\r\n\t\t\t\t: CardIds.AstralAutomaton_BG_TTN_401;\r\n\t\treturn simplifiedSpawnEntities(cardIdToSpawn, 1, input);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"auto-assembler-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/auto-assembler-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,wBAAwB,GAAoC;IACxE,OAAO,EAAE;;;KAGR;IACD,iCAAiC,EAAE,CAClC,WAA6B,EAC7B,MAAsC,EACtC,KAAgC,EACP,EAAE;;QAC3B,MAAM,aAAa,GAClB,WAAW,CAAC,MAAM,kBAA+D;YAChF,CAAC;YACD,CAAC,aAAmC,CAAC;QA2EvC,MAAM,eAAe,GACpB,WAAW,CAAC,MAAM,kBAA+D;YAChF,CAAC,CAAC,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,cAAkC,0CAAE,MAAM,mCAAI,CAAC;YACjF,CAAC,CAAC,MAAA,MAAA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,YAAgC,0CAAE,MAAM,mCAAI,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,iBAAiB,IAAI,eAAe,CAAC,GAAG,eAAe,CAAC,CAAC;QAC/F,OAAO,IAAA,4CAAuB,EAAC,aAAa,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;CACD,CAAC","sourcesContent":["import { BoardEnchantment, 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 { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const AutoAssemblerEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [\r\n\t\tCardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172e,\r\n\t\tCardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172_Ge,\r\n\t],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: BoardEnchantment,\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t): readonly BoardEntity[] => {\r\n\t\tconst cardIdToSpawn =\r\n\t\t\tenchantment.cardId === CardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172_Ge\r\n\t\t\t\t? CardIds.AstralAutomaton_BG_TTN_401_G\r\n\t\t\t\t: CardIds.AstralAutomaton_BG_TTN_401;\r\n\t\t// Not sure at all.\r\n\t\t// This is the enchantment that spawned 2 Automatons:\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - SHOW_ENTITY - Updating Entity=6863 CardID=BG32_172e\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=CONTROLLER value=13\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=CARDTYPE value=ENCHANTMENT\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=ATTACHED value=6862\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=ZONE value=SETASIDE\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=ENTITY_ID value=6863\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=CREATOR value=6862\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=MAGNETIC value=1\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=1037 value=5\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=1068 value=0\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=CREATOR_DBID value=108432\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=1489 value=120025\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - tag=SPAWN_TIME_COUNT value=1\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=1068 value=1\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=1068 value=0\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=ZONE value=PLAY\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=CREATOR value=3621\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=CREATOR_DBID value=120025\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=TAG_SCRIPT_DATA_NUM_1 value=4\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=TAG_SCRIPT_DATA_NUM_2 value=4\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=3528 value=1\r\n\t\t// D 11:27:06.4270081 GameState.DebugPrintPower() - TAG_CHANGE Entity=6863 tag=COPIED_FROM_ENTITY_ID value=6655\r\n\t\t// This is the enchantment that spawned 4 Automatons:\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - SHOW_ENTITY - Updating Entity=9342 CardID=BG32_172e\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=CONTROLLER value=12\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=CARDTYPE value=ENCHANTMENT\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=ATTACHED value=9341\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=ZONE value=SETASIDE\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=ENTITY_ID value=9342\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=CREATOR value=9341\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=MAGNETIC value=1\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=1037 value=4\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=1068 value=0\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=CREATOR_DBID value=61930\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=1489 value=120025\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - tag=SPAWN_TIME_COUNT value=1\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=1068 value=1\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=1068 value=0\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=ZONE value=PLAY\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=CREATOR value=3789\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=CREATOR_DBID value=120025\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=TAG_SCRIPT_DATA_NUM_1 value=8\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=TAG_SCRIPT_DATA_NUM_2 value=8\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=3528 value=1\r\n\t\t// D 12:08:39.6751039 GameState.DebugPrintPower() - TAG_CHANGE Entity=9342 tag=COPIED_FROM_ENTITY_ID value=9048\r\n\t\t// This spawns 2 golden:\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - SHOW_ENTITY - Updating Entity=12303 CardID=BG32_172_Ge\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=CONTROLLER value=13\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=CARDTYPE value=ENCHANTMENT\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=ATTACHED value=12299\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=ZONE value=SETASIDE\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=ENTITY_ID value=12303\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=CREATOR value=12299\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=MAGNETIC value=1\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=1037 value=5\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=1068 value=0\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=CREATOR_DBID value=130794\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=1475 value=3\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=1489 value=120025\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - tag=SPAWN_TIME_COUNT value=1\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=1068 value=1\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=1068 value=0\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=ZONE value=PLAY\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=CREATOR value=9141\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=CREATOR_DBID value=120026\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=TAG_SCRIPT_DATA_NUM_1 value=36\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=TAG_SCRIPT_DATA_NUM_2 value=29\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=3528 value=1\r\n\t\t// D 18:11:51.5528186 GameState.DebugPrintPower() - TAG_CHANGE Entity=12303 tag=COPIED_FROM_ENTITY_ID value=12103\r\n\t\t// So the script 1/2 are probably the total attack of the magnetized Auto Assemblers. If some of them got buffed,\r\n\t\t// we can't get back the base attack of the Auto Assemblers.\r\n\t\t// So this doesn't work, but it's the best approximation I can think of right now.\r\n\t\tconst attackPerMinion =\r\n\t\t\tenchantment.cardId === CardIds.AutoAssembler_AutoAssemblerEnchantment_BG32_172_Ge\r\n\t\t\t\t? input.gameState.allCards.getCard(CardIds.AutoAssembler_BG32_172_G)?.attack ?? 0\r\n\t\t\t\t: input.gameState.allCards.getCard(CardIds.AutoAssembler_BG32_172)?.attack ?? 0;\r\n\t\tconst loops = Math.floor((enchantment.tagScriptDataNum1 || attackPerMinion) / attackPerMinion);\r\n\t\treturn simplifiedSpawnEntities(cardIdToSpawn, loops, input);\r\n\t},\r\n};\r\n"]}
@@ -16,7 +16,7 @@ exports.BananaSlamma = {
16
16
  return;
17
17
  }
18
18
  const mult = slam.cardId === "BG26_802_G" ? 3 : 2;
19
- (0, stats_1.setEntityStats)(spawned, spawned.attack * mult, spawned.health, board, hero, gameState);
19
+ (0, stats_1.setEntityStats)(spawned, spawned.attack * mult, 0, board, hero, gameState);
20
20
  gameState.spectator.registerPowerTarget(slam, spawned, board, null, null);
21
21
  },
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"banana-slamma.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/banana-slamma.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAKpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,0BAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAkC,EAAE,KAAwB,EAAE,EAAE;QACnF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,MAAM,IAAI,GAAG,MAAqB,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;YACnD,OAAO;SACP;QACD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAuB,EAAE,SAAS,CAAC,CAAC;QAC1G,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const BananaSlamma: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.BananaSlamma_BG26_802, CardIds.BananaSlamma_BG26_802_G],\r\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tconst slam = minion as BoardEntity;\r\n\t\tif (!spawned || spawned.entityId === slam.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = slam.cardId === CardIds.BananaSlamma_BG26_802_G ? 3 : 2;\r\n\t\tsetEntityStats(spawned, spawned.attack * mult, spawned.health, board, hero as BgsPlayerEntity, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(slam, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"banana-slamma.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/banana-slamma.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAKpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,YAAY,GAA0B;IAClD,OAAO,EAAE,0BAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAkC,EAAE,KAAwB,EAAE,EAAE;QACnF,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,MAAM,IAAI,GAAG,MAAqB,CAAC;QACnC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;YACnD,OAAO;SACP;QACD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAuB,EAAE,SAAS,CAAC,CAAC;QAC7F,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const BananaSlamma: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.BananaSlamma_BG26_802, CardIds.BananaSlamma_BG26_802_G],\r\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tconst slam = minion as BoardEntity;\r\n\t\tif (!spawned || spawned.entityId === slam.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = slam.cardId === CardIds.BananaSlamma_BG26_802_G ? 3 : 2;\r\n\t\tsetEntityStats(spawned, spawned.attack * mult, 0, board, hero as BgsPlayerEntity, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(slam, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}
@@ -17,17 +17,15 @@ exports.Battlecruiser = {
17
17
  const aliveEntities = input.opponentBoard.filter((entity) => entity.health > 0 && !entity.definitelyDead);
18
18
  const targetEntityId = (_a = (0, utils_1.getRandomMinionWithHighestHealth)(aliveEntities)) === null || _a === void 0 ? void 0 : _a.entityId;
19
19
  const cannonDamage = Math.max(...yamatoCannons.map((e) => e.tagScriptDataNum1));
20
- for (const yamatoCannon of yamatoCannons) {
21
- const loops = ((_b = minion.tags) === null || _b === void 0 ? void 0 : _b[reference_data_1.GameTag.BACON_YAMATO_CANNON]) === 1 ? 2 : 1;
22
- for (let i = 0; i < loops; i++) {
23
- let target = input.opponentBoard.find((entity) => entity.entityId === targetEntityId);
24
- if (!target || target.health <= 0 || target.definitelyDead) {
25
- target = (0, utils_1.getRandomMinionWithHighestHealth)(input.opponentBoard);
26
- }
27
- if (!!target) {
28
- input.gameState.spectator.registerPowerTarget(minion, target, input.opponentBoard, input.playerEntity, input.opponentEntity);
29
- (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, minion, cannonDamage, input.playerBoard, input.playerEntity, input.gameState);
30
- }
20
+ const loops = ((_b = minion.tags) === null || _b === void 0 ? void 0 : _b[reference_data_1.GameTag.BACON_YAMATO_CANNON]) === 1 ? 2 : 1;
21
+ for (let i = 0; i < loops; i++) {
22
+ let target = input.opponentBoard.find((entity) => entity.entityId === targetEntityId);
23
+ if (!target || target.health <= 0 || target.definitelyDead) {
24
+ target = (0, utils_1.getRandomMinionWithHighestHealth)(input.opponentBoard);
25
+ }
26
+ if (!!target) {
27
+ input.gameState.spectator.registerPowerTarget(minion, target, input.opponentBoard, input.playerEntity, input.opponentEntity);
28
+ (0, attack_1.dealDamageToMinion)(target, input.opponentBoard, input.opponentEntity, minion, cannonDamage, input.playerBoard, input.playerEntity, input.gameState);
31
29
  }
32
30
  }
33
31
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"battlecruiser.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/battlecruiser.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getRandomMinionWithHighestHealth } from '../../../utils';\r\nimport { DeathrattleSpawnCard, RallyCard, RebornSelfEffectCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Battlecruiser: StartOfCombatCard & RebornSelfEffectCard & RallyCard & DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.LiftOff_BattlecruiserToken_BG31_HERO_801pt, CardIds.Battlecruiser_BG31_HERO_801pt_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Enchantments can appear multiple times???\r\n\t\tconst yamatoCannons = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.YamatoCannon_YamatoCannonEnchantment_BG31_HERO_801ptce);\r\n\t\tif (!yamatoCannons?.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Still not sure how these should be processed\r\n\t\t// In some cases, it feels like it takes the sum of the damage, in other cases it runs them one after the other\r\n\t\t// (but maybe that's just the replay aggregating the values)\r\n\t\t// I'm not sure about the BACON_YAMATO_CANNON tag; it seems like it indicates multiple cannons, but I'm not sure\r\n\t\t// Other issues: looks like that if there are multiple cannon enchantments but no divine shield, everything is applied to the same target\r\n\t\t// So it looks as if the target is selected first, then everything targets it\r\n\t\t// https://replays.firestoneapp.com/?reviewId=e8f38ab0-3380-4275-88d8-0715d69d3f08&turn=21&action=1\r\n\t\t// Even more than that: the target is the same between multiple battlecruisers\r\n\t\t// https://replays.firestoneapp.com/?reviewId=cbfd6fe9-1a58-400a-a593-6b8852df5427&turn=9&action=0\r\n\t\t// However I'm pretty sure I've seen another behavior\r\n\r\n\t\t// Get the highest health opponent minion at the start of the phase\r\n\t\t// Update 2025-05-16: it looks like it now takes the highest health current minion\r\n\t\t// https://replays.firestoneapp.com/?reviewId=c2620528-e0de-4862-9b11-cf055440b2b8&turn=19&action=2\r\n\t\tconst aliveEntities = input.opponentBoard.filter((entity) => entity.health > 0 && !entity.definitelyDead);\r\n\t\tconst targetEntityId = getRandomMinionWithHighestHealth(aliveEntities)?.entityId;\r\n\t\t// const numberOfCannons = yamatoCannons.length;\r\n\t\tconst cannonDamage = Math.max(...yamatoCannons.map((e) => e.tagScriptDataNum1));\r\n\t\tfor (const yamatoCannon of yamatoCannons) {\r\n\t\t\t// const damage = yamatoCannon.tagScriptDataNum1;\r\n\t\t\t// Could this simply be tagScriptDataNum2 on the battlecruiser?\r\n\t\t\t// I don't understand how this relates to the number enchants in the cruiser itself\r\n\t\t\tconst loops = minion.tags?.[GameTag.BACON_YAMATO_CANNON] === 1 ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t\tlet target = input.opponentBoard.find((entity) => entity.entityId === targetEntityId);\r\n\t\t\t\tif (!target || target.health <= 0 || target.definitelyDead) {\r\n\t\t\t\t\ttarget = getRandomMinionWithHighestHealth(input.opponentBoard);\r\n\t\t\t\t}\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tminion,\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\t\tminion,\r\n\t\t\t\t\t\tcannonDamage,\r\n\t\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\t\tinput.gameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Since 33.6 we recompute the first attacker\r\n\t\t// https://replays.firestoneapp.com/?reviewId=f7a4a78c-269c-47b5-a0ae-099123290ccd&turn=13&action=0\r\n\t\treturn {\r\n\t\t\thasTriggered: true,\r\n\t\t\tshouldRecomputeCurrentAttacker: true,\r\n\t\t};\r\n\t},\r\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\tconst ultraCapacitors = [...input.rebornEntity.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.UltraCapacitor_UltraCapacitorEnchantment_BG31_HERO_801ptje);\r\n\t\tif (!ultraCapacitors?.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.enchantments = input.rebornEntity.enchantments;\r\n\t\tminion.attack = input.rebornEntity.maxAttack;\r\n\t\tminion.maxAttack = input.rebornEntity.maxAttack;\r\n\t\tminion.health = input.rebornEntity.maxHealth;\r\n\t\tminion.maxHealth = input.rebornEntity.maxHealth;\r\n\t\tminion.divineShield = input.rebornEntity.hadDivineShield;\r\n\t\tminion.taunt = input.rebornEntity.taunt;\r\n\t\tminion.windfury = input.rebornEntity.windfury;\r\n\t\tminion.poisonous = input.rebornEntity.poisonous;\r\n\t},\r\n\trally: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnAttackInput,\r\n\t): {\r\n\t\tdmgDoneByAttacker: number;\r\n\t\tdmgDoneByDefender: number;\r\n\t} => {\r\n\t\tconst advancedBallistics = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.AdvancedBallistics_AdvancedBallisticsEnchantment_BG31_HERO_801ptde);\r\n\t\tif (!advancedBallistics?.length) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst buff = advancedBallistics.map((e) => e.tagScriptDataNum1 ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tconst targets = input.attackingBoard.filter((entity) => entity !== minion);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst caduceusReactors = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.CaduceusReactor_CaduceusReactorEnchantment_BG31_HERO_801ptee);\r\n\t\tif (!caduceusReactors?.length) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst target = input.boardWithDeadEntity.filter((e) => e.health > 0 && !e.definitelyDead)[0];\r\n\t\tif (!target) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst buff = caduceusReactors.map((e) => e.tagScriptDataNum1 ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\ttarget,\r\n\t\t\tminion,\r\n\t\t\tbuff,\r\n\t\t\tbuff,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"battlecruiser.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/battlecruiser.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { dealDamageToMinion } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { RebornEffectInput } from '../../../simulation/reborn';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { getRandomMinionWithHighestHealth } from '../../../utils';\r\nimport { DeathrattleSpawnCard, RallyCard, RebornSelfEffectCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Battlecruiser: StartOfCombatCard & RebornSelfEffectCard & RallyCard & DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.LiftOff_BattlecruiserToken_BG31_HERO_801pt, CardIds.Battlecruiser_BG31_HERO_801pt_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\t// Enchantments can appear multiple times???\r\n\t\tconst yamatoCannons = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.YamatoCannon_YamatoCannonEnchantment_BG31_HERO_801ptce);\r\n\t\tif (!yamatoCannons?.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Still not sure how these should be processed\r\n\t\t// In some cases, it feels like it takes the sum of the damage, in other cases it runs them one after the other\r\n\t\t// (but maybe that's just the replay aggregating the values)\r\n\t\t// I'm not sure about the BACON_YAMATO_CANNON tag; it seems like it indicates multiple cannons, but I'm not sure\r\n\t\t// Other issues: looks like that if there are multiple cannon enchantments but no divine shield, everything is applied to the same target\r\n\t\t// So it looks as if the target is selected first, then everything targets it\r\n\t\t// https://replays.firestoneapp.com/?reviewId=e8f38ab0-3380-4275-88d8-0715d69d3f08&turn=21&action=1\r\n\t\t// Even more than that: the target is the same between multiple battlecruisers\r\n\t\t// https://replays.firestoneapp.com/?reviewId=cbfd6fe9-1a58-400a-a593-6b8852df5427&turn=9&action=0\r\n\t\t// However I'm pretty sure I've seen another behavior\r\n\r\n\t\t// Get the highest health opponent minion at the start of the phase\r\n\t\t// Update 2025-05-16: it looks like it now takes the highest health current minion\r\n\t\t// https://replays.firestoneapp.com/?reviewId=c2620528-e0de-4862-9b11-cf055440b2b8&turn=19&action=2\r\n\t\tconst aliveEntities = input.opponentBoard.filter((entity) => entity.health > 0 && !entity.definitelyDead);\r\n\t\tconst targetEntityId = getRandomMinionWithHighestHealth(aliveEntities)?.entityId;\r\n\t\t// const numberOfCannons = yamatoCannons.length;\r\n\t\tconst cannonDamage = Math.max(...yamatoCannons.map((e) => e.tagScriptDataNum1));\r\n\t\t// for (const yamatoCannon of yamatoCannons) {\r\n\t\t// const damage = yamatoCannon.tagScriptDataNum1;\r\n\t\t// Could this simply be tagScriptDataNum2 on the battlecruiser?\r\n\t\t// I don't understand how this relates to the number enchants in the cruiser itself\r\n\t\t// 35.2 now fires a single time?\r\n\t\t// https://replays.firestoneapp.com/?reviewId=96618003-04fa-4e41-9baa-539f0b63fb9f&turn=17&action=2\r\n\t\tconst loops = minion.tags?.[GameTag.BACON_YAMATO_CANNON] === 1 ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tlet target = input.opponentBoard.find((entity) => entity.entityId === targetEntityId);\r\n\t\t\tif (!target || target.health <= 0 || target.definitelyDead) {\r\n\t\t\t\ttarget = getRandomMinionWithHighestHealth(input.opponentBoard);\r\n\t\t\t}\r\n\t\t\tif (!!target) {\r\n\t\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t);\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\tinput.opponentBoard,\r\n\t\t\t\t\tinput.opponentEntity,\r\n\t\t\t\t\tminion,\r\n\t\t\t\t\tcannonDamage,\r\n\t\t\t\t\tinput.playerBoard,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tinput.gameState,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// }\r\n\t\t// Since 33.6 we recompute the first attacker\r\n\t\t// https://replays.firestoneapp.com/?reviewId=f7a4a78c-269c-47b5-a0ae-099123290ccd&turn=13&action=0\r\n\t\treturn {\r\n\t\t\thasTriggered: true,\r\n\t\t\tshouldRecomputeCurrentAttacker: true,\r\n\t\t};\r\n\t},\r\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => {\r\n\t\tconst ultraCapacitors = [...input.rebornEntity.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.UltraCapacitor_UltraCapacitorEnchantment_BG31_HERO_801ptje);\r\n\t\tif (!ultraCapacitors?.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.enchantments = input.rebornEntity.enchantments;\r\n\t\tminion.attack = input.rebornEntity.maxAttack;\r\n\t\tminion.maxAttack = input.rebornEntity.maxAttack;\r\n\t\tminion.health = input.rebornEntity.maxHealth;\r\n\t\tminion.maxHealth = input.rebornEntity.maxHealth;\r\n\t\tminion.divineShield = input.rebornEntity.hadDivineShield;\r\n\t\tminion.taunt = input.rebornEntity.taunt;\r\n\t\tminion.windfury = input.rebornEntity.windfury;\r\n\t\tminion.poisonous = input.rebornEntity.poisonous;\r\n\t},\r\n\trally: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnAttackInput,\r\n\t): {\r\n\t\tdmgDoneByAttacker: number;\r\n\t\tdmgDoneByDefender: number;\r\n\t} => {\r\n\t\tconst advancedBallistics = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.AdvancedBallistics_AdvancedBallisticsEnchantment_BG31_HERO_801ptde);\r\n\t\tif (!advancedBallistics?.length) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tconst buff = advancedBallistics.map((e) => e.tagScriptDataNum1 ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tconst targets = input.attackingBoard.filter((entity) => entity !== minion);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst caduceusReactors = [...minion.enchantments]\r\n\t\t\t// .reverse()\r\n\t\t\t.filter((e) => e.cardId === CardIds.CaduceusReactor_CaduceusReactorEnchantment_BG31_HERO_801ptee);\r\n\t\tif (!caduceusReactors?.length) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst target = input.boardWithDeadEntity.filter((e) => e.health > 0 && !e.definitelyDead)[0];\r\n\t\tif (!target) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst buff = caduceusReactors.map((e) => e.tagScriptDataNum1 ?? 0).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\ttarget,\r\n\t\t\tminion,\r\n\t\t\tbuff,\r\n\t\t\tbuff,\r\n\t\t\tinput.boardWithDeadEntity,\r\n\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,2 @@
1
- import { OnTavernSpellCastCard } from '../../card.interface';
2
- export declare const Pufferquil: OnTavernSpellCastCard;
1
+ import { OnTavernSpellCastCard, PlayedBloodGemsOnMeCard } from '../../card.interface';
2
+ export declare const Pufferquil: OnTavernSpellCastCard & PlayedBloodGemsOnMeCard;
@@ -10,5 +10,8 @@ exports.Pufferquil = {
10
10
  }
11
11
  (0, venomous_1.updateVenomous)(minion, true, input.board, input.hero, input.otherHero, input.gameState);
12
12
  },
13
+ playedBloodGemsOnMe: (minion, input) => {
14
+ (0, venomous_1.updateVenomous)(minion, true, input.board, input.hero, input.otherHero, input.gameState);
15
+ },
13
16
  };
14
17
  //# sourceMappingURL=pufferquil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pufferquil.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/pufferquil.ts"],"names":[],"mappings":";;;AACA,yDAA4D;AAI/C,QAAA,UAAU,GAA0B;IAChD,OAAO,EAAE,0BAA4D;IACrE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC/D,OAAO;SACP;QACD,IAAA,yBAAc,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { updateVenomous } from '../../../keywords/venomous';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const Pufferquil: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.Pufferquil_BG25_039, CardIds.Pufferquil_BG25_039_G],\r\n\tonTavernSpellCast: (minion: BoardEntity, input: CastSpellInput) => {\r\n\t\tif (!input.target || input.target.entityId !== minion.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateVenomous(minion, true, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"pufferquil.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/pufferquil.ts"],"names":[],"mappings":";;;AACA,yDAA4D;AAK/C,QAAA,UAAU,GAAoD;IAC1E,OAAO,EAAE,0BAA4D;IACrE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC/D,OAAO;SACP;QACD,IAAA,yBAAc,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,mBAAmB,EAAE,CAAC,MAAmB,EAAE,KAA+B,EAAE,EAAE;QAC7E,IAAA,yBAAc,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { updateVenomous } from '../../../keywords/venomous';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { PlayedBloodGemsOnMeInput } from '../../../simulation/blood-gems';\r\nimport { CastSpellInput, OnTavernSpellCastCard, PlayedBloodGemsOnMeCard } from '../../card.interface';\r\n\r\nexport const Pufferquil: OnTavernSpellCastCard & PlayedBloodGemsOnMeCard = {\r\n\tcardIds: [CardIds.Pufferquil_BG25_039, CardIds.Pufferquil_BG25_039_G],\r\n\tonTavernSpellCast: (minion: BoardEntity, input: CastSpellInput) => {\r\n\t\tif (!input.target || input.target.entityId !== minion.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tupdateVenomous(minion, true, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n\tplayedBloodGemsOnMe: (minion: BoardEntity, input: PlayedBloodGemsOnMeInput) => {\r\n\t\tupdateVenomous(minion, true, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"scallywag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scallywag.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,SAAS,GAAyB;IAC9C,OAAO,EAAE,8BAA8D;IACvE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,OAAO,IAAA,4CAAuB,EAC7B,MAAM,CAAC,MAAM,sBAAsC;YAClD,CAAC;YACD,CAAC,WAA0C,EAC5C,CAAC,EACD,KAAK,CACL,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\nimport { BoardEntity } from '../../../board-entity';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const Scallywag: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.Scallywag_BGS_061, CardIds.Scallywag_TB_BaconUps_141],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\treturn simplifiedSpawnEntities(\r\n\t\t\tminion.cardId === CardIds.Scallywag_TB_BaconUps_141\r\n\t\t\t\t? CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t\t: CardIds.Scallywag_SkyPirateToken_BGS_061t,\r\n\t\t\t1,\r\n\t\t\tinput,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"scallywag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scallywag.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,SAAS,GAAyB;IAC9C,OAAO,EAAE,8BAA8D;IACvE,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,OAAO,IAAA,4CAAuB,EAC7B,MAAM,CAAC,MAAM,sBAAsC;YAClD,CAAC;YACD,CAAC,WAA0C,EAC5C,CAAC,EACD,KAAK,CACL,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 { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const Scallywag: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.Scallywag_BGS_061, CardIds.Scallywag_TB_BaconUps_141],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\treturn simplifiedSpawnEntities(\r\n\t\t\tminion.cardId === CardIds.Scallywag_TB_BaconUps_141\r\n\t\t\t\t? CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t\t: CardIds.Scallywag_SkyPirateToken_BGS_061t,\r\n\t\t\t1,\r\n\t\t\tinput,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
@@ -4,11 +4,20 @@ exports.ScarletSurvivor = void 0;
4
4
  const divine_shield_1 = require("../../../keywords/divine-shield");
5
5
  const THRESHOLD = 6;
6
6
  const tryGrantDivineShieldOnce = (minion, board, hero, otherHero, gameState) => {
7
- if (minion.abiityChargesLeft <= 0 || minion.attack < THRESHOLD || minion.divineShield) {
7
+ if (minion.abiityChargesLeft <= 0 ||
8
+ minion.attack < THRESHOLD ||
9
+ minion.enchantments.some((e) => e.cardId === "BG35_814e")) {
8
10
  return;
9
11
  }
10
12
  minion.abiityChargesLeft = 0;
11
13
  (0, divine_shield_1.updateDivineShield)(minion, board, hero, otherHero, true, gameState);
14
+ minion.enchantments.push({
15
+ cardId: "BG35_814e",
16
+ originEntityId: minion.entityId,
17
+ timing: gameState.sharedState.currentEntityId++,
18
+ tagScriptDataNum1: -1,
19
+ tagScriptDataNum2: -1,
20
+ });
12
21
  };
13
22
  exports.ScarletSurvivor = {
14
23
  cardIds: ["BG35_814", "BG35_814_G"],
@@ -1 +1 @@
1
- {"version":3,"file":"scarlet-survivor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scarlet-survivor.ts"],"names":[],"mappings":";;;AAEA,mEAAqE;AAOrE,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IACT,IAAI,MAAM,CAAC,iBAAiB,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,SAAS,IAAI,MAAM,CAAC,YAAY,EAAE;QACtF,OAAO;KACP;IACD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACrE,CAAC,CAAC;AAEW,QAAA,eAAe,GAA4D;IACvF,OAAO,EAAE,0BAAsE;IAC/E,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,SAAS,GACd,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YACrD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;YAC3C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC9C,OAAO;SACP;QACD,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { DefaultChargesCard, OnSpawnedCard, OnStatsChangedCard } from '../../card.interface';\r\n\r\nconst THRESHOLD = 6;\r\n\r\nconst tryGrantDivineShieldOnce = (\r\n\tminion: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (minion.abiityChargesLeft <= 0 || minion.attack < THRESHOLD || minion.divineShield) {\r\n\t\treturn;\r\n\t}\r\n\tminion.abiityChargesLeft = 0;\r\n\tupdateDivineShield(minion, board, hero, otherHero, true, gameState);\r\n};\r\n\r\nexport const ScarletSurvivor: OnSpawnedCard & OnStatsChangedCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.ScarletSurvivor_BG35_814, CardIds.ScarletSurvivor_BG35_814_G],\r\n\tdefaultCharges: (entity: BoardEntity) => 1,\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tconst otherHero =\r\n\t\t\tinput.gameState.gameState.player.player === input.hero\r\n\t\t\t\t? input.gameState.gameState.opponent.player\r\n\t\t\t\t: input.gameState.gameState.player.player;\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, otherHero, input.gameState);\r\n\t},\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tif (input.target.entityId !== minion.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"scarlet-survivor.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/scarlet-survivor.ts"],"names":[],"mappings":";;;AAEA,mEAAqE;AAOrE,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IACT,IACC,MAAM,CAAC,iBAAiB,IAAI,CAAC;QAC7B,MAAM,CAAC,MAAM,GAAG,SAAS;QACzB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAA0D,CAAC,EAClG;QACD,OAAO;KACP;IACD,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;QACxB,MAAM,aAAuD;QAC7D,cAAc,EAAE,MAAM,CAAC,QAAQ;QAC/B,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;QAC/C,iBAAiB,EAAE,CAAC,CAAC;QACrB,iBAAiB,EAAE,CAAC,CAAC;KACrB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEW,QAAA,eAAe,GAA4D;IACvF,OAAO,EAAE,0BAAsE;IAC/E,cAAc,EAAE,CAAC,MAAmB,EAAE,EAAE,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,MAAM,SAAS,GACd,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YACrD,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM;YAC3C,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAA0B,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;YAC9C,OAAO;SACP;QACD,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;CACD,CAAC","sourcesContent":["import { BgsPlayerEntity } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { FullGameState } from '../../../simulation/internal-game-state';\r\nimport { OnStatsChangedInput } from '../../../simulation/stats';\r\nimport { DefaultChargesCard, OnSpawnedCard, OnStatsChangedCard } from '../../card.interface';\r\n\r\nconst THRESHOLD = 6;\r\n\r\nconst tryGrantDivineShieldOnce = (\r\n\tminion: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (\r\n\t\tminion.abiityChargesLeft <= 0 ||\r\n\t\tminion.attack < THRESHOLD ||\r\n\t\tminion.enchantments.some((e) => e.cardId === CardIds.ScarletSurvivor_SurvivedEnchantment_BG35_814e)\r\n\t) {\r\n\t\treturn;\r\n\t}\r\n\tminion.abiityChargesLeft = 0;\r\n\tupdateDivineShield(minion, board, hero, otherHero, true, gameState);\r\n\tminion.enchantments.push({\r\n\t\tcardId: CardIds.ScarletSurvivor_SurvivedEnchantment_BG35_814e,\r\n\t\toriginEntityId: minion.entityId,\r\n\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\ttagScriptDataNum1: -1,\r\n\t\ttagScriptDataNum2: -1,\r\n\t});\r\n};\r\n\r\nexport const ScarletSurvivor: OnSpawnedCard & OnStatsChangedCard & DefaultChargesCard = {\r\n\tcardIds: [CardIds.ScarletSurvivor_BG35_814, CardIds.ScarletSurvivor_BG35_814_G],\r\n\tdefaultCharges: (entity: BoardEntity) => 1,\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tconst otherHero =\r\n\t\t\tinput.gameState.gameState.player.player === input.hero\r\n\t\t\t\t? input.gameState.gameState.opponent.player\r\n\t\t\t\t: input.gameState.gameState.player.player;\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, otherHero, input.gameState);\r\n\t},\r\n\tonStatsChanged: (minion: BoardEntity, input: OnStatsChangedInput) => {\r\n\t\tif (input.target.entityId !== minion.entityId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttryGrantDivineShieldOnce(minion, input.board, input.hero, input.otherHero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -7,7 +7,7 @@ exports.SkulkingBristlemane = {
7
7
  cardIds: ["BG32_434", "BG32_434_G"],
8
8
  deathrattleSpawn: (minion, input) => {
9
9
  const mult = minion.cardId === "BG32_434_G" ? 2 : 1;
10
- const neighbours = (0, attack_1.getNeighbours)(input.boardWithDeadEntity, minion);
10
+ const neighbours = (0, attack_1.getNeighbours)(input.boardWithDeadEntity, minion, input.deadEntityIndexFromRight);
11
11
  for (const neighbour of neighbours) {
12
12
  (0, blood_gems_1.playBloodGemsOn)(minion, neighbour, 1 * mult, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.otherBoard, input.otherBoardHero, input.gameState);
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skulking-bristlemane.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/skulking-bristlemane.ts"],"names":[],"mappings":";;;AASA,uDAA2D;AAC3D,+DAAiE;AAIpD,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,0BAA8E;IACvF,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACpE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,4BAAe,EACd,MAAM,EACN,SAAS,EACT,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Skulking Bristlemane (Tier 3, 5/2)\r\n * Taunt. Deathrattle: This plays a permanent Blood Gem on adjacent minions.\r\n *\r\n * Golden Skulking Bristlemane (Tier 3, 10/4)\r\n * Taunt. Deathrattle: This plays 2 permanent Blood Gems on adjacent minions.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { playBloodGemsOn } from '../../../simulation/blood-gems';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const SkulkingBristlemane: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.SkulkingBristlemane_BG32_434, CardIds.SkulkingBristlemane_BG32_434_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.SkulkingBristlemane_BG32_434_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.boardWithDeadEntity, minion);\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tplayBloodGemsOn(\r\n\t\t\t\tminion,\r\n\t\t\t\tneighbour,\r\n\t\t\t\t1 * mult,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"skulking-bristlemane.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/skulking-bristlemane.ts"],"names":[],"mappings":";;;AASA,uDAA2D;AAC3D,+DAAiE;AAIpD,QAAA,mBAAmB,GAAyB;IACxD,OAAO,EAAE,0BAA8E;IACvF,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;QACnG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACpG,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,4BAAe,EACd,MAAM,EACN,SAAS,EACT,CAAC,GAAG,IAAI,EACR,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,EAAE,CAAC;IACX,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Skulking Bristlemane (Tier 3, 5/2)\r\n * Taunt. Deathrattle: This plays a permanent Blood Gem on adjacent minions.\r\n *\r\n * Golden Skulking Bristlemane (Tier 3, 10/4)\r\n * Taunt. Deathrattle: This plays 2 permanent Blood Gems on adjacent minions.\r\n */\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { playBloodGemsOn } from '../../../simulation/blood-gems';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const SkulkingBristlemane: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.SkulkingBristlemane_BG32_434, CardIds.SkulkingBristlemane_BG32_434_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\tconst mult = minion.cardId === CardIds.SkulkingBristlemane_BG32_434_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.boardWithDeadEntity, minion, input.deadEntityIndexFromRight);\r\n\t\tfor (const neighbour of neighbours) {\r\n\t\t\tplayBloodGemsOn(\r\n\t\t\t\tminion,\r\n\t\t\t\tneighbour,\r\n\t\t\t\t1 * mult,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherBoardHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnTavernSpellCastCard } from '../../card.interface';
2
+ export declare const TimecapnHooktail: OnTavernSpellCastCard;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TimecapnHooktail = void 0;
4
+ const utils_1 = require("../../../utils");
5
+ exports.TimecapnHooktail = {
6
+ cardIds: ["BG27_005", "BG27_005_G"],
7
+ onTavernSpellCast: (entity, input) => {
8
+ const loops = entity.cardId === "BG27_005_G" ? 2 : 1;
9
+ for (let i = 0; i < loops; i++) {
10
+ (0, utils_1.addStatsToBoard)(entity, input.board, input.hero, 1, 0, input.gameState);
11
+ }
12
+ },
13
+ };
14
+ //# sourceMappingURL=timecapn-hooktail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timecapn-hooktail.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timecapn-hooktail.ts"],"names":[],"mappings":";;;AAEA,0CAAiD;AAGpC,QAAA,gBAAgB,GAA0B;IACtD,OAAO,EAAE,0BAAwE;IACjF,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACxE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-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 TimecapnHooktail: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.TimecapnHooktail_BG27_005, CardIds.TimecapnHooktail_BG27_005_G],\r\n\tonTavernSpellCast: (entity: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst loops = entity.cardId === CardIds.TimecapnHooktail_BG27_005_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\taddStatsToBoard(entity, input.board, input.hero, 1, 0, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -7,7 +7,7 @@ const utils_2 = require("../../../utils");
7
7
  exports.TimewarpedMagnanimoose = {
8
8
  cardIds: ["BG34_Giant_619", "BG34_Giant_619_G"],
9
9
  deathrattleSpawn: (minion, input) => {
10
- const playerInitialState = (0, utils_2.getPlayerInitialState)(input.gameState.gameState, input.boardWithDeadEntityHero);
10
+ const playerInitialState = input.gameState.gameState.playerInitial;
11
11
  const loops = minion.cardId === "BG34_Giant_619_G" ? 2 : 1;
12
12
  const spawned = [];
13
13
  for (let i = 0; i < loops; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"timewarped-magnanimoose.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-magnanimoose.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AAErD,+EAAiF;AACjF,0CAAmE;AAGtD,QAAA,sBAAsB,GAAyB;IAC3D,OAAO,EAAE,sCAAgG;IACzG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,kBAAkB,GAAG,IAAA,6BAAqB,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3G,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,uBAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAE/B,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,4CAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACxE;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { copyEntity, getPlayerInitialState } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedMagnanimoose: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedMagnanimoose_BG34_Giant_619, CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst playerInitialState = getPlayerInitialState(input.gameState.gameState, input.boardWithDeadEntityHero);\r\n\t\tconst loops = minion.cardId === CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G ? 2 : 1;\r\n\t\tconst spawned = [];\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t// We don't know the opponents warbands, so we pick something from our own warband instead, as a proxy\r\n\t\t\tconst randomMinion = pickRandom(playerInitialState.board);\r\n\t\t\tconst clone = copyEntity(randomMinion);\r\n\t\t\tspawned.push(...simplifiedSpawnEntities(clone.cardId, 1, input, clone));\r\n\t\t}\r\n\t\treturn spawned;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"timewarped-magnanimoose.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/timewarped-magnanimoose.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AAErD,+EAAiF;AACjF,0CAA4C;AAG/B,QAAA,sBAAsB,GAAyB;IAC3D,OAAO,EAAE,sCAAgG;IACzG,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC3E,MAAM,kBAAkB,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,uBAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAE/B,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;YACvC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,4CAAuB,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACxE;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { copyEntity } from '../../../utils';\r\nimport { DeathrattleSpawnCard } from '../../card.interface';\r\n\r\nexport const TimewarpedMagnanimoose: DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.TimewarpedMagnanimoose_BG34_Giant_619, CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G],\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst playerInitialState = input.gameState.gameState.playerInitial;\r\n\t\tconst loops = minion.cardId === CardIds.TimewarpedMagnanimoose_BG34_Giant_619_G ? 2 : 1;\r\n\t\tconst spawned = [];\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t// We don't know the opponents warbands, so we pick something from our own warband instead, as a proxy\r\n\t\t\tconst randomMinion = pickRandom(playerInitialState.board);\r\n\t\t\tconst clone = copyEntity(randomMinion);\r\n\t\t\tspawned.push(...simplifiedSpawnEntities(clone.cardId, 1, input, clone));\r\n\t\t}\r\n\t\treturn spawned;\r\n\t},\r\n};\r\n"]}
@@ -1,2 +1,6 @@
1
+ import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';
2
+ import { BoardEntity } from '../../../board-entity';
3
+ import { FullGameState } from '../../../simulation/internal-game-state';
1
4
  import { StartOfCombatCard } from '../../card.interface';
2
5
  export declare const AutomatonPortrait: StartOfCombatCard;
6
+ export declare const handleAutomatonPortraitForPlayer: (trinket: BoardTrinket, playerBoard: BoardEntity[], playerEntity: BgsPlayerEntity, opponentBoard: BoardEntity[], opponentEntity: BgsPlayerEntity, gameState: FullGameState) => void;
@@ -1,16 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AutomatonPortrait = void 0;
3
+ exports.handleAutomatonPortraitForPlayer = exports.AutomatonPortrait = void 0;
4
4
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
5
  const spawns_1 = require("../../../simulation/spawns");
6
6
  exports.AutomatonPortrait = {
7
7
  cardIds: ["BG30_MagicItem_303"],
8
+ startOfCombatTiming: 'start-of-combat',
8
9
  startOfCombat: (trinket, input) => {
9
- if (input.playerBoard.length < 7) {
10
- const newMinions = (0, deathrattle_spawns_1.spawnEntities)("BG_TTN_401", 1, input.playerBoard, input.playerEntity, input.opponentBoard, input.opponentEntity, input.gameState, input.playerEntity.friendly, false);
11
- (0, spawns_1.performEntitySpawns)(newMinions, input.playerBoard, input.playerEntity, input.playerEntity, 0, input.opponentBoard, input.opponentEntity, input.gameState);
12
- return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
13
- }
10
+ trinket.scriptDataNum1 = 1;
11
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: true };
14
12
  },
15
13
  };
14
+ const handleAutomatonPortraitForPlayer = (trinket, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
15
+ if (playerBoard.length < 7 && trinket.scriptDataNum1 > 0) {
16
+ const newMinions = (0, deathrattle_spawns_1.spawnEntities)("BG_TTN_401", 1, playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, playerEntity.friendly, false);
17
+ (0, spawns_1.performEntitySpawns)(newMinions, playerBoard, playerEntity, playerEntity, 0, opponentBoard, opponentEntity, gameState);
18
+ trinket.scriptDataNum1 = 0;
19
+ }
20
+ };
21
+ exports.handleAutomatonPortraitForPlayer = handleAutomatonPortraitForPlayer;
16
22
  //# sourceMappingURL=automaton-portrait.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"automaton-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/automaton-portrait.ts"],"names":[],"mappings":";;;AAEA,+EAAuE;AACvE,uDAAiE;AAIpD,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,sBAA8C;IACvD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,IAAA,kCAAa,gBAE/B,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,YAAY,CAAC,QAAQ,EAC3B,KAAK,CACL,CAAC;YACF,IAAA,4BAAmB,EAClB,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,EAClB,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;SACpE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const AutomatonPortrait: StartOfCombatCard = {\r\n\tcardIds: [CardIds.AutomatonPortrait_BG30_MagicItem_303],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tif (input.playerBoard.length < 7) {\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tCardIds.AstralAutomaton_BG_TTN_401,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t\tinput.playerEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t\tperformEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\t0,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"automaton-portrait.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/automaton-portrait.ts"],"names":[],"mappings":";;;AAGA,+EAAuE;AAEvE,uDAAiE;AAIpD,QAAA,iBAAiB,GAAsB;IACnD,OAAO,EAAE,sBAA8C;IACvD,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAC3B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;CACD,CAAC;AAEK,MAAM,gCAAgC,GAAG,CAC/C,OAAqB,EACrB,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACjB,EAAE;IACT,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,EAAE;QACzD,MAAM,UAAU,GAAG,IAAA,kCAAa,gBAE/B,CAAC,EACD,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,CAAC,QAAQ,EACrB,KAAK,CACL,CAAC;QACF,IAAA,4BAAmB,EAClB,UAAU,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,CAAC,EACD,aAAa,EACb,cAAc,EACd,SAAS,CACT,CAAC;QACF,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;KAC3B;AACF,CAAC,CAAC;AAhCW,QAAA,gCAAgC,oCAgC3C","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\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\nexport const AutomatonPortrait: StartOfCombatCard = {\r\n\tcardIds: [CardIds.AutomatonPortrait_BG30_MagicItem_303],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\ttrinket.scriptDataNum1 = 1;\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n};\r\n\r\nexport const handleAutomatonPortraitForPlayer = (\r\n\ttrinket: BoardTrinket,\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\tif (playerBoard.length < 7 && trinket.scriptDataNum1 > 0) {\r\n\t\tconst newMinions = spawnEntities(\r\n\t\t\tCardIds.AstralAutomaton_BG_TTN_401,\r\n\t\t\t1,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tgameState,\r\n\t\t\tplayerEntity.friendly,\r\n\t\t\tfalse,\r\n\t\t);\r\n\t\tperformEntitySpawns(\r\n\t\t\tnewMinions,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerEntity,\r\n\t\t\t0,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t\ttrinket.scriptDataNum1 = 0;\r\n\t}\r\n};\r\n"]}
@@ -1,30 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.FangAnklet = void 0;
4
- const reference_data_1 = require("@firestone-hs/reference-data");
5
4
  const global_info_helpers_1 = require("../../../simulation/global-info-helpers");
6
- const stats_1 = require("../../../simulation/stats");
7
- const utils_1 = require("../../../utils");
8
5
  exports.FangAnklet = {
9
6
  cardIds: ["BG35_MagicItem_701"],
10
7
  startOfCombat: (trinket, input) => {
11
8
  const buff = trinket.scriptDataNum1 || 1;
12
- let triggered = false;
13
- for (const entity of input.playerBoard) {
14
- if ((0, utils_1.hasCorrectTribe)(entity, input.playerEntity, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards)) {
15
- (0, stats_1.modifyStats)(entity, trinket, buff, buff, input.playerBoard, input.playerEntity, input.gameState);
16
- triggered = true;
17
- }
18
- }
19
- input.playerEntity.globalInfo.GoldrinnBuffAtk += buff;
20
- input.playerEntity.globalInfo.GoldrinnBuffHealth += buff;
21
- return { hasTriggered: triggered, shouldRecomputeCurrentAttacker: false };
9
+ (0, global_info_helpers_1.increaseGoldrinnBuff)(trinket, input.playerBoard, input.playerEntity, buff, buff, input.gameState);
10
+ return { hasTriggered: true, shouldRecomputeCurrentAttacker: false };
22
11
  },
23
12
  afterOtherSpawned: (trinket, input) => {
24
- if ((0, utils_1.hasCorrectTribe)(input.spawned, input.hero, reference_data_1.Race.BEAST, input.gameState.anomalies, input.gameState.allCards)) {
25
- (0, global_info_helpers_1.increaseGoldrinnBuff)(trinket, input.board, input.hero, 1, 1, input.gameState);
26
- trinket.scriptDataNum1 = (trinket.scriptDataNum1 || 1) + 1;
27
- }
28
13
  },
29
14
  };
30
15
  //# sourceMappingURL=fang-anklet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fang-anklet.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/fang-anklet.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,iFAA+E;AAE/E,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,UAAU,GAA8C;IACpE,OAAO,EAAE,sBAAuC;IAChD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QAEzD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACzC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE;YACvC,IACC,IAAA,uBAAe,EACd,MAAM,EACN,KAAK,CAAC,YAAY,EAClB,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;gBACD,IAAA,mBAAW,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;gBACjG,SAAS,GAAG,IAAI,CAAC;aACjB;SACD;QACD,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,eAAe,IAAI,IAAI,CAAC;QACtD,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,kBAAkB,IAAI,IAAI,CAAC;QACzD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IAC3E,CAAC;IACD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;QACtE,IACC,IAAA,uBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAC1G;YACD,IAAA,0CAAoB,EAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAE9E,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SAC3D;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { increaseGoldrinnBuff } from '../../../simulation/global-info-helpers';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FangAnklet: StartOfCombatCard & AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.FangAnklet_BG35_MagicItem_701],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\t// Can be permanently buffed in previous combats\r\n\t\tconst buff = trinket.scriptDataNum1 || 1;\r\n\t\tlet triggered = false;\r\n\t\tfor (const entity of input.playerBoard) {\r\n\t\t\tif (\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tinput.playerEntity,\r\n\t\t\t\t\tRace.BEAST,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tmodifyStats(entity, trinket, buff, buff, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\t\ttriggered = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tinput.playerEntity.globalInfo.GoldrinnBuffAtk += buff;\r\n\t\tinput.playerEntity.globalInfo.GoldrinnBuffHealth += buff;\r\n\t\treturn { hasTriggered: triggered, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n\tafterOtherSpawned: (trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(input.spawned, input.hero, Race.BEAST, input.gameState.anomalies, input.gameState.allCards)\r\n\t\t) {\r\n\t\t\tincreaseGoldrinnBuff(trinket, input.board, input.hero, 1, 1, input.gameState);\r\n\t\t\t// Not used in the simulation, but can be useful for debugging\r\n\t\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 || 1) + 1;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"fang-anklet.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/fang-anklet.ts"],"names":[],"mappings":";;;AAGA,iFAA+E;AAIlE,QAAA,UAAU,GAA8C;IACpE,OAAO,EAAE,sBAAuC;IAChD,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QAEzD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QACzC,IAAA,0CAAoB,EAAC,OAAO,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;IACD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;IAEvE,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { increaseGoldrinnBuff } from '../../../simulation/global-info-helpers';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { AfterOtherSpawnedCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const FangAnklet: StartOfCombatCard & AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.FangAnklet_BG35_MagicItem_701],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\t// Can be permanently buffed in previous combats\r\n\t\tconst buff = trinket.scriptDataNum1 || 1;\r\n\t\tincreaseGoldrinnBuff(trinket, input.playerBoard, input.playerEntity, buff, buff, input.gameState);\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n\tafterOtherSpawned: (trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\t// The buff only happens at the start of the combat, so there is no point in incrementing anything here\r\n\t},\r\n};\r\n"]}
@@ -13,7 +13,7 @@ exports.JarOGems = {
13
13
  if (t.scriptDataNum1 <= 0) {
14
14
  for (const entity of input.attackingBoard.filter((e) => (0, utils_1.hasCorrectTribe)(e, input.attackingHero, reference_data_1.Race.QUILBOAR, input.gameState.anomalies, input.gameState.allCards))) {
15
15
  (0, blood_gems_1.playBloodGemsOn)(t, entity, 1, input.attackingBoard, input.attackingHero, input.defendingBoard, input.defendingHero, input.gameState);
16
- input.gameState.spectator.registerPowerTarget(t, entity, input.attackingBoard, input.attackingHero, input.attackingHero);
16
+ input.gameState.spectator.registerPowerTarget(t, entity, input.attackingBoard, input.attackingHero, input.defendingHero);
17
17
  }
18
18
  t.scriptDataNum1 = input.gameState.cardsData.defaultScriptDataNum(t.cardId);
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jar-o-gems.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/jar-o-gems.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,+DAAiE;AAEjE,0CAAiD;AAGpC,QAAA,QAAQ,GAA6D;IACjF,OAAO,EAAE,sBAAqC;IAC9C,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,yBAAyB,EAAE,CAAC,OAAsD,EAAE,KAAoB,EAAE,EAAE;QAC3G,MAAM,CAAC,GAAG,OAAuB,CAAC;QAClC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,QAAQ,EACb,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,EAAE;gBACF,IAAA,4BAAe,EACd,CAAC,EACD,MAAM,EACN,CAAC,EACD,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,CAAC,EACD,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,CACnB,CAAC;aACF;YACD,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC5E;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { playBloodGemsOn } from '../../../simulation/blood-gems';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterAnotherMinionAttacksCard, DefaultScriptDataNumCard } from '../../card.interface';\r\n\r\nexport const JarOGems: AfterAnotherMinionAttacksCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.JarOGems_BG30_MagicItem_546],\r\n\tdefaultScriptDataNum: (cardId: string) => 2,\r\n\tafterAnotherMinionAttacks: (trinket: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst t = trinket as BoardTrinket;\r\n\t\tt.scriptDataNum1--;\r\n\t\tif (t.scriptDataNum1 <= 0) {\r\n\t\t\tfor (const entity of input.attackingBoard.filter((e) =>\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tRace.QUILBOAR,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t),\r\n\t\t\t)) {\r\n\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\tt,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.defendingBoard,\r\n\t\t\t\t\tinput.defendingHero,\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\tt,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tt.scriptDataNum1 = input.gameState.cardsData.defaultScriptDataNum(t.cardId);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"jar-o-gems.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/jar-o-gems.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,+DAAiE;AAEjE,0CAAiD;AAGpC,QAAA,QAAQ,GAA6D;IACjF,OAAO,EAAE,sBAAqC;IAC9C,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,yBAAyB,EAAE,CAAC,OAAsD,EAAE,KAAoB,EAAE,EAAE;QAC3G,MAAM,CAAC,GAAG,OAAuB,CAAC;QAClC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,EAAE;YAC1B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtD,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,QAAQ,EACb,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACD,EAAE;gBACF,IAAA,4BAAe,EACd,CAAC,EACD,MAAM,EACN,CAAC,EACD,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;gBACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,CAAC,EACD,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,aAAa,CACnB,CAAC;aACF;YACD,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;SAC5E;QACD,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { playBloodGemsOn } from '../../../simulation/blood-gems';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterAnotherMinionAttacksCard, DefaultScriptDataNumCard } from '../../card.interface';\r\n\r\nexport const JarOGems: AfterAnotherMinionAttacksCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.JarOGems_BG30_MagicItem_546],\r\n\tdefaultScriptDataNum: (cardId: string) => 2,\r\n\tafterAnotherMinionAttacks: (trinket: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput) => {\r\n\t\tconst t = trinket as BoardTrinket;\r\n\t\tt.scriptDataNum1--;\r\n\t\tif (t.scriptDataNum1 <= 0) {\r\n\t\t\tfor (const entity of input.attackingBoard.filter((e) =>\r\n\t\t\t\thasCorrectTribe(\r\n\t\t\t\t\te,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tRace.QUILBOAR,\r\n\t\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\t),\r\n\t\t\t)) {\r\n\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\tt,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.defendingBoard,\r\n\t\t\t\t\tinput.defendingHero,\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\tt,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tinput.attackingBoard,\r\n\t\t\t\t\tinput.attackingHero,\r\n\t\t\t\t\tinput.defendingHero,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tt.scriptDataNum1 = input.gameState.cardsData.defaultScriptDataNum(t.cardId);\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { OnOtherSpawnedCard } from '../../card.interface';
2
+ export declare const MamaBearSticker: OnOtherSpawnedCard;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MamaBearSticker = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
5
+ const stats_1 = require("../../../simulation/stats");
6
+ const utils_1 = require("../../../utils");
7
+ exports.MamaBearSticker = {
8
+ cardIds: ["BG35_MagicItem_871"],
9
+ onOtherSpawned: (_trinket, input) => {
10
+ const { spawned, board, hero, gameState } = input;
11
+ if (!(0, utils_1.hasCorrectTribe)(spawned, hero, reference_data_1.Race.BEAST, gameState.anomalies, gameState.allCards)) {
12
+ return;
13
+ }
14
+ (0, stats_1.modifyStats)(spawned, _trinket, 4, 4, board, hero, gameState);
15
+ gameState.spectator.registerPowerTarget(_trinket, spawned, board, null, null);
16
+ },
17
+ };
18
+ //# sourceMappingURL=mama-bear-sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mama-bear-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/mama-bear-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,eAAe,GAAuB;IAClD,OAAO,EAAE,sBAA4C;IACrD,cAAc,EAAE,CAAC,QAAsB,EAAE,KAAwB,EAAE,EAAE;QACpE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,IAAA,mBAAW,EAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { OnOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const MamaBearSticker: OnOtherSpawnedCard = {\r\n\tcardIds: [CardIds.MamaBearSticker_BG35_MagicItem_871],\r\n\tonOtherSpawned: (_trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tmodifyStats(spawned, _trinket, 4, 4, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(_trinket, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PowderKegEnchantment = void 0;
4
4
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
5
  exports.PowderKegEnchantment = {
6
- cardIds: ["BG35_MagicItem_714"],
6
+ cardIds: ['PowderKegEnchantment'],
7
7
  deathrattleSpawnEnchantmentEffect: (enchantment, minion, input) => {
8
8
  const spawns = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BGS_061t", 1, input);
9
- if (spawns.length > 0 && minion) {
10
- spawns[0].attack = minion.attack;
11
- spawns[0].attackImmediately = true;
12
- }
9
+ spawns.forEach((spawn) => {
10
+ spawn.attack += minion.attack;
11
+ spawn.attackImmediately = true;
12
+ });
13
13
  return spawns;
14
14
  },
15
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"powder-keg-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/powder-keg-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,oBAAoB,GAAoC;IACpE,OAAO,EAAE,sBAAsC;IAC/C,iCAAiC,EAAE,CAClC,WAA+B,EAC/B,MAAsC,EACtC,KAAgC,EAC/B,EAAE;QACH,MAAM,MAAM,GAAG,IAAA,4CAAuB,cAA4C,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,EAAE;YAChC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;SACnC;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 { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const PowderKegEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: [CardIds.PowderKeg_BG35_MagicItem_714],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: { cardId: string },\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => {\r\n\t\tconst spawns = simplifiedSpawnEntities(CardIds.Scallywag_SkyPirateToken_BGS_061t, 1, input);\r\n\t\tif (spawns.length > 0 && minion) {\r\n\t\t\tspawns[0].attack = minion.attack;\r\n\t\t\tspawns[0].attackImmediately = true;\r\n\t\t}\r\n\t\treturn spawns;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"powder-keg-enchantment.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/powder-keg-enchantment.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AAGpE,QAAA,oBAAoB,GAAoC;IACpE,OAAO,EAAE,CAAC,sBAAsB,CAAC;IACjC,iCAAiC,EAAE,CAClC,WAA6B,EAC7B,MAAsC,EACtC,KAAgC,EAC/B,EAAE;QACH,MAAM,MAAM,GAAG,IAAA,4CAAuB,cAA4C,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5F,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACxB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;YAC9B,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IACf,CAAC;CACD,CAAC","sourcesContent":["import { BoardEnchantment, 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 { DeathrattleSpawnEnchantmentCard } from '../../card.interface';\r\n\r\nexport const PowderKegEnchantment: DeathrattleSpawnEnchantmentCard = {\r\n\tcardIds: ['PowderKegEnchantment'],\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: BoardEnchantment,\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => {\r\n\t\tconst spawns = simplifiedSpawnEntities(CardIds.Scallywag_SkyPirateToken_BGS_061t, 1, input);\r\n\t\tspawns.forEach((spawn) => {\r\n\t\t\tspawn.attack += minion.attack;\r\n\t\t\tspawn.attackImmediately = true;\r\n\t\t});\r\n\t\treturn spawns;\r\n\t},\r\n};\r\n"]}
@@ -6,16 +6,18 @@ const utils_1 = require("../../../services/utils");
6
6
  const utils_2 = require("../../../utils");
7
7
  exports.PowderKeg = {
8
8
  cardIds: ["BG35_MagicItem_714"],
9
+ startOfCombatTiming: 'start-of-combat',
9
10
  startOfCombat: (trinket, input) => {
10
11
  const pirates = input.playerBoard.filter((e) => (0, utils_2.hasCorrectTribe)(e, input.playerEntity, reference_data_1.Race.PIRATE, input.gameState.anomalies, input.gameState.allCards));
11
12
  const targets = (0, utils_1.pickMultipleRandomAlive)(pirates, 2);
12
13
  for (const target of targets) {
13
14
  target.enchantments.push({
14
- cardId: "BG35_700",
15
+ cardId: 'PowderKegEnchantment',
15
16
  originEntityId: trinket.entityId,
16
17
  repeats: 1,
17
18
  timing: input.gameState.sharedState.currentEntityId++,
18
19
  });
20
+ input.gameState.spectator.registerPowerTarget(trinket, target, input.playerBoard, input.playerEntity, input.opponentEntity);
19
21
  }
20
22
  return { hasTriggered: true, shouldRecomputeCurrentAttacker: false };
21
23
  },
@@ -1 +1 @@
1
- {"version":3,"file":"powder-keg.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/powder-keg.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,mDAAkE;AAElE,0CAAiD;AAGpC,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,sBAAsC;IAC/C,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxG,CAAC;QACF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBAExB,MAAM,YAA6B;gBACnC,cAAc,EAAE,OAAO,CAAC,QAAQ;gBAChC,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;aACrD,CAAC,CAAC;SACH;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandomAlive } from '../../../services/utils';\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\nexport const PowderKeg: StartOfCombatCard = {\r\n\tcardIds: [CardIds.PowderKeg_BG35_MagicItem_714],\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst pirates = input.playerBoard.filter((e) =>\r\n\t\t\thasCorrectTribe(e, input.playerEntity, Race.PIRATE, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tconst targets = pickMultipleRandomAlive(pirates, 2);\r\n\t\tfor (const target of targets) {\r\n\t\t\ttarget.enchantments.push({\r\n\t\t\t\t// TODO: probably not correct, needs testing\r\n\t\t\t\tcardId: CardIds.ShipJumper_BG35_700,\r\n\t\t\t\toriginEntityId: trinket.entityId,\r\n\t\t\t\trepeats: 1,\r\n\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"powder-keg.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/powder-keg.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,mDAAkE;AAElE,0CAAiD;AAGpC,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,sBAAsC;IAC/C,mBAAmB,EAAE,iBAAiB;IACtC,aAAa,EAAE,CAAC,OAAqB,EAAE,KAAe,EAAE,EAAE;QACzD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC9C,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,YAAY,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CACxG,CAAC;QACF,MAAM,OAAO,GAAG,IAAA,+BAAuB,EAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACpD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;gBACxB,MAAM,EAAE,sBAAsB;gBAC9B,cAAc,EAAE,OAAO,CAAC,QAAQ;gBAChC,OAAO,EAAE,CAAC;gBACV,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;aACrD,CAAC,CAAC;YACH,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,OAAO,EACP,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickMultipleRandomAlive } from '../../../services/utils';\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\nexport const PowderKeg: StartOfCombatCard = {\r\n\tcardIds: [CardIds.PowderKeg_BG35_MagicItem_714],\r\n\tstartOfCombatTiming: 'start-of-combat',\r\n\tstartOfCombat: (trinket: BoardTrinket, input: SoCInput) => {\r\n\t\tconst pirates = input.playerBoard.filter((e) =>\r\n\t\t\thasCorrectTribe(e, input.playerEntity, Race.PIRATE, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tconst targets = pickMultipleRandomAlive(pirates, 2);\r\n\t\tfor (const target of targets) {\r\n\t\t\ttarget.enchantments.push({\r\n\t\t\t\tcardId: 'PowderKegEnchantment',\r\n\t\t\t\toriginEntityId: trinket.entityId,\r\n\t\t\t\trepeats: 1,\r\n\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t});\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\ttrinket,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: false };\r\n\t},\r\n};\r\n"]}
@@ -11,7 +11,7 @@ exports.SlammaSticker = {
11
11
  if (!(0, utils_1.hasCorrectTribe)(spawned, hero, reference_data_1.Race.BEAST, gameState.anomalies, gameState.allCards)) {
12
12
  return;
13
13
  }
14
- (0, stats_1.setEntityStats)(spawned, spawned.attack * 2, spawned.health, board, hero, gameState);
14
+ (0, stats_1.setEntityStats)(spawned, spawned.attack * 2, 0, board, hero, gameState);
15
15
  gameState.spectator.registerPowerTarget(hero, spawned, board, null, null);
16
16
  },
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"slamma-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/slamma-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,aAAa,GAA0B;IACnD,OAAO,EAAE,sBAA0C;IACnD,iBAAiB,EAAE,CAAC,QAAsB,EAAE,KAAwB,EAAE,EAAE;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACpF,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const SlammaSticker: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.SlammaSticker_BG30_MagicItem_540],\r\n\tafterOtherSpawned: (_trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetEntityStats(spawned, spawned.attack * 2, spawned.health, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(hero, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"slamma-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/slamma-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAA2D;AAC3D,0CAAiD;AAGpC,QAAA,aAAa,GAA0B;IACnD,OAAO,EAAE,sBAA0C;IACnD,iBAAiB,EAAE,CAAC,QAAsB,EAAE,KAAwB,EAAE,EAAE;QACvE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAClD,IAAI,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzF,OAAO;SACP;QACD,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACvE,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { setEntityStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const SlammaSticker: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.SlammaSticker_BG30_MagicItem_540],\r\n\tafterOtherSpawned: (_trinket: BoardTrinket, input: OnOtherSpawnInput) => {\r\n\t\tconst { spawned, board, hero, gameState } = input;\r\n\t\tif (!hasCorrectTribe(spawned, hero, Race.BEAST, gameState.anomalies, gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsetEntityStats(spawned, spawned.attack * 2, 0, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(hero, spawned, board, null, null);\r\n\t},\r\n};\r\n"]}