@firestone-hs/simulate-bgs-battle 1.1.467 → 1.1.470
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.
- package/dist/bgs-player-entity.d.ts +12 -1
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/cards/cards-data.d.ts +0 -1
- package/dist/cards/cards-data.js +18 -50
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/divine-shield.d.ts +6 -0
- package/dist/divine-shield.js +100 -0
- package/dist/divine-shield.js.map +1 -0
- package/dist/input-sanitation.js +3 -2
- package/dist/input-sanitation.js.map +1 -1
- package/dist/simulate-bgs-battle.js +3 -0
- package/dist/simulate-bgs-battle.js.map +1 -1
- package/dist/simulation/add-minion-to-board.d.ts +2 -5
- package/dist/simulation/add-minion-to-board.js +172 -45
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/attack.js +25 -59
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.d.ts +2 -0
- package/dist/simulation/auras.js +60 -23
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/avenge.js +36 -7
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/battlecries.js +53 -12
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/blood-gems.d.ts +2 -2
- package/dist/simulation/blood-gems.js +28 -5
- package/dist/simulation/blood-gems.js.map +1 -1
- package/dist/simulation/cards-in-hand.js +1 -1
- package/dist/simulation/cards-in-hand.js.map +1 -1
- package/dist/simulation/damage-effects.js +14 -2
- package/dist/simulation/damage-effects.js.map +1 -1
- package/dist/simulation/damage-to-hero.d.ts +4 -0
- package/dist/simulation/damage-to-hero.js +8 -0
- package/dist/simulation/damage-to-hero.js.map +1 -0
- package/dist/simulation/death-effects.js +15 -0
- package/dist/simulation/death-effects.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +58 -27
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/deathrattle-orchestration.js +3 -3
- package/dist/simulation/deathrattle-orchestration.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.js +32 -5
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/frenzy.js +2 -2
- package/dist/simulation/frenzy.js.map +1 -1
- package/dist/simulation/minion-death.d.ts +1 -1
- package/dist/simulation/minion-death.js +47 -9
- package/dist/simulation/minion-death.js.map +1 -1
- package/dist/simulation/on-attack.js +11 -4
- package/dist/simulation/on-attack.js.map +1 -1
- package/dist/simulation/on-being-attacked.js +3 -2
- package/dist/simulation/on-being-attacked.js.map +1 -1
- package/dist/simulation/reborn.js +9 -0
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/remove-minion-from-board.d.ts +2 -1
- package/dist/simulation/remove-minion-from-board.js +9 -7
- package/dist/simulation/remove-minion-from-board.js.map +1 -1
- package/dist/simulation/spawn-fail.d.ts +4 -0
- package/dist/simulation/spawn-fail.js +28 -0
- package/dist/simulation/spawn-fail.js.map +1 -0
- package/dist/simulation/spawns.js +2 -4
- package/dist/simulation/spawns.js.map +1 -1
- package/dist/simulation/spectator/spectator.d.ts +2 -2
- package/dist/simulation/spectator/spectator.js.map +1 -1
- package/dist/simulation/start-of-combat.js +253 -44
- package/dist/simulation/start-of-combat.js.map +1 -1
- package/dist/simulation/stats.js +2 -2
- package/dist/simulation/stats.js.map +1 -1
- package/dist/simulation/summon-when-space.js +39 -0
- package/dist/simulation/summon-when-space.js.map +1 -1
- package/dist/simulation/utils/golden.d.ts +1 -1
- package/dist/simulation/utils/golden.js +2 -2
- package/dist/simulation/utils/golden.js.map +1 -1
- package/dist/utils.d.ts +7 -8
- package/dist/utils.js +71 -52
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, grantStatsToMinionsOfEachType, hasCorrectTribe, updateDivineShield } from '../utils';\r\nimport { dealDamageToRandomEnemy } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === entity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly ? otherBoard : board?.[0]?.friendly === entity.friendly ? board : [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = entity.cardId === CardIds.WingedChimera_BG29_844_G ? 1 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846:\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t\tconst treantModifier = entity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t\taddStatsToBoard(entity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(entity, board, true, gameState.allCards);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = entity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(entity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tentity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tentity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CraftyAranasi_BG29_821:\r\n\t\tcase CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t\tconst aranasiLoops = entity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t\t\tdealDamageToRandomEnemy(enemyBoard, enemyHero, entity, 5, friendlyBoard, friendlyHero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MarineMatriarch_BG29_610:\r\n\t\tcase CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t\tconst winterfinnerStats = entity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t\tconst minionInHand = pickRandom(\r\n\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (!!minionInHand) {\r\n\t\t\t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t\t\tminionInHand.health += winterfinnerStats;\r\n\t\t\t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590:\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LongJohnCopper_BG29_831:\r\n\t\tcase CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160:\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tentity,\r\n\t\tboard.length - (board.indexOf(entity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(entity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = entity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, Race.BEAST, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, stats, stats, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(e, target, board, hero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, e, board, hero, otherHero);\r\n\t\t\t});\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":";;;AAAA,iEAAuE;AAGvE,oDAAsD;AACtD,6CAA+C;AAC/C,oCAA2F;AAC3F,qCAAmD;AACnD,mDAAiD;AACjD,6DAAqD;AAErD,qCAA+C;AAC/C,mCAAsC;AAE/B,MAAM,eAAe,GAAG,CAC9B,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,MAAc,EACd,SAAwB,EACC,EAAE;;IAC3B,MAAM,eAAe,GAAkB,EAAE,CAAC;IAC1C,MAAM,aAAa,GAClB,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,MAAM,CAAC,QAAQ;QACvC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAA,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,MAAM,CAAC,QAAQ;YAC/C,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,UAAU,GACf,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,CAAC,CAAC,0CAAE,QAAQ,MAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G,MAAM,YAAY,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,MAAM,SAAS,GAAG,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,QAAQ,MAAM,CAAC,MAAM,EAAE;QACtB,gBAAoC;QACpC;YACC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACjC,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,IAAA,qCAA6B,EAC5B,MAAM,EACN,KAAK,EACL,IAAI,EACJ,qBAAqB,GAAG,CAAC,EACzB,qBAAqB,GAAG,CAAC,EACzB,SAAS,CACT,CAAC;gBACF,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC3B;YACD,MAAM;QACP,gBAAwC;QACxC;YACC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACvE,MAAM;QACP,gBAAkC;QAClC;YACC,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACpE,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAChF,MAAM;QACP,gBAAgC;QAChC;YACC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9E,IAAA,mBAAW,EAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAC/D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YAChF,MAAM;QACP,gBAAkC;QAClC;YACC,eAAe,CAAC,IAAI,CACnB,GAAG,IAAA,kCAAa,EACf,MAAM,CAAC,MAAM,iBAAmC;gBAC/C,CAAC;gBACD,CAAC,YAAmD,EACrD,CAAC,EACD,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,CAAC,QAAQ,EAClB,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,WAAW,EACrB,SAAS,CAAC,SAAS,EACnB,MAAM,CAAC,QAAQ,EACf,KAAK,CACL,CACD,CAAC;YACF,MAAM;QACP,gBAAoC;QACpC;YACC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;gBACtC,IAAA,gCAAuB,EAAC,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;aAClG;YACD,MAAM;QACP,gBAAsC;QACtC;YACC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/E,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC3B;YACD,MAAM;QACP,gBAA6C;QAC7C;YACC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,iBAA8C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,YAAY,GAAG,IAAA,kBAAU,EAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CACf,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAC7F,CACD,CAAC;YACF,IAAI,CAAC,CAAC,YAAY,EAAE;gBACnB,YAAY,CAAC,MAAM,IAAI,CAAC,GAAG,iBAAiB,CAAC;gBAC7C,YAAY,CAAC,MAAM,IAAI,iBAAiB,CAAC;gBACzC,YAAY,CAAC,SAAS,IAAI,iBAAiB,CAAC;gBAC5C,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aACtF;YACD,MAAM;QACP,gBAAuC;QACvC;YACC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/E,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC3B;YACD,MAAM;QACP,gBAAqC;QACrC;YACC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC/E,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC3B;YACD,MAAM;QACP,gBAAuC;QACvC;YACC,IAAI,MAAM,CAAC,iBAAiB,GAAG,CAAC,EAAE;gBACjC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,WAAiB,CAAC,CAAC;gBAC3F,IAAA,8BAAc,EAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;gBACnD,MAAM,CAAC,iBAAiB,EAAE,CAAC;aAC3B;YACD,MAAM;KACP;IAED,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACjG,MAAM,WAAW,GAAG,IAAA,4BAAmB,EACtC,eAAe,EACf,KAAK,EACL,IAAI,EACJ,MAAM,EACN,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAC1C,UAAU,EACV,SAAS,EACT,SAAS,CACT,CAAC;IAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;;QACzB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,mBAAmB,aAAnB,mBAAmB,uBAAnB,mBAAmB,CAAE,WAAW,mCAAI,CAAC,CAAC;IACpF,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACpB,CAAC,CAAC;AAtJW,QAAA,eAAe,mBAsJ1B;AAEF,MAAM,wBAAwB,GAAG,CAChC,MAAmB,EACnB,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,eAA8B,EAC9B,SAAwB,EACvB,EAAE;IACH,IAAI,IAAA,uBAAe,EAAC,MAAM,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QAClE,KAAK;aACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAyC;YACjD,CAAC,CAAC,MAAM,iBAA2C,CACpD;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,iBAA2C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,CAAC,MAAM,EAAE;gBACb,IAAA,mBAAW,EAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC1D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aAC3E;QACF,CAAC,CAAC,CAAC;QACJ,KAAK;aACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAsC,IAAI,CAAC,CAAC,MAAM,iBAAwC,CACnG;aACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;aAC7C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,iBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACrD,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;KACJ;IAED,IAAI,CAAC,QAAQ;SACX,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,yBAA4C;QACpD,CAAC,CAAC,MAAM,0BAA+D,CACxE;SACA,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,0BAA+D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnG,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACrD,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;SACjF;IACF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { CardIds, CardType, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { updateDivineShield } from '../divine-shield';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { dealDamageToRandomEnemy } from './attack';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const onEntityDamaged = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n): readonly BoardEntity[] => {\r\n\tconst spawnedEntities: BoardEntity[] = [];\r\n\tconst friendlyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === entity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === entity.friendly ? otherBoard : board?.[0]?.friendly === entity.friendly ? board : [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = entity.cardId === CardIds.WingedChimera_BG29_844_G ? 1 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tentity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\twingedChimeraModifier * 1,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846:\r\n\t\tcase CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t\tconst treantModifier = entity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t\taddStatsToBoard(entity, board, hero, treantModifier * 2, 0, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Untameabull_BG29_878:\r\n\t\tcase CardIds.Untameabull_BG29_878_G:\r\n\t\t\tupdateDivineShield(entity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.TrustyPup_BG29_800:\r\n\t\tcase CardIds.TrustyPup_BG29_800_G:\r\n\t\t\tconst trustyPupStats = entity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(entity, trustyPupStats, 0, board, hero, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, hero, otherHero);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SilverGoose_BG29_801:\r\n\t\tcase CardIds.SilverGoose_BG29_801_G:\r\n\t\t\tspawnedEntities.push(\r\n\t\t\t\t...spawnEntities(\r\n\t\t\t\t\tentity.cardId === CardIds.SilverGoose_BG29_801_G\r\n\t\t\t\t\t\t? CardIds.SilverGoose_SilverFledglingToken_BG29_801_Gt\r\n\t\t\t\t\t\t: CardIds.SilverGoose_SilverFledglingToken_BG29_801t,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\thero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tentity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CraftyAranasi_BG29_821:\r\n\t\tcase CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t\tconst aranasiLoops = entity.cardId === CardIds.CraftyAranasi_BG29_821_G ? 2 : 1;\r\n\t\t\tfor (let i = 0; i < aranasiLoops; i++) {\r\n\t\t\t\tdealDamageToRandomEnemy(enemyBoard, enemyHero, entity, 5, friendlyBoard, friendlyHero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MarineMatriarch_BG29_610:\r\n\t\tcase CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.MarineMatriarch_BG29_610_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\tcase CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t\tconst winterfinnerStats = entity.cardId === CardIds.VeryHungryWinterfinner_BG29_300_G ? 2 : 1;\r\n\t\t\tconst minionInHand = pickRandom(\r\n\t\t\t\thero.hand.filter(\r\n\t\t\t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t\t),\r\n\t\t\t);\r\n\t\t\tif (!!minionInHand) {\r\n\t\t\t\tminionInHand.attack += 2 * winterfinnerStats;\r\n\t\t\t\tminionInHand.health += winterfinnerStats;\r\n\t\t\t\tminionInHand.maxHealth += winterfinnerStats;\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590:\r\n\t\tcase CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.SoftHeartedSiren_BG26_590_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.LongJohnCopper_BG29_831:\r\n\t\tcase CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.LongJohnCopper_BG29_831_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160:\r\n\t\tcase CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t\tif (entity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst numbersOfCardsToAdd = entity.cardId === CardIds.BristlingBuffoon_BG29_160_G ? 2 : 1;\r\n\t\t\t\tconst cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(hero, board, cardsToAdd, gameState);\r\n\t\t\t\tentity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);\r\n\tconst finalSpawns = performEntitySpawns(\r\n\t\tspawnedEntities,\r\n\t\tboard,\r\n\t\thero,\r\n\t\tentity,\r\n\t\tboard.length - (board.indexOf(entity) + 1),\r\n\t\totherBoard,\r\n\t\totherHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\tconst entityRightToSpawns = board[board.indexOf(entity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = entity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\treturn finalSpawns;\r\n};\r\n\r\nconst handleOtherEntityEffects = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tspawnedEntities: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tif (hasCorrectTribe(entity, hero, Race.BEAST, gameState.allCards)) {\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806 ||\r\n\t\t\t\t\te.cardId === CardIds.IridescentSkyblazer_BG29_806_G,\r\n\t\t\t)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.IridescentSkyblazer_BG29_806_G ? 2 : 1;\r\n\t\t\t\tconst target = pickRandom(board.filter((e) => e.entityId !== entity.entityId));\r\n\t\t\t\tif (!!target) {\r\n\t\t\t\t\tmodifyStats(target, stats, stats, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(e, target, board, hero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\tboard\r\n\t\t\t.filter(\r\n\t\t\t\t(e) =>\r\n\t\t\t\t\te.cardId === CardIds.TrigoreTheLasher_BG29_807 || e.cardId === CardIds.TrigoreTheLasher_BG29_807_G,\r\n\t\t\t)\r\n\t\t\t.filter((e) => e.entityId !== entity.entityId)\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\tconst stats = e.cardId === CardIds.TrigoreTheLasher_BG29_807_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(e, 0, 2 * stats, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(e, e, board, hero, otherHero);\r\n\t\t\t});\r\n\t}\r\n\r\n\thero.trinkets\r\n\t\t.filter(\r\n\t\t\t(t) =>\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_BG30_MagicItem_427 ||\r\n\t\t\t\tt.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t,\r\n\t\t)\r\n\t\t.forEach((carving) => {\r\n\t\t\tconst target = pickRandom(board);\r\n\t\t\tif (!!target) {\r\n\t\t\t\tconst buff = carving.cardId === CardIds.TigerCarving_TigerCarvingToken_BG30_MagicItem_427t ? 4 : 2;\r\n\t\t\t\tmodifyStats(target, buff, 0, board, hero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(carving, target, board, hero, otherHero);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { BgsPlayerEntity } from '../bgs-player-entity';
|
|
2
|
+
import { BoardEntity } from '../board-entity';
|
|
3
|
+
import { FullGameState } from './internal-game-state';
|
|
4
|
+
export declare const dealDamageToHero: (source: BoardEntity, hero: BgsPlayerEntity, board: BoardEntity[], damage: number, gameState: FullGameState) => void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dealDamageToHero = void 0;
|
|
4
|
+
const dealDamageToHero = (source, hero, board, damage, gameState) => {
|
|
5
|
+
hero.hpLeft = hero.hpLeft - damage;
|
|
6
|
+
};
|
|
7
|
+
exports.dealDamageToHero = dealDamageToHero;
|
|
8
|
+
//# sourceMappingURL=damage-to-hero.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"damage-to-hero.js","sourceRoot":"","sources":["../../src/simulation/damage-to-hero.ts"],"names":[],"mappings":";;;AAIO,MAAM,gBAAgB,GAAG,CAC/B,MAAmB,EACnB,IAAqB,EACrB,KAAoB,EACpB,MAAc,EACd,SAAwB,EACvB,EAAE;IACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACpC,CAAC,CAAC;AARW,QAAA,gBAAgB,oBAQ3B","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const dealDamageToHero = (\r\n\tsource: BoardEntity,\r\n\thero: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tdamage: number,\r\n\tgameState: FullGameState,\r\n) => {\r\n\thero.hpLeft = hero.hpLeft - damage;\r\n};\r\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.applyOnDeathEffects = exports.applyAfterDeathEffects = void 0;
|
|
4
4
|
const utils_1 = require("../services/utils");
|
|
5
|
+
const cards_in_hand_1 = require("./cards-in-hand");
|
|
5
6
|
const deathrattle_spawns_1 = require("./deathrattle-spawns");
|
|
6
7
|
const spawns_1 = require("./spawns");
|
|
7
8
|
const stats_1 = require("./stats");
|
|
@@ -16,6 +17,20 @@ exports.applyAfterDeathEffects = applyAfterDeathEffects;
|
|
|
16
17
|
const handleSecrets = (deadEntity, deadEntityIndexFromRight, boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, gameState) => {
|
|
17
18
|
var _a;
|
|
18
19
|
const allSpawns = [];
|
|
20
|
+
for (const trinket of boardWithDeadEntityHero.trinkets) {
|
|
21
|
+
switch (trinket.cardId) {
|
|
22
|
+
case "BG30_MagicItem_931":
|
|
23
|
+
if (!trinket.scriptDataNum1) {
|
|
24
|
+
trinket.scriptDataNum1 = 6;
|
|
25
|
+
}
|
|
26
|
+
trinket.scriptDataNum1--;
|
|
27
|
+
if (trinket.scriptDataNum1 === 0) {
|
|
28
|
+
const randomBeast = (0, utils_1.pickRandom)(gameState.cardsData.beastSpawns);
|
|
29
|
+
(0, cards_in_hand_1.addCardsInHand)(boardWithDeadEntityHero, boardWithDeadEntity, [randomBeast], gameState);
|
|
30
|
+
}
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
19
34
|
for (const secret of ((_a = boardWithDeadEntityHero.secrets) !== null && _a !== void 0 ? _a : []).filter((s) => !s.triggered)) {
|
|
20
35
|
switch (secret.cardId) {
|
|
21
36
|
case "TB_Bacon_Secrets_08":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"death-effects.js","sourceRoot":"","sources":["../../src/simulation/death-effects.ts"],"names":[],"mappings":";;;AAGA,
|
|
1
|
+
{"version":3,"file":"death-effects.js","sourceRoot":"","sources":["../../src/simulation/death-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { performEntitySpawns } from './spawns';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const applyAfterDeathEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst allSpawns = [];\r\n\tconst spawnsFromSecrets = handleSecrets(\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\tallSpawns.push(...spawnsFromSecrets);\r\n\tperformEntitySpawns(\r\n\t\tallSpawns,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\treturn allSpawns;\r\n};\r\n\r\nconst handleSecrets = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst allSpawns = [];\r\n\r\n\tfor (const trinket of boardWithDeadEntityHero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.LuckyTabby_BG30_MagicItem_931:\r\n\t\t\t\tif (!trinket.scriptDataNum1) {\r\n\t\t\t\t\ttrinket.scriptDataNum1 = 6;\r\n\t\t\t\t}\r\n\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t\tif (trinket.scriptDataNum1 === 0) {\r\n\t\t\t\t\tconst randomBeast = pickRandom(gameState.cardsData.beastSpawns);\r\n\t\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [randomBeast], gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const secret of (boardWithDeadEntityHero.secrets ?? []).filter((s) => !s.triggered)) {\r\n\t\tswitch (secret.cardId) {\r\n\t\t\tcase CardIds.Avenge_TB_Bacon_Secrets_08:\r\n\t\t\t\tsecret.triggered = true;\r\n\t\t\t\tconst avengeTarget = pickRandomAlive(boardWithDeadEntity);\r\n\t\t\t\tmodifyStats(avengeTarget, 3, 2, boardWithDeadEntity, boardWithDeadEntityHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(secret, avengeTarget, boardWithDeadEntity, null, null);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Redemption_TB_Bacon_Secrets_10:\r\n\t\t\t\tsecret.triggered = true;\r\n\t\t\t\tconst redemptionSpawns = spawnEntities(\r\n\t\t\t\t\tdeadEntity.cardId,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\t// { ...newSpawn } as BoardEntity,\r\n\t\t\t\t);\r\n\t\t\t\tredemptionSpawns[0].health = 1;\r\n\t\t\t\tallSpawns.push(...redemptionSpawns);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(secret, redemptionSpawns[0], boardWithDeadEntity, null, null);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Effigy_TB_Bacon_Secrets_05:\r\n\t\t\t\tsecret.triggered = true;\r\n\t\t\t\tconst minionTier = gameState.cardsData.getTavernLevel(deadEntity.cardId);\r\n\t\t\t\tconst newMinion = gameState.cardsData.getRandomMinionForTavernTier(minionTier);\r\n\t\t\t\tconst effigySpawns = spawnEntities(\r\n\t\t\t\t\tnewMinion,\r\n\t\t\t\t\t1,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tgameState.spectator,\r\n\t\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t);\r\n\t\t\t\tallSpawns.push(...effigySpawns);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(secret, effigySpawns[0], boardWithDeadEntity, null, null);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn allSpawns;\r\n};\r\n\r\nexport const applyOnDeathEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\t// Nothing yet\r\n\treturn [];\r\n};\r\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.rememberDeathrattles = exports.applyMonstrosity = exports.dealDamageToAllMinions = exports.applyWheneverMinionDiesEffect = exports.handleAfterMinionKillsEffect = exports.applyEarthInvocationEnchantment = exports.applyFireInvocationEnchantment = exports.applyWaterInvocationEnchantment = exports.applyLightningInvocationEnchantment = exports.handleDeathrattleEffects = exports.computeDeathrattleMultiplier = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
|
+
const divine_shield_1 = require("../divine-shield");
|
|
5
6
|
const utils_1 = require("../services/utils");
|
|
6
7
|
const simulate_bgs_battle_1 = require("../simulate-bgs-battle");
|
|
7
8
|
const utils_2 = require("../utils");
|
|
@@ -59,14 +60,14 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
59
60
|
break;
|
|
60
61
|
case "BG_OG_221":
|
|
61
62
|
for (let i = 0; i < multiplier; i++) {
|
|
62
|
-
(0,
|
|
63
|
+
(0, divine_shield_1.grantRandomDivineShield)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);
|
|
63
64
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
64
65
|
}
|
|
65
66
|
break;
|
|
66
67
|
case "TB_BaconUps_014":
|
|
67
68
|
for (let i = 0; i < multiplier; i++) {
|
|
68
|
-
(0,
|
|
69
|
-
(0,
|
|
69
|
+
(0, divine_shield_1.grantRandomDivineShield)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);
|
|
70
|
+
(0, divine_shield_1.grantRandomDivineShield)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);
|
|
70
71
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
71
72
|
}
|
|
72
73
|
break;
|
|
@@ -79,10 +80,10 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
79
80
|
.filter((entity) => !entity.venomous)
|
|
80
81
|
.filter((entity) => !entity.poisonous)
|
|
81
82
|
.filter((entity) => entity.health > 0 && !entity.definitelyDead)
|
|
82
|
-
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, reference_data_1.Race.MURLOC, gameState.allCards));
|
|
83
|
+
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.MURLOC, gameState.allCards));
|
|
83
84
|
if (possibleBelcherTargets.length > 0) {
|
|
84
85
|
const chosen = (0, utils_1.pickRandom)(possibleBelcherTargets);
|
|
85
|
-
chosen
|
|
86
|
+
(0, utils_2.updateVenomous)(chosen, true, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
86
87
|
gameState.spectator.registerPowerTarget(deadEntity, chosen, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero);
|
|
87
88
|
}
|
|
88
89
|
}
|
|
@@ -104,7 +105,7 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
104
105
|
const target = (0, utils_1.pickRandom)(validTargets);
|
|
105
106
|
if (target) {
|
|
106
107
|
if (!target.divineShield) {
|
|
107
|
-
(0,
|
|
108
|
+
(0, divine_shield_1.updateDivineShield)(target, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, true, gameState);
|
|
108
109
|
}
|
|
109
110
|
target.taunt = true;
|
|
110
111
|
target.windfury = true;
|
|
@@ -120,11 +121,11 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
120
121
|
const nadinaMultiplier = deadEntityCardId === "TB_BaconUps_154" ? 6 : 3;
|
|
121
122
|
for (let j = 0; j < nadinaMultiplier; j++) {
|
|
122
123
|
const validTargets = boardWithDeadEntity
|
|
123
|
-
.filter((e) => (0, utils_2.hasCorrectTribe)(e, reference_data_1.Race.DRAGON, gameState.allCards))
|
|
124
|
+
.filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.DRAGON, gameState.allCards))
|
|
124
125
|
.filter((entity) => !entity.divineShield);
|
|
125
126
|
const target = (0, utils_1.pickRandom)(validTargets);
|
|
126
127
|
if (target) {
|
|
127
|
-
(0,
|
|
128
|
+
(0, divine_shield_1.updateDivineShield)(target, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, true, gameState);
|
|
128
129
|
gameState.spectator.registerPowerTarget(deadEntity, target, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero);
|
|
129
130
|
}
|
|
130
131
|
}
|
|
@@ -264,7 +265,7 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
264
265
|
for (let i = 0; i < multiplier; i++) {
|
|
265
266
|
const numberOfDeadMechsThisCombat = gameState.sharedState.deaths
|
|
266
267
|
.filter((entity) => entity.friendly === deadEntity.friendly)
|
|
267
|
-
.filter((entity) =>
|
|
268
|
+
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.MECH, gameState.allCards)).length;
|
|
268
269
|
for (let j = 0; j < numberOfDeadMechsThisCombat; j++) {
|
|
269
270
|
(0, attack_1.dealDamageToRandomEnemy)(otherBoard, otherBoardHero, deadEntity, squirrelDamage, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
270
271
|
}
|
|
@@ -274,9 +275,12 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
274
275
|
case "BG_BOT_606":
|
|
275
276
|
case "TB_BaconUps_028":
|
|
276
277
|
const kaboomLoops = deadEntity.cardId === "TB_BaconUps_028" ? 2 : 1;
|
|
278
|
+
const baseDamage = 4 +
|
|
279
|
+
boardWithDeadEntityHero.trinkets.filter((t) => t.cardId === "BG30_MagicItem_803").length *
|
|
280
|
+
8;
|
|
277
281
|
for (let i = 0; i < multiplier; i++) {
|
|
278
282
|
for (let j = 0; j < kaboomLoops; j++) {
|
|
279
|
-
(0, attack_1.dealDamageToRandomEnemy)(otherBoard, otherBoardHero, deadEntity,
|
|
283
|
+
(0, attack_1.dealDamageToRandomEnemy)(otherBoard, otherBoardHero, deadEntity, baseDamage, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
280
284
|
}
|
|
281
285
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
282
286
|
}
|
|
@@ -377,7 +381,7 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
377
381
|
case "BG26_867_G":
|
|
378
382
|
for (let i = 0; i < multiplier; i++) {
|
|
379
383
|
const numberOfBloodGems = deadEntityCardId === "BG26_867_G" ? 6 : 3;
|
|
380
|
-
for (const entity of boardWithDeadEntity.filter((e) => (0, utils_2.hasCorrectTribe)(e, reference_data_1.Race.QUILBOAR, gameState.allCards))) {
|
|
384
|
+
for (const entity of boardWithDeadEntity.filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.QUILBOAR, gameState.allCards))) {
|
|
381
385
|
(0, blood_gems_1.playBloodGemsOn)(deadEntity, entity, numberOfBloodGems, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
382
386
|
}
|
|
383
387
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
@@ -391,7 +395,7 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
391
395
|
for (let i = 0; i < Math.min(numberToGild, boardWithDeadEntity.length); i++) {
|
|
392
396
|
const rightMostMinion = targetBoard[targetBoard.length - 1 - i];
|
|
393
397
|
if (rightMostMinion) {
|
|
394
|
-
(0, golden_1.makeMinionGolden)(rightMostMinion, deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
398
|
+
(0, golden_1.makeMinionGolden)(rightMostMinion, deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);
|
|
395
399
|
}
|
|
396
400
|
}
|
|
397
401
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
@@ -453,15 +457,15 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
453
457
|
case "BG26_055":
|
|
454
458
|
case "BG26_055_G":
|
|
455
459
|
for (let i = 0; i < multiplier; i++) {
|
|
456
|
-
applyRecurringNightmareDeathrattleEffect(boardWithDeadEntity, deadEntity, deadEntityCardId === "BG26_055_G", gameState.allCards, gameState.spectator, gameState.sharedState);
|
|
460
|
+
applyRecurringNightmareDeathrattleEffect(boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, deadEntityCardId === "BG26_055_G", gameState.allCards, gameState.spectator, gameState.sharedState);
|
|
457
461
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
458
462
|
}
|
|
459
463
|
break;
|
|
460
464
|
case "BG27_080":
|
|
461
465
|
case "BG27_080_G":
|
|
462
|
-
const motleyBuff = deadEntity.cardId === "BG27_080_G" ?
|
|
466
|
+
const motleyBuff = deadEntity.cardId === "BG27_080_G" ? 2 : 1;
|
|
463
467
|
for (let i = 0; i < multiplier; i++) {
|
|
464
|
-
(0, utils_2.grantStatsToMinionsOfEachType)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, motleyBuff, motleyBuff, gameState);
|
|
468
|
+
(0, utils_2.grantStatsToMinionsOfEachType)(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, motleyBuff * 2, motleyBuff * 1, gameState);
|
|
465
469
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
466
470
|
}
|
|
467
471
|
break;
|
|
@@ -491,7 +495,7 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
491
495
|
.filter((e) => e.cardId !== "BG28_309" &&
|
|
492
496
|
e.cardId !== "BG28_309_G")
|
|
493
497
|
.filter((e) => !e.reborn)
|
|
494
|
-
.filter((e) => (0, utils_2.hasCorrectTribe)(e, reference_data_1.Race.UNDEAD, gameState.allCards));
|
|
498
|
+
.filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.UNDEAD, gameState.allCards));
|
|
495
499
|
const target = (0, utils_1.pickRandom)(targets);
|
|
496
500
|
if (target) {
|
|
497
501
|
target.reborn = true;
|
|
@@ -558,10 +562,18 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
558
562
|
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
559
563
|
}
|
|
560
564
|
break;
|
|
561
|
-
case "
|
|
562
|
-
case "
|
|
565
|
+
case "BG31_821":
|
|
566
|
+
case "BG31_821_G":
|
|
563
567
|
for (let i = 0; i < multiplier; i++) {
|
|
564
|
-
|
|
568
|
+
boardWithDeadEntityHero.globalInfo.PirateAttackBonus +=
|
|
569
|
+
deadEntity.cardId === "BG31_821_G" ? 8 : 4;
|
|
570
|
+
}
|
|
571
|
+
break;
|
|
572
|
+
default:
|
|
573
|
+
if ((0, utils_2.hasMechanic)(gameState.allCards.getCard(deadEntity.cardId), reference_data_1.GameTag[reference_data_1.GameTag.DEATHRATTLE])) {
|
|
574
|
+
for (let i = 0; i < multiplier; i++) {
|
|
575
|
+
(0, deathrattle_on_trigger_1.onDeathrattleTriggered)(deathrattleTriggeredInput);
|
|
576
|
+
}
|
|
565
577
|
}
|
|
566
578
|
break;
|
|
567
579
|
}
|
|
@@ -595,6 +607,12 @@ const handleDeathrattleEffects = (boardWithDeadEntity, boardWithDeadEntityHero,
|
|
|
595
607
|
});
|
|
596
608
|
for (const enchantment of enchantments) {
|
|
597
609
|
switch (enchantment.cardId) {
|
|
610
|
+
case "BG30_MagicItem_917e":
|
|
611
|
+
(0, cards_in_hand_1.addCardsInHand)(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);
|
|
612
|
+
break;
|
|
613
|
+
case "BG30_MagicItem_411e":
|
|
614
|
+
(0, cards_in_hand_1.addCardsInHand)(boardWithDeadEntityHero, boardWithDeadEntity, ["BG20_GEM"], gameState);
|
|
615
|
+
break;
|
|
598
616
|
case "BG21_000e":
|
|
599
617
|
case "BG21_000_Ge":
|
|
600
618
|
applyLeapFroggerEffect(boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, enchantment.cardId === "BG21_000_Ge", gameState, enchantment.repeats || 1);
|
|
@@ -693,11 +711,11 @@ const applyLeapFroggerEffect = (boardWithDeadEntity, boardWithDeadEntityHero, de
|
|
|
693
711
|
});
|
|
694
712
|
}
|
|
695
713
|
};
|
|
696
|
-
const applyRecurringNightmareDeathrattleEffect = (boardWithDeadEntity, deadEntity, isPremium, allCards, spectator, sharedState, multiplier = 1) => {
|
|
714
|
+
const applyRecurringNightmareDeathrattleEffect = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, isPremium, allCards, spectator, sharedState, multiplier = 1) => {
|
|
697
715
|
var _a;
|
|
698
716
|
multiplier = multiplier || 1;
|
|
699
717
|
const target = (0, utils_1.pickRandom)(boardWithDeadEntity
|
|
700
|
-
.filter((e) => (0, utils_2.hasCorrectTribe)(e, reference_data_1.Race.UNDEAD, allCards))
|
|
718
|
+
.filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.UNDEAD, allCards))
|
|
701
719
|
.filter((e) => e.cardId !== "BG26_055" &&
|
|
702
720
|
e.cardId !== "BG26_055_G"));
|
|
703
721
|
if (target) {
|
|
@@ -733,19 +751,22 @@ const handleAfterMinionKillsEffect = (deadEntity, deadEntityIndexFromRight, boar
|
|
|
733
751
|
exports.handleAfterMinionKillsEffect = handleAfterMinionKillsEffect;
|
|
734
752
|
const applyWheneverMinionDiesEffect = (deadEntity, deadEntityIndexFromRight, boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, gameState) => {
|
|
735
753
|
var _a;
|
|
736
|
-
if ((0, utils_2.
|
|
754
|
+
if ((0, utils_2.hasCorrectTribe)(deadEntity, boardWithDeadEntityHero, reference_data_1.Race.BEAST, gameState.allCards)) {
|
|
737
755
|
applyScavengingHyenaEffect(boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
738
756
|
}
|
|
739
|
-
if ((0, utils_2.
|
|
757
|
+
if ((0, utils_2.hasCorrectTribe)(deadEntity, boardWithDeadEntityHero, reference_data_1.Race.DEMON, gameState.allCards)) {
|
|
740
758
|
applySoulJugglerEffect(boardWithDeadEntity, boardWithDeadEntityHero, otherBoard, otherBoardHero, gameState);
|
|
741
759
|
}
|
|
742
|
-
if ((0, utils_2.
|
|
760
|
+
if ((0, utils_2.hasCorrectTribe)(deadEntity, boardWithDeadEntityHero, reference_data_1.Race.MECH, gameState.allCards)) {
|
|
743
761
|
applyJunkbotEffect(boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
744
762
|
}
|
|
745
|
-
if ((0, utils_2.hasCorrectTribe)(deadEntity, reference_data_1.Race.MURLOC, gameState.allCards)) {
|
|
763
|
+
if ((0, utils_2.hasCorrectTribe)(deadEntity, boardWithDeadEntityHero, reference_data_1.Race.MURLOC, gameState.allCards)) {
|
|
746
764
|
removeOldMurkEyeAttack(boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
747
765
|
removeOldMurkEyeAttack(otherBoard, otherBoardHero, gameState);
|
|
748
766
|
}
|
|
767
|
+
if ((0, utils_2.hasCorrectTribe)(deadEntity, boardWithDeadEntityHero, reference_data_1.Race.ELEMENTAL, gameState.allCards)) {
|
|
768
|
+
applyMossOfTheSchlossEffect(deadEntity, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
769
|
+
}
|
|
749
770
|
if (deadEntity.taunt) {
|
|
750
771
|
applyBristlemaneScrapsmithEffect(boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
751
772
|
applyQirajiHarbringerEffect(boardWithDeadEntity, boardWithDeadEntityHero, deadEntityIndexFromRight, gameState);
|
|
@@ -785,7 +806,7 @@ const applyWheneverMinionDiesEffect = (deadEntity, deadEntityIndexFromRight, boa
|
|
|
785
806
|
}
|
|
786
807
|
else if (deadEntity.lastAffectedByEntity.cardId === "BGS_080") {
|
|
787
808
|
const otherPirates = otherBoard
|
|
788
|
-
.filter((entity) => (0, utils_2.
|
|
809
|
+
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.allCards))
|
|
789
810
|
.filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
|
|
790
811
|
otherPirates.forEach((pirate) => {
|
|
791
812
|
(0, stats_1.modifyStats)(pirate, 2, 2, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
@@ -794,7 +815,7 @@ const applyWheneverMinionDiesEffect = (deadEntity, deadEntityIndexFromRight, boa
|
|
|
794
815
|
}
|
|
795
816
|
else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_142") {
|
|
796
817
|
const otherPirates = otherBoard
|
|
797
|
-
.filter((entity) => (0, utils_2.
|
|
818
|
+
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.allCards))
|
|
798
819
|
.filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
|
|
799
820
|
otherPirates.forEach((pirate) => {
|
|
800
821
|
(0, stats_1.modifyStats)(pirate, 4, 4, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
@@ -871,6 +892,16 @@ const applyBristlemaneScrapsmithEffect = (board, boardPlayerEntity, gameState) =
|
|
|
871
892
|
}
|
|
872
893
|
}
|
|
873
894
|
};
|
|
895
|
+
const applyMossOfTheSchlossEffect = (deadEntity, board, hero, gameState) => {
|
|
896
|
+
board
|
|
897
|
+
.filter((e) => e.cardId === "BG30_111" || e.cardId === "BG30_111_G")
|
|
898
|
+
.filter((e) => e.abiityChargesLeft > 0)
|
|
899
|
+
.forEach((entity) => {
|
|
900
|
+
(0, stats_1.modifyStats)(entity, deadEntity.maxAttack, deadEntity.maxHealth, board, hero, gameState);
|
|
901
|
+
entity.abiityChargesLeft--;
|
|
902
|
+
gameState.spectator.registerPowerTarget(entity, entity, board, null, null);
|
|
903
|
+
});
|
|
904
|
+
};
|
|
874
905
|
const applyJunkbotEffect = (board, hero, gameState) => {
|
|
875
906
|
for (let i = 0; i < board.length; i++) {
|
|
876
907
|
if (board[i].cardId === "GVG_106") {
|