@firestone-hs/simulate-bgs-battle 1.1.376 → 1.1.378
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.
|
@@ -249,6 +249,9 @@ const handleAvenge = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity,
|
|
|
249
249
|
case "BG28_Reward_504":
|
|
250
250
|
(0, utils_2.addCardsInHand)(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);
|
|
251
251
|
break;
|
|
252
|
+
case "BG28_Reward_518":
|
|
253
|
+
avenger.scriptDataNum1++;
|
|
254
|
+
break;
|
|
252
255
|
}
|
|
253
256
|
avenger.avengeCurrent = avenger.avengeDefault;
|
|
254
257
|
};
|
|
@@ -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\tgrantRandomDivineShield,\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 } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { SharedState } from './shared-state';\r\nimport { performEntitySpawns } from './spawns';\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\tgameState: FullGameState,\r\n): void => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\t// updateAvengeCounters(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\tgameState,\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\tgameState.cardsData,\r\n\t\t\tgameState.sharedState,\r\n\t\t\tgameState.spectator,\r\n\t\t\tgameState.allCards,\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\tgameState,\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\tgameState,\r\n\t);\r\n};\r\n\r\nexport const 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\tgameState: FullGameState,\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, gameState.allCards, gameState.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, gameState.allCards, gameState.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\tgameState.allCards,\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\tgameState.allCards,\r\n\t\t\t\t);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\t// Only for Tavern\r\n\t\t\t// addStatsToBoard(\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// \tgameState.allCards,\r\n\t\t\t// \tgameState.spectator,\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(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t6,\r\n\t\t\t\t6,\r\n\t\t\t\tRace.BEAST,\r\n\t\t\t\ttrue,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\r\n\t\t\tif (!!target1) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\r\n\t\t\tif (!!target2) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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(gameState.cardsData.demonSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, doomsayerCardsToAdd, gameState);\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, [null], gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MysticSporebat_BG28_900:\r\n\t\tcase CardIds.MysticSporebat_BG28_900_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\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(gameState.cardsData.brannEpicEggSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, nestmatronCardsToAdd, gameState);\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, thorncallerCardsToAdd, gameState);\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, gameState.allCards);\r\n\t\t\t\tif (murloc) {\r\n\t\t\t\t\tmurloc.venomous = true;\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tmurloc,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\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.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\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\ttarget,\r\n\t\t\t\totherBoard,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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\tgameState,\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\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\tgameState,\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 = gameState.allCards.getCard(e.cardId);\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t!!ref.battlegroundsPremiumDbfId &&\r\n\t\t\t\t\t\t!!gameState.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, gameState.allCards);\r\n\t\t\tif (pirate) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\tpirate,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t);\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, gameState.allCards));\r\n\t\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, gameState.allCards);\r\n\t\t\t\tif (pirate) {\r\n\t\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\t\tpirate,\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\t\tgameState.sharedState,\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.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(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tghoulMultiplier * 3,\r\n\t\t\t\t0,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\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 ? 4 : 2;\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, gameState.allCards)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t);\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, gameState.allCards);\r\n\t\t\tmodifyHealth(avenger, abominationMultiplier * 1, boardWithDeadEntity, gameState.allCards);\r\n\t\t\tafterStatsUpdate(avenger, boardWithDeadEntity, gameState.allCards);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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, gameState.allCards);\r\n\t\t\t\tmodifyHealth(neighbour, multiplierShadowy * 1, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tafterStatsUpdate(neighbour, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tneighbour,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.IceSickle:\r\n\t\t\tgrantRandomStats(avenger, boardWithDeadEntityHero.hand, 4, 0, null, true, gameState.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\tgameState,\r\n\t\t\t);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\thighestHealthMinion,\r\n\t\t\t\totherBoard,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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\taddStatsToBoard(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tchampionPrimusStat,\r\n\t\t\t\t0,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t\tRace[Race.UNDEAD],\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tconst phaerixLoops = avenger.cardId === CardIds.PhaerixWrathOfTheSun_BG28_403_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < phaerixLoops; i++) {\r\n\t\t\t\tgrantRandomDivineShield(avenger, boardWithDeadEntity, gameState.allCards, gameState.spectator);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tconst AugmentedLaborerLoops = avenger.cardId === CardIds.AugmentedLaborer_BG28_740_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < AugmentedLaborerLoops; i++) {\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tconst tumblingDisasterEntity = boardWithDeadEntityHero.questRewardEntities?.find(\r\n\t\t\t\t(e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505,\r\n\t\t\t);\r\n\t\t\tif (tumblingDisasterEntity) {\r\n\t\t\t\ttumblingDisasterEntity.scriptDataNum1++;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\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(\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\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(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\tgrantRandomDivineShield,\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 } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { SharedState } from './shared-state';\r\nimport { performEntitySpawns } from './spawns';\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\tgameState: FullGameState,\r\n): void => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\t// updateAvengeCounters(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\tgameState,\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\tgameState.cardsData,\r\n\t\t\tgameState.sharedState,\r\n\t\t\tgameState.spectator,\r\n\t\t\tgameState.allCards,\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\tgameState,\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\tgameState,\r\n\t);\r\n};\r\n\r\nexport const 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\tgameState: FullGameState,\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, gameState.allCards, gameState.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, gameState.allCards, gameState.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\tgameState.allCards,\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\tgameState.allCards,\r\n\t\t\t\t);\r\n\t\t\t\tafterStatsUpdate(entity, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\t// Only for Tavern\r\n\t\t\t// addStatsToBoard(\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// \tgameState.allCards,\r\n\t\t\t// \tgameState.spectator,\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(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t6,\r\n\t\t\t\t6,\r\n\t\t\t\tRace.BEAST,\r\n\t\t\t\ttrue,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\r\n\t\t\tif (!!target1) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\r\n\t\t\tif (!!target2) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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(gameState.cardsData.demonSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, doomsayerCardsToAdd, gameState);\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, [null], gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MysticSporebat_BG28_900:\r\n\t\tcase CardIds.MysticSporebat_BG28_900_G:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\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(gameState.cardsData.brannEpicEggSpawns));\r\n\t\t\t}\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, nestmatronCardsToAdd, gameState);\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, thorncallerCardsToAdd, gameState);\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, gameState.allCards);\r\n\t\t\t\tif (murloc) {\r\n\t\t\t\t\tmurloc.venomous = true;\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tmurloc,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\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.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\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\ttarget,\r\n\t\t\t\totherBoard,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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\tgameState,\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\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\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\tgameState,\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 = gameState.allCards.getCard(e.cardId);\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t!!ref.battlegroundsPremiumDbfId &&\r\n\t\t\t\t\t\t!!gameState.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, gameState.allCards);\r\n\t\t\tif (pirate) {\r\n\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\tpirate,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t);\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, gameState.allCards));\r\n\t\t\t\tconst pirate = getRandomAliveMinion(nonGoldenMinions, Race.PIRATE, gameState.allCards);\r\n\t\t\t\tif (pirate) {\r\n\t\t\t\t\tmakeMinionGolden(\r\n\t\t\t\t\t\tpirate,\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\t\tgameState.sharedState,\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.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(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tghoulMultiplier * 3,\r\n\t\t\t\t0,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t);\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 ? 4 : 2;\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, gameState.allCards)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\t1,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t);\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, gameState.allCards);\r\n\t\t\tmodifyHealth(avenger, abominationMultiplier * 1, boardWithDeadEntity, gameState.allCards);\r\n\t\t\tafterStatsUpdate(avenger, boardWithDeadEntity, gameState.allCards);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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, gameState.allCards);\r\n\t\t\t\tmodifyHealth(neighbour, multiplierShadowy * 1, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tafterStatsUpdate(neighbour, boardWithDeadEntity, gameState.allCards);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tneighbour,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.IceSickle:\r\n\t\t\tgrantRandomStats(avenger, boardWithDeadEntityHero.hand, 4, 0, null, true, gameState.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\tgameState,\r\n\t\t\t);\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tavenger,\r\n\t\t\t\thighestHealthMinion,\r\n\t\t\t\totherBoard,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t);\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\taddStatsToBoard(\r\n\t\t\t\tavenger,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tchampionPrimusStat,\r\n\t\t\t\t0,\r\n\t\t\t\tgameState.allCards,\r\n\t\t\t\tgameState.spectator,\r\n\t\t\t\tRace[Race.UNDEAD],\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tconst phaerixLoops = avenger.cardId === CardIds.PhaerixWrathOfTheSun_BG28_403_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < phaerixLoops; i++) {\r\n\t\t\t\tgrantRandomDivineShield(avenger, boardWithDeadEntity, gameState.allCards, gameState.spectator);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tconst AugmentedLaborerLoops = avenger.cardId === CardIds.AugmentedLaborer_BG28_740_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < AugmentedLaborerLoops; i++) {\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tconst tumblingDisasterEntity = boardWithDeadEntityHero.questRewardEntities?.find(\r\n\t\t\t\t(e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505,\r\n\t\t\t);\r\n\t\t\tif (tumblingDisasterEntity) {\r\n\t\t\t\ttumblingDisasterEntity.scriptDataNum1++;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\tavenger.scriptDataNum1++;\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(\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\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(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t}\r\n\tboardWithDeadEntityHero.avengeCurrent = boardWithDeadEntityHero.avengeDefault;\r\n};\r\n"]}
|
|
@@ -20,20 +20,30 @@ const handleSummonWhenSpace = (playerBoard, playerEntity, opponentBoard, opponen
|
|
|
20
20
|
};
|
|
21
21
|
exports.handleSummonWhenSpace = handleSummonWhenSpace;
|
|
22
22
|
const handleStableAmalgamationForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const rewardEntity = playerEntity.questRewardEntities.find((entity) => entity.cardId === "BG28_Reward_518");
|
|
24
|
+
if (rewardEntity && rewardEntity.scriptDataNum1 > 0) {
|
|
25
|
+
while (rewardEntity.scriptDataNum1 > 0) {
|
|
26
|
+
const hasSummoned = handleSummon(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, "BG28_Reward_518t", 0);
|
|
27
|
+
if (hasSummoned) {
|
|
28
|
+
rewardEntity.scriptDataNum1--;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
25
32
|
};
|
|
26
33
|
const handleRapidReanimationForPlayer = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState) => {
|
|
27
34
|
var _a;
|
|
28
|
-
handleSummon(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, playerEntity.rapidReanimationMinion.cardId, Math.min(playerBoard.length, (_a = playerEntity.rapidReanimationIndexFromRight) !== null && _a !== void 0 ? _a : 0), playerEntity.rapidReanimationMinion);
|
|
29
|
-
|
|
35
|
+
const hasSummoned = handleSummon(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, playerEntity.rapidReanimationMinion.cardId, Math.min(playerBoard.length, (_a = playerEntity.rapidReanimationIndexFromRight) !== null && _a !== void 0 ? _a : 0), playerEntity.rapidReanimationMinion);
|
|
36
|
+
if (hasSummoned) {
|
|
37
|
+
playerEntity.rapidReanimationMinion = null;
|
|
38
|
+
}
|
|
30
39
|
};
|
|
31
40
|
const handleSummon = (playerBoard, playerEntity, opponentBoard, opponentEntity, gameState, cardId, indexFromRight, minion = null) => {
|
|
32
41
|
if (playerBoard.length >= 7) {
|
|
33
|
-
return;
|
|
42
|
+
return false;
|
|
34
43
|
}
|
|
35
44
|
const newMinion = (0, utils_1.buildSingleBoardEntity)(cardId, playerEntity, playerBoard, gameState.allCards, playerEntity.friendly, gameState.sharedState.currentEntityId++, false, gameState.cardsData, gameState.sharedState, minion, null);
|
|
36
|
-
(0, spawns_1.performEntitySpawns)([newMinion], playerBoard, playerEntity, playerEntity, indexFromRight, opponentBoard, opponentEntity, gameState, false);
|
|
45
|
+
const spawned = (0, spawns_1.performEntitySpawns)([newMinion], playerBoard, playerEntity, playerEntity, indexFromRight, opponentBoard, opponentEntity, gameState, false);
|
|
37
46
|
gameState.spectator.registerPowerTarget(playerEntity, newMinion, playerBoard, null, null);
|
|
47
|
+
return spawned.length > 0;
|
|
38
48
|
};
|
|
39
49
|
//# sourceMappingURL=summon-when-space.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summon-when-space.js","sourceRoot":"","sources":["../../src/simulation/summon-when-space.ts"],"names":[],"mappings":";;;AAGA,oCAAkD;AAElD,qCAA+C;AAExC,MAAM,qBAAqB,GAAG,CACpC,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACvB,EAAE;;IACH,IAAI,YAAY,CAAC,sBAAsB,EAAE;QACxC,+BAA+B,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;KACrG;IACD,IAAI,cAAc,CAAC,sBAAsB,EAAE;QAC1C,+BAA+B,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;KACrG;IACD,IAAI,MAAA,YAAY,CAAC,YAAY,0CAAE,QAAQ,mBAA4C,EAAE;QACpF,iCAAiC,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;KACvG;IACD,IAAI,MAAA,cAAc,CAAC,YAAY,0CAAE,QAAQ,mBAA4C,EAAE;QACtF,iCAAiC,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;KACvG;AACF,CAAC,CAAC;AAnBW,QAAA,qBAAqB,yBAmBhC;AAEF,MAAM,iCAAiC,GAAG,CACzC,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,SAAwB,EACvB,EAAE;IACH,YAAY,
|
|
1
|
+
{"version":3,"file":"summon-when-space.js","sourceRoot":"","sources":["../../src/simulation/summon-when-space.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { buildSingleBoardEntity } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\n\r\nexport const handleSummonWhenSpace = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (playerEntity.rapidReanimationMinion) {\r\n\t\thandleRapidReanimationForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);\r\n\t}\r\n\tif (opponentEntity.rapidReanimationMinion) {\r\n\t\thandleRapidReanimationForPlayer(opponentBoard, opponentEntity, playerBoard, playerEntity, gameState);\r\n\t}\r\n\tif (playerEntity.questRewards?.includes(CardIds.StableAmalgamation_BG28_Reward_518)) {\r\n\t\thandleStableAmalgamationForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, gameState);\r\n\t}\r\n\tif (opponentEntity.questRewards?.includes(CardIds.StableAmalgamation_BG28_Reward_518)) {\r\n\t\thandleStableAmalgamationForPlayer(opponentBoard, opponentEntity, playerBoard, playerEntity, gameState);\r\n\t}\r\n};\r\n\r\nconst handleStableAmalgamationForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst rewardEntity = playerEntity.questRewardEntities.find(\r\n\t\t(entity) => entity.cardId === CardIds.StableAmalgamation_BG28_Reward_518,\r\n\t);\r\n\tif (rewardEntity && rewardEntity.scriptDataNum1 > 0) {\r\n\t\twhile (rewardEntity.scriptDataNum1 > 0) {\r\n\t\t\tconst hasSummoned = handleSummon(\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tgameState,\r\n\t\t\t\tCardIds.StableAmalgamation_TotallyNormalHorseToken_BG28_Reward_518t,\r\n\t\t\t\t0,\r\n\t\t\t);\r\n\t\t\tif (hasSummoned) {\r\n\t\t\t\trewardEntity.scriptDataNum1--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleRapidReanimationForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst hasSummoned = handleSummon(\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t\tplayerEntity.rapidReanimationMinion.cardId,\r\n\t\tMath.min(playerBoard.length, playerEntity.rapidReanimationIndexFromRight ?? 0),\r\n\t\tplayerEntity.rapidReanimationMinion,\r\n\t);\r\n\tif (hasSummoned) {\r\n\t\tplayerEntity.rapidReanimationMinion = null;\r\n\t}\r\n};\r\n\r\nconst handleSummon = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tcardId: string,\r\n\tindexFromRight: number,\r\n\tminion: BoardEntity = null,\r\n): boolean => {\r\n\tif (playerBoard.length >= 7) {\r\n\t\treturn false;\r\n\t}\r\n\tconst newMinion = buildSingleBoardEntity(\r\n\t\tcardId,\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\tgameState.allCards,\r\n\t\tplayerEntity.friendly,\r\n\t\tgameState.sharedState.currentEntityId++,\r\n\t\tfalse,\r\n\t\tgameState.cardsData,\r\n\t\tgameState.sharedState,\r\n\t\tminion,\r\n\t\tnull,\r\n\t);\r\n\t// Don't reapply auras in this particular case? See https://x.com/ZerotoHeroes_HS/status/1737422727118487808?s=20\r\n\tconst spawned = performEntitySpawns(\r\n\t\t[newMinion],\r\n\t\tplayerBoard,\r\n\t\tplayerEntity,\r\n\t\tplayerEntity,\r\n\t\tindexFromRight,\r\n\t\topponentBoard,\r\n\t\topponentEntity,\r\n\t\tgameState,\r\n\t\tfalse,\r\n\t);\r\n\tgameState.spectator.registerPowerTarget(playerEntity, newMinion, playerBoard, null, null);\r\n\treturn spawned.length > 0;\r\n};\r\n"]}
|