@firestone-hs/simulate-bgs-battle 1.1.172 → 1.1.175

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.
@@ -239,8 +239,9 @@ const spawnEntitiesFromDeathrattle = (deadEntity, boardWithDeadEntity, boardWith
239
239
  break;
240
240
  case "BG21_025":
241
241
  case "BG21_025_G":
242
- const entitiesToSpawn = Math.max(0, Math.min(5, 7 - boardWithDeadEntity.length - spawnedEntities.length));
243
- const buffAmount = (deadEntity.cardId === "BG21_025_G" ? 2 : 1) * (6 - entitiesToSpawn);
242
+ const cardParam = 5;
243
+ const entitiesToSpawn = Math.max(0, Math.min(cardParam, 7 - boardWithDeadEntity.length - spawnedEntities.length));
244
+ const buffAmount = (deadEntity.cardId === "BG21_025_G" ? 2 : 1) * (cardParam - entitiesToSpawn);
244
245
  spawnedEntities.push(...exports.spawnEntities(deadEntity.cardId === "BG21_025_G"
245
246
  ? "TB_BaconUps_032t"
246
247
  : "BOT_312t", entitiesToSpawn, boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, allCards, spawns, sharedState, spectator, deadEntity.friendly, true));
@@ -1 +1 @@
1
- {"version":3,"file":"deathrattle-spawns.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-spawns.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, WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport {\r\n\taddCardsInHand,\r\n\taddStatsToBoard,\r\n\tafterStatsUpdate,\r\n\tbuildSingleBoardEntity,\r\n\thasCorrectTribe,\r\n\tisCorrectTribe,\r\n\tmodifyAttack,\r\n\tmodifyHealth,\r\n} from '../utils';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const spawnEntities = (\r\n\tcardId: string,\r\n\tquantity: number,\r\n\tboardToSpawnInto: BoardEntity[],\r\n\tboardToSpawnIntoHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tfriendly: boolean,\r\n\t// In most cases the business of knowing the number of minions to handle is left to the caller\r\n\tlimitSpawns: boolean,\r\n\tspawnReborn = false,\r\n\tuseKhadgar = true,\r\n): readonly BoardEntity[] => {\r\n\tif (!cardId) {\r\n\t\tconsole.error('Cannot spawn a minion without any cardId defined', new Error().stack);\r\n\t}\r\n\tconst spawnMultiplier = useKhadgar ? 2 * boardToSpawnInto.filter((entity) => entity.cardId === CardIds.Khadgar1).length || 1 : 1;\r\n\tconst spawnMultiplierGolden = useKhadgar\r\n\t\t? 3 * boardToSpawnInto.filter((entity) => entity.cardId === CardIds.KhadgarBattlegrounds).length || 1\r\n\t\t: 1;\r\n\tconst minionsToSpawn = limitSpawns\r\n\t\t? Math.min(quantity * spawnMultiplier * spawnMultiplierGolden, 7 - boardToSpawnInto.length)\r\n\t\t: quantity * spawnMultiplier * spawnMultiplierGolden;\r\n\tconst result: BoardEntity[] = [];\r\n\tfor (let i = 0; i < minionsToSpawn; i++) {\r\n\t\tconst newMinion = buildSingleBoardEntity(\r\n\t\t\tcardId,\r\n\t\t\tboardToSpawnIntoHero,\r\n\t\t\tboardToSpawnInto,\r\n\t\t\tallCards,\r\n\t\t\tfriendly,\r\n\t\t\tsharedState.currentEntityId++,\r\n\t\t\tspawnReborn,\r\n\t\t\tcardsData,\r\n\t\t\tspectator,\r\n\t\t);\r\n\r\n\t\tif (hasCorrectTribe(newMinion, Race.BEAST, allCards)) {\r\n\t\t\tconst packLeaders = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.PackLeader);\r\n\t\t\tpackLeaders.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst packLeaderBattlegrounds = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.PackLeaderBattlegrounds);\r\n\t\t\tpackLeaderBattlegrounds.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst mamaBears = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.MamaBear);\r\n\t\t\tmamaBears.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 5, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(newMinion, 5, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst mamaBearBattlegrounds = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.MamaBearBattlegrounds);\r\n\t\t\tmamaBearBattlegrounds.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 10, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(newMinion, 10, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!newMinion.cardId) {\r\n\t\t\tconsole.warn('Invalid spawn', newMinion, cardId);\r\n\t\t}\r\n\t\tresult.push(newMinion);\r\n\r\n\t\tif (isCorrectTribe(allCards.getCard(newMinion.cardId).race, Race.DEMON)) {\r\n\t\t\tconst bigfernals = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.Bigfernal);\r\n\t\t\tconst goldenBigfernals = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.BigfernalBattlegrounds);\r\n\t\t\tbigfernals.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 1, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 1, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(entity, entity, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t\tgoldenBigfernals.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(entity, entity, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (hasCorrectTribe(newMinion, Race.DEMON, allCards)) {\r\n\t\t\taddOldMurkeyeAttack(boardToSpawnInto, allCards);\r\n\t\t\taddOldMurkeyeAttack(otherBoard, allCards);\r\n\t\t}\r\n\r\n\t\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t\tif (WHELP_CARD_IDS.includes(newMinion.cardId as CardIds)) {\r\n\t\t\tconst manyWhelps = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.ManyWhelps);\r\n\t\t\tconst goldenManyWhelps = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.ManyWhelpsBattlegrounds);\r\n\t\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t});\r\n\t\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n\r\nconst addOldMurkeyeAttack = (board: BoardEntity[], allCards: AllCardsService) => {\r\n\tconst murkeyes = board.filter((entity) => entity.cardId === CardIds.OldMurkEyeLegacy || entity.cardId === CardIds.OldMurkEyeVanilla);\r\n\tconst goldenMurkeyes = board.filter((entity) => entity.cardId === CardIds.OldMurkEyeBattlegrounds);\r\n\tmurkeyes.forEach((entity) => {\r\n\t\tmodifyAttack(entity, 1, board, allCards);\r\n\t\tafterStatsUpdate(entity, board, allCards);\r\n\t});\r\n\tgoldenMurkeyes.forEach((entity) => {\r\n\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\tafterStatsUpdate(entity, board, allCards);\r\n\t});\r\n};\r\n\r\nexport const spawnEntitiesFromDeathrattle = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): readonly BoardEntity[] => {\r\n\tconst rivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendare2);\r\n\tconst goldenRivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendareBattlegrounds);\r\n\tconst multiplier = goldenRivendare ? 3 : rivendare ? 2 : 1;\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\t// const otherBoardSpawnedEntities: BoardEntity[] = [];\r\n\tfor (let i = 0; i < multiplier; i++) {\r\n\t\tswitch (deadEntity.cardId) {\r\n\t\t\tcase CardIds.Mecharoo:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Mecharoo_JoEBotToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MecharooBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Mecharoo_JoEBotTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Scallywag:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Scallywag_SkyPirateToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ScallywagBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Scallywag_SkyPirateTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.IckyImp2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.IckyImpBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.HarvestGolemLegacy:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.DamagedGolemLegacy,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.HarvestGolemBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.HarvestGolem_DamagedGolemTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SewerRat:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SewerRat_HalfShellToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SewerRatBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SewerRat_HalfShellTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KindlyGrandmother1:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.KindlyGrandmother_BigBadWolf,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KindlyGrandmotherBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.KindlyGrandmother_BigBadWolfTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RatPack:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RatPack_RatToken,\r\n\t\t\t\t\t\tdeadEntity.attack,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RatPackBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RatPack_RatTokenBattlegrounds,\r\n\t\t\t\t\t\tdeadEntity.attack,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Imprisoner:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ImprisonerBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.InfestedWolf:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.InfestedWolf_Spider,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.InfestedWolfBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.InfestedWolf_SpiderTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.TheBeastLegacy:\r\n\t\t\t// case CardIds.TheBeastBattlegrounds:\r\n\t\t\t// \totherBoardSpawnedEntities.push(\r\n\t\t\t// \t\t...spawnEntities(\r\n\t\t\t// \t\t\tCardIds.FinkleEinhornLegacy,\r\n\t\t\t// \t\t\t1,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\tallCards,\r\n\t\t\t// \t\t\tspawns,\r\n\t\t\t// \t\t\tsharedState,\r\n\t\t\t// \t\t\tspectator,\r\n\t\t\t// \t\t\t!deadEntity.friendly,\r\n\t\t\t// \t\t\tfalse,\r\n\t\t\t// \t\t),\r\n\t\t\t// \t);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.ReplicatingMenace:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ReplicatingMenaceBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoEgg:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.MechanoEgg_RobosaurToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoEggBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.MechanoEgg_RobosaurTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SavannahHighmaneLegacy:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SavannahHighmane_HyenaLegacyToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SavannahHighmaneBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SavannahHighmane_HyenaTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RingMatron:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RingMatron_FieryImpToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RingMatronBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RingMatron_FieryImpTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SatedThreshadon:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.PrimalfinTotem_PrimalfinToken,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SatedThreshadonBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SatedThreshadon_PrimalfinTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Ghastcoiler2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GentleDjinni:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GentleDjinniBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.KilrekBattlegrounds1:\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KilrekBattlegrounds2:\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.BrannsEpicEggBattlegrounds1:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BrannsEpicEggBattlegrounds2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.GhastcoilerBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Voidlord:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.VoidwalkerLegacy,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.VoidlordBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Voidlord_VoidwalkerTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.OmegaBuster:\r\n\t\t\tcase CardIds.OmegaBusterBattlegrounds:\r\n\t\t\t\t// Here we have to truncate the spawned entities instead of letting the caller handle it,\r\n\t\t\t\t// because we need to know how many minions couldn't spawn so that we can apply the buff.\r\n\t\t\t\t// HOWEVER, this can cause an issue, if for instance a Scallywag token spawns, attacks right away,\r\n\t\t\t\t// and then Omega Buster spawns. In this case, it will not have yet processed the token's attack,\r\n\t\t\t\t// and will limit the spawns\r\n\t\t\t\tconst entitiesToSpawn = Math.max(0, Math.min(5, 7 - boardWithDeadEntity.length - spawnedEntities.length));\r\n\t\t\t\tconst buffAmount = (deadEntity.cardId === CardIds.OmegaBusterBattlegrounds ? 2 : 1) * (6 - entitiesToSpawn);\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tdeadEntity.cardId === CardIds.OmegaBusterBattlegrounds\r\n\t\t\t\t\t\t\t? CardIds.ReplicatingMenace_MicrobotTokenBattlegrounds\r\n\t\t\t\t\t\t\t: CardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\tentitiesToSpawn,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\taddStatsToBoard(deadEntity, boardWithDeadEntity, buffAmount, buffAmount, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t\t// when the buster triggers multiple times because of Baron for instance\r\n\t\t\t\taddStatsToBoard(deadEntity, spawnedEntities, buffAmount, buffAmount, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.OmegaBusterBattlegrounds:\r\n\t\t\t// \tconst entitiesToSpawn2 = Math.min(6, 7 - boardWithDeadEntity.length);\r\n\t\t\t// \tconst buffAmount2 = 6 - entitiesToSpawn2;\r\n\t\t\t// \tspawnedEntities.push(\r\n\t\t\t// \t\t...spawnEntities(\r\n\t\t\t// \t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t// \t\t\tentitiesToSpawn2,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tallCards,\r\n\t\t\t// \t\t\tspawns,\r\n\t\t\t// \t\t\tsharedState,\r\n\t\t\t// \t\t\tspectator,\r\n\t\t\t// \t\t\tdeadEntity.friendly,\r\n\t\t\t// \t\t\tfalse,\r\n\t\t\t// \t\t),\r\n\t\t\t// \t);\r\n\t\t\t// \taddStatsToBoard(deadEntity, boardWithDeadEntity, 2 * buffAmount2, 2 * buffAmount2, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t// \t// when the buster triggers multiple times because of Baron for instance\r\n\t\t\t// \taddStatsToBoard(deadEntity, spawnedEntities, 2 * buffAmount2, 2 * buffAmount2, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.KangorsApprentice:\r\n\t\t\t\tconst cardIdsToSpawn = sharedState.deaths\r\n\t\t\t\t\t.filter((entity) => entity.friendly === deadEntity.friendly)\r\n\t\t\t\t\t// eslint-disable-next-line prettier/prettier\r\n\t\t\t\t\t.filter((entity) => isCorrectTribe(allCards.getCard(entity.cardId)?.race, Race.MECH))\r\n\t\t\t\t\t.slice(0, 2)\r\n\t\t\t\t\t.map((entity) => entity.cardId);\r\n\t\t\t\tcardIdsToSpawn.forEach((cardId) =>\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tcardId,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KangorsApprenticeBattlegrounds:\r\n\t\t\t\tconst cardIdsToSpawn2 = sharedState.deaths\r\n\t\t\t\t\t.filter((entity) => entity.friendly === deadEntity.friendly)\r\n\t\t\t\t\t.filter((entity) => isCorrectTribe(allCards.getCard(entity.cardId)?.race, Race.MECH))\r\n\t\t\t\t\t.slice(0, 4)\r\n\t\t\t\t\t.map((entity) => entity.cardId);\r\n\t\t\t\tcardIdsToSpawn2.forEach((cardId) =>\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tcardId,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TheTideRazor:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TheTideRazorBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t// spawnedEntities.push(...[]);\r\n\t\t}\r\n\t}\r\n\treturn spawnedEntities;\r\n};\r\n\r\nexport const spawnEntitiesFromEnchantments = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): readonly BoardEntity[] => {\r\n\tconst rivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendare2);\r\n\tconst goldenRivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendareBattlegrounds);\r\n\tconst multiplier = goldenRivendare ? 3 : rivendare ? 2 : 1;\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tfor (const enchantment of deadEntity.enchantments || []) {\r\n\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\tswitch (enchantment.cardId) {\r\n\t\t\t\t// Replicating Menace\r\n\t\t\t\tcase CardIds.ReplicatingMenace_ReplicatingMenaceEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\t\t3,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.ReplicatingMenace_ReplicatingMenaceEnchantmentBattlegrounds:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t\t\t\t\t3,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.LivingSpores_LivingSporesEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.LivingSpores_PlantToken,\r\n\t\t\t\t\t\t\t2,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.EarthInvocation_ElementEarthEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ElementEarth_StoneElementalToken,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.SneedsReplicator_ReplicateEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.getRandomMinionForTavernTier(spawns.getTavernLevel(deadEntity.cardId)),\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn spawnedEntities;\r\n};\r\n"]}
1
+ {"version":3,"file":"deathrattle-spawns.js","sourceRoot":"","sources":["../../src/simulation/deathrattle-spawns.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, WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport {\r\n\taddCardsInHand,\r\n\taddStatsToBoard,\r\n\tafterStatsUpdate,\r\n\tbuildSingleBoardEntity,\r\n\thasCorrectTribe,\r\n\tisCorrectTribe,\r\n\tmodifyAttack,\r\n\tmodifyHealth,\r\n} from '../utils';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const spawnEntities = (\r\n\tcardId: string,\r\n\tquantity: number,\r\n\tboardToSpawnInto: BoardEntity[],\r\n\tboardToSpawnIntoHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n\tfriendly: boolean,\r\n\t// In most cases the business of knowing the number of minions to handle is left to the caller\r\n\tlimitSpawns: boolean,\r\n\tspawnReborn = false,\r\n\tuseKhadgar = true,\r\n): readonly BoardEntity[] => {\r\n\tif (!cardId) {\r\n\t\tconsole.error('Cannot spawn a minion without any cardId defined', new Error().stack);\r\n\t}\r\n\tconst spawnMultiplier = useKhadgar ? 2 * boardToSpawnInto.filter((entity) => entity.cardId === CardIds.Khadgar1).length || 1 : 1;\r\n\tconst spawnMultiplierGolden = useKhadgar\r\n\t\t? 3 * boardToSpawnInto.filter((entity) => entity.cardId === CardIds.KhadgarBattlegrounds).length || 1\r\n\t\t: 1;\r\n\tconst minionsToSpawn = limitSpawns\r\n\t\t? Math.min(quantity * spawnMultiplier * spawnMultiplierGolden, 7 - boardToSpawnInto.length)\r\n\t\t: quantity * spawnMultiplier * spawnMultiplierGolden;\r\n\tconst result: BoardEntity[] = [];\r\n\tfor (let i = 0; i < minionsToSpawn; i++) {\r\n\t\tconst newMinion = buildSingleBoardEntity(\r\n\t\t\tcardId,\r\n\t\t\tboardToSpawnIntoHero,\r\n\t\t\tboardToSpawnInto,\r\n\t\t\tallCards,\r\n\t\t\tfriendly,\r\n\t\t\tsharedState.currentEntityId++,\r\n\t\t\tspawnReborn,\r\n\t\t\tcardsData,\r\n\t\t\tspectator,\r\n\t\t);\r\n\r\n\t\tif (hasCorrectTribe(newMinion, Race.BEAST, allCards)) {\r\n\t\t\tconst packLeaders = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.PackLeader);\r\n\t\t\tpackLeaders.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst packLeaderBattlegrounds = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.PackLeaderBattlegrounds);\r\n\t\t\tpackLeaderBattlegrounds.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst mamaBears = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.MamaBear);\r\n\t\t\tmamaBears.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 5, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(newMinion, 5, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\r\n\t\t\tconst mamaBearBattlegrounds = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.MamaBearBattlegrounds);\r\n\t\t\tmamaBearBattlegrounds.forEach((buffer) => {\r\n\t\t\t\tmodifyAttack(newMinion, 10, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(newMinion, 10, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(newMinion, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(buffer, newMinion, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!newMinion.cardId) {\r\n\t\t\tconsole.warn('Invalid spawn', newMinion, cardId);\r\n\t\t}\r\n\t\tresult.push(newMinion);\r\n\r\n\t\tif (isCorrectTribe(allCards.getCard(newMinion.cardId).race, Race.DEMON)) {\r\n\t\t\tconst bigfernals = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.Bigfernal);\r\n\t\t\tconst goldenBigfernals = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.BigfernalBattlegrounds);\r\n\t\t\tbigfernals.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 1, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 1, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(entity, entity, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t\tgoldenBigfernals.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t\t// spectator.registerPowerTarget(entity, entity, boardToSpawnInto);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (hasCorrectTribe(newMinion, Race.DEMON, allCards)) {\r\n\t\t\taddOldMurkeyeAttack(boardToSpawnInto, allCards);\r\n\t\t\taddOldMurkeyeAttack(otherBoard, allCards);\r\n\t\t}\r\n\r\n\t\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t\tif (WHELP_CARD_IDS.includes(newMinion.cardId as CardIds)) {\r\n\t\t\tconst manyWhelps = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.ManyWhelps);\r\n\t\t\tconst goldenManyWhelps = boardToSpawnInto.filter((entity) => entity.cardId === CardIds.ManyWhelpsBattlegrounds);\r\n\t\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 2, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t});\r\n\t\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\t\tmodifyAttack(entity, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tmodifyHealth(entity, 4, boardToSpawnInto, allCards);\r\n\t\t\t\tafterStatsUpdate(entity, boardToSpawnInto, allCards);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\n\r\nconst addOldMurkeyeAttack = (board: BoardEntity[], allCards: AllCardsService) => {\r\n\tconst murkeyes = board.filter((entity) => entity.cardId === CardIds.OldMurkEyeLegacy || entity.cardId === CardIds.OldMurkEyeVanilla);\r\n\tconst goldenMurkeyes = board.filter((entity) => entity.cardId === CardIds.OldMurkEyeBattlegrounds);\r\n\tmurkeyes.forEach((entity) => {\r\n\t\tmodifyAttack(entity, 1, board, allCards);\r\n\t\tafterStatsUpdate(entity, board, allCards);\r\n\t});\r\n\tgoldenMurkeyes.forEach((entity) => {\r\n\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\tafterStatsUpdate(entity, board, allCards);\r\n\t});\r\n};\r\n\r\nexport const spawnEntitiesFromDeathrattle = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): readonly BoardEntity[] => {\r\n\tconst rivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendare2);\r\n\tconst goldenRivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendareBattlegrounds);\r\n\tconst multiplier = goldenRivendare ? 3 : rivendare ? 2 : 1;\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\t// const otherBoardSpawnedEntities: BoardEntity[] = [];\r\n\tfor (let i = 0; i < multiplier; i++) {\r\n\t\tswitch (deadEntity.cardId) {\r\n\t\t\tcase CardIds.Mecharoo:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Mecharoo_JoEBotToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MecharooBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Mecharoo_JoEBotTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Scallywag:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Scallywag_SkyPirateToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ScallywagBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Scallywag_SkyPirateTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.IckyImp2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.IckyImpBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.HarvestGolemLegacy:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.DamagedGolemLegacy,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.HarvestGolemBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.HarvestGolem_DamagedGolemTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SewerRat:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SewerRat_HalfShellToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SewerRatBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SewerRat_HalfShellTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KindlyGrandmother1:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.KindlyGrandmother_BigBadWolf,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KindlyGrandmotherBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.KindlyGrandmother_BigBadWolfTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RatPack:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RatPack_RatToken,\r\n\t\t\t\t\t\tdeadEntity.attack,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RatPackBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RatPack_RatTokenBattlegrounds,\r\n\t\t\t\t\t\tdeadEntity.attack,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Imprisoner:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ImprisonerBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ImpGangBoss_ImpTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.InfestedWolf:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.InfestedWolf_Spider,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.InfestedWolfBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.InfestedWolf_SpiderTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.TheBeastLegacy:\r\n\t\t\t// case CardIds.TheBeastBattlegrounds:\r\n\t\t\t// \totherBoardSpawnedEntities.push(\r\n\t\t\t// \t\t...spawnEntities(\r\n\t\t\t// \t\t\tCardIds.FinkleEinhornLegacy,\r\n\t\t\t// \t\t\t1,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\tallCards,\r\n\t\t\t// \t\t\tspawns,\r\n\t\t\t// \t\t\tsharedState,\r\n\t\t\t// \t\t\tspectator,\r\n\t\t\t// \t\t\t!deadEntity.friendly,\r\n\t\t\t// \t\t\tfalse,\r\n\t\t\t// \t\t),\r\n\t\t\t// \t);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.ReplicatingMenace:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ReplicatingMenaceBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoEgg:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.MechanoEgg_RobosaurToken,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoEggBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.MechanoEgg_RobosaurTokenBattlegrounds,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SavannahHighmaneLegacy:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SavannahHighmane_HyenaLegacyToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SavannahHighmaneBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SavannahHighmane_HyenaTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RingMatron:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RingMatron_FieryImpToken,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RingMatronBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.RingMatron_FieryImpTokenBattlegrounds,\r\n\t\t\t\t\t\t2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SatedThreshadon:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.PrimalfinTotem_PrimalfinToken,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SatedThreshadonBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.SatedThreshadon_PrimalfinTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Ghastcoiler2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GentleDjinni:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GentleDjinniBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.gentleDjinniSpawns[Math.floor(Math.random() * spawns.gentleDjinniSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.KilrekBattlegrounds1:\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KilrekBattlegrounds2:\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.BrannsEpicEggBattlegrounds1:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\t// Not totally exact, since the DR could be prevented by other DR triggering at the same time,\r\n\t\t\t\t// but close enough for now\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(1, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BrannsEpicEggBattlegrounds2:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.brannEpicEggSpawns[Math.floor(Math.random() * spawns.brannEpicEggSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tMath.min(2, 7 - boardWithDeadEntity.length),\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tallCards,\r\n\t\t\t\t\tspectator,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.GhastcoilerBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.ghastcoilerSpawns[Math.floor(Math.random() * spawns.ghastcoilerSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Voidlord:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.VoidwalkerLegacy,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.VoidlordBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tCardIds.Voidlord_VoidwalkerTokenBattlegrounds,\r\n\t\t\t\t\t\t3,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.OmegaBuster:\r\n\t\t\tcase CardIds.OmegaBusterBattlegrounds:\r\n\t\t\t\t// Here we have to truncate the spawned entities instead of letting the caller handle it,\r\n\t\t\t\t// because we need to know how many minions couldn't spawn so that we can apply the buff.\r\n\t\t\t\t// HOWEVER, this can cause an issue, if for instance a Scallywag token spawns, attacks right away,\r\n\t\t\t\t// and then Omega Buster spawns. In this case, it will not have yet processed the token's attack,\r\n\t\t\t\t// and will limit the spawns\r\n\t\t\t\tconst cardParam = 5;\r\n\t\t\t\tconst entitiesToSpawn = Math.max(0, Math.min(cardParam, 7 - boardWithDeadEntity.length - spawnedEntities.length));\r\n\t\t\t\tconst buffAmount = (deadEntity.cardId === CardIds.OmegaBusterBattlegrounds ? 2 : 1) * (cardParam - entitiesToSpawn);\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\tdeadEntity.cardId === CardIds.OmegaBusterBattlegrounds\r\n\t\t\t\t\t\t\t? CardIds.ReplicatingMenace_MicrobotTokenBattlegrounds\r\n\t\t\t\t\t\t\t: CardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\tentitiesToSpawn,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\taddStatsToBoard(deadEntity, boardWithDeadEntity, buffAmount, buffAmount, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t\t// when the buster triggers multiple times because of Baron for instance\r\n\t\t\t\taddStatsToBoard(deadEntity, spawnedEntities, buffAmount, buffAmount, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.OmegaBusterBattlegrounds:\r\n\t\t\t// \tconst entitiesToSpawn2 = Math.min(6, 7 - boardWithDeadEntity.length);\r\n\t\t\t// \tconst buffAmount2 = 6 - entitiesToSpawn2;\r\n\t\t\t// \tspawnedEntities.push(\r\n\t\t\t// \t\t...spawnEntities(\r\n\t\t\t// \t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t// \t\t\tentitiesToSpawn2,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tallCards,\r\n\t\t\t// \t\t\tspawns,\r\n\t\t\t// \t\t\tsharedState,\r\n\t\t\t// \t\t\tspectator,\r\n\t\t\t// \t\t\tdeadEntity.friendly,\r\n\t\t\t// \t\t\tfalse,\r\n\t\t\t// \t\t),\r\n\t\t\t// \t);\r\n\t\t\t// \taddStatsToBoard(deadEntity, boardWithDeadEntity, 2 * buffAmount2, 2 * buffAmount2, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t// \t// when the buster triggers multiple times because of Baron for instance\r\n\t\t\t// \taddStatsToBoard(deadEntity, spawnedEntities, 2 * buffAmount2, 2 * buffAmount2, allCards, spectator, Race[Race.MECH]);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.KangorsApprentice:\r\n\t\t\t\tconst cardIdsToSpawn = sharedState.deaths\r\n\t\t\t\t\t.filter((entity) => entity.friendly === deadEntity.friendly)\r\n\t\t\t\t\t// eslint-disable-next-line prettier/prettier\r\n\t\t\t\t\t.filter((entity) => isCorrectTribe(allCards.getCard(entity.cardId)?.race, Race.MECH))\r\n\t\t\t\t\t.slice(0, 2)\r\n\t\t\t\t\t.map((entity) => entity.cardId);\r\n\t\t\t\tcardIdsToSpawn.forEach((cardId) =>\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tcardId,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.KangorsApprenticeBattlegrounds:\r\n\t\t\t\tconst cardIdsToSpawn2 = sharedState.deaths\r\n\t\t\t\t\t.filter((entity) => entity.friendly === deadEntity.friendly)\r\n\t\t\t\t\t.filter((entity) => isCorrectTribe(allCards.getCard(entity.cardId)?.race, Race.MECH))\r\n\t\t\t\t\t.slice(0, 4)\r\n\t\t\t\t\t.map((entity) => entity.cardId);\r\n\t\t\t\tcardIdsToSpawn2.forEach((cardId) =>\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tcardId,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t),\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TheTideRazor:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TheTideRazorBattlegrounds:\r\n\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t...[\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.pirateSpawns[Math.floor(Math.random() * spawns.pirateSpawns.length)],\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t],\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t// spawnedEntities.push(...[]);\r\n\t\t}\r\n\t}\r\n\treturn spawnedEntities;\r\n};\r\n\r\nexport const spawnEntitiesFromEnchantments = (\r\n\tdeadEntity: BoardEntity,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): readonly BoardEntity[] => {\r\n\tconst rivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendare2);\r\n\tconst goldenRivendare = boardWithDeadEntity.find((entity) => entity.cardId === CardIds.BaronRivendareBattlegrounds);\r\n\tconst multiplier = goldenRivendare ? 3 : rivendare ? 2 : 1;\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tfor (const enchantment of deadEntity.enchantments || []) {\r\n\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\tswitch (enchantment.cardId) {\r\n\t\t\t\t// Replicating Menace\r\n\t\t\t\tcase CardIds.ReplicatingMenace_ReplicatingMenaceEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotToken,\r\n\t\t\t\t\t\t\t3,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.ReplicatingMenace_ReplicatingMenaceEnchantmentBattlegrounds:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ReplicatingMenace_MicrobotTokenBattlegrounds,\r\n\t\t\t\t\t\t\t3,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.LivingSpores_LivingSporesEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.LivingSpores_PlantToken,\r\n\t\t\t\t\t\t\t2,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.EarthInvocation_ElementEarthEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tCardIds.ElementEarth_StoneElementalToken,\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.SneedsReplicator_ReplicateEnchantment:\r\n\t\t\t\t\tspawnedEntities.push(\r\n\t\t\t\t\t\t...spawnEntities(\r\n\t\t\t\t\t\t\tspawns.getRandomMinionForTavernTier(spawns.getTavernLevel(deadEntity.cardId)),\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\totherBoard,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tallCards,\r\n\t\t\t\t\t\t\tspawns,\r\n\t\t\t\t\t\t\tsharedState,\r\n\t\t\t\t\t\t\tspectator,\r\n\t\t\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn spawnedEntities;\r\n};\r\n"]}
@@ -40,7 +40,7 @@ const handleIllidanHeroPowers = (playerEntity, playerBoard, opponentEntity, oppo
40
40
  };
41
41
  exports.handleIllidanHeroPowers = handleIllidanHeroPowers;
42
42
  const handleStartOfCombatMinions = (playerEntity, playerBoard, opponentEntity, opponentBoard, currentAttacker, allCards, spawns, sharedState, gameState, spectator) => {
43
- let attackerForStart = Math.round(Math.random());
43
+ let attackerForStart = currentAttacker;
44
44
  const playerAttackers = playerBoard.filter((entity) => cards_data_1.START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId) !== -1);
45
45
  const opponentAttackers = opponentBoard.filter((entity) => cards_data_1.START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId) !== -1);
46
46
  while (playerAttackers.length > 0 || opponentAttackers.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"start-of-combat.js","sourceRoot":"","sources":["../../src/simulation/start-of-combat.ts"],"names":[],"mappings":";;;AACA,iEAA8E;AAI9E,oDAA0E;AAC1E,6CAA4E;AAC5E,oCAAwF;AACxF,qCAAyH;AACzH,mCAAkD;AAClD,+DAK+B;AAIxB,MAAM,mBAAmB,GAAG,CAClC,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACX,EAAE;IAKX,eAAe,GAAG,yBAAyB,CAC1C,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;IACF,eAAe,GAAG,+BAAuB,CACxC,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;IACF,eAAe,GAAG,qCAA6B,CAC9C,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;IACF,eAAe,GAAG,0BAA0B,CAC3C,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;IACF,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAjEW,QAAA,mBAAmB,uBAiE9B;AAEF,MAAM,yBAAyB,GAAG,CACjC,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACX,EAAE;IAGX,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,IAAI,2BAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/F,IAAI,iBAAiB,0BAAyC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QAEzF,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KAC1H;IAED,MAAM,mBAAmB,GAAG,cAAc,CAAC,WAAW,IAAI,2BAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACrG,IAAI,mBAAmB,0BAAyC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;QAC7F,qBAAqB,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KAC1H;IAED,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAEK,MAAM,uBAAuB,GAAG,CACtC,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACX,EAAE;IAGX,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;QACxB,eAAe,GAAG,6BAA6B,CAC9C,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,CACT,CAAC;QACF,eAAe,GAAG,6BAA6B,CAC9C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,CACT,CAAC;KACF;SAAM;QACN,eAAe,GAAG,6BAA6B,CAC9C,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,CACT,CAAC;QACF,eAAe,GAAG,6BAA6B,CAC9C,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,CACT,CAAC;KACF;IACD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAlEW,QAAA,uBAAuB,2BAkElC;AAEF,MAAM,0BAA0B,GAAG,CAClC,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACX,EAAE;IACX,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qCAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1H,MAAM,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,qCAAwB,CAAC,OAAO,CAAC,MAAM,CAAC,MAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9H,OAAO,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;QAClE,IAAI,gBAAgB,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,4CAAoC,CACnC,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;SACF;aAAM,IAAI,gBAAgB,KAAK,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YAClE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,4CAAoC,CACnC,QAAQ,EACR,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,SAAS,CACT,CAAC;SACF;QACD,gBAAgB,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC9C;IACD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAEK,MAAM,6BAA6B,GAAG,CAC5C,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAyB,EACzB,SAAoB,EACpB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACX,EAAE;IACX,MAAM,oBAAoB,GAAG,YAAY,CAAC,WAAW,IAAI,2BAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClG,MAAM,oBAAoB,GAAG,cAAc,CAAC,WAAW,IAAI,2BAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IACtG,MAAM,yBAAyB,GAC9B,CAAC,oBAAoB,0BAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,oBAAoB,0BAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,kBAAU,CAAC,WAAW,EAAE,yBAAyB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxE,kBAAU,CAAC,aAAa,EAAE,yBAAyB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAI1E,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;QACxB,eAAe,GAAG,mCAAmC,CACpD,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,eAAe,GAAG,mCAAmC,CACpD,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;KACF;SAAM;QACN,eAAe,GAAG,mCAAmC,CACpD,cAAc,EACd,aAAa,EACb,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,EACL,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,eAAe,GAAG,mCAAmC,CACpD,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;KACF;IACD,mBAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpC,mBAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AA5EW,QAAA,6BAA6B,iCA4ExC;AAEF,MAAM,6BAA6B,GAAG,CACrC,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAiB,EACjB,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAoB,EACX,EAAE;IACX,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,IAAI,2BAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/F,IAAI,iBAAiB,0BAAiC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QACjF,sBAAsB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC3H,eAAe,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;KAC5C;IACD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAGF,MAAM,sBAAsB,GAAG,CAC9B,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAoB,EACb,EAAE;IAGT,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;IAC1C,oBAAY,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACvD,wBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxD,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAC3E,IACC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,gCAAyC;QAClF,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,8BAAyC,EACjF;QACD,WAAW,CAAC,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC;KAC3C;IACD,uBAAc,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAEjI,IAAI,cAAc,GAAG,CAAC,EAAE;QACvB,oBAAY,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC5E,wBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7E,SAAS,CAAC,mBAAmB,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACrH,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,gCAAyC,EAAE;YACvF,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC;SAChE;QACD,uBAAc,CACb,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,WAAW,CAAC,MAAM,GAAG,CAAC,CACtB,CAAC;KACF;AACF,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC7B,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAoB,EACb,EAAE;IACT,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACnC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC;IAChC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC7B,WAA0B,EAC1B,YAA6B,EAC7B,aAA4B,EAC5B,cAA+B,EAC/B,QAAyB,EACzB,MAAiB,EACjB,WAAwB,EACxB,SAAoB,EACb,EAAE;IACT,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,MAAM,wBAAwB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,kBAAU,CAAC,wBAAwB,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,mCAA2B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEhE,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;IACnC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5B,oBAAY,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzD,oBAAY,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzD,wBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxC,SAAS,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mCAAmC,GAAG,CAC3C,YAA6B,EAC7B,WAA0B,EAC1B,cAA+B,EAC/B,aAA4B,EAC5B,eAAuB,EACvB,QAAiB,EACjB,QAAyB,EACzB,SAAoB,EACpB,WAAwB,EACxB,SAAoB,EACX,EAAE;;IACX,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,IAAI,2BAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC/F,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,qBAA2C,EAAE;QAC/F,qBAAqB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KAC7H;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAyB,EAAE;QACpF,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,0BAAiB,CACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,QACJ,YAAY,CAAC,aAAa,mCAAI,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1H,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;KAC5C;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAA0B,EAAE;QACrF,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,0BAAiB,CACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,QACJ,YAAY,CAAC,aAAa,mCAAI,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1H,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;KAC5C;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAwB,EAAE;QACnF,MAAM,oBAAoB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,kBAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QACjG,MAAM,UAAU,GAAG,0BAAiB,CACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,QACJ,YAAY,CAAC,aAAa,mCAAI,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1H,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;KAC5C;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAyB,EAAE;QACpF,MAAM,mBAAmB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,kBAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,0BAAiB,CACnC,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,QACJ,YAAY,CAAC,aAAa,mCAAI,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1H,YAAY,CAAC,iBAAiB,GAAG,UAAU,CAAC;KAC5C;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAiC,EAAE;QAC5F,qDAA+B,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACxE;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAiC,EAAE;QAC5F,qDAA+B,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACxE;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAgC,EAAE;QAC3F,oDAA8B,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;KACvE;SAAM,IAAI,YAAY,CAAC,aAAa,IAAI,iBAAiB,wBAAqC,EAAE;QAChG,yDAAmC,CAClC,WAAW,EACX,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;KAC1H;IACD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACjE,QAAQ,UAAU,EAAE;QACnB;YACC,6BAAoC;QACrC;YACC,6BAAwC;QACzC;YACC,6BAAuC;QACxC;YACC,6BAAwC;KACzC;IACD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAZW,QAAA,mBAAmB,uBAY9B;AAEK,MAAM,oCAAoC,GAAG,CACnD,QAAqB,EACrB,cAA6B,EAC7B,kBAAmC,EACnC,cAA6B,EAC7B,kBAAmC,EACnC,QAAyB,EACzB,SAAoB,EACpB,WAAwB,EACxB,SAAuB,EACvB,SAAoB,EACb,EAAE;IACT,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,WAAW,IAAI,2BAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9G,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,WAAW,IAAI,2BAAmB,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC9G,MAAM,yBAAyB,GAC9B,CAAC,oBAAoB,0BAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC,oBAAoB,0BAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,kBAAU,CAAC,cAAc,EAAE,yBAAyB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3E,kBAAU,CAAC,cAAc,EAAE,yBAAyB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAG3E,IAAI,QAAQ,CAAC,MAAM,cAAqB,EAAE;QACzC,MAAM,MAAM,GAAG,cAAc;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;aACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAc,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,gCAAuB,CACtB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CACjB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;KACF;SAAM,IAAI,QAAQ,CAAC,MAAM,sBAAkC,EAAE;QAC7D,MAAM,MAAM,GAAG,cAAc;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;aACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAc,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,gCAAuB,CACtB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,gCAAuB,CACtB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;QACF,2BAAkB,CACjB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,SAAS,CACT,CAAC;KACF;SAAM,IAAI,QAAQ,CAAC,MAAM,eAA6B,EAAE;QACxD,MAAM,eAAe,GAAG,cAAc;aACpC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;aACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAc,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,UAAU,GAAG,sBAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,oBAAY,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAChE,oBAAY,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAChE,wBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YACnD,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;KACH;SAAM,IAAI,QAAQ,CAAC,MAAM,iBAA0C,EAAE;QACrE,MAAM,OAAO,GAAG,cAAc;aAC5B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;aACrD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAc,CAAC,IAAI,EAAE,qBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,UAAU,GAAG,sBAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,oBAAY,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC5D,oBAAY,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC5D,wBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YACnD,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;KACH;SAAM,IAAI,QAAQ,CAAC,MAAM,0BAAoB,IAAI,QAAQ,CAAC,MAAM,4BAAgC,EAAE;QAClG,MAAM,UAAU,GAAG,sBAAa,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,4BAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;;YAC7B,oBAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAC,kBAAkB,CAAC,iBAAiB,mCAAI,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YACzG,oBAAY,CAAC,MAAM,EAAE,UAAU,GAAG,OAAC,kBAAkB,CAAC,iBAAiB,mCAAI,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YACzG,wBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC;YACnD,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;KACH;IACD,mBAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACvC,mBAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC,CAAC;AAvHW,QAAA,oCAAoC,wCAuH/C","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsGameState } from '../bgs-battle-info';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData, START_OF_COMBAT_CARD_IDS } from '../cards/cards-data';\r\nimport { pickMultipleRandomDifferent, pickRandom } from '../services/utils';\r\nimport { afterStatsUpdate, isCorrectTribe, modifyAttack, modifyHealth } from '../utils';\r\nimport { dealDamageToEnemy, dealDamageToRandomEnemy, getNeighbours, processMinionDeath, simulateAttack } from './attack';\r\nimport { applyAuras, removeAuras } from './auras';\r\nimport {\r\n\tapplyEarthInvocationEnchantment,\r\n\tapplyFireInvocationEnchantment,\r\n\tapplyLightningInvocationEnchantment,\r\n\tapplyWaterInvocationEnchantment,\r\n} from './deathrattle-effects';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const handleStartOfCombat = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// https://twitter.com/DCalkosz/status/1488361384320528388?s=20&t=1ECxRZFdjqwEa2fRsXk32Q\r\n\t// There’s a certain order for Start of Combat hero powers, rather than “coin flips” where\r\n\t// an unlucky trigger order could mess up some positioning you had planned for your own hero\r\n\t// power. “Precombat” (Al’Akir, Y’Shaarj), then Illidan, then others.\r\n\tcurrentAttacker = handlePreCombatHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleIllidanHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleStartOfCombatHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleStartOfCombatMinions(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handlePreCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// Some are part of the incoming board: Y'Shaarj, Lich King\r\n\t// Since the order is not important here, we just always do the player first\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerHeroPowerId === CardIds.SwattingInsectsBattlegrounds && playerBoard.length > 0) {\r\n\t\t// Should be sent by the app, but it is an idempotent operation, so we can just reapply it here\r\n\t\thandleAlakirForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, spawns, sharedState, spectator);\r\n\t}\r\n\r\n\tconst opponentHeroPowerId = opponentEntity.heroPowerId || getHeroPowerForHero(opponentEntity.cardId);\r\n\tif (opponentHeroPowerId === CardIds.SwattingInsectsBattlegrounds && opponentBoard.length > 0) {\r\n\t\thandleAlakirForPlayer(opponentBoard, opponentEntity, playerBoard, playerEntity, allCards, spawns, sharedState, spectator);\r\n\t}\r\n\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const handleIllidanHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// Apparently it's a toin coss about whether to handle Illidan first or Al'Akir first\r\n\t// Auras are only relevant for Illidan, and already applied there\r\n\tif (Math.random() < 0.5) {\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else {\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handleStartOfCombatMinions = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tlet attackerForStart = Math.round(Math.random());\r\n\tconst playerAttackers = playerBoard.filter((entity) => START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId as CardIds) !== -1);\r\n\tconst opponentAttackers = opponentBoard.filter((entity) => START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId as CardIds) !== -1);\r\n\twhile (playerAttackers.length > 0 || opponentAttackers.length > 0) {\r\n\t\tif (attackerForStart === 0 && playerAttackers.length > 0) {\r\n\t\t\tconst attacker = playerAttackers.splice(0, 1)[0];\r\n\t\t\tperformStartOfCombatMinionsForPlayer(\r\n\t\t\t\tattacker,\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\tallCards,\r\n\t\t\t\tspawns,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tgameState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t} else if (attackerForStart === 1 && opponentAttackers.length > 0) {\r\n\t\t\tconst attacker = opponentAttackers.splice(0, 1)[0];\r\n\t\t\tperformStartOfCombatMinionsForPlayer(\r\n\t\t\t\tattacker,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspawns,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tgameState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t}\r\n\t\tattackerForStart = (attackerForStart + 1) % 2;\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const handleStartOfCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst attackingHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tconst defendingHeroPowerId = opponentEntity.heroPowerId || getHeroPowerForHero(opponentEntity.cardId);\r\n\tconst numberOfDeathwingPresents =\r\n\t\t(attackingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0) +\r\n\t\t(defendingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0);\r\n\tapplyAuras(playerBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\tapplyAuras(opponentBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\r\n\t// Apparently it's a toin coss about whether to handle Illidan first or Al'Akir first\r\n\t// Auras are only relevant for Illidan, and already applied there\r\n\tif (Math.random() < 0.5) {\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else {\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t}\r\n\tremoveAuras(playerBoard, cardsData);\r\n\tremoveAuras(opponentBoard, cardsData);\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handlePlayerIllidanHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tfriendly: boolean,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerHeroPowerId === CardIds.WingmenBattlegrounds && playerBoard.length > 0) {\r\n\t\thandleIllidanForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, spawns, sharedState, spectator);\r\n\t\tcurrentAttacker = (currentAttacker + 1) % 2;\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\n// TODO: not exactly correct, because of \"attack immediately\", but it's close enough\r\nconst handleIllidanForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\t// Otherwise, if the first minion dies on the attack, and the board has only 2 minions, we\r\n\t// miss the second one\r\n\tconst minionsAtStart = playerBoard.length;\r\n\tmodifyAttack(playerBoard[0], 2, playerBoard, allCards);\r\n\tafterStatsUpdate(playerBoard[0], playerBoard, allCards);\r\n\tspectator.registerPowerTarget(playerBoard[0], playerBoard[0], playerBoard);\r\n\tif (\r\n\t\tplayerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds2) ||\r\n\t\tplayerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds1)\r\n\t) {\r\n\t\tplayerBoard[0].immuneWhenAttackCharges = 1;\r\n\t}\r\n\tsimulateAttack(playerBoard, playerEntity, opponentBoard, opponentEntity, undefined, allCards, spawns, sharedState, spectator, 0);\r\n\r\n\tif (minionsAtStart > 1) {\r\n\t\tmodifyAttack(playerBoard[playerBoard.length - 1], 2, playerBoard, allCards);\r\n\t\tafterStatsUpdate(playerBoard[playerBoard.length - 1], playerBoard, allCards);\r\n\t\tspectator.registerPowerTarget(playerBoard[playerBoard.length - 1], playerBoard[playerBoard.length - 1], playerBoard);\r\n\t\tif (playerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds2)) {\r\n\t\t\tplayerBoard[playerBoard.length - 1].immuneWhenAttackCharges = 1;\r\n\t\t}\r\n\t\tsimulateAttack(\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tundefined,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tplayerBoard.length - 1,\r\n\t\t);\r\n\t}\r\n};\r\n\r\nconst handleAlakirForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst firstEntity = playerBoard[0];\r\n\tfirstEntity.windfury = true;\r\n\tfirstEntity.divineShield = true;\r\n\tfirstEntity.taunt = true;\r\n\tspectator.registerPowerTarget(firstEntity, firstEntity, playerBoard);\r\n};\r\n\r\nconst handleTamsinForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst lowestHealth = Math.min(...playerBoard.map((e) => e.health));\r\n\tconst entitiesWithLowestHealth = playerBoard.filter((e) => e.health === lowestHealth);\r\n\tconst chosenEntity = pickRandom(entitiesWithLowestHealth);\r\n\tconst newBoard = playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);\r\n\tconst buffedEntities = pickMultipleRandomDifferent(newBoard, 4);\r\n\t// How to mark the minion as dead\r\n\tchosenEntity.definitelyDead = true;\r\n\tbuffedEntities.forEach((e) => {\r\n\t\tmodifyAttack(e, chosenEntity.attack, newBoard, allCards);\r\n\t\tmodifyHealth(e, chosenEntity.health, newBoard, allCards);\r\n\t\tafterStatsUpdate(e, newBoard, allCards);\r\n\t\tspectator.registerPowerTarget(chosenEntity, e, newBoard);\r\n\t});\r\n};\r\n\r\nconst handlePlayerStartOfCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tfriendly: boolean,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.TamsinRoame_FragrantPhylactery) {\r\n\t\thandleTamsinForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimLeftToken) {\r\n\t\tconst target = opponentBoard[0];\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimRightToken) {\r\n\t\tconst target = opponentBoard[opponentBoard.length - 1];\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimLowToken) {\r\n\t\tconst smallestHealthMinion = [...opponentBoard].sort((a, b) => a.health - b.health)[0];\r\n\t\tconst target = pickRandom(opponentBoard.filter((e) => e.health === smallestHealthMinion.health));\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimHighToken) {\r\n\t\tconst highestHealthMinion = [...opponentBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\tconst target = pickRandom(opponentBoard.filter((e) => e.health === highestHealthMinion.health));\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.EarthInvocationToken) {\r\n\t\tapplyEarthInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.WaterInvocationToken) {\r\n\t\tapplyWaterInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.FireInvocationToken) {\r\n\t\tapplyFireInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.LightningInvocationToken) {\r\n\t\tapplyLightningInvocationEnchantment(\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tnull,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const getHeroPowerForHero = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.IllidanStormrageBattlegrounds:\r\n\t\t\treturn CardIds.WingmenBattlegrounds;\r\n\t\tcase CardIds.TheLichKingBattlegrounds:\r\n\t\t\treturn CardIds.RebornRitesBattlegrounds;\r\n\t\tcase CardIds.ProfessorPutricideBattlegrounds:\r\n\t\t\treturn CardIds.RagePotionBattlegrounds;\r\n\t\tcase CardIds.DeathwingBattlegrounds:\r\n\t\t\treturn CardIds.AllWillBurnBattlegrounds;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const performStartOfCombatMinionsForPlayer = (\r\n\tattacker: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst attackingHeroPowerId = attackingBoardHero.heroPowerId || getHeroPowerForHero(attackingBoardHero.cardId);\r\n\tconst defendingHeroPowerId = defendingBoardHero.heroPowerId || getHeroPowerForHero(defendingBoardHero.cardId);\r\n\tconst numberOfDeathwingPresents =\r\n\t\t(attackingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0) +\r\n\t\t(defendingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0);\r\n\tapplyAuras(attackingBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\tapplyAuras(defendingBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\r\n\t// For now we're only dealing with the red whelp\r\n\tif (attacker.cardId === CardIds.RedWhelp) {\r\n\t\tconst damage = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else if (attacker.cardId === CardIds.RedWhelpBattlegrounds) {\r\n\t\tconst damage = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else if (attacker.cardId === CardIds.PrizedPromoDrake) {\r\n\t\tconst numberOfDragons = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, numberOfDragons, attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, numberOfDragons, attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t} else if (attacker.cardId === CardIds.PrizedPromoDrakeBattlegrounds) {\r\n\t\tconst dragons = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 2 * dragons, attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, 2 * dragons, attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t} else if (attacker.cardId === CardIds.Crabby1 || attacker.cardId === CardIds.CrabbyBattlegrounds) {\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tconst multiplier = attacker.cardId === CardIds.CrabbyBattlegrounds ? 2 : 1;\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, multiplier * (attackingBoardHero.deadEyeDamageDone ?? 0), attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, multiplier * (attackingBoardHero.deadEyeDamageDone ?? 0), attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t}\r\n\tremoveAuras(attackingBoard, cardsData);\r\n\tremoveAuras(defendingBoard, cardsData);\r\n};\r\n"]}
1
+ {"version":3,"file":"start-of-combat.js","sourceRoot":"","sources":["../../src/simulation/start-of-combat.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsGameState } from '../bgs-battle-info';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData, START_OF_COMBAT_CARD_IDS } from '../cards/cards-data';\r\nimport { pickMultipleRandomDifferent, pickRandom } from '../services/utils';\r\nimport { afterStatsUpdate, isCorrectTribe, modifyAttack, modifyHealth } from '../utils';\r\nimport { dealDamageToEnemy, dealDamageToRandomEnemy, getNeighbours, processMinionDeath, simulateAttack } from './attack';\r\nimport { applyAuras, removeAuras } from './auras';\r\nimport {\r\n\tapplyEarthInvocationEnchantment,\r\n\tapplyFireInvocationEnchantment,\r\n\tapplyLightningInvocationEnchantment,\r\n\tapplyWaterInvocationEnchantment,\r\n} from './deathrattle-effects';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const handleStartOfCombat = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// https://twitter.com/DCalkosz/status/1488361384320528388?s=20&t=1ECxRZFdjqwEa2fRsXk32Q\r\n\t// There’s a certain order for Start of Combat hero powers, rather than “coin flips” where\r\n\t// an unlucky trigger order could mess up some positioning you had planned for your own hero\r\n\t// power. “Precombat” (Al’Akir, Y’Shaarj), then Illidan, then others.\r\n\tcurrentAttacker = handlePreCombatHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleIllidanHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleStartOfCombatHeroPowers(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\tcurrentAttacker = handleStartOfCombatMinions(\r\n\t\tplayerEntity,\r\n\t\tplayerBoard,\r\n\t\topponentEntity,\r\n\t\topponentBoard,\r\n\t\tcurrentAttacker,\r\n\t\tallCards,\r\n\t\tspawns,\r\n\t\tsharedState,\r\n\t\tgameState,\r\n\t\tspectator,\r\n\t);\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handlePreCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// Some are part of the incoming board: Y'Shaarj, Lich King\r\n\t// Since the order is not important here, we just always do the player first\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerHeroPowerId === CardIds.SwattingInsectsBattlegrounds && playerBoard.length > 0) {\r\n\t\t// Should be sent by the app, but it is an idempotent operation, so we can just reapply it here\r\n\t\thandleAlakirForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, spawns, sharedState, spectator);\r\n\t}\r\n\r\n\tconst opponentHeroPowerId = opponentEntity.heroPowerId || getHeroPowerForHero(opponentEntity.cardId);\r\n\tif (opponentHeroPowerId === CardIds.SwattingInsectsBattlegrounds && opponentBoard.length > 0) {\r\n\t\thandleAlakirForPlayer(opponentBoard, opponentEntity, playerBoard, playerEntity, allCards, spawns, sharedState, spectator);\r\n\t}\r\n\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const handleIllidanHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\t// Apparently it's a toin coss about whether to handle Illidan first or Al'Akir first\r\n\t// Auras are only relevant for Illidan, and already applied there\r\n\tif (Math.random() < 0.5) {\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else {\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerIllidanHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handleStartOfCombatMinions = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tlet attackerForStart = currentAttacker;\r\n\tconst playerAttackers = playerBoard.filter((entity) => START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId as CardIds) !== -1);\r\n\tconst opponentAttackers = opponentBoard.filter((entity) => START_OF_COMBAT_CARD_IDS.indexOf(entity.cardId as CardIds) !== -1);\r\n\twhile (playerAttackers.length > 0 || opponentAttackers.length > 0) {\r\n\t\tif (attackerForStart === 0 && playerAttackers.length > 0) {\r\n\t\t\tconst attacker = playerAttackers.splice(0, 1)[0];\r\n\t\t\tperformStartOfCombatMinionsForPlayer(\r\n\t\t\t\tattacker,\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\tallCards,\r\n\t\t\t\tspawns,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tgameState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t} else if (attackerForStart === 1 && opponentAttackers.length > 0) {\r\n\t\t\tconst attacker = opponentAttackers.splice(0, 1)[0];\r\n\t\t\tperformStartOfCombatMinionsForPlayer(\r\n\t\t\t\tattacker,\r\n\t\t\t\topponentBoard,\r\n\t\t\t\topponentEntity,\r\n\t\t\t\tplayerBoard,\r\n\t\t\t\tplayerEntity,\r\n\t\t\t\tallCards,\r\n\t\t\t\tspawns,\r\n\t\t\t\tsharedState,\r\n\t\t\t\tgameState,\r\n\t\t\t\tspectator,\r\n\t\t\t);\r\n\t\t}\r\n\t\tattackerForStart = (attackerForStart + 1) % 2;\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const handleStartOfCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst attackingHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tconst defendingHeroPowerId = opponentEntity.heroPowerId || getHeroPowerForHero(opponentEntity.cardId);\r\n\tconst numberOfDeathwingPresents =\r\n\t\t(attackingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0) +\r\n\t\t(defendingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0);\r\n\tapplyAuras(playerBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\tapplyAuras(opponentBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\r\n\t// Apparently it's a toin coss about whether to handle Illidan first or Al'Akir first\r\n\t// Auras are only relevant for Illidan, and already applied there\r\n\tif (Math.random() < 0.5) {\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else {\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\tfalse,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tcurrentAttacker = handlePlayerStartOfCombatHeroPowers(\r\n\t\t\tplayerEntity,\r\n\t\t\tplayerBoard,\r\n\t\t\topponentEntity,\r\n\t\t\topponentBoard,\r\n\t\t\tcurrentAttacker,\r\n\t\t\ttrue,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t}\r\n\tremoveAuras(playerBoard, cardsData);\r\n\tremoveAuras(opponentBoard, cardsData);\r\n\treturn currentAttacker;\r\n};\r\n\r\nconst handlePlayerIllidanHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tfriendly: boolean,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerHeroPowerId === CardIds.WingmenBattlegrounds && playerBoard.length > 0) {\r\n\t\thandleIllidanForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, spawns, sharedState, spectator);\r\n\t\tcurrentAttacker = (currentAttacker + 1) % 2;\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\n// TODO: not exactly correct, because of \"attack immediately\", but it's close enough\r\nconst handleIllidanForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\t// Otherwise, if the first minion dies on the attack, and the board has only 2 minions, we\r\n\t// miss the second one\r\n\tconst minionsAtStart = playerBoard.length;\r\n\tmodifyAttack(playerBoard[0], 2, playerBoard, allCards);\r\n\tafterStatsUpdate(playerBoard[0], playerBoard, allCards);\r\n\tspectator.registerPowerTarget(playerBoard[0], playerBoard[0], playerBoard);\r\n\tif (\r\n\t\tplayerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds2) ||\r\n\t\tplayerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds1)\r\n\t) {\r\n\t\tplayerBoard[0].immuneWhenAttackCharges = 1;\r\n\t}\r\n\tsimulateAttack(playerBoard, playerEntity, opponentBoard, opponentEntity, undefined, allCards, spawns, sharedState, spectator, 0);\r\n\r\n\tif (minionsAtStart > 1) {\r\n\t\tmodifyAttack(playerBoard[playerBoard.length - 1], 2, playerBoard, allCards);\r\n\t\tafterStatsUpdate(playerBoard[playerBoard.length - 1], playerBoard, allCards);\r\n\t\tspectator.registerPowerTarget(playerBoard[playerBoard.length - 1], playerBoard[playerBoard.length - 1], playerBoard);\r\n\t\tif (playerBoard.map((e) => e.cardId).includes(CardIds.EclipsionIllidariBattlegrounds2)) {\r\n\t\t\tplayerBoard[playerBoard.length - 1].immuneWhenAttackCharges = 1;\r\n\t\t}\r\n\t\tsimulateAttack(\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tundefined,\r\n\t\t\tallCards,\r\n\t\t\tspawns,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t\tplayerBoard.length - 1,\r\n\t\t);\r\n\t}\r\n};\r\n\r\nconst handleAlakirForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst firstEntity = playerBoard[0];\r\n\tfirstEntity.windfury = true;\r\n\tfirstEntity.divineShield = true;\r\n\tfirstEntity.taunt = true;\r\n\tspectator.registerPowerTarget(firstEntity, firstEntity, playerBoard);\r\n};\r\n\r\nconst handleTamsinForPlayer = (\r\n\tplayerBoard: BoardEntity[],\r\n\tplayerEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tspawns: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst lowestHealth = Math.min(...playerBoard.map((e) => e.health));\r\n\tconst entitiesWithLowestHealth = playerBoard.filter((e) => e.health === lowestHealth);\r\n\tconst chosenEntity = pickRandom(entitiesWithLowestHealth);\r\n\tconst newBoard = playerBoard.filter((e) => e.entityId !== chosenEntity.entityId);\r\n\tconst buffedEntities = pickMultipleRandomDifferent(newBoard, 4);\r\n\t// How to mark the minion as dead\r\n\tchosenEntity.definitelyDead = true;\r\n\tbuffedEntities.forEach((e) => {\r\n\t\tmodifyAttack(e, chosenEntity.attack, newBoard, allCards);\r\n\t\tmodifyHealth(e, chosenEntity.health, newBoard, allCards);\r\n\t\tafterStatsUpdate(e, newBoard, allCards);\r\n\t\tspectator.registerPowerTarget(chosenEntity, e, newBoard);\r\n\t});\r\n};\r\n\r\nconst handlePlayerStartOfCombatHeroPowers = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tplayerBoard: BoardEntity[],\r\n\topponentEntity: BgsPlayerEntity,\r\n\topponentBoard: BoardEntity[],\r\n\tcurrentAttacker: number,\r\n\tfriendly: boolean,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tspectator: Spectator,\r\n): number => {\r\n\tconst playerHeroPowerId = playerEntity.heroPowerId || getHeroPowerForHero(playerEntity.cardId);\r\n\tif (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.TamsinRoame_FragrantPhylactery) {\r\n\t\thandleTamsinForPlayer(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimLeftToken) {\r\n\t\tconst target = opponentBoard[0];\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimRightToken) {\r\n\t\tconst target = opponentBoard[opponentBoard.length - 1];\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimLowToken) {\r\n\t\tconst smallestHealthMinion = [...opponentBoard].sort((a, b) => a.health - b.health)[0];\r\n\t\tconst target = pickRandom(opponentBoard.filter((e) => e.health === smallestHealthMinion.health));\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.AimHighToken) {\r\n\t\tconst highestHealthMinion = [...opponentBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\tconst target = pickRandom(opponentBoard.filter((e) => e.health === highestHealthMinion.health));\r\n\t\tconst damageDone = dealDamageToEnemy(\r\n\t\t\ttarget,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tnull,\r\n\t\t\tplayerEntity.heroPowerInfo ?? 0,\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t\tplayerEntity.deadEyeDamageDone = damageDone;\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.EarthInvocationToken) {\r\n\t\tapplyEarthInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.WaterInvocationToken) {\r\n\t\tapplyWaterInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.FireInvocationToken) {\r\n\t\tapplyFireInvocationEnchantment(playerBoard, null, allCards, spectator);\r\n\t} else if (playerEntity.heroPowerUsed && playerHeroPowerId === CardIds.LightningInvocationToken) {\r\n\t\tapplyLightningInvocationEnchantment(\r\n\t\t\tplayerBoard,\r\n\t\t\tplayerEntity,\r\n\t\t\tnull,\r\n\t\t\topponentBoard,\r\n\t\t\topponentEntity,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(playerBoard, playerEntity, opponentBoard, opponentEntity, allCards, cardsData, sharedState, spectator);\r\n\t}\r\n\treturn currentAttacker;\r\n};\r\n\r\nexport const getHeroPowerForHero = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.IllidanStormrageBattlegrounds:\r\n\t\t\treturn CardIds.WingmenBattlegrounds;\r\n\t\tcase CardIds.TheLichKingBattlegrounds:\r\n\t\t\treturn CardIds.RebornRitesBattlegrounds;\r\n\t\tcase CardIds.ProfessorPutricideBattlegrounds:\r\n\t\t\treturn CardIds.RagePotionBattlegrounds;\r\n\t\tcase CardIds.DeathwingBattlegrounds:\r\n\t\t\treturn CardIds.AllWillBurnBattlegrounds;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const performStartOfCombatMinionsForPlayer = (\r\n\tattacker: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingBoard: BoardEntity[],\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tgameState: BgsGameState,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst attackingHeroPowerId = attackingBoardHero.heroPowerId || getHeroPowerForHero(attackingBoardHero.cardId);\r\n\tconst defendingHeroPowerId = defendingBoardHero.heroPowerId || getHeroPowerForHero(defendingBoardHero.cardId);\r\n\tconst numberOfDeathwingPresents =\r\n\t\t(attackingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0) +\r\n\t\t(defendingHeroPowerId === CardIds.AllWillBurnBattlegrounds ? 1 : 0);\r\n\tapplyAuras(attackingBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\tapplyAuras(defendingBoard, numberOfDeathwingPresents, cardsData, allCards);\r\n\r\n\t// For now we're only dealing with the red whelp\r\n\tif (attacker.cardId === CardIds.RedWhelp) {\r\n\t\tconst damage = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else if (attacker.cardId === CardIds.RedWhelpBattlegrounds) {\r\n\t\tconst damage = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tdealDamageToRandomEnemy(\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tattacker,\r\n\t\t\tdamage,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t\tprocessMinionDeath(\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tdefendingBoard,\r\n\t\t\tdefendingBoardHero,\r\n\t\t\tallCards,\r\n\t\t\tcardsData,\r\n\t\t\tsharedState,\r\n\t\t\tspectator,\r\n\t\t);\r\n\t} else if (attacker.cardId === CardIds.PrizedPromoDrake) {\r\n\t\tconst numberOfDragons = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, numberOfDragons, attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, numberOfDragons, attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t} else if (attacker.cardId === CardIds.PrizedPromoDrakeBattlegrounds) {\r\n\t\tconst dragons = attackingBoard\r\n\t\t\t.map((entity) => allCards.getCard(entity.cardId).race)\r\n\t\t\t.filter((race) => isCorrectTribe(race, Race.DRAGON)).length;\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 2 * dragons, attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, 2 * dragons, attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t} else if (attacker.cardId === CardIds.Crabby1 || attacker.cardId === CardIds.CrabbyBattlegrounds) {\r\n\t\tconst neighbours = getNeighbours(attackingBoard, attacker);\r\n\t\tconst multiplier = attacker.cardId === CardIds.CrabbyBattlegrounds ? 2 : 1;\r\n\t\tneighbours.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, multiplier * (attackingBoardHero.deadEyeDamageDone ?? 0), attackingBoard, allCards);\r\n\t\t\tmodifyHealth(entity, multiplier * (attackingBoardHero.deadEyeDamageDone ?? 0), attackingBoard, allCards);\r\n\t\t\tafterStatsUpdate(entity, attackingBoard, allCards);\r\n\t\t\tspectator.registerPowerTarget(attacker, entity, attackingBoard);\r\n\t\t});\r\n\t}\r\n\tremoveAuras(attackingBoard, cardsData);\r\n\tremoveAuras(defendingBoard, cardsData);\r\n};\r\n"]}
package/dist/utils.js CHANGED
@@ -158,7 +158,7 @@ const makeMinionGolden = (target, source, sourceBoard, allCards, spectator) => {
158
158
  const refCard = allCards.getCard(target.cardId);
159
159
  const goldenCard = allCards.getCardFromDbfId(refCard.battlegroundsPremiumDbfId);
160
160
  target.cardId = goldenCard.id;
161
- target.avengeCurrent = Math.max(0, target.avengeCurrent - 1);
161
+ target.avengeCurrent = Math.min(target.avengeDefault, target.avengeCurrent + 1);
162
162
  exports.modifyAttack(target, refCard.attack, sourceBoard, allCards);
163
163
  exports.modifyHealth(target, refCard.health, sourceBoard, allCards);
164
164
  exports.afterStatsUpdate(target, sourceBoard, allCards);
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, CardIds, Race, ReferenceCard } 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 { Spectator } from './simulation/spectator/spectator';\r\n\r\nconst CLEAVE_IDS = [CardIds.CaveHydra, CardIds.CaveHydraBattlegrounds, CardIds.FoeReaper4000, CardIds.FoeReaper4000Battlegrounds];\r\n// Because for some reason, the Taunt keyword is only a referenced tag,\r\n// so we have to know when a taunt minion is spawned (the taunt tag\r\n// is passed in input properly, so it's not an issue there)\r\nconst TAUNT_IDS = [\r\n\tCardIds.YoHoOgre,\r\n\tCardIds.YoHoOgreBattlegrounds,\r\n\tCardIds.SecurityRover_GuardBotToken,\r\n\tCardIds.SecurityRover_GuardBotTokenBattlegrounds,\r\n\tCardIds.MoltenRock,\r\n\tCardIds.MoltenRockBattlegrounds,\r\n\tCardIds.LieutenantGarr,\r\n\tCardIds.LieutenantGarrBattlegrounds,\r\n\tCardIds.GentleDjinni,\r\n\tCardIds.GentleDjinniBattlegrounds,\r\n\tCardIds.AcolyteOfCthun,\r\n\tCardIds.AcolyteOfCthunBattlegrounds,\r\n\tCardIds.RingMatron,\r\n\tCardIds.RingMatronBattlegrounds,\r\n\tCardIds.DynamicDuo,\r\n\tCardIds.DynamicDuoBattlegrounds,\r\n\tCardIds.InsatiableUrzul,\r\n\tCardIds.InsatiableUrzulBattlegrounds,\r\n\tCardIds.MasterOfRealities2,\r\n\tCardIds.MasterOfRealitiesBattlegrounds,\r\n\tCardIds.BrannsEpicEggBattlegrounds1,\r\n\tCardIds.BrannsEpicEggBattlegrounds2,\r\n\tCardIds.KilrekBattlegrounds1,\r\n\tCardIds.KilrekBattlegrounds2,\r\n];\r\nconst ATTACK_IMMEDIATELY_IDS = [\r\n\tCardIds.Scallywag_SkyPirateToken,\r\n\tCardIds.Scallywag_SkyPirateTokenBattlegrounds,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\nexport const MEGA_WINDFURY_IDS = [\r\n\tCardIds.ZappSlywickBattlegrounds,\r\n\tCardIds.CracklingCycloneBattlegrounds,\r\n\tCardIds.BristlebackKnight2,\r\n\tCardIds.BonkerBattlegrounds,\r\n];\r\nconst CANT_ATTACK_IDS = [CardIds.ArcaneCannonBattlegrounds];\r\n\r\nexport const buildSingleBoardEntity = (\r\n\tcardId: string,\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tentityId = 1,\r\n\tspawnReborn = false,\r\n\tcardsData: CardsData,\r\n\tspectator: Spectator,\r\n): BoardEntity => {\r\n\tconst card = allCards.getCard(cardId);\r\n\tconst megaWindfury = MEGA_WINDFURY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst attackImmediately = ATTACK_IMMEDIATELY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst newEntity = addImpliedMechanics({\r\n\t\tattack: card.attack,\r\n\t\tattacksPerformed: 0,\r\n\t\tcardId: cardId,\r\n\t\tdivineShield: hasMechanic(card, 'DIVINE_SHIELD'),\r\n\t\tentityId: entityId,\r\n\t\thealth: card.health,\r\n\t\tmaxHealth: card.health,\r\n\t\ttaunt: hasMechanic(card, 'TAUNT') || TAUNT_IDS.includes(cardId as CardIds),\r\n\t\treborn: hasMechanic(card, 'REBORN'),\r\n\t\tpoisonous: hasMechanic(card, 'POISONOUS'),\r\n\t\twindfury: !megaWindfury && (hasMechanic(card, 'WINDFURY') || card.referencedTags?.includes('WINDFURY')),\r\n\t\tmegaWindfury: megaWindfury,\r\n\t\tenchantments: [],\r\n\t\tfriendly: friendly,\r\n\t\tattackImmediately: attackImmediately,\r\n\t\tavengeCurrent: cardsData.avengeValue(cardId),\r\n\t\tavengeDefault: cardsData.avengeValue(cardId),\r\n\t} as BoardEntity);\r\n\r\n\tif (spawnReborn) {\r\n\t\tnewEntity.health = 1;\r\n\t\tnewEntity.reborn = false;\r\n\t}\r\n\r\n\tif (controllerHero?.heroPowerId === CardIds.SproutItOutBattlegrounds) {\r\n\t\tnewEntity.taunt = true;\r\n\t\tmodifyAttack(newEntity, 1, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, 2, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t\t// spectator && spectator.registerPowerTarget(result, result, friendlyBoard);\r\n\t} else if (controllerHero?.heroPowerId === CardIds.KurtrusAshfallen_CloseThePortal) {\r\n\t\tmodifyAttack(newEntity, 2, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, 2, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t\t// spectator && spectator.registerPowerTarget(result, result, friendlyBoard);\r\n\t}\r\n\r\n\tif (allCards.getCard(cardId).techLevel === controllerHero.tavernTier) {\r\n\t\tconst statsBonus =\r\n\t\t\t4 * friendlyBoard.filter((e) => e.cardId === CardIds.BabyYshaarjBattlegrounds1).length +\r\n\t\t\t8 * friendlyBoard.filter((e) => e.cardId === CardIds.BabyYshaarjBattlegrounds2).length;\r\n\t\tmodifyAttack(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t}\r\n\r\n\tif (newEntity.taunt) {\r\n\t\tconst statsBonus =\r\n\t\t\t2 * friendlyBoard.filter((e) => e.cardId === CardIds.WanderingTreantBattlegrounds1).length +\r\n\t\t\t4 * friendlyBoard.filter((e) => e.cardId === CardIds.WanderingTreantBattlegrounds2).length;\r\n\t\tmodifyAttack(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t}\r\n\r\n\treturn newEntity;\r\n};\r\n\r\nexport const modifyAttack = (entity: BoardEntity, amount: number, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\t// console.log('modifying attack', amount, stringifySimpleCard(entity, allCards), entity.attack);\r\n\tentity.attack = Math.max(0, entity.attack + amount);\r\n\t// console.log('modified attack', amount, stringifySimpleCard(entity, allCards), entity.attack);\r\n\tentity.previousAttack = entity.attack;\r\n\tif (isCorrectTribe(allCards.getCard(entity.cardId).race, Race.DRAGON)) {\r\n\t\tconst whelpSmugglers = friendlyBoard.filter((e) => e.cardId === CardIds.WhelpSmuggler);\r\n\t\tconst whelpSmugglersBattlegrounds = friendlyBoard.filter((e) => e.cardId === CardIds.WhelpSmugglerBattlegrounds);\r\n\t\twhelpSmugglers.forEach((smuggler) => {\r\n\t\t\tmodifyHealth(entity, 1, friendlyBoard, allCards);\r\n\t\t});\r\n\t\twhelpSmugglersBattlegrounds.forEach((smuggler) => {\r\n\t\t\tmodifyHealth(entity, 2, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\tif (entity.cardId === CardIds.Menagerist_AmalgamTokenBattlegrounds || entity.cardId === CardIds.CuddlgamBattlegrounds) {\r\n\t\tconst mishmashes = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MishmashBattlegrounds1 || e.cardId === CardIds.MishmashBattlegrounds2,\r\n\t\t);\r\n\t\tmishmashes.forEach((mishmash) => {\r\n\t\t\tmodifyAttack(mishmash, (mishmash.cardId === CardIds.MishmashBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const modifyHealth = (entity: BoardEntity, amount: number, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\tentity.health += amount;\r\n\tif (amount > 0) {\r\n\t\tentity.maxHealth += amount;\r\n\t}\r\n\tif (entity.cardId === CardIds.Menagerist_AmalgamTokenBattlegrounds || entity.cardId === CardIds.CuddlgamBattlegrounds) {\r\n\t\tconst mishmashes = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MishmashBattlegrounds1 || e.cardId === CardIds.MishmashBattlegrounds2,\r\n\t\t);\r\n\t\tmishmashes.forEach((mishmash) => {\r\n\t\t\tmodifyHealth(mishmash, (mishmash.cardId === CardIds.MishmashBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\r\n\tconst titanicGuardians = friendlyBoard\r\n\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t.filter((e) => e.cardId === CardIds.TitanicGuardianBattlegrounds1 || e.cardId === CardIds.TitanicGuardianBattlegrounds2);\r\n\ttitanicGuardians.forEach((guardian) => {\r\n\t\tmodifyHealth(guardian, (guardian.cardId === CardIds.TitanicGuardianBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t});\r\n};\r\n\r\nexport const afterStatsUpdate = (entity: BoardEntity, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\tif (hasCorrectTribe(entity, Race.ELEMENTAL, allCards)) {\r\n\t\tconst masterOfRealities = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MasterOfRealities2 || e.cardId === CardIds.MasterOfRealitiesBattlegrounds,\r\n\t\t);\r\n\t\tmasterOfRealities.forEach((master) => {\r\n\t\t\tmodifyAttack(master, master.cardId === CardIds.MasterOfRealitiesBattlegrounds ? 2 : 1, friendlyBoard, allCards);\r\n\t\t\tmodifyHealth(master, master.cardId === CardIds.MasterOfRealitiesBattlegrounds ? 2 : 1, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\tconst tentaclesOfCthun = friendlyBoard\r\n\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t.filter((e) => e.cardId === CardIds.TentacleOfCthunBattlegrounds1 || e.cardId === CardIds.TentacleOfCthunBattlegrounds2);\r\n\ttentaclesOfCthun.forEach((tentacle) => {\r\n\t\tmodifyAttack(tentacle, tentacle.cardId === CardIds.TentacleOfCthunBattlegrounds2 ? 2 : 1, friendlyBoard, allCards);\r\n\t\tmodifyHealth(tentacle, tentacle.cardId === CardIds.TentacleOfCthunBattlegrounds2 ? 2 : 1, friendlyBoard, allCards);\r\n\t});\r\n};\r\n\r\nexport const makeMinionGolden = (\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity,\r\n\tsourceBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst refCard = allCards.getCard(target.cardId);\r\n\tconst goldenCard = allCards.getCardFromDbfId(refCard.battlegroundsPremiumDbfId);\r\n\ttarget.cardId = goldenCard.id;\r\n\t// A minion becoming golden ignore the current death.\r\n\t// This way of handling it is not ideal, since it will still trigger if both avenges trigger at the same time, but\r\n\t// should solve the other cases\r\n\ttarget.avengeCurrent = Math.max(0, target.avengeCurrent - 1);\r\n\tmodifyAttack(target, refCard.attack, sourceBoard, allCards);\r\n\tmodifyHealth(target, refCard.health, sourceBoard, allCards);\r\n\tafterStatsUpdate(target, sourceBoard, allCards);\r\n\tspectator.registerPowerTarget(source, target, sourceBoard);\r\n};\r\n\r\nexport const grantRandomAttack = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tadditionalAttack: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tif (board.length > 0) {\r\n\t\tconst target = board[Math.floor(Math.random() * board.length)];\r\n\t\tmodifyAttack(target, additionalAttack, board, allCards);\r\n\t\tafterStatsUpdate(target, board, allCards);\r\n\t\tspectator.registerPowerTarget(source, target, board);\r\n\t}\r\n};\r\n\r\nexport const grantRandomHealth = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thealth: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board.filter((e) => !excludeSource || e.entityId !== source.entityId);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = candidateBoard[Math.floor(Math.random() * candidateBoard.length)];\r\n\t\tmodifyHealth(target, health, board, allCards);\r\n\t\tafterStatsUpdate(target, board, allCards);\r\n\t\tspectator.registerPowerTarget(source, target, board);\r\n\t}\r\n};\r\n\r\nexport const grantRandomStats = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tattack: number,\r\n\thealth: number,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): BoardEntity => {\r\n\tif (board.length > 0) {\r\n\t\tconst validBeast: BoardEntity = getRandomMinion(board, race, allCards);\r\n\t\tif (validBeast) {\r\n\t\t\tmodifyAttack(validBeast, attack, board, allCards);\r\n\t\t\tmodifyHealth(validBeast, health, board, allCards);\r\n\t\t\tafterStatsUpdate(validBeast, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(source, validBeast, board);\r\n\t\t\treturn validBeast;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcards: number,\r\n\tboard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tcardAdded: CardIds = null,\r\n): void => {\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSageBattlegrounds);\r\n\tconst multiplier = 1 + (cardAdded === CardIds.BloodGem ? sages.length + 2 * sagesGolden.length : 0);\r\n\tplayerEntity.cardsInHand = Math.min(10, (playerEntity.cardsInHand ?? 0) + multiplier * cards);\r\n\r\n\tconst peggys = board.filter((e) => e.cardId === CardIds.PeggyBrittlebone || e.cardId === CardIds.PeggyBrittleboneBattlegrounds);\r\n\tpeggys.forEach((peggy) => {\r\n\t\tconst pirate = getRandomMinion(\r\n\t\t\tboard.filter((e) => e.entityId !== peggy.entityId),\r\n\t\t\tRace.PIRATE,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t\tif (pirate) {\r\n\t\t\tmodifyAttack(pirate, peggy.cardId === CardIds.PeggyBrittleboneBattlegrounds ? 2 : 1, board, allCards);\r\n\t\t\tmodifyHealth(pirate, peggy.cardId === CardIds.PeggyBrittleboneBattlegrounds ? 2 : 1, board, allCards);\r\n\t\t\tafterStatsUpdate(pirate, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(peggy, pirate, board);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const grantRandomDivineShield = (source: BoardEntity, board: BoardEntity[], spectator: Spectator): void => {\r\n\tconst elligibleEntities = board.filter((entity) => !entity.divineShield);\r\n\tif (elligibleEntities.length > 0) {\r\n\t\tconst chosen = elligibleEntities[Math.floor(Math.random() * elligibleEntities.length)];\r\n\t\tchosen.divineShield = true;\r\n\t\tspectator.registerPowerTarget(source, chosen, board);\r\n\t}\r\n\t// return board;\r\n};\r\n\r\nexport const grantAllDivineShield = (board: BoardEntity[], tribe: string, cards: AllCardsService): void => {\r\n\tconst elligibleEntities = board\r\n\t\t.filter((entity) => !entity.divineShield)\r\n\t\t.filter((entity) => isCorrectTribe(cards.getCard(entity.cardId).race, getRaceEnum(tribe)));\r\n\tfor (const entity of elligibleEntities) {\r\n\t\tentity.divineShield = true;\r\n\t}\r\n\t// return board;\r\n};\r\n\r\nexport const getRandomMinion = (board: BoardEntity[], race: Race, allCards: AllCardsService): BoardEntity => {\r\n\tconst validTribes = board.filter((e) => !race || isCorrectTribe(allCards.getCard(e.cardId).race, race));\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\treturn validTribes[Math.floor(Math.random() * validTribes.length)];\r\n};\r\n\r\nexport const getRandomMinionWithHighestHealth = (board: BoardEntity[]): BoardEntity => {\r\n\tif (!board.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst highestHealth = Math.max(...board.map((e) => e.health));\r\n\tconst validMinions = board.filter((e) => e.health === highestHealth);\r\n\treturn validMinions[Math.floor(Math.random() * validMinions.length)];\r\n};\r\n\r\nexport const addStatsToBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tattack: number,\r\n\thealth: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\ttribe?: string,\r\n): void => {\r\n\tfor (const entity of board) {\r\n\t\tif (!tribe || isCorrectTribe(allCards.getCard(entity.cardId).race, Race[tribe])) {\r\n\t\t\tmodifyAttack(entity, attack, board, allCards);\r\n\t\t\tmodifyHealth(entity, health, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(sourceEntity, entity, board);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const hasMechanic = (card: ReferenceCard, mechanic: string): boolean => {\r\n\treturn card.mechanics?.includes(mechanic);\r\n};\r\n\r\nexport const hasCorrectTribe = (entity: BoardEntity, targetTribe: Race, allCards: AllCardsService): boolean => {\r\n\treturn isCorrectTribe(allCards.getCard(entity.cardId).race, targetTribe);\r\n};\r\n\r\nexport const isCorrectTribe = (cardRace: string, targetTribe: Race): boolean => {\r\n\treturn getRaceEnum(cardRace) === Race.ALL || getRaceEnum(cardRace) === targetTribe;\r\n};\r\n\r\nexport const getRaceEnum = (race: string): Race => {\r\n\treturn Race[race];\r\n};\r\n\r\nexport const addImpliedMechanics = (entity: BoardEntity): BoardEntity => {\r\n\tconst cleave = CLEAVE_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tconst cantAttack = CANT_ATTACK_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\t// Avoid creating a new object if not necessary\r\n\tif (!cleave && !cantAttack) {\r\n\t\treturn entity;\r\n\t}\r\n\treturn {\r\n\t\t...entity,\r\n\t\tcleave: cleave,\r\n\t\tcantAttack: cantAttack,\r\n\t} as BoardEntity;\r\n};\r\n\r\nexport const normalizeCardIdForSkin = (cardId: string): string => {\r\n\tconst skinMatch = cardId.match(/(.*)_SKIN_.*/);\r\n\tif (skinMatch) {\r\n\t\treturn skinMatch[1];\r\n\t}\r\n\treturn cardId;\r\n};\r\n\r\nexport const stringifySimple = (board: readonly BoardEntity[], allCards: AllCardsService = null): string => {\r\n\treturn '[' + board.map((entity) => stringifySimpleCard(entity, allCards)).join(', ') + ']';\r\n};\r\n\r\nexport const stringifySimpleCard = (entity: BoardEntity, allCards: AllCardsService = null): string => {\r\n\treturn entity\r\n\t\t? `${entity.cardId}/${allCards?.getCard(entity.cardId)?.name ?? ''}/${entity.attack}/${entity.health}/${entity.entityId}/${\r\n\t\t\t\tentity.divineShield\r\n\t\t }/${entity.taunt}/${entity.enchantments?.length ?? 0}`\r\n\t\t: null;\r\n};\r\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, CardIds, Race, ReferenceCard } 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 { Spectator } from './simulation/spectator/spectator';\r\n\r\nconst CLEAVE_IDS = [CardIds.CaveHydra, CardIds.CaveHydraBattlegrounds, CardIds.FoeReaper4000, CardIds.FoeReaper4000Battlegrounds];\r\n// Because for some reason, the Taunt keyword is only a referenced tag,\r\n// so we have to know when a taunt minion is spawned (the taunt tag\r\n// is passed in input properly, so it's not an issue there)\r\nconst TAUNT_IDS = [\r\n\tCardIds.YoHoOgre,\r\n\tCardIds.YoHoOgreBattlegrounds,\r\n\tCardIds.SecurityRover_GuardBotToken,\r\n\tCardIds.SecurityRover_GuardBotTokenBattlegrounds,\r\n\tCardIds.MoltenRock,\r\n\tCardIds.MoltenRockBattlegrounds,\r\n\tCardIds.LieutenantGarr,\r\n\tCardIds.LieutenantGarrBattlegrounds,\r\n\tCardIds.GentleDjinni,\r\n\tCardIds.GentleDjinniBattlegrounds,\r\n\tCardIds.AcolyteOfCthun,\r\n\tCardIds.AcolyteOfCthunBattlegrounds,\r\n\tCardIds.RingMatron,\r\n\tCardIds.RingMatronBattlegrounds,\r\n\tCardIds.DynamicDuo,\r\n\tCardIds.DynamicDuoBattlegrounds,\r\n\tCardIds.InsatiableUrzul,\r\n\tCardIds.InsatiableUrzulBattlegrounds,\r\n\tCardIds.MasterOfRealities2,\r\n\tCardIds.MasterOfRealitiesBattlegrounds,\r\n\tCardIds.BrannsEpicEggBattlegrounds1,\r\n\tCardIds.BrannsEpicEggBattlegrounds2,\r\n\tCardIds.KilrekBattlegrounds1,\r\n\tCardIds.KilrekBattlegrounds2,\r\n];\r\nconst ATTACK_IMMEDIATELY_IDS = [\r\n\tCardIds.Scallywag_SkyPirateToken,\r\n\tCardIds.Scallywag_SkyPirateTokenBattlegrounds,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\nexport const MEGA_WINDFURY_IDS = [\r\n\tCardIds.ZappSlywickBattlegrounds,\r\n\tCardIds.CracklingCycloneBattlegrounds,\r\n\tCardIds.BristlebackKnight2,\r\n\tCardIds.BonkerBattlegrounds,\r\n];\r\nconst CANT_ATTACK_IDS = [CardIds.ArcaneCannonBattlegrounds];\r\n\r\nexport const buildSingleBoardEntity = (\r\n\tcardId: string,\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tentityId = 1,\r\n\tspawnReborn = false,\r\n\tcardsData: CardsData,\r\n\tspectator: Spectator,\r\n): BoardEntity => {\r\n\tconst card = allCards.getCard(cardId);\r\n\tconst megaWindfury = MEGA_WINDFURY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst attackImmediately = ATTACK_IMMEDIATELY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst newEntity = addImpliedMechanics({\r\n\t\tattack: card.attack,\r\n\t\tattacksPerformed: 0,\r\n\t\tcardId: cardId,\r\n\t\tdivineShield: hasMechanic(card, 'DIVINE_SHIELD'),\r\n\t\tentityId: entityId,\r\n\t\thealth: card.health,\r\n\t\tmaxHealth: card.health,\r\n\t\ttaunt: hasMechanic(card, 'TAUNT') || TAUNT_IDS.includes(cardId as CardIds),\r\n\t\treborn: hasMechanic(card, 'REBORN'),\r\n\t\tpoisonous: hasMechanic(card, 'POISONOUS'),\r\n\t\twindfury: !megaWindfury && (hasMechanic(card, 'WINDFURY') || card.referencedTags?.includes('WINDFURY')),\r\n\t\tmegaWindfury: megaWindfury,\r\n\t\tenchantments: [],\r\n\t\tfriendly: friendly,\r\n\t\tattackImmediately: attackImmediately,\r\n\t\tavengeCurrent: cardsData.avengeValue(cardId),\r\n\t\tavengeDefault: cardsData.avengeValue(cardId),\r\n\t} as BoardEntity);\r\n\r\n\tif (spawnReborn) {\r\n\t\tnewEntity.health = 1;\r\n\t\tnewEntity.reborn = false;\r\n\t}\r\n\r\n\tif (controllerHero?.heroPowerId === CardIds.SproutItOutBattlegrounds) {\r\n\t\tnewEntity.taunt = true;\r\n\t\tmodifyAttack(newEntity, 1, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, 2, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t\t// spectator && spectator.registerPowerTarget(result, result, friendlyBoard);\r\n\t} else if (controllerHero?.heroPowerId === CardIds.KurtrusAshfallen_CloseThePortal) {\r\n\t\tmodifyAttack(newEntity, 2, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, 2, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t\t// spectator && spectator.registerPowerTarget(result, result, friendlyBoard);\r\n\t}\r\n\r\n\tif (allCards.getCard(cardId).techLevel === controllerHero.tavernTier) {\r\n\t\tconst statsBonus =\r\n\t\t\t4 * friendlyBoard.filter((e) => e.cardId === CardIds.BabyYshaarjBattlegrounds1).length +\r\n\t\t\t8 * friendlyBoard.filter((e) => e.cardId === CardIds.BabyYshaarjBattlegrounds2).length;\r\n\t\tmodifyAttack(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t}\r\n\r\n\tif (newEntity.taunt) {\r\n\t\tconst statsBonus =\r\n\t\t\t2 * friendlyBoard.filter((e) => e.cardId === CardIds.WanderingTreantBattlegrounds1).length +\r\n\t\t\t4 * friendlyBoard.filter((e) => e.cardId === CardIds.WanderingTreantBattlegrounds2).length;\r\n\t\tmodifyAttack(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tmodifyHealth(newEntity, statsBonus, friendlyBoard, allCards);\r\n\t\tafterStatsUpdate(newEntity, friendlyBoard, allCards);\r\n\t}\r\n\r\n\treturn newEntity;\r\n};\r\n\r\nexport const modifyAttack = (entity: BoardEntity, amount: number, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\t// console.log('modifying attack', amount, stringifySimpleCard(entity, allCards), entity.attack);\r\n\tentity.attack = Math.max(0, entity.attack + amount);\r\n\t// console.log('modified attack', amount, stringifySimpleCard(entity, allCards), entity.attack);\r\n\tentity.previousAttack = entity.attack;\r\n\tif (isCorrectTribe(allCards.getCard(entity.cardId).race, Race.DRAGON)) {\r\n\t\tconst whelpSmugglers = friendlyBoard.filter((e) => e.cardId === CardIds.WhelpSmuggler);\r\n\t\tconst whelpSmugglersBattlegrounds = friendlyBoard.filter((e) => e.cardId === CardIds.WhelpSmugglerBattlegrounds);\r\n\t\twhelpSmugglers.forEach((smuggler) => {\r\n\t\t\tmodifyHealth(entity, 1, friendlyBoard, allCards);\r\n\t\t});\r\n\t\twhelpSmugglersBattlegrounds.forEach((smuggler) => {\r\n\t\t\tmodifyHealth(entity, 2, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\tif (entity.cardId === CardIds.Menagerist_AmalgamTokenBattlegrounds || entity.cardId === CardIds.CuddlgamBattlegrounds) {\r\n\t\tconst mishmashes = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MishmashBattlegrounds1 || e.cardId === CardIds.MishmashBattlegrounds2,\r\n\t\t);\r\n\t\tmishmashes.forEach((mishmash) => {\r\n\t\t\tmodifyAttack(mishmash, (mishmash.cardId === CardIds.MishmashBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n};\r\n\r\nexport const modifyHealth = (entity: BoardEntity, amount: number, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\tentity.health += amount;\r\n\tif (amount > 0) {\r\n\t\tentity.maxHealth += amount;\r\n\t}\r\n\tif (entity.cardId === CardIds.Menagerist_AmalgamTokenBattlegrounds || entity.cardId === CardIds.CuddlgamBattlegrounds) {\r\n\t\tconst mishmashes = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MishmashBattlegrounds1 || e.cardId === CardIds.MishmashBattlegrounds2,\r\n\t\t);\r\n\t\tmishmashes.forEach((mishmash) => {\r\n\t\t\tmodifyHealth(mishmash, (mishmash.cardId === CardIds.MishmashBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\r\n\tconst titanicGuardians = friendlyBoard\r\n\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t.filter((e) => e.cardId === CardIds.TitanicGuardianBattlegrounds1 || e.cardId === CardIds.TitanicGuardianBattlegrounds2);\r\n\ttitanicGuardians.forEach((guardian) => {\r\n\t\tmodifyHealth(guardian, (guardian.cardId === CardIds.TitanicGuardianBattlegrounds2 ? 2 : 1) * amount, friendlyBoard, allCards);\r\n\t});\r\n};\r\n\r\nexport const afterStatsUpdate = (entity: BoardEntity, friendlyBoard: BoardEntity[], allCards: AllCardsService): void => {\r\n\tif (hasCorrectTribe(entity, Race.ELEMENTAL, allCards)) {\r\n\t\tconst masterOfRealities = friendlyBoard.filter(\r\n\t\t\t(e) => e.cardId === CardIds.MasterOfRealities2 || e.cardId === CardIds.MasterOfRealitiesBattlegrounds,\r\n\t\t);\r\n\t\tmasterOfRealities.forEach((master) => {\r\n\t\t\tmodifyAttack(master, master.cardId === CardIds.MasterOfRealitiesBattlegrounds ? 2 : 1, friendlyBoard, allCards);\r\n\t\t\tmodifyHealth(master, master.cardId === CardIds.MasterOfRealitiesBattlegrounds ? 2 : 1, friendlyBoard, allCards);\r\n\t\t});\r\n\t}\r\n\tconst tentaclesOfCthun = friendlyBoard\r\n\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t.filter((e) => e.cardId === CardIds.TentacleOfCthunBattlegrounds1 || e.cardId === CardIds.TentacleOfCthunBattlegrounds2);\r\n\ttentaclesOfCthun.forEach((tentacle) => {\r\n\t\tmodifyAttack(tentacle, tentacle.cardId === CardIds.TentacleOfCthunBattlegrounds2 ? 2 : 1, friendlyBoard, allCards);\r\n\t\tmodifyHealth(tentacle, tentacle.cardId === CardIds.TentacleOfCthunBattlegrounds2 ? 2 : 1, friendlyBoard, allCards);\r\n\t});\r\n};\r\n\r\nexport const makeMinionGolden = (\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity,\r\n\tsourceBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tconst refCard = allCards.getCard(target.cardId);\r\n\tconst goldenCard = allCards.getCardFromDbfId(refCard.battlegroundsPremiumDbfId);\r\n\ttarget.cardId = goldenCard.id;\r\n\t// A minion becoming golden ignore the current death.\r\n\t// This way of handling it is not ideal, since it will still trigger if both avenges trigger at the same time, but\r\n\t// should solve the other cases\r\n\ttarget.avengeCurrent = Math.min(target.avengeDefault, target.avengeCurrent + 1);\r\n\tmodifyAttack(target, refCard.attack, sourceBoard, allCards);\r\n\tmodifyHealth(target, refCard.health, sourceBoard, allCards);\r\n\tafterStatsUpdate(target, sourceBoard, allCards);\r\n\tspectator.registerPowerTarget(source, target, sourceBoard);\r\n};\r\n\r\nexport const grantRandomAttack = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tadditionalAttack: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tif (board.length > 0) {\r\n\t\tconst target = board[Math.floor(Math.random() * board.length)];\r\n\t\tmodifyAttack(target, additionalAttack, board, allCards);\r\n\t\tafterStatsUpdate(target, board, allCards);\r\n\t\tspectator.registerPowerTarget(source, target, board);\r\n\t}\r\n};\r\n\r\nexport const grantRandomHealth = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thealth: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board.filter((e) => !excludeSource || e.entityId !== source.entityId);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = candidateBoard[Math.floor(Math.random() * candidateBoard.length)];\r\n\t\tmodifyHealth(target, health, board, allCards);\r\n\t\tafterStatsUpdate(target, board, allCards);\r\n\t\tspectator.registerPowerTarget(source, target, board);\r\n\t}\r\n};\r\n\r\nexport const grantRandomStats = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tattack: number,\r\n\thealth: number,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): BoardEntity => {\r\n\tif (board.length > 0) {\r\n\t\tconst validBeast: BoardEntity = getRandomMinion(board, race, allCards);\r\n\t\tif (validBeast) {\r\n\t\t\tmodifyAttack(validBeast, attack, board, allCards);\r\n\t\t\tmodifyHealth(validBeast, health, board, allCards);\r\n\t\t\tafterStatsUpdate(validBeast, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(source, validBeast, board);\r\n\t\t\treturn validBeast;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcards: number,\r\n\tboard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tcardAdded: CardIds = null,\r\n): void => {\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSageBattlegrounds);\r\n\tconst multiplier = 1 + (cardAdded === CardIds.BloodGem ? sages.length + 2 * sagesGolden.length : 0);\r\n\tplayerEntity.cardsInHand = Math.min(10, (playerEntity.cardsInHand ?? 0) + multiplier * cards);\r\n\r\n\tconst peggys = board.filter((e) => e.cardId === CardIds.PeggyBrittlebone || e.cardId === CardIds.PeggyBrittleboneBattlegrounds);\r\n\tpeggys.forEach((peggy) => {\r\n\t\tconst pirate = getRandomMinion(\r\n\t\t\tboard.filter((e) => e.entityId !== peggy.entityId),\r\n\t\t\tRace.PIRATE,\r\n\t\t\tallCards,\r\n\t\t);\r\n\t\tif (pirate) {\r\n\t\t\tmodifyAttack(pirate, peggy.cardId === CardIds.PeggyBrittleboneBattlegrounds ? 2 : 1, board, allCards);\r\n\t\t\tmodifyHealth(pirate, peggy.cardId === CardIds.PeggyBrittleboneBattlegrounds ? 2 : 1, board, allCards);\r\n\t\t\tafterStatsUpdate(pirate, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(peggy, pirate, board);\r\n\t\t}\r\n\t});\r\n};\r\n\r\nexport const grantRandomDivineShield = (source: BoardEntity, board: BoardEntity[], spectator: Spectator): void => {\r\n\tconst elligibleEntities = board.filter((entity) => !entity.divineShield);\r\n\tif (elligibleEntities.length > 0) {\r\n\t\tconst chosen = elligibleEntities[Math.floor(Math.random() * elligibleEntities.length)];\r\n\t\tchosen.divineShield = true;\r\n\t\tspectator.registerPowerTarget(source, chosen, board);\r\n\t}\r\n\t// return board;\r\n};\r\n\r\nexport const grantAllDivineShield = (board: BoardEntity[], tribe: string, cards: AllCardsService): void => {\r\n\tconst elligibleEntities = board\r\n\t\t.filter((entity) => !entity.divineShield)\r\n\t\t.filter((entity) => isCorrectTribe(cards.getCard(entity.cardId).race, getRaceEnum(tribe)));\r\n\tfor (const entity of elligibleEntities) {\r\n\t\tentity.divineShield = true;\r\n\t}\r\n\t// return board;\r\n};\r\n\r\nexport const getRandomMinion = (board: BoardEntity[], race: Race, allCards: AllCardsService): BoardEntity => {\r\n\tconst validTribes = board.filter((e) => !race || isCorrectTribe(allCards.getCard(e.cardId).race, race));\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\treturn validTribes[Math.floor(Math.random() * validTribes.length)];\r\n};\r\n\r\nexport const getRandomMinionWithHighestHealth = (board: BoardEntity[]): BoardEntity => {\r\n\tif (!board.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst highestHealth = Math.max(...board.map((e) => e.health));\r\n\tconst validMinions = board.filter((e) => e.health === highestHealth);\r\n\treturn validMinions[Math.floor(Math.random() * validMinions.length)];\r\n};\r\n\r\nexport const addStatsToBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tattack: number,\r\n\thealth: number,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\ttribe?: string,\r\n): void => {\r\n\tfor (const entity of board) {\r\n\t\tif (!tribe || isCorrectTribe(allCards.getCard(entity.cardId).race, Race[tribe])) {\r\n\t\t\tmodifyAttack(entity, attack, board, allCards);\r\n\t\t\tmodifyHealth(entity, health, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\tspectator.registerPowerTarget(sourceEntity, entity, board);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const hasMechanic = (card: ReferenceCard, mechanic: string): boolean => {\r\n\treturn card.mechanics?.includes(mechanic);\r\n};\r\n\r\nexport const hasCorrectTribe = (entity: BoardEntity, targetTribe: Race, allCards: AllCardsService): boolean => {\r\n\treturn isCorrectTribe(allCards.getCard(entity.cardId).race, targetTribe);\r\n};\r\n\r\nexport const isCorrectTribe = (cardRace: string, targetTribe: Race): boolean => {\r\n\treturn getRaceEnum(cardRace) === Race.ALL || getRaceEnum(cardRace) === targetTribe;\r\n};\r\n\r\nexport const getRaceEnum = (race: string): Race => {\r\n\treturn Race[race];\r\n};\r\n\r\nexport const addImpliedMechanics = (entity: BoardEntity): BoardEntity => {\r\n\tconst cleave = CLEAVE_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tconst cantAttack = CANT_ATTACK_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\t// Avoid creating a new object if not necessary\r\n\tif (!cleave && !cantAttack) {\r\n\t\treturn entity;\r\n\t}\r\n\treturn {\r\n\t\t...entity,\r\n\t\tcleave: cleave,\r\n\t\tcantAttack: cantAttack,\r\n\t} as BoardEntity;\r\n};\r\n\r\nexport const normalizeCardIdForSkin = (cardId: string): string => {\r\n\tconst skinMatch = cardId.match(/(.*)_SKIN_.*/);\r\n\tif (skinMatch) {\r\n\t\treturn skinMatch[1];\r\n\t}\r\n\treturn cardId;\r\n};\r\n\r\nexport const stringifySimple = (board: readonly BoardEntity[], allCards: AllCardsService = null): string => {\r\n\treturn '[' + board.map((entity) => stringifySimpleCard(entity, allCards)).join(', ') + ']';\r\n};\r\n\r\nexport const stringifySimpleCard = (entity: BoardEntity, allCards: AllCardsService = null): string => {\r\n\treturn entity\r\n\t\t? `${entity.cardId}/${allCards?.getCard(entity.cardId)?.name ?? ''}/${entity.attack}/${entity.health}/${entity.entityId}/${\r\n\t\t\t\tentity.divineShield\r\n\t\t }/${entity.taunt}/${entity.enchantments?.length ?? 0}`\r\n\t\t: null;\r\n};\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestone-hs/simulate-bgs-battle",
3
- "version": "1.1.172",
3
+ "version": "1.1.175",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "lint": "eslint --color --fix --ext .ts .",