@firestone-hs/simulate-bgs-battle 1.1.696 → 1.1.697
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/src/bgs-player-entity.d.ts +4 -10
- package/dist/src/bgs-player-entity.js.map +1 -1
- package/dist/src/cards/card.interface.d.ts +21 -6
- package/dist/src/cards/card.interface.js +8 -1
- package/dist/src/cards/card.interface.js.map +1 -1
- package/dist/src/cards/cards-data.js +1 -12
- package/dist/src/cards/cards-data.js.map +1 -1
- package/dist/src/cards/impl/_card-mappings.js +152 -63
- package/dist/src/cards/impl/_card-mappings.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/arcane-absorption-bg352.d.ts +2 -2
- package/dist/src/cards/impl/bg-spell/arcane-absorption-bg352.js +1 -8
- package/dist/src/cards/impl/bg-spell/arcane-absorption-bg352.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/back-to-back.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/back-to-back.js +20 -0
- package/dist/src/cards/impl/bg-spell/back-to-back.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-divine-shield.js +2 -3
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-divine-shield.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-reborn.js +2 -3
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-reborn.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-taunt.js +2 -3
- package/dist/src/cards/impl/bg-spell/blood-gem-quilboar-taunt.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/butchering.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/butchering.js +23 -0
- package/dist/src/cards/impl/bg-spell/butchering.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/conflagration-bg352.js +7 -10
- package/dist/src/cards/impl/bg-spell/conflagration-bg352.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/deepwater-clan.js +13 -9
- package/dist/src/cards/impl/bg-spell/deepwater-clan.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/friendly-bounty.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/friendly-bounty.js +44 -0
- package/dist/src/cards/impl/bg-spell/friendly-bounty.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/healthy-bounty.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/healthy-bounty.js +15 -0
- package/dist/src/cards/impl/bg-spell/healthy-bounty.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/hostile-bounty.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/hostile-bounty.js +15 -0
- package/dist/src/cards/impl/bg-spell/hostile-bounty.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-306.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-306.js +27 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-306.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-733.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-733.js +32 -0
- package/dist/src/cards/impl/bg-spell/jailer-sticker-733.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/might-of-stormwind.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/might-of-stormwind.js +15 -0
- package/dist/src/cards/impl/bg-spell/might-of-stormwind.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/natural-blessing.js +10 -0
- package/dist/src/cards/impl/bg-spell/natural-blessing.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/ophidian-staff.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/ophidian-staff.js +20 -0
- package/dist/src/cards/impl/bg-spell/ophidian-staff.js.map +1 -0
- package/dist/src/cards/impl/bg-spell/queens-command.js +4 -4
- package/dist/src/cards/impl/bg-spell/queens-command.js.map +1 -1
- package/dist/src/cards/impl/bg-spell/selfish-bounty.d.ts +2 -0
- package/dist/src/cards/impl/bg-spell/selfish-bounty.js +14 -0
- package/dist/src/cards/impl/bg-spell/selfish-bounty.js.map +1 -0
- package/dist/src/cards/impl/minion/abyssal-bruiser.js +3 -4
- package/dist/src/cards/impl/minion/abyssal-bruiser.js.map +1 -1
- package/dist/src/cards/impl/minion/alert-alarmist.js +1 -2
- package/dist/src/cards/impl/minion/alert-alarmist.js.map +1 -1
- package/dist/src/cards/impl/minion/anubarak-nerubian-king.js +2 -4
- package/dist/src/cards/impl/minion/anubarak-nerubian-king.js.map +1 -1
- package/dist/src/cards/impl/minion/balinda-stonehearth.js +1 -2
- package/dist/src/cards/impl/minion/balinda-stonehearth.js.map +1 -1
- package/dist/src/cards/impl/minion/bg352-chromadrake-pool.js +5 -6
- package/dist/src/cards/impl/minion/bg352-chromadrake-pool.js.map +1 -1
- package/dist/src/cards/impl/minion/black-chromadrake.js +2 -3
- package/dist/src/cards/impl/minion/black-chromadrake.js.map +1 -1
- package/dist/src/cards/impl/minion/blue-chromadrake.js +2 -3
- package/dist/src/cards/impl/minion/blue-chromadrake.js.map +1 -1
- package/dist/src/cards/impl/minion/brazen-buccaneer.js +2 -3
- package/dist/src/cards/impl/minion/brazen-buccaneer.js.map +1 -1
- package/dist/src/cards/impl/minion/bristleback-bully.js +5 -6
- package/dist/src/cards/impl/minion/bristleback-bully.js.map +1 -1
- package/dist/src/cards/impl/minion/bronze-chromadrake.js +2 -3
- package/dist/src/cards/impl/minion/bronze-chromadrake.js.map +1 -1
- package/dist/src/cards/impl/minion/cataclysmic-harbinger.js +2 -3
- package/dist/src/cards/impl/minion/cataclysmic-harbinger.js.map +1 -1
- package/dist/src/cards/impl/minion/champion-of-the-primus.js +2 -4
- package/dist/src/cards/impl/minion/champion-of-the-primus.js.map +1 -1
- package/dist/src/cards/impl/minion/charging-czarina.js +4 -1
- package/dist/src/cards/impl/minion/charging-czarina.js.map +1 -1
- package/dist/src/cards/impl/minion/consummate-conqueror.js +1 -2
- package/dist/src/cards/impl/minion/consummate-conqueror.js.map +1 -1
- package/dist/src/cards/impl/minion/cousin-errgl.js +4 -5
- package/dist/src/cards/impl/minion/cousin-errgl.js.map +1 -1
- package/dist/src/cards/impl/minion/cruise-controller.js +3 -2
- package/dist/src/cards/impl/minion/cruise-controller.js.map +1 -1
- package/dist/src/cards/impl/minion/deepwater-chieftain.js +9 -10
- package/dist/src/cards/impl/minion/deepwater-chieftain.js.map +1 -1
- package/dist/src/cards/impl/minion/demon-fodder.js +1 -2
- package/dist/src/cards/impl/minion/demon-fodder.js.map +1 -1
- package/dist/src/cards/impl/minion/determined-defender.js +2 -3
- package/dist/src/cards/impl/minion/determined-defender.js.map +1 -1
- package/dist/src/cards/impl/minion/diremuck-forager.d.ts +2 -4
- package/dist/src/cards/impl/minion/diremuck-forager.js +3 -3
- package/dist/src/cards/impl/minion/diremuck-forager.js.map +1 -1
- package/dist/src/cards/impl/minion/draconic-warden.js +3 -4
- package/dist/src/cards/impl/minion/draconic-warden.js.map +1 -1
- package/dist/src/cards/impl/minion/dustbone-devastator.js +4 -6
- package/dist/src/cards/impl/minion/dustbone-devastator.js.map +1 -1
- package/dist/src/cards/impl/minion/earthsong-shaman.js +2 -3
- package/dist/src/cards/impl/minion/earthsong-shaman.js.map +1 -1
- package/dist/src/cards/impl/minion/egg-of-the-endtimes.js +1 -2
- package/dist/src/cards/impl/minion/egg-of-the-endtimes.js.map +1 -1
- package/dist/src/cards/impl/minion/enchanted-sentinel.js +2 -3
- package/dist/src/cards/impl/minion/enchanted-sentinel.js.map +1 -1
- package/dist/src/cards/impl/minion/falling-sky-golem.js +3 -4
- package/dist/src/cards/impl/minion/falling-sky-golem.js.map +1 -1
- package/dist/src/cards/impl/minion/firelands-fugitive.js +5 -6
- package/dist/src/cards/impl/minion/firelands-fugitive.js.map +1 -1
- package/dist/src/cards/impl/minion/forsaken-weaver.js +2 -1
- package/dist/src/cards/impl/minion/forsaken-weaver.js.map +1 -1
- package/dist/src/cards/impl/minion/gluttonous-trogg.js +1 -2
- package/dist/src/cards/impl/minion/gluttonous-trogg.js.map +1 -1
- package/dist/src/cards/impl/minion/goldrinn-the-great-wolf.js +2 -5
- package/dist/src/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -1
- package/dist/src/cards/impl/minion/green-chromadrake.js +2 -3
- package/dist/src/cards/impl/minion/green-chromadrake.js.map +1 -1
- package/dist/src/cards/impl/minion/hired-ritualist.js +1 -2
- package/dist/src/cards/impl/minion/hired-ritualist.js.map +1 -1
- package/dist/src/cards/impl/minion/hog-watcher.js +1 -2
- package/dist/src/cards/impl/minion/hog-watcher.js.map +1 -1
- package/dist/src/cards/impl/minion/humming-bird.js +2 -4
- package/dist/src/cards/impl/minion/humming-bird.js.map +1 -1
- package/dist/src/cards/impl/minion/incubation-researcher.js +2 -3
- package/dist/src/cards/impl/minion/incubation-researcher.js.map +1 -1
- package/dist/src/cards/impl/minion/laboratory-assistant.d.ts +2 -2
- package/dist/src/cards/impl/minion/laboratory-assistant.js +1 -5
- package/dist/src/cards/impl/minion/laboratory-assistant.js.map +1 -1
- package/dist/src/cards/impl/minion/leyline-surfacer.js +9 -10
- package/dist/src/cards/impl/minion/leyline-surfacer.js.map +1 -1
- package/dist/src/cards/impl/minion/living-azerite.d.ts +2 -2
- package/dist/src/cards/impl/minion/living-azerite.js +17 -0
- package/dist/src/cards/impl/minion/living-azerite.js.map +1 -1
- package/dist/src/cards/impl/minion/lurking-leviathan.js +2 -3
- package/dist/src/cards/impl/minion/lurking-leviathan.js.map +1 -1
- package/dist/src/cards/impl/minion/maelstrom-emergent.js +1 -2
- package/dist/src/cards/impl/minion/maelstrom-emergent.js.map +1 -1
- package/dist/src/cards/impl/minion/mama-mrrglton.js +2 -3
- package/dist/src/cards/impl/minion/mama-mrrglton.js.map +1 -1
- package/dist/src/cards/impl/minion/nalaa-the-redeemer.js +5 -1
- package/dist/src/cards/impl/minion/nalaa-the-redeemer.js.map +1 -1
- package/dist/src/cards/impl/minion/nerubian-deathswarmer.js +2 -6
- package/dist/src/cards/impl/minion/nerubian-deathswarmer.js.map +1 -1
- package/dist/src/cards/impl/minion/old-soul.js +1 -2
- package/dist/src/cards/impl/minion/old-soul.js.map +1 -1
- package/dist/src/cards/impl/minion/oranomonos-the-wilted.js +2 -4
- package/dist/src/cards/impl/minion/oranomonos-the-wilted.js.map +1 -1
- package/dist/src/cards/impl/minion/papa-mrrglton.js +2 -3
- package/dist/src/cards/impl/minion/papa-mrrglton.js.map +1 -1
- package/dist/src/cards/impl/minion/plaguerunner.js +4 -6
- package/dist/src/cards/impl/minion/plaguerunner.js.map +1 -1
- package/dist/src/cards/impl/minion/pufferquil.js +1 -2
- package/dist/src/cards/impl/minion/pufferquil.js.map +1 -1
- package/dist/src/cards/impl/minion/red-chromadrake.js +2 -3
- package/dist/src/cards/impl/minion/red-chromadrake.js.map +1 -1
- package/dist/src/cards/impl/minion/redtusk-thornraiser.js +5 -6
- package/dist/src/cards/impl/minion/redtusk-thornraiser.js.map +1 -1
- package/dist/src/cards/impl/minion/ring-bearer.js +2 -3
- package/dist/src/cards/impl/minion/ring-bearer.js.map +1 -1
- package/dist/src/cards/impl/minion/roving-sailor.js +2 -3
- package/dist/src/cards/impl/minion/roving-sailor.js.map +1 -1
- package/dist/src/cards/impl/minion/ruthless-queensguard.js +6 -7
- package/dist/src/cards/impl/minion/ruthless-queensguard.js.map +1 -1
- package/dist/src/cards/impl/minion/scarlet-survivor.js +1 -2
- package/dist/src/cards/impl/minion/scarlet-survivor.js.map +1 -1
- package/dist/src/cards/impl/minion/seafloor-recruiter.js +2 -3
- package/dist/src/cards/impl/minion/seafloor-recruiter.js.map +1 -1
- package/dist/src/cards/impl/minion/sewer-lord.js +2 -3
- package/dist/src/cards/impl/minion/sewer-lord.js.map +1 -1
- package/dist/src/cards/impl/minion/ship-jumper.js +2 -3
- package/dist/src/cards/impl/minion/ship-jumper.js.map +1 -1
- package/dist/src/cards/impl/minion/skeletal-strafer.js +3 -4
- package/dist/src/cards/impl/minion/skeletal-strafer.js.map +1 -1
- package/dist/src/cards/impl/minion/tide-raiser.js +2 -3
- package/dist/src/cards/impl/minion/tide-raiser.js.map +1 -1
- package/dist/src/cards/impl/minion/timewarped-caretaker.js +2 -4
- package/dist/src/cards/impl/minion/timewarped-caretaker.js.map +1 -1
- package/dist/src/cards/impl/minion/timewarped-deathswarmer.js +2 -5
- package/dist/src/cards/impl/minion/timewarped-deathswarmer.js.map +1 -1
- package/dist/src/cards/impl/minion/timewarped-goldrinn.js +3 -7
- package/dist/src/cards/impl/minion/timewarped-goldrinn.js.map +1 -1
- package/dist/src/cards/impl/minion/twisted-wrathguard.js +1 -2
- package/dist/src/cards/impl/minion/twisted-wrathguard.js.map +1 -1
- package/dist/src/cards/impl/minion/very-hungry-winterfinner.js +2 -3
- package/dist/src/cards/impl/minion/very-hungry-winterfinner.js.map +1 -1
- package/dist/src/cards/impl/minion/vinespeaker.js +2 -3
- package/dist/src/cards/impl/minion/vinespeaker.js.map +1 -1
- package/dist/src/cards/impl/minion/void-pup-trainer.js +1 -2
- package/dist/src/cards/impl/minion/void-pup-trainer.js.map +1 -1
- package/dist/src/cards/impl/minion/woodland-defiler.js +1 -2
- package/dist/src/cards/impl/minion/woodland-defiler.js.map +1 -1
- package/dist/src/cards/impl/minion/wyvern-outrider.js +1 -2
- package/dist/src/cards/impl/minion/wyvern-outrider.js.map +1 -1
- package/dist/src/cards/impl/trinket/archaic-scroll.d.ts +2 -0
- package/dist/src/cards/impl/trinket/archaic-scroll.js +21 -0
- package/dist/src/cards/impl/trinket/archaic-scroll.js.map +1 -0
- package/dist/src/cards/impl/trinket/artisanal-urn.js +2 -1
- package/dist/src/cards/impl/trinket/artisanal-urn.js.map +1 -1
- package/dist/src/cards/impl/trinket/bewitched-ribbon.d.ts +2 -0
- package/dist/src/cards/impl/trinket/bewitched-ribbon.js +15 -0
- package/dist/src/cards/impl/trinket/bewitched-ribbon.js.map +1 -0
- package/dist/src/cards/impl/trinket/blood-amulet.d.ts +2 -0
- package/dist/src/cards/impl/trinket/blood-amulet.js +15 -0
- package/dist/src/cards/impl/trinket/blood-amulet.js.map +1 -0
- package/dist/src/cards/impl/trinket/bloodbound-earrings.d.ts +2 -0
- package/dist/src/cards/impl/trinket/bloodbound-earrings.js +22 -0
- package/dist/src/cards/impl/trinket/bloodbound-earrings.js.map +1 -0
- package/dist/src/cards/impl/trinket/bluegill-flippers.d.ts +2 -0
- package/dist/src/cards/impl/trinket/bluegill-flippers.js +21 -0
- package/dist/src/cards/impl/trinket/bluegill-flippers.js.map +1 -0
- package/dist/src/cards/impl/trinket/bubble-crown.d.ts +2 -0
- package/dist/src/cards/impl/trinket/bubble-crown.js +18 -0
- package/dist/src/cards/impl/trinket/bubble-crown.js.map +1 -0
- package/dist/src/cards/impl/trinket/cloud-serpent-horn.d.ts +2 -0
- package/dist/src/cards/impl/trinket/cloud-serpent-horn.js +26 -0
- package/dist/src/cards/impl/trinket/cloud-serpent-horn.js.map +1 -0
- package/dist/src/cards/impl/trinket/comfy-coffin.d.ts +2 -0
- package/dist/src/cards/impl/trinket/comfy-coffin.js +12 -0
- package/dist/src/cards/impl/trinket/comfy-coffin.js.map +1 -0
- package/dist/src/cards/impl/trinket/copper-coil.d.ts +2 -0
- package/dist/src/cards/impl/trinket/copper-coil.js +15 -0
- package/dist/src/cards/impl/trinket/copper-coil.js.map +1 -0
- package/dist/src/cards/impl/trinket/coral-spear.d.ts +2 -0
- package/dist/src/cards/impl/trinket/coral-spear.js +22 -0
- package/dist/src/cards/impl/trinket/coral-spear.js.map +1 -0
- package/dist/src/cards/impl/trinket/dramaloc-sticker.d.ts +2 -0
- package/dist/src/cards/impl/trinket/dramaloc-sticker.js +36 -0
- package/dist/src/cards/impl/trinket/dramaloc-sticker.js.map +1 -0
- package/dist/src/cards/impl/trinket/fang-anklet.d.ts +2 -0
- package/dist/src/cards/impl/trinket/fang-anklet.js +30 -0
- package/dist/src/cards/impl/trinket/fang-anklet.js.map +1 -0
- package/dist/src/cards/impl/trinket/felburned-ledger.d.ts +2 -0
- package/dist/src/cards/impl/trinket/felburned-ledger.js +12 -0
- package/dist/src/cards/impl/trinket/felburned-ledger.js.map +1 -0
- package/dist/src/cards/impl/trinket/fridge-magnet.d.ts +2 -0
- package/dist/src/cards/impl/trinket/fridge-magnet.js +13 -0
- package/dist/src/cards/impl/trinket/fridge-magnet.js.map +1 -0
- package/dist/src/cards/impl/trinket/gilnean-thorned-rose.d.ts +2 -0
- package/dist/src/cards/impl/trinket/gilnean-thorned-rose.js +19 -0
- package/dist/src/cards/impl/trinket/gilnean-thorned-rose.js.map +1 -0
- package/dist/src/cards/impl/trinket/glowscale-portrait.d.ts +2 -0
- package/dist/src/cards/impl/trinket/glowscale-portrait.js +21 -0
- package/dist/src/cards/impl/trinket/glowscale-portrait.js.map +1 -0
- package/dist/src/cards/impl/trinket/heart-of-the-forest.d.ts +2 -0
- package/dist/src/cards/impl/trinket/heart-of-the-forest.js +17 -0
- package/dist/src/cards/impl/trinket/heart-of-the-forest.js.map +1 -0
- package/dist/src/cards/impl/trinket/jar-o-gems.d.ts +2 -0
- package/dist/src/cards/impl/trinket/jar-o-gems.js +23 -0
- package/dist/src/cards/impl/trinket/jar-o-gems.js.map +1 -0
- package/dist/src/cards/impl/trinket/lorewalker-scroll.d.ts +2 -0
- package/dist/src/cards/impl/trinket/lorewalker-scroll.js +22 -0
- package/dist/src/cards/impl/trinket/lorewalker-scroll.js.map +1 -0
- package/dist/src/cards/impl/trinket/miniature-ship.d.ts +2 -0
- package/dist/src/cards/impl/trinket/miniature-ship.js +19 -0
- package/dist/src/cards/impl/trinket/miniature-ship.js.map +1 -0
- package/dist/src/cards/impl/trinket/powder-keg-enchantment.d.ts +2 -0
- package/dist/src/cards/impl/trinket/powder-keg-enchantment.js +16 -0
- package/dist/src/cards/impl/trinket/powder-keg-enchantment.js.map +1 -0
- package/dist/src/cards/impl/trinket/powder-keg.d.ts +2 -0
- package/dist/src/cards/impl/trinket/powder-keg.js +23 -0
- package/dist/src/cards/impl/trinket/powder-keg.js.map +1 -0
- package/dist/src/cards/impl/trinket/protective-ring.d.ts +2 -0
- package/dist/src/cards/impl/trinket/protective-ring.js +19 -0
- package/dist/src/cards/impl/trinket/protective-ring.js.map +1 -0
- package/dist/src/cards/impl/trinket/quilligraphy-set.d.ts +3 -0
- package/dist/src/cards/impl/trinket/quilligraphy-set.js +19 -0
- package/dist/src/cards/impl/trinket/quilligraphy-set.js.map +1 -0
- package/dist/src/cards/impl/trinket/reinforced-shield.d.ts +2 -0
- package/dist/src/cards/impl/trinket/reinforced-shield.js +15 -0
- package/dist/src/cards/impl/trinket/reinforced-shield.js.map +1 -0
- package/dist/src/cards/impl/trinket/slamma-sticker.d.ts +2 -0
- package/dist/src/cards/impl/trinket/slamma-sticker.js +18 -0
- package/dist/src/cards/impl/trinket/slamma-sticker.js.map +1 -0
- package/dist/src/cards/impl/trinket/stegodon-portrait.d.ts +2 -0
- package/dist/src/cards/impl/trinket/stegodon-portrait.js +19 -0
- package/dist/src/cards/impl/trinket/stegodon-portrait.js.map +1 -0
- package/dist/src/cards/impl/trinket/tarecgosa-sticker.d.ts +2 -0
- package/dist/src/cards/impl/trinket/tarecgosa-sticker.js +7 -0
- package/dist/src/cards/impl/trinket/tarecgosa-sticker.js.map +1 -0
- package/dist/src/cards/impl/trinket/thornspike-pauldron.d.ts +2 -0
- package/dist/src/cards/impl/trinket/thornspike-pauldron.js +11 -0
- package/dist/src/cards/impl/trinket/thornspike-pauldron.js.map +1 -0
- package/dist/src/cards/impl/trinket/tide-raiser-portrait.d.ts +2 -0
- package/dist/src/cards/impl/trinket/tide-raiser-portrait.js +16 -0
- package/dist/src/cards/impl/trinket/tide-raiser-portrait.js.map +1 -0
- package/dist/src/cards/impl/trinket/tiger-carving-token.d.ts +2 -0
- package/dist/src/cards/impl/trinket/tiger-carving-token.js +16 -0
- package/dist/src/cards/impl/trinket/tiger-carving-token.js.map +1 -0
- package/dist/src/cards/impl/trinket/trusty-crowbar.d.ts +2 -0
- package/dist/src/cards/impl/trinket/trusty-crowbar.js +19 -0
- package/dist/src/cards/impl/trinket/trusty-crowbar.js.map +1 -0
- package/dist/src/cards/impl/trinket/unholy-sanctum.js +1 -1
- package/dist/src/cards/impl/trinket/unholy-sanctum.js.map +1 -1
- package/dist/src/cards/impl/trinket/wicked-tome.d.ts +2 -0
- package/dist/src/cards/impl/trinket/wicked-tome.js +13 -0
- package/dist/src/cards/impl/trinket/wicked-tome.js.map +1 -0
- package/dist/src/cards/impl/trinket/wildfeather-duster.d.ts +2 -0
- package/dist/src/cards/impl/trinket/wildfeather-duster.js +25 -0
- package/dist/src/cards/impl/trinket/wildfeather-duster.js.map +1 -0
- package/dist/src/mechanics/cast-tavern-spell.js +13 -0
- package/dist/src/mechanics/cast-tavern-spell.js.map +1 -1
- package/dist/src/mechanics/tavern-spell-repeat.js +4 -5
- package/dist/src/mechanics/tavern-spell-repeat.js.map +1 -1
- package/dist/src/services/card-ids.d.ts +724 -5
- package/dist/src/services/card-ids.js.map +1 -1
- package/dist/src/simulation/add-minion-to-board.d.ts +8 -0
- package/dist/src/simulation/add-minion-to-board.js +28 -18
- package/dist/src/simulation/add-minion-to-board.js.map +1 -1
- package/dist/src/simulation/after-attack.js +14 -14
- package/dist/src/simulation/after-attack.js.map +1 -1
- package/dist/src/simulation/auras.js +6 -1
- package/dist/src/simulation/auras.js.map +1 -1
- package/dist/src/simulation/avenge.js +0 -18
- package/dist/src/simulation/avenge.js.map +1 -1
- package/dist/src/simulation/blood-gems.d.ts +1 -0
- package/dist/src/simulation/blood-gems.js +11 -1
- package/dist/src/simulation/blood-gems.js.map +1 -1
- package/dist/src/simulation/cards-in-hand.js +14 -4
- package/dist/src/simulation/cards-in-hand.js.map +1 -1
- package/dist/src/simulation/damage-effects.d.ts +6 -0
- package/dist/src/simulation/damage-effects.js +11 -9
- package/dist/src/simulation/damage-effects.js.map +1 -1
- package/dist/src/simulation/damage-to-hero.js +12 -0
- package/dist/src/simulation/damage-to-hero.js.map +1 -1
- package/dist/src/simulation/death-effects.js +25 -2
- package/dist/src/simulation/death-effects.js.map +1 -1
- package/dist/src/simulation/global-info-helpers.d.ts +7 -0
- package/dist/src/simulation/global-info-helpers.js +25 -0
- package/dist/src/simulation/global-info-helpers.js.map +1 -0
- package/dist/src/simulation/magnetize.js +28 -1
- package/dist/src/simulation/magnetize.js.map +1 -1
- package/dist/src/simulation/start-of-combat/soc-action-processor.js +0 -4
- package/dist/src/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/src/temp-card-ids.d.ts +1 -118
- package/dist/src/temp-card-ids.js +1 -118
- package/dist/src/temp-card-ids.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auras.js","sourceRoot":"","sources":["../../../src/simulation/auras.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData } from '../cards/cards-data';\r\nimport { updateStealth } from '../keywords/stealth';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { addImpliedMechanics, hasCorrectTribe } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const setMissingAuras = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tanomalies: readonly string[],\r\n\tallCards: AllCardsService,\r\n): void => {\r\n\tsetMissingMinionsAura(board, boardHero, anomalies, allCards);\r\n\tsetMissingHeroPowerAura(board, boardHero);\r\n\tsetMissingTrinketAura(board, boardHero);\r\n};\r\n\r\nexport const setMissingTrinketAura = (board: BoardEntity[], boardHero: BgsPlayerEntity): void => {\r\n\tfor (const trinket of boardHero.trinkets ?? []) {\r\n\t\t// switch (trinket.cardId) {\r\n\t\t// \tcase CardIds.WindrunnerNecklace_BG30_MagicItem_997:\r\n\t\t// \tcase CardIds.WindrunnerNecklace_WindrunnerNecklaceToken_BG30_MagicItem_997t:\r\n\t\t// \t\tconst enchantment =\r\n\t\t// \t\t\ttrinket.cardId === CardIds.WindrunnerNecklace_BG30_MagicItem_997\r\n\t\t// \t\t\t\t? CardIds.WindrunnerNecklace_RunningLikeTheWindEnchantment_BG30_MagicItem_997e\r\n\t\t// \t\t\t\t: CardIds.WindrunnerNecklace_RunningLikeTheWindEnchantment_BG30_MagicItem_997e2;\r\n\t\t// \t\tconst buff = trinket.cardId === CardIds.WindrunnerNecklace_BG30_MagicItem_997 ? 8 : 20;\r\n\t\t// \t\tconst target = board[0];\r\n\t\t// \t\tif (!!target && !target.enchantments?.find((e) => e.cardId === enchantment)) {\r\n\t\t// \t\t\ttarget.attack += buff;\r\n\t\t// \t\t\ttarget.enchantments.push({\r\n\t\t// \t\t\t\tcardId: enchantment,\r\n\t\t// \t\t\t\toriginEntityId: trinket.entityId,\r\n\t\t// \t\t\t\ttiming: 0,\r\n\t\t// \t\t\t});\r\n\t\t// \t\t}\r\n\t\t// \t\tbreak;\r\n\t\t// }\r\n\t}\r\n};\r\n\r\nexport const setMissingHeroPowerAura = (board: BoardEntity[], boardHero: BgsPlayerEntity): void => {\r\n\tfor (const heroPower of boardHero.heroPowers) {\r\n\t\tif (heroPower.cardId === CardIds.TheSmokingGun) {\r\n\t\t\tboard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t!e.enchantments.find(\r\n\t\t\t\t\t\t\t(ench) => ench.cardId === CardIds.TheSmokingGun_ArmedAndStillSmokingEnchantment,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += 4;\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tif (heroPower.cardId === CardIds.VolatileVenom) {\r\n\t\t\tboard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) => !e.enchantments.find((ench) => ench.cardId === CardIds.VolatileVenom_VolatileEnchantment),\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += 7;\r\n\t\t\t\t\te.health += 7;\r\n\t\t\t\t\te.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\t\t\ttiming: 0,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst setMissingMinionsAura = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tanomalies: readonly string[],\r\n\tallCards: AllCardsService,\r\n): void => {\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, anomalies, allCards)),\r\n\t\tCardIds.SouthseaCaptainLegacy_BG_NEW1_027,\r\n\t\tCardIds.SouthseaCaptain_YarrrVanillaEnchantment,\r\n\t\t1,\r\n\t\t1,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, anomalies, allCards)),\r\n\t\tCardIds.SouthseaCaptainLegacy_TB_BaconUps_136,\r\n\t\tCardIds.SouthseaCaptain_YarrrEnchantment,\r\n\t\t2,\r\n\t\t2,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, anomalies, allCards)),\r\n\t\tCardIds.MurlocWarleaderLegacy_BG_EX1_507,\r\n\t\tCardIds.MurlocWarleader_MrgglaarglLegacyEnchantment,\r\n\t\t2,\r\n\t\t0,\r\n\t);\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, anomalies, allCards)),\r\n\t// \tCardIds.MurlocWarleaderLegacy_BG_EX1_507,\r\n\t// \tCardIds.MurlocWarleader_MrgglaarglEnchantment,\r\n\t// \t4,\r\n\t// \t0,\r\n\t// );\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, anomalies, allCards)),\r\n\t// \tCardIds.Kathranatir_BG21_039,\r\n\t// \tCardIds.Kathranatir_GraspOfKathranatirEnchantment_BG21_039e,\r\n\t// \t2,\r\n\t// \t0,\r\n\t// );\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, anomalies, allCards)),\r\n\t// \tCardIds.Kathranatir_BG21_039_G,\r\n\t// \tCardIds.Kathranatir_GraspOfKathranatirEnchantment_BG21_039_Ge,\r\n\t// \t4,\r\n\t// \t0,\r\n\t// );\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => e.divineShield),\r\n\t\tCardIds.CyborgDrake_BG25_043,\r\n\t\tCardIds.CyborgDrake_CyborgEnhancementEnchantment_BG25_043e,\r\n\t\t6,\r\n\t\t0,\r\n\t\tfalse,\r\n\t);\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => e.divineShield),\r\n\t// \tCardIds.CyborgDrake_BG25_043_G,\r\n\t// \tCardIds.CyborgDrake_CyborgEnhancementEnchantment_BG25_043_Ge,\r\n\t// \t12,\r\n\t// \t0,\r\n\t// \tfalse,\r\n\t// );\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, anomalies, allCards)),\r\n\t\tCardIds.SoreLoser_BG27_030,\r\n\t\tCardIds.SoreLoser_NoImWinningEnchantment_BG27_030e,\r\n\t\tboardHero.tavernTier,\r\n\t\t0,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, anomalies, allCards)),\r\n\t\tCardIds.SoreLoser_BG27_030_G,\r\n\t\tCardIds.SoreLoser_NoImWinningEnchantment_BG27_030e,\r\n\t\t2 * boardHero.tavernTier,\r\n\t\t0,\r\n\t);\r\n};\r\n\r\nconst setMissingAura = (\r\n\tboard: BoardEntity[],\r\n\tminionCardId: string,\r\n\tenchantmentCardId: string,\r\n\tattack: number,\r\n\thealth: number,\r\n\tignoreSelf = true,\r\n\tallCards: AllCardsService = null,\r\n): void => {\r\n\tconst buffers = board.filter((e) => e.cardId === minionCardId);\r\n\tfor (const buffer of buffers) {\r\n\t\tboard\r\n\t\t\t.filter((e) => !e.enchantments.find((ench) => ench.cardId === enchantmentCardId))\r\n\t\t\t.filter((e) => (ignoreSelf ? e.entityId !== buffer.entityId : true))\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\te.attack += attack;\r\n\t\t\t\te.health += health;\r\n\t\t\t});\r\n\t}\r\n};\r\n\r\nexport const setImplicitDataHero = (\r\n\thero: BgsPlayerEntity,\r\n\tcardsData: CardsData,\r\n\tisPlayer: boolean,\r\n\tentityIdContainer: { entityId: number },\r\n): void => {\r\n\tfor (const heroPower of hero.heroPowers) {\r\n\t\tconst avengeValue = cardsData.avengeValue(heroPower.cardId);\r\n\t\tif (avengeValue > 0) {\r\n\t\t\theroPower.avengeCurrent = avengeValue - (heroPower.scoreValue2 ?? 0);\r\n\t\t\theroPower.avengeDefault = avengeValue;\r\n\t\t}\r\n\t\tif ((heroPower.info as BoardEntity)?.health) {\r\n\t\t\taddImpliedMechanics(heroPower.info as BoardEntity, cardsData);\r\n\t\t}\r\n\t}\r\n\t// Backward compatibility\r\n\tif (!!hero.questRewards?.length && !Array.isArray(hero.questRewards)) {\r\n\t\thero.questRewards = [hero.questRewards as any];\r\n\t}\r\n\r\n\t// Because Denathrius can send a quest reward as its hero power (I think)\r\n\t// For now deactivating this, until I have a scenario where this matters. It feels like\r\n\t// this should be a display issue only, as quest rewards are also handled in the code\r\n\tconst heroPowerAsReward = null; // hero.cardId === CardIds.SireDenathrius_BG24_HERO_100 ? hero.heroPowers[0]?.cardId : null;\r\n\thero.questRewards = [...(hero.questRewards ?? []), heroPowerAsReward].filter((e) => !!e);\r\n\thero.questRewardEntities = hero.questRewardEntities\r\n\t\t? hero.questRewardEntities.map((reward: any) => ({\r\n\t\t\t\tcardId: reward.CardId,\r\n\t\t\t\tscriptDataNum1: reward.ScriptDataNum1 ?? 0,\r\n\t\t\t\tentityId: entityIdContainer.entityId--,\r\n\t\t\t\tavengeDefault: cardsData.avengeValue(reward.CardId),\r\n\t\t\t\tavengeCurrent: cardsData.avengeValue(reward.CardId),\r\n\t\t }))\r\n\t\t: hero.questRewards.map((reward) => ({\r\n\t\t\t\tcardId: reward,\r\n\t\t\t\tentityId: entityIdContainer.entityId--,\r\n\t\t\t\tavengeCurrent: cardsData.avengeValue(reward),\r\n\t\t\t\tavengeDefault: cardsData.avengeValue(reward),\r\n\t\t\t\tscriptDataNum1: cardsData.defaultScriptDataNum(reward),\r\n\t\t }));\r\n\thero.trinkets = (hero.trinkets ?? []).map((trinket) => ({\r\n\t\t...trinket,\r\n\t\tavengeDefault: cardsData.avengeValue(trinket.cardId),\r\n\t\tavengeCurrent: cardsData.avengeValue(trinket.cardId),\r\n\t\t// Use scriptDataNum1 to keep the info from the input\r\n\t\tscriptDataNum1: trinket.scriptDataNum1 || cardsData.defaultScriptDataNum(trinket.cardId),\r\n\t}));\r\n\t// 0 is not a valid entityId\r\n\thero.entityId = hero.entityId || entityIdContainer.entityId--;\r\n\thero.hand = hero.hand ?? [];\r\n\thero.enchantments = hero.enchantments ?? [];\r\n\tif (!hero.globalInfo) {\r\n\t\thero.globalInfo = {};\r\n\t}\r\n\r\n\thero.globalInfo.EternalKnightsDeadThisGame = hero.globalInfo.EternalKnightsDeadThisGame ?? 0;\r\n\thero.globalInfo.SanlaynScribesDeadThisGame = hero.globalInfo.SanlaynScribesDeadThisGame ?? 0;\r\n\thero.globalInfo.BeastsSummonedThisGame = hero.globalInfo.BeastsSummonedThisGame ?? 0;\r\n\thero.globalInfo.BeastsSummonedThisCombat = hero.globalInfo.BeastsSummonedThisCombat ?? 0;\r\n\thero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame ?? 0;\r\n\thero.globalInfo.PiratesSummonedThisGame = hero.globalInfo.PiratesSummonedThisGame ?? 0;\r\n\thero.globalInfo.BattlecriesTriggeredThisGame = hero.globalInfo.BattlecriesTriggeredThisGame ?? 0;\r\n\thero.globalInfo.DeathrattlesTriggeredThisGame = hero.globalInfo.DeathrattlesTriggeredThisGame ?? 0;\r\n\thero.globalInfo.BeetleAttackBuff = hero.globalInfo.BeetleAttackBuff ?? 0;\r\n\thero.globalInfo.BeetleHealthBuff = hero.globalInfo.BeetleHealthBuff ?? 0;\r\n\thero.globalInfo.ElementalAttackBuff = hero.globalInfo.ElementalAttackBuff ?? 0;\r\n\thero.globalInfo.ElementalHealthBuff = hero.globalInfo.ElementalHealthBuff ?? 0;\r\n\thero.globalInfo.PirateAttackBuff = hero.globalInfo.PirateAttackBuff ?? 0;\r\n\thero.globalInfo.PirateHealthBuff = hero.globalInfo.PirateHealthBuff ?? 0;\r\n\thero.globalInfo.TavernSpellAttackBuff = hero.globalInfo.TavernSpellAttackBuff ?? 0;\r\n\thero.globalInfo.TavernSpellHealthBuff = hero.globalInfo.TavernSpellHealthBuff ?? 0;\r\n\thero.globalInfo.MutatedLasherAttackBuff = hero.globalInfo.MutatedLasherAttackBuff ?? 0;\r\n\thero.globalInfo.MutatedLasherHealthBuff = hero.globalInfo.MutatedLasherHealthBuff ?? 0;\r\n\thero.globalInfo.TavernSpellsCastThisGame = hero.globalInfo.TavernSpellsCastThisGame ?? 0;\r\n\thero.globalInfo.TavernSpellsCastThisTurn = hero.globalInfo.TavernSpellsCastThisTurn ?? 0;\r\n\thero.globalInfo.CardsPlayedThisTurn = hero.globalInfo.CardsPlayedThisTurn ?? 0;\r\n\thero.globalInfo.MrrgltonsPlayedThisGame = hero.globalInfo.MrrgltonsPlayedThisGame ?? 0;\r\n\thero.globalInfo.AdditionalAttack = hero.globalInfo.AdditionalAttack ?? 0;\r\n\thero.globalInfo.SpellsCastThisGame = hero.globalInfo.SpellsCastThisGame ?? 0;\r\n\thero.globalInfo.UndeadAttackBonus = hero.globalInfo.UndeadAttackBonus ?? 0;\r\n\thero.globalInfo.HauntedCarapaceAttackBonus = hero.globalInfo.HauntedCarapaceAttackBonus ?? 0;\r\n\thero.globalInfo.HauntedCarapaceHealthBonus = hero.globalInfo.HauntedCarapaceHealthBonus ?? 0;\r\n\thero.globalInfo.FrostlingBonus = hero.globalInfo.FrostlingBonus ?? 0;\r\n\thero.globalInfo.BloodGemAttackBonus =\r\n\t\t(hero.globalInfo.BloodGemAttackBonus ?? 0) +\r\n\t\t// Not sure why, but this isn't reflected in the player enchant\r\n\t\t(hero.questRewardEntities?.filter((e) => e.cardId === CardIds.EndlessBloodMoon).length ?? 0);\r\n\thero.globalInfo.BloodGemHealthBonus =\r\n\t\t(hero.globalInfo.BloodGemHealthBonus ?? 0) +\r\n\t\t(hero.questRewardEntities?.filter((e) => e.cardId === CardIds.EndlessBloodMoon).length ?? 0);\r\n\thero.globalInfo.GoldrinnBuffAtk = hero.globalInfo.GoldrinnBuffAtk ?? 0;\r\n\thero.globalInfo.GoldrinnBuffHealth = hero.globalInfo.GoldrinnBuffHealth ?? 0;\r\n\thero.globalInfo.WhelpAttackBuff = hero.globalInfo.WhelpAttackBuff ?? 0;\r\n\thero.globalInfo.WhelpHealthBuff = hero.globalInfo.WhelpHealthBuff ?? 0;\r\n\thero.globalInfo.GoldSpentThisGame = hero.globalInfo.GoldSpentThisGame ?? 0;\r\n\thero.globalInfo.VolumizerAttackBuff = hero.globalInfo.VolumizerAttackBuff ?? 0;\r\n\thero.globalInfo.VolumizerHealthBuff = hero.globalInfo.VolumizerHealthBuff ?? 0;\r\n\thero.globalInfo.DeepBluesPlayed = hero.globalInfo.DeepBluesPlayed ?? 0;\r\n};\r\n\r\nexport const clearStealthIfNeeded = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// https://twitter.com/DCalkosz/status/1562194944688660481?s=20&t=100I8IVZmBKgYQWkdK8nIA\r\n\tif (board.every((entity) => entity.stealth && !entity.attack)) {\r\n\t\tboard.forEach((e) => updateStealth(e, false, board, hero, otherHero, gameState));\r\n\t}\r\n\tif (otherBoard.every((entity) => entity.stealth && !entity.attack)) {\r\n\t\totherBoard.forEach((e) => updateStealth(e, false, otherBoard, otherHero, hero, gameState));\r\n\t}\r\n\tif (board.every((e) => e.stealth) && otherBoard.every((e) => e.stealth)) {\r\n\t\tboard.forEach((e) => updateStealth(e, false, board, hero, otherHero, gameState));\r\n\t\totherBoard.forEach((e) => updateStealth(e, false, otherBoard, otherHero, hero, gameState));\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"auras.js","sourceRoot":"","sources":["../../../src/simulation/auras.ts"],"names":[],"mappings":";;;AACA,iEAAqE;AAIrE,iDAAoD;AAEpD,oCAAgE;AAGzD,MAAM,eAAe,GAAG,CAC9B,KAAoB,EACpB,SAA0B,EAC1B,SAA4B,EAC5B,QAAyB,EAClB,EAAE;IACT,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,IAAA,+BAAuB,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAA,6BAAqB,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACzC,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEK,MAAM,qBAAqB,GAAG,CAAC,KAAoB,EAAE,SAA0B,EAAQ,EAAE;;IAC/F,KAAK,MAAM,OAAO,IAAI,MAAA,SAAS,CAAC,QAAQ,mCAAI,EAAE,EAAE;KAoB/C;AACF,CAAC,CAAC;AAtBW,QAAA,qBAAqB,yBAsBhC;AAEK,MAAM,uBAAuB,GAAG,CAAC,KAAoB,EAAE,SAA0B,EAAQ,EAAE;IACjG,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,UAAU,EAAE;QAC7C,IAAI,SAAS,CAAC,MAAM,sBAA0B,EAAE;YAC/C,KAAK;iBACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CACnB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,uBAA0D,CAC/E,CACF;iBACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;SACJ;QACD,IAAI,SAAS,CAAC,MAAM,sBAA0B,EAAE;YAC/C,KAAK;iBACH,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,uBAA8C,CAAC,CAChG;iBACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;gBACd,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;oBACnB,MAAM,oBAA2C;oBACjD,cAAc,EAAE,SAAS;oBACzB,MAAM,EAAE,CAAC;iBACT,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;KACD;AACF,CAAC,CAAC;AA9BW,QAAA,uBAAuB,2BA8BlC;AAEF,MAAM,qBAAqB,GAAG,CAC7B,KAAoB,EACpB,SAA0B,EAC1B,SAA4B,EAC5B,QAAyB,EAClB,EAAE;IACT,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,kCAGpF,CAAC,EACD,CAAC,CACD,CAAC;IACF,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,yCAGpF,CAAC,EACD,CAAC,CACD,CAAC;IACF,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,4BAGpF,CAAC,EACD,CAAC,CACD,CAAC;IAsBF,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,2BAGnC,CAAC,EACD,CAAC,EACD,KAAK,CACL,CAAC;IASF,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,2BAGpF,SAAS,CAAC,UAAU,EACpB,CAAC,CACD,CAAC;IACF,cAAc,CACb,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,6BAGpF,CAAC,GAAG,SAAS,CAAC,UAAU,EACxB,CAAC,CACD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACtB,KAAoB,EACpB,YAAoB,EACpB,iBAAyB,EACzB,MAAc,EACd,MAAc,EACd,UAAU,GAAG,IAAI,EACjB,WAA4B,IAAI,EACzB,EAAE;IACT,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAC/D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC7B,KAAK;aACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;aAChF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aACnE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;YACnB,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;QACpB,CAAC,CAAC,CAAC;KACJ;AACF,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CAClC,IAAqB,EACrB,SAAoB,EACpB,QAAiB,EACjB,iBAAuC,EAChC,EAAE;;IACT,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;QACxC,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,WAAW,GAAG,CAAC,EAAE;YACpB,SAAS,CAAC,aAAa,GAAG,WAAW,GAAG,CAAC,MAAA,SAAS,CAAC,WAAW,mCAAI,CAAC,CAAC,CAAC;YACrE,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC;SACtC;QACD,IAAI,MAAC,SAAS,CAAC,IAAoB,0CAAE,MAAM,EAAE;YAC5C,IAAA,2BAAmB,EAAC,SAAS,CAAC,IAAmB,EAAE,SAAS,CAAC,CAAC;SAC9D;KACD;IAED,IAAI,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,MAAM,CAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;QACrE,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAC;KAC/C;IAKD,MAAM,iBAAiB,GAAG,IAAI,CAAC;IAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;QAClD,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;;YAAC,OAAA,CAAC;gBAC/C,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC;gBAC1C,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;gBACtC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnD,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;aAClD,CAAC,CAAA;SAAA,CAAC;QACL,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnC,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE;YACtC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5C,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;YAC5C,cAAc,EAAE,SAAS,CAAC,oBAAoB,CAAC,MAAM,CAAC;SACrD,CAAC,CAAC,CAAC;IACP,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAA,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACvD,GAAG,OAAO;QACV,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QACpD,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QAEpD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;KACxF,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC9D,IAAI,CAAC,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,YAAY,mCAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACrB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACrB;IAED,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,0BAA0B,mCAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,0BAA0B,mCAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,sBAAsB,mCAAI,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,wBAAwB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,mCAAI,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,mCAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,mCAAI,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,CAAC,4BAA4B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,4BAA4B,mCAAI,CAAC,CAAC;IACjG,IAAI,CAAC,UAAU,CAAC,6BAA6B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,6BAA6B,mCAAI,CAAC,CAAC;IACnG,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,mCAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,mCAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,mCAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,mCAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC;IACnF,IAAI,CAAC,UAAU,CAAC,qBAAqB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,qBAAqB,mCAAI,CAAC,CAAC;IACnF,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,mCAAI,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,mCAAI,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,CAAC,wBAAwB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,mCAAI,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,CAAC,wBAAwB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,mCAAI,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,mCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,mCAAI,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,mCAAI,CAAC,CAAC;IACzE,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,mCAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,mCAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,0BAA0B,mCAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,0BAA0B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,0BAA0B,mCAAI,CAAC,CAAC;IAC7F,IAAI,CAAC,UAAU,CAAC,cAAc,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,cAAc,qCAAI,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,mBAAmB;QAClC,CAAC,OAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,qCAAI,CAAC,CAAC;YAE1C,CAAC,OAAA,OAAA,IAAI,CAAC,mBAAmB,4CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAA6B,EAAE,MAAM,qCAAI,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,UAAU,CAAC,mBAAmB;QAClC,CAAC,OAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,qCAAI,CAAC,CAAC;YAC1C,CAAC,OAAA,OAAA,IAAI,CAAC,mBAAmB,4CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAA6B,EAAE,MAAM,qCAAI,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,eAAe,qCAAI,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,qCAAI,CAAC,CAAC;IAC7E,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,eAAe,qCAAI,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,eAAe,qCAAI,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,iBAAiB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,iBAAiB,qCAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,qCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,qCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,eAAe,qCAAI,CAAC,CAAC;IACvE,IAAI,CAAC,UAAU,CAAC,6BAA6B,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,6BAA6B,qCAAI,CAAC,CAAC;IACnG,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,sBAAsB,qCAAI,CAAC,CAAC;IACrF,IAAI,CAAC,UAAU,CAAC,wBAAwB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,qCAAI,CAAC,CAAC;IACzF,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,qCAAI,CAAC,CAAC;IAC/E,IAAI,CAAC,UAAU,CAAC,uBAAuB,GAAG,OAAA,IAAI,CAAC,UAAU,CAAC,uBAAuB,qCAAI,CAAC,CAAC;AACxF,CAAC,CAAC;AAxGW,QAAA,mBAAmB,uBAwG9B;AAEK,MAAM,oBAAoB,GAAG,CACnC,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IAET,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;KACjF;IACD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QACnE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;KAC3F;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;QACxE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QACjF,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAa,EAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;KAC3F;AACF,CAAC,CAAC;AAlBW,QAAA,oBAAoB,wBAkB/B","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { AllCardsService, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardsData } from '../cards/cards-data';\r\nimport { updateStealth } from '../keywords/stealth';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { addImpliedMechanics, hasCorrectTribe } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\n\r\nexport const setMissingAuras = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tanomalies: readonly string[],\r\n\tallCards: AllCardsService,\r\n): void => {\r\n\tsetMissingMinionsAura(board, boardHero, anomalies, allCards);\r\n\tsetMissingHeroPowerAura(board, boardHero);\r\n\tsetMissingTrinketAura(board, boardHero);\r\n};\r\n\r\nexport const setMissingTrinketAura = (board: BoardEntity[], boardHero: BgsPlayerEntity): void => {\r\n\tfor (const trinket of boardHero.trinkets ?? []) {\r\n\t\t// switch (trinket.cardId) {\r\n\t\t// \tcase CardIds.WindrunnerNecklace_BG30_MagicItem_997:\r\n\t\t// \tcase CardIds.WindrunnerNecklace_WindrunnerNecklaceToken_BG30_MagicItem_997t:\r\n\t\t// \t\tconst enchantment =\r\n\t\t// \t\t\ttrinket.cardId === CardIds.WindrunnerNecklace_BG30_MagicItem_997\r\n\t\t// \t\t\t\t? CardIds.WindrunnerNecklace_RunningLikeTheWindEnchantment_BG30_MagicItem_997e\r\n\t\t// \t\t\t\t: CardIds.WindrunnerNecklace_RunningLikeTheWindEnchantment_BG30_MagicItem_997e2;\r\n\t\t// \t\tconst buff = trinket.cardId === CardIds.WindrunnerNecklace_BG30_MagicItem_997 ? 8 : 20;\r\n\t\t// \t\tconst target = board[0];\r\n\t\t// \t\tif (!!target && !target.enchantments?.find((e) => e.cardId === enchantment)) {\r\n\t\t// \t\t\ttarget.attack += buff;\r\n\t\t// \t\t\ttarget.enchantments.push({\r\n\t\t// \t\t\t\tcardId: enchantment,\r\n\t\t// \t\t\t\toriginEntityId: trinket.entityId,\r\n\t\t// \t\t\t\ttiming: 0,\r\n\t\t// \t\t\t});\r\n\t\t// \t\t}\r\n\t\t// \t\tbreak;\r\n\t\t// }\r\n\t}\r\n};\r\n\r\nexport const setMissingHeroPowerAura = (board: BoardEntity[], boardHero: BgsPlayerEntity): void => {\r\n\tfor (const heroPower of boardHero.heroPowers) {\r\n\t\tif (heroPower.cardId === CardIds.TheSmokingGun) {\r\n\t\t\tboard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t!e.enchantments.find(\r\n\t\t\t\t\t\t\t(ench) => ench.cardId === CardIds.TheSmokingGun_ArmedAndStillSmokingEnchantment,\r\n\t\t\t\t\t\t),\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += 4;\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tif (heroPower.cardId === CardIds.VolatileVenom) {\r\n\t\t\tboard\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) => !e.enchantments.find((ench) => ench.cardId === CardIds.VolatileVenom_VolatileEnchantment),\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += 7;\r\n\t\t\t\t\te.health += 7;\r\n\t\t\t\t\te.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\t\t\ttiming: 0,\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst setMissingMinionsAura = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tanomalies: readonly string[],\r\n\tallCards: AllCardsService,\r\n): void => {\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, anomalies, allCards)),\r\n\t\tCardIds.SouthseaCaptainLegacy_BG_NEW1_027,\r\n\t\tCardIds.SouthseaCaptain_YarrrVanillaEnchantment,\r\n\t\t1,\r\n\t\t1,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, anomalies, allCards)),\r\n\t\tCardIds.SouthseaCaptainLegacy_TB_BaconUps_136,\r\n\t\tCardIds.SouthseaCaptain_YarrrEnchantment,\r\n\t\t2,\r\n\t\t2,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, anomalies, allCards)),\r\n\t\tCardIds.MurlocWarleaderLegacy_BG_EX1_507,\r\n\t\tCardIds.MurlocWarleader_MrgglaarglLegacyEnchantment,\r\n\t\t2,\r\n\t\t0,\r\n\t);\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, anomalies, allCards)),\r\n\t// \tCardIds.MurlocWarleaderLegacy_BG_EX1_507,\r\n\t// \tCardIds.MurlocWarleader_MrgglaarglEnchantment,\r\n\t// \t4,\r\n\t// \t0,\r\n\t// );\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, anomalies, allCards)),\r\n\t// \tCardIds.Kathranatir_BG21_039,\r\n\t// \tCardIds.Kathranatir_GraspOfKathranatirEnchantment_BG21_039e,\r\n\t// \t2,\r\n\t// \t0,\r\n\t// );\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, anomalies, allCards)),\r\n\t// \tCardIds.Kathranatir_BG21_039_G,\r\n\t// \tCardIds.Kathranatir_GraspOfKathranatirEnchantment_BG21_039_Ge,\r\n\t// \t4,\r\n\t// \t0,\r\n\t// );\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => e.divineShield),\r\n\t\tCardIds.CyborgDrake_BG25_043,\r\n\t\tCardIds.CyborgDrake_CyborgEnhancementEnchantment_BG25_043e,\r\n\t\t6,\r\n\t\t0,\r\n\t\tfalse,\r\n\t);\r\n\t// setMissingAura(\r\n\t// \tboard.filter((e) => e.divineShield),\r\n\t// \tCardIds.CyborgDrake_BG25_043_G,\r\n\t// \tCardIds.CyborgDrake_CyborgEnhancementEnchantment_BG25_043_Ge,\r\n\t// \t12,\r\n\t// \t0,\r\n\t// \tfalse,\r\n\t// );\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, anomalies, allCards)),\r\n\t\tCardIds.SoreLoser_BG27_030,\r\n\t\tCardIds.SoreLoser_NoImWinningEnchantment_BG27_030e,\r\n\t\tboardHero.tavernTier,\r\n\t\t0,\r\n\t);\r\n\tsetMissingAura(\r\n\t\tboard.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, anomalies, allCards)),\r\n\t\tCardIds.SoreLoser_BG27_030_G,\r\n\t\tCardIds.SoreLoser_NoImWinningEnchantment_BG27_030e,\r\n\t\t2 * boardHero.tavernTier,\r\n\t\t0,\r\n\t);\r\n};\r\n\r\nconst setMissingAura = (\r\n\tboard: BoardEntity[],\r\n\tminionCardId: string,\r\n\tenchantmentCardId: string,\r\n\tattack: number,\r\n\thealth: number,\r\n\tignoreSelf = true,\r\n\tallCards: AllCardsService = null,\r\n): void => {\r\n\tconst buffers = board.filter((e) => e.cardId === minionCardId);\r\n\tfor (const buffer of buffers) {\r\n\t\tboard\r\n\t\t\t.filter((e) => !e.enchantments.find((ench) => ench.cardId === enchantmentCardId))\r\n\t\t\t.filter((e) => (ignoreSelf ? e.entityId !== buffer.entityId : true))\r\n\t\t\t.forEach((e) => {\r\n\t\t\t\te.attack += attack;\r\n\t\t\t\te.health += health;\r\n\t\t\t});\r\n\t}\r\n};\r\n\r\nexport const setImplicitDataHero = (\r\n\thero: BgsPlayerEntity,\r\n\tcardsData: CardsData,\r\n\tisPlayer: boolean,\r\n\tentityIdContainer: { entityId: number },\r\n): void => {\r\n\tfor (const heroPower of hero.heroPowers) {\r\n\t\tconst avengeValue = cardsData.avengeValue(heroPower.cardId);\r\n\t\tif (avengeValue > 0) {\r\n\t\t\theroPower.avengeCurrent = avengeValue - (heroPower.scoreValue2 ?? 0);\r\n\t\t\theroPower.avengeDefault = avengeValue;\r\n\t\t}\r\n\t\tif ((heroPower.info as BoardEntity)?.health) {\r\n\t\t\taddImpliedMechanics(heroPower.info as BoardEntity, cardsData);\r\n\t\t}\r\n\t}\r\n\t// Backward compatibility\r\n\tif (!!hero.questRewards?.length && !Array.isArray(hero.questRewards)) {\r\n\t\thero.questRewards = [hero.questRewards as any];\r\n\t}\r\n\r\n\t// Because Denathrius can send a quest reward as its hero power (I think)\r\n\t// For now deactivating this, until I have a scenario where this matters. It feels like\r\n\t// this should be a display issue only, as quest rewards are also handled in the code\r\n\tconst heroPowerAsReward = null; // hero.cardId === CardIds.SireDenathrius_BG24_HERO_100 ? hero.heroPowers[0]?.cardId : null;\r\n\thero.questRewards = [...(hero.questRewards ?? []), heroPowerAsReward].filter((e) => !!e);\r\n\thero.questRewardEntities = hero.questRewardEntities\r\n\t\t? hero.questRewardEntities.map((reward: any) => ({\r\n\t\t\t\tcardId: reward.CardId,\r\n\t\t\t\tscriptDataNum1: reward.ScriptDataNum1 ?? 0,\r\n\t\t\t\tentityId: entityIdContainer.entityId--,\r\n\t\t\t\tavengeDefault: cardsData.avengeValue(reward.CardId),\r\n\t\t\t\tavengeCurrent: cardsData.avengeValue(reward.CardId),\r\n\t\t }))\r\n\t\t: hero.questRewards.map((reward) => ({\r\n\t\t\t\tcardId: reward,\r\n\t\t\t\tentityId: entityIdContainer.entityId--,\r\n\t\t\t\tavengeCurrent: cardsData.avengeValue(reward),\r\n\t\t\t\tavengeDefault: cardsData.avengeValue(reward),\r\n\t\t\t\tscriptDataNum1: cardsData.defaultScriptDataNum(reward),\r\n\t\t }));\r\n\thero.trinkets = (hero.trinkets ?? []).map((trinket) => ({\r\n\t\t...trinket,\r\n\t\tavengeDefault: cardsData.avengeValue(trinket.cardId),\r\n\t\tavengeCurrent: cardsData.avengeValue(trinket.cardId),\r\n\t\t// Use scriptDataNum1 to keep the info from the input\r\n\t\tscriptDataNum1: trinket.scriptDataNum1 || cardsData.defaultScriptDataNum(trinket.cardId),\r\n\t}));\r\n\t// 0 is not a valid entityId\r\n\thero.entityId = hero.entityId || entityIdContainer.entityId--;\r\n\thero.hand = hero.hand ?? [];\r\n\thero.enchantments = hero.enchantments ?? [];\r\n\tif (!hero.globalInfo) {\r\n\t\thero.globalInfo = {};\r\n\t}\r\n\r\n\thero.globalInfo.EternalKnightsDeadThisGame = hero.globalInfo.EternalKnightsDeadThisGame ?? 0;\r\n\thero.globalInfo.SanlaynScribesDeadThisGame = hero.globalInfo.SanlaynScribesDeadThisGame ?? 0;\r\n\thero.globalInfo.BeastsSummonedThisGame = hero.globalInfo.BeastsSummonedThisGame ?? 0;\r\n\thero.globalInfo.BeastsSummonedThisCombat = hero.globalInfo.BeastsSummonedThisCombat ?? 0;\r\n\thero.globalInfo.MagnetizedThisGame = hero.globalInfo.MagnetizedThisGame ?? 0;\r\n\thero.globalInfo.PiratesSummonedThisGame = hero.globalInfo.PiratesSummonedThisGame ?? 0;\r\n\thero.globalInfo.BattlecriesTriggeredThisGame = hero.globalInfo.BattlecriesTriggeredThisGame ?? 0;\r\n\thero.globalInfo.DeathrattlesTriggeredThisGame = hero.globalInfo.DeathrattlesTriggeredThisGame ?? 0;\r\n\thero.globalInfo.BeetleAttackBuff = hero.globalInfo.BeetleAttackBuff ?? 0;\r\n\thero.globalInfo.BeetleHealthBuff = hero.globalInfo.BeetleHealthBuff ?? 0;\r\n\thero.globalInfo.ElementalAttackBuff = hero.globalInfo.ElementalAttackBuff ?? 0;\r\n\thero.globalInfo.ElementalHealthBuff = hero.globalInfo.ElementalHealthBuff ?? 0;\r\n\thero.globalInfo.PirateAttackBuff = hero.globalInfo.PirateAttackBuff ?? 0;\r\n\thero.globalInfo.PirateHealthBuff = hero.globalInfo.PirateHealthBuff ?? 0;\r\n\thero.globalInfo.TavernSpellAttackBuff = hero.globalInfo.TavernSpellAttackBuff ?? 0;\r\n\thero.globalInfo.TavernSpellHealthBuff = hero.globalInfo.TavernSpellHealthBuff ?? 0;\r\n\thero.globalInfo.MutatedLasherAttackBuff = hero.globalInfo.MutatedLasherAttackBuff ?? 0;\r\n\thero.globalInfo.MutatedLasherHealthBuff = hero.globalInfo.MutatedLasherHealthBuff ?? 0;\r\n\thero.globalInfo.TavernSpellsCastThisGame = hero.globalInfo.TavernSpellsCastThisGame ?? 0;\r\n\thero.globalInfo.TavernSpellsCastThisTurn = hero.globalInfo.TavernSpellsCastThisTurn ?? 0;\r\n\thero.globalInfo.CardsPlayedThisTurn = hero.globalInfo.CardsPlayedThisTurn ?? 0;\r\n\thero.globalInfo.MrrgltonsPlayedThisGame = hero.globalInfo.MrrgltonsPlayedThisGame ?? 0;\r\n\thero.globalInfo.AdditionalAttack = hero.globalInfo.AdditionalAttack ?? 0;\r\n\thero.globalInfo.SpellsCastThisGame = hero.globalInfo.SpellsCastThisGame ?? 0;\r\n\thero.globalInfo.UndeadAttackBonus = hero.globalInfo.UndeadAttackBonus ?? 0;\r\n\thero.globalInfo.HauntedCarapaceAttackBonus = hero.globalInfo.HauntedCarapaceAttackBonus ?? 0;\r\n\thero.globalInfo.HauntedCarapaceHealthBonus = hero.globalInfo.HauntedCarapaceHealthBonus ?? 0;\r\n\thero.globalInfo.FrostlingBonus = hero.globalInfo.FrostlingBonus ?? 0;\r\n\thero.globalInfo.BloodGemAttackBonus =\r\n\t\t(hero.globalInfo.BloodGemAttackBonus ?? 0) +\r\n\t\t// Not sure why, but this isn't reflected in the player enchant\r\n\t\t(hero.questRewardEntities?.filter((e) => e.cardId === CardIds.EndlessBloodMoon).length ?? 0);\r\n\thero.globalInfo.BloodGemHealthBonus =\r\n\t\t(hero.globalInfo.BloodGemHealthBonus ?? 0) +\r\n\t\t(hero.questRewardEntities?.filter((e) => e.cardId === CardIds.EndlessBloodMoon).length ?? 0);\r\n\thero.globalInfo.GoldrinnBuffAtk = hero.globalInfo.GoldrinnBuffAtk ?? 0;\r\n\thero.globalInfo.GoldrinnBuffHealth = hero.globalInfo.GoldrinnBuffHealth ?? 0;\r\n\thero.globalInfo.WhelpAttackBuff = hero.globalInfo.WhelpAttackBuff ?? 0;\r\n\thero.globalInfo.WhelpHealthBuff = hero.globalInfo.WhelpHealthBuff ?? 0;\r\n\thero.globalInfo.GoldSpentThisGame = hero.globalInfo.GoldSpentThisGame ?? 0;\r\n\thero.globalInfo.VolumizerAttackBuff = hero.globalInfo.VolumizerAttackBuff ?? 0;\r\n\thero.globalInfo.VolumizerHealthBuff = hero.globalInfo.VolumizerHealthBuff ?? 0;\r\n\thero.globalInfo.DeepBluesPlayed = hero.globalInfo.DeepBluesPlayed ?? 0;\r\n\thero.globalInfo.DeathrattlesTriggeredThisGame = hero.globalInfo.DeathrattlesTriggeredThisGame ?? 0;\r\n\thero.globalInfo.BackToBackCastThisGame = hero.globalInfo.BackToBackCastThisGame ?? 0;\r\n\thero.globalInfo.TavernSpellsCastThisTurn = hero.globalInfo.TavernSpellsCastThisTurn ?? 0;\r\n\thero.globalInfo.CardsPlayedThisTurn = hero.globalInfo.CardsPlayedThisTurn ?? 0;\r\n\thero.globalInfo.MrrgltonsPlayedThisGame = hero.globalInfo.MrrgltonsPlayedThisGame ?? 0;\r\n};\r\n\r\nexport const clearStealthIfNeeded = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// https://twitter.com/DCalkosz/status/1562194944688660481?s=20&t=100I8IVZmBKgYQWkdK8nIA\r\n\tif (board.every((entity) => entity.stealth && !entity.attack)) {\r\n\t\tboard.forEach((e) => updateStealth(e, false, board, hero, otherHero, gameState));\r\n\t}\r\n\tif (otherBoard.every((entity) => entity.stealth && !entity.attack)) {\r\n\t\totherBoard.forEach((e) => updateStealth(e, false, otherBoard, otherHero, hero, gameState));\r\n\t}\r\n\tif (board.every((e) => e.stealth) && otherBoard.every((e) => e.stealth)) {\r\n\t\tboard.forEach((e) => updateStealth(e, false, board, hero, otherHero, gameState));\r\n\t\totherBoard.forEach((e) => updateStealth(e, false, otherBoard, otherHero, hero, gameState));\r\n\t}\r\n};\r\n"]}
|
|
@@ -199,24 +199,6 @@ const handleAvenge = (boardWithDeadEntity, boardWithDeadEntityHero, deadEntity,
|
|
|
199
199
|
e.maxHealth += murglMkStats;
|
|
200
200
|
}
|
|
201
201
|
break;
|
|
202
|
-
case "BG30_MagicItem_545":
|
|
203
|
-
const randomMagnetic = gameState.cardsData.getRandomMechToMagnetize(boardWithDeadEntityHero.tavernTier);
|
|
204
|
-
(0, cards_in_hand_1.addCardsInHand)(boardWithDeadEntityHero, boardWithDeadEntity, [randomMagnetic], gameState);
|
|
205
|
-
break;
|
|
206
|
-
case "BG30_MagicItem_410":
|
|
207
|
-
boardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += 1;
|
|
208
|
-
break;
|
|
209
|
-
case "BG30_MagicItem_410t2":
|
|
210
|
-
boardWithDeadEntityHero.globalInfo.BloodGemAttackBonus += 1;
|
|
211
|
-
boardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += 1;
|
|
212
|
-
break;
|
|
213
|
-
case "BG30_MagicItem_864":
|
|
214
|
-
(0, utils_2.addStatsToBoard)(avenger, boardWithDeadEntity, boardWithDeadEntityHero, 3, 3, gameState);
|
|
215
|
-
for (const minion of boardWithDeadEntity) {
|
|
216
|
-
(0, attack_1.dealDamageToMinion)(minion, boardWithDeadEntity, boardWithDeadEntityHero, avenger, 1, otherBoard, otherBoardHero, gameState);
|
|
217
|
-
gameState.spectator.registerPowerTarget(avenger, minion, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero);
|
|
218
|
-
}
|
|
219
|
-
break;
|
|
220
202
|
case "BG30_MagicItem_437":
|
|
221
203
|
if (boardWithDeadEntity.length > 0) {
|
|
222
204
|
const target = (0, utils_1.pickRandom)(boardWithDeadEntity.filter((e) => !e.reborn));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avenge.js","sourceRoot":"","sources":["../../../src/simulation/avenge.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag, Race } from '@firestone-hs/reference-data';\r\nimport { BgsHeroPower, BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAvenge } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { grantRandomDivineShield } from '../keywords/divine-shield';\r\nimport { updateReborn } from '../keywords/reborn';\r\nimport { updateTaunt } from '../keywords/taunt';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { pickRandom } from '../services/utils';\r\nimport { isValidDeathrattleEnchantment } from '../simulate-bgs-battle';\r\nimport {\r\n\taddStatsToBoard,\r\n\tgetRandomMinionWithHighestHealth,\r\n\tgrantRandomStats,\r\n\thasCorrectTribe,\r\n\thasEntityMechanic,\r\n} from '../utils';\r\nimport { dealDamageToMinion } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\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 applyAvengeEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tentitiesSpawnedFromMinionDeath: BoardEntity[],\r\n): BoardEntity[] => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\t// updateAvengeCounters(boardWithDeadEntity, boardWithDeadEntityHero);\r\n\tconst avengers = boardWithDeadEntity\r\n\t\t.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0)\r\n\t\t// Get Tony to be processed first, because of the \"when turned golden, the minion ignores the death for the avenge counter\"\r\n\t\t// behavior\r\n\t\t.sort((a, b) => {\r\n\t\t\t// if (a.cardId === CardIds.TonyTwoTusk_BG21_031 || a.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t// \treturn -1;\r\n\t\t\t// }\r\n\t\t\t// if (b.cardId === CardIds.TonyTwoTusk_BG21_031 || b.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t// \treturn 1;\r\n\t\t\t// }\r\n\t\t\treturn 0;\r\n\t\t});\r\n\tfor (const avenger of avengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\t// console.log('updating dead entity avenge counter', boardWithDeadEntityHero.avengeCurrent, stringifySimpleCard(deadEntity, allCards));\r\n\tfor (const heroPower of boardWithDeadEntityHero.heroPowers) {\r\n\t\tconst heroAvenger = !!heroPower.avengeDefault && heroPower.avengeCurrent <= 0;\r\n\t\tif (heroAvenger) {\r\n\t\t\thandleHeroAvenge(\r\n\t\t\t\tdeadEntity,\r\n\t\t\t\theroPower,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tconst questRewardAvengers = boardWithDeadEntityHero.questRewardEntities.filter(\r\n\t\t(e) => !!e.avengeDefault && e.avengeCurrent <= 0,\r\n\t);\r\n\tfor (const avenger of questRewardAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\r\n\tconst trinketAvengers = boardWithDeadEntityHero.trinkets.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0);\r\n\tfor (const avenger of trinketAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\r\n\tperformEntitySpawns(\r\n\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\t// Not an avenge, but with Avenge timing\r\n\tconst hasDeathrattle =\r\n\t\thasEntityMechanic(deadEntity, GameTag.DEATHRATTLE, gameState.allCards) ||\r\n\t\tdeadEntity.enchantments.some((e) => isValidDeathrattleEnchantment(e.cardId));\r\n\tif (hasDeathrattle) {\r\n\t\t// These are apparently processed after Reborn is triggered\r\n\t\t// http://replays.firestoneapp.com/?reviewId=5db9a191-ae9b-43a5-a072-0d460631d7a9&turn=23&action=12\r\n\t\t// UPDATE 2024-06-24: Multiple counterexamples of this, so I'm not sure exactly what is the right approach\r\n\t\t// I'm implementing the one that makes more sense to me; triggering after reborn is just too different\r\n\t\t// from what happens usually\r\n\t\t// However, we want to trigger it after all the spawns have been processed, so more or less an \"avenge\" timing?\r\n\t\t// Maybe even after that?\r\n\t\t// Update 2024-06-27 29.6.2: timing should stay the same\r\n\t\tboardWithDeadEntity\r\n\t\t\t.filter((e) => e.cardId === CardIds.GhoulAcabra_BG29_863 || e.cardId === CardIds.GhoulAcabra_BG29_863_G)\r\n\t\t\t.forEach((ghoul) => {\r\n\t\t\t\tconst buff = ghoul.cardId === CardIds.GhoulAcabra_BG29_863_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(ghoul, boardWithDeadEntity, boardWithDeadEntityHero, 2 * buff, 2 * buff, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\treturn candidatesEntitiesSpawnedFromAvenge;\r\n};\r\n\r\nexport const updateAvengeCounters = (board: readonly BoardEntity[], boardWithDeadEntityHero: BgsPlayerEntity) => {\r\n\tfor (const entity of board) {\r\n\t\tif (!!entity.avengeDefault) {\r\n\t\t\tentity.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\tfor (const heroPower of boardWithDeadEntityHero.heroPowers) {\r\n\t\tif (!!heroPower.avengeDefault) {\r\n\t\t\theroPower.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const reward of boardWithDeadEntityHero.questRewardEntities) {\r\n\t\tif (!!reward.avengeDefault) {\r\n\t\t\treward.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const trinket of boardWithDeadEntityHero.trinkets) {\r\n\t\tif (!!trinket.avengeDefault) {\r\n\t\t\ttrinket.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAvenge = (\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tavenger: BoardEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst avengeImpl = cardMappings[avenger.cardId];\r\n\tif (hasAvenge(avengeImpl)) {\r\n\t\tconst newSpawns = avengeImpl.avenge(avenger, {\r\n\t\t\tboard: boardWithDeadEntity,\r\n\t\t\thero: boardWithDeadEntityHero,\r\n\t\t\totherBoard: otherBoard,\r\n\t\t\totherHero: otherBoardHero,\r\n\t\t\tdeadEntity: deadEntity,\r\n\t\t\tgameState,\r\n\t\t});\r\n\t\tif (Array.isArray(newSpawns) && newSpawns?.length) {\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(...newSpawns);\r\n\t\t}\r\n\t} else {\r\n\t\t// Don't forget to update the avenge data in cards-data\r\n\t\tswitch (avenger.cardId) {\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\t\t// Only for Tavern\r\n\t\t\t\t// addStatsToBoard(\r\n\t\t\t\t// \tavenger,\r\n\t\t\t\t// \tboardWithDeadEntity,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tavenger.cardId === CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G ? 2 : 1,\r\n\t\t\t\t// \tgameState.allCards,\r\n\t\t\t\t// \tgameState.spectator,\r\n\t\t\t\t// );\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\t\tconst target1 = grantRandomStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t6,\r\n\t\t\t\t\t6,\r\n\t\t\t\t\tRace.BEAST,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tif (!!target1) {\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\t\tconst target2 = grantRandomStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t12,\r\n\t\t\t\t\t12,\r\n\t\t\t\t\tRace.BEAST,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tif (!!target2) {\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\t\tconst doomsayerCardsToAddQuantity = avenger.cardId === CardIds.ImpatientDoomsayer_BG21_007_G ? 2 : 1;\r\n\t\t\t\tconst doomsayerCardsToAdd = [];\r\n\t\t\t\tfor (let i = 0; i < doomsayerCardsToAddQuantity; i++) {\r\n\t\t\t\t\tdoomsayerCardsToAdd.push(pickRandom(gameState.cardsData.demonSpawns));\r\n\t\t\t\t}\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, doomsayerCardsToAdd, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Thorncaller_BG20_105:\r\n\t\t\tcase CardIds.Thorncaller_BG20_105_G:\r\n\t\t\t\tconst thorncallerToAddQuantity = avenger.cardId === CardIds.Thorncaller_BG20_105_G ? 2 : 1;\r\n\t\t\t\tconst thorncallerCardsToAdd = Array(thorncallerToAddQuantity).fill(CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, thorncallerCardsToAdd, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.Sisefin_BG21_009:\r\n\t\t\t// case CardIds.Sisefin_BG21_009_G:\r\n\t\t\t// \tconst poisonousIterations = avenger.cardId === CardIds.Sisefin_BG21_009_G ? 2 : 1;\r\n\t\t\t// \tfor (let i = 0; i < poisonousIterations; i++) {\r\n\t\t\t// \t\tconst validTargets = boardWithDeadEntity.filter((e) => !e.poisonous && !e.venomous);\r\n\t\t\t// \t\tconst murloc = getRandomAliveMinion(validTargets, boardWithDeadEntityHero, Race.MURLOC, gameState);\r\n\t\t\t// \t\tif (murloc) {\r\n\t\t\t// \t\t\tupdateVenomous(\r\n\t\t\t// \t\t\t\tmurloc,\r\n\t\t\t// \t\t\t\ttrue,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t\tgameState,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t// \t\t\t\tavenger,\r\n\t\t\t// \t\t\t\tmurloc,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\t\t// This can be null if the avenge triggers when the last enemy minion dies as well\r\n\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t5,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t5,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\t// \tconst nonGoldenMinions = boardWithDeadEntity\r\n\t\t\t// \t\t.filter((e) => e.entityId !== avenger.entityId)\r\n\t\t\t// \t\t.filter((e) => {\r\n\t\t\t// \t\t\tconst ref = gameState.allCards.getCard(e.cardId);\r\n\t\t\t// \t\t\treturn (\r\n\t\t\t// \t\t\t\t!!ref.battlegroundsPremiumDbfId &&\r\n\t\t\t// \t\t\t\t!!gameState.allCards.getCardFromDbfId(ref.battlegroundsPremiumDbfId).id\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t});\r\n\t\t\t// \tconst pirate = getRandomAliveMinion(nonGoldenMinions, boardWithDeadEntityHero, Race.PIRATE, gameState);\r\n\t\t\t// \tif (pirate) {\r\n\t\t\t// \t\tmakeMinionGolden(\r\n\t\t\t// \t\t\tpirate,\r\n\t\t\t// \t\t\tavenger,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tgameState,\r\n\t\t\t// \t\t);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// \tfor (let i = 0; i < 2; i++) {\r\n\t\t\t// \t\tconst nonGoldenMinions = boardWithDeadEntity.filter((e) => !isMinionGolden(e, gameState.allCards));\r\n\t\t\t// \t\tconst pirate = getRandomAliveMinion(\r\n\t\t\t// \t\t\tnonGoldenMinions,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\tRace.PIRATE,\r\n\t\t\t// \t\t\tgameState,\r\n\t\t\t// \t\t);\r\n\t\t\t// \t\tif (pirate) {\r\n\t\t\t// \t\t\tmakeMinionGolden(\r\n\t\t\t// \t\t\t\tpirate,\r\n\t\t\t// \t\t\t\tavenger,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoard,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t\tgameState,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t\tconst abominationMultiplier = avenger.cardId === CardIds.HungeringAbomination_BG25_014_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tabominationMultiplier * 1,\r\n\t\t\t\t\tabominationMultiplier * 2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.IceSickle:\r\n\t\t\t// \tgrantRandomStats(\r\n\t\t\t// \t\tavenger,\r\n\t\t\t// \t\tboardWithDeadEntityHero.hand.filter(\r\n\t\t\t// \t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t// \t\t),\r\n\t\t\t// \t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t4,\r\n\t\t\t// \t\t0,\r\n\t\t\t// \t\tnull,\r\n\t\t\t// \t\ttrue,\r\n\t\t\t// \t\tgameState,\r\n\t\t\t// \t);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\t\tconst highestHealthMinion = [...otherBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\thighestHealthMinion,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t10,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\thighestHealthMinion,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\t\tupdateReborn(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tupdateTaunt(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\t\tupdateReborn(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tupdateTaunt(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\t\tconst phaerixLoops = avenger.cardId === CardIds.PhaerixWrathOfTheSun_BG28_403_G ? 2 : 1;\r\n\t\t\t\tfor (let i = 0; i < phaerixLoops; i++) {\r\n\t\t\t\t\tgrantRandomDivineShield(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\t\tconst AugmentedLaborerLoops = avenger.cardId === CardIds.AugmentedLaborer_BG28_740_G ? 2 : 1;\r\n\t\t\t\tfor (let i = 0; i < AugmentedLaborerLoops; i++) {\r\n\t\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\t\tconst tumblingDisasterEntity = boardWithDeadEntityHero.questRewardEntities?.find(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505,\r\n\t\t\t\t);\r\n\t\t\t\tif (tumblingDisasterEntity) {\r\n\t\t\t\t\ttumblingDisasterEntity.scriptDataNum1 = (tumblingDisasterEntity.scriptDataNum1 ?? 0) + 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\tavenger.scriptDataNum1 = (avenger.scriptDataNum1 ?? 0) + 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\t\tconst murglMkStats = avenger.cardId === CardIds.MurglMkIi_BG29_991_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tmurglMkStats,\r\n\t\t\t\t\tmurglMkStats,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\t// Don't use utility methods, as we don't want triggers to proc\r\n\t\t\t\tfor (const e of boardWithDeadEntityHero.hand ?? []) {\r\n\t\t\t\t\te.attack += murglMkStats;\r\n\t\t\t\t\te.health += murglMkStats;\r\n\t\t\t\t\te.maxHealth += murglMkStats;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.FridgeMagnet_BG30_MagicItem_545:\r\n\t\t\t\tconst randomMagnetic = gameState.cardsData.getRandomMechToMagnetize(boardWithDeadEntityHero.tavernTier);\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [randomMagnetic], gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.QuilligraphySet_BG30_MagicItem_410:\r\n\t\t\t\tboardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.QuilligraphySet_QuilligraphySetToken_BG30_MagicItem_410t2:\r\n\t\t\t\tboardWithDeadEntityHero.globalInfo.BloodGemAttackBonus += 1;\r\n\t\t\t\tboardWithDeadEntityHero.globalInfo.BloodGemHealthBonus += 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GilneanThornedRose_BG30_MagicItem_864:\r\n\t\t\t\taddStatsToBoard(avenger, boardWithDeadEntity, boardWithDeadEntityHero, 3, 3, gameState);\r\n\t\t\t\tfor (const minion of boardWithDeadEntity) {\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\tminion,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tminion,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\t\tif (boardWithDeadEntity.length > 0) {\r\n\t\t\t\t\tconst target = pickRandom(boardWithDeadEntity.filter((e) => !e.reborn));\r\n\t\t\t\t\tif (!!target) {\r\n\t\t\t\t\t\tupdateReborn(\r\n\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\r\n\t\t\t\tconst randomUndead = gameState.cardsData.getRandomMinionForTribe(\r\n\t\t\t\t\tRace.UNDEAD,\r\n\t\t\t\t\tboardWithDeadEntityHero.tavernTier,\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [randomUndead], gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tavenger.avengeCurrent += avenger.avengeDefault;\r\n};\r\n\r\nconst handleHeroAvenge = (\r\n\tdeadEntity: BoardEntity,\r\n\theroPower: BgsHeroPower,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t// Not affected by Khadgar\r\n\tswitch (heroPower.cardId) {\r\n\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tconst broodmotherTokens = spawnEntities(\r\n\t\t\t\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\t\t\t\t1,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t\tbroodmotherTokens.forEach((token) => {\r\n\t\t\t\ttoken.attack = +heroPower.info;\r\n\t\t\t\ttoken.health = +heroPower.info;\r\n\t\t\t\ttoken.maxAttack = +heroPower.info;\r\n\t\t\t\ttoken.maxHealth = +heroPower.info;\r\n\t\t\t});\r\n\t\t\theroPower.info = +heroPower.info + 1;\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(...broodmotherTokens);\r\n\t\t\tbreak;\r\n\t}\r\n\theroPower.avengeCurrent += heroPower.avengeDefault;\r\n};\r\n\r\nexport interface AvengeInput {\r\n\treadonly board: BoardEntity[];\r\n\treadonly deadEntity: BoardEntity;\r\n\treadonly hero: BgsPlayerEntity;\r\n\treadonly otherBoard: BoardEntity[];\r\n\treadonly otherHero: BgsPlayerEntity;\r\n\treadonly gameState: FullGameState;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"avenge.js","sourceRoot":"","sources":["../../../src/simulation/avenge.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameTag, Race } from '@firestone-hs/reference-data';\r\nimport { BgsHeroPower, BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAvenge } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { grantRandomDivineShield } from '../keywords/divine-shield';\r\nimport { updateReborn } from '../keywords/reborn';\r\nimport { updateTaunt } from '../keywords/taunt';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { pickRandom } from '../services/utils';\r\nimport { isValidDeathrattleEnchantment } from '../simulate-bgs-battle';\r\nimport {\r\n\taddStatsToBoard,\r\n\tgetRandomMinionWithHighestHealth,\r\n\tgrantRandomStats,\r\n\thasCorrectTribe,\r\n\thasEntityMechanic,\r\n} from '../utils';\r\nimport { dealDamageToMinion } from './attack';\r\nimport { playBloodGemsOn } from './blood-gems';\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 applyAvengeEffects = (\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tentitiesSpawnedFromMinionDeath: BoardEntity[],\r\n): BoardEntity[] => {\r\n\tconst candidatesEntitiesSpawnedFromAvenge: BoardEntity[] = [];\r\n\t// updateAvengeCounters(boardWithDeadEntity, boardWithDeadEntityHero);\r\n\tconst avengers = boardWithDeadEntity\r\n\t\t.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0)\r\n\t\t// Get Tony to be processed first, because of the \"when turned golden, the minion ignores the death for the avenge counter\"\r\n\t\t// behavior\r\n\t\t.sort((a, b) => {\r\n\t\t\t// if (a.cardId === CardIds.TonyTwoTusk_BG21_031 || a.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t// \treturn -1;\r\n\t\t\t// }\r\n\t\t\t// if (b.cardId === CardIds.TonyTwoTusk_BG21_031 || b.cardId === CardIds.TonyTwoTusk_BG21_031_G) {\r\n\t\t\t// \treturn 1;\r\n\t\t\t// }\r\n\t\t\treturn 0;\r\n\t\t});\r\n\tfor (const avenger of avengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\t// console.log('updating dead entity avenge counter', boardWithDeadEntityHero.avengeCurrent, stringifySimpleCard(deadEntity, allCards));\r\n\tfor (const heroPower of boardWithDeadEntityHero.heroPowers) {\r\n\t\tconst heroAvenger = !!heroPower.avengeDefault && heroPower.avengeCurrent <= 0;\r\n\t\tif (heroAvenger) {\r\n\t\t\thandleHeroAvenge(\r\n\t\t\t\tdeadEntity,\r\n\t\t\t\theroPower,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tconst questRewardAvengers = boardWithDeadEntityHero.questRewardEntities.filter(\r\n\t\t(e) => !!e.avengeDefault && e.avengeCurrent <= 0,\r\n\t);\r\n\tfor (const avenger of questRewardAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\r\n\tconst trinketAvengers = boardWithDeadEntityHero.trinkets.filter((e) => !!e.avengeDefault && e.avengeCurrent <= 0);\r\n\tfor (const avenger of trinketAvengers) {\r\n\t\thandleAvenge(\r\n\t\t\tboardWithDeadEntity,\r\n\t\t\tboardWithDeadEntityHero,\r\n\t\t\tdeadEntity,\r\n\t\t\tdeadEntityIndexFromRight,\r\n\t\t\tavenger as BoardEntity,\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\t\totherBoard,\r\n\t\t\totherBoardHero,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t}\r\n\r\n\tperformEntitySpawns(\r\n\t\tcandidatesEntitiesSpawnedFromAvenge,\r\n\t\tboardWithDeadEntity,\r\n\t\tboardWithDeadEntityHero,\r\n\t\tdeadEntity,\r\n\t\tdeadEntityIndexFromRight,\r\n\t\totherBoard,\r\n\t\totherBoardHero,\r\n\t\tgameState,\r\n\t);\r\n\r\n\t// Not an avenge, but with Avenge timing\r\n\tconst hasDeathrattle =\r\n\t\thasEntityMechanic(deadEntity, GameTag.DEATHRATTLE, gameState.allCards) ||\r\n\t\tdeadEntity.enchantments.some((e) => isValidDeathrattleEnchantment(e.cardId));\r\n\tif (hasDeathrattle) {\r\n\t\t// These are apparently processed after Reborn is triggered\r\n\t\t// http://replays.firestoneapp.com/?reviewId=5db9a191-ae9b-43a5-a072-0d460631d7a9&turn=23&action=12\r\n\t\t// UPDATE 2024-06-24: Multiple counterexamples of this, so I'm not sure exactly what is the right approach\r\n\t\t// I'm implementing the one that makes more sense to me; triggering after reborn is just too different\r\n\t\t// from what happens usually\r\n\t\t// However, we want to trigger it after all the spawns have been processed, so more or less an \"avenge\" timing?\r\n\t\t// Maybe even after that?\r\n\t\t// Update 2024-06-27 29.6.2: timing should stay the same\r\n\t\tboardWithDeadEntity\r\n\t\t\t.filter((e) => e.cardId === CardIds.GhoulAcabra_BG29_863 || e.cardId === CardIds.GhoulAcabra_BG29_863_G)\r\n\t\t\t.forEach((ghoul) => {\r\n\t\t\t\tconst buff = ghoul.cardId === CardIds.GhoulAcabra_BG29_863_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(ghoul, boardWithDeadEntity, boardWithDeadEntityHero, 2 * buff, 2 * buff, gameState);\r\n\t\t\t});\r\n\t}\r\n\r\n\treturn candidatesEntitiesSpawnedFromAvenge;\r\n};\r\n\r\nexport const updateAvengeCounters = (board: readonly BoardEntity[], boardWithDeadEntityHero: BgsPlayerEntity) => {\r\n\tfor (const entity of board) {\r\n\t\tif (!!entity.avengeDefault) {\r\n\t\t\tentity.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\tfor (const heroPower of boardWithDeadEntityHero.heroPowers) {\r\n\t\tif (!!heroPower.avengeDefault) {\r\n\t\t\theroPower.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const reward of boardWithDeadEntityHero.questRewardEntities) {\r\n\t\tif (!!reward.avengeDefault) {\r\n\t\t\treward.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const trinket of boardWithDeadEntityHero.trinkets) {\r\n\t\tif (!!trinket.avengeDefault) {\r\n\t\t\ttrinket.avengeCurrent -= 1;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAvenge = (\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\tdeadEntity: BoardEntity,\r\n\tdeadEntityIndexFromRight: number,\r\n\tavenger: BoardEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst avengeImpl = cardMappings[avenger.cardId];\r\n\tif (hasAvenge(avengeImpl)) {\r\n\t\tconst newSpawns = avengeImpl.avenge(avenger, {\r\n\t\t\tboard: boardWithDeadEntity,\r\n\t\t\thero: boardWithDeadEntityHero,\r\n\t\t\totherBoard: otherBoard,\r\n\t\t\totherHero: otherBoardHero,\r\n\t\t\tdeadEntity: deadEntity,\r\n\t\t\tgameState,\r\n\t\t});\r\n\t\tif (Array.isArray(newSpawns) && newSpawns?.length) {\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(...newSpawns);\r\n\t\t}\r\n\t} else {\r\n\t\t// Don't forget to update the avenge data in cards-data\r\n\t\tswitch (avenger.cardId) {\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\r\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\r\n\t\t\t\t// Only for Tavern\r\n\t\t\t\t// addStatsToBoard(\r\n\t\t\t\t// \tavenger,\r\n\t\t\t\t// \tboardWithDeadEntity,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tavenger.cardId === CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G ? 2 : 1,\r\n\t\t\t\t// \tgameState.allCards,\r\n\t\t\t\t// \tgameState.spectator,\r\n\t\t\t\t// );\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\t\tconst target1 = grantRandomStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t6,\r\n\t\t\t\t\t6,\r\n\t\t\t\t\tRace.BEAST,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tif (!!target1) {\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget1,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\r\n\t\t\t\tconst target2 = grantRandomStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t12,\r\n\t\t\t\t\t12,\r\n\t\t\t\t\tRace.BEAST,\r\n\t\t\t\t\ttrue,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tif (!!target2) {\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget2,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\r\n\t\t\t\tconst doomsayerCardsToAddQuantity = avenger.cardId === CardIds.ImpatientDoomsayer_BG21_007_G ? 2 : 1;\r\n\t\t\t\tconst doomsayerCardsToAdd = [];\r\n\t\t\t\tfor (let i = 0; i < doomsayerCardsToAddQuantity; i++) {\r\n\t\t\t\t\tdoomsayerCardsToAdd.push(pickRandom(gameState.cardsData.demonSpawns));\r\n\t\t\t\t}\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, doomsayerCardsToAdd, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Thorncaller_BG20_105:\r\n\t\t\tcase CardIds.Thorncaller_BG20_105_G:\r\n\t\t\t\tconst thorncallerToAddQuantity = avenger.cardId === CardIds.Thorncaller_BG20_105_G ? 2 : 1;\r\n\t\t\t\tconst thorncallerCardsToAdd = Array(thorncallerToAddQuantity).fill(CardIds.BloodGem);\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, thorncallerCardsToAdd, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.Sisefin_BG21_009:\r\n\t\t\t// case CardIds.Sisefin_BG21_009_G:\r\n\t\t\t// \tconst poisonousIterations = avenger.cardId === CardIds.Sisefin_BG21_009_G ? 2 : 1;\r\n\t\t\t// \tfor (let i = 0; i < poisonousIterations; i++) {\r\n\t\t\t// \t\tconst validTargets = boardWithDeadEntity.filter((e) => !e.poisonous && !e.venomous);\r\n\t\t\t// \t\tconst murloc = getRandomAliveMinion(validTargets, boardWithDeadEntityHero, Race.MURLOC, gameState);\r\n\t\t\t// \t\tif (murloc) {\r\n\t\t\t// \t\t\tupdateVenomous(\r\n\t\t\t// \t\t\t\tmurloc,\r\n\t\t\t// \t\t\t\ttrue,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t\tgameState,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t// \t\t\t\tavenger,\r\n\t\t\t// \t\t\t\tmurloc,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\t\t// This can be null if the avenge triggers when the last enemy minion dies as well\r\n\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\ttarget,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t5,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\t\tfor (let i = 0; i < 2; i++) {\r\n\t\t\t\t\tconst target = getRandomMinionWithHighestHealth(otherBoard);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t5,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\t// \tconst nonGoldenMinions = boardWithDeadEntity\r\n\t\t\t// \t\t.filter((e) => e.entityId !== avenger.entityId)\r\n\t\t\t// \t\t.filter((e) => {\r\n\t\t\t// \t\t\tconst ref = gameState.allCards.getCard(e.cardId);\r\n\t\t\t// \t\t\treturn (\r\n\t\t\t// \t\t\t\t!!ref.battlegroundsPremiumDbfId &&\r\n\t\t\t// \t\t\t\t!!gameState.allCards.getCardFromDbfId(ref.battlegroundsPremiumDbfId).id\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t});\r\n\t\t\t// \tconst pirate = getRandomAliveMinion(nonGoldenMinions, boardWithDeadEntityHero, Race.PIRATE, gameState);\r\n\t\t\t// \tif (pirate) {\r\n\t\t\t// \t\tmakeMinionGolden(\r\n\t\t\t// \t\t\tpirate,\r\n\t\t\t// \t\t\tavenger,\r\n\t\t\t// \t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\totherBoard,\r\n\t\t\t// \t\t\totherBoardHero,\r\n\t\t\t// \t\t\tgameState,\r\n\t\t\t// \t\t);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// \tfor (let i = 0; i < 2; i++) {\r\n\t\t\t// \t\tconst nonGoldenMinions = boardWithDeadEntity.filter((e) => !isMinionGolden(e, gameState.allCards));\r\n\t\t\t// \t\tconst pirate = getRandomAliveMinion(\r\n\t\t\t// \t\t\tnonGoldenMinions,\r\n\t\t\t// \t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\tRace.PIRATE,\r\n\t\t\t// \t\t\tgameState,\r\n\t\t\t// \t\t);\r\n\t\t\t// \t\tif (pirate) {\r\n\t\t\t// \t\t\tmakeMinionGolden(\r\n\t\t\t// \t\t\t\tpirate,\r\n\t\t\t// \t\t\t\tavenger,\r\n\t\t\t// \t\t\t\tboardWithDeadEntity,\r\n\t\t\t// \t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t\t\totherBoard,\r\n\t\t\t// \t\t\t\totherBoardHero,\r\n\t\t\t// \t\t\t\tgameState,\r\n\t\t\t// \t\t\t);\r\n\t\t\t// \t\t}\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t\tconst abominationMultiplier = avenger.cardId === CardIds.HungeringAbomination_BG25_014_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tabominationMultiplier * 1,\r\n\t\t\t\t\tabominationMultiplier * 2,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\t// case CardIds.IceSickle:\r\n\t\t\t// \tgrantRandomStats(\r\n\t\t\t// \t\tavenger,\r\n\t\t\t// \t\tboardWithDeadEntityHero.hand.filter(\r\n\t\t\t// \t\t\t(e) => gameState.allCards.getCard(e.cardId).type?.toUpperCase() === CardType[CardType.MINION],\r\n\t\t\t// \t\t),\r\n\t\t\t// \t\tboardWithDeadEntityHero,\r\n\t\t\t// \t\t4,\r\n\t\t\t// \t\t0,\r\n\t\t\t// \t\tnull,\r\n\t\t\t// \t\ttrue,\r\n\t\t\t// \t\tgameState,\r\n\t\t\t// \t);\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\t\tconst highestHealthMinion = [...otherBoard].sort((a, b) => b.health - a.health)[0];\r\n\t\t\t\tdealDamageToMinion(\r\n\t\t\t\t\thighestHealthMinion,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\t10,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\thighestHealthMinion,\r\n\t\t\t\t\totherBoard,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\totherBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\t\tupdateReborn(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tupdateTaunt(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\t\tupdateReborn(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tupdateTaunt(avenger, true, boardWithDeadEntity, boardWithDeadEntityHero, otherBoardHero, gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\t\tconst phaerixLoops = avenger.cardId === CardIds.PhaerixWrathOfTheSun_BG28_403_G ? 2 : 1;\r\n\t\t\t\tfor (let i = 0; i < phaerixLoops; i++) {\r\n\t\t\t\t\tgrantRandomDivineShield(\r\n\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\t\tconst AugmentedLaborerLoops = avenger.cardId === CardIds.AugmentedLaborer_BG28_740_G ? 2 : 1;\r\n\t\t\t\tfor (let i = 0; i < AugmentedLaborerLoops; i++) {\r\n\t\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\t\tconst tumblingDisasterEntity = boardWithDeadEntityHero.questRewardEntities?.find(\r\n\t\t\t\t\t(e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505,\r\n\t\t\t\t);\r\n\t\t\t\tif (tumblingDisasterEntity) {\r\n\t\t\t\t\ttumblingDisasterEntity.scriptDataNum1 = (tumblingDisasterEntity.scriptDataNum1 ?? 0) + 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [null], gameState);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\tavenger.scriptDataNum1 = (avenger.scriptDataNum1 ?? 0) + 1;\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\t\tconst murglMkStats = avenger.cardId === CardIds.MurglMkIi_BG29_991_G ? 2 : 1;\r\n\t\t\t\taddStatsToBoard(\r\n\t\t\t\t\tavenger,\r\n\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\tmurglMkStats,\r\n\t\t\t\t\tmurglMkStats,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\t// Don't use utility methods, as we don't want triggers to proc\r\n\t\t\t\tfor (const e of boardWithDeadEntityHero.hand ?? []) {\r\n\t\t\t\t\te.attack += murglMkStats;\r\n\t\t\t\t\te.health += murglMkStats;\r\n\t\t\t\t\te.maxHealth += murglMkStats;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\t\tif (boardWithDeadEntity.length > 0) {\r\n\t\t\t\t\tconst target = pickRandom(boardWithDeadEntity.filter((e) => !e.reborn));\r\n\t\t\t\t\tif (!!target) {\r\n\t\t\t\t\t\tupdateReborn(\r\n\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\ttrue,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\tavenger,\r\n\t\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\t\t\t\totherBoardHero,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\r\n\t\t\t\tconst randomUndead = gameState.cardsData.getRandomMinionForTribe(\r\n\t\t\t\t\tRace.UNDEAD,\r\n\t\t\t\t\tboardWithDeadEntityHero.tavernTier,\r\n\t\t\t\t);\r\n\t\t\t\taddCardsInHand(boardWithDeadEntityHero, boardWithDeadEntity, [randomUndead], gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tavenger.avengeCurrent += avenger.avengeDefault;\r\n};\r\n\r\nconst handleHeroAvenge = (\r\n\tdeadEntity: BoardEntity,\r\n\theroPower: BgsHeroPower,\r\n\tboardWithDeadEntity: BoardEntity[],\r\n\tboardWithDeadEntityHero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherBoardHero: BgsPlayerEntity,\r\n\tcandidatesEntitiesSpawnedFromAvenge: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\t// Not affected by Khadgar\r\n\tswitch (heroPower.cardId) {\r\n\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tconst broodmotherTokens = spawnEntities(\r\n\t\t\t\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\t\t\t\t1,\r\n\t\t\t\tboardWithDeadEntity,\r\n\t\t\t\tboardWithDeadEntityHero,\r\n\t\t\t\totherBoard,\r\n\t\t\t\totherBoardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t\tdeadEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t);\r\n\t\t\tbroodmotherTokens.forEach((token) => {\r\n\t\t\t\ttoken.attack = +heroPower.info;\r\n\t\t\t\ttoken.health = +heroPower.info;\r\n\t\t\t\ttoken.maxAttack = +heroPower.info;\r\n\t\t\t\ttoken.maxHealth = +heroPower.info;\r\n\t\t\t});\r\n\t\t\theroPower.info = +heroPower.info + 1;\r\n\t\t\tcandidatesEntitiesSpawnedFromAvenge.push(...broodmotherTokens);\r\n\t\t\tbreak;\r\n\t}\r\n\theroPower.avengeCurrent += heroPower.avengeDefault;\r\n};\r\n\r\nexport interface AvengeInput {\r\n\treadonly board: BoardEntity[];\r\n\treadonly deadEntity: BoardEntity;\r\n\treadonly hero: BgsPlayerEntity;\r\n\treadonly otherBoard: BoardEntity[];\r\n\treadonly otherHero: BgsPlayerEntity;\r\n\treadonly gameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -3,6 +3,7 @@ import { BoardEntity } from '../board-entity';
|
|
|
3
3
|
import { FullGameState } from './internal-game-state';
|
|
4
4
|
export declare const playBloodGemsOn: (source: BoardEntity | BoardTrinket | BgsPlayerEntity, target: BoardEntity, quantity: number, board: BoardEntity[], hero: BgsPlayerEntity, otherBoard: BoardEntity[], otherHero: BgsPlayerEntity, gameState: FullGameState, registerTarget?: boolean) => void;
|
|
5
5
|
export declare const applyBloodGemEnchantment: (enchantmentCardId: string, target: BoardEntity, source: BoardEntity | BoardTrinket | BgsPlayerEntity, quantity: number, bloodGemAttack: number, bloodGemHealth: number) => void;
|
|
6
|
+
export declare const isBloodGem: (cardId: string) => boolean;
|
|
6
7
|
export interface PlayedBloodGemsOnMeInput {
|
|
7
8
|
board: BoardEntity[];
|
|
8
9
|
hero: BgsPlayerEntity;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.applyBloodGemEnchantment = exports.playBloodGemsOn = void 0;
|
|
3
|
+
exports.isBloodGem = exports.applyBloodGemEnchantment = exports.playBloodGemsOn = void 0;
|
|
4
4
|
const card_interface_1 = require("../cards/card.interface");
|
|
5
5
|
const _card_mappings_1 = require("../cards/impl/_card-mappings");
|
|
6
6
|
const divine_shield_1 = require("../keywords/divine-shield");
|
|
@@ -105,4 +105,14 @@ const applyBloodGemEnchantment = (enchantmentCardId, target, source, quantity, b
|
|
|
105
105
|
}
|
|
106
106
|
};
|
|
107
107
|
exports.applyBloodGemEnchantment = applyBloodGemEnchantment;
|
|
108
|
+
const isBloodGem = (cardId) => {
|
|
109
|
+
return (cardId === "BG20_GEM" ||
|
|
110
|
+
cardId === "BG20_GEM_Reborn" ||
|
|
111
|
+
cardId === "BG20_GEM_Reborn_G" ||
|
|
112
|
+
cardId === "BG20_GEM_Taunt" ||
|
|
113
|
+
cardId === "BG20_GEM_Taunt_G" ||
|
|
114
|
+
cardId === "BG20_GEM_DivineShield" ||
|
|
115
|
+
cardId === "BG20_GEM_DivineShield_G");
|
|
116
|
+
};
|
|
117
|
+
exports.isBloodGem = isBloodGem;
|
|
108
118
|
//# sourceMappingURL=blood-gems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blood-gems.js","sourceRoot":"","sources":["../../../src/simulation/blood-gems.ts"],"names":[],"mappings":";;;AAEA,4DAA0F;AAC1F,iEAA4D;AAC5D,6DAA+D;AAE/D,6CAAyD;AACzD,oCAAsD;AAEtD,mCAAsC;AAE/B,MAAM,eAAe,GAAG,CAC9B,MAAoD,EACpD,MAAmB,EACnB,QAAgB,EAChB,KAAoB,EACpB,IAAqB,EACrB,UAAyB,EACzB,SAA0B,EAC1B,SAAwB,EACxB,cAAc,GAAG,IAAI,EACpB,EAAE;;IACH,IAAI,cAAc,EAAE;QACnB,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3E;IAED,MAAM,kBAAkB,GACvB,CAAC;QACD,CAAC,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,mBAAmB,mCAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,yBAAgD,CAAC,CAAC,MAAM,GAAG,CAAC;QAChG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,0BAAuE,CAAC;aAC1G,MAAM;YACP,CAAC,CAAC;IACJ,MAAM,kBAAkB,GACvB,CAAC;QACD,CAAC,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,mBAAmB,mCAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,0BAAuE,CAAC;aAC1G,MAAM;YACP,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,eAAmC,CAAC,CAAC,MAAM,CAAC;IACvF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,iBAAqC,CAAC,CAAC,MAAM,CAAC;IAC/F,MAAM,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,kBAAkB,GAAG,UAAU,CAAC;IACvD,MAAM,cAAc,GAAG,kBAAkB,GAAG,UAAU,CAAC;IAEvD,IAAA,gCAAwB,eAEvB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,cAAc,EACd,cAAc,CACd,CAAC;IACF,IAAA,gCAAwB,gBAEvB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,cAAc,EACd,cAAc,CACd,CAAC;IAIF,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,cAAc,EAAE,QAAQ,GAAG,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IAI/G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAClC,QAAQ,MAAM,CAAC,MAAM,EAAE;YACtB,gBAAgC;YAChC;gBACC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;oBACzB,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC/D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACP,gBAAqC;YACrC;gBACC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAoC,IAAI,CAAC,CAAC,MAAM,iBAAsC,CAC/F,CAAC;gBACF,MAAM,YAAY,GAAG,IAAA,kBAAU,EAAC,aAAa,CAAC,CAAC;gBAC/C,IAAI,YAAY,EAAE;oBACjB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,IAAA,uBAAe,EACd,MAAM,EACN,YAAY,EACZ,UAAU,EACV,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,CACL,CAAC;iBACF;gBACD,MAAM;YACP,gBAAsC;YACtC;gBAEC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrF,MAAM,UAAU,GAAG,IAAA,kCAA0B,EAC5C,KAAK,CAAC,MAAM,CACX,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,eAAqC;oBAC7C,CAAC,CAAC,MAAM,iBAAuC,CAChD,EACD,IAAI,EACJ,SAAS,CACT,CAAC;gBACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;oBACnC,IAAA,uBAAe,EACd,MAAM,EACN,SAAS,EACT,eAAe,EACf,KAAK,EACL,IAAI,EACJ,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,CACL,CAAC;iBACF;gBACD,MAAM;YACP;gBACC,MAAM,uBAAuB,GAAG,6BAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC5D,IAAI,IAAA,uCAAsB,EAAC,uBAAuB,CAAC,EAAE;oBACpD,uBAAuB,CAAC,mBAAmB,CAAC,MAAM,EAAE;wBACnD,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,IAAI;wBACV,UAAU,EAAE,UAAU;wBACtB,SAAS,EAAE,SAAS;wBACpB,SAAS,EAAE,SAAS;qBACpB,CAAC,CAAC;iBACH;SACF;QAED,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;YAChC,MAAM,wBAAwB,GAAG,6BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClE,IAAI,IAAA,wCAAuB,EAAC,wBAAwB,CAAC,EAAE;gBACtD,wBAAwB,CAAC,oBAAoB,CAAC,WAAW,EAAE;oBAC1D,MAAM,EAAE,MAAM;oBACd,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,KAAK;oBACZ,IAAI,EAAE,IAAI;oBACV,UAAU,EAAE,UAAU;oBACtB,SAAS,EAAE,SAAS;oBACpB,SAAS,EAAE,SAAS;iBACpB,CAAC,CAAC;aACH;SACD;KACD;AACF,CAAC,CAAC;AAhJW,QAAA,eAAe,mBAgJ1B;AAEK,MAAM,wBAAwB,GAAG,CACvC,iBAAyB,EACzB,MAAmB,EACnB,MAAoD,EACpD,QAAgB,EAChB,cAAsB,EACtB,cAAsB,EACrB,EAAE;IACH,IAAI,WAAW,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;IACvF,IAAI,CAAC,WAAW,EAAE;QACjB,WAAW,GAAG;YACb,MAAM,EAAE,iBAAiB;YACzB,cAAc,EAAE,MAAM,CAAC,QAAQ;YAC/B,MAAM,EAAE,CAAC;YACT,iBAAiB,EAAE,CAAC;YACpB,iBAAiB,EAAE,CAAC;SACpB,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACtC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;QAClC,WAAW,CAAC,iBAAiB,IAAI,cAAc,CAAC;QAChD,WAAW,CAAC,iBAAiB,IAAI,cAAc,CAAC;KAChD;AACF,CAAC,CAAC;AAvBW,QAAA,wBAAwB,4BAuBnC","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasPlayedBloodGemsOnAny, hasPlayedBloodGemsOnMe } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { findLast, pickRandom } from '../services/utils';\r\nimport { getMinionsOfDifferentTypes } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const playBloodGemsOn = (\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity,\r\n\ttarget: BoardEntity,\r\n\tquantity: number,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tregisterTarget = true,\r\n) => {\r\n\tif (registerTarget) {\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n\r\n\tconst bloodGemBaseAttack =\r\n\t\t1 +\r\n\t\t(hero.globalInfo?.BloodGemAttackBonus ?? 0) +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_BG30_MagicItem_988).length * 3 +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_GreatBoarStickerToken_BG30_MagicItem_988t)\r\n\t\t\t.length *\r\n\t\t\t2;\r\n\tconst bloodGemBaseHealth =\r\n\t\t1 +\r\n\t\t(hero.globalInfo?.BloodGemHealthBonus ?? 0) +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_GreatBoarStickerToken_BG30_MagicItem_988t)\r\n\t\t\t.length *\r\n\t\t\t2;\r\n\r\n\tconst crones = board.filter((e) => e.cardId === CardIds.NeedlingCrone_BG32_432).length;\r\n\tconst goldenCrones = board.filter((e) => e.cardId === CardIds.NeedlingCrone_BG32_432_G).length;\r\n\tconst cronesMult = goldenCrones > 0 ? 3 : crones > 0 ? 2 : 1;\r\n\tconst bloodGemAttack = bloodGemBaseAttack * cronesMult;\r\n\tconst bloodGemHealth = bloodGemBaseHealth * cronesMult;\r\n\r\n\tapplyBloodGemEnchantment(\r\n\t\tCardIds.BloodGem_BloodGemEnchantment,\r\n\t\ttarget,\r\n\t\tsource,\r\n\t\tquantity,\r\n\t\tbloodGemAttack,\r\n\t\tbloodGemHealth,\r\n\t);\r\n\tapplyBloodGemEnchantment(\r\n\t\tCardIds.BloodGem_BloodGemsEnchantment,\r\n\t\ttarget,\r\n\t\tsource,\r\n\t\tquantity,\r\n\t\tbloodGemAttack,\r\n\t\tbloodGemHealth,\r\n\t);\r\n\r\n\t// This seems to be a single \"modifyStats\" call\r\n\t// 33.6 https://replays.firestoneapp.com/?reviewId=51f93537-182d-4fb8-bf41-1b4429341e01&turn=19&action=3\r\n\tmodifyStats(target, null, quantity * bloodGemAttack, quantity * bloodGemHealth, board, hero, gameState, false);\r\n\t// for (let i = 0; i < quantity; i++) {\r\n\t// }\r\n\r\n\tfor (let i = 0; i < quantity; i++) {\r\n\t\tswitch (target.cardId) {\r\n\t\t\tcase CardIds.ToughTusk_BG20_102:\r\n\t\t\tcase CardIds.ToughTusk_BG20_102_G:\r\n\t\t\t\tif (!target.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(target, board, hero, null, true, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(target, target, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GeomagusRoogug_BG28_583:\r\n\t\t\tcase CardIds.GeomagusRoogug_BG28_583_G:\r\n\t\t\t\tconst roogugTargets = board.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId !== CardIds.GeomagusRoogug_BG28_583 && e.cardId !== CardIds.GeomagusRoogug_BG28_583_G,\r\n\t\t\t\t);\r\n\t\t\t\tconst roogugTarget = pickRandom(roogugTargets);\r\n\t\t\t\tif (roogugTarget) {\r\n\t\t\t\t\tconst roogugBuff = target.cardId === CardIds.GeomagusRoogug_BG28_583_G ? 2 : 1;\r\n\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\troogugTarget,\r\n\t\t\t\t\t\troogugBuff,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.AggemThorncurse_BG20_302:\r\n\t\t\tcase CardIds.AggemThorncurse_BG20_302_G:\r\n\t\t\t\t// console.debug('playing blood gem on Aggem Thorncurse', target.cardId);\r\n\t\t\t\tconst aggemGemsToPlay = target.cardId === CardIds.AggemThorncurse_BG20_302_G ? 2 : 1;\r\n\t\t\t\tconst candidates = getMinionsOfDifferentTypes(\r\n\t\t\t\t\tboard.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\te.cardId !== CardIds.AggemThorncurse_BG20_302 &&\r\n\t\t\t\t\t\t\te.cardId !== CardIds.AggemThorncurse_BG20_302_G,\r\n\t\t\t\t\t),\r\n\t\t\t\t\thero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tfor (const candidate of candidates) {\r\n\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tcandidate,\r\n\t\t\t\t\t\taggemGemsToPlay,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tconst playedBloodGemsOnMeImpl = cardMappings[target.cardId];\r\n\t\t\t\tif (hasPlayedBloodGemsOnMe(playedBloodGemsOnMeImpl)) {\r\n\t\t\t\t\tplayedBloodGemsOnMeImpl.playedBloodGemsOnMe(target, {\r\n\t\t\t\t\t\tboard: board,\r\n\t\t\t\t\t\thero: hero,\r\n\t\t\t\t\t\totherBoard: otherBoard,\r\n\t\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const boardEntity of board) {\r\n\t\t\tconst playedBloodGemsOnAnyImpl = cardMappings[boardEntity.cardId];\r\n\t\t\tif (hasPlayedBloodGemsOnAny(playedBloodGemsOnAnyImpl)) {\r\n\t\t\t\tplayedBloodGemsOnAnyImpl.playedBloodGemsOnAny(boardEntity, {\r\n\t\t\t\t\tsource: source,\r\n\t\t\t\t\ttarget: target,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\totherBoard: otherBoard,\r\n\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const applyBloodGemEnchantment = (\r\n\tenchantmentCardId: string,\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity,\r\n\tquantity: number,\r\n\tbloodGemAttack: number,\r\n\tbloodGemHealth: number,\r\n) => {\r\n\tlet enchantment = findLast(target.enchantments, (e) => e.cardId === enchantmentCardId);\r\n\tif (!enchantment) {\r\n\t\tenchantment = {\r\n\t\t\tcardId: enchantmentCardId,\r\n\t\t\toriginEntityId: source.entityId,\r\n\t\t\ttiming: 0,\r\n\t\t\ttagScriptDataNum1: 0,\r\n\t\t\ttagScriptDataNum2: 0,\r\n\t\t};\r\n\t\ttarget.enchantments.push(enchantment);\r\n\t}\r\n\tfor (let i = 0; i < quantity; i++) {\r\n\t\tenchantment.tagScriptDataNum1 += bloodGemAttack;\r\n\t\tenchantment.tagScriptDataNum2 += bloodGemHealth;\r\n\t}\r\n};\r\n\r\nexport interface PlayedBloodGemsOnMeInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface PlayedBloodGemsOnAnyInput {\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\r\n\ttarget: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"blood-gems.js","sourceRoot":"","sources":["../../../src/simulation/blood-gems.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BoardTrinket } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasPlayedBloodGemsOnAny, hasPlayedBloodGemsOnMe } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { findLast, pickRandom } from '../services/utils';\r\nimport { getMinionsOfDifferentTypes } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const playBloodGemsOn = (\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity,\r\n\ttarget: BoardEntity,\r\n\tquantity: number,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\totherBoard: BoardEntity[],\r\n\totherHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tregisterTarget = true,\r\n) => {\r\n\tif (registerTarget) {\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n\r\n\tconst bloodGemBaseAttack =\r\n\t\t1 +\r\n\t\t(hero.globalInfo?.BloodGemAttackBonus ?? 0) +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_BG30_MagicItem_988).length * 3 +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_GreatBoarStickerToken_BG30_MagicItem_988t)\r\n\t\t\t.length *\r\n\t\t\t2;\r\n\tconst bloodGemBaseHealth =\r\n\t\t1 +\r\n\t\t(hero.globalInfo?.BloodGemHealthBonus ?? 0) +\r\n\t\thero.trinkets.filter((t) => t.cardId === CardIds.GreatBoarSticker_GreatBoarStickerToken_BG30_MagicItem_988t)\r\n\t\t\t.length *\r\n\t\t\t2;\r\n\r\n\tconst crones = board.filter((e) => e.cardId === CardIds.NeedlingCrone_BG32_432).length;\r\n\tconst goldenCrones = board.filter((e) => e.cardId === CardIds.NeedlingCrone_BG32_432_G).length;\r\n\tconst cronesMult = goldenCrones > 0 ? 3 : crones > 0 ? 2 : 1;\r\n\tconst bloodGemAttack = bloodGemBaseAttack * cronesMult;\r\n\tconst bloodGemHealth = bloodGemBaseHealth * cronesMult;\r\n\r\n\tapplyBloodGemEnchantment(\r\n\t\tCardIds.BloodGem_BloodGemEnchantment,\r\n\t\ttarget,\r\n\t\tsource,\r\n\t\tquantity,\r\n\t\tbloodGemAttack,\r\n\t\tbloodGemHealth,\r\n\t);\r\n\tapplyBloodGemEnchantment(\r\n\t\tCardIds.BloodGem_BloodGemsEnchantment,\r\n\t\ttarget,\r\n\t\tsource,\r\n\t\tquantity,\r\n\t\tbloodGemAttack,\r\n\t\tbloodGemHealth,\r\n\t);\r\n\r\n\t// This seems to be a single \"modifyStats\" call\r\n\t// 33.6 https://replays.firestoneapp.com/?reviewId=51f93537-182d-4fb8-bf41-1b4429341e01&turn=19&action=3\r\n\tmodifyStats(target, null, quantity * bloodGemAttack, quantity * bloodGemHealth, board, hero, gameState, false);\r\n\t// for (let i = 0; i < quantity; i++) {\r\n\t// }\r\n\r\n\tfor (let i = 0; i < quantity; i++) {\r\n\t\tswitch (target.cardId) {\r\n\t\t\tcase CardIds.ToughTusk_BG20_102:\r\n\t\t\tcase CardIds.ToughTusk_BG20_102_G:\r\n\t\t\t\tif (!target.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(target, board, hero, null, true, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(target, target, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.GeomagusRoogug_BG28_583:\r\n\t\t\tcase CardIds.GeomagusRoogug_BG28_583_G:\r\n\t\t\t\tconst roogugTargets = board.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId !== CardIds.GeomagusRoogug_BG28_583 && e.cardId !== CardIds.GeomagusRoogug_BG28_583_G,\r\n\t\t\t\t);\r\n\t\t\t\tconst roogugTarget = pickRandom(roogugTargets);\r\n\t\t\t\tif (roogugTarget) {\r\n\t\t\t\t\tconst roogugBuff = target.cardId === CardIds.GeomagusRoogug_BG28_583_G ? 2 : 1;\r\n\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\troogugTarget,\r\n\t\t\t\t\t\troogugBuff,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.AggemThorncurse_BG20_302:\r\n\t\t\tcase CardIds.AggemThorncurse_BG20_302_G:\r\n\t\t\t\t// console.debug('playing blood gem on Aggem Thorncurse', target.cardId);\r\n\t\t\t\tconst aggemGemsToPlay = target.cardId === CardIds.AggemThorncurse_BG20_302_G ? 2 : 1;\r\n\t\t\t\tconst candidates = getMinionsOfDifferentTypes(\r\n\t\t\t\t\tboard.filter(\r\n\t\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\t\te.cardId !== CardIds.AggemThorncurse_BG20_302 &&\r\n\t\t\t\t\t\t\te.cardId !== CardIds.AggemThorncurse_BG20_302_G,\r\n\t\t\t\t\t),\r\n\t\t\t\t\thero,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t);\r\n\t\t\t\tfor (const candidate of candidates) {\r\n\t\t\t\t\tplayBloodGemsOn(\r\n\t\t\t\t\t\ttarget,\r\n\t\t\t\t\t\tcandidate,\r\n\t\t\t\t\t\taggemGemsToPlay,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\totherBoard,\r\n\t\t\t\t\t\totherHero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t\tfalse,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tconst playedBloodGemsOnMeImpl = cardMappings[target.cardId];\r\n\t\t\t\tif (hasPlayedBloodGemsOnMe(playedBloodGemsOnMeImpl)) {\r\n\t\t\t\t\tplayedBloodGemsOnMeImpl.playedBloodGemsOnMe(target, {\r\n\t\t\t\t\t\tboard: board,\r\n\t\t\t\t\t\thero: hero,\r\n\t\t\t\t\t\totherBoard: otherBoard,\r\n\t\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (const boardEntity of board) {\r\n\t\t\tconst playedBloodGemsOnAnyImpl = cardMappings[boardEntity.cardId];\r\n\t\t\tif (hasPlayedBloodGemsOnAny(playedBloodGemsOnAnyImpl)) {\r\n\t\t\t\tplayedBloodGemsOnAnyImpl.playedBloodGemsOnAny(boardEntity, {\r\n\t\t\t\t\tsource: source,\r\n\t\t\t\t\ttarget: target,\r\n\t\t\t\t\tboard: board,\r\n\t\t\t\t\thero: hero,\r\n\t\t\t\t\totherBoard: otherBoard,\r\n\t\t\t\t\totherHero: otherHero,\r\n\t\t\t\t\tgameState: gameState,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const applyBloodGemEnchantment = (\r\n\tenchantmentCardId: string,\r\n\ttarget: BoardEntity,\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity,\r\n\tquantity: number,\r\n\tbloodGemAttack: number,\r\n\tbloodGemHealth: number,\r\n) => {\r\n\tlet enchantment = findLast(target.enchantments, (e) => e.cardId === enchantmentCardId);\r\n\tif (!enchantment) {\r\n\t\tenchantment = {\r\n\t\t\tcardId: enchantmentCardId,\r\n\t\t\toriginEntityId: source.entityId,\r\n\t\t\ttiming: 0,\r\n\t\t\ttagScriptDataNum1: 0,\r\n\t\t\ttagScriptDataNum2: 0,\r\n\t\t};\r\n\t\ttarget.enchantments.push(enchantment);\r\n\t}\r\n\tfor (let i = 0; i < quantity; i++) {\r\n\t\tenchantment.tagScriptDataNum1 += bloodGemAttack;\r\n\t\tenchantment.tagScriptDataNum2 += bloodGemHealth;\r\n\t}\r\n};\r\n\r\nexport const isBloodGem = (cardId: string) => {\r\n\treturn (\r\n\t\tcardId === CardIds.BloodGem ||\r\n\t\tcardId === CardIds.BloodGem_BG20_GEM_Reborn ||\r\n\t\tcardId === CardIds.BloodGem_BG20_GEM_Reborn_G ||\r\n\t\tcardId === CardIds.BloodGemToken_BG20_GEM_Taunt ||\r\n\t\tcardId === CardIds.BloodGemToken_BG20_GEM_Taunt_G ||\r\n\t\tcardId === CardIds.BloodGem_BG20_GEM_DivineShield ||\r\n\t\tcardId === CardIds.BloodGem_BG20_GEM_DivineShield_G\r\n\t);\r\n};\r\n\r\nexport interface PlayedBloodGemsOnMeInput {\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface PlayedBloodGemsOnAnyInput {\r\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\r\n\ttarget: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\totherBoard: BoardEntity[];\r\n\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.removeCardFromHand = exports.addCardsInHand = void 0;
|
|
4
|
-
const temp_card_ids_1 = require("../temp-card-ids");
|
|
5
4
|
const card_interface_1 = require("../cards/card.interface");
|
|
6
5
|
const _card_mappings_1 = require("../cards/impl/_card-mappings");
|
|
7
6
|
const utils_1 = require("../services/utils");
|
|
8
7
|
const utils_2 = require("../utils");
|
|
8
|
+
const blood_gems_1 = require("./blood-gems");
|
|
9
9
|
const quest_1 = require("./quest");
|
|
10
10
|
const stats_1 = require("./stats");
|
|
11
11
|
const addCardsInHand = (playerEntity, board, cardsAdded, gameState) => {
|
|
@@ -20,9 +20,7 @@ const addCardsInHand = (playerEntity, board, cardsAdded, gameState) => {
|
|
|
20
20
|
? (0, utils_2.buildSingleBoardEntity)(cardAdded, playerEntity, board, gameState.allCards, playerEntity.friendly, gameState.sharedState.currentEntityId++, false, gameState.cardsData, gameState.sharedState, cardAdded)
|
|
21
21
|
: (0, utils_2.buildSingleBoardEntity)(cardAdded, playerEntity, board, gameState.allCards, playerEntity.friendly, gameState.sharedState.currentEntityId++, false, gameState.cardsData, gameState.sharedState, null);
|
|
22
22
|
cardsThatWillBeAdded.push(cardToAdd);
|
|
23
|
-
if (cardToAdd.cardId
|
|
24
|
-
cardToAdd.cardId === temp_card_ids_1.TempCardIds.BloodGemQuilboarReborn ||
|
|
25
|
-
cardToAdd.cardId === temp_card_ids_1.TempCardIds.BloodGemQuilboarReborn_G) {
|
|
23
|
+
if ((0, blood_gems_1.isBloodGem)(cardToAdd.cardId)) {
|
|
26
24
|
for (let i = 0; i < multiplier; i++) {
|
|
27
25
|
cardsThatWillBeAdded.push({ ...cardToAdd });
|
|
28
26
|
}
|
|
@@ -54,6 +52,7 @@ const onCardAddedToHandQuest = (playerEntity, card, board, gameState) => {
|
|
|
54
52
|
}
|
|
55
53
|
};
|
|
56
54
|
const onCardAddedToHandMinion = (playerEntity, card, board, gameState) => {
|
|
55
|
+
var _a;
|
|
57
56
|
for (const entity of board) {
|
|
58
57
|
const onCardAddedToHandImpl = _card_mappings_1.cardMappings[entity.cardId];
|
|
59
58
|
if ((0, card_interface_1.hasOnCardAddedToHand)(onCardAddedToHandImpl)) {
|
|
@@ -65,6 +64,17 @@ const onCardAddedToHandMinion = (playerEntity, card, board, gameState) => {
|
|
|
65
64
|
});
|
|
66
65
|
}
|
|
67
66
|
}
|
|
67
|
+
for (const trinket of (_a = playerEntity.trinkets) !== null && _a !== void 0 ? _a : []) {
|
|
68
|
+
const onCardAddedToHandImpl = _card_mappings_1.cardMappings[trinket.cardId];
|
|
69
|
+
if ((0, card_interface_1.hasOnCardAddedToHand)(onCardAddedToHandImpl)) {
|
|
70
|
+
onCardAddedToHandImpl.onCardAddedToHand(trinket, {
|
|
71
|
+
addedCard: card,
|
|
72
|
+
board: board,
|
|
73
|
+
hero: playerEntity,
|
|
74
|
+
gameState: gameState,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
68
78
|
const thornCaptains = board.filter((e) => e.cardId === "BG25_045" || e.cardId === "BG25_045_G");
|
|
69
79
|
thornCaptains.forEach((captain) => {
|
|
70
80
|
(0, stats_1.modifyStats)(captain, captain, 0, captain.cardId === "BG25_045_G" ? 2 : 1, board, playerEntity, gameState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-in-hand.js","sourceRoot":"","sources":["../../../src/simulation/cards-in-hand.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../services/card-ids';\r\nimport { TempCardIds } from '../temp-card-ids';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnCardAddedToHand } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { pickRandom } from '../services/utils';\r\nimport { buildSingleBoardEntity } from '../utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tcardsAdded: readonly any[],\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst previousCardsInHand = playerEntity.hand?.length ?? 0;\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy_G);\r\n\tconst multiplier = sages.length + 2 * sagesGolden.length;\r\n\r\n\tconst cardsThatWillBeAdded: BoardEntity[] = [];\r\n\tfor (const cardAdded of cardsAdded) {\r\n\t\tconst cardToAdd: BoardEntity = (cardAdded as BoardEntity)?.cardId\r\n\t\t\t? buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tcardAdded,\r\n\t\t\t )\r\n\t\t\t: buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tnull,\r\n\t\t\t );\r\n\t\tcardsThatWillBeAdded.push(cardToAdd);\r\n\t\tif (\r\n\t\t\tcardToAdd.cardId === CardIds.BloodGem ||\r\n\t\t\tcardToAdd.cardId === TempCardIds.BloodGemQuilboarReborn ||\r\n\t\t\tcardToAdd.cardId === TempCardIds.BloodGemQuilboarReborn_G\r\n\t\t) {\r\n\t\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\t\tcardsThatWillBeAdded.push({ ...cardToAdd });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < cardsThatWillBeAdded.length; i++) {\r\n\t\tif (playerEntity.hand.length >= 10) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tplayerEntity.hand.push(cardsThatWillBeAdded[i]);\r\n\t\tonCardAddedToHand(playerEntity, cardsThatWillBeAdded[i], board, gameState);\r\n\t}\r\n\r\n\treturn cardsThatWillBeAdded;\r\n};\r\n\r\nconst onCardAddedToHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tonCardAddedToHandMinion(playerEntity, card, board, gameState);\r\n\tonCardAddedToHandQuest(playerEntity, card, board, gameState);\r\n};\r\n\r\nconst onCardAddedToHandQuest = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = playerEntity.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.DustForPrints:\r\n\t\t\t\tonQuestProgressUpdated(playerEntity, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst onCardAddedToHandMinion = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst onCardAddedToHandImpl = cardMappings[entity.cardId];\r\n\t\tif (hasOnCardAddedToHand(onCardAddedToHandImpl)) {\r\n\t\t\tonCardAddedToHandImpl.onCardAddedToHand(entity, {\r\n\t\t\t\taddedCard: card,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: playerEntity,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tconst thornCaptains = board.filter(\r\n\t\t(e) => e.cardId === CardIds.Thorncaptain_BG25_045 || e.cardId === CardIds.Thorncaptain_BG25_045_G,\r\n\t);\r\n\tthornCaptains.forEach((captain) => {\r\n\t\tmodifyStats(\r\n\t\t\tcaptain,\r\n\t\t\tcaptain,\r\n\t\t\t0,\r\n\t\t\tcaptain.cardId === CardIds.Thorncaptain_BG25_045_G ? 2 : 1,\r\n\t\t\tboard,\r\n\t\t\tplayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t});\r\n};\r\n\r\nexport const removeCardFromHand = (playerEntity: BgsPlayerEntity, card: BoardEntity): void => {\r\n\tlet cardToRemove: BoardEntity;\r\n\tif (card?.entityId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.entityId !== card.entityId);\r\n\t} else if (card?.cardId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.cardId === card.cardId);\r\n\t} else {\r\n\t\t// Remove a single random card in hand that doesn't have an entityId\r\n\t\tcardToRemove =\r\n\t\t\tpickRandom(playerEntity.hand.filter((c) => !c?.entityId && !c?.cardId)) ?? pickRandom(playerEntity.hand);\r\n\t}\r\n\t// Remove the first occurrence of the card from playerEntity.cardsInHand, even if it is null\r\n\tconst index = playerEntity.hand.indexOf(cardToRemove);\r\n\tif (index !== -1) {\r\n\t\tplayerEntity.hand.splice(index, 1);\r\n\t}\r\n};\r\n\r\nexport interface OnCardAddedToHandInput {\r\n\taddedCard: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"cards-in-hand.js","sourceRoot":"","sources":["../../../src/simulation/cards-in-hand.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasOnCardAddedToHand } from '../cards/card.interface';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { pickRandom } from '../services/utils';\r\nimport { buildSingleBoardEntity } from '../utils';\r\nimport { isBloodGem } from './blood-gems';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const addCardsInHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tboard: BoardEntity[],\r\n\tcardsAdded: readonly any[],\r\n\tgameState: FullGameState,\r\n): BoardEntity[] => {\r\n\tconst previousCardsInHand = playerEntity.hand?.length ?? 0;\r\n\tconst sages = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy);\r\n\tconst sagesGolden = board.filter((e) => e.cardId === CardIds.DeathsHeadSage_BG20_HERO_103_Buddy_G);\r\n\tconst multiplier = sages.length + 2 * sagesGolden.length;\r\n\r\n\tconst cardsThatWillBeAdded: BoardEntity[] = [];\r\n\tfor (const cardAdded of cardsAdded) {\r\n\t\tconst cardToAdd: BoardEntity = (cardAdded as BoardEntity)?.cardId\r\n\t\t\t? buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tcardAdded,\r\n\t\t\t )\r\n\t\t\t: buildSingleBoardEntity(\r\n\t\t\t\t\tcardAdded as string,\r\n\t\t\t\t\tplayerEntity,\r\n\t\t\t\t\tboard,\r\n\t\t\t\t\tgameState.allCards,\r\n\t\t\t\t\tplayerEntity.friendly,\r\n\t\t\t\t\tgameState.sharedState.currentEntityId++,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t\tgameState.cardsData,\r\n\t\t\t\t\tgameState.sharedState,\r\n\t\t\t\t\tnull,\r\n\t\t\t );\r\n\t\tcardsThatWillBeAdded.push(cardToAdd);\r\n\t\tif (isBloodGem(cardToAdd.cardId)) {\r\n\t\t\tfor (let i = 0; i < multiplier; i++) {\r\n\t\t\t\tcardsThatWillBeAdded.push({ ...cardToAdd });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < cardsThatWillBeAdded.length; i++) {\r\n\t\tif (playerEntity.hand.length >= 10) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tplayerEntity.hand.push(cardsThatWillBeAdded[i]);\r\n\t\tonCardAddedToHand(playerEntity, cardsThatWillBeAdded[i], board, gameState);\r\n\t}\r\n\r\n\treturn cardsThatWillBeAdded;\r\n};\r\n\r\nconst onCardAddedToHand = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tonCardAddedToHandMinion(playerEntity, card, board, gameState);\r\n\tonCardAddedToHandQuest(playerEntity, card, board, gameState);\r\n};\r\n\r\nconst onCardAddedToHandQuest = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = playerEntity.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.DustForPrints:\r\n\t\t\t\tonQuestProgressUpdated(playerEntity, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst onCardAddedToHandMinion = (\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tcard: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tgameState: FullGameState,\r\n) => {\r\n\tfor (const entity of board) {\r\n\t\tconst onCardAddedToHandImpl = cardMappings[entity.cardId];\r\n\t\tif (hasOnCardAddedToHand(onCardAddedToHandImpl)) {\r\n\t\t\tonCardAddedToHandImpl.onCardAddedToHand(entity, {\r\n\t\t\t\taddedCard: card,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: playerEntity,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tfor (const trinket of playerEntity.trinkets ?? []) {\r\n\t\tconst onCardAddedToHandImpl = cardMappings[trinket.cardId];\r\n\t\tif (hasOnCardAddedToHand(onCardAddedToHandImpl)) {\r\n\t\t\tonCardAddedToHandImpl.onCardAddedToHand(trinket, {\r\n\t\t\t\taddedCard: card,\r\n\t\t\t\tboard: board,\r\n\t\t\t\thero: playerEntity,\r\n\t\t\t\tgameState: gameState,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tconst thornCaptains = board.filter(\r\n\t\t(e) => e.cardId === CardIds.Thorncaptain_BG25_045 || e.cardId === CardIds.Thorncaptain_BG25_045_G,\r\n\t);\r\n\tthornCaptains.forEach((captain) => {\r\n\t\tmodifyStats(\r\n\t\t\tcaptain,\r\n\t\t\tcaptain,\r\n\t\t\t0,\r\n\t\t\tcaptain.cardId === CardIds.Thorncaptain_BG25_045_G ? 2 : 1,\r\n\t\t\tboard,\r\n\t\t\tplayerEntity,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t});\r\n};\r\n\r\nexport const removeCardFromHand = (playerEntity: BgsPlayerEntity, card: BoardEntity): void => {\r\n\tlet cardToRemove: BoardEntity;\r\n\tif (card?.entityId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.entityId !== card.entityId);\r\n\t} else if (card?.cardId) {\r\n\t\tcardToRemove = playerEntity.hand.find((c) => c?.cardId === card.cardId);\r\n\t} else {\r\n\t\t// Remove a single random card in hand that doesn't have an entityId\r\n\t\tcardToRemove =\r\n\t\t\tpickRandom(playerEntity.hand.filter((c) => !c?.entityId && !c?.cardId)) ?? pickRandom(playerEntity.hand);\r\n\t}\r\n\t// Remove the first occurrence of the card from playerEntity.cardsInHand, even if it is null\r\n\tconst index = playerEntity.hand.indexOf(cardToRemove);\r\n\tif (index !== -1) {\r\n\t\tplayerEntity.hand.splice(index, 1);\r\n\t}\r\n};\r\n\r\nexport interface OnCardAddedToHandInput {\r\n\taddedCard: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -10,3 +10,9 @@ export interface AfterDealDamageInput {
|
|
|
10
10
|
hero: BgsPlayerEntity;
|
|
11
11
|
gameState: FullGameState;
|
|
12
12
|
}
|
|
13
|
+
export interface AfterFriendlyMinionDamagedInput {
|
|
14
|
+
damagedEntity: BoardEntity;
|
|
15
|
+
board: BoardEntity[];
|
|
16
|
+
hero: BgsPlayerEntity;
|
|
17
|
+
gameState: FullGameState;
|
|
18
|
+
}
|
|
@@ -107,6 +107,7 @@ const onEntityDamaged = (damagedEntity, board, hero, otherBoard, otherHero, dama
|
|
|
107
107
|
};
|
|
108
108
|
exports.onEntityDamaged = onEntityDamaged;
|
|
109
109
|
const handleOtherEntityEffects = (entity, board, hero, otherBoard, otherHero, spawnedEntities, gameState) => {
|
|
110
|
+
var _a;
|
|
110
111
|
if ((0, utils_2.hasCorrectTribe)(entity, hero, reference_data_1.Race.BEAST, gameState.anomalies, gameState.allCards)) {
|
|
111
112
|
board
|
|
112
113
|
.filter((e) => e.cardId === "BG29_806" ||
|
|
@@ -126,15 +127,16 @@ const handleOtherEntityEffects = (entity, board, hero, otherBoard, otherHero, sp
|
|
|
126
127
|
(0, stats_1.modifyStats)(e, e, 0, 2 * stats, board, hero, gameState);
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
|
-
hero.trinkets
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
130
|
+
for (const trinket of (_a = hero.trinkets) !== null && _a !== void 0 ? _a : []) {
|
|
131
|
+
const trinketImpl = _card_mappings_1.cardMappings[trinket.cardId];
|
|
132
|
+
if ((0, card_interface_1.hasAfterFriendlyMinionDamagedTrinket)(trinketImpl)) {
|
|
133
|
+
trinketImpl.afterFriendlyMinionDamaged(trinket, {
|
|
134
|
+
damagedEntity: entity,
|
|
135
|
+
board,
|
|
136
|
+
hero,
|
|
137
|
+
gameState,
|
|
138
|
+
});
|
|
137
139
|
}
|
|
138
|
-
}
|
|
140
|
+
}
|
|
139
141
|
};
|
|
140
142
|
//# sourceMappingURL=damage-effects.js.map
|