@firestone-hs/simulate-bgs-battle 1.1.599 → 1.1.601
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 +2 -0
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/board-entity.d.ts +10 -9
- package/dist/board-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +7 -7
- package/dist/cards/card.interface.js +3 -3
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.d.ts +1 -0
- package/dist/cards/cards-data.js +8 -10
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +114 -2
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/minion/all-seeing-elder.d.ts +2 -0
- package/dist/cards/impl/minion/all-seeing-elder.js +18 -0
- package/dist/cards/impl/minion/all-seeing-elder.js.map +1 -0
- package/dist/cards/impl/minion/avalanche-caller.d.ts +2 -0
- package/dist/cards/impl/minion/avalanche-caller.js +14 -0
- package/dist/cards/impl/minion/avalanche-caller.js.map +1 -0
- package/dist/cards/impl/minion/bigwig-bandit.d.ts +2 -0
- package/dist/cards/impl/minion/bigwig-bandit.js +14 -0
- package/dist/cards/impl/minion/bigwig-bandit.js.map +1 -0
- package/dist/cards/impl/minion/bile-spitter.d.ts +2 -0
- package/dist/cards/impl/minion/bile-spitter.js +28 -0
- package/dist/cards/impl/minion/bile-spitter.js.map +1 -0
- package/dist/cards/impl/minion/bloodsnout-warlord.d.ts +2 -0
- package/dist/cards/impl/minion/bloodsnout-warlord.js +18 -0
- package/dist/cards/impl/minion/bloodsnout-warlord.js.map +1 -0
- package/dist/cards/impl/minion/blue-whelp.d.ts +2 -0
- package/dist/cards/impl/minion/blue-whelp.js +15 -0
- package/dist/cards/impl/minion/blue-whelp.js.map +1 -0
- package/dist/cards/impl/minion/campfire-shadow.d.ts +2 -0
- package/dist/cards/impl/minion/campfire-shadow.js +20 -0
- package/dist/cards/impl/minion/campfire-shadow.js.map +1 -0
- package/dist/cards/impl/minion/canopy-swinger.d.ts +2 -0
- package/dist/cards/impl/minion/canopy-swinger.js +19 -0
- package/dist/cards/impl/minion/canopy-swinger.js.map +1 -0
- package/dist/cards/impl/minion/carapace-raiser.d.ts +2 -0
- package/dist/cards/impl/minion/carapace-raiser.js +14 -0
- package/dist/cards/impl/minion/carapace-raiser.js.map +1 -0
- package/dist/cards/impl/minion/charmwing.d.ts +2 -0
- package/dist/cards/impl/minion/charmwing.js +29 -0
- package/dist/cards/impl/minion/charmwing.js.map +1 -0
- package/dist/cards/impl/minion/coldlight-diver.d.ts +2 -0
- package/dist/cards/impl/minion/coldlight-diver.js +20 -0
- package/dist/cards/impl/minion/coldlight-diver.js.map +1 -0
- package/dist/cards/impl/minion/crystal-infuser-enchantment.js.map +1 -0
- package/dist/cards/impl/minion/cupcake-peddler.d.ts +2 -0
- package/dist/cards/impl/minion/cupcake-peddler.js +14 -0
- package/dist/cards/impl/minion/cupcake-peddler.js.map +1 -0
- package/dist/cards/impl/minion/deathly-striker.js +1 -1
- package/dist/cards/impl/minion/deathly-striker.js.map +1 -1
- package/dist/cards/impl/minion/devout-hellcaller.d.ts +2 -0
- package/dist/cards/impl/minion/devout-hellcaller.js +17 -0
- package/dist/cards/impl/minion/devout-hellcaller.js.map +1 -0
- package/dist/cards/impl/minion/drakkari-embalmer.d.ts +2 -0
- package/dist/cards/impl/minion/drakkari-embalmer.js +24 -0
- package/dist/cards/impl/minion/drakkari-embalmer.js.map +1 -0
- package/dist/cards/impl/minion/exceptionnal-caretaker.d.ts +2 -0
- package/dist/cards/impl/minion/exceptionnal-caretaker.js +37 -0
- package/dist/cards/impl/minion/exceptionnal-caretaker.js.map +1 -0
- package/dist/cards/impl/minion/fauna-whisperer.js +11 -8
- package/dist/cards/impl/minion/fauna-whisperer.js.map +1 -1
- package/dist/cards/impl/minion/fire-forged-evoker.js +1 -1
- package/dist/cards/impl/minion/fire-forged-evoker.js.map +1 -1
- package/dist/cards/impl/minion/floating-watcher.d.ts +2 -0
- package/dist/cards/impl/minion/floating-watcher.js +12 -0
- package/dist/cards/impl/minion/floating-watcher.js.map +1 -0
- package/dist/cards/impl/minion/flotsam-flinger.d.ts +2 -0
- package/dist/cards/impl/minion/flotsam-flinger.js +17 -0
- package/dist/cards/impl/minion/flotsam-flinger.js.map +1 -0
- package/dist/cards/impl/minion/friendly-geist.d.ts +2 -0
- package/dist/cards/impl/minion/friendly-geist.js +12 -0
- package/dist/cards/impl/minion/friendly-geist.js.map +1 -0
- package/dist/cards/impl/minion/geared-guard.d.ts +2 -0
- package/dist/cards/impl/minion/geared-guard.js +23 -0
- package/dist/cards/impl/minion/geared-guard.js.map +1 -0
- package/dist/cards/impl/minion/gleaming-trader.d.ts +2 -0
- package/dist/cards/impl/minion/gleaming-trader.js +13 -0
- package/dist/cards/impl/minion/gleaming-trader.js.map +1 -0
- package/dist/cards/impl/minion/goldgrubber.js +1 -1
- package/dist/cards/impl/minion/goldgrubber.js.map +1 -1
- package/dist/cards/impl/minion/greedy-snaketongue.d.ts +2 -0
- package/dist/cards/impl/minion/greedy-snaketongue.js +17 -0
- package/dist/cards/impl/minion/greedy-snaketongue.js.map +1 -0
- package/dist/cards/impl/minion/greenskeeper.d.ts +2 -2
- package/dist/cards/impl/minion/greenskeeper.js +3 -2
- package/dist/cards/impl/minion/greenskeeper.js.map +1 -1
- package/dist/cards/impl/minion/hoarding-hatespawn.js +1 -1
- package/dist/cards/impl/minion/hoarding-hatespawn.js.map +1 -1
- package/dist/cards/impl/minion/hog-watcher.d.ts +2 -0
- package/dist/cards/impl/minion/hog-watcher.js +20 -0
- package/dist/cards/impl/minion/hog-watcher.js.map +1 -0
- package/dist/cards/impl/minion/hot-springer.d.ts +2 -0
- package/dist/cards/impl/minion/hot-springer.js +19 -0
- package/dist/cards/impl/minion/hot-springer.js.map +1 -0
- package/dist/cards/impl/minion/lightfeather-screecher.d.ts +2 -0
- package/dist/cards/impl/minion/lightfeather-screecher.js +23 -0
- package/dist/cards/impl/minion/lightfeather-screecher.js.map +1 -0
- package/dist/cards/impl/minion/lokholar-frostforger.d.ts +1 -1
- package/dist/cards/impl/minion/lokholar-frostforger.js +3 -3
- package/dist/cards/impl/minion/lokholar-frostforger.js.map +1 -1
- package/dist/cards/impl/minion/lord-of-the-ruins.d.ts +2 -0
- package/dist/cards/impl/minion/lord-of-the-ruins.js +19 -0
- package/dist/cards/impl/minion/lord-of-the-ruins.js.map +1 -0
- package/dist/cards/impl/minion/lost-city-looter.d.ts +2 -0
- package/dist/cards/impl/minion/lost-city-looter.js +13 -0
- package/dist/cards/impl/minion/lost-city-looter.js.map +1 -0
- package/dist/cards/impl/minion/monstrous-macaw.d.ts +2 -2
- package/dist/cards/impl/minion/monstrous-macaw.js +3 -2
- package/dist/cards/impl/minion/monstrous-macaw.js.map +1 -1
- package/dist/cards/impl/minion/nimble-hatchling.d.ts +2 -0
- package/dist/cards/impl/minion/nimble-hatchling.js +14 -0
- package/dist/cards/impl/minion/nimble-hatchling.js.map +1 -0
- package/dist/cards/impl/minion/noisul-of-the-many-faces.js +1 -1
- package/dist/cards/impl/minion/noisul-of-the-many-faces.js.map +1 -1
- package/dist/cards/impl/minion/oranomonos-the-wilted.d.ts +2 -0
- package/dist/cards/impl/minion/oranomonos-the-wilted.js +11 -0
- package/dist/cards/impl/minion/oranomonos-the-wilted.js.map +1 -0
- package/dist/cards/impl/minion/poultron.d.ts +2 -0
- package/dist/cards/impl/minion/poultron.js +20 -0
- package/dist/cards/impl/minion/poultron.js.map +1 -0
- package/dist/cards/impl/minion/primeval-monstrosity.d.ts +2 -0
- package/dist/cards/impl/minion/primeval-monstrosity.js +16 -0
- package/dist/cards/impl/minion/primeval-monstrosity.js.map +1 -0
- package/dist/cards/impl/minion/prodigious-tusker.d.ts +2 -0
- package/dist/cards/impl/minion/prodigious-tusker.js +16 -0
- package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -0
- package/dist/cards/impl/minion/raptor-elder.d.ts +2 -0
- package/dist/cards/impl/minion/raptor-elder.js +42 -0
- package/dist/cards/impl/minion/raptor-elder.js.map +1 -0
- package/dist/cards/impl/minion/razorfen-vineweaver.d.ts +2 -0
- package/dist/cards/impl/minion/razorfen-vineweaver.js +16 -0
- package/dist/cards/impl/minion/razorfen-vineweaver.js.map +1 -0
- package/dist/cards/impl/minion/red-whelp.js +1 -1
- package/dist/cards/impl/minion/red-whelp.js.map +1 -1
- package/dist/cards/impl/minion/ride-or-die.d.ts +2 -0
- package/dist/cards/impl/minion/ride-or-die.js +35 -0
- package/dist/cards/impl/minion/ride-or-die.js.map +1 -0
- package/dist/cards/impl/minion/roadboar.d.ts +2 -0
- package/dist/cards/impl/minion/roadboar.js +17 -0
- package/dist/cards/impl/minion/roadboar.js.map +1 -0
- package/dist/cards/impl/minion/ruins-renovator.d.ts +2 -0
- package/dist/cards/impl/minion/ruins-renovator.js +17 -0
- package/dist/cards/impl/minion/ruins-renovator.js.map +1 -0
- package/dist/cards/impl/minion/sanctum-rester.js +1 -1
- package/dist/cards/impl/minion/sanctum-rester.js.map +1 -1
- package/dist/cards/impl/minion/sanguine-refiner.d.ts +2 -0
- package/dist/cards/impl/minion/sanguine-refiner.js +16 -0
- package/dist/cards/impl/minion/sanguine-refiner.js.map +1 -0
- package/dist/cards/impl/minion/scourge-harvester.d.ts +2 -0
- package/dist/cards/impl/minion/scourge-harvester.js +16 -0
- package/dist/cards/impl/minion/scourge-harvester.js.map +1 -0
- package/dist/cards/impl/minion/sharp-eyed-sabretooth.d.ts +2 -0
- package/dist/cards/impl/minion/sharp-eyed-sabretooth.js +20 -0
- package/dist/cards/impl/minion/sharp-eyed-sabretooth.js.map +1 -0
- package/dist/cards/impl/minion/ship-master-eudora.d.ts +2 -0
- package/dist/cards/impl/minion/ship-master-eudora.js +13 -0
- package/dist/cards/impl/minion/ship-master-eudora.js.map +1 -0
- package/dist/cards/impl/minion/shipwrecked-rascal.d.ts +2 -0
- package/dist/cards/impl/minion/shipwrecked-rascal.js +20 -0
- package/dist/cards/impl/minion/shipwrecked-rascal.js.map +1 -0
- package/dist/cards/impl/minion/silent-enforcer.d.ts +2 -0
- package/dist/cards/impl/minion/silent-enforcer.js +23 -0
- package/dist/cards/impl/minion/silent-enforcer.js.map +1 -0
- package/dist/cards/impl/minion/sleepy-supporter.d.ts +2 -0
- package/dist/cards/impl/minion/sleepy-supporter.js +24 -0
- package/dist/cards/impl/minion/sleepy-supporter.js.map +1 -0
- package/dist/cards/impl/minion/stitched-salvager.js +2 -1
- package/dist/cards/impl/minion/stitched-salvager.js.map +1 -1
- package/dist/cards/impl/minion/stomping-stegodon-enchantment.d.ts +2 -0
- package/dist/cards/impl/minion/stomping-stegodon-enchantment.js +32 -0
- package/dist/cards/impl/minion/stomping-stegodon-enchantment.js.map +1 -0
- package/dist/cards/impl/minion/stomping-stegodon.d.ts +2 -0
- package/dist/cards/impl/minion/stomping-stegodon.js +29 -0
- package/dist/cards/impl/minion/stomping-stegodon.js.map +1 -0
- package/dist/cards/impl/minion/stray-satyr.d.ts +2 -0
- package/dist/cards/impl/minion/stray-satyr.js +16 -0
- package/dist/cards/impl/minion/stray-satyr.js.map +1 -0
- package/dist/cards/impl/minion/tusked-camper.d.ts +2 -0
- package/dist/cards/impl/minion/tusked-camper.js +16 -0
- package/dist/cards/impl/minion/tusked-camper.js.map +1 -0
- package/dist/cards/impl/minion/twilight-watcher.d.ts +2 -0
- package/dist/cards/impl/minion/twilight-watcher.js +21 -0
- package/dist/cards/impl/minion/twilight-watcher.js.map +1 -0
- package/dist/cards/impl/minion/vengeful-protector.d.ts +2 -0
- package/dist/cards/impl/minion/vengeful-protector.js +19 -0
- package/dist/cards/impl/minion/vengeful-protector.js.map +1 -0
- package/dist/cards/impl/minion/void-earl.d.ts +2 -0
- package/dist/cards/impl/minion/void-earl.js +12 -0
- package/dist/cards/impl/minion/void-earl.js.map +1 -0
- package/dist/cards/impl/minion/whirring-protector-enchantment.d.ts +2 -0
- package/dist/cards/impl/minion/whirring-protector-enchantment.js +19 -0
- package/dist/cards/impl/minion/whirring-protector-enchantment.js.map +1 -0
- package/dist/cards/impl/minion/whirring-protector.d.ts +2 -0
- package/dist/cards/impl/minion/whirring-protector.js +16 -0
- package/dist/cards/impl/minion/whirring-protector.js.map +1 -0
- package/dist/cards/impl/minion/wildfire-elemental.js +1 -1
- package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -1
- package/dist/cards/impl/minion/wrathscale-rogue.d.ts +2 -0
- package/dist/cards/impl/minion/wrathscale-rogue.js +20 -0
- package/dist/cards/impl/minion/wrathscale-rogue.js.map +1 -0
- package/dist/cards/impl/minion/yorik-smite.d.ts +2 -0
- package/dist/cards/impl/minion/yorik-smite.js +16 -0
- package/dist/cards/impl/minion/yorik-smite.js.map +1 -0
- package/dist/cards/impl/minion/young-murk-eye.d.ts +2 -0
- package/dist/cards/impl/minion/young-murk-eye.js +22 -0
- package/dist/cards/impl/minion/young-murk-eye.js.map +1 -0
- package/dist/cards/impl/minion/yrel.d.ts +2 -0
- package/dist/cards/impl/minion/yrel.js +16 -0
- package/dist/cards/impl/minion/yrel.js.map +1 -0
- package/dist/cards/impl/minion/zergling.js +1 -1
- package/dist/cards/impl/minion/zergling.js.map +1 -1
- package/dist/cards/impl/quest-reward/stand-as-one.d.ts +2 -0
- package/dist/cards/impl/quest-reward/stand-as-one.js +18 -0
- package/dist/cards/impl/quest-reward/stand-as-one.js.map +1 -0
- package/dist/cards/impl/trinket/eternal-portrait.d.ts +1 -1
- package/dist/cards/impl/trinket/eternal-portrait.js +1 -1
- package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/karazhan-chess-set.js +1 -1
- package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -1
- package/dist/keywords/divine-shield.js +1 -16
- package/dist/keywords/divine-shield.js.map +1 -1
- package/dist/simulate-bgs-battle.js +0 -4
- package/dist/simulate-bgs-battle.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +11 -49
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/after-attack.js +1 -35
- package/dist/simulation/after-attack.js.map +1 -1
- package/dist/simulation/attack.d.ts +1 -0
- package/dist/simulation/attack.js +17 -61
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.js +25 -70
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/avenge.js +0 -50
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/battlecries.js +11 -131
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/damage-effects.d.ts +9 -1
- package/dist/simulation/damage-effects.js +43 -83
- package/dist/simulation/damage-effects.js.map +1 -1
- package/dist/simulation/damage-to-hero.js +11 -0
- package/dist/simulation/damage-to-hero.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +7 -76
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/deathrattle-orchestration.js +2 -3
- package/dist/simulation/deathrattle-orchestration.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.js +4 -65
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/frenzy.js +0 -6
- package/dist/simulation/frenzy.js.map +1 -1
- package/dist/simulation/minion-kill.d.ts +1 -1
- package/dist/simulation/minion-kill.js +2 -1
- package/dist/simulation/minion-kill.js.map +1 -1
- package/dist/simulation/on-attack.d.ts +1 -0
- package/dist/simulation/on-attack.js +113 -92
- package/dist/simulation/on-attack.js.map +1 -1
- package/dist/simulation/on-being-attacked.js +1 -25
- package/dist/simulation/on-being-attacked.js.map +1 -1
- package/dist/simulation/reborn.js +1 -1
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/remove-minion-from-board.js +0 -9
- package/dist/simulation/remove-minion-from-board.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +0 -12
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/utils.js +2 -11
- package/dist/utils.js.map +1 -1
- package/package.json +3 -3
- package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js.map +0 -1
- /package/dist/cards/impl/{enchantments → minion}/crystal-infuser-enchantment.d.ts +0 -0
- /package/dist/cards/impl/{enchantments → minion}/crystal-infuser-enchantment.js +0 -0
|
@@ -2,122 +2,82 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.onEntityDamaged = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
|
+
const card_interface_1 = require("../cards/card.interface");
|
|
6
|
+
const _card_mappings_1 = require("../cards/impl/_card-mappings");
|
|
5
7
|
const divine_shield_1 = require("../keywords/divine-shield");
|
|
6
8
|
const utils_1 = require("../services/utils");
|
|
7
9
|
const utils_2 = require("../utils");
|
|
8
|
-
const attack_1 = require("./attack");
|
|
9
|
-
const cards_in_hand_1 = require("./cards-in-hand");
|
|
10
10
|
const deathrattle_spawns_1 = require("./deathrattle-spawns");
|
|
11
11
|
const frenzy_1 = require("./frenzy");
|
|
12
12
|
const spawns_1 = require("./spawns");
|
|
13
13
|
const stats_1 = require("./stats");
|
|
14
|
-
const onEntityDamaged = (
|
|
14
|
+
const onEntityDamaged = (damagedEntity, board, hero, otherBoard, otherHero, damageSource, damage, gameState) => {
|
|
15
15
|
var _a, _b, _c, _d;
|
|
16
16
|
const spawnedEntities = [];
|
|
17
|
-
const friendlyBoard = ((_a = board === null || board === void 0 ? void 0 : board[0]) === null || _a === void 0 ? void 0 : _a.friendly) ===
|
|
17
|
+
const friendlyBoard = ((_a = board === null || board === void 0 ? void 0 : board[0]) === null || _a === void 0 ? void 0 : _a.friendly) === damagedEntity.friendly
|
|
18
18
|
? board
|
|
19
|
-
: ((_b = otherBoard === null || otherBoard === void 0 ? void 0 : otherBoard[0]) === null || _b === void 0 ? void 0 : _b.friendly) ===
|
|
19
|
+
: ((_b = otherBoard === null || otherBoard === void 0 ? void 0 : otherBoard[0]) === null || _b === void 0 ? void 0 : _b.friendly) === damagedEntity.friendly
|
|
20
20
|
? otherBoard
|
|
21
21
|
: [];
|
|
22
|
-
const enemyBoard = ((_c = board === null || board === void 0 ? void 0 : board[0]) === null || _c === void 0 ? void 0 : _c.friendly) ===
|
|
22
|
+
const enemyBoard = ((_c = board === null || board === void 0 ? void 0 : board[0]) === null || _c === void 0 ? void 0 : _c.friendly) === damagedEntity.friendly
|
|
23
|
+
? otherBoard
|
|
24
|
+
: ((_d = board === null || board === void 0 ? void 0 : board[0]) === null || _d === void 0 ? void 0 : _d.friendly) === damagedEntity.friendly
|
|
25
|
+
? board
|
|
26
|
+
: [];
|
|
23
27
|
const friendlyHero = friendlyBoard === board ? hero : otherHero;
|
|
24
28
|
const enemyHero = friendlyBoard === board ? otherHero : hero;
|
|
25
|
-
if (
|
|
26
|
-
(0, frenzy_1.applyFrenzy)(
|
|
27
|
-
|
|
29
|
+
if (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {
|
|
30
|
+
(0, frenzy_1.applyFrenzy)(damagedEntity, friendlyBoard, friendlyHero, gameState);
|
|
31
|
+
damagedEntity.frenzyChargesLeft--;
|
|
28
32
|
}
|
|
29
|
-
switch (
|
|
33
|
+
switch (damagedEntity.cardId) {
|
|
30
34
|
case "BG29_844":
|
|
31
35
|
case "BG29_844_G":
|
|
32
|
-
if (
|
|
33
|
-
const wingedChimeraModifier =
|
|
34
|
-
(0, utils_2.grantStatsToMinionsOfEachType)(
|
|
35
|
-
|
|
36
|
+
if (damagedEntity.abiityChargesLeft > 0) {
|
|
37
|
+
const wingedChimeraModifier = damagedEntity.cardId === "BG29_844_G" ? 2 : 1;
|
|
38
|
+
(0, utils_2.grantStatsToMinionsOfEachType)(damagedEntity, board, hero, wingedChimeraModifier * 1, wingedChimeraModifier * 1, gameState);
|
|
39
|
+
damagedEntity.abiityChargesLeft--;
|
|
36
40
|
}
|
|
37
41
|
break;
|
|
38
|
-
case "BG29_846":
|
|
39
|
-
case "BG29_846_G":
|
|
40
|
-
const treantModifier = entity.cardId === "BG29_846_G" ? 2 : 1;
|
|
41
|
-
(0, utils_2.addStatsToBoard)(entity, board, hero, treantModifier * 2, 0, gameState);
|
|
42
|
-
break;
|
|
43
42
|
case "BG29_878":
|
|
44
43
|
case "BG29_878_G":
|
|
45
|
-
(0, divine_shield_1.updateDivineShield)(
|
|
46
|
-
gameState.spectator.registerPowerTarget(
|
|
44
|
+
(0, divine_shield_1.updateDivineShield)(damagedEntity, board, hero, otherHero, true, gameState);
|
|
45
|
+
gameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, board, hero, otherHero);
|
|
47
46
|
break;
|
|
48
47
|
case "BG29_800":
|
|
49
48
|
case "BG29_800_G":
|
|
50
|
-
const trustyPupStats =
|
|
51
|
-
(0, stats_1.modifyStats)(
|
|
49
|
+
const trustyPupStats = damagedEntity.cardId === "BG29_800_G" ? 2 : 1;
|
|
50
|
+
(0, stats_1.modifyStats)(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);
|
|
52
51
|
break;
|
|
53
52
|
case "BG29_801":
|
|
54
53
|
case "BG29_801_G":
|
|
55
|
-
spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(
|
|
54
|
+
spawnedEntities.push(...(0, deathrattle_spawns_1.spawnEntities)(damagedEntity.cardId === "BG29_801_G"
|
|
56
55
|
? "BG29_801_Gt"
|
|
57
|
-
: "BG29_801t", 1, board, hero, otherBoard, otherHero, gameState,
|
|
58
|
-
break;
|
|
59
|
-
case "BG29_821":
|
|
60
|
-
case "BG29_821_G":
|
|
61
|
-
const aranasiLoops = entity.cardId === "BG29_821_G" ? 2 : 1;
|
|
62
|
-
for (let i = 0; i < aranasiLoops; i++) {
|
|
63
|
-
(0, attack_1.dealDamageToRandomEnemy)(enemyBoard, enemyHero, entity, 5, friendlyBoard, friendlyHero, gameState);
|
|
64
|
-
}
|
|
65
|
-
break;
|
|
66
|
-
case "BG29_610":
|
|
67
|
-
case "BG29_610_G":
|
|
68
|
-
if (entity.abiityChargesLeft > 0) {
|
|
69
|
-
const numbersOfCardsToAdd = entity.cardId === "BG29_610_G" ? 2 : 1;
|
|
70
|
-
const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
|
|
71
|
-
(0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
|
|
72
|
-
entity.abiityChargesLeft--;
|
|
73
|
-
}
|
|
74
|
-
break;
|
|
75
|
-
case "BG29_300":
|
|
76
|
-
case "BG29_300_G":
|
|
77
|
-
const winterfinnerStats = entity.cardId === "BG29_300_G" ? 2 : 1;
|
|
78
|
-
const minionInHand = (0, utils_1.pickRandom)(hero.hand.filter((e) => { var _a; return ((_a = gameState.allCards.getCard(e.cardId).type) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === reference_data_1.CardType[reference_data_1.CardType.MINION]; }));
|
|
79
|
-
if (!!minionInHand) {
|
|
80
|
-
minionInHand.attack += 2 * winterfinnerStats;
|
|
81
|
-
minionInHand.health += winterfinnerStats;
|
|
82
|
-
minionInHand.maxHealth += winterfinnerStats;
|
|
83
|
-
gameState.spectator.registerPowerTarget(entity, minionInHand, board, hero, otherHero);
|
|
84
|
-
}
|
|
85
|
-
break;
|
|
86
|
-
case "BG26_590":
|
|
87
|
-
case "BG26_590_G":
|
|
88
|
-
if (entity.abiityChargesLeft > 0) {
|
|
89
|
-
const numbersOfCardsToAdd = entity.cardId === "BG26_590_G" ? 2 : 1;
|
|
90
|
-
const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
|
|
91
|
-
(0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
|
|
92
|
-
entity.abiityChargesLeft--;
|
|
93
|
-
}
|
|
94
|
-
break;
|
|
95
|
-
case "BG29_831":
|
|
96
|
-
case "BG29_831_G":
|
|
97
|
-
if (entity.abiityChargesLeft > 0) {
|
|
98
|
-
const numbersOfCardsToAdd = entity.cardId === "BG29_831_G" ? 2 : 1;
|
|
99
|
-
const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => null);
|
|
100
|
-
(0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
|
|
101
|
-
entity.abiityChargesLeft--;
|
|
102
|
-
}
|
|
103
|
-
break;
|
|
104
|
-
case "BG29_160":
|
|
105
|
-
case "BG29_160_G":
|
|
106
|
-
if (entity.abiityChargesLeft > 0) {
|
|
107
|
-
const numbersOfCardsToAdd = entity.cardId === "BG29_160_G" ? 2 : 1;
|
|
108
|
-
const cardsToAdd = Array.from({ length: numbersOfCardsToAdd }).map(() => "BG20_GEM");
|
|
109
|
-
(0, cards_in_hand_1.addCardsInHand)(hero, board, cardsToAdd, gameState);
|
|
110
|
-
entity.abiityChargesLeft--;
|
|
111
|
-
}
|
|
56
|
+
: "BG29_801t", 1, board, hero, otherBoard, otherHero, gameState, damagedEntity.friendly, false));
|
|
112
57
|
break;
|
|
113
58
|
}
|
|
114
|
-
handleOtherEntityEffects(
|
|
115
|
-
const finalSpawns = (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero,
|
|
116
|
-
const entityRightToSpawns = board[board.indexOf(
|
|
59
|
+
handleOtherEntityEffects(damagedEntity, board, hero, otherBoard, otherHero, spawnedEntities, gameState);
|
|
60
|
+
const finalSpawns = (0, spawns_1.performEntitySpawns)(spawnedEntities, board, hero, damagedEntity, board.length - (board.indexOf(damagedEntity) + 1), otherBoard, otherHero, gameState);
|
|
61
|
+
const entityRightToSpawns = board[board.indexOf(damagedEntity) + 1];
|
|
117
62
|
finalSpawns.forEach((e) => {
|
|
118
63
|
var _a;
|
|
119
|
-
e.hasAttacked =
|
|
64
|
+
e.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : (_a = entityRightToSpawns === null || entityRightToSpawns === void 0 ? void 0 : entityRightToSpawns.hasAttacked) !== null && _a !== void 0 ? _a : 0;
|
|
120
65
|
});
|
|
66
|
+
if (damage > 0) {
|
|
67
|
+
for (const entity of board) {
|
|
68
|
+
const afterDealDamageImpl = _card_mappings_1.cardMappings[entity.cardId];
|
|
69
|
+
if ((0, card_interface_1.hasAfterDealDamage)(afterDealDamageImpl)) {
|
|
70
|
+
afterDealDamageImpl.afterDealDamage(entity, {
|
|
71
|
+
damagedEntity: damagedEntity,
|
|
72
|
+
damageDealer: damageSource,
|
|
73
|
+
damage: damage,
|
|
74
|
+
board: board,
|
|
75
|
+
hero: hero,
|
|
76
|
+
gameState,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
121
81
|
return finalSpawns;
|
|
122
82
|
};
|
|
123
83
|
exports.onEntityDamaged = onEntityDamaged;
|
|
@@ -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 { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } 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 { applyFrenzy } from './frenzy';\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\r\n\tif (entity.frenzyChargesLeft > 0 && entity.health > 0 && !entity.definitelyDead) {\r\n\t\tapplyFrenzy(entity, friendlyBoard, friendlyHero, gameState);\r\n\t\tentity.frenzyChargesLeft--;\r\n\t}\r\n\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 ? 2 : 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, entity, trustyPupStats, 0, board, hero, gameState);\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,\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.anomalies, 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, e, 2 * stats, stats, board, hero, gameState);\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, e, 0, 2 * stats, board, hero, gameState);\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 = pickRandomAlive(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, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"damage-effects.js","sourceRoot":"","sources":["../../src/simulation/damage-effects.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { pickRandom, pickRandomAlive } from '../services/utils';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { spawnEntities } from './deathrattle-spawns';\r\nimport { applyFrenzy } from './frenzy';\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\tdamagedEntity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tdamageSource: BoardEntity,\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 === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: otherBoard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: [];\r\n\tconst enemyBoard =\r\n\t\tboard?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? otherBoard\r\n\t\t\t: board?.[0]?.friendly === damagedEntity.friendly\r\n\t\t\t? board\r\n\t\t\t: [];\r\n\tconst friendlyHero = friendlyBoard === board ? hero : otherHero;\r\n\tconst enemyHero = friendlyBoard === board ? otherHero : hero;\r\n\r\n\tif (damagedEntity.frenzyChargesLeft > 0 && damagedEntity.health > 0 && !damagedEntity.definitelyDead) {\r\n\t\tapplyFrenzy(damagedEntity, friendlyBoard, friendlyHero, gameState);\r\n\t\tdamagedEntity.frenzyChargesLeft--;\r\n\t}\r\n\r\n\tswitch (damagedEntity.cardId) {\r\n\t\tcase CardIds.WingedChimera_BG29_844:\r\n\t\tcase CardIds.WingedChimera_BG29_844_G:\r\n\t\t\tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t\t\tconst wingedChimeraModifier = damagedEntity.cardId === CardIds.WingedChimera_BG29_844_G ? 2 : 1;\r\n\t\t\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\t\t\tdamagedEntity,\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\tdamagedEntity.abiityChargesLeft--;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846:\r\n\t\t// case CardIds.UnforgivingTreant_BG29_846_G:\r\n\t\t// \tconst treantModifier = damagedEntity.cardId === CardIds.UnforgivingTreant_BG29_846_G ? 2 : 1;\r\n\t\t// \taddStatsToBoard(damagedEntity, 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(damagedEntity, board, hero, otherHero, true, gameState);\r\n\t\t\tgameState.spectator.registerPowerTarget(damagedEntity, damagedEntity, 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 = damagedEntity.cardId === CardIds.TrustyPup_BG29_800_G ? 2 : 1;\r\n\t\t\tmodifyStats(damagedEntity, damagedEntity, trustyPupStats, 0, board, hero, gameState);\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\tdamagedEntity.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,\r\n\t\t\t\t\tdamagedEntity.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\t// case CardIds.CraftyAranasi_BG29_821:\r\n\t\t// case CardIds.CraftyAranasi_BG29_821_G:\r\n\t\t// \tconst aranasiLoops = damagedEntity.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(\r\n\t\t// \t\t\tenemyBoard,\r\n\t\t// \t\t\tenemyHero,\r\n\t\t// \t\t\tdamagedEntity,\r\n\t\t// \t\t\t5,\r\n\t\t// \t\t\tfriendlyBoard,\r\n\t\t// \t\t\tfriendlyHero,\r\n\t\t// \t\t\tgameState,\r\n\t\t// \t\t);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.MarineMatriarch_BG29_610:\r\n\t\t// case CardIds.MarineMatriarch_BG29_610_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.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\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300:\r\n\t\t// case CardIds.VeryHungryWinterfinner_BG29_300_G:\r\n\t\t// \tconst winterfinnerStats = damagedEntity.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(damagedEntity, minionInHand, board, hero, otherHero);\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590:\r\n\t\t// case CardIds.SoftHeartedSiren_BG26_590_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.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\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.LongJohnCopper_BG29_831:\r\n\t\t// case CardIds.LongJohnCopper_BG29_831_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.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\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160:\r\n\t\t// case CardIds.BristlingBuffoon_BG29_160_G:\r\n\t\t// \tif (damagedEntity.abiityChargesLeft > 0) {\r\n\t\t// \t\tconst numbersOfCardsToAdd = damagedEntity.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\tdamagedEntity.abiityChargesLeft--;\r\n\t\t// \t}\r\n\t\t// \tbreak;\r\n\t}\r\n\r\n\thandleOtherEntityEffects(damagedEntity, 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\tdamagedEntity,\r\n\t\tboard.length - (board.indexOf(damagedEntity) + 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(damagedEntity) + 1];\r\n\tfinalSpawns.forEach((e) => {\r\n\t\te.hasAttacked = damagedEntity.hasAttacked > 1 ? 1 : entityRightToSpawns?.hasAttacked ?? 0;\r\n\t});\r\n\r\n\tif (damage > 0) {\r\n\t\tfor (const entity of board) {\r\n\t\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\t\tdamagedEntity: damagedEntity,\r\n\t\t\t\t\tdamageDealer: damageSource,\r\n\t\t\t\t\tdamage: damage,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\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.anomalies, 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, e, 2 * stats, stats, board, hero, gameState);\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, e, 0, 2 * stats, board, hero, gameState);\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 = pickRandomAlive(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, carving, buff, 0, board, hero, gameState);\r\n\t\t\t}\r\n\t\t});\r\n};\r\n\r\nexport interface AfterDealDamageInput {\r\n\tdamagedEntity: BoardEntity | BgsPlayerEntity;\r\n\tdamageDealer: BoardEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -14,6 +14,17 @@ const dealDamageToHero = (source, hero, board, damage, gameState) => {
|
|
|
14
14
|
gameState,
|
|
15
15
|
});
|
|
16
16
|
}
|
|
17
|
+
const afterDealDamageImpl = _card_mappings_1.cardMappings[entity.cardId];
|
|
18
|
+
if ((0, card_interface_1.hasAfterDealDamage)(afterDealDamageImpl)) {
|
|
19
|
+
afterDealDamageImpl.afterDealDamage(entity, {
|
|
20
|
+
damagedEntity: hero,
|
|
21
|
+
damageDealer: source,
|
|
22
|
+
damage: damage,
|
|
23
|
+
board: board,
|
|
24
|
+
hero: hero,
|
|
25
|
+
gameState,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
17
28
|
}
|
|
18
29
|
};
|
|
19
30
|
exports.dealDamageToHero = dealDamageToHero;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"damage-to-hero.js","sourceRoot":"","sources":["../../src/simulation/damage-to-hero.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"damage-to-hero.js","sourceRoot":"","sources":["../../src/simulation/damage-to-hero.ts"],"names":[],"mappings":";;;AAEA,4DAAkF;AAClF,iEAA4D;AAGrD,MAAM,gBAAgB,GAAG,CAC/B,MAAmB,EACnB,IAAqB,EACrB,KAAoB,EACpB,MAAc,EACd,SAAwB,EACvB,EAAE;IACH,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAC3B,MAAM,oBAAoB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,IAAA,oCAAmB,EAAC,oBAAoB,CAAC,EAAE;YAC9C,oBAAoB,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBAC7C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS;aACT,CAAC,CAAC;SACH;QAED,MAAM,mBAAmB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,IAAA,mCAAkB,EAAC,mBAAmB,CAAC,EAAE;YAC5C,mBAAmB,CAAC,eAAe,CAAC,MAAM,EAAE;gBAC3C,aAAa,EAAE,IAAI;gBACnB,YAAY,EAAE,MAAM;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS;aACT,CAAC,CAAC;SACH;KACD;AACF,CAAC,CAAC;AA9BW,QAAA,gBAAgB,oBA8B3B","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterDealDamage, hasAfterHeroDamaged } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\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\tfor (const entity of board) {\r\n\t\tconst afterHeroDamagedImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterHeroDamaged(afterHeroDamagedImpl)) {\r\n\t\t\tafterHeroDamagedImpl.afterHeroDamaged(entity, {\r\n\t\t\t\tdamage: damage,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst afterDealDamageImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterDealDamage(afterDealDamageImpl)) {\r\n\t\t\tafterDealDamageImpl.afterDealDamage(entity, {\r\n\t\t\t\tdamagedEntity: hero,\r\n\t\t\t\tdamageDealer: source,\r\n\t\t\t\tdamage: damage,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: hero,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface AfterHeroDamagedInput {\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -100,24 +100,6 @@ const applyLeapFroggerEffect = (boardWithDeadEntity, boardWithDeadEntityHero, de
|
|
|
100
100
|
};
|
|
101
101
|
exports.applyLeapFroggerEffect = applyLeapFroggerEffect;
|
|
102
102
|
const applyRecurringNightmareDeathrattleEffect = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity, isPremium, gameState, multiplier = 1) => {
|
|
103
|
-
var _a;
|
|
104
|
-
multiplier = multiplier || 1;
|
|
105
|
-
const target = (0, utils_1.pickRandom)(boardWithDeadEntity
|
|
106
|
-
.filter((e) => (0, utils_2.hasCorrectTribe)(e, boardWithDeadEntityHero, reference_data_1.Race.UNDEAD, gameState.anomalies, gameState.allCards))
|
|
107
|
-
.filter((e) => e.cardId !== "BG26_055" &&
|
|
108
|
-
e.cardId !== "BG26_055_G"));
|
|
109
|
-
if (target) {
|
|
110
|
-
target.enchantments = (_a = target.enchantments) !== null && _a !== void 0 ? _a : [];
|
|
111
|
-
target.enchantments.push({
|
|
112
|
-
cardId: isPremium
|
|
113
|
-
? "BG26_055_Ge"
|
|
114
|
-
: "BG26_055e",
|
|
115
|
-
originEntityId: deadEntity.entityId,
|
|
116
|
-
repeats: multiplier > 1 ? multiplier : 1,
|
|
117
|
-
timing: gameState.sharedState.currentEntityId++,
|
|
118
|
-
});
|
|
119
|
-
gameState.spectator.registerPowerTarget(deadEntity, target, boardWithDeadEntity, null, null);
|
|
120
|
-
}
|
|
121
103
|
};
|
|
122
104
|
exports.applyRecurringNightmareDeathrattleEffect = applyRecurringNightmareDeathrattleEffect;
|
|
123
105
|
const handleWheneverMinionsKillEffect = (board, hero, otherBoard, otherHero, gameState) => {
|
|
@@ -186,44 +168,10 @@ const applyWheneverMinionDiesEffect = (deadEntity, deadEntityIndexFromRight, boa
|
|
|
186
168
|
if (deadEntity.health < 0 &&
|
|
187
169
|
gameState.sharedState.currentAttackerEntityId != null &&
|
|
188
170
|
gameState.sharedState.currentAttackerEntityId === ((_a = deadEntity.lastAffectedByEntity) === null || _a === void 0 ? void 0 : _a.entityId)) {
|
|
189
|
-
if (deadEntity.lastAffectedByEntity.cardId === "
|
|
190
|
-
const targets = boardWithDeadEntity.filter((entity) => entity.health > 0 && !entity.definitelyDead);
|
|
191
|
-
if (targets.length > 0) {
|
|
192
|
-
const target = targets[0];
|
|
193
|
-
(0, attack_1.dealDamageToMinion)(target, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity.lastAffectedByEntity, 3, otherBoard, otherBoardHero, gameState);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_103") {
|
|
197
|
-
const targets = boardWithDeadEntity.filter((entity) => entity.health > 0 && !entity.definitelyDead);
|
|
198
|
-
if (targets.length > 0) {
|
|
199
|
-
const target = targets[0];
|
|
200
|
-
(0, attack_1.dealDamageToMinion)(target, boardWithDeadEntity, boardWithDeadEntityHero, deadEntity.lastAffectedByEntity, 6, otherBoard, otherBoardHero, gameState);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
else if (deadEntity.lastAffectedByEntity.cardId === "TRL_232") {
|
|
171
|
+
if (deadEntity.lastAffectedByEntity.cardId === "TRL_232") {
|
|
204
172
|
const newEntities = (0, deathrattle_spawns_1.spawnEntities)("TRL_232t", 1, otherBoard, otherBoardHero, boardWithDeadEntity, boardWithDeadEntityHero, gameState, !deadEntity.friendly, false);
|
|
205
173
|
otherBoard.splice(otherBoard.length - deadEntityIndexFromRight, 0, ...newEntities);
|
|
206
174
|
}
|
|
207
|
-
else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_051") {
|
|
208
|
-
const newEntities = (0, deathrattle_spawns_1.spawnEntities)("TB_BaconUps_051t", 1, otherBoard, otherBoardHero, boardWithDeadEntity, boardWithDeadEntityHero, gameState, !deadEntity.friendly, false);
|
|
209
|
-
otherBoard.splice(otherBoard.length - deadEntityIndexFromRight, 0, ...newEntities);
|
|
210
|
-
}
|
|
211
|
-
else if (deadEntity.lastAffectedByEntity.cardId === "BGS_080") {
|
|
212
|
-
const otherPirates = otherBoard
|
|
213
|
-
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.anomalies, gameState.allCards))
|
|
214
|
-
.filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
|
|
215
|
-
otherPirates.forEach((pirate) => {
|
|
216
|
-
(0, stats_1.modifyStats)(pirate, deadEntity.lastAffectedByEntity, 2, 2, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
else if (deadEntity.lastAffectedByEntity.cardId === "TB_BaconUps_142") {
|
|
220
|
-
const otherPirates = otherBoard
|
|
221
|
-
.filter((entity) => (0, utils_2.hasCorrectTribe)(entity, boardWithDeadEntityHero, reference_data_1.Race.PIRATE, gameState.anomalies, gameState.allCards))
|
|
222
|
-
.filter((entity) => entity.entityId !== deadEntity.lastAffectedByEntity.entityId);
|
|
223
|
-
otherPirates.forEach((pirate) => {
|
|
224
|
-
(0, stats_1.modifyStats)(pirate, deadEntity.lastAffectedByEntity, 4, 4, boardWithDeadEntity, boardWithDeadEntityHero, gameState);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
175
|
}
|
|
228
176
|
};
|
|
229
177
|
exports.applyWheneverMinionDiesEffect = applyWheneverMinionDiesEffect;
|
|
@@ -245,12 +193,15 @@ const applySoulJugglerEffect = (boardWithJugglers, boardWithJugglersHero, boardT
|
|
|
245
193
|
}
|
|
246
194
|
const jugglers = boardWithJugglers.filter((entity) => entity.cardId === "BGS_002");
|
|
247
195
|
for (const juggler of jugglers) {
|
|
248
|
-
(0,
|
|
196
|
+
const target = (0, utils_2.getRandomMinionWithHighestHealth)(boardToAttack);
|
|
197
|
+
(0, attack_1.dealDamageToMinion)(target, boardToAttack, boardToAttackHero, juggler, 4, boardWithJugglers, boardWithJugglersHero, gameState);
|
|
249
198
|
}
|
|
250
199
|
const goldenJugglers = boardWithJugglers.filter((entity) => entity.cardId === "TB_BaconUps_075");
|
|
251
200
|
for (const juggler of goldenJugglers) {
|
|
252
|
-
|
|
253
|
-
|
|
201
|
+
for (let i = 0; i < 2; i++) {
|
|
202
|
+
const target = (0, utils_2.getRandomMinionWithHighestHealth)(boardToAttack);
|
|
203
|
+
(0, attack_1.dealDamageToMinion)(target, boardToAttack, boardToAttackHero, juggler, 4, boardWithJugglers, boardWithJugglersHero, gameState);
|
|
204
|
+
}
|
|
254
205
|
}
|
|
255
206
|
};
|
|
256
207
|
const applyScavengingHyenaEffect = (board, boardWithDeadEntityHero, gameState) => {
|
|
@@ -309,21 +260,9 @@ const applyJunkbotEffect = (board, hero, gameState) => {
|
|
|
309
260
|
if (board[i].cardId === "GVG_106") {
|
|
310
261
|
(0, stats_1.modifyStats)(board[i], board[i], 2, 2, board, hero, gameState);
|
|
311
262
|
}
|
|
312
|
-
else if (board[i].cardId === "TB_BaconUps_046") {
|
|
313
|
-
(0, stats_1.modifyStats)(board[i], board[i], 4, 4, board, hero, gameState);
|
|
314
|
-
}
|
|
315
263
|
}
|
|
316
264
|
};
|
|
317
265
|
const applyQirajiHarbringerEffect = (board, hero, deadEntityIndexFromRight, gameState) => {
|
|
318
|
-
const qiraji = board.filter((entity) => entity.cardId === "BGS_112");
|
|
319
|
-
const goldenQiraji = board.filter((entity) => entity.cardId === "TB_BaconUps_303");
|
|
320
|
-
if (qiraji.length + goldenQiraji.length > 0) {
|
|
321
|
-
const neighbours = (0, attack_1.getNeighbours)(board, null, deadEntityIndexFromRight);
|
|
322
|
-
const buff = 2 * qiraji.length + 4 * goldenQiraji.length;
|
|
323
|
-
neighbours.forEach((entity) => {
|
|
324
|
-
(0, stats_1.modifyStats)(entity, null, buff, buff, board, hero, gameState);
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
266
|
};
|
|
328
267
|
const applyMonstrosity = (monstrosity, deadEntities, boardWithDeadEntities, boardWithDeadEntityHero, gameState) => {
|
|
329
268
|
for (const deadEntity of deadEntities) {
|
|
@@ -393,13 +332,5 @@ const rememberDeathrattles = (fish, inputDeadEntities, cardsData, allCards, shar
|
|
|
393
332
|
};
|
|
394
333
|
exports.rememberDeathrattles = rememberDeathrattles;
|
|
395
334
|
const removeOldMurkEyeAttack = (boardWithDeadEntity, hero, gameState) => {
|
|
396
|
-
const murkeyes = boardWithDeadEntity.filter((entity) => entity.cardId === "EX1_062" || entity.cardId === "VAN_EX1_062");
|
|
397
|
-
const goldenMurkeyes = boardWithDeadEntity.filter((entity) => entity.cardId === "TB_BaconUps_036");
|
|
398
|
-
murkeyes.forEach((entity) => {
|
|
399
|
-
(0, stats_1.modifyStats)(entity, null, -1, 0, boardWithDeadEntity, hero, gameState);
|
|
400
|
-
});
|
|
401
|
-
goldenMurkeyes.forEach((entity) => {
|
|
402
|
-
(0, stats_1.modifyStats)(entity, null, -2, 0, boardWithDeadEntity, hero, gameState);
|
|
403
|
-
});
|
|
404
335
|
};
|
|
405
336
|
//# sourceMappingURL=deathrattle-effects.js.map
|