@firestone-hs/simulate-bgs-battle 1.1.653 → 1.1.656
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bgs-player-entity.d.ts +3 -0
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +50 -5
- package/dist/cards/card.interface.js +17 -3
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.d.ts +9 -1
- package/dist/cards/cards-data.js +19 -7
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +380 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/azerite-empowerment.d.ts +2 -2
- package/dist/cards/impl/bg-spell/azerite-empowerment.js +1 -1
- package/dist/cards/impl/bg-spell/azerite-empowerment.js.map +1 -1
- package/dist/cards/impl/bg-spell/blood-gem-barrage.d.ts +2 -0
- package/dist/cards/impl/bg-spell/blood-gem-barrage.js +9 -0
- package/dist/cards/impl/bg-spell/blood-gem-barrage.js.map +1 -0
- package/dist/cards/impl/bg-spell/brood-of-nozdormu.d.ts +2 -0
- package/dist/cards/impl/bg-spell/brood-of-nozdormu.js +16 -0
- package/dist/cards/impl/bg-spell/brood-of-nozdormu.js.map +1 -0
- package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.d.ts +2 -0
- package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.js +19 -0
- package/dist/cards/impl/bg-spell/eyes-of-the-earth-mother.js.map +1 -0
- package/dist/cards/impl/bg-spell/hand-of-deios.d.ts +2 -0
- package/dist/cards/impl/bg-spell/hand-of-deios.js +36 -0
- package/dist/cards/impl/bg-spell/hand-of-deios.js.map +1 -0
- package/dist/cards/impl/bg-spell/murkys-fish.d.ts +2 -2
- package/dist/cards/impl/bg-spell/murkys-fish.js +1 -1
- package/dist/cards/impl/bg-spell/murkys-fish.js.map +1 -1
- package/dist/cards/impl/bg-spell/natural-blessing.d.ts +2 -2
- package/dist/cards/impl/bg-spell/natural-blessing.js +1 -1
- package/dist/cards/impl/bg-spell/natural-blessing.js.map +1 -1
- package/dist/cards/impl/bg-spell/shiny-ring.d.ts +2 -2
- package/dist/cards/impl/bg-spell/shiny-ring.js +1 -1
- package/dist/cards/impl/bg-spell/shiny-ring.js.map +1 -1
- package/dist/cards/impl/bg-spell/timewarped-bananas.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-bananas.js +15 -0
- package/dist/cards/impl/bg-spell/timewarped-bananas.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-chefs-choice.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-chefs-choice.js +17 -0
- package/dist/cards/impl/bg-spell/timewarped-chefs-choice.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-cloning-device.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-cloning-device.js +24 -0
- package/dist/cards/impl/bg-spell/timewarped-cloning-device.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-conch.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-conch.js +25 -0
- package/dist/cards/impl/bg-spell/timewarped-conch.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-corpse.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-corpse.js +12 -0
- package/dist/cards/impl/bg-spell/timewarped-corpse.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-evolution.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-evolution.js +17 -0
- package/dist/cards/impl/bg-spell/timewarped-evolution.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-goldenizer.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-goldenizer.js +18 -0
- package/dist/cards/impl/bg-spell/timewarped-goldenizer.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-master-thief.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-master-thief.js +21 -0
- package/dist/cards/impl/bg-spell/timewarped-master-thief.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-on-the-house.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-on-the-house.js +12 -0
- package/dist/cards/impl/bg-spell/timewarped-on-the-house.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.js +18 -0
- package/dist/cards/impl/bg-spell/timewarped-rat-in-the-cage.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-ritual.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-ritual.js +15 -0
- package/dist/cards/impl/bg-spell/timewarped-ritual.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-special.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-special.js +13 -0
- package/dist/cards/impl/bg-spell/timewarped-special.js.map +1 -0
- package/dist/cards/impl/bg-spell/timewarped-thief.d.ts +2 -0
- package/dist/cards/impl/bg-spell/timewarped-thief.js +25 -0
- package/dist/cards/impl/bg-spell/timewarped-thief.js.map +1 -0
- package/dist/cards/impl/bg-spell/tomb-turning.d.ts +2 -0
- package/dist/cards/impl/bg-spell/tomb-turning.js +13 -0
- package/dist/cards/impl/bg-spell/tomb-turning.js.map +1 -0
- package/dist/cards/impl/bg-spell/wave-of-gold.d.ts +2 -0
- package/dist/cards/impl/bg-spell/wave-of-gold.js +16 -0
- package/dist/cards/impl/bg-spell/wave-of-gold.js.map +1 -0
- package/dist/cards/impl/minion/apexis-guardian.d.ts +2 -0
- package/dist/cards/impl/minion/apexis-guardian.js +27 -0
- package/dist/cards/impl/minion/apexis-guardian.js.map +1 -0
- package/dist/cards/impl/minion/arcane-cannoneer.js +3 -0
- package/dist/cards/impl/minion/arcane-cannoneer.js.map +1 -1
- package/dist/cards/impl/minion/archaedas.d.ts +2 -0
- package/dist/cards/impl/minion/archaedas.js +18 -0
- package/dist/cards/impl/minion/archaedas.js.map +1 -0
- package/dist/cards/impl/minion/auto-accelerator.d.ts +2 -0
- package/dist/cards/impl/minion/auto-accelerator.js +17 -0
- package/dist/cards/impl/minion/auto-accelerator.js.map +1 -0
- package/dist/cards/impl/minion/bannerboar.js +1 -1
- package/dist/cards/impl/minion/bannerboar.js.map +1 -1
- package/dist/cards/impl/minion/bassgill.d.ts +2 -0
- package/dist/cards/impl/minion/bassgill.js +35 -0
- package/dist/cards/impl/minion/bassgill.js.map +1 -0
- package/dist/cards/impl/minion/bloodsnout-warlord.js +1 -1
- package/dist/cards/impl/minion/bloodsnout-warlord.js.map +1 -1
- package/dist/cards/impl/minion/blue-volumizer.d.ts +2 -0
- package/dist/cards/impl/minion/blue-volumizer.js +18 -0
- package/dist/cards/impl/minion/blue-volumizer.js.map +1 -0
- package/dist/cards/impl/minion/bluesy-siren.d.ts +2 -0
- package/dist/cards/impl/minion/bluesy-siren.js +31 -0
- package/dist/cards/impl/minion/bluesy-siren.js.map +1 -0
- package/dist/cards/impl/minion/bongo-bopper.js +1 -1
- package/dist/cards/impl/minion/bongo-bopper.js.map +1 -1
- package/dist/cards/impl/minion/bonker.js +1 -1
- package/dist/cards/impl/minion/bonker.js.map +1 -1
- package/dist/cards/impl/minion/briarback-drummer.d.ts +2 -0
- package/dist/cards/impl/minion/briarback-drummer.js +14 -0
- package/dist/cards/impl/minion/briarback-drummer.js.map +1 -0
- package/dist/cards/impl/minion/briny-bootlegger.d.ts +2 -0
- package/dist/cards/impl/minion/briny-bootlegger.js +14 -0
- package/dist/cards/impl/minion/briny-bootlegger.js.map +1 -0
- package/dist/cards/impl/minion/budding-greenthumb.d.ts +2 -0
- package/dist/cards/impl/minion/budding-greenthumb.js +17 -0
- package/dist/cards/impl/minion/budding-greenthumb.js.map +1 -0
- package/dist/cards/impl/minion/canopy-swinger.js +2 -2
- package/dist/cards/impl/minion/canopy-swinger.js.map +1 -1
- package/dist/cards/impl/minion/charging-czarina.d.ts +2 -0
- package/dist/cards/impl/minion/charging-czarina.js +15 -0
- package/dist/cards/impl/minion/charging-czarina.js.map +1 -0
- package/dist/cards/impl/minion/charlga.js +1 -1
- package/dist/cards/impl/minion/charlga.js.map +1 -1
- package/dist/cards/impl/minion/choral-mrrrglr.d.ts +2 -5
- package/dist/cards/impl/minion/choral-mrrrglr.js +2 -0
- package/dist/cards/impl/minion/choral-mrrrglr.js.map +1 -1
- package/dist/cards/impl/minion/clunker-junker.js +1 -1
- package/dist/cards/impl/minion/clunker-junker.js.map +1 -1
- package/dist/cards/impl/minion/colossus.js +3 -0
- package/dist/cards/impl/minion/colossus.js.map +1 -1
- package/dist/cards/impl/minion/conveyor-construct.d.ts +2 -0
- package/dist/cards/impl/minion/conveyor-construct.js +17 -0
- package/dist/cards/impl/minion/conveyor-construct.js.map +1 -0
- package/dist/cards/impl/minion/costume-enthusiast.d.ts +2 -0
- package/dist/cards/impl/minion/costume-enthusiast.js +20 -0
- package/dist/cards/impl/minion/costume-enthusiast.js.map +1 -0
- package/dist/cards/impl/minion/dramaloc.d.ts +2 -0
- package/dist/cards/impl/minion/dramaloc.js +27 -0
- package/dist/cards/impl/minion/dramaloc.js.map +1 -0
- package/dist/cards/impl/minion/efficient-engineer.js +3 -1
- package/dist/cards/impl/minion/efficient-engineer.js.map +1 -1
- package/dist/cards/impl/minion/expert-aviator.d.ts +2 -0
- package/dist/cards/impl/minion/expert-aviator.js +39 -0
- package/dist/cards/impl/minion/expert-aviator.js.map +1 -0
- package/dist/cards/impl/minion/festergut.d.ts +2 -0
- package/dist/cards/impl/minion/festergut.js +20 -0
- package/dist/cards/impl/minion/festergut.js.map +1 -0
- package/dist/cards/impl/minion/forsaken-weaver.d.ts +2 -0
- package/dist/cards/impl/minion/forsaken-weaver.js +11 -0
- package/dist/cards/impl/minion/forsaken-weaver.js.map +1 -0
- package/dist/cards/impl/minion/futurefin.d.ts +2 -0
- package/dist/cards/impl/minion/futurefin.js +15 -0
- package/dist/cards/impl/minion/futurefin.js.map +1 -0
- package/dist/cards/impl/minion/gem-smuggler.js +1 -1
- package/dist/cards/impl/minion/gem-smuggler.js.map +1 -1
- package/dist/cards/impl/minion/gemsplitter.d.ts +2 -0
- package/dist/cards/impl/minion/gemsplitter.js +15 -0
- package/dist/cards/impl/minion/gemsplitter.js.map +1 -0
- package/dist/cards/impl/minion/ghoul-of-the-feast.d.ts +2 -0
- package/dist/cards/impl/minion/ghoul-of-the-feast.js +13 -0
- package/dist/cards/impl/minion/ghoul-of-the-feast.js.map +1 -0
- package/dist/cards/impl/minion/gilded-gargoyle.d.ts +2 -0
- package/dist/cards/impl/minion/gilded-gargoyle.js +13 -0
- package/dist/cards/impl/minion/gilded-gargoyle.js.map +1 -0
- package/dist/cards/impl/minion/glowgullet-warlord.js +1 -1
- package/dist/cards/impl/minion/glowgullet-warlord.js.map +1 -1
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.js +2 -1
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -1
- package/dist/cards/impl/minion/green-volumizer.d.ts +2 -0
- package/dist/cards/impl/minion/green-volumizer.js +19 -0
- package/dist/cards/impl/minion/green-volumizer.js.map +1 -0
- package/dist/cards/impl/minion/hardy-orca.d.ts +2 -0
- package/dist/cards/impl/minion/hardy-orca.js +15 -0
- package/dist/cards/impl/minion/hardy-orca.js.map +1 -0
- package/dist/cards/impl/minion/heroic-underdog.d.ts +2 -0
- package/dist/cards/impl/minion/heroic-underdog.js +17 -0
- package/dist/cards/impl/minion/heroic-underdog.js.map +1 -0
- package/dist/cards/impl/minion/highkeeper-ra.d.ts +2 -0
- package/dist/cards/impl/minion/highkeeper-ra.js +28 -0
- package/dist/cards/impl/minion/highkeeper-ra.js.map +1 -0
- package/dist/cards/impl/minion/hot-springer.js +2 -2
- package/dist/cards/impl/minion/hot-springer.js.map +1 -1
- package/dist/cards/impl/minion/hunting-tiger-shark.d.ts +2 -0
- package/dist/cards/impl/minion/hunting-tiger-shark.js +18 -0
- package/dist/cards/impl/minion/hunting-tiger-shark.js.map +1 -0
- package/dist/cards/impl/minion/impulsive-trickster.js +7 -11
- package/dist/cards/impl/minion/impulsive-trickster.js.map +1 -1
- package/dist/cards/impl/minion/indomitable-mount.js +1 -1
- package/dist/cards/impl/minion/indomitable-mount.js.map +1 -1
- package/dist/cards/impl/minion/jelly-belly.d.ts +2 -0
- package/dist/cards/impl/minion/jelly-belly.js +12 -0
- package/dist/cards/impl/minion/jelly-belly.js.map +1 -0
- package/dist/cards/impl/minion/junk-jouster.d.ts +2 -0
- package/dist/cards/impl/minion/junk-jouster.js +15 -0
- package/dist/cards/impl/minion/junk-jouster.js.map +1 -0
- package/dist/cards/impl/minion/king-bagurgle.js +1 -1
- package/dist/cards/impl/minion/king-bagurgle.js.map +1 -1
- package/dist/cards/impl/minion/magicfin-apprentice.js +11 -13
- package/dist/cards/impl/minion/magicfin-apprentice.js.map +1 -1
- package/dist/cards/impl/minion/metal-dispenser.d.ts +2 -0
- package/dist/cards/impl/minion/metal-dispenser.js +17 -0
- package/dist/cards/impl/minion/metal-dispenser.js.map +1 -0
- package/dist/cards/impl/minion/murcules.d.ts +2 -0
- package/dist/cards/impl/minion/murcules.js +17 -0
- package/dist/cards/impl/minion/murcules.js.map +1 -0
- package/dist/cards/impl/minion/niuzao.js +3 -0
- package/dist/cards/impl/minion/niuzao.js.map +1 -1
- package/dist/cards/impl/minion/obisidian-ravager.js +3 -0
- package/dist/cards/impl/minion/obisidian-ravager.js.map +1 -1
- package/dist/cards/impl/minion/oozeling-gladiator.js +7 -2
- package/dist/cards/impl/minion/oozeling-gladiator.js.map +1 -1
- package/dist/cards/impl/minion/paint-smudger.d.ts +2 -0
- package/dist/cards/impl/minion/paint-smudger.js +16 -0
- package/dist/cards/impl/minion/paint-smudger.js.map +1 -0
- package/dist/cards/impl/minion/pashmar-the-vengeful.d.ts +2 -0
- package/dist/cards/impl/minion/pashmar-the-vengeful.js +17 -0
- package/dist/cards/impl/minion/pashmar-the-vengeful.js.map +1 -0
- package/dist/cards/impl/minion/piloted-whirl-o-tron.js +10 -2
- package/dist/cards/impl/minion/piloted-whirl-o-tron.js.map +1 -1
- package/dist/cards/impl/minion/plankwalker.d.ts +2 -0
- package/dist/cards/impl/minion/plankwalker.js +16 -0
- package/dist/cards/impl/minion/plankwalker.js.map +1 -0
- package/dist/cards/impl/minion/prized-promo-drake.js +1 -0
- package/dist/cards/impl/minion/prized-promo-drake.js.map +1 -1
- package/dist/cards/impl/minion/prodigious-tusker.js +1 -1
- package/dist/cards/impl/minion/prodigious-tusker.js.map +1 -1
- package/dist/cards/impl/minion/profound-thinker.d.ts +2 -0
- package/dist/cards/impl/minion/profound-thinker.js +27 -0
- package/dist/cards/impl/minion/profound-thinker.js.map +1 -0
- package/dist/cards/impl/minion/psychus.d.ts +2 -0
- package/dist/cards/impl/minion/psychus.js +16 -0
- package/dist/cards/impl/minion/psychus.js.map +1 -0
- package/dist/cards/impl/minion/radio-star.d.ts +2 -0
- package/dist/cards/impl/minion/radio-star.js +20 -0
- package/dist/cards/impl/minion/radio-star.js.map +1 -0
- package/dist/cards/impl/minion/rampager.d.ts +2 -0
- package/dist/cards/impl/minion/rampager.js +23 -0
- package/dist/cards/impl/minion/rampager.js.map +1 -0
- package/dist/cards/impl/minion/razorfen-flapper.d.ts +2 -0
- package/dist/cards/impl/minion/razorfen-flapper.js +14 -0
- package/dist/cards/impl/minion/razorfen-flapper.js.map +1 -0
- package/dist/cards/impl/minion/razorfen-geomancer.js +3 -4
- package/dist/cards/impl/minion/razorfen-geomancer.js.map +1 -1
- package/dist/cards/impl/minion/razorfen-vineweaver.js +1 -1
- package/dist/cards/impl/minion/razorfen-vineweaver.js.map +1 -1
- package/dist/cards/impl/minion/red-volumizer.d.ts +2 -0
- package/dist/cards/impl/minion/red-volumizer.js +18 -0
- package/dist/cards/impl/minion/red-volumizer.js.map +1 -0
- package/dist/cards/impl/minion/rickety-repairbot.js +1 -1
- package/dist/cards/impl/minion/rickety-repairbot.js.map +1 -1
- package/dist/cards/impl/minion/scourfin.d.ts +2 -0
- package/dist/cards/impl/minion/scourfin.js +14 -0
- package/dist/cards/impl/minion/scourfin.js.map +1 -0
- package/dist/cards/impl/minion/shell-collector.js +2 -2
- package/dist/cards/impl/minion/shell-collector.js.map +1 -1
- package/dist/cards/impl/minion/sinodorei-straight-shot.js +3 -0
- package/dist/cards/impl/minion/sinodorei-straight-shot.js.map +1 -1
- package/dist/cards/impl/minion/skulking-bristlemane.js +1 -1
- package/dist/cards/impl/minion/skulking-bristlemane.js.map +1 -1
- package/dist/cards/impl/minion/sly-raptor.js +3 -3
- package/dist/cards/impl/minion/sly-raptor.js.map +1 -1
- package/dist/cards/impl/minion/soulsplitter.d.ts +2 -5
- package/dist/cards/impl/minion/soulsplitter.js +3 -1
- package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
- package/dist/cards/impl/minion/spellbound-soul.d.ts +2 -0
- package/dist/cards/impl/minion/spellbound-soul.js +19 -0
- package/dist/cards/impl/minion/spellbound-soul.js.map +1 -0
- package/dist/cards/impl/minion/spirit-drake.d.ts +2 -0
- package/dist/cards/impl/minion/spirit-drake.js +17 -0
- package/dist/cards/impl/minion/spirit-drake.js.map +1 -0
- package/dist/cards/impl/minion/spirit-of-air.d.ts +2 -0
- package/dist/cards/impl/minion/spirit-of-air.js +33 -0
- package/dist/cards/impl/minion/spirit-of-air.js.map +1 -0
- package/dist/cards/impl/minion/stalwart-kodo.d.ts +2 -0
- package/dist/cards/impl/minion/stalwart-kodo.js +17 -0
- package/dist/cards/impl/minion/stalwart-kodo.js.map +1 -0
- package/dist/cards/impl/minion/stoneshell-guardian.js +10 -2
- package/dist/cards/impl/minion/stoneshell-guardian.js.map +1 -1
- package/dist/cards/impl/minion/stuntdrake.d.ts +2 -0
- package/dist/cards/impl/minion/stuntdrake.js +24 -0
- package/dist/cards/impl/minion/stuntdrake.js.map +1 -0
- package/dist/cards/impl/minion/sunken-advocate.d.ts +2 -0
- package/dist/cards/impl/minion/sunken-advocate.js +20 -0
- package/dist/cards/impl/minion/sunken-advocate.js.map +1 -0
- package/dist/cards/impl/minion/swampstriker.js +5 -10
- package/dist/cards/impl/minion/swampstriker.js.map +1 -1
- package/dist/cards/impl/minion/the-last-one-standing.d.ts +2 -0
- package/dist/cards/impl/minion/the-last-one-standing.js +13 -0
- package/dist/cards/impl/minion/the-last-one-standing.js.map +1 -0
- package/dist/cards/impl/minion/three-lil-quilboar.js +1 -1
- package/dist/cards/impl/minion/three-lil-quilboar.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-alleycat.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-alleycat.js +29 -0
- package/dist/cards/impl/minion/timewarped-alleycat.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-archimonde.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-archimonde.js +10 -0
- package/dist/cards/impl/minion/timewarped-archimonde.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-arm.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-arm.js +12 -0
- package/dist/cards/impl/minion/timewarped-arm.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-bassgill.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-bassgill.js +35 -0
- package/dist/cards/impl/minion/timewarped-bassgill.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-bloodbinder.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-bloodbinder.js +23 -0
- package/dist/cards/impl/minion/timewarped-bloodbinder.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-bonker.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-bonker.js +15 -0
- package/dist/cards/impl/minion/timewarped-bonker.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-botani.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-botani.js +17 -0
- package/dist/cards/impl/minion/timewarped-botani.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-bristler.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-bristler.js +39 -0
- package/dist/cards/impl/minion/timewarped-bristler.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-calligrapher.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-calligrapher.js +29 -0
- package/dist/cards/impl/minion/timewarped-calligrapher.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-caretaker.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-caretaker.js +21 -0
- package/dist/cards/impl/minion/timewarped-caretaker.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-centurion.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-centurion.js +18 -0
- package/dist/cards/impl/minion/timewarped-centurion.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-chameleon.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-chameleon.js +40 -0
- package/dist/cards/impl/minion/timewarped-chameleon.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-clefthoof.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-clefthoof.js +21 -0
- package/dist/cards/impl/minion/timewarped-clefthoof.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-copter.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-copter.js +22 -0
- package/dist/cards/impl/minion/timewarped-copter.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-deadstomper.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-deadstomper.js +14 -0
- package/dist/cards/impl/minion/timewarped-deadstomper.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-deathswarmer.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-deathswarmer.js +15 -0
- package/dist/cards/impl/minion/timewarped-deathswarmer.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-dragonling.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-dragonling.js +21 -0
- package/dist/cards/impl/minion/timewarped-dragonling.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-duskmaw.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-duskmaw.js +14 -0
- package/dist/cards/impl/minion/timewarped-duskmaw.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-electron.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-electron.js +24 -0
- package/dist/cards/impl/minion/timewarped-electron.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-elegist.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-elegist.js +15 -0
- package/dist/cards/impl/minion/timewarped-elegist.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-expeditioner.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-expeditioner.js +22 -0
- package/dist/cards/impl/minion/timewarped-expeditioner.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-festergut.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-festergut.js +20 -0
- package/dist/cards/impl/minion/timewarped-festergut.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-geist.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-geist.js +13 -0
- package/dist/cards/impl/minion/timewarped-geist.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-gemsplitter.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-gemsplitter.js +13 -0
- package/dist/cards/impl/minion/timewarped-gemsplitter.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-geomancer.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-geomancer.js +14 -0
- package/dist/cards/impl/minion/timewarped-geomancer.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-ghoul-acabra.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-ghoul-acabra.js +12 -0
- package/dist/cards/impl/minion/timewarped-ghoul-acabra.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-goldrinn.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-goldrinn.js +17 -0
- package/dist/cards/impl/minion/timewarped-goldrinn.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-grease-bot.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-grease-bot.js +12 -0
- package/dist/cards/impl/minion/timewarped-grease-bot.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-greenskeeper.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-greenskeeper.js +33 -0
- package/dist/cards/impl/minion/timewarped-greenskeeper.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-guard.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-guard.js +25 -0
- package/dist/cards/impl/minion/timewarped-guard.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-hawkstrider.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-hawkstrider.js +25 -0
- package/dist/cards/impl/minion/timewarped-hawkstrider.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-hooktail.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-hooktail.js +12 -0
- package/dist/cards/impl/minion/timewarped-hooktail.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-hunter.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-hunter.js +20 -0
- package/dist/cards/impl/minion/timewarped-hunter.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-hyena.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-hyena.js +18 -0
- package/dist/cards/impl/minion/timewarped-hyena.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-immortal.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-immortal.js +17 -0
- package/dist/cards/impl/minion/timewarped-immortal.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-interpreter.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-interpreter.js +12 -0
- package/dist/cards/impl/minion/timewarped-interpreter.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-jazzer.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-jazzer.js +12 -0
- package/dist/cards/impl/minion/timewarped-jazzer.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-jelly-belly.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-jelly-belly.js +12 -0
- package/dist/cards/impl/minion/timewarped-jelly-belly.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-jungle-king.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-jungle-king.js +24 -0
- package/dist/cards/impl/minion/timewarped-jungle-king.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-karathress.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-karathress.js +13 -0
- package/dist/cards/impl/minion/timewarped-karathress.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-kilrek.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-kilrek.js +17 -0
- package/dist/cards/impl/minion/timewarped-kilrek.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-lab-rat.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-lab-rat.js +13 -0
- package/dist/cards/impl/minion/timewarped-lab-rat.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-lil-quilboar.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-lil-quilboar.js +19 -0
- package/dist/cards/impl/minion/timewarped-lil-quilboar.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-low-flier.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-low-flier.js +19 -0
- package/dist/cards/impl/minion/timewarped-low-flier.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-mothership.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-mothership.js +14 -0
- package/dist/cards/impl/minion/timewarped-mothership.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-mrrrglr.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-mrrrglr.js +25 -0
- package/dist/cards/impl/minion/timewarped-mrrrglr.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-murcules.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-murcules.js +16 -0
- package/dist/cards/impl/minion/timewarped-murcules.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-murk-eye.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-murk-eye.js +20 -0
- package/dist/cards/impl/minion/timewarped-murk-eye.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-murky.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-murky.js +13 -0
- package/dist/cards/impl/minion/timewarped-murky.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-nalaa.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-nalaa.js +12 -0
- package/dist/cards/impl/minion/timewarped-nalaa.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-nellies-ship.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-nellies-ship.js +22 -0
- package/dist/cards/impl/minion/timewarped-nellies-ship.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-painter.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-painter.js +19 -0
- package/dist/cards/impl/minion/timewarped-painter.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-paleofin.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-paleofin.js +13 -0
- package/dist/cards/impl/minion/timewarped-paleofin.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-pashmar.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-pashmar.js +20 -0
- package/dist/cards/impl/minion/timewarped-pashmar.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-peggy.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-peggy.js +12 -0
- package/dist/cards/impl/minion/timewarped-peggy.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-pillager.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-pillager.js +14 -0
- package/dist/cards/impl/minion/timewarped-pillager.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-piper.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-piper.js +16 -0
- package/dist/cards/impl/minion/timewarped-piper.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-primscale.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-primscale.js +14 -0
- package/dist/cards/impl/minion/timewarped-primscale.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-probius.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-probius.js +16 -0
- package/dist/cards/impl/minion/timewarped-probius.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-promo-drake.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-promo-drake.js +19 -0
- package/dist/cards/impl/minion/timewarped-promo-drake.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-radio-star.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-radio-star.js +20 -0
- package/dist/cards/impl/minion/timewarped-radio-star.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-ragnaros.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-ragnaros.js +18 -0
- package/dist/cards/impl/minion/timewarped-ragnaros.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-recycler.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-recycler.js +10 -0
- package/dist/cards/impl/minion/timewarped-recycler.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-red-whelp.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-red-whelp.js +19 -0
- package/dist/cards/impl/minion/timewarped-red-whelp.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-rewinder.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-rewinder.js +14 -0
- package/dist/cards/impl/minion/timewarped-rewinder.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-riplash.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-riplash.js +14 -0
- package/dist/cards/impl/minion/timewarped-riplash.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sapper.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sapper.js +14 -0
- package/dist/cards/impl/minion/timewarped-sapper.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-saurolisk.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-saurolisk.js +13 -0
- package/dist/cards/impl/minion/timewarped-saurolisk.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-scourfin.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-scourfin.js +25 -0
- package/dist/cards/impl/minion/timewarped-scourfin.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sea-glass.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sea-glass.js +18 -0
- package/dist/cards/impl/minion/timewarped-sea-glass.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sellemental.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sellemental.js +13 -0
- package/dist/cards/impl/minion/timewarped-sellemental.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sensei.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sensei.js +20 -0
- package/dist/cards/impl/minion/timewarped-sensei.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-shadowdancer.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-shadowdancer.js +23 -0
- package/dist/cards/impl/minion/timewarped-shadowdancer.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-spirit-of-air.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-spirit-of-air.js +33 -0
- package/dist/cards/impl/minion/timewarped-spirit-of-air.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sporebat.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sporebat.js +18 -0
- package/dist/cards/impl/minion/timewarped-sporebat.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-steamer.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-steamer.js +13 -0
- package/dist/cards/impl/minion/timewarped-steamer.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-stoneshell.d.ts +0 -0
- package/dist/cards/impl/minion/timewarped-stoneshell.js +1 -0
- package/dist/cards/impl/minion/timewarped-stoneshell.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-stormcloud.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-stormcloud.js +20 -0
- package/dist/cards/impl/minion/timewarped-stormcloud.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-substrate.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-substrate.js +13 -0
- package/dist/cards/impl/minion/timewarped-substrate.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-sylvar.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-sylvar.js +18 -0
- package/dist/cards/impl/minion/timewarped-sylvar.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-tamuzo.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-tamuzo.js +12 -0
- package/dist/cards/impl/minion/timewarped-tamuzo.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-tender.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-tender.js +13 -0
- package/dist/cards/impl/minion/timewarped-tender.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-thorncaller.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-thorncaller.js +20 -0
- package/dist/cards/impl/minion/timewarped-thorncaller.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-tide-razor.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-tide-razor.js +22 -0
- package/dist/cards/impl/minion/timewarped-tide-razor.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-tony.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-tony.js +14 -0
- package/dist/cards/impl/minion/timewarped-tony.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-trickster.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-trickster.js +23 -0
- package/dist/cards/impl/minion/timewarped-trickster.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-twirler.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-twirler.js +33 -0
- package/dist/cards/impl/minion/timewarped-twirler.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-ultralisk.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-ultralisk.js +13 -0
- package/dist/cards/impl/minion/timewarped-ultralisk.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-vaelastrasz.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-vaelastrasz.js +15 -0
- package/dist/cards/impl/minion/timewarped-vaelastrasz.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-warghoul.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-warghoul.js +23 -0
- package/dist/cards/impl/minion/timewarped-warghoul.js.map +1 -0
- package/dist/cards/impl/minion/timewarped-whelp-smuggler.d.ts +2 -0
- package/dist/cards/impl/minion/timewarped-whelp-smuggler.js +14 -0
- package/dist/cards/impl/minion/timewarped-whelp-smuggler.js.map +1 -0
- package/dist/cards/impl/minion/tomb-pillager.d.ts +2 -0
- package/dist/cards/impl/minion/tomb-pillager.js +13 -0
- package/dist/cards/impl/minion/tomb-pillager.js.map +1 -0
- package/dist/cards/impl/minion/transmuted-bramblewitch.js +3 -0
- package/dist/cards/impl/minion/transmuted-bramblewitch.js.map +1 -1
- package/dist/cards/impl/minion/trench-fighter.d.ts +2 -0
- package/dist/cards/impl/minion/trench-fighter.js +14 -0
- package/dist/cards/impl/minion/trench-fighter.js.map +1 -0
- package/dist/cards/impl/minion/tusked-camper.js +1 -1
- package/dist/cards/impl/minion/tusked-camper.js.map +1 -1
- package/dist/cards/impl/minion/twilight-broodmother.d.ts +2 -0
- package/dist/cards/impl/minion/twilight-broodmother.js +17 -0
- package/dist/cards/impl/minion/twilight-broodmother.js.map +1 -0
- package/dist/cards/impl/minion/twilight-hatchling.d.ts +2 -0
- package/dist/cards/impl/minion/twilight-hatchling.js +19 -0
- package/dist/cards/impl/minion/twilight-hatchling.js.map +1 -0
- package/dist/cards/impl/minion/unforgiving-treant.d.ts +2 -0
- package/dist/cards/impl/minion/unforgiving-treant.js +14 -0
- package/dist/cards/impl/minion/unforgiving-treant.js.map +1 -0
- package/dist/cards/impl/minion/whelp-watcher.d.ts +2 -0
- package/dist/cards/impl/minion/whelp-watcher.js +34 -0
- package/dist/cards/impl/minion/whelp-watcher.js.map +1 -0
- package/dist/cards/impl/minion/whirling-lass-o-matic.d.ts +2 -0
- package/dist/cards/impl/minion/whirling-lass-o-matic.js +14 -0
- package/dist/cards/impl/minion/whirling-lass-o-matic.js.map +1 -0
- package/dist/cards/impl/minion/witchwing-nestmatron.d.ts +2 -0
- package/dist/cards/impl/minion/witchwing-nestmatron.js +18 -0
- package/dist/cards/impl/minion/witchwing-nestmatron.js.map +1 -0
- package/dist/cards/impl/spellcraft/anglers-lure.d.ts +2 -0
- package/dist/cards/impl/spellcraft/anglers-lure.js +20 -0
- package/dist/cards/impl/spellcraft/anglers-lure.js.map +1 -0
- package/dist/cards/impl/spellcraft/azsharas-hatchery.d.ts +2 -0
- package/dist/cards/impl/spellcraft/azsharas-hatchery.js +20 -0
- package/dist/cards/impl/spellcraft/azsharas-hatchery.js.map +1 -0
- package/dist/cards/impl/spellcraft/deep-blues.d.ts +2 -0
- package/dist/cards/impl/spellcraft/deep-blues.js +18 -0
- package/dist/cards/impl/spellcraft/deep-blues.js.map +1 -0
- package/dist/cards/impl/spellcraft/escape-eruption.d.ts +2 -0
- package/dist/cards/impl/spellcraft/escape-eruption.js +23 -0
- package/dist/cards/impl/spellcraft/escape-eruption.js.map +1 -0
- package/dist/cards/impl/spellcraft/evolving-strategy.d.ts +2 -0
- package/dist/cards/impl/spellcraft/evolving-strategy.js +19 -0
- package/dist/cards/impl/spellcraft/evolving-strategy.js.map +1 -0
- package/dist/cards/impl/spellcraft/glowing-crown.d.ts +2 -0
- package/dist/cards/impl/spellcraft/glowing-crown.js +17 -0
- package/dist/cards/impl/spellcraft/glowing-crown.js.map +1 -0
- package/dist/cards/impl/spellcraft/gold-gun.d.ts +2 -0
- package/dist/cards/impl/spellcraft/gold-gun.js +22 -0
- package/dist/cards/impl/spellcraft/gold-gun.js.map +1 -0
- package/dist/cards/impl/spellcraft/harvested-pearl.d.ts +2 -0
- package/dist/cards/impl/spellcraft/harvested-pearl.js +17 -0
- package/dist/cards/impl/spellcraft/harvested-pearl.js.map +1 -0
- package/dist/cards/impl/spellcraft/just-keep-swimming.d.ts +2 -0
- package/dist/cards/impl/spellcraft/just-keep-swimming.js +23 -0
- package/dist/cards/impl/spellcraft/just-keep-swimming.js.map +1 -0
- package/dist/cards/impl/spellcraft/meditation.d.ts +2 -0
- package/dist/cards/impl/spellcraft/meditation.js +15 -0
- package/dist/cards/impl/spellcraft/meditation.js.map +1 -0
- package/dist/cards/impl/spellcraft/mini-trident.d.ts +2 -0
- package/dist/cards/impl/spellcraft/mini-trident.js +18 -0
- package/dist/cards/impl/spellcraft/mini-trident.js.map +1 -0
- package/dist/cards/impl/spellcraft/reinvigoration.d.ts +2 -0
- package/dist/cards/impl/spellcraft/reinvigoration.js +24 -0
- package/dist/cards/impl/spellcraft/reinvigoration.js.map +1 -0
- package/dist/cards/impl/spellcraft/rime-or-reason.d.ts +2 -0
- package/dist/cards/impl/spellcraft/rime-or-reason.js +18 -0
- package/dist/cards/impl/spellcraft/rime-or-reason.js.map +1 -0
- package/dist/cards/impl/spellcraft/rushing-winds.d.ts +2 -0
- package/dist/cards/impl/spellcraft/rushing-winds.js +19 -0
- package/dist/cards/impl/spellcraft/rushing-winds.js.map +1 -0
- package/dist/cards/impl/spellcraft/sick-riffs.d.ts +2 -0
- package/dist/cards/impl/spellcraft/sick-riffs.js +19 -0
- package/dist/cards/impl/spellcraft/sick-riffs.js.map +1 -0
- package/dist/cards/impl/spellcraft/sunken-spells.d.ts +2 -0
- package/dist/cards/impl/spellcraft/sunken-spells.js +18 -0
- package/dist/cards/impl/spellcraft/sunken-spells.js.map +1 -0
- package/dist/cards/impl/spellcraft/surging-scales.d.ts +2 -0
- package/dist/cards/impl/spellcraft/surging-scales.js +24 -0
- package/dist/cards/impl/spellcraft/surging-scales.js.map +1 -0
- package/dist/cards/impl/spellcraft/thaumaturgy.d.ts +2 -0
- package/dist/cards/impl/spellcraft/thaumaturgy.js +19 -0
- package/dist/cards/impl/spellcraft/thaumaturgy.js.map +1 -0
- package/dist/cards/impl/spellcraft/the-golden-hammer.d.ts +2 -0
- package/dist/cards/impl/spellcraft/the-golden-hammer.js +17 -0
- package/dist/cards/impl/spellcraft/the-golden-hammer.js.map +1 -0
- package/dist/cards/impl/spellcraft/timewarped-crown.d.ts +2 -0
- package/dist/cards/impl/spellcraft/timewarped-crown.js +20 -0
- package/dist/cards/impl/spellcraft/timewarped-crown.js.map +1 -0
- package/dist/cards/impl/spellcraft/timewarped-eelectrify.d.ts +2 -0
- package/dist/cards/impl/spellcraft/timewarped-eelectrify.js +21 -0
- package/dist/cards/impl/spellcraft/timewarped-eelectrify.js.map +1 -0
- package/dist/cards/impl/spellcraft/timewarped-shoal.d.ts +2 -0
- package/dist/cards/impl/spellcraft/timewarped-shoal.js +25 -0
- package/dist/cards/impl/spellcraft/timewarped-shoal.js.map +1 -0
- package/dist/cards/impl/spellcraft/undersea-mount.d.ts +2 -0
- package/dist/cards/impl/spellcraft/undersea-mount.js +24 -0
- package/dist/cards/impl/spellcraft/undersea-mount.js.map +1 -0
- package/dist/cards/impl/trinket/ghostly-ymirjar.d.ts +2 -0
- package/dist/cards/impl/trinket/ghostly-ymirjar.js +10 -0
- package/dist/cards/impl/trinket/ghostly-ymirjar.js.map +1 -0
- package/dist/cards/impl/trinket/hogwash-basin.js +1 -1
- package/dist/cards/impl/trinket/hogwash-basin.js.map +1 -1
- package/dist/cards/impl/trinket/saltscale-honcho.d.ts +2 -0
- package/dist/cards/impl/trinket/saltscale-honcho.js +23 -0
- package/dist/cards/impl/trinket/saltscale-honcho.js.map +1 -0
- package/dist/cards/impl/trinket/sepulchral-sergent.d.ts +2 -0
- package/dist/cards/impl/trinket/sepulchral-sergent.js +18 -0
- package/dist/cards/impl/trinket/sepulchral-sergent.js.map +1 -0
- package/dist/cards/impl/trinket/wintergrasp-ghoul.d.ts +2 -0
- package/dist/cards/impl/trinket/wintergrasp-ghoul.js +14 -0
- package/dist/cards/impl/trinket/wintergrasp-ghoul.js.map +1 -0
- package/dist/keywords/divine-shield.d.ts +1 -0
- package/dist/keywords/divine-shield.js +5 -14
- package/dist/keywords/divine-shield.js.map +1 -1
- package/dist/mechanics/cast-tavern-spell.d.ts +3 -0
- package/dist/mechanics/cast-tavern-spell.js +34 -0
- package/dist/mechanics/cast-tavern-spell.js.map +1 -0
- package/dist/mechanics/rally.d.ts +7 -0
- package/dist/mechanics/rally.js +76 -0
- package/dist/mechanics/rally.js.map +1 -0
- package/dist/services/card-ids.d.ts +948 -9
- package/dist/services/card-ids.js.map +1 -1
- package/dist/services/utils.d.ts +1 -0
- package/dist/services/utils.js +13 -1
- package/dist/services/utils.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +12 -3
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/after-attack.js +1 -1
- package/dist/simulation/after-attack.js.map +1 -1
- package/dist/simulation/attack.d.ts +1 -1
- package/dist/simulation/attack.js +3 -3
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.js +4 -1
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/avenge.js +1 -18
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/battlecries.js +27 -17
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/blood-gems.d.ts +18 -1
- package/dist/simulation/blood-gems.js +51 -23
- package/dist/simulation/blood-gems.js.map +1 -1
- package/dist/simulation/damage-effects.js +11 -0
- package/dist/simulation/damage-effects.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +16 -14
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.js +6 -76
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/deathrattle-utils.d.ts +1 -0
- package/dist/simulation/deathrattle-utils.js +23 -21
- package/dist/simulation/deathrattle-utils.js.map +1 -1
- package/dist/simulation/magnetize.d.ts +11 -1
- package/dist/simulation/magnetize.js +57 -39
- package/dist/simulation/magnetize.js.map +1 -1
- package/dist/simulation/minion-kill.js +0 -11
- package/dist/simulation/minion-kill.js.map +1 -1
- package/dist/simulation/on-attack.js +5 -72
- package/dist/simulation/on-attack.js.map +1 -1
- package/dist/simulation/reborn.js +0 -6
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/spawn-fail.js +13 -0
- package/dist/simulation/spawn-fail.js.map +1 -1
- package/dist/simulation/spawns.d.ts +1 -1
- package/dist/simulation/spawns.js +2 -2
- package/dist/simulation/spawns.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +0 -8
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/simulation/stats.js +3 -0
- package/dist/simulation/stats.js.map +1 -1
- package/dist/simulation/utils/golden.d.ts +2 -2
- package/dist/simulation/utils/golden.js.map +1 -1
- package/dist/utils.d.ts +3 -1
- package/dist/utils.js +18 -2
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -83,6 +83,9 @@ export interface BgsPlayerGlobalInfo {
|
|
|
83
83
|
TavernSpellHealthBuff?: number;
|
|
84
84
|
TavernSpellAttackBuff?: number;
|
|
85
85
|
GoldSpentThisGame?: number;
|
|
86
|
+
VolumizerHealthBuff?: number;
|
|
87
|
+
VolumizerAttackBuff?: number;
|
|
88
|
+
DeepBluesPlayed?: number;
|
|
86
89
|
MutatedLasherAttackBuff?: number;
|
|
87
90
|
MutatedLasherHealthBuff?: number;
|
|
88
91
|
BattlecriesTriggeredThisGame?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { BoardEnchantment, BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\t// readonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\theroPowers: readonly BgsHeroPower[];\r\n\r\n\t/** @deprecated */\r\n\theroPowerId?: string | undefined | null;\r\n\t/** @deprecated */\r\n\treadonly heroPowerEntityId?: number;\r\n\t/** @deprecated */\r\n\treadonly heroPowerUsed?: boolean;\r\n\t/** @deprecated */\r\n\treadonly heroPowerInfo?: number | string;\r\n\t/** @deprecated */\r\n\theroPowerInfo2?: number;\r\n\t/** @deprecated */\r\n\tavengeCurrent?: number;\r\n\t/** @deprecated */\r\n\tavengeDefault?: number;\r\n\t// For Ozumat\r\n\t/** @deprecated */\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\t// Not really used, but needed for compatibility with BoardEntity\r\n\tenchantments?: BoardEnchantment[];\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsHeroPower {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tused: boolean;\r\n\tinfo: number | string | BoardEntity;\r\n\tinfo2: number;\r\n\tinfo3: number;\r\n\tinfo4: number;\r\n\tinfo5: number;\r\n\tinfo6: number;\r\n\tscoreValue1?: number;\r\n\tscoreValue2?: number;\r\n\tscoreValue3?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tlocked?: number;\r\n\t// Always false when coming from the input, we set it in the appropriate place\r\n\tready?: boolean;\r\n\t// For Ozumat's Tentacular\r\n\tactivated?: boolean;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tSanlaynScribesDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tHauntedCarapaceAttackBonus?: number;\r\n\tHauntedCarapaceHealthBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tSpellsCastThisGame?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tBeastsSummonedThisGame?: number;\r\n\tBeastsSummonedThisCombat?: number;\r\n\tMagnetizedThisGame?: number;\r\n\tPiratesSummonedThisGame?: number;\r\n\tPirateAttackBonus?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n\tBeetleAttackBuff?: number;\r\n\tBeetleHealthBuff?: number;\r\n\tElementalAttackBuff?: number;\r\n\tElementalHealthBuff?: number;\r\n\tTavernSpellHealthBuff?: number;\r\n\tTavernSpellAttackBuff?: number;\r\n\tGoldSpentThisGame?: number;\r\n\r\n\tMutatedLasherAttackBuff?: number;\r\n\tMutatedLasherHealthBuff?: number;\r\n\tBattlecriesTriggeredThisGame?: number;\r\n\tFriendlyMinionsDeadLastCombat?: number;\r\n\tAdditionalAttack?: number;\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum2?: number;\r\n\tscriptDataNum6?: number;\r\n\trememberedMinion?: BoardEntity;\r\n\tavengeDefault?: number;\r\n\tavengeCurrent?: number;\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"bgs-player-entity.js","sourceRoot":"","sources":["../src/bgs-player-entity.ts"],"names":[],"mappings":"","sourcesContent":["import { BoardEnchantment, BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\n\r\nexport interface BgsPlayerEntity {\r\n\tcardId: string;\r\n\t// readonly nonGhostCardId?: string;\r\n\thpLeft: number;\r\n\treadonly tavernTier: number;\r\n\theroPowers: readonly BgsHeroPower[];\r\n\r\n\t/** @deprecated */\r\n\theroPowerId?: string | undefined | null;\r\n\t/** @deprecated */\r\n\treadonly heroPowerEntityId?: number;\r\n\t/** @deprecated */\r\n\treadonly heroPowerUsed?: boolean;\r\n\t/** @deprecated */\r\n\treadonly heroPowerInfo?: number | string;\r\n\t/** @deprecated */\r\n\theroPowerInfo2?: number;\r\n\t/** @deprecated */\r\n\tavengeCurrent?: number;\r\n\t/** @deprecated */\r\n\tavengeDefault?: number;\r\n\t// For Ozumat\r\n\t/** @deprecated */\r\n\theroPowerActivated?: boolean;\r\n\r\n\tfriendly?: boolean;\r\n\tentityId?: number;\r\n\tquestEntities: BgsQuestEntity[];\r\n\tquestRewards?: string[];\r\n\tquestRewardEntities?: {\r\n\t\tcardId: string;\r\n\t\tentityId: number;\r\n\t\tavengeDefault?: number;\r\n\t\tavengeCurrent?: number;\r\n\t\tscriptDataNum1: number;\r\n\t}[];\r\n\thand?: BoardEntity[];\r\n\tsecrets?: BoardSecret[];\r\n\ttrinkets?: BoardTrinket[];\r\n\tglobalInfo?: BgsPlayerGlobalInfo;\r\n\tstartOfCombatDone?: boolean;\r\n\t// Not really used, but needed for compatibility with BoardEntity\r\n\tenchantments?: BoardEnchantment[];\r\n\r\n\tdeadEyeDamageDone?: number;\r\n\trapidReanimationMinion?: BoardEntity;\r\n\trapidReanimationIndexFromLeft?: number;\r\n\trapidReanimationIndexFromRight?: number;\r\n}\r\n\r\nexport interface BgsHeroPower {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tused: boolean;\r\n\tinfo: number | string | BoardEntity;\r\n\tinfo2: number;\r\n\tinfo3: number;\r\n\tinfo4: number;\r\n\tinfo5: number;\r\n\tinfo6: number;\r\n\tscoreValue1?: number;\r\n\tscoreValue2?: number;\r\n\tscoreValue3?: number;\r\n\tavengeCurrent?: number;\r\n\tavengeDefault?: number;\r\n\tlocked?: number;\r\n\t// Always false when coming from the input, we set it in the appropriate place\r\n\tready?: boolean;\r\n\t// For Ozumat's Tentacular\r\n\tactivated?: boolean;\r\n}\r\n\r\nexport interface BgsPlayerGlobalInfo {\r\n\tEternalKnightsDeadThisGame?: number;\r\n\tSanlaynScribesDeadThisGame?: number;\r\n\tUndeadAttackBonus?: number;\r\n\tHauntedCarapaceAttackBonus?: number;\r\n\tHauntedCarapaceHealthBonus?: number;\r\n\tFrostlingBonus?: number;\r\n\tBloodGemAttackBonus?: number;\r\n\tBloodGemHealthBonus?: number;\r\n\tGoldrinnBuffAtk?: number;\r\n\tGoldrinnBuffHealth?: number;\r\n\tSpellsCastThisGame?: number;\r\n\tTavernSpellsCastThisGame?: number;\r\n\tPiratesPlayedThisGame?: number;\r\n\tBeastsSummonedThisGame?: number;\r\n\tBeastsSummonedThisCombat?: number;\r\n\tMagnetizedThisGame?: number;\r\n\tPiratesSummonedThisGame?: number;\r\n\tPirateAttackBonus?: number;\r\n\tAstralAutomatonsSummonedThisGame?: number;\r\n\tChoralAttackBuff?: number;\r\n\tChoralHealthBuff?: number;\r\n\tBeetleAttackBuff?: number;\r\n\tBeetleHealthBuff?: number;\r\n\tElementalAttackBuff?: number;\r\n\tElementalHealthBuff?: number;\r\n\tTavernSpellHealthBuff?: number;\r\n\tTavernSpellAttackBuff?: number;\r\n\tGoldSpentThisGame?: number;\r\n\tVolumizerHealthBuff?: number;\r\n\tVolumizerAttackBuff?: number;\r\n\tDeepBluesPlayed?: number;\r\n\r\n\tMutatedLasherAttackBuff?: number;\r\n\tMutatedLasherHealthBuff?: number;\r\n\tBattlecriesTriggeredThisGame?: number;\r\n\tFriendlyMinionsDeadLastCombat?: number;\r\n\tAdditionalAttack?: number;\r\n}\r\n\r\nexport interface BgsQuestEntity {\r\n\tCardId: string;\r\n\tRewardDbfId: number;\r\n\tProgressCurrent: number;\r\n\tProgressTotal: number;\r\n}\r\n\r\nexport interface BoardTrinket {\r\n\tcardId: string;\r\n\tentityId: number;\r\n\tscriptDataNum1: number;\r\n\tscriptDataNum2?: number;\r\n\tscriptDataNum6?: number;\r\n\trememberedMinion?: BoardEntity;\r\n\tavengeDefault?: number;\r\n\tavengeCurrent?: number;\r\n}\r\n"]}
|
|
@@ -11,12 +11,13 @@ import { OnDespawnInput, OnOtherSpawnAuraInput, OnOtherSpawnInput, OnSpawnInput
|
|
|
11
11
|
import { OnAfterDeathInput, OnDeathInput, OnMinionKilledInput } from '../simulation/attack';
|
|
12
12
|
import { AvengeInput } from '../simulation/avenge';
|
|
13
13
|
import { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';
|
|
14
|
+
import { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';
|
|
14
15
|
import { OnCardAddedToHandInput } from '../simulation/cards-in-hand';
|
|
15
16
|
import { AfterDealDamageInput } from '../simulation/damage-effects';
|
|
16
17
|
import { AfterHeroDamagedInput } from '../simulation/damage-to-hero';
|
|
17
18
|
import { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';
|
|
18
19
|
import { FullGameState } from '../simulation/internal-game-state';
|
|
19
|
-
import { OnBeforeMagnetizeInput } from '../simulation/magnetize';
|
|
20
|
+
import { OnAfterMagnetizeInput, OnBeforeMagnetizeInput } from '../simulation/magnetize';
|
|
20
21
|
import { OnAttackInput } from '../simulation/on-attack';
|
|
21
22
|
import { OnMinionAttackedInput } from '../simulation/on-being-attacked';
|
|
22
23
|
import { RebornEffectInput } from '../simulation/reborn';
|
|
@@ -43,10 +44,18 @@ export interface StartOfCombatFromHandCard extends StartOfCombatCard {
|
|
|
43
44
|
}
|
|
44
45
|
export declare const hasStartOfCombatFromHand: (card: Card) => card is StartOfCombatFromHandCard;
|
|
45
46
|
export type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';
|
|
46
|
-
export interface
|
|
47
|
-
|
|
47
|
+
export interface TavernSpellCard extends Card {
|
|
48
|
+
castTavernSpell: (spellCardId: string, input: CastSpellInput) => void;
|
|
48
49
|
}
|
|
49
|
-
export declare const
|
|
50
|
+
export declare const hasCastTavernSpell: (card: Card) => card is TavernSpellCard;
|
|
51
|
+
export interface OnTavernSpellCastCard extends Card {
|
|
52
|
+
onTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;
|
|
53
|
+
}
|
|
54
|
+
export declare const hasOnTavernSpellCast: (card: Card) => card is OnTavernSpellCastCard;
|
|
55
|
+
export interface AfterTavernSpellCastCard extends Card {
|
|
56
|
+
afterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;
|
|
57
|
+
}
|
|
58
|
+
export declare const hasAfterTavernSpellCast: (card: Card) => card is AfterTavernSpellCastCard;
|
|
50
59
|
export interface RallyCard extends Card {
|
|
51
60
|
rally: (minion: BoardEntity | BoardTrinket | BoardEnchantment, input: OnAttackInput) => {
|
|
52
61
|
dmgDoneByAttacker: number;
|
|
@@ -168,6 +177,10 @@ export interface AfterHeroDamagedCard extends Card {
|
|
|
168
177
|
afterHeroDamaged: (entity: BoardEntity, input: AfterHeroDamagedInput) => void;
|
|
169
178
|
}
|
|
170
179
|
export declare const hasAfterHeroDamaged: (card: Card) => card is AfterHeroDamagedCard;
|
|
180
|
+
export interface OnDamagedCard extends Card {
|
|
181
|
+
onDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;
|
|
182
|
+
}
|
|
183
|
+
export declare const hasOnDamaged: (card: Card) => card is OnDamagedCard;
|
|
171
184
|
export interface AfterDealDamageCard extends Card {
|
|
172
185
|
afterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;
|
|
173
186
|
}
|
|
@@ -191,11 +204,43 @@ export interface OnBeforeMagnetizeCard extends Card {
|
|
|
191
204
|
onBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => void;
|
|
192
205
|
}
|
|
193
206
|
export declare const hasOnBeforeMagnetize: (card: Card) => card is OnBeforeMagnetizeCard;
|
|
207
|
+
export interface OnAfterMagnetizeCard extends Card {
|
|
208
|
+
onAfterMagnetize: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;
|
|
209
|
+
}
|
|
210
|
+
export declare const hasOnAfterMagnetize: (card: Card) => card is OnAfterMagnetizeCard;
|
|
211
|
+
export interface OnSpawnFailCard extends Card {
|
|
212
|
+
onSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;
|
|
213
|
+
}
|
|
214
|
+
export declare const hasOnSpawnFail: (card: Card) => card is OnSpawnFailCard;
|
|
215
|
+
export interface PlayedBloodGemsOnMeCard extends Card {
|
|
216
|
+
playedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;
|
|
217
|
+
}
|
|
218
|
+
export declare const hasPlayedBloodGemsOnMe: (card: Card) => card is PlayedBloodGemsOnMeCard;
|
|
219
|
+
export interface PlayedBloodGemsOnAnyCard extends Card {
|
|
220
|
+
playedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;
|
|
221
|
+
}
|
|
222
|
+
export declare const hasPlayedBloodGemsOnAny: (card: Card) => card is PlayedBloodGemsOnAnyCard;
|
|
223
|
+
export interface OnSpawnFailInput {
|
|
224
|
+
failedSpawn: BoardEntity;
|
|
225
|
+
board: BoardEntity[];
|
|
226
|
+
hero: BgsPlayerEntity;
|
|
227
|
+
gameState: FullGameState;
|
|
228
|
+
}
|
|
194
229
|
export interface CastSpellInput {
|
|
195
|
-
|
|
230
|
+
spellCardId: string;
|
|
231
|
+
source: BoardEntity | BoardTrinket | BgsPlayerEntity;
|
|
232
|
+
target: BoardEntity;
|
|
196
233
|
board: BoardEntity[];
|
|
197
234
|
hero: BgsPlayerEntity;
|
|
198
235
|
otherBoard: BoardEntity[];
|
|
199
236
|
otherHero: BgsPlayerEntity;
|
|
200
237
|
gameState: FullGameState;
|
|
201
238
|
}
|
|
239
|
+
export interface OnDamagedInput {
|
|
240
|
+
damagedEntity: BoardEntity;
|
|
241
|
+
damageDealer: BoardEntity | BgsPlayerEntity;
|
|
242
|
+
damage: number;
|
|
243
|
+
board: BoardEntity[];
|
|
244
|
+
hero: BgsPlayerEntity;
|
|
245
|
+
gameState: FullGameState;
|
|
246
|
+
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasOnBeforeMagnetize = exports.hasOnMinionKilled = exports.hasOnAfterDeath = exports.hasOnDeath = exports.hasAfterDealDamage = exports.hasAfterHeroDamaged = exports.hasOnStatsChanged = exports.hasOnWindfuryUpdated = exports.hasOnVenomousUpdated = exports.hasOnStealthUpdated = exports.hasOnRebornUpdated = exports.hasOnTauntUpdated = exports.hasOnDivineShieldUpdated = exports.hasEndOfTurn = exports.hasOnCardAddedToHand = exports.hasDeathrattleSpawnEnchantment = exports.hasOnDeathrattleTriggered = exports.hasDefaultScriptDataNum = exports.hasAvenge = exports.hasOnBattlecryTriggered = exports.hasRebornSelfEffect = exports.hasRebornEffect = exports.hasBattlecry = exports.hasDeathrattleSpawn = exports.hasOnDespawned = exports.hasAfterOtherSpawned = exports.hasOnOtherSpawned = exports.hasOnOtherAuraSpawned = exports.hasOnSpawned = exports.hasOnMinionAttacked = exports.hasOnWheneverAnotherMinionAttacks = exports.hasRally = exports.
|
|
3
|
+
exports.hasPlayedBloodGemsOnAny = exports.hasPlayedBloodGemsOnMe = exports.hasOnSpawnFail = exports.hasOnAfterMagnetize = exports.hasOnBeforeMagnetize = exports.hasOnMinionKilled = exports.hasOnAfterDeath = exports.hasOnDeath = exports.hasAfterDealDamage = exports.hasOnDamaged = exports.hasAfterHeroDamaged = exports.hasOnStatsChanged = exports.hasOnWindfuryUpdated = exports.hasOnVenomousUpdated = exports.hasOnStealthUpdated = exports.hasOnRebornUpdated = exports.hasOnTauntUpdated = exports.hasOnDivineShieldUpdated = exports.hasEndOfTurn = exports.hasOnCardAddedToHand = exports.hasDeathrattleSpawnEnchantment = exports.hasOnDeathrattleTriggered = exports.hasDefaultScriptDataNum = exports.hasAvenge = exports.hasOnBattlecryTriggered = exports.hasRebornSelfEffect = exports.hasRebornEffect = exports.hasBattlecry = exports.hasDeathrattleSpawn = exports.hasOnDespawned = exports.hasAfterOtherSpawned = exports.hasOnOtherSpawned = exports.hasOnOtherAuraSpawned = exports.hasOnSpawned = exports.hasOnMinionAttacked = exports.hasOnWheneverAnotherMinionAttacks = exports.hasRally = exports.hasAfterTavernSpellCast = exports.hasOnTavernSpellCast = exports.hasCastTavernSpell = exports.hasStartOfCombatFromHand = exports.hasStartOfCombat = exports.hasDefaultCharges = void 0;
|
|
4
4
|
const hasDefaultCharges = (card) => (card === null || card === void 0 ? void 0 : card.defaultCharges) !== undefined;
|
|
5
5
|
exports.hasDefaultCharges = hasDefaultCharges;
|
|
6
6
|
const hasStartOfCombat = (card) => (card === null || card === void 0 ? void 0 : card.startOfCombat) !== undefined;
|
|
7
7
|
exports.hasStartOfCombat = hasStartOfCombat;
|
|
8
8
|
const hasStartOfCombatFromHand = (card) => (card === null || card === void 0 ? void 0 : card.startOfCombatFromHand) !== undefined;
|
|
9
9
|
exports.hasStartOfCombatFromHand = hasStartOfCombatFromHand;
|
|
10
|
-
const
|
|
11
|
-
exports.
|
|
10
|
+
const hasCastTavernSpell = (card) => (card === null || card === void 0 ? void 0 : card.castTavernSpell) !== undefined;
|
|
11
|
+
exports.hasCastTavernSpell = hasCastTavernSpell;
|
|
12
|
+
const hasOnTavernSpellCast = (card) => (card === null || card === void 0 ? void 0 : card.onTavernSpellCast) !== undefined;
|
|
13
|
+
exports.hasOnTavernSpellCast = hasOnTavernSpellCast;
|
|
14
|
+
const hasAfterTavernSpellCast = (card) => (card === null || card === void 0 ? void 0 : card.afterTavernSpellCast) !== undefined;
|
|
15
|
+
exports.hasAfterTavernSpellCast = hasAfterTavernSpellCast;
|
|
12
16
|
const hasRally = (card) => (card === null || card === void 0 ? void 0 : card.rally) !== undefined;
|
|
13
17
|
exports.hasRally = hasRally;
|
|
14
18
|
const hasOnWheneverAnotherMinionAttacks = (card) => (card === null || card === void 0 ? void 0 : card.onWheneverAnotherMinionAttacks) !== undefined;
|
|
@@ -63,6 +67,8 @@ const hasOnStatsChanged = (card) => (card === null || card === void 0 ? void 0 :
|
|
|
63
67
|
exports.hasOnStatsChanged = hasOnStatsChanged;
|
|
64
68
|
const hasAfterHeroDamaged = (card) => (card === null || card === void 0 ? void 0 : card.afterHeroDamaged) !== undefined;
|
|
65
69
|
exports.hasAfterHeroDamaged = hasAfterHeroDamaged;
|
|
70
|
+
const hasOnDamaged = (card) => (card === null || card === void 0 ? void 0 : card.onDamaged) !== undefined;
|
|
71
|
+
exports.hasOnDamaged = hasOnDamaged;
|
|
66
72
|
const hasAfterDealDamage = (card) => (card === null || card === void 0 ? void 0 : card.afterDealDamage) !== undefined;
|
|
67
73
|
exports.hasAfterDealDamage = hasAfterDealDamage;
|
|
68
74
|
const hasOnDeath = (card) => (card === null || card === void 0 ? void 0 : card.onDeath) !== undefined;
|
|
@@ -73,4 +79,12 @@ const hasOnMinionKilled = (card) => (card === null || card === void 0 ? void 0 :
|
|
|
73
79
|
exports.hasOnMinionKilled = hasOnMinionKilled;
|
|
74
80
|
const hasOnBeforeMagnetize = (card) => (card === null || card === void 0 ? void 0 : card.onBeforeMagnetize) !== undefined;
|
|
75
81
|
exports.hasOnBeforeMagnetize = hasOnBeforeMagnetize;
|
|
82
|
+
const hasOnAfterMagnetize = (card) => (card === null || card === void 0 ? void 0 : card.onAfterMagnetize) !== undefined;
|
|
83
|
+
exports.hasOnAfterMagnetize = hasOnAfterMagnetize;
|
|
84
|
+
const hasOnSpawnFail = (card) => (card === null || card === void 0 ? void 0 : card.onSpawnFail) !== undefined;
|
|
85
|
+
exports.hasOnSpawnFail = hasOnSpawnFail;
|
|
86
|
+
const hasPlayedBloodGemsOnMe = (card) => (card === null || card === void 0 ? void 0 : card.playedBloodGemsOnMe) !== undefined;
|
|
87
|
+
exports.hasPlayedBloodGemsOnMe = hasPlayedBloodGemsOnMe;
|
|
88
|
+
const hasPlayedBloodGemsOnAny = (card) => (card === null || card === void 0 ? void 0 : card.playedBloodGemsOnAny) !== undefined;
|
|
89
|
+
exports.hasPlayedBloodGemsOnAny = hasPlayedBloodGemsOnAny;
|
|
76
90
|
//# sourceMappingURL=card.interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\r\nimport { BoardSecret } from '../board-secret';\r\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\r\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\r\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\r\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\r\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\r\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\r\nimport {\r\n\tOnDespawnInput,\r\n\tOnOtherSpawnAuraInput,\r\n\tOnOtherSpawnInput,\r\n\tOnSpawnInput,\r\n} from '../simulation/add-minion-to-board';\r\nimport { OnAfterDeathInput, OnDeathInput, OnMinionKilledInput } from '../simulation/attack';\r\nimport { AvengeInput } from '../simulation/avenge';\r\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\r\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\r\nimport { AfterDealDamageInput } from '../simulation/damage-effects';\r\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\r\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { OnBeforeMagnetizeInput } from '../simulation/magnetize';\r\nimport { OnAttackInput } from '../simulation/on-attack';\r\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\r\nimport { RebornEffectInput } from '../simulation/reborn';\r\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\r\nimport { OnStatsChangedInput } from '../simulation/stats';\r\n\r\nexport interface Card {\r\n\t// Maybe should make this mandatory\r\n\tcardIds?: readonly string[];\r\n\tstartOfCombat?: (\r\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\r\n\t\tinput: SoCInput,\r\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\n\r\nexport interface DefaultChargesCard extends Card {\r\n\tdefaultCharges: (entity: BoardEntity) => number;\r\n}\r\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\r\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\r\n\r\nexport interface StartOfCombatCard extends Card {\r\n\tstartOfCombatTiming?: StartOfCombatTiming;\r\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\r\n}\r\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\r\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\r\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\r\n\tstartOfCombatFromHand: true;\r\n}\r\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\r\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\r\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\r\n\r\nexport interface SpellCard extends Card {\r\n\tcastSpell: (spellCardId: string, input: CastSpellInput) => void;\r\n}\r\nexport const hasCastSpell = (card: Card): card is SpellCard => (card as SpellCard)?.castSpell !== undefined;\r\n\r\n// Whenever this attacks\r\nexport interface RallyCard extends Card {\r\n\trally: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\r\n\r\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\r\n\tonWheneverAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\r\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\r\n\r\nexport interface OnMinionAttackedCard extends Card {\r\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\r\n}\r\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\r\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\r\n\r\nexport interface OnSpawnedCard extends Card {\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\r\n}\r\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\r\n\r\nexport interface OnOtherSpawnedAuraCard extends Card {\r\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\r\n}\r\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\r\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\r\n\r\nexport interface OnOtherSpawnedCard extends Card {\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\r\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\r\n\r\nexport interface AfterOtherSpawnedCard extends Card {\r\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\r\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\r\n\r\nexport interface OnDespawnedCard extends Card {\r\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\r\n}\r\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\r\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\r\n\r\nexport interface DeathrattleSpawnCard extends Card {\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\r\n}\r\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\r\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\r\n\r\nexport interface BattlecryCard extends Card {\r\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\r\n\t// is in game)\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\r\n}\r\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\r\n\r\nexport interface RebornEffectCard extends Card {\r\n\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\r\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\r\n\r\nexport interface RebornSelfEffectCard extends Card {\r\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\r\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\r\n\r\nexport interface OnBattlecryTriggeredCard extends Card {\r\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\r\n}\r\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\r\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\r\n\r\nexport interface AvengeCard extends Card {\r\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\r\n\tbaseAvengeValue: (cardId: string) => number;\r\n}\r\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\r\n\r\nexport interface DefaultScriptDataNumCard extends Card {\r\n\tdefaultScriptDataNum: (cardId: string) => number;\r\n}\r\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\r\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\r\n\r\n/** To use when another deathrattle is triggered */\r\nexport interface DeathrattleTriggeredCard extends Card {\r\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\r\n}\r\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\r\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\r\n\r\n// export interface DeathrattleEnchantmentEffectCard extends Card {\r\n// \tdeathrattleEffectEnchantmentEffect: (\r\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\r\n// \t\tinput: DeathrattleTriggeredInput,\r\n// \t) => void;\r\n// \tcardIds: readonly string[];\r\n// }\r\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\r\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\r\n\r\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: { cardId: string; originEntityId?: number; repeats?: number },\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => readonly BoardEntity[];\r\n\tcardIds: readonly string[];\r\n}\r\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\r\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\r\n\r\nexport interface OnCardAddedToHandCard extends Card {\r\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity, input: OnCardAddedToHandInput) => void;\r\n}\r\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\r\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\r\n\r\nexport interface EndOfTurnCard extends Card {\r\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\r\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\r\n}\r\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\r\nexport type EndOfTurnInput = BattlecryInput;\r\n\r\nexport interface OnDivineShieldUpdatedCard extends Card {\r\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\r\n}\r\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\r\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\r\n\r\nexport interface OnTauntUpdatedCard extends Card {\r\n\tonTauntUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnTauntUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\r\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\r\n\r\nexport interface OnRebornUpdatedCard extends Card {\r\n\tonRebornUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnRebornUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\r\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\r\n\r\nexport interface OnStealthUpdatedCard extends Card {\r\n\tonStealthUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnStealthUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\r\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\r\n\r\nexport interface OnVenomousUpdatedCard extends Card {\r\n\tonVenomousUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnVenomousUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\r\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\r\n\r\nexport interface OnWindfuryUpdatedCard extends Card {\r\n\tonWindfuryUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnWindfuryUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\r\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\r\n\r\nexport interface OnStatsChangedCard extends Card {\r\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\r\n}\r\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\r\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\r\n\r\nexport interface AfterHeroDamagedCard extends Card {\r\n\tafterHeroDamaged: (entity: BoardEntity, input: AfterHeroDamagedInput) => void;\r\n}\r\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\r\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\r\n\r\nexport interface AfterDealDamageCard extends Card {\r\n\t// Called whenever damage is dealt, both on the friendly and enemy side\r\n\t// So you need to check the \"friendly\" flag\r\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\r\n}\r\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\r\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\r\n\r\nexport interface OnDeathCard extends Card {\r\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\r\n}\r\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\r\n\r\nexport interface OnAfterDeathCard extends Card {\r\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\r\n}\r\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\r\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\r\n\r\nexport interface OnMinionKilledCard extends Card {\r\n\tonMinionKilled: (\r\n\t\tentity: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\r\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeCard extends Card {\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => void;\r\n}\r\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\r\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\r\n\r\nexport interface CastSpellInput {\r\n\tsource: 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":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\r\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\r\nimport { BoardSecret } from '../board-secret';\r\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\r\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\r\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\r\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\r\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\r\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\r\nimport {\r\n\tOnDespawnInput,\r\n\tOnOtherSpawnAuraInput,\r\n\tOnOtherSpawnInput,\r\n\tOnSpawnInput,\r\n} from '../simulation/add-minion-to-board';\r\nimport { OnAfterDeathInput, OnDeathInput, OnMinionKilledInput } from '../simulation/attack';\r\nimport { AvengeInput } from '../simulation/avenge';\r\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\r\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\r\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\r\nimport { AfterDealDamageInput } from '../simulation/damage-effects';\r\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\r\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\r\nimport { FullGameState } from '../simulation/internal-game-state';\r\nimport { OnAfterMagnetizeInput, OnBeforeMagnetizeInput } from '../simulation/magnetize';\r\nimport { OnAttackInput } from '../simulation/on-attack';\r\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\r\nimport { RebornEffectInput } from '../simulation/reborn';\r\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\r\nimport { OnStatsChangedInput } from '../simulation/stats';\r\n\r\nexport interface Card {\r\n\t// Maybe should make this mandatory\r\n\tcardIds?: readonly string[];\r\n\tstartOfCombat?: (\r\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\r\n\t\tinput: SoCInput,\r\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\r\n}\r\n\r\nexport interface DefaultChargesCard extends Card {\r\n\tdefaultCharges: (entity: BoardEntity) => number;\r\n}\r\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\r\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\r\n\r\nexport interface StartOfCombatCard extends Card {\r\n\tstartOfCombatTiming?: StartOfCombatTiming;\r\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\r\n}\r\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\r\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\r\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\r\n\tstartOfCombatFromHand: true;\r\n}\r\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\r\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\r\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\r\n\r\nexport interface TavernSpellCard extends Card {\r\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\r\n}\r\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\r\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\r\n\r\nexport interface OnTavernSpellCastCard extends Card {\r\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\r\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\r\n\r\nexport interface AfterTavernSpellCastCard extends Card {\r\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\r\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\r\n\r\n// Whenever this attacks\r\nexport interface RallyCard extends Card {\r\n\trally: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\r\n\r\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\r\n\tonWheneverAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\r\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\r\n\r\nexport interface OnMinionAttackedCard extends Card {\r\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\r\n}\r\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\r\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\r\n\r\nexport interface OnSpawnedCard extends Card {\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\r\n}\r\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\r\n\r\nexport interface OnOtherSpawnedAuraCard extends Card {\r\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\r\n}\r\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\r\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\r\n\r\nexport interface OnOtherSpawnedCard extends Card {\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\r\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\r\n\r\nexport interface AfterOtherSpawnedCard extends Card {\r\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\r\n}\r\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\r\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\r\n\r\nexport interface OnDespawnedCard extends Card {\r\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\r\n}\r\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\r\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\r\n\r\nexport interface DeathrattleSpawnCard extends Card {\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\r\n}\r\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\r\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\r\n\r\nexport interface BattlecryCard extends Card {\r\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\r\n\t// is in game)\r\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\r\n}\r\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\r\n\r\nexport interface RebornEffectCard extends Card {\r\n\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\r\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\r\n\r\nexport interface RebornSelfEffectCard extends Card {\r\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\r\n}\r\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\r\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\r\n\r\nexport interface OnBattlecryTriggeredCard extends Card {\r\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\r\n}\r\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\r\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\r\n\r\nexport interface AvengeCard extends Card {\r\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\r\n\tbaseAvengeValue: (cardId: string) => number;\r\n}\r\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\r\n\r\nexport interface DefaultScriptDataNumCard extends Card {\r\n\tdefaultScriptDataNum: (cardId: string) => number;\r\n}\r\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\r\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\r\n\r\n/** To use when another deathrattle is triggered */\r\nexport interface DeathrattleTriggeredCard extends Card {\r\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\r\n}\r\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\r\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\r\n\r\n// export interface DeathrattleEnchantmentEffectCard extends Card {\r\n// \tdeathrattleEffectEnchantmentEffect: (\r\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\r\n// \t\tinput: DeathrattleTriggeredInput,\r\n// \t) => void;\r\n// \tcardIds: readonly string[];\r\n// }\r\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\r\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\r\n\r\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\r\n\tdeathrattleSpawnEnchantmentEffect: (\r\n\t\tenchantment: { cardId: string; originEntityId?: number; repeats?: number },\r\n\t\tminion: BoardEntity | null | undefined,\r\n\t\tinput: DeathrattleTriggeredInput,\r\n\t) => readonly BoardEntity[];\r\n\tcardIds: readonly string[];\r\n}\r\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\r\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\r\n\r\nexport interface OnCardAddedToHandCard extends Card {\r\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity, input: OnCardAddedToHandInput) => void;\r\n}\r\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\r\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\r\n\r\nexport interface EndOfTurnCard extends Card {\r\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\r\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\r\n}\r\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\r\nexport type EndOfTurnInput = BattlecryInput;\r\n\r\nexport interface OnDivineShieldUpdatedCard extends Card {\r\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\r\n}\r\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\r\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\r\n\r\nexport interface OnTauntUpdatedCard extends Card {\r\n\tonTauntUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnTauntUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\r\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\r\n\r\nexport interface OnRebornUpdatedCard extends Card {\r\n\tonRebornUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnRebornUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\r\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\r\n\r\nexport interface OnStealthUpdatedCard extends Card {\r\n\tonStealthUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnStealthUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\r\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\r\n\r\nexport interface OnVenomousUpdatedCard extends Card {\r\n\tonVenomousUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnVenomousUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\r\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\r\n\r\nexport interface OnWindfuryUpdatedCard extends Card {\r\n\tonWindfuryUpdated: (\r\n\t\tentity: BoardEntity,\r\n\t\timpactedEntity: BoardEntity,\r\n\t\tpreviousValue: boolean,\r\n\t\tinput: OnWindfuryUpdatedInput,\r\n\t) => void;\r\n}\r\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\r\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\r\n\r\nexport interface OnStatsChangedCard extends Card {\r\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\r\n}\r\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\r\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\r\n\r\nexport interface AfterHeroDamagedCard extends Card {\r\n\tafterHeroDamaged: (entity: BoardEntity, input: AfterHeroDamagedInput) => void;\r\n}\r\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\r\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\r\n\r\nexport interface OnDamagedCard extends Card {\r\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\r\n}\r\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\r\n\r\nexport interface AfterDealDamageCard extends Card {\r\n\t// Called whenever damage is dealt, both on the friendly and enemy side\r\n\t// So you need to check the \"friendly\" flag\r\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\r\n}\r\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\r\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\r\n\r\nexport interface OnDeathCard extends Card {\r\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\r\n}\r\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\r\n\r\nexport interface OnAfterDeathCard extends Card {\r\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\r\n}\r\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\r\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\r\n\r\nexport interface OnMinionKilledCard extends Card {\r\n\tonMinionKilled: (\r\n\t\tentity: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\r\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\r\n\r\nexport interface OnBeforeMagnetizeCard extends Card {\r\n\tonBeforeMagnetize: (entity: BoardEntity, input: OnBeforeMagnetizeInput) => void;\r\n}\r\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\r\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\r\n\r\nexport interface OnAfterMagnetizeCard extends Card {\r\n\tonAfterMagnetize: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\r\n}\r\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\r\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\r\n\r\nexport interface OnSpawnFailCard extends Card {\r\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\r\n}\r\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\r\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnMeCard extends Card {\r\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\r\n}\r\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\r\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\r\n\r\nexport interface PlayedBloodGemsOnAnyCard extends Card {\r\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\r\n}\r\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\r\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\r\n\r\nexport interface OnSpawnFailInput {\r\n\tfailedSpawn: BoardEntity;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n\r\nexport interface CastSpellInput {\r\n\tspellCardId: string;\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\nexport interface OnDamagedInput {\r\n\tdamagedEntity: BoardEntity;\r\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\r\n\tdamage: number;\r\n\tboard: BoardEntity[];\r\n\thero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AllCardsService, GameTag, Race, ReferenceCard } from '@firestone-hs/reference-data';
|
|
2
|
+
import { BgsPlayerEntity } from '../bgs-player-entity';
|
|
2
3
|
import { BoardEntity } from '../board-entity';
|
|
3
4
|
import { CardIds } from '../services/card-ids';
|
|
4
5
|
export declare const WHELP_CARD_IDS: CardIds[];
|
|
@@ -17,6 +18,8 @@ export declare class CardsData {
|
|
|
17
18
|
beastSpawns: readonly string[];
|
|
18
19
|
scrapScraperSpawns: readonly string[];
|
|
19
20
|
endOfTurnMinions: readonly string[];
|
|
21
|
+
magneticMinions: readonly ReferenceCard[];
|
|
22
|
+
spellcraftPool: readonly ReferenceCard[];
|
|
20
23
|
putricidePool1: readonly string[];
|
|
21
24
|
putricidePool2: readonly string[];
|
|
22
25
|
putridicePool2ForEternalSummoner: readonly string[];
|
|
@@ -30,11 +33,16 @@ export declare class CardsData {
|
|
|
30
33
|
getRandomMinionForTavernTier(tavernTier: number): string;
|
|
31
34
|
getRandomMinionForMinTavernTier(tavernTier: number): string;
|
|
32
35
|
getRandomMechToMagnetize(tavernLimitUpper: number): string;
|
|
36
|
+
getRandomMagneticVolumizer(playerEntity: BgsPlayerEntity, anomalies: readonly string[], tavernLimitUpper: number): string;
|
|
33
37
|
getRandomDivineShield(tavernLimitUpper: number): string;
|
|
34
38
|
getRandomRally(tavernLimitUpper: number): string;
|
|
35
39
|
getRandomMinionForTribe(tribe: Race, tavernLimitUpper: number, excludedCards?: readonly string[]): string;
|
|
36
40
|
getRandomProtossMinion(tavernLimitUpper: number): string;
|
|
41
|
+
getRandomSpellcraft(): string;
|
|
37
42
|
isGolden(card: ReferenceCard): boolean;
|
|
38
43
|
private isValidTribe;
|
|
39
|
-
getRandomTavernSpell(
|
|
44
|
+
getRandomTavernSpell(options?: {
|
|
45
|
+
exactTavernTier?: number;
|
|
46
|
+
maxTavernTier?: number;
|
|
47
|
+
}): string;
|
|
40
48
|
}
|
package/dist/cards/cards-data.js
CHANGED
|
@@ -90,6 +90,13 @@ class CardsData {
|
|
|
90
90
|
this.endOfTurnMinions = this.pool
|
|
91
91
|
.filter((card) => (0, utils_2.hasMechanic)(card, reference_data_1.GameTag.END_OF_TURN))
|
|
92
92
|
.map((card) => card.id);
|
|
93
|
+
this.magneticMinions = this.pool.filter((card) => (0, utils_2.hasMechanic)(card, reference_data_1.GameTag.MAGNETIC));
|
|
94
|
+
this.spellcraftPool = this.allCards
|
|
95
|
+
.getCards()
|
|
96
|
+
.filter((c) => c.spellSchool === reference_data_1.SpellSchool[reference_data_1.SpellSchool.SPELLCRAFT])
|
|
97
|
+
.filter((c) => !c.premium)
|
|
98
|
+
.filter((c) => c.set === 'Battlegrounds')
|
|
99
|
+
.filter((c) => _card_mappings_1.cardMappings[c.id] != null);
|
|
93
100
|
this.putricidePool1 = this.allCards
|
|
94
101
|
.getCards()
|
|
95
102
|
.filter((card) => card.battlegroundsPutridicePool1)
|
|
@@ -112,6 +119,7 @@ class CardsData {
|
|
|
112
119
|
switch (cardId) {
|
|
113
120
|
case "BG25_014":
|
|
114
121
|
case "BG25_014_G":
|
|
122
|
+
return 1;
|
|
115
123
|
case "BG21_023":
|
|
116
124
|
case "BG21_023_G":
|
|
117
125
|
case "BG21_001":
|
|
@@ -121,12 +129,6 @@ class CardsData {
|
|
|
121
129
|
case "BG26_157":
|
|
122
130
|
case "BG26_157_G":
|
|
123
131
|
return 2;
|
|
124
|
-
case "BG21_030":
|
|
125
|
-
case "BG21_030_G":
|
|
126
|
-
case "BG23_014":
|
|
127
|
-
case "BG23_014_G":
|
|
128
|
-
case "BG21_038":
|
|
129
|
-
case "BG21_038_G":
|
|
130
132
|
case "BG27_Reward_502":
|
|
131
133
|
case "BG28_967":
|
|
132
134
|
case "BG28_967_G":
|
|
@@ -215,6 +217,12 @@ class CardsData {
|
|
|
215
217
|
const pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);
|
|
216
218
|
return (_a = (0, utils_1.pickRandom)(pool)) === null || _a === void 0 ? void 0 : _a.id;
|
|
217
219
|
}
|
|
220
|
+
getRandomMagneticVolumizer(playerEntity, anomalies, tavernLimitUpper) {
|
|
221
|
+
var _a;
|
|
222
|
+
const magneticVolumizers = this.magneticMinions.filter((m) => (0, utils_2.isVolumizer)(m.id, playerEntity, anomalies, this.allCards));
|
|
223
|
+
const pool = magneticVolumizers.filter((m) => m.techLevel <= tavernLimitUpper);
|
|
224
|
+
return (_a = (0, utils_1.pickRandom)(pool)) === null || _a === void 0 ? void 0 : _a.id;
|
|
225
|
+
}
|
|
218
226
|
getRandomDivineShield(tavernLimitUpper) {
|
|
219
227
|
var _a;
|
|
220
228
|
const divineShieldPool = this.pool
|
|
@@ -248,6 +256,10 @@ class CardsData {
|
|
|
248
256
|
.filter((m) => m.techLevel <= tavernLimitUpper);
|
|
249
257
|
return (_a = (0, utils_1.pickRandom)(pool)) === null || _a === void 0 ? void 0 : _a.id;
|
|
250
258
|
}
|
|
259
|
+
getRandomSpellcraft() {
|
|
260
|
+
var _a;
|
|
261
|
+
return (_a = (0, utils_1.pickRandom)(this.spellcraftPool)) === null || _a === void 0 ? void 0 : _a.id;
|
|
262
|
+
}
|
|
251
263
|
isGolden(card) {
|
|
252
264
|
return card.premium;
|
|
253
265
|
}
|
|
@@ -259,7 +271,7 @@ class CardsData {
|
|
|
259
271
|
.map((race) => (0, utils_2.getRaceEnum)(race))
|
|
260
272
|
.some((raceEnum) => raceEnum === reference_data_1.Race.ALL || !(validTribes === null || validTribes === void 0 ? void 0 : validTribes.length) || validTribes.includes(raceEnum));
|
|
261
273
|
}
|
|
262
|
-
getRandomTavernSpell() {
|
|
274
|
+
getRandomTavernSpell(options) {
|
|
263
275
|
return null;
|
|
264
276
|
}
|
|
265
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tAllCardsService,\r\n\tCardType,\r\n\tGameTag,\r\n\tisBattlegroundsCard,\r\n\tRace,\r\n\tReferenceCard,\r\n} from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { groupByFunction, pickRandom } from '../services/utils';\r\nimport { getRaceEnum, hasMechanic, isCorrectTribe } from '../utils';\r\nimport { hasAvenge, hasDefaultScriptDataNum } from './card.interface';\r\nimport { cardMappings } from './impl/_card-mappings';\r\n\r\nexport const WHELP_CARD_IDS = [\r\n\t// CardIds.RedWhelp_BGS_019,\r\n\t// CardIds.RedWhelp_TB_BaconUps_102,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\n\r\nexport const validBonusKeywords = [\r\n\tGameTag.TAUNT,\r\n\tGameTag.DIVINE_SHIELD,\r\n\tGameTag.VENOMOUS,\r\n\tGameTag.POISONOUS,\r\n\tGameTag.WINDFURY,\r\n\tGameTag.STEALTH,\r\n\tGameTag.REBORN,\r\n];\r\n\r\nexport const hasKeyword = (entity: BoardEntity, keyword: GameTag) => {\r\n\tswitch (keyword) {\r\n\t\tcase GameTag.TAUNT:\r\n\t\t\treturn entity.taunt;\r\n\t\tcase GameTag.DIVINE_SHIELD:\r\n\t\t\treturn entity.divineShield;\r\n\t\tcase GameTag.VENOMOUS:\r\n\t\t\treturn entity.venomous;\r\n\t\tcase GameTag.WINDFURY:\r\n\t\t\treturn entity.windfury;\r\n\t\tcase GameTag.STEALTH:\r\n\t\t\treturn entity.stealth;\r\n\t\tcase GameTag.REBORN:\r\n\t\t\treturn entity.reborn;\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t}\r\n};\r\n\r\nexport class CardsData {\r\n\tpublic ghastcoilerSpawns: readonly string[];\r\n\tpublic impMamaSpawns: readonly string[];\r\n\tpublic demonSpawns: readonly string[];\r\n\tpublic gentleDjinniSpawns: readonly string[];\r\n\tpublic kilrekSpawns: readonly string[];\r\n\tpublic battlecryMinions: readonly string[];\r\n\tpublic deathrattleMinions: readonly string[];\r\n\tpublic pirateSpawns: readonly string[];\r\n\tpublic beastSpawns: readonly string[];\r\n\tpublic scrapScraperSpawns: readonly string[];\r\n\tpublic endOfTurnMinions: readonly string[];\r\n\r\n\tpublic putricidePool1: readonly string[];\r\n\tpublic putricidePool2: readonly string[];\r\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\r\n\r\n\tprivate pool: readonly ReferenceCard[];\r\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\r\n\r\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\r\n\t\tif (init) {\r\n\t\t\tthis.inititialize();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\r\n\t\tconst poolWithGolden = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => isBattlegroundsCard(card))\r\n\t\t\t// Premiums are not in bacon pool\r\n\t\t\t.filter((card) => card.isBaconPool || this.allCards.getCard(card.battlegroundsNormalDbfId)?.isBaconPool)\r\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((card) => !hasMechanic(card, GameTag.BACON_BUDDY))\r\n\t\t\t.filter((card) => card.set !== 'Vanilla')\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\r\n\t\t\t\t\t? card.techLevel >= 3\r\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\r\n\t\t\t\t\t? card.techLevel <= 4\r\n\t\t\t\t\t: true,\r\n\t\t\t);\r\n\t\tthis.pool = poolWithGolden\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\r\n\t\t\t\t\t? this.isGolden(card)\r\n\t\t\t\t\t: !this.isGolden(card),\r\n\t\t\t);\r\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\r\n\t\tthis.ghastcoilerSpawns = this.pool\r\n\t\t\t.filter((card) => card.id !== 'BGS_008')\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\r\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\r\n\t\tthis.gentleDjinniSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\r\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\r\n\t\t\t.map((card) => card.id);\r\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\r\n\t\t// this.festergutSpawns = pool\r\n\t\t// \t.filter((card) => !this.isGolden(card))\r\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\r\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\r\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\r\n\t\t// \t.map((card) => card.id);\r\n\t\tthis.kilrekSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\r\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, GameTag.BATTLECRY)).map((card) => card.id);\r\n\t\tthis.deathrattleMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\r\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\r\n\t\tthis.scrapScraperSpawns = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.MAGNETIC))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.endOfTurnMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.END_OF_TURN))\r\n\t\t\t.map((card) => card.id);\r\n\r\n\t\tthis.putricidePool1 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putricidePool2 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\r\n\t\t\t.map((card) => card.id);\r\n\t}\r\n\r\n\tpublic avengeValue(cardId: string): number {\r\n\t\tconst avengeImpl = cardMappings[cardId];\r\n\t\tif (hasAvenge(avengeImpl)) {\r\n\t\t\treturn avengeImpl.baseAvengeValue(cardId);\r\n\t\t}\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t// case CardIds.IceSickle:\r\n\t\t\t// \treturn 1;\r\n\t\t\t// case CardIds.GhoulOfTheFeast_BG25_002:\r\n\t\t\t// case CardIds.GhoulOfTheFeast_BG25_002_G:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\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\tcase CardIds.Bristlebach_BG26_157:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030:\r\n\t\t\tcase CardIds.BuddingGreenthumb_BG21_030_G:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014:\r\n\t\t\tcase CardIds.PashmarTheVengeful_BG23_014_G:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038:\r\n\t\t\tcase CardIds.WitchwingNestmatron_BG21_038_G:\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\tcase CardIds.FridgeMagnet_BG30_MagicItem_545:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.GilneanThornedRose_BG30_MagicItem_864:\r\n\t\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\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// case CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\tcase CardIds.QuilligraphySet_QuilligraphySetToken_BG30_MagicItem_410t2:\r\n\t\t\tcase CardIds.QuilligraphySet_BG30_MagicItem_410:\r\n\t\t\t\treturn 4;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\t\treturn 5;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\treturn 7;\r\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\r\n\t\t\t\treturn 9;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tpublic defaultScriptDataNum(cardId: string): number {\r\n\t\tconst defaultScriptDataNumImpl = cardMappings[cardId];\r\n\t\tif (hasDefaultScriptDataNum(defaultScriptDataNumImpl)) {\r\n\t\t\treturn defaultScriptDataNumImpl.defaultScriptDataNum(cardId);\r\n\t\t}\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\r\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\r\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\r\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\r\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\r\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\r\n\t\t\tcase CardIds.FaerieDragonScale_BG32_MagicItem_363:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\treturn 5;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getTavernLevel(cardId: string): number {\r\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\r\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\r\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\r\n\t\t// level seems to work in all cases\r\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(minionsForTier)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForMinTavernTier(tavernTier: number): string {\r\n\t\tconst minionsForTier = this.pool.filter((m) => m.techLevel >= tavernTier);\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(minionsForTier)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\r\n\t\tconst magneticMechs = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.MODULAR));\r\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomDivineShield(tavernLimitUpper: number) {\r\n\t\tconst divineShieldPool = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.DIVINE_SHIELD));\r\n\t\tconst pool = divineShieldPool.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomRally(tavernLimitUpper: number) {\r\n\t\tconst targetPool = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.BACON_RALLY));\r\n\t\tconst pool = targetPool.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTribe(\r\n\t\ttribe: Race,\r\n\t\ttavernLimitUpper: number,\r\n\t\texcludedCards: readonly string[] = [],\r\n\t): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper)\r\n\t\t\t.filter((m) => !excludedCards.includes(m.id));\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomProtossMinion(tavernLimitUpper: number): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => m.mechanics?.includes(GameTag[GameTag.PROTOSS]))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic isGolden(card: ReferenceCard): boolean {\r\n\t\treturn card.premium;\r\n\t}\r\n\r\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\r\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn (cardRaces ?? [])\r\n\t\t\t.map((race) => getRaceEnum(race))\r\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\r\n\t}\r\n\r\n\tpublic getRandomTavernSpell(): string {\r\n\t\treturn null;\r\n\t}\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\r\n\tAllCardsService,\r\n\tCardType,\r\n\tGameTag,\r\n\tisBattlegroundsCard,\r\n\tRace,\r\n\tReferenceCard,\r\n\tSpellSchool,\r\n} from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { CardIds } from '../services/card-ids';\r\nimport { groupByFunction, pickRandom } from '../services/utils';\r\nimport { getRaceEnum, hasMechanic, isCorrectTribe, isVolumizer } from '../utils';\r\nimport { hasAvenge, hasDefaultScriptDataNum } from './card.interface';\r\nimport { cardMappings } from './impl/_card-mappings';\r\n\r\nexport const WHELP_CARD_IDS = [\r\n\t// CardIds.RedWhelp_BGS_019,\r\n\t// CardIds.RedWhelp_TB_BaconUps_102,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n];\r\n\r\nexport const validBonusKeywords = [\r\n\tGameTag.TAUNT,\r\n\tGameTag.DIVINE_SHIELD,\r\n\tGameTag.VENOMOUS,\r\n\tGameTag.POISONOUS,\r\n\tGameTag.WINDFURY,\r\n\tGameTag.STEALTH,\r\n\tGameTag.REBORN,\r\n];\r\n\r\nexport const hasKeyword = (entity: BoardEntity, keyword: GameTag) => {\r\n\tswitch (keyword) {\r\n\t\tcase GameTag.TAUNT:\r\n\t\t\treturn entity.taunt;\r\n\t\tcase GameTag.DIVINE_SHIELD:\r\n\t\t\treturn entity.divineShield;\r\n\t\tcase GameTag.VENOMOUS:\r\n\t\t\treturn entity.venomous;\r\n\t\tcase GameTag.WINDFURY:\r\n\t\t\treturn entity.windfury;\r\n\t\tcase GameTag.STEALTH:\r\n\t\t\treturn entity.stealth;\r\n\t\tcase GameTag.REBORN:\r\n\t\t\treturn entity.reborn;\r\n\t\tdefault:\r\n\t\t\treturn false;\r\n\t}\r\n};\r\n\r\nexport class CardsData {\r\n\tpublic ghastcoilerSpawns: readonly string[];\r\n\tpublic impMamaSpawns: readonly string[];\r\n\tpublic demonSpawns: readonly string[];\r\n\tpublic gentleDjinniSpawns: readonly string[];\r\n\tpublic kilrekSpawns: readonly string[];\r\n\tpublic battlecryMinions: readonly string[];\r\n\tpublic deathrattleMinions: readonly string[];\r\n\tpublic pirateSpawns: readonly string[];\r\n\tpublic beastSpawns: readonly string[];\r\n\tpublic scrapScraperSpawns: readonly string[];\r\n\tpublic endOfTurnMinions: readonly string[];\r\n\tpublic magneticMinions: readonly ReferenceCard[];\r\n\tpublic spellcraftPool: readonly ReferenceCard[];\r\n\r\n\tpublic putricidePool1: readonly string[];\r\n\tpublic putricidePool2: readonly string[];\r\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\r\n\r\n\tprivate pool: readonly ReferenceCard[];\r\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\r\n\r\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\r\n\t\tif (init) {\r\n\t\t\tthis.inititialize();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\r\n\t\tconst poolWithGolden = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => isBattlegroundsCard(card))\r\n\t\t\t// Premiums are not in bacon pool\r\n\t\t\t.filter((card) => card.isBaconPool || this.allCards.getCard(card.battlegroundsNormalDbfId)?.isBaconPool)\r\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((card) => !hasMechanic(card, GameTag.BACON_BUDDY))\r\n\t\t\t.filter((card) => card.set !== 'Vanilla')\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\r\n\t\t\t\t\t? card.techLevel >= 3\r\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\r\n\t\t\t\t\t? card.techLevel <= 4\r\n\t\t\t\t\t: true,\r\n\t\t\t);\r\n\t\tthis.pool = poolWithGolden\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.filter((card) =>\r\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\r\n\t\t\t\t\t? this.isGolden(card)\r\n\t\t\t\t\t: !this.isGolden(card),\r\n\t\t\t);\r\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\r\n\t\tthis.ghastcoilerSpawns = this.pool\r\n\t\t\t.filter((card) => card.id !== 'BGS_008')\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\r\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\r\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\r\n\t\tthis.gentleDjinniSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\r\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\r\n\t\t\t.map((card) => card.id);\r\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\r\n\t\t// this.festergutSpawns = pool\r\n\t\t// \t.filter((card) => !this.isGolden(card))\r\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\r\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\r\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\r\n\t\t// \t.map((card) => card.id);\r\n\t\tthis.kilrekSpawns = this.pool\r\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\r\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, GameTag.BATTLECRY)).map((card) => card.id);\r\n\t\tthis.deathrattleMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\r\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\r\n\t\tthis.scrapScraperSpawns = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.MAGNETIC))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.endOfTurnMinions = this.pool\r\n\t\t\t.filter((card) => hasMechanic(card, GameTag.END_OF_TURN))\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.magneticMinions = this.pool.filter((card) => hasMechanic(card, GameTag.MAGNETIC));\r\n\t\tthis.spellcraftPool = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((c) => c.spellSchool === SpellSchool[SpellSchool.SPELLCRAFT])\r\n\t\t\t.filter((c) => !c.premium)\r\n\t\t\t.filter((c) => c.set === 'Battlegrounds')\r\n\t\t\t// Remove unimplemented ones (mainly spellcrafts that don't have sense in combat)\r\n\t\t\t.filter((c) => cardMappings[c.id] != null);\r\n\r\n\t\tthis.putricidePool1 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putricidePool2 = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.map((card) => card.id);\r\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\r\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\r\n\t\t\t.map((card) => card.id);\r\n\t}\r\n\r\n\tpublic avengeValue(cardId: string): number {\r\n\t\tconst avengeImpl = cardMappings[cardId];\r\n\t\tif (hasAvenge(avengeImpl)) {\r\n\t\t\treturn avengeImpl.baseAvengeValue(cardId);\r\n\t\t}\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\r\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\r\n\t\t\t\t// case CardIds.IceSickle:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.MechanoTank_BG21_023:\r\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\r\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\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\tcase CardIds.Bristlebach_BG26_157:\r\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\r\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\r\n\t\t\tcase CardIds.FridgeMagnet_BG30_MagicItem_545:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.GilneanThornedRose_BG30_MagicItem_864:\r\n\t\t\tcase CardIds.Onyxia_Broodmother:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\r\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\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// case CardIds.TonyTwoTusk_BG21_031:\r\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\r\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\r\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\r\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\r\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\r\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\r\n\t\t\tcase CardIds.QuilligraphySet_QuilligraphySetToken_BG30_MagicItem_410t2:\r\n\t\t\tcase CardIds.QuilligraphySet_BG30_MagicItem_410:\r\n\t\t\t\treturn 4;\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\r\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\r\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\r\n\t\t\t\treturn 5;\r\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\r\n\t\t\t\treturn 7;\r\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\r\n\t\t\t\treturn 9;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tpublic defaultScriptDataNum(cardId: string): number {\r\n\t\tconst defaultScriptDataNumImpl = cardMappings[cardId];\r\n\t\tif (hasDefaultScriptDataNum(defaultScriptDataNumImpl)) {\r\n\t\t\treturn defaultScriptDataNumImpl.defaultScriptDataNum(cardId);\r\n\t\t}\r\n\t\tswitch (cardId) {\r\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\r\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\r\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\r\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\r\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\r\n\t\t\t\treturn 1;\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\t\treturn 2;\r\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\r\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\r\n\t\t\tcase CardIds.FaerieDragonScale_BG32_MagicItem_363:\r\n\t\t\t\treturn 3;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\treturn 5;\r\n\t\t\tdefault:\r\n\t\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getTavernLevel(cardId: string): number {\r\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\r\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\r\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\r\n\t\t// level seems to work in all cases\r\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(minionsForTier)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForMinTavernTier(tavernTier: number): string {\r\n\t\tconst minionsForTier = this.pool.filter((m) => m.techLevel >= tavernTier);\r\n\t\tif (!minionsForTier?.length) {\r\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\r\n\t\t}\r\n\t\treturn pickRandom(minionsForTier)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\r\n\t\tconst magneticMechs = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.MODULAR));\r\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMagneticVolumizer(\r\n\t\tplayerEntity: BgsPlayerEntity,\r\n\t\tanomalies: readonly string[],\r\n\t\ttavernLimitUpper: number,\r\n\t): string {\r\n\t\tconst magneticVolumizers = this.magneticMinions.filter((m) =>\r\n\t\t\tisVolumizer(m.id, playerEntity, anomalies, this.allCards),\r\n\t\t);\r\n\t\tconst pool = magneticVolumizers.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomDivineShield(tavernLimitUpper: number) {\r\n\t\tconst divineShieldPool = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.DIVINE_SHIELD));\r\n\t\tconst pool = divineShieldPool.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomRally(tavernLimitUpper: number) {\r\n\t\tconst targetPool = this.pool\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => hasMechanic(m, GameTag.BACON_RALLY));\r\n\t\tconst pool = targetPool.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomMinionForTribe(\r\n\t\ttribe: Race,\r\n\t\ttavernLimitUpper: number,\r\n\t\texcludedCards: readonly string[] = [],\r\n\t): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper)\r\n\t\t\t.filter((m) => !excludedCards.includes(m.id));\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomProtossMinion(tavernLimitUpper: number): string {\r\n\t\tconst pool = this.pool\r\n\t\t\t.filter((m) => m.mechanics?.includes(GameTag[GameTag.PROTOSS]))\r\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\r\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\r\n\t\treturn pickRandom(pool)?.id;\r\n\t}\r\n\r\n\tpublic getRandomSpellcraft(): string {\r\n\t\treturn pickRandom(this.spellcraftPool)?.id;\r\n\t}\r\n\r\n\tpublic isGolden(card: ReferenceCard): boolean {\r\n\t\treturn card.premium;\r\n\t}\r\n\r\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\r\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn (cardRaces ?? [])\r\n\t\t\t.map((race) => getRaceEnum(race))\r\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\r\n\t}\r\n\r\n\tpublic getRandomTavernSpell(options?: { exactTavernTier?: number; maxTavernTier?: number }): string {\r\n\t\treturn null;\r\n\t}\r\n}\r\n"]}
|