@firestone-hs/simulate-bgs-battle 1.1.411 → 1.1.412

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.
@@ -1,4 +1,4 @@
1
1
  import { BgsPlayerEntity } from '../bgs-player-entity';
2
2
  import { BoardEntity } from '../board-entity';
3
3
  import { FullGameState } from './internal-game-state';
4
- export declare const onEntityDamaged: (entity: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, damage: number, gameState: FullGameState) => void;
4
+ export declare const onEntityDamaged: (entity: BoardEntity, board: BoardEntity[], hero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, damage: number, gameState: FullGameState) => readonly BoardEntity[];
@@ -96,7 +96,8 @@ const onEntityDamaged = (entity, board, hero, otherBoard, otherHero, damage, gam
96
96
  break;
97
97
  }
98
98
  handleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);
99
- (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero, entity, board.length - (board.indexOf(entity) + 1), otherBoard, otherHero, gameState);
99
+ const finalSpawns = (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero, entity, board.length - (board.indexOf(entity) + 1), otherBoard, otherHero, gameState);
100
+ return finalSpawns;
100
101
  };
101
102
  exports.onEntityDamaged = onEntityDamaged;
102
103
  const handleOtherEntityEffects = (entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState) => {
@@ -1 +1 @@
1
- {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, grantStatsToMinionsOfEachType, hasCorrectTribe, updateDivineShield } from '../utils';\r\nimport { dealDamageToRandomEnemy } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyAttack, modifyHealth, onStatsUpdate } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tconst wingedChimeraModifier = entity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\tentity,\r\n\t\t\t\tboard,\r\n\t\t\t\thero,\r\n\t\t\t\twingedChimeraModifier * 2,\r\n\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846:\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t\tconst treantModifier = entity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t\taddStatsToBoard(entity, board, hero, treantModifier * 1, 0, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(entity, board, true, gameState.allCards);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = entity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyAttack(entity, trustyPupStats, board, hero, gameState);\r\n\t\t\tonStatsUpdate(entity, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tentity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tentity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CraftyAranasi_BG29_821:\r\n\t\tcase CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t\tconst aranasiLoops = entity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t\t\tdealDamageToRandomEnemy(otherBoard, otherHero, entity, 5, board, hero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MarineMatriarch_BG29_610:\r\n\t\tcase CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t\tconst winterfinnerStats = entity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t\tconst minionInHand = pickRandom(\r\n\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (!!minionInHand) {\r\n\t\t\t\tminionInHand.attack += winterfinnerStats;\r\n\t\t\t\tminionInHand.health += winterfinnerStats;\r\n\t\t\t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590:\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LongJohnCopper_BG29_831:\r\n\t\tcase CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160:\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tperformEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tentity,\r\n\t\tboard.length - (board.indexOf(entity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, Race.BEAST, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tmodifyAttack(target, stats, board, hero, gameState);\r\n\t\t\t\tmodifyHealth(target, stats, board, hero, gameState);\r\n\t\t\t\tonStatsUpdate(target, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, target, board, hero, otherHero);\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 4 : 2;\r\n\t\t\t\tmodifyHealth(e, stats, board, hero, gameState);\r\n\t\t\t\tonStatsUpdate(e, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, e, board, hero, otherHero);\r\n\t\t\t});\r\n\t}\r\n};\r\n"]}
1
+ {"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, grantStatsToMinionsOfEachType, hasCorrectTribe, updateDivineShield } from '../utils';\r\nimport { dealDamageToRandomEnemy } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyAttack, modifyHealth, onStatsUpdate } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tconst wingedChimeraModifier = entity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\tentity,\r\n\t\t\t\tboard,\r\n\t\t\t\thero,\r\n\t\t\t\twingedChimeraModifier * 2,\r\n\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846:\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t\tconst treantModifier = entity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t\taddStatsToBoard(entity, board, hero, treantModifier * 1, 0, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(entity, board, true, gameState.allCards);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = entity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyAttack(entity, trustyPupStats, board, hero, gameState);\r\n\t\t\tonStatsUpdate(entity, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tentity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tentity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CraftyAranasi_BG29_821:\r\n\t\tcase CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t\tconst aranasiLoops = entity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t\t\tdealDamageToRandomEnemy(otherBoard, otherHero, entity, 5, board, hero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MarineMatriarch_BG29_610:\r\n\t\tcase CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t\tconst winterfinnerStats = entity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t\tconst minionInHand = pickRandom(\r\n\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (!!minionInHand) {\r\n\t\t\t\tminionInHand.attack += winterfinnerStats;\r\n\t\t\t\tminionInHand.health += winterfinnerStats;\r\n\t\t\t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590:\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LongJohnCopper_BG29_831:\r\n\t\tcase CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160:\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tentity,\r\n\t\tboard.length - (board.indexOf(entity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, Race.BEAST, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tmodifyAttack(target, stats, board, hero, gameState);\r\n\t\t\t\tmodifyHealth(target, stats, board, hero, gameState);\r\n\t\t\t\tonStatsUpdate(target, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, target, board, hero, otherHero);\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 4 : 2;\r\n\t\t\t\tmodifyHealth(e, stats, board, hero, gameState);\r\n\t\t\t\tonStatsUpdate(e, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, e, board, hero, otherHero);\r\n\t\t\t});\r\n\t}\r\n};\r\n"]}
@@ -28,7 +28,7 @@ const computeDeathrattleMultiplier = (board, boardHero, deadEntity, sharedState)
28
28
  };
29
29
  exports.computeDeathrattleMultiplier = computeDeathrattleMultiplier;
30
30
  const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, deadEntityIndexFromRight, otherBoard, otherBoardHero, gameState) => {
31
- var _a, _b, _c;
31
+ var _a, _b, _c, _d;
32
32
  const multiplier = (0, exports.computeDeathrattleMultiplier)(boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, gameState.sharedState);
33
33
  const deathrattleTriggeredInput = {
34
34
  boardWithDeadEntity,
@@ -289,7 +289,13 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
289
289
  const fireDancerLoops = deadEntity.cardId === "BG29_843_G" ? 2 : 1;
290
290
  for (let i = 0; i < multiplier; i++) {
291
291
  for (let j = 0; j < fireDancerLoops; j++) {
292
- (0, exports.dealDamageToAllMinions)(otherBoard, otherBoardHero, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, 1, gameState);
292
+ const minionsToDamage = [...otherBoard, ...boardWithDeadEntity];
293
+ for (const target of minionsToDamage) {
294
+ const isSameSide = target.friendly === deadEntity.friendly;
295
+ const board = isSameSide ? boardWithDeadEntity : otherBoard;
296
+ const hero = isSameSide ? boardWithDeadEntityHero : otherBoardHero;
297
+ (0, attack_1.dealDamageToEnemy)(target, board, hero, deadEntity, 1, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
298
+ }
293
299
  }
294
300
  (0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
295
301
  }
@@ -321,7 +327,13 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
321
327
  case "TB_BaconUps_118":
322
328
  const damage = deadEntityCardId === "TB_BaconUps_118" ? 2 : 1;
323
329
  for (let i = 0; i < multiplier; i++) {
324
- (0, exports.dealDamageToAllMinions)(boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, deadEntity, damage, gameState);
330
+ const minionsToDamage = [...otherBoard, ...boardWithDeadEntity];
331
+ for (const target of minionsToDamage) {
332
+ const isSameSide = target.friendly === deadEntity.friendly;
333
+ const board = isSameSide ? boardWithDeadEntity : otherBoard;
334
+ const hero = isSameSide ? boardWithDeadEntityHero : otherBoardHero;
335
+ (0, attack_1.dealDamageToEnemy)(target, board, hero, deadEntity, damage, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
336
+ }
325
337
  (0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
326
338
  }
327
339
  break;
@@ -330,7 +342,13 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
330
342
  const loops = deadEntityCardId === "BG_DAL_775_G" ? 2 : 1;
331
343
  for (let i = 0; i < multiplier; i++) {
332
344
  for (let j = 0; j < loops; j++) {
333
- (0, exports.dealDamageToAllMinions)(boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, deadEntity, 3, gameState);
345
+ const minionsToDamage = [...otherBoard, ...boardWithDeadEntity];
346
+ for (const target of minionsToDamage) {
347
+ const isSameSide = target.friendly === deadEntity.friendly;
348
+ const board = isSameSide ? boardWithDeadEntity : otherBoard;
349
+ const hero = isSameSide ? boardWithDeadEntityHero : otherBoardHero;
350
+ (0, attack_1.dealDamageToEnemy)(target, board, hero, deadEntity, 3, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
351
+ }
334
352
  }
335
353
  (0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
336
354
  }
@@ -498,8 +516,15 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
498
516
  const spikedSaviorLoops = deadEntity.cardId === "BG29_808_G" ? 2 : 1;
499
517
  for (let i = 0; i < multiplier; i++) {
500
518
  for (let j = 0; j < spikedSaviorLoops; j++) {
501
- (0, exports.dealDamageToAllMinions)(boardWithDeadEntity, boardWithDeadEntityHero, [], otherBoardHero, deadEntity, 1, gameState);
502
- (0, utils_2.addStatsToBoard)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, 0, 1, gameState);
519
+ const targetBoard = [...boardWithDeadEntity];
520
+ for (const entity of targetBoard) {
521
+ (0, attack_1.dealDamageToEnemy)(entity, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, 1, otherBoard, otherBoardHero, gameState);
522
+ }
523
+ for (const entity of targetBoard) {
524
+ (0, stats_1.modifyHealth)(entity, 1, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
525
+ (0, stats_1.onStatsUpdate)(entity, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
526
+ (_b = gameState.spectator) === null || _b === void 0 ? void 0 : _b.registerPowerTarget(deadEntity, entity, boardWithDeadEntity, null, null);
527
+ }
503
528
  }
504
529
  (0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
505
530
  }
@@ -507,8 +532,8 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
507
532
  }
508
533
  }
509
534
  let enchantments = [
510
- ...((_b = deadEntity.enchantments) !== null && _b !== void 0 ? _b : []),
511
- ...((_c = deadEntity.rememberedDeathrattles) !== null && _c !== void 0 ? _c : []),
535
+ ...((_c = deadEntity.enchantments) !== null && _c !== void 0 ? _c : []),
536
+ ...((_d = deadEntity.rememberedDeathrattles) !== null && _d !== void 0 ? _d : []),
512
537
  ].sort((a, b) => a.timing - b.timing);
513
538
  const maxNumberOfGroups = 12;
514
539
  const enchantmentGroups = (0, utils_1.groupByFunction)((enchantment) => enchantment.cardId)(enchantments);
@@ -843,7 +868,7 @@ const applyMonstrosity = (monstrosity, deadEntities, boardWithDeadEntities, boar
843
868
  };
844
869
  exports.applyMonstrosity = applyMonstrosity;
845
870
  const rememberDeathrattles = (fish, deadEntities, cardsData, allCards, sharedState) => {
846
- var _a;
871
+ var _a, _b;
847
872
  const validDeathrattles = deadEntities
848
873
  .filter((entity) => cardsData.validDeathrattles.includes(entity.cardId) || (0, utils_2.isFish)(entity) || (0, utils_2.isPilotedWhirlOTron)(entity))
849
874
  .map((entity) => ({ cardId: entity.cardId, repeats: 1, timing: sharedState.currentEntityId++ }));
@@ -872,6 +897,9 @@ const rememberDeathrattles = (fish, deadEntities, cardsData, allCards, sharedSta
872
897
  else {
873
898
  fish.rememberedDeathrattles = [...(fish.rememberedDeathrattles || []), ...newDeathrattles];
874
899
  }
900
+ if ((_b = fish.rememberedDeathrattles) === null || _b === void 0 ? void 0 : _b.length) {
901
+ fish.rememberedDeathrattles.sort((a, b) => a.timing - b.timing);
902
+ }
875
903
  };
876
904
  exports.rememberDeathrattles = rememberDeathrattles;
877
905
  const removeOldMurkEyeAttack = (boardWithDeadEntity, hero, gameState) => {