@firestone-hs/simulate-bgs-battle 1.1.229 → 1.1.231

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.
@@ -23,6 +23,7 @@ export interface BoardEntity {
23
23
  repeats?: number;
24
24
  value?: number;
25
25
  }[];
26
+ additionalCards?: readonly string[];
26
27
  rememberedDeathrattles?: {
27
28
  cardId: string;
28
29
  timing: number;
@@ -1 +1 @@
1
- {"version":3,"file":"board-entity.js","sourceRoot":"","sources":["../src/board-entity.ts"],"names":[],"mappings":"","sourcesContent":["export interface BoardEntity {\r\n\tentityId: number;\r\n\tcardId: string;\r\n\tattack: number;\r\n\thealth: number;\r\n\r\n\tmaxHealth?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tfrenzyApplied?: boolean;\r\n\tdefinitelyDead?: boolean;\r\n\ttaunt?: boolean;\r\n\tdivineShield?: boolean;\r\n\tpoisonous?: boolean;\r\n\treborn?: boolean;\r\n\tcleave?: boolean;\r\n\twindfury?: boolean;\r\n\tmegaWindfury?: boolean;\r\n\tstealth?: boolean;\r\n\tenchantments?: { cardId: string; originEntityId?: number; timing: number; repeats?: number; value?: number }[];\r\n\t// We only store the card id, because we want all the attack and other data to be computed at runtime, based on the\r\n\t// current stats of the Fish\r\n\trememberedDeathrattles?: { cardId: string; timing: number; repeats: number }[];\r\n\tdamageMultiplier?: number;\r\n\r\n\tfriendly?: boolean;\r\n\tcantAttack?: boolean;\r\n\tattacksPerformed?: number;\r\n\timmuneWhenAttackCharges?: number;\r\n\tattackImmediately?: boolean;\r\n\t// Used only to handle murkeye aura?\r\n\tpreviousAttack?: number;\r\n\tlastAffectedByEntity?: BoardEntity;\r\n\tattacking?: boolean;\r\n}\r\n"]}
1
+ {"version":3,"file":"board-entity.js","sourceRoot":"","sources":["../src/board-entity.ts"],"names":[],"mappings":"","sourcesContent":["export interface BoardEntity {\r\n\tentityId: number;\r\n\tcardId: string;\r\n\tattack: number;\r\n\thealth: number;\r\n\r\n\tmaxHealth?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tfrenzyApplied?: boolean;\r\n\tdefinitelyDead?: boolean;\r\n\ttaunt?: boolean;\r\n\tdivineShield?: boolean;\r\n\tpoisonous?: boolean;\r\n\treborn?: boolean;\r\n\tcleave?: boolean;\r\n\twindfury?: boolean;\r\n\tmegaWindfury?: boolean;\r\n\tstealth?: boolean;\r\n\tenchantments?: { cardId: string; originEntityId?: number; timing: number; repeats?: number; value?: number }[];\r\n\t// For Build-An-Undead\r\n\tadditionalCards?: readonly string[];\r\n\r\n\t// We only store the card id, because we want all the attack and other data to be computed at runtime, based on the\r\n\t// current stats of the Fish\r\n\trememberedDeathrattles?: { cardId: string; timing: number; repeats: number }[];\r\n\tdamageMultiplier?: number;\r\n\r\n\tfriendly?: boolean;\r\n\tcantAttack?: boolean;\r\n\tattacksPerformed?: number;\r\n\timmuneWhenAttackCharges?: number;\r\n\tattackImmediately?: boolean;\r\n\t// Used only to handle murkeye aura?\r\n\tpreviousAttack?: number;\r\n\tlastAffectedByEntity?: BoardEntity;\r\n\tattacking?: boolean;\r\n}\r\n"]}
@@ -4,4 +4,4 @@ import { BoardEntity } from '../board-entity';
4
4
  import { SharedState } from './shared-state';
5
5
  import { Spectator } from './spectator/spectator';
6
6
  export declare const addMinionsToBoard: (board: BoardEntity[], boardHero: BgsPlayerEntity, otherHero: BgsPlayerEntity, index: number, minionsToAdd: readonly BoardEntity[], allCards: AllCardsService, spectator: Spectator, sharedState: SharedState) => void;
7
- export declare const addMinionToBoard: (board: BoardEntity[], boardHero: BgsPlayerEntity, otherHero: BgsPlayerEntity, index: number, minionToAdd: BoardEntity, allCards: AllCardsService, spectator: Spectator, sharedState: SharedState) => void;
7
+ export declare const addMinionToBoard: (board: BoardEntity[], boardHero: BgsPlayerEntity, otherHero: BgsPlayerEntity, index: number, minionToAdd: BoardEntity, allCards: AllCardsService, spectator: Spectator, sharedState: SharedState, performAfterSpawnEffects?: boolean) => void;
@@ -7,75 +7,82 @@ const utils_1 = require("../utils");
7
7
  const addMinionsToBoard = (board, boardHero, otherHero, index, minionsToAdd, allCards, spectator, sharedState) => {
8
8
  board.splice(index, 0, ...minionsToAdd);
9
9
  for (const minionToAdd of [...minionsToAdd].reverse()) {
10
- exports.addMinionToBoard(board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState);
10
+ exports.addMinionToBoard(board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState, false);
11
11
  }
12
12
  handleAfterSpawnEffects(board, minionsToAdd, allCards, spectator);
13
13
  };
14
14
  exports.addMinionsToBoard = addMinionsToBoard;
15
- const addMinionToBoard = (board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState) => {
15
+ const addMinionToBoard = (board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState, performAfterSpawnEffects = true) => {
16
16
  board.splice(index, 0, minionToAdd);
17
17
  handleSpawnEffect(board, boardHero, otherHero, minionToAdd, allCards, spectator, sharedState);
18
+ if (performAfterSpawnEffects) {
19
+ handleAfterSpawnEffects(board, [minionToAdd], allCards, spectator);
20
+ }
18
21
  };
19
22
  exports.addMinionToBoard = addMinionToBoard;
20
23
  const handleSpawnEffect = (board, boardHero, otherHero, spawned, allCards, spectator, sharedState) => {
21
- switch (spawned.cardId) {
22
- case "BG_NEW1_027":
23
- case "TB_BaconUps_136":
24
- board
25
- .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.PIRATE, allCards))
26
- .filter((e) => e.entityId !== spawned.entityId)
27
- .forEach((e) => {
28
- e.attack += spawned.cardId === "TB_BaconUps_136" ? 2 : 1;
29
- e.health += spawned.cardId === "TB_BaconUps_136" ? 2 : 1;
30
- });
31
- break;
32
- case "BG_EX1_507":
33
- case "TB_BaconUps_008":
34
- board
35
- .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.MURLOC, allCards))
36
- .filter((e) => e.entityId !== spawned.entityId)
37
- .forEach((e) => {
38
- e.attack += spawned.cardId === "TB_BaconUps_008" ? 4 : 2;
39
- });
40
- break;
41
- case "TB_BaconShop_HERO_52_Buddy":
42
- case "TB_BaconShop_HERO_52_Buddy_G":
43
- board.forEach((e) => {
44
- e.attack += spawned.cardId === "TB_BaconShop_HERO_52_Buddy_G" ? 6 : 3;
45
- });
46
- break;
47
- case "BG21_039":
48
- case "BG21_039_G":
49
- board
50
- .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.DEMON, allCards))
51
- .filter((e) => e.entityId !== spawned.entityId)
52
- .forEach((e) => {
53
- e.attack += spawned.cardId === "BG21_039_G" ? 4 : 2;
54
- });
55
- break;
56
- case "BG25_043":
57
- case "BG25_043_G":
58
- board
59
- .filter((e) => e.divineShield)
60
- .forEach((e) => {
61
- e.attack += spawned.cardId === "BG25_043_G" ? 20 : 10;
62
- });
63
- break;
64
- case "BG25_008":
65
- case "BG25_008_G":
66
- const multiplierKnight = spawned.cardId === "BG25_008_G" ? 2 : 1;
67
- const statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;
68
- utils_1.modifyAttack(spawned, statsBonusKnight, board, allCards);
69
- utils_1.modifyHealth(spawned, statsBonusKnight, board, allCards);
70
- utils_1.afterStatsUpdate(spawned, board, allCards);
71
- break;
72
- case "BG25_013":
73
- case "BG25_013_G":
74
- const multiplierGnoll = spawned.cardId === "BG25_013_G" ? 2 : 1;
75
- const statsBonusGnoll = multiplierGnoll * sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;
76
- utils_1.modifyAttack(spawned, statsBonusGnoll, board, allCards);
77
- utils_1.afterStatsUpdate(spawned, board, allCards);
78
- break;
24
+ var _a;
25
+ const cardIds = [spawned.cardId, ...((_a = spawned.additionalCards) !== null && _a !== void 0 ? _a : [])];
26
+ for (const spawnedCardId of cardIds) {
27
+ switch (spawnedCardId) {
28
+ case "BG_NEW1_027":
29
+ case "TB_BaconUps_136":
30
+ board
31
+ .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.PIRATE, allCards))
32
+ .filter((e) => e.entityId !== spawned.entityId)
33
+ .forEach((e) => {
34
+ e.attack += spawned.cardId === "TB_BaconUps_136" ? 2 : 1;
35
+ e.health += spawned.cardId === "TB_BaconUps_136" ? 2 : 1;
36
+ });
37
+ break;
38
+ case "BG_EX1_507":
39
+ case "TB_BaconUps_008":
40
+ board
41
+ .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.MURLOC, allCards))
42
+ .filter((e) => e.entityId !== spawned.entityId)
43
+ .forEach((e) => {
44
+ e.attack += spawned.cardId === "TB_BaconUps_008" ? 4 : 2;
45
+ });
46
+ break;
47
+ case "TB_BaconShop_HERO_52_Buddy":
48
+ case "TB_BaconShop_HERO_52_Buddy_G":
49
+ board.forEach((e) => {
50
+ e.attack += spawned.cardId === "TB_BaconShop_HERO_52_Buddy_G" ? 6 : 3;
51
+ });
52
+ break;
53
+ case "BG21_039":
54
+ case "BG21_039_G":
55
+ board
56
+ .filter((e) => utils_1.hasCorrectTribe(e, reference_data_1.Race.DEMON, allCards))
57
+ .filter((e) => e.entityId !== spawned.entityId)
58
+ .forEach((e) => {
59
+ e.attack += spawned.cardId === "BG21_039_G" ? 4 : 2;
60
+ });
61
+ break;
62
+ case "BG25_043":
63
+ case "BG25_043_G":
64
+ board
65
+ .filter((e) => e.divineShield)
66
+ .forEach((e) => {
67
+ e.attack += spawned.cardId === "BG25_043_G" ? 20 : 10;
68
+ });
69
+ break;
70
+ case "BG25_008":
71
+ case "BG25_008_G":
72
+ const multiplierKnight = spawned.cardId === "BG25_008_G" ? 2 : 1;
73
+ const statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;
74
+ utils_1.modifyAttack(spawned, statsBonusKnight, board, allCards);
75
+ utils_1.modifyHealth(spawned, statsBonusKnight, board, allCards);
76
+ utils_1.afterStatsUpdate(spawned, board, allCards);
77
+ break;
78
+ case "BG25_013":
79
+ case "BG25_013_G":
80
+ const multiplierGnoll = spawned.cardId === "BG25_013_G" ? 2 : 1;
81
+ const statsBonusGnoll = multiplierGnoll * sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;
82
+ utils_1.modifyAttack(spawned, statsBonusGnoll, board, allCards);
83
+ utils_1.afterStatsUpdate(spawned, board, allCards);
84
+ break;
85
+ }
79
86
  }
80
87
  if (utils_1.hasCorrectTribe(spawned, reference_data_1.Race.UNDEAD, allCards)) {
81
88
  if (boardHero.globalInfo.UndeadAttackBonus > 0) {
@@ -83,7 +90,7 @@ const handleSpawnEffect = (board, boardHero, otherHero, spawned, allCards, spect
83
90
  utils_1.afterStatsUpdate(spawned, board, allCards);
84
91
  }
85
92
  }
86
- if (cards_data_1.WHELP_CARD_IDS.includes(spawned.cardId)) {
93
+ if (cardIds.some((cardId) => cards_data_1.WHELP_CARD_IDS.includes(cardId))) {
87
94
  const manyWhelps = board.filter((entity) => entity.cardId === "BG22_HERO_305_Buddy");
88
95
  const goldenManyWhelps = board.filter((entity) => entity.cardId === "BG22_HERO_305_Buddy_G");
89
96
  manyWhelps.forEach((entity) => {
@@ -274,6 +281,13 @@ const handleAfterSpawnEffect = (board, spawned, allCards, spectator) => {
274
281
  spectator.registerPowerTarget(entity, e, board);
275
282
  });
276
283
  break;
284
+ case "BG26_RLK_824":
285
+ if (utils_1.hasCorrectTribe(spawned, reference_data_1.Race.UNDEAD, allCards)) {
286
+ utils_1.modifyAttack(spawned, 1, board, allCards);
287
+ utils_1.afterStatsUpdate(entity, board, allCards);
288
+ spectator.registerPowerTarget(entity, entity, board);
289
+ }
290
+ break;
277
291
  }
278
292
  }
279
293
  };
@@ -1 +1 @@
1
- {"version":3,"file":"add-minion-to-board.js","sourceRoot":"","sources":["../../src/simulation/add-minion-to-board.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 { WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport { afterStatsUpdate, hasCorrectTribe, isCorrectTribe, modifyAttack, modifyHealth, updateDivineShield } from '../utils';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const addMinionsToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionsToAdd: readonly BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n): void => {\r\n\tboard.splice(index, 0, ...minionsToAdd);\r\n\tfor (const minionToAdd of [...minionsToAdd].reverse()) {\r\n\t\taddMinionToBoard(board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState);\r\n\t}\r\n\thandleAfterSpawnEffects(board, minionsToAdd, allCards, spectator);\r\n};\r\n\r\nexport const addMinionToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionToAdd: BoardEntity,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n): void => {\r\n\tboard.splice(index, 0, minionToAdd);\r\n\t// Minion has already been removed from the board in the previous step\r\n\thandleSpawnEffect(board, boardHero, otherHero, minionToAdd, allCards, spectator, sharedState);\r\n};\r\n\r\nconst handleSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n): void => {\r\n\tswitch (spawned.cardId) {\r\n\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\tcase CardIds.SouthseaCaptainLegacyBattlegrounds:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.PIRATE, allCards))\r\n\t\t\t\t// Other\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t\te.health += spawned.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\tcase CardIds.MurlocWarleaderLegacyBattlegrounds:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.MURLOC, allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.MurlocWarleaderLegacyBattlegrounds ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy:\r\n\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G:\r\n\t\t\tboard.forEach((e) => {\r\n\t\t\t\te.attack += spawned.cardId === CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G ? 6 : 3;\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\tcase CardIds.KathranatirBattlegrounds:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.DEMON, allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.KathranatirBattlegrounds ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CyborgDrake:\r\n\t\tcase CardIds.CyborgDrakeBattlegrounds:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => e.divineShield)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.CyborgDrakeBattlegrounds ? 20 : 10;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\tcase CardIds.EternalKnight:\r\n\t\tcase CardIds.EternalKnightBattlegrounds:\r\n\t\t\tconst multiplierKnight = spawned.cardId === CardIds.EternalKnightBattlegrounds ? 2 : 1;\r\n\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\tmodifyAttack(spawned, statsBonusKnight, board, allCards);\r\n\t\t\tmodifyHealth(spawned, statsBonusKnight, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RotHideGnoll:\r\n\t\tcase CardIds.RotHideGnollBattlegrounds:\r\n\t\t\tconst multiplierGnoll = spawned.cardId === CardIds.RotHideGnollBattlegrounds ? 2 : 1;\r\n\t\t\tconst statsBonusGnoll = multiplierGnoll * sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;\r\n\t\t\tmodifyAttack(spawned, statsBonusGnoll, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (hasCorrectTribe(spawned, Race.UNDEAD, allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tmodifyAttack(spawned, boardHero.globalInfo.UndeadAttackBonus, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t}\r\n\t}\r\n\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\tif (WHELP_CARD_IDS.includes(spawned.cardId as CardIds)) {\r\n\t\tconst manyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps);\r\n\t\tconst goldenManyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelpsBattlegrounds);\r\n\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\t\tmodifyHealth(entity, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t});\r\n\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 4, board, allCards);\r\n\t\t\tmodifyHealth(entity, 4, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacyBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MURLOC, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.MurlocWarleaderLegacyBattlegrounds ? 4 : 2;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacyBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.PIRATE, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t\tspawned.health += entity.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy:\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G:\r\n\t\t\t\tspawned.attack += entity.cardId === CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G ? 6 : 3;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.KathranatirBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.DEMON, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.KathranatirBattlegrounds ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake:\r\n\t\t\tcase CardIds.CyborgDrakeBattlegrounds:\r\n\t\t\t\tif (spawned.divineShield) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.CyborgDrakeBattlegrounds ? 20 : 10;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy:\r\n\t\t\tcase CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy_G:\r\n\t\t\t\tif (allCards.getCard(spawned.cardId).techLevel === boardHero.tavernTier) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy_G ? 8 : 4;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy:\r\n\t\t\tcase CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy_G:\r\n\t\t\t\tif (spawned.taunt) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy_G ? 4 : 2;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.CobaltGuardian:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, true, allCards);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.DeflectOBot:\r\n\t\t\tcase CardIds.DeflectOBotBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.DeflectOBotBattlegrounds ? 4 : 2;\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, true, allCards);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyAttack(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Bigfernal:\r\n\t\t\tcase CardIds.BigfernalBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.DEMON, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BigfernalBattlegrounds ? 2 : 1;\r\n\t\t\t\t\tmodifyAttack(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MamaBear:\r\n\t\t\tcase CardIds.MamaBearBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.BEAST, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.MamaBearBattlegrounds ? 10 : 5;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackLeader:\r\n\t\t\tcase CardIds.PackLeaderBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.BEAST, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PackLeaderBattlegrounds ? 4 : 2;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (otherHero.heroPowerId === CardIds.AllWillBurnBattlegrounds) {\r\n\t\tspawned.attack += 3;\r\n\t}\r\n\r\n\tswitch (boardHero.heroPowerId) {\r\n\t\tcase CardIds.AllWillBurnBattlegrounds:\r\n\t\t\tspawned.attack += 3;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TheSmokingGun:\r\n\t\t\tspawned.attack += 5;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VolatileVenom:\r\n\t\t\tspawned.attack += 7;\r\n\t\t\tspawned.health += 7;\r\n\t\t\tspawned.enchantments.push({\r\n\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\ttiming: sharedState.currentEntityId++,\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SproutItOutBattlegrounds:\r\n\t\t\tspawned.taunt = true;\r\n\t\t\tmodifyAttack(spawned, 1, board, allCards);\r\n\t\t\tmodifyHealth(spawned, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.KurtrusAshfallen_CloseThePortal:\r\n\t\t\tmodifyAttack(spawned, 2, board, allCards);\r\n\t\t\tmodifyHealth(spawned, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TinkerBattlegrounds:\r\n\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\tmodifyAttack(spawned, 2, board, allCards);\r\n\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffects = (\r\n\tboard: BoardEntity[],\r\n\tallSpawned: readonly BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tfor (const spawned of allSpawned) {\r\n\t\thandleAfterSpawnEffect(board, spawned, allCards, spectator);\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffect = (board: BoardEntity[], spawned: BoardEntity, allCards: AllCardsService, spectator: Spectator): void => {\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocTidecallerLegacy:\r\n\t\t\tcase CardIds.MurlocTidecallerBattlegrounds:\r\n\t\t\t\tconst multiplier = entity.cardId === CardIds.MurlocTidecallerBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst buffAmount = multiplier * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t\tif (buffAmount > 0) {\r\n\t\t\t\t\tmodifyAttack(entity, buffAmount, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Swampstriker:\r\n\t\t\tcase CardIds.SwampstrikerBattlegrounds:\r\n\t\t\t\tconst multiplier2 = entity.cardId === CardIds.SwampstrikerBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst buffAmount2 = multiplier2 * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t\tif (buffAmount2 > 0) {\r\n\t\t\t\t\tmodifyAttack(entity, buffAmount2, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Felstomper:\r\n\t\t\tcase CardIds.FelstomperBattlegrounds:\r\n\t\t\t\tconst felstomperBuff = entity.cardId === CardIds.FelstomperBattlegrounds ? 6 : 3;\r\n\t\t\t\tboard.forEach((e) => {\r\n\t\t\t\t\tmodifyAttack(e, felstomperBuff, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(e, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, e, board);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n"]}
1
+ {"version":3,"file":"add-minion-to-board.js","sourceRoot":"","sources":["../../src/simulation/add-minion-to-board.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 { WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport { afterStatsUpdate, hasCorrectTribe, isCorrectTribe, modifyAttack, modifyHealth, updateDivineShield } from '../utils';\r\nimport { SharedState } from './shared-state';\r\nimport { Spectator } from './spectator/spectator';\r\n\r\nexport const addMinionsToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionsToAdd: readonly BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n): void => {\r\n\tboard.splice(index, 0, ...minionsToAdd);\r\n\tfor (const minionToAdd of [...minionsToAdd].reverse()) {\r\n\t\taddMinionToBoard(board, boardHero, otherHero, index, minionToAdd, allCards, spectator, sharedState, false);\r\n\t}\r\n\thandleAfterSpawnEffects(board, minionsToAdd, allCards, spectator);\r\n};\r\n\r\nexport const addMinionToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionToAdd: BoardEntity,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n\tperformAfterSpawnEffects = true,\r\n): void => {\r\n\tboard.splice(index, 0, minionToAdd);\r\n\t// Minion has already been removed from the board in the previous step\r\n\thandleSpawnEffect(board, boardHero, otherHero, minionToAdd, allCards, spectator, sharedState);\r\n\tif (performAfterSpawnEffects) {\r\n\t\thandleAfterSpawnEffects(board, [minionToAdd], allCards, spectator);\r\n\t}\r\n};\r\n\r\nconst handleSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n\tsharedState: SharedState,\r\n): void => {\r\n\tconst cardIds = [spawned.cardId, ...(spawned.additionalCards ?? [])];\r\n\tfor (const spawnedCardId of cardIds) {\r\n\t\tswitch (spawnedCardId) {\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacyBattlegrounds:\r\n\t\t\t\tboard\r\n\t\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.PIRATE, allCards))\r\n\t\t\t\t\t// Other\r\n\t\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\t\te.attack += spawned.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t\t\te.health += spawned.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacyBattlegrounds:\r\n\t\t\t\tboard\r\n\t\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.MURLOC, allCards))\r\n\t\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\t\te.attack += spawned.cardId === CardIds.MurlocWarleaderLegacyBattlegrounds ? 4 : 2;\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy:\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G:\r\n\t\t\t\tboard.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G ? 6 : 3;\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.KathranatirBattlegrounds:\r\n\t\t\t\tboard\r\n\t\t\t\t\t.filter((e) => hasCorrectTribe(e, Race.DEMON, allCards))\r\n\t\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\t\te.attack += spawned.cardId === CardIds.KathranatirBattlegrounds ? 4 : 2;\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake:\r\n\t\t\tcase CardIds.CyborgDrakeBattlegrounds:\r\n\t\t\t\tboard\r\n\t\t\t\t\t.filter((e) => e.divineShield)\r\n\t\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\t\te.attack += spawned.cardId === CardIds.CyborgDrakeBattlegrounds ? 20 : 10;\r\n\t\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.EternalKnight:\r\n\t\t\tcase CardIds.EternalKnightBattlegrounds:\r\n\t\t\t\tconst multiplierKnight = spawned.cardId === CardIds.EternalKnightBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\t\tmodifyAttack(spawned, statsBonusKnight, board, allCards);\r\n\t\t\t\tmodifyHealth(spawned, statsBonusKnight, board, allCards);\r\n\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RotHideGnoll:\r\n\t\t\tcase CardIds.RotHideGnollBattlegrounds:\r\n\t\t\t\tconst multiplierGnoll = spawned.cardId === CardIds.RotHideGnollBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst statsBonusGnoll = multiplierGnoll * sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;\r\n\t\t\t\tmodifyAttack(spawned, statsBonusGnoll, board, allCards);\r\n\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasCorrectTribe(spawned, Race.UNDEAD, allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tmodifyAttack(spawned, boardHero.globalInfo.UndeadAttackBonus, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t}\r\n\t}\r\n\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\tif (cardIds.some((cardId) => WHELP_CARD_IDS.includes(cardId as CardIds))) {\r\n\t\tconst manyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps);\r\n\t\tconst goldenManyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelpsBattlegrounds);\r\n\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\t\tmodifyHealth(entity, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t});\r\n\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\tmodifyAttack(entity, 4, board, allCards);\r\n\t\t\tmodifyHealth(entity, 4, board, allCards);\r\n\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacyBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MURLOC, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.MurlocWarleaderLegacyBattlegrounds ? 4 : 2;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacyBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.PIRATE, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t\tspawned.health += entity.cardId === CardIds.SouthseaCaptainLegacyBattlegrounds ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy:\r\n\t\t\tcase CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G:\r\n\t\t\t\tspawned.attack += entity.cardId === CardIds.LadySinestraBattlegrounds_TB_BaconShop_HERO_52_Buddy_G ? 6 : 3;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.KathranatirBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.DEMON, allCards) && entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.KathranatirBattlegrounds ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake:\r\n\t\t\tcase CardIds.CyborgDrakeBattlegrounds:\r\n\t\t\t\tif (spawned.divineShield) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.CyborgDrakeBattlegrounds ? 20 : 10;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy:\r\n\t\t\tcase CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy_G:\r\n\t\t\t\tif (allCards.getCard(spawned.cardId).techLevel === boardHero.tavernTier) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BabyYshaarjBattlegrounds_TB_BaconShop_HERO_92_Buddy_G ? 8 : 4;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy:\r\n\t\t\tcase CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy_G:\r\n\t\t\t\tif (spawned.taunt) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.WanderingTreantBattlegrounds_TB_BaconShop_HERO_95_Buddy_G ? 4 : 2;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CardIds.CobaltGuardian:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, true, allCards);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyAttack(entity, 2, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.DeflectOBot:\r\n\t\t\tcase CardIds.DeflectOBotBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.DeflectOBotBattlegrounds ? 4 : 2;\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, true, allCards);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyAttack(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Bigfernal:\r\n\t\t\tcase CardIds.BigfernalBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.DEMON, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BigfernalBattlegrounds ? 2 : 1;\r\n\t\t\t\t\tmodifyAttack(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(entity, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MamaBear:\r\n\t\t\tcase CardIds.MamaBearBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.BEAST, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.MamaBearBattlegrounds ? 10 : 5;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tmodifyHealth(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackLeader:\r\n\t\t\tcase CardIds.PackLeaderBattlegrounds:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.BEAST, allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PackLeaderBattlegrounds ? 4 : 2;\r\n\t\t\t\t\tmodifyAttack(spawned, statsBonus, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (otherHero.heroPowerId === CardIds.AllWillBurnBattlegrounds) {\r\n\t\tspawned.attack += 3;\r\n\t}\r\n\r\n\tswitch (boardHero.heroPowerId) {\r\n\t\tcase CardIds.AllWillBurnBattlegrounds:\r\n\t\t\tspawned.attack += 3;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TheSmokingGun:\r\n\t\t\tspawned.attack += 5;\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VolatileVenom:\r\n\t\t\tspawned.attack += 7;\r\n\t\t\tspawned.health += 7;\r\n\t\t\tspawned.enchantments.push({\r\n\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\ttiming: sharedState.currentEntityId++,\r\n\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SproutItOutBattlegrounds:\r\n\t\t\tspawned.taunt = true;\r\n\t\t\tmodifyAttack(spawned, 1, board, allCards);\r\n\t\t\tmodifyHealth(spawned, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.KurtrusAshfallen_CloseThePortal:\r\n\t\t\tmodifyAttack(spawned, 2, board, allCards);\r\n\t\t\tmodifyHealth(spawned, 2, board, allCards);\r\n\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TinkerBattlegrounds:\r\n\t\t\tif (hasCorrectTribe(spawned, Race.MECH, allCards)) {\r\n\t\t\t\tmodifyAttack(spawned, 2, board, allCards);\r\n\t\t\t\tafterStatsUpdate(spawned, board, allCards);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffects = (\r\n\tboard: BoardEntity[],\r\n\tallSpawned: readonly BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tspectator: Spectator,\r\n): void => {\r\n\tfor (const spawned of allSpawned) {\r\n\t\thandleAfterSpawnEffect(board, spawned, allCards, spectator);\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffect = (board: BoardEntity[], spawned: BoardEntity, allCards: AllCardsService, spectator: Spectator): void => {\r\n\t// console.debug('after spawn', stringifySimpleCard(spawned, allCards), stringifySimple(board, allCards));\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocTidecallerLegacy:\r\n\t\t\tcase CardIds.MurlocTidecallerBattlegrounds:\r\n\t\t\t\tconst multiplier = entity.cardId === CardIds.MurlocTidecallerBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst buffAmount = multiplier * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t\tif (buffAmount > 0) {\r\n\t\t\t\t\tmodifyAttack(entity, buffAmount, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Swampstriker:\r\n\t\t\tcase CardIds.SwampstrikerBattlegrounds:\r\n\t\t\t\tconst multiplier2 = entity.cardId === CardIds.SwampstrikerBattlegrounds ? 2 : 1;\r\n\t\t\t\tconst buffAmount2 = multiplier2 * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t\tif (buffAmount2 > 0) {\r\n\t\t\t\t\tmodifyAttack(entity, buffAmount2, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Felstomper:\r\n\t\t\tcase CardIds.FelstomperBattlegrounds:\r\n\t\t\t\t// console.debug('felstomper');\r\n\t\t\t\tconst felstomperBuff = entity.cardId === CardIds.FelstomperBattlegrounds ? 6 : 3;\r\n\t\t\t\tboard.forEach((e) => {\r\n\t\t\t\t\tmodifyAttack(e, felstomperBuff, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(e, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, e, board);\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Putricide-only\r\n\t\t\tcase CardIds.ArmsDealer_BG26_RLK_824:\r\n\t\t\t\tif (hasCorrectTribe(spawned, Race.UNDEAD, allCards)) {\r\n\t\t\t\t\tmodifyAttack(spawned, 1, board, allCards);\r\n\t\t\t\t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t\t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n"]}
@@ -55,6 +55,7 @@ const simulateAttack = (attackingBoard, attackingBoardHero, defendingBoard, defe
55
55
  };
56
56
  exports.simulateAttack = simulateAttack;
57
57
  const applyAfterAttackEffects = (attackingEntity, attackingBoard, attackingBoardHero, allCards, spectator) => {
58
+ var _a;
58
59
  if (attackingEntity.cardId === "BG20_104" || attackingEntity.cardId === "BG20_104_G") {
59
60
  utils_2.addCardsInHand(attackingBoardHero, 1, attackingBoard, allCards, spectator, "BG20_GEM");
60
61
  }
@@ -62,6 +63,15 @@ const applyAfterAttackEffects = (attackingEntity, attackingBoard, attackingBoard
62
63
  const modifier = attackingEntity.cardId === "BG23_350_G" ? 2 : 1;
63
64
  utils_2.grantStatsToMinionsOfEachType(attackingEntity, attackingBoard, modifier * 1, modifier * 2, allCards, spectator);
64
65
  }
66
+ else if ((_a = attackingEntity.additionalCards) === null || _a === void 0 ? void 0 : _a.includes("BG26_RLK_117")) {
67
+ attackingEntity.definitelyDead = true;
68
+ }
69
+ attackingBoard
70
+ .filter((e) => { var _a; return (_a = e.additionalCards) === null || _a === void 0 ? void 0 : _a.includes("BG_GIL_655"); })
71
+ .forEach((e) => {
72
+ utils_2.modifyAttack(e, 1, attackingBoard, allCards);
73
+ utils_2.afterStatsUpdate(e, attackingBoard, allCards);
74
+ });
65
75
  attackingEntity.stealth = false;
66
76
  };
67
77
  const performAttack = (attackingEntity, defendingEntity, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, allCards, cardsData, sharedState, spectator) => {
@@ -413,10 +423,10 @@ const processMinionDeath = (board1, board1Hero, board2, board2Hero, allCards, ca
413
423
  handleRebornForFirstBoard(board1, board1Hero, board2, board2Hero, deadMinionIndexesFromRights1, deadEntities1, allCards, cardsData, sharedState, spectator);
414
424
  }
415
425
  board1
416
- .filter((entity) => utils_2.isFish(entity.cardId))
426
+ .filter((entity) => utils_2.isFish(entity))
417
427
  .forEach((entity) => deathrattle_effects_1.rememberDeathrattles(entity, deadEntities1, cardsData, allCards, sharedState));
418
428
  board2
419
- .filter((entity) => utils_2.isFish(entity.cardId))
429
+ .filter((entity) => utils_2.isFish(entity))
420
430
  .forEach((entity) => deathrattle_effects_1.rememberDeathrattles(entity, deadEntities2, cardsData, allCards, sharedState));
421
431
  board1
422
432
  .filter((entity) => entity.cardId === "BG20_HERO_282_Buddy" || entity.cardId === "BG20_HERO_282_Buddy_G")