@firestone-hs/simulate-bgs-battle 1.1.716 → 1.1.718
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-battle-info.js.map +1 -1
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +4 -2
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/sharing-is-caring.js.map +1 -1
- package/dist/cards/impl/bg-spell/toxic-tumbleweed.js.map +1 -1
- package/dist/cards/impl/hero-power/aim-high.js.map +1 -1
- package/dist/cards/impl/hero-power/aim-left.js.map +1 -1
- package/dist/cards/impl/hero-power/aim-low.js.map +1 -1
- package/dist/cards/impl/hero-power/aim-right.js.map +1 -1
- package/dist/cards/impl/hero-power/earth-invocation.js.map +1 -1
- package/dist/cards/impl/hero-power/embrace-your-rage.js.map +1 -1
- package/dist/cards/impl/hero-power/fire-invocation.js.map +1 -1
- package/dist/cards/impl/hero-power/lightning-invocation.js.map +1 -1
- package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -1
- package/dist/cards/impl/hero-power/water-invocation.js.map +1 -1
- package/dist/cards/impl/minion/all-seeing-elder.js.map +1 -1
- package/dist/cards/impl/minion/alleycat.js.map +1 -1
- package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
- package/dist/cards/impl/minion/archimonde.js.map +1 -1
- package/dist/cards/impl/minion/arid-atrocity.js.map +1 -1
- package/dist/cards/impl/minion/ashen-corruptor.js.map +1 -1
- package/dist/cards/impl/minion/assistant-guard.js.map +1 -1
- package/dist/cards/impl/minion/audacious-anchor.js.map +1 -1
- package/dist/cards/impl/minion/auto-assembler.js.map +1 -1
- package/dist/cards/impl/minion/avalanche-caller.js.map +1 -1
- package/dist/cards/impl/minion/baby-nzoth.d.ts +2 -0
- package/dist/cards/impl/minion/baby-nzoth.js +25 -0
- package/dist/cards/impl/minion/baby-nzoth.js.map +1 -0
- package/dist/cards/impl/minion/baneling.js.map +1 -1
- package/dist/cards/impl/minion/bigwig-bandit.js.map +1 -1
- package/dist/cards/impl/minion/bird-buddy.js.map +1 -1
- package/dist/cards/impl/minion/blazing-skyfin.js.map +1 -1
- package/dist/cards/impl/minion/blue-chromadrake.js +1 -1
- package/dist/cards/impl/minion/blue-chromadrake.js.map +1 -1
- package/dist/cards/impl/minion/blue-whelp.js.map +1 -1
- package/dist/cards/impl/minion/boar-gamer.js.map +1 -1
- package/dist/cards/impl/minion/briarback-bookie.js.map +1 -1
- package/dist/cards/impl/minion/bronze-steward.js.map +1 -1
- package/dist/cards/impl/minion/bubble-gunner.js.map +1 -1
- package/dist/cards/impl/minion/buzzing-vermin.js.map +1 -1
- package/dist/cards/impl/minion/cadaver-caretaker.js.map +1 -1
- package/dist/cards/impl/minion/captain-bonerender.js.map +1 -1
- package/dist/cards/impl/minion/carapace-raiser.js.map +1 -1
- package/dist/cards/impl/minion/carbonic-copy.js.map +1 -1
- package/dist/cards/impl/minion/coilskar-sapper.js.map +1 -1
- package/dist/cards/impl/minion/coldlight-diver.js.map +1 -1
- package/dist/cards/impl/minion/crystal-infuser-enchantment.js.map +1 -1
- package/dist/cards/impl/minion/cupcake-peddler.js.map +1 -1
- package/dist/cards/impl/minion/deadstomper.js.map +1 -1
- package/dist/cards/impl/minion/deathly-striker.js.map +1 -1
- package/dist/cards/impl/minion/deflecto-bot.js.map +1 -1
- package/dist/cards/impl/minion/devout-hellcaller.js.map +1 -1
- package/dist/cards/impl/minion/drakkari-embalmer.js.map +1 -1
- package/dist/cards/impl/minion/elder-taggawag.js.map +1 -1
- package/dist/cards/impl/minion/electric-synthesizer.js.map +1 -1
- package/dist/cards/impl/minion/elite-navigator.js.map +1 -1
- package/dist/cards/impl/minion/fairy-gillmother.js.map +1 -1
- package/dist/cards/impl/minion/firescale-hoarder.js.map +1 -1
- package/dist/cards/impl/minion/fireworks-fanatic.js.map +1 -1
- package/dist/cards/impl/minion/flotsam-flinger.js.map +1 -1
- package/dist/cards/impl/minion/fountain-chiller.js.map +1 -1
- package/dist/cards/impl/minion/friendly-geist.js.map +1 -1
- package/dist/cards/impl/minion/gem-rat.js.map +1 -1
- package/dist/cards/impl/minion/general-drakkisath.js.map +1 -1
- package/dist/cards/impl/minion/gentle-djinni.js.map +1 -1
- package/dist/cards/impl/minion/gentle-stag.js.map +1 -1
- package/dist/cards/impl/minion/glowing-cinder.js.map +1 -1
- package/dist/cards/impl/minion/gormling-gourmet.js.map +1 -1
- package/dist/cards/impl/minion/greedy-snaketongue.js.map +1 -1
- package/dist/cards/impl/minion/grimscale-elegist.js.map +1 -1
- package/dist/cards/impl/minion/gritty-headhunter.js.map +1 -1
- package/dist/cards/impl/minion/hackerfin.js.map +1 -1
- package/dist/cards/impl/minion/handless-forsaken.js.map +1 -1
- package/dist/cards/impl/minion/harmless-bonehead.js.map +1 -1
- package/dist/cards/impl/minion/hawkstrider-herald.js.map +1 -1
- package/dist/cards/impl/minion/holo-rover.js.map +1 -1
- package/dist/cards/impl/minion/humongozz.js.map +1 -1
- package/dist/cards/impl/minion/hungry-snapjaw.js.map +1 -1
- package/dist/cards/impl/minion/hunter-of-gatherers.js.map +1 -1
- package/dist/cards/impl/minion/ignition-specialist.js.map +1 -1
- package/dist/cards/impl/minion/immortal.js.map +1 -1
- package/dist/cards/impl/minion/implant-subject.js.map +1 -1
- package/dist/cards/impl/minion/imposing-percussionist.js.map +1 -1
- package/dist/cards/impl/minion/inspiring-underdog.js.map +1 -1
- package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -1
- package/dist/cards/impl/minion/kangors-apprentice.js.map +1 -1
- package/dist/cards/impl/minion/leeroy-the-reckless.js.map +1 -1
- package/dist/cards/impl/minion/lightfang-enforcer.js.map +1 -1
- package/dist/cards/impl/minion/lightfeather-screecher.js.map +1 -1
- package/dist/cards/impl/minion/living-azerite.js.map +1 -1
- package/dist/cards/impl/minion/lokholar-frostforger.js.map +1 -1
- package/dist/cards/impl/minion/lovesick-balladist.js.map +1 -1
- package/dist/cards/impl/minion/low-flier.js.map +1 -1
- package/dist/cards/impl/minion/lurker.js.map +1 -1
- package/dist/cards/impl/minion/manasaber.js.map +1 -1
- package/dist/cards/impl/minion/mantid-queen.js.map +1 -1
- package/dist/cards/impl/minion/marquee-ticker.js.map +1 -1
- package/dist/cards/impl/minion/maw-caster.js.map +1 -1
- package/dist/cards/impl/minion/mecha-jaraxxus.js.map +1 -1
- package/dist/cards/impl/minion/mechanized-gift-horse.js.map +1 -1
- package/dist/cards/impl/minion/mechorse.js.map +1 -1
- package/dist/cards/impl/minion/menagerie-jug.js.map +1 -1
- package/dist/cards/impl/minion/metallic-hunter.js.map +1 -1
- package/dist/cards/impl/minion/misfit-dragonling.js.map +1 -1
- package/dist/cards/impl/minion/mummifier.js.map +1 -1
- package/dist/cards/impl/minion/murkbrine-expeditioner.js.map +1 -1
- package/dist/cards/impl/minion/murky.js.map +1 -1
- package/dist/cards/impl/minion/mutated-lasher.js.map +1 -1
- package/dist/cards/impl/minion/mythrax.js.map +1 -1
- package/dist/cards/impl/minion/neon-agent.js.map +1 -1
- package/dist/cards/impl/minion/nest-swarmer.js.map +1 -1
- package/dist/cards/impl/minion/nether-drake.js.map +1 -1
- package/dist/cards/impl/minion/nightmare-par-tea-guest.js.map +1 -1
- package/dist/cards/impl/minion/nimble-hatchling.js.map +1 -1
- package/dist/cards/impl/minion/operatic-belcher.js.map +1 -1
- package/dist/cards/impl/minion/outback-smolderer.js.map +1 -1
- package/dist/cards/impl/minion/parched-wanderer.js.map +1 -1
- package/dist/cards/impl/minion/primalfin-lookout.js.map +1 -1
- package/dist/cards/impl/minion/rapscallion-recruiter.js.map +1 -1
- package/dist/cards/impl/minion/razorgore-the-untamed.js.map +1 -1
- package/dist/cards/impl/minion/red-chromadrake.js +1 -1
- package/dist/cards/impl/minion/red-chromadrake.js.map +1 -1
- package/dist/cards/impl/minion/roach.js.map +1 -1
- package/dist/cards/impl/minion/roadboar.js.map +1 -1
- package/dist/cards/impl/minion/rodeo-performer.js.map +1 -1
- package/dist/cards/impl/minion/ruins-renovator.js.map +1 -1
- package/dist/cards/impl/minion/rylak-metalhead.js.map +1 -1
- package/dist/cards/impl/minion/salty-hog.js.map +1 -1
- package/dist/cards/impl/minion/sand-swirler.js.map +1 -1
- package/dist/cards/impl/minion/sandy.js.map +1 -1
- package/dist/cards/impl/minion/sanguine-refiner.js.map +1 -1
- package/dist/cards/impl/minion/scourge-harvester.js.map +1 -1
- package/dist/cards/impl/minion/selfless-hero.js.map +1 -1
- package/dist/cards/impl/minion/shadowdancer.js.map +1 -1
- package/dist/cards/impl/minion/sharp-eyed-sabretooth.js.map +1 -1
- package/dist/cards/impl/minion/sharptooth-snapper.js.map +1 -1
- package/dist/cards/impl/minion/ship-master-eudora.js.map +1 -1
- package/dist/cards/impl/minion/shipwrecked-rascal.js.map +1 -1
- package/dist/cards/impl/minion/silver-handed-recruit.js.map +1 -1
- package/dist/cards/impl/minion/slumber-sorcerer.js.map +1 -1
- package/dist/cards/impl/minion/smolderwing.js.map +1 -1
- package/dist/cards/impl/minion/sneeds-new-shredder.d.ts +2 -0
- package/dist/cards/impl/minion/{pilot-the-shredder.js → sneeds-new-shredder.js} +7 -4
- package/dist/cards/impl/minion/sneeds-new-shredder.js.map +1 -0
- package/dist/cards/impl/minion/soul-rewinder.js.map +1 -1
- package/dist/cards/impl/minion/spacefarer.js.map +1 -1
- package/dist/cards/impl/minion/spirited-whimsydrake.js.map +1 -1
- package/dist/cards/impl/minion/springy-spriggan.js.map +1 -1
- package/dist/cards/impl/minion/stitched-salvager.js.map +1 -1
- package/dist/cards/impl/minion/stray-satyr.js.map +1 -1
- package/dist/cards/impl/minion/sun-screener.js.map +1 -1
- package/dist/cards/impl/minion/surfing-slyvar.js.map +1 -1
- package/dist/cards/impl/minion/thorncaller.js.map +1 -1
- package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -1
- package/dist/cards/impl/minion/thundering-abomination.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-embalmer.js +1 -1
- package/dist/cards/impl/minion/timewarped-embalmer.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-warghoul.js.map +1 -1
- package/dist/cards/impl/minion/tunnel-blaster.js.map +1 -1
- package/dist/cards/impl/minion/twilight-primordium.js.map +1 -1
- package/dist/cards/impl/minion/ultralisk.js.map +1 -1
- package/dist/cards/impl/minion/valiant-tiger.js.map +1 -1
- package/dist/cards/impl/minion/void-earl.js.map +1 -1
- package/dist/cards/impl/minion/vorkai-guardian.js.map +1 -1
- package/dist/cards/impl/minion/wandering-wight.js.map +1 -1
- package/dist/cards/impl/minion/whelp-smuggler.js.map +1 -1
- package/dist/cards/impl/minion/whirring-protector-enchantment.js.map +1 -1
- package/dist/cards/impl/minion/wildfire-elemental.js.map +1 -1
- package/dist/cards/impl/minion/wisp-in-the-shell.js.map +1 -1
- package/dist/cards/impl/minion/yorik-smite.js.map +1 -1
- package/dist/cards/impl/minion/yrel.js.map +1 -1
- package/dist/cards/impl/minion/yulon-fortune-granter.js.map +1 -1
- package/dist/cards/impl/quest-reward/righteous-charge.js.map +1 -1
- package/dist/cards/impl/trinket/all-purpose-kibble.js.map +1 -1
- package/dist/cards/impl/trinket/arm-of-the-empire.js.map +1 -1
- package/dist/cards/impl/trinket/bassgill-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/battle-horn.js.map +1 -1
- package/dist/cards/impl/trinket/beetle-band.js.map +1 -1
- package/dist/cards/impl/trinket/bird-feeder.js.map +1 -1
- package/dist/cards/impl/trinket/crocheted-sungill.js.map +1 -1
- package/dist/cards/impl/trinket/deathtouch-apple.js +1 -1
- package/dist/cards/impl/trinket/deathtouch-apple.js.map +1 -1
- package/dist/cards/impl/trinket/eclectic-shrine.js.map +1 -1
- package/dist/cards/impl/trinket/eternal-portrait.d.ts +2 -0
- package/dist/cards/impl/trinket/eternal-portrait.js +2 -1
- package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/faerie-dragon-scale.js.map +1 -1
- package/dist/cards/impl/trinket/fishy-sticker.js.map +1 -1
- package/dist/cards/impl/trinket/herald-sticker.js.map +1 -1
- package/dist/cards/impl/trinket/karazhan-chess-set.js.map +1 -1
- package/dist/cards/impl/trinket/rivendare-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/sthara-sticker.js.map +1 -1
- package/dist/cards/impl/trinket/valorous-medaillion.js.map +1 -1
- package/dist/cards/impl/trinket/vashjir-anemone.js.map +1 -1
- package/dist/cards/impl/trinket/yulon-sticker.js.map +1 -1
- package/dist/debug-state.js.map +1 -1
- package/dist/input-sanitation.js +7 -6
- package/dist/input-sanitation.js.map +1 -1
- package/dist/keywords/venomous.js.map +1 -1
- package/dist/simulate-bgs-battle.js.map +1 -1
- package/dist/simulation/add-minion-to-board.js +4 -4
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +10 -2
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
- package/dist/simulation/discover.js.map +1 -1
- package/dist/simulation/frenzy.js.map +1 -1
- package/dist/simulation/quest.js.map +1 -1
- package/dist/simulation/reborn.js +25 -23
- package/dist/simulation/reborn.js.map +1 -1
- package/dist/simulation/spectator/game-action.js +18 -17
- package/dist/simulation/spectator/game-action.js.map +1 -1
- package/dist/simulation/spectator/resolve-trinket-hero-power.d.ts +2 -0
- package/dist/simulation/spectator/resolve-trinket-hero-power.js +27 -0
- package/dist/simulation/spectator/resolve-trinket-hero-power.js.map +1 -0
- package/dist/simulation/spectator/spectator.js +1 -0
- package/dist/simulation/spectator/spectator.js.map +1 -1
- package/package.json +51 -51
- package/dist/cards/impl/minion/pilot-the-shredder.d.ts +0 -2
- package/dist/cards/impl/minion/pilot-the-shredder.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bgs-battle-info.js","sourceRoot":"","sources":["../src/bgs-battle-info.ts"],"names":[],"mappings":"","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\nimport { BgsBattleOptions } from './bgs-battle-options';\nimport { BgsBoardInfo } from './bgs-board-info';\n\n/** Entity reference for debug state (entityId, or cardId+attack+health for spawned minions). */\nexport interface BgsDebugStateEntity {\n\treadonly entityId?: number;\n\treadonly cardId?: string;\n\treadonly attack?: number;\n\treadonly health?: number;\n}\n\n/** Debug state for bug reproduction: forces attack order and random effects from the real game. */\nexport interface BgsDebugState {\n\treadonly forcedCurrentAttacker: number;\n\treadonly forcedFaceOffBase: Array<{\n\t\treadonly attacker: BgsDebugStateEntity;\n\t\treadonly defender: BgsDebugStateEntity;\n\t}>;\n\t/** Forced random picks keyed by source entity (e.g. Warghoul) -> target (e.g. neighbour). Optional chosenCardId for card-pool picks (e.g. Apexis Guardian Volumizer). */\n\treadonly forcedRandomPicks?: readonly {\n\t\tsource: BgsDebugStateEntity;\n\t\ttarget: BgsDebugStateEntity;\n\t\tchosenCardId?: string;\n\t}[];\n}\n\nexport interface BgsBattleInfo {\n\treadonly playerBoard: BgsBoardInfo;\n\treadonly playerTeammateBoard?: BgsBoardInfo;\n\treadonly opponentBoard: BgsBoardInfo;\n\treadonly opponentTeammateBoard?: BgsBoardInfo;\n\treadonly options: BgsBattleOptions;\n\treadonly gameState: BgsGameState;\n\treadonly heroHasDied?: boolean;\n\t/** When present, simulator uses this to force attack sequence (e.g. from bug report). */\n\treadonly debugState?: BgsDebugState;\n}\n\nexport interface BgsGameState {\n\treadonly currentTurn: number;\n\treadonly validTribes?: readonly Race[];\n\treadonly anomalies?: readonly string[];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"bgs-battle-info.js","sourceRoot":"","sources":["../src/bgs-battle-info.ts"],"names":[],"mappings":"","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BgsBattleOptions } from './bgs-battle-options';\r\nimport { BgsBoardInfo } from './bgs-board-info';\r\n\r\n/** Entity reference for debug state (entityId, or cardId+attack+health for spawned minions). */\r\nexport interface BgsDebugStateEntity {\r\n\treadonly entityId?: number;\r\n\treadonly cardId?: string;\r\n\treadonly attack?: number;\r\n\treadonly health?: number;\r\n}\r\n\r\n/** Debug state for bug reproduction: forces attack order and random effects from the real game. */\r\nexport interface BgsDebugState {\r\n\treadonly forcedCurrentAttacker: number;\r\n\treadonly forcedFaceOffBase: Array<{\r\n\t\treadonly attacker: BgsDebugStateEntity;\r\n\t\treadonly defender: BgsDebugStateEntity;\r\n\t}>;\r\n\t/** Forced random picks keyed by source entity (e.g. Warghoul) -> target (e.g. neighbour). Optional chosenCardId for card-pool picks (e.g. Apexis Guardian Volumizer). */\r\n\treadonly forcedRandomPicks?: readonly {\r\n\t\tsource: BgsDebugStateEntity;\r\n\t\ttarget: BgsDebugStateEntity;\r\n\t\tchosenCardId?: string;\r\n\t}[];\r\n}\r\n\r\nexport interface BgsBattleInfo {\r\n\treadonly playerBoard: BgsBoardInfo;\r\n\treadonly playerTeammateBoard?: BgsBoardInfo;\r\n\treadonly opponentBoard: BgsBoardInfo;\r\n\treadonly opponentTeammateBoard?: BgsBoardInfo;\r\n\treadonly options: BgsBattleOptions;\r\n\treadonly gameState: BgsGameState;\r\n\treadonly heroHasDied?: boolean;\r\n\t/** When present, simulator uses this to force attack sequence (e.g. from bug report). */\r\n\treadonly debugState?: BgsDebugState;\r\n}\r\n\r\nexport interface BgsGameState {\r\n\treadonly currentTurn: number;\r\n\treadonly validTribes?: readonly Race[];\r\n\treadonly anomalies?: readonly string[];\r\n}\r\n"]}
|
|
@@ -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, BgsPlayerGlobalInfo, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\nimport { BoardSecret } from '../board-secret';\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\nimport { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\nimport {\n\tOnDespawnInput,\n\tOnFriendlyMinionSummonedTrinketInput,\n\tOnOtherSpawnAuraInput,\n\tOnOtherSpawnInput,\n\tOnSpawnInput,\n} from '../simulation/add-minion-to-board';\nimport {\n\tOnAfterDeathInput,\n\tOnAfterFriendlyMinionDeathInput,\n\tOnDeathInput,\n\tOnMinionKilledInput,\n} from '../simulation/attack';\nimport { AvengeInput } from '../simulation/avenge';\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\nimport { FullGameState } from '../simulation/internal-game-state';\nimport {\n\tOnAfterMagnetizeInput,\n\tOnAfterMagnetizeSelfInput,\n\tOnBeforeMagnetizeInput,\n\tOnBeforeMagnetizeSelfInput,\n} from '../simulation/magnetize';\nimport { OnAttackInput } from '../simulation/on-attack';\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\nimport { RebornEffectInput } from '../simulation/reborn';\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\nimport { OnStatsChangedInput } from '../simulation/stats';\n\nexport interface Card {\n\t// Maybe should make this mandatory\n\tcardIds?: readonly string[];\n\tstartOfCombat?: (\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\n\t\tinput: SoCInput,\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\n}\n\nexport interface DefaultChargesCard extends Card {\n\tdefaultCharges: (entity: BoardEntity) => number;\n}\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\n\nexport interface StartOfCombatCard extends Card {\n\tstartOfCombatTiming?: StartOfCombatTiming;\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\n}\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\n\tstartOfCombatFromHand: true;\n}\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\n\nexport interface TavernSpellCard extends Card {\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\n}\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\n\nexport interface OnTavernSpellCastCard extends Card {\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\n\nexport interface OnBeforeTavernSpellCastCard extends Card {\n\tonBeforeTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== undefined;\n\nexport interface AfterTavernSpellCastCard extends Card {\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\n\n// Whenever this attacks\nexport interface RallyCard extends Card {\n\trally: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\n\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\n\tonWheneverAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\n\nexport interface AfterAnotherMinionAttacksCard extends Card {\n\tafterAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\n\nexport interface OnMinionAttackedCard extends Card {\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\n}\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\n\nexport interface OnSpawnedCard extends Card {\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\n}\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\n\nexport interface OnOtherSpawnedAuraCard extends Card {\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\n}\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\n\nexport interface OnOtherSpawnedCard extends Card {\n\tonOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\n\nexport interface AfterOtherSpawnedCard extends Card {\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\n\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\n}\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\n\nexport interface OnDespawnedCard extends Card {\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\n}\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\n\nexport interface DeathrattleSpawnCard extends Card {\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\n}\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\n\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\nexport interface DeathrattleEffectCard extends Card {\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\n\nexport interface BattlecryCard extends Card {\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\n\t// is in game)\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\n}\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\n\nexport interface RebornEffectCard extends Card {\n\trebornEffect: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\n}\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\n\nexport interface RebornSelfEffectCard extends Card {\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\n\nexport interface AfterRebornCard extends Card {\n\tafterReborn: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\n}\nexport const hasAfterReborn = (card: Card): card is AfterRebornCard =>\n\t(card as AfterRebornCard)?.afterReborn !== undefined;\n\nexport interface OnBattlecryTriggeredCard extends Card {\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\n}\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\n\nexport interface AvengeCard extends Card {\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\n\tbaseAvengeValue: (cardId: string) => number;\n}\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\n\nexport interface DefaultScriptDataNumCard extends Card {\n\tdefaultScriptDataNum: (cardId: string) => number;\n}\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\n\n/** To use when another deathrattle is triggered */\nexport interface DeathrattleTriggeredCard extends Card {\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\n\n// export interface DeathrattleEnchantmentEffectCard extends Card {\n// \tdeathrattleEffectEnchantmentEffect: (\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\n// \t\tinput: DeathrattleTriggeredInput,\n// \t) => void;\n// \tcardIds: readonly string[];\n// }\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\n\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\n\tdeathrattleSpawnEnchantmentEffect: (\n\t\tenchantment: BoardEnchantment,\n\t\tminion: BoardEntity | null | undefined,\n\t\tinput: DeathrattleTriggeredInput,\n\t) => readonly BoardEntity[];\n\tcardIds: readonly string[];\n}\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\n\nexport interface OnCardAddedToHandCard extends Card {\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\n}\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\n\nexport interface EndOfTurnCard extends Card {\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\n}\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\nexport type EndOfTurnInput = BattlecryInput;\n\nexport interface OnDivineShieldUpdatedCard extends Card {\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\n}\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\n\nexport interface OnTauntUpdatedCard extends Card {\n\tonTauntUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnTauntUpdatedInput,\n\t) => void;\n}\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\n\nexport interface OnRebornUpdatedCard extends Card {\n\tonRebornUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnRebornUpdatedInput,\n\t) => void;\n}\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\n\nexport interface OnStealthUpdatedCard extends Card {\n\tonStealthUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnStealthUpdatedInput,\n\t) => void;\n}\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\n\nexport interface OnVenomousUpdatedCard extends Card {\n\tonVenomousUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnVenomousUpdatedInput,\n\t) => void;\n}\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\n\nexport interface OnWindfuryUpdatedCard extends Card {\n\tonWindfuryUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnWindfuryUpdatedInput,\n\t) => void;\n}\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\n\nexport interface OnStatsChangedCard extends Card {\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\n}\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\n\nexport interface AfterHeroDamagedCard extends Card {\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\n}\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\n\nexport interface OnDamagedCard extends Card {\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\n}\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\n\nexport interface AfterDealDamageCard extends Card {\n\t// Called whenever damage is dealt, both on the friendly and enemy side\n\t// So you need to check the \"friendly\" flag\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\n}\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\n\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\n}\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\n\nexport interface OnDeathCard extends Card {\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\n}\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\n\nexport interface OnAfterDeathCard extends Card {\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\n}\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\n\n/**\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\n * from `deathrattle-effects`.\n */\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\n}\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\n\nexport interface OnMinionKilledCard extends Card {\n\tonMinionKilled: (\n\t\tentity: BoardEntity,\n\t\tinput: OnMinionKilledInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\n\nexport interface OnBeforeMagnetizeCard extends Card {\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\n}\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\n\nexport interface OnBeforeMagnetizeSelfCard extends Card {\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\n}\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeToSelfCard extends Card {\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\n}\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\n\nexport interface OnAfterMagnetizeSelfCard extends Card {\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeCard extends Card {\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\n\nexport interface OnSpawnFailCard extends Card {\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\n}\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\n\nexport interface PlayedBloodGemsOnMeCard extends Card {\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\n}\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\n\nexport interface PlayedBloodGemsOnAnyCard extends Card {\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\n}\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\n\nexport interface OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>) => void;\n}\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\n\tcard: Card,\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== undefined;\n\nexport interface OnSpawnFailInput {\n\tfailedSpawn: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n\nexport interface CastSpellInput {\n\tspellCardId: string;\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\n\ttarget: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherBoard: BoardEntity[];\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\nexport interface OnDamagedInput {\n\tdamagedEntity: BoardEntity;\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\n\tdamage: number;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsPlayerGlobalInfo, 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 { OnGlobalInfoUpdatedInput } from '../mechanics/player-global-effects';\r\nimport {\r\n\tOnDespawnInput,\r\n\tOnFriendlyMinionSummonedTrinketInput,\r\n\tOnOtherSpawnAuraInput,\r\n\tOnOtherSpawnInput,\r\n\tOnSpawnInput,\r\n} from '../simulation/add-minion-to-board';\r\nimport {\r\n\tOnAfterDeathInput,\r\n\tOnAfterFriendlyMinionDeathInput,\r\n\tOnDeathInput,\r\n\tOnMinionKilledInput,\r\n} 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, AfterFriendlyMinionDamagedInput } 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 {\r\n\tOnAfterMagnetizeInput,\r\n\tOnAfterMagnetizeSelfInput,\r\n\tOnBeforeMagnetizeInput,\r\n\tOnBeforeMagnetizeSelfInput,\r\n} 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 OnBeforeTavernSpellCastCard extends Card {\r\n\tonBeforeTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\r\n}\r\nexport const hasOnBeforeTavernSpellCast = (card: Card): card is OnBeforeTavernSpellCastCard =>\r\n\t(card as OnBeforeTavernSpellCastCard)?.onBeforeTavernSpellCast !== 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 AfterAnotherMinionAttacksCard extends Card {\r\n\tafterAnotherMinionAttacks: (\r\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\r\n\t\tinput: OnAttackInput,\r\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\r\n}\r\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\r\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== 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 | BoardTrinket, 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 OnFriendlyMinionSummonedTrinketCard extends Card {\r\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\r\n}\r\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\r\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== 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\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\r\nexport interface DeathrattleEffectCard extends Card {\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\r\n}\r\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\r\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== 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 | BoardTrinket, 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 AfterRebornCard extends Card {\r\n\tafterReborn: (minion: BoardEntity | BoardTrinket, input: RebornEffectInput) => void;\r\n}\r\nexport const hasAfterReborn = (card: Card): card is AfterRebornCard =>\r\n\t(card as AfterRebornCard)?.afterReborn !== 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: BoardEnchantment,\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 | BoardTrinket, 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 | BoardTrinket, 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\t// TODO: the \"after\" here waits for spawns, eg reborn / deathrattle\r\n\t// eg https://replays.firestoneapp.com/?reviewId=05860f41-1ea4-41f8-9c55-b6c854fa5f5a&turn=17&action=10\r\n\t// The reborn Rylak is buffed by Lord of the Ruins\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 AfterFriendlyMinionDamagedTrinketCard extends Card {\r\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\r\n}\r\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\r\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== 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\n/**\r\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\r\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\r\n * from `deathrattle-effects`.\r\n */\r\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\r\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\r\n}\r\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\r\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== 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 | BoardTrinket, 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 OnBeforeMagnetizeSelfCard extends Card {\r\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\r\n}\r\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\r\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeToSelfCard extends Card {\r\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\r\n}\r\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\r\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeSelfCard extends Card {\r\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\r\n}\r\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\r\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\r\n\r\nexport interface OnAfterMagnetizeCard extends Card {\r\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, 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 OnGlobalInfoUpdatedCard<T extends keyof BgsPlayerGlobalInfo> extends Card {\r\n\tonGlobalInfoUpdated: (entity: BoardEntity, input: OnGlobalInfoUpdatedInput<T>) => void;\r\n}\r\nexport const hasOnGlobalInfoUpdated = <T extends keyof BgsPlayerGlobalInfo>(\r\n\tcard: Card,\r\n): card is OnGlobalInfoUpdatedCard<T> => (card as OnGlobalInfoUpdatedCard<T>)?.onGlobalInfoUpdated !== 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\totherHero: BgsPlayerEntity;\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tAllCardsService,\n\tCardType,\n\tGameTag,\n\tisBattlegroundsCard,\n\tRace,\n\tReferenceCard,\n\tSpellSchool,\n} from '@firestone-hs/reference-data';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\nimport { BoardEntity } from '../board-entity';\nimport { debugState } from '../debug-state';\nimport { CardIds } from '../services/card-ids';\nimport { groupByFunction, pickRandom } from '../services/utils';\nimport { getRaceEnum, hasMechanic, isCorrectTribe, isVolumizer } from '../utils';\nimport { hasAvenge, hasDefaultScriptDataNum } from './card.interface';\nimport { cardMappings } from './impl/_card-mappings';\n\nexport const isWhelp = (cardId: string, allCards: AllCardsService): boolean => {\n\treturn allCards.getCard(cardId).mechanics?.includes(GameTag[GameTag.WHELP]);\n};\n\nexport const validBonusKeywords = [\n\tGameTag.TAUNT,\n\tGameTag.DIVINE_SHIELD,\n\tGameTag.VENOMOUS,\n\tGameTag.POISONOUS,\n\tGameTag.WINDFURY,\n\tGameTag.STEALTH,\n\tGameTag.REBORN,\n];\n\nexport const hasKeyword = (entity: BoardEntity, keyword: GameTag) => {\n\tswitch (keyword) {\n\t\tcase GameTag.TAUNT:\n\t\t\treturn entity.taunt;\n\t\tcase GameTag.DIVINE_SHIELD:\n\t\t\treturn entity.divineShield;\n\t\tcase GameTag.VENOMOUS:\n\t\t\treturn entity.venomous;\n\t\tcase GameTag.WINDFURY:\n\t\t\treturn entity.windfury;\n\t\tcase GameTag.STEALTH:\n\t\t\treturn entity.stealth;\n\t\tcase GameTag.REBORN:\n\t\t\treturn entity.reborn;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\nexport class CardsData {\n\tpublic ghastcoilerSpawns: readonly string[];\n\tpublic impMamaSpawns: readonly string[];\n\tpublic demonSpawns: readonly string[];\n\tpublic gentleDjinniSpawns: readonly string[];\n\tpublic kilrekSpawns: readonly string[];\n\tpublic battlecryMinions: readonly string[];\n\tpublic deathrattleMinions: readonly string[];\n\tpublic pirateSpawns: readonly string[];\n\tpublic beastSpawns: readonly string[];\n\tpublic scrapScraperSpawns: readonly string[];\n\t/** Tavern spells with BACON_BOUNTY (Proud Privateer, Lost City Looter). */\n\tpublic bountyTavernSpellIds: readonly string[];\n\tpublic endOfTurnMinions: readonly string[];\n\tpublic magneticMinions: readonly ReferenceCard[];\n\tpublic spellcraftPool: readonly ReferenceCard[];\n\n\tpublic putricidePool1: readonly string[];\n\tpublic putricidePool2: readonly string[];\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\n\n\tprivate pool: readonly ReferenceCard[];\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\n\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\n\t\tif (init) {\n\t\t\tthis.inititialize();\n\t\t}\n\t}\n\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\n\t\tconst poolWithGolden = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => isBattlegroundsCard(card))\n\t\t\t// Premiums are not in bacon pool\n\t\t\t.filter((card) => card.isBaconPool || this.allCards.getCard(card.battlegroundsNormalDbfId)?.isBaconPool)\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((card) => !hasMechanic(card, GameTag.BACON_BUDDY))\n\t\t\t.filter((card) => card.set !== 'Vanilla')\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\n\t\t\t\t\t? card.techLevel >= 3\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\n\t\t\t\t\t? card.techLevel <= 4\n\t\t\t\t\t: true,\n\t\t\t);\n\t\tthis.pool = poolWithGolden\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\n\t\t\t\t\t? this.isGolden(card)\n\t\t\t\t\t: !this.isGolden(card),\n\t\t\t);\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\n\t\tthis.ghastcoilerSpawns = this.pool\n\t\t\t.filter((card) => card.id !== 'BGS_008')\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.map((card) => card.id);\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\n\t\tthis.gentleDjinniSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\n\t\t\t.map((card) => card.id);\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\n\t\t// this.festergutSpawns = pool\n\t\t// \t.filter((card) => !this.isGolden(card))\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\n\t\t// \t.map((card) => card.id);\n\t\tthis.kilrekSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\n\t\t\t.map((card) => card.id);\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, GameTag.BATTLECRY)).map((card) => card.id);\n\t\tthis.deathrattleMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.map((card) => card.id);\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\n\t\tthis.scrapScraperSpawns = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.MAGNETIC))\n\t\t\t.map((card) => card.id);\n\t\tthis.endOfTurnMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.END_OF_TURN))\n\t\t\t.map((card) => card.id);\n\t\tthis.magneticMinions = this.pool.filter((card) => hasMechanic(card, GameTag.MAGNETIC));\n\t\tthis.spellcraftPool = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.spellSchool === SpellSchool[SpellSchool.SPELLCRAFT])\n\t\t\t.filter((c) => !c.premium)\n\t\t\t.filter((c) => c.set === 'Battlegrounds')\n\t\t\t// Remove unimplemented ones (mainly spellcrafts that don't have sense in combat)\n\t\t\t.filter((c) => cardMappings[c.id] != null);\n\n\t\tthis.bountyTavernSpellIds = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.set === 'Battlegrounds' && !c.premium)\n\t\t\t.filter((c) => c.type?.toUpperCase() === CardType[CardType.SPELL])\n\t\t\t.filter((c) => c.mechanics?.includes('BACON_BOUNTY'))\n\t\t\t.filter((c) => cardMappings[c.id] != null)\n\t\t\t.map((c) => c.id);\n\n\t\tthis.putricidePool1 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\n\t\t\t.map((card) => card.id);\n\t\tthis.putricidePool2 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.map((card) => card.id);\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\n\t\t\t.map((card) => card.id);\n\t}\n\n\tpublic avengeValue(cardId: string): number {\n\t\tconst avengeImpl = cardMappings[cardId];\n\t\tif (hasAvenge(avengeImpl)) {\n\t\t\treturn avengeImpl.baseAvengeValue(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\n\t\t\t\t// case CardIds.IceSickle:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.MechanoTank_BG21_023:\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\n\t\t\tcase CardIds.Bristlebach_BG26_157:\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\n\t\t\t\treturn 2;\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\n\t\t\t\treturn 3;\n\t\t\tcase CardIds.Onyxia_Broodmother:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\n\t\t\t// case CardIds.Sisefin_BG21_009:\n\t\t\t// case CardIds.Sisefin_BG21_009_G:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\n\t\t\t\treturn 4;\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\n\t\t\t\treturn 5;\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\n\t\t\t\treturn 7;\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\n\t\t\t\treturn 9;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic defaultScriptDataNum(cardId: string): number {\n\t\tconst defaultScriptDataNumImpl = cardMappings[cardId];\n\t\tif (hasDefaultScriptDataNum(defaultScriptDataNumImpl)) {\n\t\t\treturn defaultScriptDataNumImpl.defaultScriptDataNum(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\n\t\t\tcase CardIds.FaerieDragonScale_BG32_MagicItem_363:\n\t\t\t\treturn 3;\n\t\t\tdefault:\n\t\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic getTavernLevel(cardId: string): number {\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\n\t}\n\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\n\t\t// level seems to work in all cases\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMinionForMinTavernTier(tavernTier: number): string {\n\t\tconst minionsForTier = this.pool.filter((m) => m.techLevel >= tavernTier);\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\n\t\tconst magneticMechs = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.MODULAR));\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMagneticVolumizer(\n\t\tplayerEntity: BgsPlayerEntity,\n\t\tanomalies: readonly string[],\n\t\ttavernLimitUpper: number,\n\t\tsourceEntity?: BoardEntity,\n\t\ttargetEntity?: BoardEntity,\n\t): string {\n\t\tconst magneticVolumizers = this.magneticMinions.filter((m) =>\n\t\t\tisVolumizer(m.id, playerEntity, anomalies, this.allCards),\n\t\t);\n\t\tconst pool = magneticVolumizers.filter((m) => m.techLevel <= tavernLimitUpper);\n\n\t\tif (sourceEntity && targetEntity && debugState.active && debugState.forcedRandomPicks.length > 0) {\n\t\t\tconst forced = debugState.forcedRandomPicks.find(\n\t\t\t\t(p) =>\n\t\t\t\t\tdebugState.isCorrectEntity(p.source, sourceEntity) &&\n\t\t\t\t\tdebugState.isCorrectEntity(p.target, targetEntity),\n\t\t\t);\n\t\t\tif (forced?.chosenCardId) {\n\t\t\t\tconst inPool = pool.some((m) => m.id === forced.chosenCardId);\n\t\t\t\tif (inPool) {\n\t\t\t\t\tdebugState.forcedRandomPicks = debugState.forcedRandomPicks.filter((p) => p !== forced);\n\t\t\t\t\treturn forced.chosenCardId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = pickRandom(pool)?.id;\n\t\treturn result;\n\t}\n\n\tpublic getRandomDivineShield(tavernLimitUpper: number) {\n\t\tconst divineShieldPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.DIVINE_SHIELD));\n\t\tconst pool = divineShieldPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomRally(tavernLimitUpper: number) {\n\t\tconst targetPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.BACON_RALLY));\n\t\tconst pool = targetPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMinionForTribe(\n\t\ttribe: Race,\n\t\ttavernLimitUpper: number,\n\t\texcludedCards: readonly string[] = [],\n\t): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper)\n\t\t\t.filter((m) => !excludedCards.includes(m.id));\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomProtossMinion(tavernLimitUpper: number): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => m.mechanics?.includes(GameTag[GameTag.PROTOSS]))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomSpellcraft(options: { maxTavernTier?: number }): string {\n\t\tconst pool = this.spellcraftPool.filter((c) =>\n\t\t\toptions.maxTavernTier ? c.techLevel <= options.maxTavernTier : true,\n\t\t);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic isGolden(card: ReferenceCard): boolean {\n\t\treturn card.premium;\n\t}\n\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (cardRaces ?? [])\n\t\t\t.map((race) => getRaceEnum(race))\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\n\t}\n\n\tpublic getRandomTavernSpell(options?: { exactTavernTier?: number; maxTavernTier?: number }): string {\n\t\treturn null;\n\t}\n\n\t/** BG 2-cost spells that have simulator support (cardMappings). */\n\tpublic getTwoCostBattlegroundsSpellIdsImplemented(): string[] {\n\t\treturn this.allCards\n\t\t\t.getCards()\n\t\t\t.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.set === 'Battlegrounds' &&\n\t\t\t\t\t!c.premium &&\n\t\t\t\t\t(c.cost ?? 0) === 2 &&\n\t\t\t\t\tc.type?.toUpperCase() === CardType[CardType.SPELL] &&\n\t\t\t\t\tcardMappings[c.id] != null,\n\t\t\t)\n\t\t\t.map((c) => c.id);\n\t}\n}\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 { debugState } from '../debug-state';\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 isWhelp = (cardId: string, allCards: AllCardsService): boolean => {\r\n\treturn allCards.getCard(cardId).mechanics?.includes(GameTag[GameTag.WHELP]);\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\t/** Tavern spells with BACON_BOUNTY (Proud Privateer, Lost City Looter). */\r\n\tpublic bountyTavernSpellIds: 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.bountyTavernSpellIds = this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter((c) => c.set === 'Battlegrounds' && !c.premium)\r\n\t\t\t.filter((c) => c.type?.toUpperCase() === CardType[CardType.SPELL])\r\n\t\t\t.filter((c) => c.mechanics?.includes('BACON_BOUNTY'))\r\n\t\t\t.filter((c) => cardMappings[c.id] != null)\r\n\t\t\t.map((c) => c.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\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\t\treturn 3;\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\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.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\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\tsourceEntity?: BoardEntity,\r\n\t\ttargetEntity?: BoardEntity,\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\r\n\t\tif (sourceEntity && targetEntity && debugState.active && debugState.forcedRandomPicks.length > 0) {\r\n\t\t\tconst forced = debugState.forcedRandomPicks.find(\r\n\t\t\t\t(p) =>\r\n\t\t\t\t\tdebugState.isCorrectEntity(p.source, sourceEntity) &&\r\n\t\t\t\t\tdebugState.isCorrectEntity(p.target, targetEntity),\r\n\t\t\t);\r\n\t\t\tif (forced?.chosenCardId) {\r\n\t\t\t\tconst inPool = pool.some((m) => m.id === forced.chosenCardId);\r\n\t\t\t\tif (inPool) {\r\n\t\t\t\t\tdebugState.forcedRandomPicks = debugState.forcedRandomPicks.filter((p) => p !== forced);\r\n\t\t\t\t\treturn forced.chosenCardId;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst result = pickRandom(pool)?.id;\r\n\t\treturn result;\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(options: { maxTavernTier?: number }): string {\r\n\t\tconst pool = this.spellcraftPool.filter((c) =>\r\n\t\t\toptions.maxTavernTier ? c.techLevel <= options.maxTavernTier : true,\r\n\t\t);\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(options?: { exactTavernTier?: number; maxTavernTier?: number }): string {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t/** BG 2-cost spells that have simulator support (cardMappings). */\r\n\tpublic getTwoCostBattlegroundsSpellIdsImplemented(): string[] {\r\n\t\treturn this.allCards\r\n\t\t\t.getCards()\r\n\t\t\t.filter(\r\n\t\t\t\t(c) =>\r\n\t\t\t\t\tc.set === 'Battlegrounds' &&\r\n\t\t\t\t\t!c.premium &&\r\n\t\t\t\t\t(c.cost ?? 0) === 2 &&\r\n\t\t\t\t\tc.type?.toUpperCase() === CardType[CardType.SPELL] &&\r\n\t\t\t\t\tcardMappings[c.id] != null,\r\n\t\t\t)\r\n\t\t\t.map((c) => c.id);\r\n\t}\r\n}\r\n"]}
|
|
@@ -70,6 +70,7 @@ const auto_assembler_1 = require("./minion/auto-assembler");
|
|
|
70
70
|
const auto_assembler_enchantment_1 = require("./minion/auto-assembler-enchantment");
|
|
71
71
|
const avalanche_caller_1 = require("./minion/avalanche-caller");
|
|
72
72
|
const azsharan_cutlassier_1 = require("./minion/azsharan-cutlassier");
|
|
73
|
+
const baby_nzoth_1 = require("./minion/baby-nzoth");
|
|
73
74
|
const baby_yshaarj_1 = require("./minion/baby-yshaarj");
|
|
74
75
|
const banana_slamma_1 = require("./minion/banana-slamma");
|
|
75
76
|
const baneling_1 = require("./minion/baneling");
|
|
@@ -292,7 +293,6 @@ const parched_wanderer_1 = require("./minion/parched-wanderer");
|
|
|
292
293
|
const pashmar_the_vengeful_1 = require("./minion/pashmar-the-vengeful");
|
|
293
294
|
const peggy_sturdybone_1 = require("./minion/peggy-sturdybone");
|
|
294
295
|
const photobomber_1 = require("./minion/photobomber");
|
|
295
|
-
const pilot_the_shredder_1 = require("./minion/pilot-the-shredder");
|
|
296
296
|
const piloted_whirl_o_tron_1 = require("./minion/piloted-whirl-o-tron");
|
|
297
297
|
const plaguerunner_1 = require("./minion/plaguerunner");
|
|
298
298
|
const plankwalker_1 = require("./minion/plankwalker");
|
|
@@ -369,6 +369,7 @@ const slumber_sorcerer_1 = require("./minion/slumber-sorcerer");
|
|
|
369
369
|
const sly_raptor_1 = require("./minion/sly-raptor");
|
|
370
370
|
const smolderwing_1 = require("./minion/smolderwing");
|
|
371
371
|
const snack_vendor_1 = require("./minion/snack-vendor");
|
|
372
|
+
const sneeds_new_shredder_1 = require("./minion/sneeds-new-shredder");
|
|
372
373
|
const soul_rewinder_1 = require("./minion/soul-rewinder");
|
|
373
374
|
const soulsplitter_1 = require("./minion/soulsplitter");
|
|
374
375
|
const spacefarer_1 = require("./minion/spacefarer");
|
|
@@ -1158,7 +1159,7 @@ const cards = [
|
|
|
1158
1159
|
weebomination_1.Weebomination,
|
|
1159
1160
|
monstrosity_1.Monstrosity,
|
|
1160
1161
|
frostwolf_lieutenant_1.FrostwolfLieutenant,
|
|
1161
|
-
|
|
1162
|
+
sneeds_new_shredder_1.SneedsNewShredder,
|
|
1162
1163
|
stormpike_lieutenant_1.StormpikeLieutenant,
|
|
1163
1164
|
fragrant_phylactery_1.FragrantPhylactery,
|
|
1164
1165
|
fragrant_phylactery_enchantment_1.FragrantPhylacteryEnchantment,
|
|
@@ -1268,6 +1269,7 @@ const cards = [
|
|
|
1268
1269
|
wildfeather_duster_1.WildfeatherDuster,
|
|
1269
1270
|
trusty_crowbar_1.TrustyCrowbar,
|
|
1270
1271
|
glowscale_portrait_1.GlowscalePortrait,
|
|
1272
|
+
baby_nzoth_1.BabyNzoth,
|
|
1271
1273
|
bloodbound_earrings_1.BloodboundEarrings,
|
|
1272
1274
|
heart_of_the_forest_1.HeartOfTheForest,
|
|
1273
1275
|
bubble_crown_1.BubbleCrown,
|