@firestone-hs/simulate-bgs-battle 1.1.292 → 1.1.293
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.
|
@@ -175,7 +175,6 @@ const handleAvenge = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity,
|
|
|
175
175
|
case "BG26_157_G":
|
|
176
176
|
const bristlebachMultiplier = avenger.cardId === "BG26_157_G" ? 2 : 1;
|
|
177
177
|
for (let i = 0; i < bristlebachMultiplier; i++) {
|
|
178
|
-
console.log('playing blood gems on bristlebach');
|
|
179
178
|
for (const entity of boardWithDeadEntity) {
|
|
180
179
|
if ((0, utils_2.hasCorrectTribe)(entity, reference_data_1.Race.QUILBOAR, allCards)) {
|
|
181
180
|
(0, blood_gems_1.playBloodGemsOn)(entity, 1, boardWithDeadEntity, boardWithDeadEntityHero, allCards, spectator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avenge.js","sourceRoot":"","sources":["../../src/simulation/avenge.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllCardsService, CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData } from '../cards/cards-data';\r\nimport { pickRandom } from '../services/utils';\r\nimport {\r\n\taddCardsInHand,\r\n\taddStatsToBoard,\r\n\tafterStatsUpdate,\r\n\tgetRandomAliveMinion,\r\n\tgetRandomMinionWithHighestHealth,\r\n\tgrantRandomStats,\r\n\tgrantStatsToMinionsOfEachType,\r\n\thasCorrectTribe,\r\n\tisMinionGolden,\r\n\tmakeMinionGolden,\r\n\tmodifyAttack,\r\n\tmodifyHealth,\r\n} from '../utils';\r\nimport { dealDamageToEnemy, getNeighbours, performEntitySpawns } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const applyAvengeEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\tupdateAvengeCounters(boardWithDeadEntity, boardWithDeadEntityHero);\r\n\tconst avengers = boardWithDeadEntity\r\n\t\t.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0)\r\n\t\t// Get Tony to be processed first, because of the \"when turned golden, the minion ignores the death for the avenge counter\"\r\n\t\t// behavior\r\n\t\t.sort((a, b) => {\r\n\t\t\tif (a.cardId === CardIds.TonyTwoTusk_BG21_031 || a.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif (b.cardId === CardIds.TonyTwoTusk_BG21_031 || b.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t});\r\n\tfor (const avenger of avengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\t// console.log('updating dead entity avenge counter', boardWithDeadEntityHero.avengeCurrent, stringifySimpleCard(deadEntity, allCards));\r\n\tconst heroAvenger = !!boardWithDeadEntityHero.avengeDefault && boardWithDeadEntityHero.avengeCurrent === 0;\r\n\tif (heroAvenger) {\r\n\t\t// console.log(\r\n\t\t// \t'Hero is an avenger',\r\n\t\t// \tboardWithDeadEntityHero.avengeCurrent,\r\n\t\t// \tboardWithDeadEntityHero.avengeDefault,\r\n\t\t// \tboardWithDeadEntityHero.heroPowerId,\r\n\t\t// );\r\n\t\thandleHeroAvenge(\r\n\t\t\tdeadEntity,\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\r\n\tconst questRewardAvengers = boardWithDeadEntityHero.questRewardEntities.filter(\r\n\t\t(e) => !!e.avengeDefault && e.avengeCurrent <= 0,\r\n\t);\r\n\tfor (const avenger of questRewardAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\r\n\tperformEntitySpawns(\r\n\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tallCards,\r\n\t\tcardsData,\r\n\t\tsharedState,\r\n\t\tspectator,\r\n\t);\r\n};\r\n\r\nconst updateAvengeCounters = (board: readonly BoardEntity[], boardWithDeadEntityHero: BgsPlayerEntity) => {\r\n\tfor (const entity of board) {\r\n\t\tif (!!entity.avengeDefault) {\r\n\t\t\tentity.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\tif (!!boardWithDeadEntityHero.avengeDefault) {\r\n\t\tboardWithDeadEntityHero.avengeCurrent -= 1;\r\n\t}\r\n\r\n\tfor (const reward of boardWithDeadEntityHero.questRewardEntities) {\r\n\t\tif (!!reward.avengeDefault) {\r\n\t\t\treward.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAvenge = (\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tavenger: BoardEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tallCards: AllCardsService,\r\n) => {\r\n\t// Don't forget to update the avenge data in cards-data\r\n\tswitch (avenger.cardId) {\r\n\t\tcase CardIds.BirdBuddy_BG21_002:\r\n\t\t\taddStatsToBoard(avenger, boardWithDeadEntity, 1, 1, allCards, spectator, 'BEAST');\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BirdBuddy_BG21_002_G:\r\n\t\t\taddStatsToBoard(avenger, boardWithDeadEntity, 2, 2, allCards, spectator, 'BEAST');\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BuddingGreenthumb_BG21_030:\r\n\t\tcase CardIds.BuddingGreenthumb_BG21_030_G:\r\n\t\t\tconst neighbours = getNeighbours(boardWithDeadEntity, avenger);\r\n\t\t\tneighbours.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tavenger.cardId === CardIds.BuddingGreenthumb_BG21_030_G ? 4 : 2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t);\r\n\t\t\t\tmodifyHealth(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tavenger.cardId === CardIds.BuddingGreenthumb_BG21_030_G ? 2 : 1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, entity, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\t// case CardIds.FrostwolfLieutenant:\r\n\t\t// case CardIds.FrostwolfLieutenantBattlegrounds:\r\n\t\t// \taddStatsToBoard(\r\n\t\t// \t\tavenger,\r\n\t\t// \t\tboardWithDeadEntity,\r\n\t\t// \t\tavenger.cardId === CardIds.FrostwolfLieutenantBattlegrounds ? 2 : 1,\r\n\t\t// \t\t0,\r\n\t\t// \t\tallCards,\r\n\t\t// \t\tspectator,\r\n\t\t// \t);\r\n\t\t// \tbreak;\r\n\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\taddStatsToBoard(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t0,\r\n\t\t\t\tavenger.cardId === CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G ? 2 : 1,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tconst target1 = grantRandomStats(avenger, boardWithDeadEntity, 6, 6, Race.BEAST, true, allCards, spectator);\r\n\t\t\tif (!!target1) {\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target1, boardWithDeadEntity);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\tconst target2 = grantRandomStats(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t12,\r\n\t\t\t\t12,\r\n\t\t\t\tRace.BEAST,\r\n\t\t\t\ttrue,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tif (!!target2) {\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target2, boardWithDeadEntity);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\tconst doomsayerCardsToAddQuantity = avenger.cardId === CardIds.ImpatientDoomsayer_BG21_007_G ? 2 : 1;\r\n\t\t\tconst doomsayerCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < doomsayerCardsToAddQuantity; i++) {\r\n\t\t\t\tdoomsayerCardsToAdd.push(pickRandom(cardsData.demonSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, doomsayerCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, [null]);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.WitchwingNestmatron_BG21_038:\r\n\t\tcase CardIds.WitchwingNestmatron_BG21_038_G:\r\n\t\t\tconst nestmatronToAddQuantity = avenger.cardId === CardIds.WitchwingNestmatron_BG21_038_G ? 2 : 1;\r\n\t\t\tconst nestmatronCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < nestmatronToAddQuantity; i++) {\r\n\t\t\t\tnestmatronCardsToAdd.push(pickRandom(cardsData.brannEpicEggSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, nestmatronCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Thorncaller_BG20_105:\r\n\t\tcase CardIds.Thorncaller_BG20_105_G:\r\n\t\t\tconst thorncallerToAddQuantity = avenger.cardId === CardIds.Thorncaller_BG20_105_G ? 2 : 1;\r\n\t\t\tconst thorncallerCardsToAdd = Array(thorncallerToAddQuantity).fill(CardIds.BloodGem);\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, thorncallerCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Sisefin_BG21_009:\r\n\t\tcase CardIds.Sisefin_BG21_009_G:\r\n\t\t\tconst poisonousIterations = avenger.cardId === CardIds.Sisefin_BG21_009_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < poisonousIterations; i++) {\r\n\t\t\t\tconst validTargets = boardWithDeadEntity.filter((e) => !e.poisonous && !e.venomous);\r\n\t\t\t\tconst murloc = getRandomAliveMinion(validTargets, Race.MURLOC, allCards);\r\n\t\t\t\tif (murloc) {\r\n\t\t\t\t\tmurloc.venomous = true;\r\n\t\t\t\t\tspectator.registerPowerTarget(avenger, murloc, boardWithDeadEntity);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ScrapScraper_BG26_148:\r\n\t\tcase CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tconst scraperToAddQuantity = avenger.cardId === CardIds.ScrapScraper_BG26_148_G ? 2 : 1;\r\n\t\t\tconst scraperCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < scraperToAddQuantity; i++) {\r\n\t\t\t\tscraperCardsToAdd.push(pickRandom(cardsData.scrapScraperSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, scraperCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\t// This can be null if the avenge triggers when the last enemy minion dies as well\r\n\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\tspectator.registerPowerTarget(avenger, target, otherBoard);\r\n\t\t\tdealDamageToEnemy(\r\n\t\t\t\ttarget,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tavenger,\r\n\t\t\t\t5,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\tallCards,\r\n\t\t\t\tcardsData,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target, otherBoard);\r\n\t\t\t\tdealDamageToEnemy(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t5,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tcardsData,\r\n\t\t\t\t\tsharedState,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\tconst nonGoldenMinions = boardWithDeadEntity\r\n\t\t\t\t.filter((e) => e.entityId !== avenger.entityId)\r\n\t\t\t\t.filter((e) => {\r\n\t\t\t\t\tconst ref = allCards.getCard(e.cardId);\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t!!ref.battlegroundsPremiumDbfId && !!allCards.getCardFromDbfId(ref.battlegroundsPremiumDbfId).id\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, allCards);\r\n\t\t\tif (pirate) {\r\n\t\t\t\tmakeMinionGolden(pirate, avenger, boardWithDeadEntity, allCards, spectator);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\tconst nonGoldenMinions = boardWithDeadEntity.filter((e) => !isMinionGolden(e, allCards));\r\n\t\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, allCards);\r\n\t\t\t\tif (pirate) {\r\n\t\t\t\t\tmakeMinionGolden(pirate, avenger, boardWithDeadEntity, allCards, spectator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.GhoulOfTheFeast_BG25_002:\r\n\t\tcase CardIds.GhoulOfTheFeast_BG25_002_G:\r\n\t\t\tconst ghoulMultiplier = avenger.cardId === CardIds.GhoulOfTheFeast_BG25_002_G ? 2 : 1;\r\n\t\t\tgrantStatsToMinionsOfEachType(avenger, boardWithDeadEntity, ghoulMultiplier * 3, 0, allCards, spectator);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Bristlebach_BG26_157:\r\n\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\tconst bristlebachMultiplier = avenger.cardId === CardIds.Bristlebach_BG26_157_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < bristlebachMultiplier; i++) {\r\n\t\t\t\tconsole.log('playing blood gems on bristlebach');\r\n\t\t\t\tfor (const entity of boardWithDeadEntity) {\r\n\t\t\t\t\tif (hasCorrectTribe(entity, Race.QUILBOAR, allCards)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(entity, 1, boardWithDeadEntity, boardWithDeadEntityHero, allCards, spectator);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\tconst abominationMultiplier = avenger.cardId === CardIds.HungeringAbomination_BG25_014_G ? 2 : 1;\r\n\t\t\tmodifyAttack(avenger, abominationMultiplier * 1, boardWithDeadEntity, allCards);\r\n\t\t\tmodifyHealth(avenger, abominationMultiplier * 1, boardWithDeadEntity, allCards);\r\n\t\t\tafterStatsUpdate(avenger, boardWithDeadEntity, allCards);\r\n\t\t\tspectator.registerPowerTarget(avenger, avenger, boardWithDeadEntity);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ShadowyConstruct_BG25_HERO_103_Buddy:\r\n\t\tcase CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G:\r\n\t\t\tconst neighboursShadowy = getNeighbours(boardWithDeadEntity, null, deadEntityIndexFromRight);\r\n\t\t\tconst multiplierShadowy = avenger.cardId === CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G ? 2 : 1;\r\n\t\t\tneighboursShadowy.forEach((neighbour) => {\r\n\t\t\t\tmodifyAttack(neighbour, multiplierShadowy * 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tmodifyHealth(neighbour, multiplierShadowy * 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tafterStatsUpdate(neighbour, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, neighbour, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.IceSickle:\r\n\t\t\tgrantRandomStats(avenger, boardWithDeadEntityHero.hand, 3, 0, null, true, allCards, null);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tconst highestHealthMinion = [...otherBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\tdealDamageToEnemy(\r\n\t\t\t\thighestHealthMinion,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tavenger,\r\n\t\t\t\t10,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\tallCards,\r\n\t\t\t\tcardsData,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tspectator.registerPowerTarget(avenger, highestHealthMinion, otherBoard);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tavenger.reborn = true;\r\n\t\t\tavenger.taunt = true;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tavenger.reborn = true;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ChampionOfThePrimus_BG27_029:\r\n\t\tcase CardIds.ChampionOfThePrimus_BG27_029_G:\r\n\t\t\tconst championPrimusStat = avenger.cardId === CardIds.ChampionOfThePrimus_BG27_029_G ? 2 : 1;\r\n\t\t\tboardWithDeadEntityHero.globalInfo.UndeadAttackBonus += championPrimusStat;\r\n\t\t\tbreak;\r\n\t}\r\n\tavenger.avengeCurrent = avenger.avengeDefault;\r\n};\r\n\r\nconst handleHeroAvenge = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tallCards: AllCardsService,\r\n) => {\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t// Not affected by Khadgar\r\n\tswitch (boardWithDeadEntityHero?.heroPowerId) {\r\n\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tcardsData,\r\n\t\t\t\t\tsharedState,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\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.VanndarStormpike_LeadTheStormpikes:\r\n\t\t\tboardWithDeadEntity\r\n\t\t\t\t.filter((entity) => !entity.definitelyDead && entity.health > 0)\r\n\t\t\t\t.forEach((entity) => {\r\n\t\t\t\t\tmodifyHealth(entity, 1, boardWithDeadEntity, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(boardWithDeadEntityHero, entity, boardWithDeadEntity);\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Drekthar_LeadTheFrostwolves:\r\n\t\t\tboardWithDeadEntity.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(boardWithDeadEntityHero, entity, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t}\r\n\tboardWithDeadEntityHero.avengeCurrent = boardWithDeadEntityHero.avengeDefault;\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"avenge.js","sourceRoot":"","sources":["../../src/simulation/avenge.ts"],"names":[],"mappings":"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","sourcesContent":["import { AllCardsService, CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData } from '../cards/cards-data';\r\nimport { pickRandom } from '../services/utils';\r\nimport {\r\n\taddCardsInHand,\r\n\taddStatsToBoard,\r\n\tafterStatsUpdate,\r\n\tgetRandomAliveMinion,\r\n\tgetRandomMinionWithHighestHealth,\r\n\tgrantRandomStats,\r\n\tgrantStatsToMinionsOfEachType,\r\n\thasCorrectTribe,\r\n\tisMinionGolden,\r\n\tmakeMinionGolden,\r\n\tmodifyAttack,\r\n\tmodifyHealth,\r\n} from '../utils';\r\nimport { dealDamageToEnemy, getNeighbours, performEntitySpawns } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const applyAvengeEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\tupdateAvengeCounters(boardWithDeadEntity, boardWithDeadEntityHero);\r\n\tconst avengers = boardWithDeadEntity\r\n\t\t.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0)\r\n\t\t// Get Tony to be processed first, because of the \"when turned golden, the minion ignores the death for the avenge counter\"\r\n\t\t// behavior\r\n\t\t.sort((a, b) => {\r\n\t\t\tif (a.cardId === CardIds.TonyTwoTusk_BG21_031 || a.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif (b.cardId === CardIds.TonyTwoTusk_BG21_031 || b.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\treturn 0;\r\n\t\t});\r\n\tfor (const avenger of avengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\t// console.log('updating dead entity avenge counter', boardWithDeadEntityHero.avengeCurrent, stringifySimpleCard(deadEntity, allCards));\r\n\tconst heroAvenger = !!boardWithDeadEntityHero.avengeDefault && boardWithDeadEntityHero.avengeCurrent === 0;\r\n\tif (heroAvenger) {\r\n\t\t// console.log(\r\n\t\t// \t'Hero is an avenger',\r\n\t\t// \tboardWithDeadEntityHero.avengeCurrent,\r\n\t\t// \tboardWithDeadEntityHero.avengeDefault,\r\n\t\t// \tboardWithDeadEntityHero.heroPowerId,\r\n\t\t// );\r\n\t\thandleHeroAvenge(\r\n\t\t\tdeadEntity,\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\r\n\tconst questRewardAvengers = boardWithDeadEntityHero.questRewardEntities.filter(\r\n\t\t(e) => !!e.avengeDefault && e.avengeCurrent <= 0,\r\n\t);\r\n\tfor (const avenger of questRewardAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t}\r\n\r\n\tperformEntitySpawns(\r\n\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tallCards,\r\n\t\tcardsData,\r\n\t\tsharedState,\r\n\t\tspectator,\r\n\t);\r\n};\r\n\r\nconst updateAvengeCounters = (board: readonly BoardEntity[], boardWithDeadEntityHero: BgsPlayerEntity) => {\r\n\tfor (const entity of board) {\r\n\t\tif (!!entity.avengeDefault) {\r\n\t\t\tentity.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\tif (!!boardWithDeadEntityHero.avengeDefault) {\r\n\t\tboardWithDeadEntityHero.avengeCurrent -= 1;\r\n\t}\r\n\r\n\tfor (const reward of boardWithDeadEntityHero.questRewardEntities) {\r\n\t\tif (!!reward.avengeDefault) {\r\n\t\t\treward.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAvenge = (\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tavenger: BoardEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tallCards: AllCardsService,\r\n) => {\r\n\t// Don't forget to update the avenge data in cards-data\r\n\tswitch (avenger.cardId) {\r\n\t\tcase CardIds.BirdBuddy_BG21_002:\r\n\t\t\taddStatsToBoard(avenger, boardWithDeadEntity, 1, 1, allCards, spectator, 'BEAST');\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BirdBuddy_BG21_002_G:\r\n\t\t\taddStatsToBoard(avenger, boardWithDeadEntity, 2, 2, allCards, spectator, 'BEAST');\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BuddingGreenthumb_BG21_030:\r\n\t\tcase CardIds.BuddingGreenthumb_BG21_030_G:\r\n\t\t\tconst neighbours = getNeighbours(boardWithDeadEntity, avenger);\r\n\t\t\tneighbours.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tavenger.cardId === CardIds.BuddingGreenthumb_BG21_030_G ? 4 : 2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t);\r\n\t\t\t\tmodifyHealth(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tavenger.cardId === CardIds.BuddingGreenthumb_BG21_030_G ? 2 : 1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, entity, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\t// case CardIds.FrostwolfLieutenant:\r\n\t\t// case CardIds.FrostwolfLieutenantBattlegrounds:\r\n\t\t// \taddStatsToBoard(\r\n\t\t// \t\tavenger,\r\n\t\t// \t\tboardWithDeadEntity,\r\n\t\t// \t\tavenger.cardId === CardIds.FrostwolfLieutenantBattlegrounds ? 2 : 1,\r\n\t\t// \t\t0,\r\n\t\t// \t\tallCards,\r\n\t\t// \t\tspectator,\r\n\t\t// \t);\r\n\t\t// \tbreak;\r\n\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\taddStatsToBoard(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t0,\r\n\t\t\t\tavenger.cardId === CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G ? 2 : 1,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tconst target1 = grantRandomStats(avenger, boardWithDeadEntity, 6, 6, Race.BEAST, true, allCards, spectator);\r\n\t\t\tif (!!target1) {\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target1, boardWithDeadEntity);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\tconst target2 = grantRandomStats(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t12,\r\n\t\t\t\t12,\r\n\t\t\t\tRace.BEAST,\r\n\t\t\t\ttrue,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tif (!!target2) {\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target2, boardWithDeadEntity);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\tconst doomsayerCardsToAddQuantity = avenger.cardId === CardIds.ImpatientDoomsayer_BG21_007_G ? 2 : 1;\r\n\t\t\tconst doomsayerCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < doomsayerCardsToAddQuantity; i++) {\r\n\t\t\t\tdoomsayerCardsToAdd.push(pickRandom(cardsData.demonSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, doomsayerCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, [null]);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.WitchwingNestmatron_BG21_038:\r\n\t\tcase CardIds.WitchwingNestmatron_BG21_038_G:\r\n\t\t\tconst nestmatronToAddQuantity = avenger.cardId === CardIds.WitchwingNestmatron_BG21_038_G ? 2 : 1;\r\n\t\t\tconst nestmatronCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < nestmatronToAddQuantity; i++) {\r\n\t\t\t\tnestmatronCardsToAdd.push(pickRandom(cardsData.brannEpicEggSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, nestmatronCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Thorncaller_BG20_105:\r\n\t\tcase CardIds.Thorncaller_BG20_105_G:\r\n\t\t\tconst thorncallerToAddQuantity = avenger.cardId === CardIds.Thorncaller_BG20_105_G ? 2 : 1;\r\n\t\t\tconst thorncallerCardsToAdd = Array(thorncallerToAddQuantity).fill(CardIds.BloodGem);\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, thorncallerCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Sisefin_BG21_009:\r\n\t\tcase CardIds.Sisefin_BG21_009_G:\r\n\t\t\tconst poisonousIterations = avenger.cardId === CardIds.Sisefin_BG21_009_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < poisonousIterations; i++) {\r\n\t\t\t\tconst validTargets = boardWithDeadEntity.filter((e) => !e.poisonous && !e.venomous);\r\n\t\t\t\tconst murloc = getRandomAliveMinion(validTargets, Race.MURLOC, allCards);\r\n\t\t\t\tif (murloc) {\r\n\t\t\t\t\tmurloc.venomous = true;\r\n\t\t\t\t\tspectator.registerPowerTarget(avenger, murloc, boardWithDeadEntity);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ScrapScraper_BG26_148:\r\n\t\tcase CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tconst scraperToAddQuantity = avenger.cardId === CardIds.ScrapScraper_BG26_148_G ? 2 : 1;\r\n\t\t\tconst scraperCardsToAdd = [];\r\n\t\t\tfor (let i = 0; i < scraperToAddQuantity; i++) {\r\n\t\t\t\tscraperCardsToAdd.push(pickRandom(cardsData.scrapScraperSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, allCards, spectator, scraperCardsToAdd);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\t// This can be null if the avenge triggers when the last enemy minion dies as well\r\n\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\tspectator.registerPowerTarget(avenger, target, otherBoard);\r\n\t\t\tdealDamageToEnemy(\r\n\t\t\t\ttarget,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tavenger,\r\n\t\t\t\t5,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\tallCards,\r\n\t\t\t\tcardsData,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, target, otherBoard);\r\n\t\t\t\tdealDamageToEnemy(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t5,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tcardsData,\r\n\t\t\t\t\tsharedState,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\tconst nonGoldenMinions = boardWithDeadEntity\r\n\t\t\t\t.filter((e) => e.entityId !== avenger.entityId)\r\n\t\t\t\t.filter((e) => {\r\n\t\t\t\t\tconst ref = allCards.getCard(e.cardId);\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t!!ref.battlegroundsPremiumDbfId && !!allCards.getCardFromDbfId(ref.battlegroundsPremiumDbfId).id\r\n\t\t\t\t\t);\r\n\t\t\t\t});\r\n\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, allCards);\r\n\t\t\tif (pirate) {\r\n\t\t\t\tmakeMinionGolden(pirate, avenger, boardWithDeadEntity, allCards, spectator);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\tconst nonGoldenMinions = boardWithDeadEntity.filter((e) => !isMinionGolden(e, allCards));\r\n\t\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, allCards);\r\n\t\t\t\tif (pirate) {\r\n\t\t\t\t\tmakeMinionGolden(pirate, avenger, boardWithDeadEntity, allCards, spectator);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.GhoulOfTheFeast_BG25_002:\r\n\t\tcase CardIds.GhoulOfTheFeast_BG25_002_G:\r\n\t\t\tconst ghoulMultiplier = avenger.cardId === CardIds.GhoulOfTheFeast_BG25_002_G ? 2 : 1;\r\n\t\t\tgrantStatsToMinionsOfEachType(avenger, boardWithDeadEntity, ghoulMultiplier * 3, 0, allCards, spectator);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Bristlebach_BG26_157:\r\n\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\tconst bristlebachMultiplier = avenger.cardId === CardIds.Bristlebach_BG26_157_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < bristlebachMultiplier; i++) {\r\n\t\t\t\tfor (const entity of boardWithDeadEntity) {\r\n\t\t\t\t\tif (hasCorrectTribe(entity, Race.QUILBOAR, allCards)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(entity, 1, boardWithDeadEntity, boardWithDeadEntityHero, allCards, spectator);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\tconst abominationMultiplier = avenger.cardId === CardIds.HungeringAbomination_BG25_014_G ? 2 : 1;\r\n\t\t\tmodifyAttack(avenger, abominationMultiplier * 1, boardWithDeadEntity, allCards);\r\n\t\t\tmodifyHealth(avenger, abominationMultiplier * 1, boardWithDeadEntity, allCards);\r\n\t\t\tafterStatsUpdate(avenger, boardWithDeadEntity, allCards);\r\n\t\t\tspectator.registerPowerTarget(avenger, avenger, boardWithDeadEntity);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ShadowyConstruct_BG25_HERO_103_Buddy:\r\n\t\tcase CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G:\r\n\t\t\tconst neighboursShadowy = getNeighbours(boardWithDeadEntity, null, deadEntityIndexFromRight);\r\n\t\t\tconst multiplierShadowy = avenger.cardId === CardIds.ShadowyConstruct_BG25_HERO_103_Buddy_G ? 2 : 1;\r\n\t\t\tneighboursShadowy.forEach((neighbour) => {\r\n\t\t\t\tmodifyAttack(neighbour, multiplierShadowy * 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tmodifyHealth(neighbour, multiplierShadowy * 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tafterStatsUpdate(neighbour, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(avenger, neighbour, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.IceSickle:\r\n\t\t\tgrantRandomStats(avenger, boardWithDeadEntityHero.hand, 3, 0, null, true, allCards, null);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tconst highestHealthMinion = [...otherBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\tdealDamageToEnemy(\r\n\t\t\t\thighestHealthMinion,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tavenger,\r\n\t\t\t\t10,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\tallCards,\r\n\t\t\t\tcardsData,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t\tspectator.registerPowerTarget(avenger, highestHealthMinion, otherBoard);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tavenger.reborn = true;\r\n\t\t\tavenger.taunt = true;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tavenger.reborn = true;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.ChampionOfThePrimus_BG27_029:\r\n\t\tcase CardIds.ChampionOfThePrimus_BG27_029_G:\r\n\t\t\tconst championPrimusStat = avenger.cardId === CardIds.ChampionOfThePrimus_BG27_029_G ? 2 : 1;\r\n\t\t\tboardWithDeadEntityHero.globalInfo.UndeadAttackBonus += championPrimusStat;\r\n\t\t\tbreak;\r\n\t}\r\n\tavenger.avengeCurrent = avenger.avengeDefault;\r\n};\r\n\r\nconst handleHeroAvenge = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tallCards: AllCardsService,\r\n) => {\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t// Not affected by Khadgar\r\n\tswitch (boardWithDeadEntityHero?.heroPowerId) {\r\n\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tcardsData,\r\n\t\t\t\t\tsharedState,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\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.VanndarStormpike_LeadTheStormpikes:\r\n\t\t\tboardWithDeadEntity\r\n\t\t\t\t.filter((entity) => !entity.definitelyDead && entity.health > 0)\r\n\t\t\t\t.forEach((entity) => {\r\n\t\t\t\t\tmodifyHealth(entity, 1, boardWithDeadEntity, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(boardWithDeadEntityHero, entity, boardWithDeadEntity);\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Drekthar_LeadTheFrostwolves:\r\n\t\t\tboardWithDeadEntity.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 1, boardWithDeadEntity, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, allCards);\r\n\t\t\t\tspectator.registerPowerTarget(boardWithDeadEntityHero, entity, boardWithDeadEntity);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t}\r\n\tboardWithDeadEntityHero.avengeCurrent = boardWithDeadEntityHero.avengeDefault;\r\n};\r\n"]}
|