@firestone-hs/simulate-bgs-battle 1.1.712 → 1.1.714

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 (62) hide show
  1. package/dist/bgs-player-entity.d.ts +1 -0
  2. package/dist/bgs-player-entity.js.map +1 -1
  3. package/dist/cards/impl/_card-mappings.js +2 -2
  4. package/dist/cards/impl/_card-mappings.js.map +1 -1
  5. package/dist/cards/impl/bg-spell/butchering.js +3 -1
  6. package/dist/cards/impl/bg-spell/butchering.js.map +1 -1
  7. package/dist/cards/impl/bg-spell/healthy-bounty.js +1 -1
  8. package/dist/cards/impl/bg-spell/healthy-bounty.js.map +1 -1
  9. package/dist/cards/impl/bg-spell/hostile-bounty.js +1 -1
  10. package/dist/cards/impl/bg-spell/hostile-bounty.js.map +1 -1
  11. package/dist/cards/impl/bg-spell/queens-command.js +1 -1
  12. package/dist/cards/impl/bg-spell/queens-command.js.map +1 -1
  13. package/dist/cards/impl/minion/battlecruiser.js.map +1 -1
  14. package/dist/cards/impl/minion/brazen-buccaneer.js +3 -1
  15. package/dist/cards/impl/minion/brazen-buccaneer.js.map +1 -1
  16. package/dist/cards/impl/minion/charging-czarina.js +3 -2
  17. package/dist/cards/impl/minion/charging-czarina.js.map +1 -1
  18. package/dist/cards/impl/minion/dastardly-drust.js +2 -2
  19. package/dist/cards/impl/minion/dastardly-drust.js.map +1 -1
  20. package/dist/cards/impl/minion/dreaming-thornweaver.js +2 -7
  21. package/dist/cards/impl/minion/dreaming-thornweaver.js.map +1 -1
  22. package/dist/cards/impl/minion/drustfallen-butcher.js +1 -1
  23. package/dist/cards/impl/minion/drustfallen-butcher.js.map +1 -1
  24. package/dist/cards/impl/minion/king-bagurgle.js +2 -2
  25. package/dist/cards/impl/minion/king-bagurgle.js.map +1 -1
  26. package/dist/cards/impl/minion/nalaa-the-redeemer.js +1 -1
  27. package/dist/cards/impl/minion/nalaa-the-redeemer.js.map +1 -1
  28. package/dist/cards/impl/minion/poultron.js +1 -1
  29. package/dist/cards/impl/minion/poultron.js.map +1 -1
  30. package/dist/cards/impl/minion/stomping-stegodon.d.ts +1 -1
  31. package/dist/cards/impl/minion/stomping-stegodon.js +1 -1
  32. package/dist/cards/impl/minion/stomping-stegodon.js.map +1 -1
  33. package/dist/cards/impl/trinket/blood-golem-sticker.js +1 -1
  34. package/dist/cards/impl/trinket/blood-golem-sticker.js.map +1 -1
  35. package/dist/cards/impl/trinket/bluegill-flippers.js +15 -5
  36. package/dist/cards/impl/trinket/bluegill-flippers.js.map +1 -1
  37. package/dist/cards/impl/trinket/bubble-crown.js +7 -1
  38. package/dist/cards/impl/trinket/bubble-crown.js.map +1 -1
  39. package/dist/cards/impl/trinket/copper-coil.js +9 -6
  40. package/dist/cards/impl/trinket/copper-coil.js.map +1 -1
  41. package/dist/cards/impl/trinket/lorewalker-scroll.js +2 -2
  42. package/dist/cards/impl/trinket/lorewalker-scroll.js.map +1 -1
  43. package/dist/cards/impl/trinket/lucky-tabby.js +2 -2
  44. package/dist/cards/impl/trinket/lucky-tabby.js.map +1 -1
  45. package/dist/cards/impl/trinket/powder-keg.js +1 -1
  46. package/dist/cards/impl/trinket/powder-keg.js.map +1 -1
  47. package/dist/cards/impl/trinket/{tiger-carving-token.js → tiger-carving.js} +2 -2
  48. package/dist/cards/impl/trinket/tiger-carving.js.map +1 -0
  49. package/dist/simulation/add-minion-to-board.js +11 -0
  50. package/dist/simulation/add-minion-to-board.js.map +1 -1
  51. package/dist/simulation/auras.js +22 -21
  52. package/dist/simulation/auras.js.map +1 -1
  53. package/dist/simulation/blood-gems.js +2 -1
  54. package/dist/simulation/blood-gems.js.map +1 -1
  55. package/dist/simulation/deathrattle-orchestration.js +3 -0
  56. package/dist/simulation/deathrattle-orchestration.js.map +1 -1
  57. package/dist/simulation/global-info-helpers.d.ts +1 -0
  58. package/dist/simulation/global-info-helpers.js +7 -1
  59. package/dist/simulation/global-info-helpers.js.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/cards/impl/trinket/tiger-carving-token.js.map +0 -1
  62. /package/dist/cards/impl/trinket/{tiger-carving-token.d.ts → tiger-carving.d.ts} +0 -0
@@ -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\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\t// Could this be because the target is already dead after the first firing of the cannon?\r\n\t\t// And so it can't change targets between shots?\r\n\t\t/*\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 5619,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 36,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 5624,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 18,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t*/\r\n\t\t// 2026-05-12: the cannon still can fire multiple times\r\n\t\t// https://replays.firestoneapp.com/?reviewId=769f2cc9-5242-41c3-9e4b-ce71476d2325&turn=23&action=3\r\n\t\t// Deals 312, while the cannon is at 156\r\n\t\t/*\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 9370,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 51,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 9376,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 156,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t */\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\t// 2026-05-13: Should the target be the minion with the highest max health instead?\r\n\t\t// https://replays.firestoneapp.com/?reviewId=0615c5a6-6548-479e-8eec-0667df49f9a7&turn=17&action=3\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// 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\t// Could this be because the target is already dead after the first firing of the cannon?\r\n\t\t// And so it can't change targets between shots?\r\n\t\t/*\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 5619,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 36,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 5624,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 18,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t*/\r\n\t\t// 2026-05-12: the cannon still can fire multiple times\r\n\t\t// https://replays.firestoneapp.com/?reviewId=769f2cc9-5242-41c3-9e4b-ce71476d2325&turn=23&action=3\r\n\t\t// Deals 312, while the cannon is at 156\r\n\t\t/*\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 9370,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 51,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\t\"originEntityId\": 9376,\r\n\t\t\t\t\"cardId\": \"BG31_HERO_801ptce\",\r\n\t\t\t\t\"tagScriptDataNum1\": 156,\r\n\t\t\t\t\"tagScriptDataNum2\": -1,\r\n\t\t\t\t\"timing\": 0\r\n\t\t\t},\r\n\t\t */\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"]}
@@ -4,6 +4,8 @@ exports.BrazenBuccaneer = void 0;
4
4
  const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  const utils_1 = require("../../../utils");
7
+ const baseAttackBuff = 3;
8
+ const baseHealthBuff = 3;
7
9
  exports.BrazenBuccaneer = {
8
10
  cardIds: ["BG35_701", "BG35_701_G"],
9
11
  endOfTurn: (minion, input) => {
@@ -16,7 +18,7 @@ exports.BrazenBuccaneer = {
16
18
  const cardsPlayed = (_a = input.hero.globalInfo.CardsPlayedThisTurn) !== null && _a !== void 0 ? _a : 0;
17
19
  const repeats = 1 + cardsPlayed;
18
20
  for (let i = 0; i < repeats; i++) {
19
- (0, stats_1.modifyStats)(pirate, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);
21
+ (0, stats_1.modifyStats)(pirate, minion, baseAttackBuff * mult, baseHealthBuff * mult, input.board, input.hero, input.gameState);
20
22
  }
21
23
  return true;
22
24
  },
@@ -1 +1 @@
1
- {"version":3,"file":"brazen-buccaneer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/brazen-buccaneer.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAEpD,qDAAwD;AAExD,0CAAiD;AAGpC,QAAA,eAAe,GAAkB;IAC7C,OAAO,EAAE,0BAAsE;IAC/E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACZ,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YACjC,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC1F;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const BrazenBuccaneer: EndOfTurnCard = {\r\n\tcardIds: [CardIds.BrazenBuccaneer_BG35_701, CardIds.BrazenBuccaneer_BG35_701_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BrazenBuccaneer_BG35_701_G ? 2 : 1;\r\n\t\tconst pirate = input.board.find((e) =>\r\n\t\t\thasCorrectTribe(e, input.hero, Race.PIRATE, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tif (!pirate) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tconst cardsPlayed = input.hero.globalInfo.CardsPlayedThisTurn ?? 0;\r\n\t\tconst repeats = 1 + cardsPlayed;\r\n\t\tfor (let i = 0; i < repeats; i++) {\r\n\t\t\tmodifyStats(pirate, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"brazen-buccaneer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/brazen-buccaneer.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,qDAAwD;AACxD,0CAAiD;AAGjD,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,eAAe,GAAkB;IAC7C,OAAO,EAAE,0BAAsE;IAC/E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACF,IAAI,CAAC,MAAM,EAAE;YACZ,OAAO,IAAI,CAAC;SACZ;QACD,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,CAAC,GAAG,WAAW,CAAC;QAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;YACjC,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,cAAc,GAAG,IAAI,EACrB,cAAc,GAAG,IAAI,EACrB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nconst baseAttackBuff = 3;\r\nconst baseHealthBuff = 3;\r\n\r\nexport const BrazenBuccaneer: EndOfTurnCard = {\r\n\tcardIds: [CardIds.BrazenBuccaneer_BG35_701, CardIds.BrazenBuccaneer_BG35_701_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.BrazenBuccaneer_BG35_701_G ? 2 : 1;\r\n\t\tconst pirate = input.board.find((e) =>\r\n\t\t\thasCorrectTribe(e, input.hero, Race.PIRATE, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t);\r\n\t\tif (!pirate) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tconst cardsPlayed = input.hero.globalInfo.CardsPlayedThisTurn ?? 0;\r\n\t\tconst repeats = 1 + cardsPlayed;\r\n\t\tfor (let i = 0; i < repeats; i++) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tpirate,\r\n\t\t\t\tminion,\r\n\t\t\t\tbaseAttackBuff * mult,\r\n\t\t\t\tbaseHealthBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -2,16 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChargingCzarina = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
+ const chargingCzarinaAttackBuff = 4;
5
6
  exports.ChargingCzarina = {
6
7
  cardIds: ["BG28_741", "BG28_741_G"],
7
8
  onTavernSpellCast: (entity, input) => {
8
9
  var _a;
9
10
  const mult = entity.cardId === "BG28_741_G" ? 2 : 1;
10
11
  const hasPortrait = (_a = input.hero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG32_MagicItem_283");
11
- const healthBuff = hasPortrait ? 3 * mult : 0;
12
+ const healthBuff = hasPortrait ? chargingCzarinaAttackBuff * mult : 0;
12
13
  const targets = input.board.filter((e) => e.divineShield);
13
14
  for (const target of targets) {
14
- (0, stats_1.modifyStats)(target, entity, 3 * mult, healthBuff, input.board, input.hero, input.gameState);
15
+ (0, stats_1.modifyStats)(target, entity, chargingCzarinaAttackBuff * mult, healthBuff, input.board, input.hero, input.gameState);
15
16
  }
16
17
  },
17
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"charging-czarina.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/charging-czarina.ts"],"names":[],"mappings":";;;AAUA,qDAAwD;AAG3C,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,0BAAsE;IAC/E,iBAAiB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;;QAChF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAA+C,CAC9D,CAAC;QACF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC5F;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Charging Czarina (Tier 5, 6/2)\r\n * Divine Shield. Whenever you cast a Tavern spell, give your minions with Divine Shield +3 Attack.\r\n *\r\n * Golden Charging Czarina (Tier 5, 12/4)\r\n * Divine Shield. Whenever you cast a Tavern spell, give your minions with Divine Shield +6 Attack.\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const ChargingCzarina: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ChargingCzarina_BG28_741, CardIds.ChargingCzarina_BG28_741_G],\r\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.ChargingCzarina_BG28_741_G ? 2 : 1;\r\n\t\tconst hasPortrait = input.hero.trinkets?.some(\r\n\t\t\t(t) => t.cardId === CardIds.CzarinaPortrait_BG32_MagicItem_283,\r\n\t\t);\r\n\t\tconst healthBuff = hasPortrait ? 3 * mult : 0;\r\n\t\tconst targets = input.board.filter((e) => e.divineShield);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, entity, 3 * mult, healthBuff, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"charging-czarina.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/charging-czarina.ts"],"names":[],"mappings":";;;AAUA,qDAAwD;AAGxD,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAEvB,QAAA,eAAe,GAA0B;IACrD,OAAO,EAAE,0BAAsE;IAC/E,iBAAiB,EAAE,CAAC,MAAkC,EAAE,KAAqB,EAAE,EAAE;;QAChF,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAA+C,CAAC,CAAC;QAC9G,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,yBAAyB,GAAG,IAAI,EAChC,UAAU,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Charging Czarina (Tier 5, 6/2)\r\n * Divine Shield. Whenever you cast a Tavern spell, give your minions with Divine Shield +3 Attack.\r\n *\r\n * Golden Charging Czarina (Tier 5, 12/4)\r\n * Divine Shield. Whenever you cast a Tavern spell, give your minions with Divine Shield +6 Attack.\r\n */\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nconst chargingCzarinaAttackBuff = 4;\r\n\r\nexport const ChargingCzarina: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.ChargingCzarina_BG28_741, CardIds.ChargingCzarina_BG28_741_G],\r\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => {\r\n\t\tconst mult = entity.cardId === CardIds.ChargingCzarina_BG28_741_G ? 2 : 1;\r\n\t\tconst hasPortrait = input.hero.trinkets?.some((t) => t.cardId === CardIds.CzarinaPortrait_BG32_MagicItem_283);\r\n\t\tconst healthBuff = hasPortrait ? chargingCzarinaAttackBuff * mult : 0;\r\n\t\tconst targets = input.board.filter((e) => e.divineShield);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\ttarget,\r\n\t\t\t\tentity,\r\n\t\t\t\tchargingCzarinaAttackBuff * mult,\r\n\t\t\t\thealthBuff,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -12,10 +12,10 @@ exports.DastardlyDrust = {
12
12
  const targets = input.board;
13
13
  for (const target of targets) {
14
14
  if ((0, utils_1.isGolden)(target.cardId, input.gameState.allCards)) {
15
- (0, stats_1.modifyStats)(target, minion, 4 * mult, 2 * mult, input.board, input.hero, input.gameState);
15
+ (0, stats_1.modifyStats)(target, minion, 6 * mult, 6 * mult, input.board, input.hero, input.gameState);
16
16
  }
17
17
  else {
18
- (0, stats_1.modifyStats)(target, minion, 2 * mult, 1 * mult, input.board, input.hero, input.gameState);
18
+ (0, stats_1.modifyStats)(target, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);
19
19
  }
20
20
  }
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dastardly-drust.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/dastardly-drust.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAA2D;AAG9C,QAAA,cAAc,GAA0B;IACpD,OAAO,EAAE,0BAAoE;IAC7E,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,EACV,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACtD,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC1F;qBAAM;oBACN,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC1F;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnCardAddedToHandInput } from '../../../simulation/cards-in-hand';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe, isGolden } from '../../../utils';\r\nimport { OnCardAddedToHandCard } from '../../card.interface';\r\n\r\nexport const DastardlyDrust: OnCardAddedToHandCard = {\r\n\tcardIds: [CardIds.DastardlyDrust_BG32_234, CardIds.DastardlyDrust_BG32_234_G],\r\n\tonCardAddedToHand: (minion: BoardEntity, input: OnCardAddedToHandInput) => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.addedCard,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tRace.PIRATE,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tconst mult = minion.cardId === CardIds.DastardlyDrust_BG32_234_G ? 2 : 1;\r\n\t\t\tconst targets = input.board;\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tif (isGolden(target.cardId, input.gameState.allCards)) {\r\n\t\t\t\t\tmodifyStats(target, minion, 4 * mult, 2 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodifyStats(target, minion, 2 * mult, 1 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"dastardly-drust.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/dastardly-drust.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAA2D;AAG9C,QAAA,cAAc,GAA0B;IACpD,OAAO,EAAE,0BAAoE;IAC7E,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAA6B,EAAE,EAAE;QACzE,IACC,IAAA,uBAAe,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,EACV,qBAAI,CAAC,MAAM,EACX,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,EACA;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;YAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC7B,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACtD,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC1F;qBAAM;oBACN,IAAA,mBAAW,EAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC1F;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnCardAddedToHandInput } from '../../../simulation/cards-in-hand';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe, isGolden } from '../../../utils';\r\nimport { OnCardAddedToHandCard } from '../../card.interface';\r\n\r\nexport const DastardlyDrust: OnCardAddedToHandCard = {\r\n\tcardIds: [CardIds.DastardlyDrust_BG32_234, CardIds.DastardlyDrust_BG32_234_G],\r\n\tonCardAddedToHand: (minion: BoardEntity, input: OnCardAddedToHandInput) => {\r\n\t\tif (\r\n\t\t\thasCorrectTribe(\r\n\t\t\t\tinput.addedCard,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tRace.PIRATE,\r\n\t\t\t\tinput.gameState.anomalies,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t)\r\n\t\t) {\r\n\t\t\tconst mult = minion.cardId === CardIds.DastardlyDrust_BG32_234_G ? 2 : 1;\r\n\t\t\tconst targets = input.board;\r\n\t\t\tfor (const target of targets) {\r\n\t\t\t\tif (isGolden(target.cardId, input.gameState.allCards)) {\r\n\t\t\t\t\tmodifyStats(target, minion, 6 * mult, 6 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmodifyStats(target, minion, 2 * mult, 2 * mult, input.board, input.hero, input.gameState);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -3,15 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DreamingThornweaver = void 0;
4
4
  exports.DreamingThornweaver = {
5
5
  cardIds: ["BG32_433", "BG32_433_G"],
6
- baseAvengeValue: (cardId) => 4,
6
+ baseAvengeValue: (cardId) => 3,
7
7
  avenge: (minion, input) => {
8
8
  const mult = minion.cardId === "BG32_433_G" ? 2 : 1;
9
- if (minion.scriptDataNum1 === 1) {
10
- input.hero.globalInfo.BloodGemAttackBonus += 1 * mult;
11
- }
12
- else {
13
- input.hero.globalInfo.BloodGemHealthBonus += 1 * mult;
14
- }
9
+ input.hero.globalInfo.BloodGemHealthBonus += 1 * mult;
15
10
  },
16
11
  };
17
12
  //# sourceMappingURL=dreaming-thornweaver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dreaming-thornweaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/dreaming-thornweaver.ts"],"names":[],"mappings":";;;AAKa,QAAA,mBAAmB,GAAe;IAC9C,OAAO,EAAE,0BAA8E;IACvF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,EAAE;YAChC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;SACtD;aAAM;YACN,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;SACtD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const DreamingThornweaver: AvengeCard = {\r\n\tcardIds: [CardIds.DreamingThornweaver_BG32_433, CardIds.DreamingThornweaver_BG32_433_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.DreamingThornweaver_BG32_433_G ? 2 : 1;\r\n\t\tif (minion.scriptDataNum1 === 1) {\r\n\t\t\tinput.hero.globalInfo.BloodGemAttackBonus += 1 * mult;\r\n\t\t} else {\r\n\t\t\tinput.hero.globalInfo.BloodGemHealthBonus += 1 * mult;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"dreaming-thornweaver.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/dreaming-thornweaver.ts"],"names":[],"mappings":";;;AAKa,QAAA,mBAAmB,GAAe;IAC9C,OAAO,EAAE,0BAA8E;IACvF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAI9E,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC;IAEvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const DreamingThornweaver: AvengeCard = {\r\n\tcardIds: [CardIds.DreamingThornweaver_BG32_433, CardIds.DreamingThornweaver_BG32_433_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.DreamingThornweaver_BG32_433_G ? 2 : 1;\r\n\t\t// if (minion.scriptDataNum1 === 1) {\r\n\t\t// \tinput.hero.globalInfo.BloodGemAttackBonus += 1 * mult;\r\n\t\t// } else {\r\n\t\tinput.hero.globalInfo.BloodGemHealthBonus += 1 * mult;\r\n\t\t// }\r\n\t},\r\n};\r\n"]}
@@ -4,7 +4,7 @@ exports.DrustfallenButcher = void 0;
4
4
  const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
5
  exports.DrustfallenButcher = {
6
6
  cardIds: ["BG32_324", "BG32_324_G"],
7
- baseAvengeValue: (cardId) => 4,
7
+ baseAvengeValue: (cardId) => 3,
8
8
  avenge: (minion, input) => {
9
9
  const mult = minion.cardId === "BG32_324_G" ? 2 : 1;
10
10
  const cardsToAdd = Array(mult).fill("BG28_604");
@@ -1 +1 @@
1
- {"version":3,"file":"drustfallen-butcher.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/drustfallen-butcher.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAA6B,CAAC;QACjE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const DrustfallenButcher: AvengeCard = {\r\n\tcardIds: [CardIds.DrustfallenButcher_BG32_324, CardIds.DrustfallenButcher_BG32_324_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.DrustfallenButcher_BG32_324_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array(mult).fill(CardIds.Butchering_BG28_604);\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"drustfallen-butcher.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/drustfallen-butcher.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,kBAAkB,GAAe;IAC7C,OAAO,EAAE,0BAA4E;IACrF,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAA6B,CAAC;QACjE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const DrustfallenButcher: AvengeCard = {\r\n\tcardIds: [CardIds.DrustfallenButcher_BG32_324, CardIds.DrustfallenButcher_BG32_324_G],\r\n\tbaseAvengeValue: (cardId: string) => 3,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.DrustfallenButcher_BG32_324_G ? 2 : 1;\r\n\t\tconst cardsToAdd = Array(mult).fill(CardIds.Butchering_BG28_604);\r\n\t\taddCardsInHand(input.hero, input.board, cardsToAdd, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -4,8 +4,8 @@ exports.KingBagurgle = void 0;
4
4
  const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  const utils_1 = require("../../../utils");
7
- const baseAttackBuff = 2;
8
- const baseHealthBuff = 3;
7
+ const baseAttackBuff = 4;
8
+ const baseHealthBuff = 4;
9
9
  exports.KingBagurgle = {
10
10
  cardIds: ["BGS_030", "TB_BaconUps_100"],
11
11
  battlecry: (minion, input) => {
@@ -1 +1 @@
1
- {"version":3,"file":"king-bagurgle.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/king-bagurgle.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGjD,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,YAAY,GAAkB;IAC1C,OAAO,EAAE,8BAAoE;IAC7E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,cAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,cAAc,GAAG,IAAI,EACrB,cAAc,GAAG,IAAI,EACrB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * King Bagurgle (Tier 3, 2/3) — 35.2 tier/stats change; effect unchanged.\r\n * Battlecry: Give all other Murlocs in your hand and board +2/+3.\r\n *\r\n * Golden King Bagurgle (Tier 3, 4/6)\r\n * Battlecry: Give all other Murlocs in your hand and board +4/+6.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nconst baseAttackBuff = 2;\r\nconst baseHealthBuff = 3;\r\n\r\nexport const KingBagurgle: BattlecryCard = {\r\n\tcardIds: [CardIds.KingBagurgle_BGS_030, CardIds.KingBagurgle_TB_BaconUps_100],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.KingBagurgle_BGS_030 ? 1 : 2;\r\n\t\tconst targets = [...input.board, ...input.hero.hand]\r\n\t\t\t.filter((e) => e.entityId !== minion.entityId)\r\n\t\t\t.filter((e) =>\r\n\t\t\t\thasCorrectTribe(e, input.hero, Race.MURLOC, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t\t);\r\n\t\tfor (const entity of targets) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tentity,\r\n\t\t\t\tminion,\r\n\t\t\t\tbaseAttackBuff * mult,\r\n\t\t\t\tbaseHealthBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"king-bagurgle.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/king-bagurgle.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGjD,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,YAAY,GAAkB;IAC1C,OAAO,EAAE,8BAAoE;IAC7E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,cAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACb,IAAA,uBAAe,EAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAChG,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EACV,MAAM,EACN,MAAM,EACN,cAAc,GAAG,IAAI,EACrB,cAAc,GAAG,IAAI,EACrB,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;SACF;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * King Bagurgle (Tier 3, 2/3) — 35.2 tier/stats change; effect unchanged.\r\n * Battlecry: Give all other Murlocs in your hand and board +2/+3.\r\n *\r\n * Golden King Bagurgle (Tier 3, 4/6)\r\n * Battlecry: Give all other Murlocs in your hand and board +4/+6.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { BattlecryInput } from '../../../simulation/battlecries';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { BattlecryCard } from '../../card.interface';\r\n\r\nconst baseAttackBuff = 4;\r\nconst baseHealthBuff = 4;\r\n\r\nexport const KingBagurgle: BattlecryCard = {\r\n\tcardIds: [CardIds.KingBagurgle_BGS_030, CardIds.KingBagurgle_TB_BaconUps_100],\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.KingBagurgle_BGS_030 ? 1 : 2;\r\n\t\tconst targets = [...input.board, ...input.hero.hand]\r\n\t\t\t.filter((e) => e.entityId !== minion.entityId)\r\n\t\t\t.filter((e) =>\r\n\t\t\t\thasCorrectTribe(e, input.hero, Race.MURLOC, input.gameState.anomalies, input.gameState.allCards),\r\n\t\t\t);\r\n\t\tfor (const entity of targets) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tentity,\r\n\t\t\t\tminion,\r\n\t\t\t\tbaseAttackBuff * mult,\r\n\t\t\t\tbaseHealthBuff * mult,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -10,7 +10,7 @@ exports.NalaaTheRedeemer = {
10
10
  const hasPortrait = (_a = input.hero.trinkets) === null || _a === void 0 ? void 0 : _a.some((t) => t.cardId === "BG30_MagicItem_944");
11
11
  const extraAtk = hasPortrait ? 2 : 0;
12
12
  const extraHp = hasPortrait ? 2 : 0;
13
- (0, utils_1.grantStatsToMinionsOfEachType)(minion, input.board, input.hero, 3 * mult + extraAtk, 2 * mult + extraHp, input.gameState);
13
+ (0, utils_1.grantStatsToMinionsOfEachType)(minion, input.board, input.hero, 4 * mult + extraAtk, 3 * mult + extraHp, input.gameState);
14
14
  },
15
15
  };
16
16
  //# sourceMappingURL=nalaa-the-redeemer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nalaa-the-redeemer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/nalaa-the-redeemer.ts"],"names":[],"mappings":";;;AAEA,0CAA+D;AAGlD,QAAA,gBAAgB,GAA0B;IACtD,OAAO,EAAE,0BAAwE;IACjF,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAC5C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAgD,CAC/D,CAAC;QACF,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAA,qCAA6B,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1H,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { grantStatsToMinionsOfEachType } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const NalaaTheRedeemer: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.NalaaTheRedeemer_BG28_551, CardIds.NalaaTheRedeemer_BG28_551_G],\r\n\tonTavernSpellCast: (minion: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.NalaaTheRedeemer_BG28_551_G ? 2 : 1;\r\n\t\tconst hasPortrait = input.hero.trinkets?.some(\r\n\t\t\t(t) => t.cardId === CardIds.RedeemerPortrait_BG30_MagicItem_944,\r\n\t\t);\r\n\t\tconst extraAtk = hasPortrait ? 2 : 0;\r\n\t\tconst extraHp = hasPortrait ? 2 : 0;\r\n\t\tgrantStatsToMinionsOfEachType(minion, input.board, input.hero, 3 * mult + extraAtk, 2 * mult + extraHp, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"nalaa-the-redeemer.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/nalaa-the-redeemer.ts"],"names":[],"mappings":";;;AAEA,0CAA+D;AAGlD,QAAA,gBAAgB,GAA0B;IACtD,OAAO,EAAE,0BAAwE;IACjF,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAgD,CAAC,CAAC;QAC/G,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAA,qCAA6B,EAC5B,MAAM,EACN,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,CAAC,GAAG,IAAI,GAAG,QAAQ,EACnB,CAAC,GAAG,IAAI,GAAG,OAAO,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;IACH,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { grantStatsToMinionsOfEachType } from '../../../utils';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const NalaaTheRedeemer: OnTavernSpellCastCard = {\r\n\tcardIds: [CardIds.NalaaTheRedeemer_BG28_551, CardIds.NalaaTheRedeemer_BG28_551_G],\r\n\tonTavernSpellCast: (minion: BoardEntity, input: CastSpellInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.NalaaTheRedeemer_BG28_551_G ? 2 : 1;\r\n\t\tconst hasPortrait = input.hero.trinkets?.some((t) => t.cardId === CardIds.RedeemerPortrait_BG30_MagicItem_944);\r\n\t\tconst extraAtk = hasPortrait ? 2 : 0;\r\n\t\tconst extraHp = hasPortrait ? 2 : 0;\r\n\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\tminion,\r\n\t\t\tinput.board,\r\n\t\t\tinput.hero,\r\n\t\t\t4 * mult + extraAtk,\r\n\t\t\t3 * mult + extraHp,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t},\r\n};\r\n"]}
@@ -5,7 +5,7 @@ const divine_shield_1 = require("../../../keywords/divine-shield");
5
5
  const attack_1 = require("../../../simulation/attack");
6
6
  exports.Poultron = {
7
7
  cardIds: ["BG33_371", "BG33_371_G"],
8
- baseAvengeValue: (cardId) => 4,
8
+ baseAvengeValue: (cardId) => 5,
9
9
  avenge: (minion, input) => {
10
10
  if (minion.health <= 0 || minion.definitelyDead) {
11
11
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"poultron.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/poultron.ts"],"names":[],"mappings":";;;AAEA,mEAAqE;AACrE,uDAA4D;AAI/C,QAAA,QAAQ,GAAe;IACnC,OAAO,EAAE,0BAAwD;IACjE,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE;YAChD,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC;QAG/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,IAAA,uBAAc,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC;YACzC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC;SACnC;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '../../../services/card-ids';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { simulateAttack } from '../../../simulation/attack';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Poultron: AvengeCard = {\r\n\tcardIds: [CardIds.P0ulTr0n_BG33_371, CardIds.P0ulTr0n_BG33_371_G],\r\n\tbaseAvengeValue: (cardId) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tif (minion.health <= 0 || minion.definitelyDead) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === CardIds.P0ulTr0n_BG33_371_G ? 2 : 1;\r\n\t\tconst previousHasAttacked = minion.hasAttacked;\r\n\t\t// Not sure why, but with Windfury it looks like the divine shield is granted each time\r\n\t\t// It's a bug, so once it's fixed I should remove this\r\n\t\tconst previousWindfury = minion.windfury;\r\n\t\tconst totalAttacks = mult;\r\n\t\tfor (let i = 0; i < totalAttacks; i++) {\r\n\t\t\tminion.windfury = false;\r\n\t\t\tupdateDivineShield(minion, input.board, input.hero, input.otherHero, true, input.gameState);\r\n\t\t\tminion.attackImmediately = true;\r\n\t\t\tsimulateAttack(input.board, input.hero, input.otherBoard, input.otherHero, input.gameState);\r\n\t\t\tminion.hasAttacked = previousHasAttacked;\r\n\t\t\tminion.attackImmediately = false;\r\n\t\t\tminion.windfury = previousWindfury;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"poultron.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/poultron.ts"],"names":[],"mappings":";;;AACA,mEAAqE;AAErE,uDAA4D;AAI/C,QAAA,QAAQ,GAAe;IACnC,OAAO,EAAE,0BAAwD;IACjE,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAE,EAAE;QACnD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE;YAChD,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAAC;QAG/C,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzC,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;YACtC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YACxB,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,IAAA,uBAAc,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5F,MAAM,CAAC,WAAW,GAAG,mBAAmB,CAAC;YACzC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACjC,MAAM,CAAC,QAAQ,GAAG,gBAAgB,CAAC;SACnC;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { updateDivineShield } from '../../../keywords/divine-shield';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { simulateAttack } from '../../../simulation/attack';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Poultron: AvengeCard = {\r\n\tcardIds: [CardIds.P0ulTr0n_BG33_371, CardIds.P0ulTr0n_BG33_371_G],\r\n\tbaseAvengeValue: (cardId) => 5,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput) => {\r\n\t\tif (minion.health <= 0 || minion.definitelyDead) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === CardIds.P0ulTr0n_BG33_371_G ? 2 : 1;\r\n\t\tconst previousHasAttacked = minion.hasAttacked;\r\n\t\t// Not sure why, but with Windfury it looks like the divine shield is granted each time\r\n\t\t// It's a bug, so once it's fixed I should remove this\r\n\t\tconst previousWindfury = minion.windfury;\r\n\t\tconst totalAttacks = mult;\r\n\t\tfor (let i = 0; i < totalAttacks; i++) {\r\n\t\t\tminion.windfury = false;\r\n\t\t\tupdateDivineShield(minion, input.board, input.hero, input.otherHero, true, input.gameState);\r\n\t\t\tminion.attackImmediately = true;\r\n\t\t\tsimulateAttack(input.board, input.hero, input.otherBoard, input.otherHero, input.gameState);\r\n\t\t\tminion.hasAttacked = previousHasAttacked;\r\n\t\t\tminion.attackImmediately = false;\r\n\t\t\tminion.windfury = previousWindfury;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -1,4 +1,4 @@
1
1
  import { RallyCard } from '../../card.interface';
2
- export declare const stompingStegodonAttack = 4;
2
+ export declare const stompingStegodonAttack = 3;
3
3
  export declare const stompingStegodonHealth = 0;
4
4
  export declare const StompingStegodon: RallyCard;
@@ -4,7 +4,7 @@ exports.StompingStegodon = exports.stompingStegodonHealth = exports.stompingSteg
4
4
  const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  const utils_1 = require("../../../utils");
7
- exports.stompingStegodonAttack = 4;
7
+ exports.stompingStegodonAttack = 3;
8
8
  exports.stompingStegodonHealth = 0;
9
9
  exports.StompingStegodon = {
10
10
  cardIds: ["BG33_840", "BG33_840_G"],
@@ -1 +1 @@
1
- {"version":3,"file":"stomping-stegodon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,QAAA,gBAAgB,GAAc;IAC1C,OAAO,EAAE,0BAAwE;IACjF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,KAAK,KAAK,CAAC,QAAQ;YACpB,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF,CAAC;QACF,MAAM,sBAAsB,GAC3B,MAAM,CAAC,MAAM,iBAAwC;YACpD,CAAC;YACD,CAAC,aAAwD,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,mBAAW,EACV,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,8BAAsB,GAAG,IAAI,EAC7B,8BAAsB,GAAG,IAAI,EAC7B,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAC;YAClG,IAAI,CAAC,mBAAmB,EAAE;gBACzB,mBAAmB,GAAG;oBACrB,MAAM,EAAE,sBAAsB;oBAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;oBACvC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;oBACrD,OAAO,EAAE,CAAC;iBACV,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACjD;YACD,mBAAmB,CAAC,OAAO,GAAG,CAAC,MAAA,mBAAmB,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACrE;QAED,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Stomping Stegodon (Tier 4, 4/3)\r\n * Rally: Give your other Beasts +4 Attack and this Rally.\r\n *\r\n * Golden Stomping Stegodon (Tier 4, 8/6)\r\n * Rally: Give your other Beasts +8 Attack and this Rally.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const stompingStegodonAttack = 4;\r\nexport const stompingStegodonHealth = 0;\r\n\r\nexport const StompingStegodon: RallyCard = {\r\n\tcardIds: [CardIds.StompingStegodon_BG33_840, CardIds.StompingStegodon_BG33_840_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.StompingStegodon_BG33_840_G ? 2 : 1;\r\n\t\tconst candidates = input.attackingBoard.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te !== input.attacker &&\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.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);\r\n\t\tconst enchantmentCardIdToAdd =\r\n\t\t\tminion.cardId === CardIds.StompingStegodon_BG33_840_G\r\n\t\t\t\t? CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2\r\n\t\t\t\t: CardIds.StompingStegodon_StompingEnchantment_BG33_840e2;\r\n\t\tfor (const candidate of candidates) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tcandidate,\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tstompingStegodonAttack * mult,\r\n\t\t\t\tstompingStegodonHealth * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\r\n\t\t\tlet existingEnchantment = candidate.enchantments.find((e) => e.cardId === enchantmentCardIdToAdd);\r\n\t\t\tif (!existingEnchantment) {\r\n\t\t\t\texistingEnchantment = {\r\n\t\t\t\t\tcardId: enchantmentCardIdToAdd,\r\n\t\t\t\t\toriginEntityId: input.attacker.entityId,\r\n\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\trepeats: 0,\r\n\t\t\t\t};\r\n\t\t\t\tcandidate.enchantments.push(existingEnchantment);\r\n\t\t\t}\r\n\t\t\texistingEnchantment.repeats = (existingEnchantment.repeats ?? 0) + 1;\r\n\t\t}\r\n\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"stomping-stegodon.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stomping-stegodon.ts"],"names":[],"mappings":";;;AAOA,iEAAoD;AAIpD,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAC3B,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAE3B,QAAA,gBAAgB,GAAc;IAC1C,OAAO,EAAE,0BAAwE;IACjF,KAAK,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;;QACpD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,KAAK,KAAK,CAAC,QAAQ;YACpB,IAAA,uBAAe,EACd,CAAC,EACD,KAAK,CAAC,aAAa,EACnB,qBAAI,CAAC,KAAK,EACV,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CACF,CAAC;QACF,MAAM,sBAAsB,GAC3B,MAAM,CAAC,MAAM,iBAAwC;YACpD,CAAC;YACD,CAAC,aAAwD,CAAC;QAC5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YACnC,IAAA,mBAAW,EACV,SAAS,EACT,KAAK,CAAC,QAAQ,EACd,8BAAsB,GAAG,IAAI,EAC7B,8BAAsB,GAAG,IAAI,EAC7B,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YAEF,IAAI,mBAAmB,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,sBAAsB,CAAC,CAAC;YAClG,IAAI,CAAC,mBAAmB,EAAE;gBACzB,mBAAmB,GAAG;oBACrB,MAAM,EAAE,sBAAsB;oBAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ;oBACvC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;oBACrD,OAAO,EAAE,CAAC;iBACV,CAAC;gBACF,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACjD;YACD,mBAAmB,CAAC,OAAO,GAAG,CAAC,MAAA,mBAAmB,CAAC,OAAO,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;SACrE;QAED,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["/**\r\n * Stomping Stegodon (Tier 4, 4/3)\r\n * Rally: Give your other Beasts +4 Attack and this Rally.\r\n *\r\n * Golden Stomping Stegodon (Tier 4, 8/6)\r\n * Rally: Give your other Beasts +8 Attack and this Rally.\r\n */\r\nimport { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { RallyCard } from '../../card.interface';\r\n\r\nexport const stompingStegodonAttack = 3;\r\nexport const stompingStegodonHealth = 0;\r\n\r\nexport const StompingStegodon: RallyCard = {\r\n\tcardIds: [CardIds.StompingStegodon_BG33_840, CardIds.StompingStegodon_BG33_840_G],\r\n\trally: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.StompingStegodon_BG33_840_G ? 2 : 1;\r\n\t\tconst candidates = input.attackingBoard.filter(\r\n\t\t\t(e) =>\r\n\t\t\t\te !== input.attacker &&\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.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);\r\n\t\tconst enchantmentCardIdToAdd =\r\n\t\t\tminion.cardId === CardIds.StompingStegodon_BG33_840_G\r\n\t\t\t\t? CardIds.StompingStegodon_StompingEnchantment_BG33_840_Ge2\r\n\t\t\t\t: CardIds.StompingStegodon_StompingEnchantment_BG33_840e2;\r\n\t\tfor (const candidate of candidates) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tcandidate,\r\n\t\t\t\tinput.attacker,\r\n\t\t\t\tstompingStegodonAttack * mult,\r\n\t\t\t\tstompingStegodonHealth * mult,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\r\n\t\t\tlet existingEnchantment = candidate.enchantments.find((e) => e.cardId === enchantmentCardIdToAdd);\r\n\t\t\tif (!existingEnchantment) {\r\n\t\t\t\texistingEnchantment = {\r\n\t\t\t\t\tcardId: enchantmentCardIdToAdd,\r\n\t\t\t\t\toriginEntityId: input.attacker.entityId,\r\n\t\t\t\t\ttiming: input.gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\trepeats: 0,\r\n\t\t\t\t};\r\n\t\t\t\tcandidate.enchantments.push(existingEnchantment);\r\n\t\t\t}\r\n\t\t\texistingEnchantment.repeats = (existingEnchantment.repeats ?? 0) + 1;\r\n\t\t}\r\n\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -7,7 +7,7 @@ const spawns_1 = require("../../../simulation/spawns");
7
7
  const utils_1 = require("../../../utils");
8
8
  exports.BloodGolemSticker = {
9
9
  cardIds: ["BG30_MagicItem_442"],
10
- defaultScriptDataNum: (cardId) => 3,
10
+ defaultScriptDataNum: (cardId) => 9999,
11
11
  onAfterDeath: (trinket, input) => {
12
12
  const { hero, gameState, board, otherBoard, otherHero } = input;
13
13
  for (const deadEntity of input.deadEntities) {
@@ -1 +1 @@
1
- {"version":3,"file":"blood-golem-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/blood-golem-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,+EAAuE;AACvE,uDAAiE;AACjE,0CAAiD;AAKpC,QAAA,iBAAiB,GAAgD;IAC7E,OAAO,EAAE,sBAA8C;IACvD,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAChE,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE;YAC5C,IACC,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;gBACrC,OAAO,CAAC,cAAc,GAAG,CAAC;gBAC1B,IAAA,uBAAe,EAAC,UAAU,EAAE,IAAI,EAAE,qBAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EACxF;gBAED,MAAM,cAAc,GAAG,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtG,IAAI,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,iBAA0C,CACzD,CAAC;gBACF,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,MAAK,CAAC,EAAE;oBACvC,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAAyC,CACxD,CAAC;iBACF;gBACD,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,IAAG,CAAC,EAAE;oBACrC,MAAM,cAAc,GAAG,oBAAoB;yBACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC;yBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM,cAAc,GAAG,oBAAoB;yBACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC;yBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;wBAC7C,MAAM,MAAM,GAAG,IAAA,kCAAa,yBAE3B,CAAC,EACD,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,KAAK,CACL,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BACpB,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;4BAC1B,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;4BAC1B,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;wBACxC,CAAC,CAAC,CAAC;wBACH,IAAA,4BAAmB,EAClB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,CACT,CAAC;wBACF,OAAO,CAAC,cAAc,EAAE,CAAC;qBACzB;iBACD;aACD;SACD;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 { OnAfterDeathInput } from '../../../simulation/attack';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';\r\n\r\n// 2026-04-17: Deathrattles trigger before the Sticker\r\n// https://replays.firestoneapp.com/?reviewId=99605623-18e1-45ad-a7a1-daf7ef29adcb&turn=23&action=7\r\nexport const BloodGolemSticker: OnAfterDeathCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.BloodGolemSticker_BG30_MagicItem_442],\r\n\tdefaultScriptDataNum: (cardId: string) => 3,\r\n\tonAfterDeath: (trinket: BoardTrinket, input: OnAfterDeathInput) => {\r\n\t\tconst { hero, gameState, board, otherBoard, otherHero } = input;\r\n\t\tfor (const deadEntity of input.deadEntities) {\r\n\t\t\tif (\r\n\t\t\t\tdeadEntity.friendly === hero.friendly &&\r\n\t\t\t\ttrinket.scriptDataNum1 > 0 &&\r\n\t\t\t\thasCorrectTribe(deadEntity, hero, Race.QUILBOAR, gameState.anomalies, gameState.allCards)\r\n\t\t\t) {\r\n\t\t\t\t// -1 because the minion is already removed from the board\r\n\t\t\t\tconst indexFromRight = input.deadEntitiesIndexesFromRight[input.deadEntities.indexOf(deadEntity)] + 1;\r\n\t\t\t\tlet bloodGemEnchantments = deadEntity.enchantments.filter(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.BloodGem_BloodGemsEnchantment,\r\n\t\t\t\t);\r\n\t\t\t\tif (bloodGemEnchantments?.length === 0) {\r\n\t\t\t\t\tbloodGemEnchantments = deadEntity.enchantments.filter(\r\n\t\t\t\t\t\t(e) => e.cardId === CardIds.BloodGem_BloodGemEnchantment,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (bloodGemEnchantments?.length > 0) {\r\n\t\t\t\t\tconst bloodGemAttack = bloodGemEnchantments\r\n\t\t\t\t\t\t.map((e) => e.tagScriptDataNum1 ?? 0)\r\n\t\t\t\t\t\t.reduce((a, b) => a + b, 0);\r\n\t\t\t\t\tconst bloodGemHealth = bloodGemEnchantments\r\n\t\t\t\t\t\t.map((e) => e.tagScriptDataNum2 ?? 0)\r\n\t\t\t\t\t\t.reduce((a, b) => a + b, 0);\r\n\t\t\t\t\tif (bloodGemAttack > 0 || bloodGemHealth > 0) {\r\n\t\t\t\t\t\tconst spawns = spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.BloodGolemSticker_BloodGolemToken_BG30_MagicItem_442t,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\t\thero,\r\n\t\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tspawns.forEach((b) => {\r\n\t\t\t\t\t\t\tb.attack = bloodGemAttack;\r\n\t\t\t\t\t\t\tb.health = bloodGemHealth;\r\n\t\t\t\t\t\t\tb.hasAttacked = deadEntity.hasAttacked;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tperformEntitySpawns(\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\t\thero,\r\n\t\t\t\t\t\t\tdeadEntity,\r\n\t\t\t\t\t\t\tindexFromRight,\r\n\t\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\ttrinket.scriptDataNum1--;\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},\r\n};\r\n"]}
1
+ {"version":3,"file":"blood-golem-sticker.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/blood-golem-sticker.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAIpD,+EAAuE;AACvE,uDAAiE;AACjE,0CAAiD;AAKpC,QAAA,iBAAiB,GAAgD;IAC7E,OAAO,EAAE,sBAA8C;IACvD,oBAAoB,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI;IAC9C,YAAY,EAAE,CAAC,OAAqB,EAAE,KAAwB,EAAE,EAAE;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAChE,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,YAAY,EAAE;YAC5C,IACC,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;gBACrC,OAAO,CAAC,cAAc,GAAG,CAAC;gBAC1B,IAAA,uBAAe,EAAC,UAAU,EAAE,IAAI,EAAE,qBAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,EACxF;gBAED,MAAM,cAAc,GAAG,KAAK,CAAC,4BAA4B,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtG,IAAI,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CACxD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,iBAA0C,CACzD,CAAC;gBACF,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,MAAK,CAAC,EAAE;oBACvC,oBAAoB,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,gBAAyC,CACxD,CAAC;iBACF;gBACD,IAAI,CAAA,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,IAAG,CAAC,EAAE;oBACrC,MAAM,cAAc,GAAG,oBAAoB;yBACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC;yBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,MAAM,cAAc,GAAG,oBAAoB;yBACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,iBAAiB,mCAAI,CAAC,CAAA,EAAA,CAAC;yBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC7B,IAAI,cAAc,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,EAAE;wBAC7C,MAAM,MAAM,GAAG,IAAA,kCAAa,yBAE3B,CAAC,EACD,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,CAAC,QAAQ,EACnB,KAAK,CACL,CAAC;wBACF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;4BACpB,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;4BAC1B,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;4BAC1B,CAAC,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;wBACxC,CAAC,CAAC,CAAC;wBACH,IAAA,4BAAmB,EAClB,MAAM,EACN,KAAK,EACL,IAAI,EACJ,UAAU,EACV,cAAc,EACd,UAAU,EACV,SAAS,EACT,SAAS,CACT,CAAC;wBACF,OAAO,CAAC,cAAc,EAAE,CAAC;qBACzB;iBACD;aACD;SACD;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 { OnAfterDeathInput } from '../../../simulation/attack';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { DefaultScriptDataNumCard, OnAfterDeathCard } from '../../card.interface';\r\n\r\n// 2026-04-17: Deathrattles trigger before the Sticker\r\n// https://replays.firestoneapp.com/?reviewId=99605623-18e1-45ad-a7a1-daf7ef29adcb&turn=23&action=7\r\nexport const BloodGolemSticker: OnAfterDeathCard & DefaultScriptDataNumCard = {\r\n\tcardIds: [CardIds.BloodGolemSticker_BG30_MagicItem_442],\r\n\tdefaultScriptDataNum: (cardId: string) => 9999, // Unlimited, just easier to update\r\n\tonAfterDeath: (trinket: BoardTrinket, input: OnAfterDeathInput) => {\r\n\t\tconst { hero, gameState, board, otherBoard, otherHero } = input;\r\n\t\tfor (const deadEntity of input.deadEntities) {\r\n\t\t\tif (\r\n\t\t\t\tdeadEntity.friendly === hero.friendly &&\r\n\t\t\t\ttrinket.scriptDataNum1 > 0 &&\r\n\t\t\t\thasCorrectTribe(deadEntity, hero, Race.QUILBOAR, gameState.anomalies, gameState.allCards)\r\n\t\t\t) {\r\n\t\t\t\t// -1 because the minion is already removed from the board\r\n\t\t\t\tconst indexFromRight = input.deadEntitiesIndexesFromRight[input.deadEntities.indexOf(deadEntity)] + 1;\r\n\t\t\t\tlet bloodGemEnchantments = deadEntity.enchantments.filter(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.BloodGem_BloodGemsEnchantment,\r\n\t\t\t\t);\r\n\t\t\t\tif (bloodGemEnchantments?.length === 0) {\r\n\t\t\t\t\tbloodGemEnchantments = deadEntity.enchantments.filter(\r\n\t\t\t\t\t\t(e) => e.cardId === CardIds.BloodGem_BloodGemEnchantment,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tif (bloodGemEnchantments?.length > 0) {\r\n\t\t\t\t\tconst bloodGemAttack = bloodGemEnchantments\r\n\t\t\t\t\t\t.map((e) => e.tagScriptDataNum1 ?? 0)\r\n\t\t\t\t\t\t.reduce((a, b) => a + b, 0);\r\n\t\t\t\t\tconst bloodGemHealth = bloodGemEnchantments\r\n\t\t\t\t\t\t.map((e) => e.tagScriptDataNum2 ?? 0)\r\n\t\t\t\t\t\t.reduce((a, b) => a + b, 0);\r\n\t\t\t\t\tif (bloodGemAttack > 0 || bloodGemHealth > 0) {\r\n\t\t\t\t\t\tconst spawns = spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.BloodGolemSticker_BloodGolemToken_BG30_MagicItem_442t,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\t\thero,\r\n\t\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tspawns.forEach((b) => {\r\n\t\t\t\t\t\t\tb.attack = bloodGemAttack;\r\n\t\t\t\t\t\t\tb.health = bloodGemHealth;\r\n\t\t\t\t\t\t\tb.hasAttacked = deadEntity.hasAttacked;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tperformEntitySpawns(\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\t\thero,\r\n\t\t\t\t\t\t\tdeadEntity,\r\n\t\t\t\t\t\t\tindexFromRight,\r\n\t\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\ttrinket.scriptDataNum1--;\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},\r\n};\r\n"]}
@@ -1,20 +1,30 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BluegillFlippers = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ const baseAttackBuff = 4;
6
+ const baseHealthBuff = 4;
4
7
  exports.BluegillFlippers = {
5
8
  cardIds: ["BG32_MagicItem_893"],
6
9
  afterTavernSpellCast: (trinket, input) => {
7
- var _a, _b, _c, _d, _e;
10
+ var _a, _b, _c, _d, _e, _f;
8
11
  if (input.source !== input.hero)
9
12
  return;
10
- const hand = (_a = input.hero.hand) !== null && _a !== void 0 ? _a : [];
13
+ const board = (_a = input.board) !== null && _a !== void 0 ? _a : [];
14
+ if (board.length > 0) {
15
+ const leftMost = board[0];
16
+ if (leftMost) {
17
+ (0, stats_1.modifyStats)(leftMost, trinket, baseAttackBuff, baseHealthBuff, input.board, input.hero, input.gameState);
18
+ }
19
+ }
20
+ const hand = (_b = input.hero.hand) !== null && _b !== void 0 ? _b : [];
11
21
  if (hand.length > 0) {
12
- const leftMost = hand[0];
22
+ const leftMost = hand.filter((c) => !!c.maxHealth)[0];
13
23
  if (leftMost) {
14
24
  const refCard = input.gameState.allCards.getCard(leftMost.cardId);
15
25
  if ((refCard === null || refCard === void 0 ? void 0 : refCard.attack) != null) {
16
- leftMost.attack = ((_c = (_b = leftMost.attack) !== null && _b !== void 0 ? _b : refCard.attack) !== null && _c !== void 0 ? _c : 0) + 4;
17
- leftMost.health = ((_e = (_d = leftMost.health) !== null && _d !== void 0 ? _d : refCard.health) !== null && _e !== void 0 ? _e : 0) + 4;
26
+ leftMost.attack = ((_d = (_c = leftMost.attack) !== null && _c !== void 0 ? _c : refCard.attack) !== null && _d !== void 0 ? _d : 0) + baseAttackBuff;
27
+ leftMost.health = ((_f = (_e = leftMost.health) !== null && _e !== void 0 ? _e : refCard.health) !== null && _f !== void 0 ? _f : 0) + baseHealthBuff;
18
28
  }
19
29
  }
20
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bluegill-flippers.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bluegill-flippers.ts"],"names":[],"mappings":";;;AAIa,QAAA,gBAAgB,GAA6B;IACzD,OAAO,EAAE,sBAA6C;IACtD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO;QAExC,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,QAAQ,EAAE;gBACb,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,EAAE;oBAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC/D,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;iBAC/D;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nexport const BluegillFlippers: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BluegillFlippers_BG32_MagicItem_893],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) return;\r\n\r\n\t\tconst hand = input.hero.hand ?? [];\r\n\t\tif (hand.length > 0) {\r\n\t\t\tconst leftMost = hand[0];\r\n\t\t\tif (leftMost) {\r\n\t\t\t\tconst refCard = input.gameState.allCards.getCard(leftMost.cardId);\r\n\t\t\t\tif (refCard?.attack != null) {\r\n\t\t\t\t\tleftMost.attack = (leftMost.attack ?? refCard.attack ?? 0) + 4;\r\n\t\t\t\t\tleftMost.health = (leftMost.health ?? refCard.health ?? 0) + 4;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bluegill-flippers.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bluegill-flippers.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAGxD,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEZ,QAAA,gBAAgB,GAA6B;IACzD,OAAO,EAAE,sBAA6C;IACtD,oBAAoB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QACtE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO;QAExC,MAAM,KAAK,GAAG,MAAA,KAAK,CAAC,KAAK,mCAAI,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,QAAQ,EAAE;gBACb,IAAA,mBAAW,EACV,QAAQ,EACR,OAAO,EACP,cAAc,EACd,cAAc,EACd,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,CACf,CAAC;aACF;SACD;QAED,MAAM,IAAI,GAAG,MAAA,KAAK,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE;gBACb,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClE,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,KAAI,IAAI,EAAE;oBAC5B,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,cAAc,CAAC;oBAC5E,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAA,MAAA,QAAQ,CAAC,MAAM,mCAAI,OAAO,CAAC,MAAM,mCAAI,CAAC,CAAC,GAAG,cAAc,CAAC;iBAC5E;aACD;SACD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AfterTavernSpellCastCard, CastSpellInput } from '../../card.interface';\r\n\r\nconst baseAttackBuff = 4;\r\nconst baseHealthBuff = 4;\r\n\r\nexport const BluegillFlippers: AfterTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BluegillFlippers_BG32_MagicItem_893],\r\n\tafterTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) return;\r\n\r\n\t\tconst board = input.board ?? [];\r\n\t\tif (board.length > 0) {\r\n\t\t\tconst leftMost = board[0];\r\n\t\t\tif (leftMost) {\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\tleftMost,\r\n\t\t\t\t\ttrinket,\r\n\t\t\t\t\tbaseAttackBuff,\r\n\t\t\t\t\tbaseHealthBuff,\r\n\t\t\t\t\tinput.board,\r\n\t\t\t\t\tinput.hero,\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\r\n\t\tconst hand = input.hero.hand ?? [];\r\n\t\tif (hand.length > 0) {\r\n\t\t\tconst leftMost = hand.filter((c) => !!c.maxHealth)[0];\r\n\t\t\tif (leftMost) {\r\n\t\t\t\tconst refCard = input.gameState.allCards.getCard(leftMost.cardId);\r\n\t\t\t\tif (refCard?.attack != null) {\r\n\t\t\t\t\tleftMost.attack = (leftMost.attack ?? refCard.attack ?? 0) + baseAttackBuff;\r\n\t\t\t\t\tleftMost.health = (leftMost.health ?? refCard.health ?? 0) + baseHealthBuff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BubbleCrown = void 0;
4
+ const reference_data_1 = require("@firestone-hs/reference-data");
4
5
  exports.BubbleCrown = {
5
6
  cardIds: ["BG35_MagicItem_920"],
6
7
  onBeforeTavernSpellCast: (trinket, input) => {
7
- trinket.scriptDataNum1 = (trinket.scriptDataNum1 || 10) - 1;
8
+ var _a, _b;
9
+ if (((_a = trinket.tags) === null || _a === void 0 ? void 0 : _a[reference_data_1.GameTag.TRIGGER_VISUAL]) === 0) {
10
+ return;
11
+ }
12
+ trinket.scriptDataNum1 = ((_b = trinket.scriptDataNum1) !== null && _b !== void 0 ? _b : 0) - 1;
8
13
  if (trinket.scriptDataNum1 <= 0) {
9
14
  trinket.scriptDataNum1 = 10;
10
15
  input.hero.globalInfo.TavernSpellAttackBuff += 4;
11
16
  input.hero.globalInfo.TavernSpellHealthBuff += 4;
17
+ trinket.tags[reference_data_1.GameTag.TRIGGER_VISUAL] = 0;
12
18
  }
13
19
  },
14
20
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bubble-crown.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bubble-crown.ts"],"names":[],"mappings":";;;AAIa,QAAA,WAAW,GAAgC;IACvD,OAAO,EAAE,sBAAwC;IAGjD,uBAAuB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;QACzE,OAAO,CAAC,cAAc,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,CAAC;SACjD;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { CastSpellInput, OnBeforeTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const BubbleCrown: OnBeforeTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BubbleCrown_BG35_MagicItem_920],\r\n\t// This seems to trigger before the first spell is cast\r\n\t// https://replays.firestoneapp.com/?reviewId=2503f562-e0e1-4564-8218-d36cbf09cbb0&turn=17&action=2\r\n\tonBeforeTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 || 10) - 1;\r\n\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\ttrinket.scriptDataNum1 = 10;\r\n\t\t\tinput.hero.globalInfo.TavernSpellAttackBuff += 4;\r\n\t\t\tinput.hero.globalInfo.TavernSpellHealthBuff += 4;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bubble-crown.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/bubble-crown.ts"],"names":[],"mappings":";;;AAAA,iEAAuD;AAK1C,QAAA,WAAW,GAAgC;IACvD,OAAO,EAAE,sBAAwC;IAGjD,uBAAuB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;;QAEzE,IAAI,CAAA,MAAA,OAAO,CAAC,IAAI,0CAAG,wBAAO,CAAC,cAAc,CAAC,MAAK,CAAC,EAAE;YACjD,OAAO;SACP;QAgBD,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;YAChC,OAAO,CAAC,cAAc,GAAG,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,CAAC;YACjD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,wBAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACzC;IACF,CAAC;CACD,CAAC","sourcesContent":["import { GameTag } from '@firestone-hs/reference-data';\r\nimport { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { CastSpellInput, OnBeforeTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const BubbleCrown: OnBeforeTavernSpellCastCard = {\r\n\tcardIds: [CardIds.BubbleCrown_BG35_MagicItem_920],\r\n\t// This seems to trigger before the first spell is cast\r\n\t// https://replays.firestoneapp.com/?reviewId=2503f562-e0e1-4564-8218-d36cbf09cbb0&turn=17&action=2\r\n\tonBeforeTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\t// It has already triggered once\r\n\t\tif (trinket.tags?.[GameTag.TRIGGER_VISUAL] === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// When we get the board state from the opponent, sometimes we have the trinket at 0, and this seems to mean that\r\n\t\t// it will proc on the next spell (eg https://replays.firestoneapp.com/?reviewId=0cff125a-7419-40c6-8c50-edfba59d1559&turn=17&action=4)\r\n\t\t/*\r\nD 20:39:27.1063034 PowerTaskList.DebugPrintPower() - SHOW_ENTITY - Updating Entity=[entityName=泡泡王冠 id=6141 zone=SETASIDE zonePos=0 cardId=BG35_MagicItem_920 player=4] CardID=BG35_MagicItem_920\r\nD 20:39:27.1063034 PowerTaskList.DebugPrintPower() - tag=TAG_SCRIPT_DATA_NUM_1 value=0\r\n...\r\nD 20:39:27.1643122 GameState.DebugPrintPower() - BLOCK_START BlockType=TRIGGER Entity=[entityName=赶潮纳迦 id=6449 zone=PLAY zonePos=5 cardId=BG34_920 player=12] EffectCardId=System.Collections.Generic.List`1[System.String] EffectIndex=0 Target=0 SubOption=-1 TriggerKeyword=DEATHRATTLE\r\n...\r\nD 20:39:27.1643122 GameState.DebugPrintPower() - BLOCK_START BlockType=TRIGGER Entity=[entityName=泡泡王冠 id=6141 zone=PLAY zonePos=0 cardId=BG35_MagicItem_920 player=12] EffectCardId=System.Collections.Generic.List`1[System.String] EffectIndex=0 Target=0 SubOption=-1 TriggerKeyword=TRIGGER_VISUAL\r\n...\r\nD 20:39:27.1643122 GameState.DebugPrintPower() - TAG_CHANGE Entity=wellwelc tag=TAVERN_SPELL_ATTACK_INCREASE value=5 \r\nD 20:39:27.1643122 GameState.DebugPrintPower() - TAG_CHANGE Entity=wellwelc tag=TAVERN_SPELL_HEALTH_INCREASE value=5 \r\n...\r\n\t\t*/\r\n\t\t// I'm not yet sure if this only happens under specific conditions\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 0) - 1;\r\n\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\ttrinket.scriptDataNum1 = 10;\r\n\t\t\tinput.hero.globalInfo.TavernSpellAttackBuff += 4;\r\n\t\t\tinput.hero.globalInfo.TavernSpellHealthBuff += 4;\r\n\t\t\ttrinket.tags[GameTag.TRIGGER_VISUAL] = 0;\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -4,12 +4,15 @@ exports.CopperCoil = void 0;
4
4
  exports.CopperCoil = {
5
5
  cardIds: ["BG35_MagicItem_300", "BG35_MagicItem_300t"],
6
6
  onBeforeMagnetize: (trinket, input) => {
7
- var _a, _b;
8
- const additionalBuff = trinket.cardId === "BG35_MagicItem_300" ? 1 : 3;
9
- const currentBuff = (_a = trinket.scriptDataNum1) !== null && _a !== void 0 ? _a : additionalBuff;
10
- input.magnetizedCard.attack += currentBuff;
11
- input.magnetizedCard.health += currentBuff;
12
- trinket.scriptDataNum1 = ((_b = trinket.scriptDataNum1) !== null && _b !== void 0 ? _b : 0) + additionalBuff;
7
+ var _a, _b, _c, _d;
8
+ const additionalAttackBuff = trinket.cardId === "BG35_MagicItem_300" ? 2 : 3;
9
+ const additionalHealthBuff = trinket.cardId === "BG35_MagicItem_300" ? 1 : 3;
10
+ const currentAttackBuff = (_a = trinket.scriptDataNum1) !== null && _a !== void 0 ? _a : additionalAttackBuff;
11
+ const currentHealthBuff = (_b = trinket.scriptDataNum2) !== null && _b !== void 0 ? _b : additionalHealthBuff;
12
+ input.magnetizedCard.attack += currentAttackBuff;
13
+ input.magnetizedCard.health += currentHealthBuff;
14
+ trinket.scriptDataNum1 = ((_c = trinket.scriptDataNum1) !== null && _c !== void 0 ? _c : 0) + additionalAttackBuff;
15
+ trinket.scriptDataNum2 = ((_d = trinket.scriptDataNum2) !== null && _d !== void 0 ? _d : 0) + additionalHealthBuff;
13
16
  },
14
17
  };
15
18
  //# sourceMappingURL=copper-coil.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"copper-coil.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/copper-coil.ts"],"names":[],"mappings":";;;AAKa,QAAA,UAAU,GAA0B;IAChD,OAAO,EAAE,6CAA+F;IACxG,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAA6B,EAAE,EAAE;;QAC3E,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,WAAW,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,cAAc,CAAC;QAC7D,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,WAAW,CAAC;QAC3C,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,cAAc,CAAC;IACzE,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const CopperCoil: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.CopperCoil_BG35_MagicItem_300, CardIds.CopperCoil_CopperCoilToken_BG35_MagicItem_300t],\r\n\tonBeforeMagnetize: (trinket: BoardTrinket, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst additionalBuff = trinket.cardId === CardIds.CopperCoil_BG35_MagicItem_300 ? 1 : 3;\r\n\t\tconst currentBuff = trinket.scriptDataNum1 ?? additionalBuff;\r\n\t\tinput.magnetizedCard.attack += currentBuff;\r\n\t\tinput.magnetizedCard.health += currentBuff;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 0) + additionalBuff;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"copper-coil.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/copper-coil.ts"],"names":[],"mappings":";;;AAKa,QAAA,UAAU,GAA0B;IAChD,OAAO,EAAE,6CAA+F;IACxG,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAA6B,EAAE,EAAE;;QAC3E,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,iBAAiB,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,oBAAoB,CAAC;QACzE,MAAM,iBAAiB,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,oBAAoB,CAAC;QACzE,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,iBAAiB,CAAC;QACjD,KAAK,CAAC,cAAc,CAAC,MAAM,IAAI,iBAAiB,CAAC;QACjD,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,oBAAoB,CAAC;QAC9E,OAAO,CAAC,cAAc,GAAG,CAAC,MAAA,OAAO,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,oBAAoB,CAAC;IAC/E,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnBeforeMagnetizeInput } from '../../../simulation/magnetize';\r\nimport { OnBeforeMagnetizeCard } from '../../card.interface';\r\n\r\nexport const CopperCoil: OnBeforeMagnetizeCard = {\r\n\tcardIds: [CardIds.CopperCoil_BG35_MagicItem_300, CardIds.CopperCoil_CopperCoilToken_BG35_MagicItem_300t],\r\n\tonBeforeMagnetize: (trinket: BoardTrinket, input: OnBeforeMagnetizeInput) => {\r\n\t\tconst additionalAttackBuff = trinket.cardId === CardIds.CopperCoil_BG35_MagicItem_300 ? 2 : 3;\r\n\t\tconst additionalHealthBuff = trinket.cardId === CardIds.CopperCoil_BG35_MagicItem_300 ? 1 : 3;\r\n\t\tconst currentAttackBuff = trinket.scriptDataNum1 ?? additionalAttackBuff;\r\n\t\tconst currentHealthBuff = trinket.scriptDataNum2 ?? additionalHealthBuff;\r\n\t\tinput.magnetizedCard.attack += currentAttackBuff;\r\n\t\tinput.magnetizedCard.health += currentHealthBuff;\r\n\t\ttrinket.scriptDataNum1 = (trinket.scriptDataNum1 ?? 0) + additionalAttackBuff;\r\n\t\ttrinket.scriptDataNum2 = (trinket.scriptDataNum2 ?? 0) + additionalHealthBuff;\r\n\t},\r\n};\r\n"]}
@@ -14,8 +14,8 @@ exports.LorewalkerScroll = {
14
14
  if (!input.target || input.target.health <= 0 || input.target.definitelyDead)
15
15
  return;
16
16
  const isGreater = trinket.cardId === "BG30_MagicItem_422t";
17
- const attack = isGreater ? 10 : 2;
18
- const health = isGreater ? 10 : 2;
17
+ const attack = isGreater ? 10 : 4;
18
+ const health = isGreater ? 10 : 4;
19
19
  (0, stats_1.modifyStats)(input.target, trinket, attack, health, input.board, input.hero, input.gameState);
20
20
  },
21
21
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lorewalker-scroll.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/lorewalker-scroll.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAG3C,QAAA,gBAAgB,GAA0B;IACtD,OAAO,EAAE;;;KAGR;IACD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO;QACrF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,0BAAuE,CAAC;QACxG,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAA,mBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const LorewalkerScroll: OnTavernSpellCastCard = {\r\n\tcardIds: [\r\n\t\tCardIds.LorewalkerScroll_BG30_MagicItem_422,\r\n\t\tCardIds.LorewalkerScroll_LorewalkerScrollToken_BG30_MagicItem_422t,\r\n\t],\r\n\tonTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!input.target || input.target.health <= 0 || input.target.definitelyDead) return;\r\n\t\tconst isGreater = trinket.cardId === CardIds.LorewalkerScroll_LorewalkerScrollToken_BG30_MagicItem_422t;\r\n\t\tconst attack = isGreater ? 10 : 2;\r\n\t\tconst health = isGreater ? 10 : 2;\r\n\t\tmodifyStats(input.target, trinket, attack, health, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"lorewalker-scroll.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/lorewalker-scroll.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAG3C,QAAA,gBAAgB,GAA0B;IACtD,OAAO,EAAE;;;KAGR;IACD,iBAAiB,EAAE,CAAC,OAAqB,EAAE,KAAqB,EAAE,EAAE;QACnE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE;YAChC,OAAO;SACP;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO;QACrF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,0BAAuE,CAAC;QACxG,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,IAAA,mBAAW,EAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { CastSpellInput, OnTavernSpellCastCard } from '../../card.interface';\r\n\r\nexport const LorewalkerScroll: OnTavernSpellCastCard = {\r\n\tcardIds: [\r\n\t\tCardIds.LorewalkerScroll_BG30_MagicItem_422,\r\n\t\tCardIds.LorewalkerScroll_LorewalkerScrollToken_BG30_MagicItem_422t,\r\n\t],\r\n\tonTavernSpellCast: (trinket: BoardTrinket, input: CastSpellInput) => {\r\n\t\tif (input.source !== input.hero) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!input.target || input.target.health <= 0 || input.target.definitelyDead) return;\r\n\t\tconst isGreater = trinket.cardId === CardIds.LorewalkerScroll_LorewalkerScrollToken_BG30_MagicItem_422t;\r\n\t\tconst attack = isGreater ? 10 : 4;\r\n\t\tconst health = isGreater ? 10 : 4;\r\n\t\tmodifyStats(input.target, trinket, attack, health, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LuckyTabby = void 0;
4
- const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
4
  const utils_1 = require("../../../services/utils");
5
+ const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
6
6
  exports.LuckyTabby = {
7
7
  cardIds: ["BG30_MagicItem_931"],
8
8
  onAfterFriendlyMinionDeath: (listener, input) => {
9
9
  const trinket = listener;
10
10
  if (!trinket.scriptDataNum1) {
11
- trinket.scriptDataNum1 = 6;
11
+ trinket.scriptDataNum1 = 7;
12
12
  }
13
13
  trinket.scriptDataNum1--;
14
14
  if (trinket.scriptDataNum1 === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"lucky-tabby.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/lucky-tabby.ts"],"names":[],"mappings":";;;AAIA,qEAAmE;AACnE,mDAAqD;AAGxC,QAAA,UAAU,GAAmC;IACzD,OAAO,EAAE,sBAAuC;IAChD,0BAA0B,EAAE,CAAC,QAAoC,EAAE,KAAsC,EAAE,EAAE;QAC5G,MAAM,OAAO,GAAG,QAAwB,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC5B,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACtE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACxE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { OnAfterFriendlyMinionDeathInput } from '../../../simulation/attack';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { OnAfterFriendlyMinionDeathCard } from '../../card.interface';\r\n\r\nexport const LuckyTabby: OnAfterFriendlyMinionDeathCard = {\r\n\tcardIds: [CardIds.LuckyTabby_BG30_MagicItem_931],\r\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => {\r\n\t\tconst trinket = listener as BoardTrinket;\r\n\t\tif (!trinket.scriptDataNum1) {\r\n\t\t\ttrinket.scriptDataNum1 = 6;\r\n\t\t}\r\n\t\ttrinket.scriptDataNum1--;\r\n\t\tif (trinket.scriptDataNum1 === 0) {\r\n\t\t\tconst randomBeast = pickRandom(input.gameState.cardsData.beastSpawns);\r\n\t\t\taddCardsInHand(input.hero, input.board, [randomBeast], input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"lucky-tabby.js","sourceRoot":"","sources":["../../../../src/cards/impl/trinket/lucky-tabby.ts"],"names":[],"mappings":";;;AAGA,mDAAqD;AAErD,qEAAmE;AAGtD,QAAA,UAAU,GAAmC;IACzD,OAAO,EAAE,sBAAuC;IAChD,0BAA0B,EAAE,CAAC,QAAoC,EAAE,KAAsC,EAAE,EAAE;QAC5G,MAAM,OAAO,GAAG,QAAwB,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAC5B,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,CAAC,cAAc,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE;YACjC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACtE,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SACxE;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardTrinket } from '../../../bgs-player-entity';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { CardIds } from '../../../services/card-ids';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { OnAfterFriendlyMinionDeathInput } from '../../../simulation/attack';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { OnAfterFriendlyMinionDeathCard } from '../../card.interface';\r\n\r\nexport const LuckyTabby: OnAfterFriendlyMinionDeathCard = {\r\n\tcardIds: [CardIds.LuckyTabby_BG30_MagicItem_931],\r\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => {\r\n\t\tconst trinket = listener as BoardTrinket;\r\n\t\tif (!trinket.scriptDataNum1) {\r\n\t\t\ttrinket.scriptDataNum1 = 7;\r\n\t\t}\r\n\t\ttrinket.scriptDataNum1--;\r\n\t\tif (trinket.scriptDataNum1 === 0) {\r\n\t\t\tconst randomBeast = pickRandom(input.gameState.cardsData.beastSpawns);\r\n\t\t\taddCardsInHand(input.hero, input.board, [randomBeast], input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -9,7 +9,7 @@ exports.PowderKeg = {
9
9
  startOfCombatTiming: 'start-of-combat',
10
10
  startOfCombat: (trinket, input) => {
11
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));
12
- const targets = (0, utils_1.pickMultipleRandomAlive)(pirates, 2);
12
+ const targets = (0, utils_1.pickMultipleRandomAlive)(pirates, 3);
13
13
  for (const target of targets) {
14
14
  target.enchantments.push({
15
15
  cardId: 'PowderKegEnchantment',