@firestone-hs/simulate-bgs-battle 1.1.531 → 1.1.533

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.
Files changed (45) hide show
  1. package/dist/cards/impl/_card-mappings.js +4 -0
  2. package/dist/cards/impl/_card-mappings.js.map +1 -1
  3. package/dist/cards/impl/bg-spell/sharing-is-caring.js +1 -1
  4. package/dist/cards/impl/bg-spell/sharing-is-caring.js.map +1 -1
  5. package/dist/cards/impl/minion/baneling.js +3 -4
  6. package/dist/cards/impl/minion/baneling.js.map +1 -1
  7. package/dist/cards/impl/minion/bellowing-tyrant.js +3 -3
  8. package/dist/cards/impl/minion/bellowing-tyrant.js.map +1 -1
  9. package/dist/cards/impl/minion/captain-bonerender.js +2 -2
  10. package/dist/cards/impl/minion/captain-bonerender.js.map +1 -1
  11. package/dist/cards/impl/minion/carrier.js +4 -3
  12. package/dist/cards/impl/minion/carrier.js.map +1 -1
  13. package/dist/cards/impl/minion/colossus.js +1 -1
  14. package/dist/cards/impl/minion/colossus.js.map +1 -1
  15. package/dist/cards/impl/minion/gentle-stag.js +2 -2
  16. package/dist/cards/impl/minion/gentle-stag.js.map +1 -1
  17. package/dist/cards/impl/minion/hydralisk.js +3 -2
  18. package/dist/cards/impl/minion/hydralisk.js.map +1 -1
  19. package/dist/cards/impl/minion/immortal.js +2 -2
  20. package/dist/cards/impl/minion/immortal.js.map +1 -1
  21. package/dist/cards/impl/minion/low-flier.d.ts +2 -0
  22. package/dist/cards/impl/minion/low-flier.js +15 -0
  23. package/dist/cards/impl/minion/low-flier.js.map +1 -0
  24. package/dist/cards/impl/minion/lurker.js +3 -2
  25. package/dist/cards/impl/minion/lurker.js.map +1 -1
  26. package/dist/cards/impl/minion/mothership.js +2 -2
  27. package/dist/cards/impl/minion/mothership.js.map +1 -1
  28. package/dist/cards/impl/minion/mutalisk.js +3 -2
  29. package/dist/cards/impl/minion/mutalisk.js.map +1 -1
  30. package/dist/cards/impl/minion/roach.d.ts +2 -0
  31. package/dist/cards/impl/minion/roach.js +12 -0
  32. package/dist/cards/impl/minion/roach.js.map +1 -0
  33. package/dist/cards/impl/minion/stitched-salvager.js +2 -2
  34. package/dist/cards/impl/minion/stitched-salvager.js.map +1 -1
  35. package/dist/cards/impl/minion/ultralisk.js +2 -2
  36. package/dist/cards/impl/minion/ultralisk.js.map +1 -1
  37. package/dist/cards/impl/minion/void-ray.js +2 -2
  38. package/dist/cards/impl/minion/void-ray.js.map +1 -1
  39. package/dist/cards/impl/minion/zergling.js +1 -1
  40. package/dist/cards/impl/minion/zergling.js.map +1 -1
  41. package/dist/temp-card-ids.d.ts +0 -35
  42. package/dist/temp-card-ids.js.map +1 -1
  43. package/dist/utils.js +6 -6
  44. package/dist/utils.js.map +1 -1
  45. package/package.json +2 -2
@@ -69,6 +69,7 @@ const king_bagurgle_1 = require("./minion/king-bagurgle");
69
69
  const leeroy_the_reckless_1 = require("./minion/leeroy-the-reckless");
70
70
  const lightfang_enforcer_1 = require("./minion/lightfang-enforcer");
71
71
  const lovesick_balladist_1 = require("./minion/lovesick-balladist");
72
+ const low_flier_1 = require("./minion/low-flier");
72
73
  const lurker_1 = require("./minion/lurker");
73
74
  const manasaber_1 = require("./minion/manasaber");
74
75
  const marquee_ticker_1 = require("./minion/marquee-ticker");
@@ -101,6 +102,7 @@ const razorfen_geomancer_1 = require("./minion/razorfen-geomancer");
101
102
  const razorgore_the_untamed_1 = require("./minion/razorgore-the-untamed");
102
103
  const reckless_cliffdiver_1 = require("./minion/reckless-cliffdiver");
103
104
  const ripsnarl_captain_1 = require("./minion/ripsnarl-captain");
105
+ const roach_1 = require("./minion/roach");
104
106
  const rodeo_performer_1 = require("./minion/rodeo-performer");
105
107
  const runed_progenitor_1 = require("./minion/runed-progenitor");
106
108
  const rylak_metalhead_1 = require("./minion/rylak-metalhead");
@@ -136,11 +138,13 @@ const wisp_in_the_shell_1 = require("./minion/wisp-in-the-shell");
136
138
  const zergling_1 = require("./minion/zergling");
137
139
  const cards = [
138
140
  sharing_is_caring_1.SharingIsCaring,
141
+ low_flier_1.LowFlier,
139
142
  zergling_1.Zergling,
140
143
  hydralisk_1.Hydralisk,
141
144
  baneling_1.Baneling,
142
145
  mutalisk_1.Mutalisk,
143
146
  lurker_1.Lurker,
147
+ roach_1.Roach,
144
148
  ultralisk_1.Ultralisk,
145
149
  colossus_1.Colossus,
146
150
  carrier_1.Carrier,
@@ -1 +1 @@
1
- {"version":3,"file":"_card-mappings.js","sourceRoot":"","sources":["../../../src/cards/impl/_card-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Card } from '../card.interface';\r\nimport { SharingIsCaring } from './bg-spell/sharing-is-caring';\r\nimport { CrystalInfuserEnchantment } from './enchantments/crystal-infuser-enchantment';\r\nimport { GloriousGloop } from './hero-power/glorious-gloop';\r\nimport { AdmiralElizaGoreblade } from './minion/admiral-eliza-goreblade';\r\nimport { AnubarakNerubianKing } from './minion/anubarak-nerubian-king';\r\nimport { ArcaneCannoneer } from './minion/arcane-cannoneer';\r\nimport { Archimonde } from './minion/archimonde';\r\nimport { AridAtrocity } from './minion/arid-atrocity';\r\nimport { AssistantGuard } from './minion/assistant-guard';\r\nimport { Baneling } from './minion/baneling';\r\nimport { Bannerboar } from './minion/bannerboar';\r\nimport { Beetle } from './minion/beetle';\r\nimport { BellowingTyrant } from './minion/bellowing-tyrant';\r\nimport { BirdBuddy } from './minion/bird-buddy';\r\nimport { BlazingSkyfin } from './minion/blazing-skyfin';\r\nimport { BoarGamer } from './minion/boar-gamer';\r\nimport { BongoBopper } from './minion/bongo-bopper';\r\nimport { BriarbackBookie } from './minion/briarback-bookie';\r\nimport { BubbleGunner } from './minion/bubble-gunner';\r\nimport { BuzzingVermin } from './minion/buzzing-vermin';\r\nimport { CadaverCaretaker } from './minion/cadaver-caretaker';\r\nimport { CaptainBonerender } from './minion/captain-bonerender';\r\nimport { Carrier } from './minion/carrier';\r\nimport { ChampionOfThePrimus } from './minion/champion-of-the-primus';\r\nimport { Charlga } from './minion/charlga';\r\nimport { ClunkerJunker } from './minion/clunker-junker';\r\nimport { Colossus } from './minion/colossus';\r\nimport { CruiseController } from './minion/cruise-controller';\r\nimport { DeathlyStriker } from './minion/deathly-striker';\r\nimport { DefiantShipwright } from './minion/defiant-shipwright';\r\nimport { DeflectoBot } from './minion/deflecto-bot';\r\nimport { EchoingRoar } from './minion/echoing-roar';\r\nimport { EfficientEngineer } from './minion/efficient-engineer';\r\nimport { ElectricSynthesizer } from './minion/electric-synthesizer';\r\nimport { FairyGillmother } from './minion/fairy-gillmother';\r\nimport { ForestRover } from './minion/forest-rover';\r\nimport { FountainChiller } from './minion/fountain-chiller';\r\nimport { GemRat } from './minion/gem-rat';\r\nimport { GemSmuggler } from './minion/gem-smuggler';\r\nimport { GeneralDrakkisath } from './minion/general-drakkisath';\r\nimport { GentleDjinni } from './minion/gentle-djinni';\r\nimport { GentleStag } from './minion/gentle-stag';\r\nimport { GoldrinnTheGreatWolf } from './minion/goldrinn-the-great-wolf';\r\nimport { GreaseBot } from './minion/grease-bot';\r\nimport { GrittyHeadhunter } from './minion/gritty-headhunter';\r\nimport { Hackerfin } from './minion/hackerfin';\r\nimport { HandlessForsaken } from './minion/handless-forsaken';\r\nimport { HarmlessBonehead } from './minion/harmless-bonehead';\r\nimport { HoloRover } from './minion/holo-rover';\r\nimport { HummingBird } from './minion/humming-bird';\r\nimport { HungrySnapjaw } from './minion/hungry-snapjaw';\r\nimport { HunterOfGatherers } from './minion/hunter-of-gatherers';\r\nimport { Hydralisk } from './minion/hydralisk';\r\nimport { Immortal } from './minion/immortal';\r\nimport { ImplantSubject } from './minion/implant-subject';\r\nimport { ImposingPercussionist } from './minion/imposing-percussionist';\r\nimport { ImpulsiveTrickster } from './minion/impulsive-trickster';\r\nimport { IndomitableMount } from './minion/indomitable-mount';\r\nimport { InspiringUnderdog } from './minion/inspiring-underdog';\r\nimport { InterrogatorWhitemane } from './minion/interrogator-whitemane';\r\nimport { KalecgosArcaneAspect } from './minion/kalecgos-arcane-aspect';\r\nimport { KangorsApprentice } from './minion/kangors-apprentice';\r\nimport { KarmicChameleon } from './minion/karmic-chameleon';\r\nimport { KingBagurgle } from './minion/king-bagurgle';\r\nimport { LeeroyTheReckless } from './minion/leeroy-the-reckless';\r\nimport { LightfangEnforcer } from './minion/lightfang-enforcer';\r\nimport { LovesickBalladist } from './minion/lovesick-balladist';\r\nimport { Lurker } from './minion/lurker';\r\nimport { Manasaber } from './minion/manasaber';\r\nimport { MarqueeTicker } from './minion/marquee-ticker';\r\nimport { MechaJaraxxus } from './minion/mecha-jaraxxus';\r\nimport { MechanizedGiftHorse } from './minion/mechanized-gift-horse';\r\nimport { Mechorse } from './minion/mechorse';\r\nimport { MenagerieJug } from './minion/menagerie-jug';\r\nimport { MisfitDragonling } from './minion/misfit-dragonling';\r\nimport { MoonsteelJuggernaut } from './minion/moonsteel-juggernaut';\r\nimport { Mothership } from './minion/mothership';\r\nimport { Mummifier } from './minion/mummifier';\r\nimport { Murky } from './minion/murky';\r\nimport { Mutalisk } from './minion/mutalisk';\r\nimport { MutatedLasher } from './minion/mutated-lasher';\r\nimport { MythraxTheUnraveler } from './minion/mythrax';\r\nimport { NeonAgent } from './minion/neon-agent';\r\nimport { NerubianDeathswarmer } from './minion/nerubian-deathswarmer';\r\nimport { NestSwarmer } from './minion/nest-swarmer';\r\nimport { NetherDrake } from './minion/nether-drake';\r\nimport { Niuzao } from './minion/niuzao';\r\nimport { OozelingGladiator } from './minion/oozeling-gladiator';\r\nimport { OperaticBelcher } from './minion/operatic-belcher';\r\nimport { OutbackSmolderer } from './minion/outback-smolderer';\r\nimport { ParchedWanderer } from './minion/parched-wanderer';\r\nimport { PeggySturdybone } from './minion/peggy-sturdybone';\r\nimport { PrimalfinLookout } from './minion/primalfin-lookout';\r\nimport { PrizedPromoDrake } from './minion/prized-promo-drake';\r\nimport { RapscallionRecruiter } from './minion/rapscallion-recruiter';\r\nimport { RazorfenGeomancer } from './minion/razorfen-geomancer';\r\nimport { RazorgoreTheUntamed } from './minion/razorgore-the-untamed';\r\nimport { RecklessCliffdiver } from './minion/reckless-cliffdiver';\r\nimport { RipsnarlCaptain } from './minion/ripsnarl-captain';\r\nimport { RodeoPerformer } from './minion/rodeo-performer';\r\nimport { RunedProgenitor } from './minion/runed-progenitor';\r\nimport { RylakMetalhead } from './minion/rylak-metalhead';\r\nimport { SaltyHog } from './minion/salty-hog';\r\nimport { SanlaynScribe } from './minion/sanlayn-scribe';\r\nimport { Scallywag } from './minion/scallywag';\r\nimport { ShellCollector } from './minion/shell-collector';\r\nimport { ShowyCyclist } from './minion/showy-cyclist';\r\nimport { SilverHandedRecruit } from './minion/silver-handed-recruit';\r\nimport { SindoreiStraightShot } from './minion/sinodorei-straight-shot';\r\nimport { SkyPirateFlagbearer } from './minion/sky-pirate-flagbearer';\r\nimport { SkyPirateFlagbearerEnchantment } from './minion/sky-pirate-flagbearer-enchantment';\r\nimport { SlyRaptor } from './minion/sly-raptor';\r\nimport { Smolderwing } from './minion/smolderwing';\r\nimport { SoulRewinder } from './minion/soul-rewinder';\r\nimport { Spacefarer } from './minion/spacefarer';\r\nimport { StitchedSalvager } from './minion/stitched-salvager';\r\nimport { Swampstriker } from './minion/swampstriker';\r\nimport { ThreeLilQuilboar } from './minion/three-lil-quilboar';\r\nimport { ThunderingAbomination } from './minion/thundering-abomination';\r\nimport { Tichondrius } from './minion/tichondrius';\r\nimport { TransmutedBramblewitch } from './minion/transmuted-bramblewitch';\r\nimport { TunnelBlaster } from './minion/tunnel-blaster';\r\nimport { TurquoiseSkitterer } from './minion/turquoise-skitterer';\r\nimport { TwilightPrimordium } from './minion/twilight-primordium';\r\nimport { Ultralisk } from './minion/ultralisk';\r\nimport { UltravioletAscendant } from './minion/ultraviolet-ascendant';\r\nimport { VoidRay } from './minion/void-ray';\r\nimport { WanderingWight } from './minion/wandering-wight';\r\nimport { WhelpSmuggler } from './minion/whelp-smuggler';\r\nimport { WildfireElemental } from './minion/wildfire-elemental';\r\nimport { WispInTheShell } from './minion/wisp-in-the-shell';\r\nimport { Zergling } from './minion/zergling';\r\n\r\nconst cards = [\r\n\tSharingIsCaring,\r\n\tZergling,\r\n\tHydralisk,\r\n\tBaneling,\r\n\tMutalisk,\r\n\tLurker,\r\n\tUltralisk,\r\n\tColossus,\r\n\tCarrier,\r\n\tImmortal,\r\n\tVoidRay,\r\n\tMothership,\r\n\tCaptainBonerender,\r\n\tGentleStag,\r\n\tBellowingTyrant,\r\n\tStitchedSalvager,\r\n\tMythraxTheUnraveler,\r\n\tWildfireElemental,\r\n\tHoloRover,\r\n\tForestRover,\r\n\tBeetle,\r\n\tBuzzingVermin,\r\n\tGemRat,\r\n\tNestSwarmer,\r\n\tRunedProgenitor,\r\n\tTurquoiseSkitterer,\r\n\tEfficientEngineer,\r\n\tNetherDrake,\r\n\tElectricSynthesizer,\r\n\tOutbackSmolderer,\r\n\tRazorgoreTheUntamed,\r\n\tUltravioletAscendant,\r\n\tTwilightPrimordium,\r\n\tGentleDjinni,\r\n\tMoonsteelJuggernaut,\r\n\tMarqueeTicker,\r\n\tRecklessCliffdiver,\r\n\tFountainChiller,\r\n\tNeonAgent,\r\n\tImplantSubject,\r\n\tHackerfin,\r\n\tBubbleGunner,\r\n\tFairyGillmother,\r\n\tShowyCyclist,\r\n\tArcaneCannoneer,\r\n\tMutatedLasher,\r\n\tGloriousGloop,\r\n\tSilverHandedRecruit,\r\n\tSaltyHog,\r\n\tSpacefarer,\r\n\tGrittyHeadhunter,\r\n\tCrystalInfuserEnchantment,\r\n\tBoarGamer,\r\n\tBannerboar,\r\n\tWanderingWight,\r\n\tDeathlyStriker,\r\n\tWispInTheShell,\r\n\tHandlessForsaken,\r\n\tHarmlessBonehead,\r\n\tCadaverCaretaker,\r\n\tHungrySnapjaw,\r\n\tNiuzao,\r\n\tBirdBuddy,\r\n\tSlyRaptor,\r\n\tManasaber,\r\n\tRylakMetalhead,\r\n\tHummingBird,\r\n\tMechanizedGiftHorse,\r\n\tMechorse,\r\n\tIndomitableMount,\r\n\tKarmicChameleon,\r\n\tGoldrinnTheGreatWolf,\r\n\tImpulsiveTrickster,\r\n\tMechaJaraxxus,\r\n\tWhelpSmuggler,\r\n\tHunterOfGatherers,\r\n\tBlazingSkyfin,\r\n\tGeneralDrakkisath,\r\n\tSmolderwing,\r\n\tMisfitDragonling,\r\n\tKalecgosArcaneAspect,\r\n\tGreaseBot,\r\n\tClunkerJunker,\r\n\tKangorsApprentice,\r\n\tDeflectoBot,\r\n\tSwampstriker,\r\n\tMurky,\r\n\tOperaticBelcher,\r\n\tParchedWanderer,\r\n\tPrimalfinLookout,\r\n\tKingBagurgle,\r\n\tShellCollector,\r\n\tTunnelBlaster,\r\n\tLeeroyTheReckless,\r\n\tInterrogatorWhitemane,\r\n\tOozelingGladiator,\r\n\tRodeoPerformer,\r\n\tAssistantGuard,\r\n\tAridAtrocity,\r\n\tInspiringUnderdog,\r\n\tLightfangEnforcer,\r\n\tDefiantShipwright,\r\n\tPeggySturdybone,\r\n\tRapscallionRecruiter,\r\n\tLovesickBalladist,\r\n\tAdmiralElizaGoreblade,\r\n\tSkyPirateFlagbearer,\r\n\tSkyPirateFlagbearerEnchantment,\r\n\tCruiseController,\r\n\tRipsnarlCaptain,\r\n\tScallywag,\r\n\tRazorfenGeomancer,\r\n\tCharlga,\r\n\tGemSmuggler,\r\n\tBongoBopper,\r\n\tThreeLilQuilboar,\r\n\tAnubarakNerubianKing,\r\n\tNerubianDeathswarmer,\r\n\tSindoreiStraightShot,\r\n\tChampionOfThePrimus,\r\n\tMummifier,\r\n\tEchoingRoar,\r\n\tMenagerieJug,\r\n\tThunderingAbomination,\r\n\tPrizedPromoDrake,\r\n\tTransmutedBramblewitch,\r\n\tImposingPercussionist,\r\n\tSoulRewinder,\r\n\tTichondrius,\r\n\tArchimonde,\r\n\tSanlaynScribe,\r\n\tBriarbackBookie,\r\n];\r\n\r\nexport const cardMappings: { [cardId: string]: Card } = {};\r\nfor (const card of cards) {\r\n\tconst cardIds = card.cardIds ?? [];\r\n\tfor (const cardId of cardIds) {\r\n\t\tcardMappings[cardId] = card;\r\n\t}\r\n}\r\n"]}
1
+ {"version":3,"file":"_card-mappings.js","sourceRoot":"","sources":["../../../src/cards/impl/_card-mappings.ts"],"names":[],"mappings":"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","sourcesContent":["import { Card } from '../card.interface';\r\nimport { SharingIsCaring } from './bg-spell/sharing-is-caring';\r\nimport { CrystalInfuserEnchantment } from './enchantments/crystal-infuser-enchantment';\r\nimport { GloriousGloop } from './hero-power/glorious-gloop';\r\nimport { AdmiralElizaGoreblade } from './minion/admiral-eliza-goreblade';\r\nimport { AnubarakNerubianKing } from './minion/anubarak-nerubian-king';\r\nimport { ArcaneCannoneer } from './minion/arcane-cannoneer';\r\nimport { Archimonde } from './minion/archimonde';\r\nimport { AridAtrocity } from './minion/arid-atrocity';\r\nimport { AssistantGuard } from './minion/assistant-guard';\r\nimport { Baneling } from './minion/baneling';\r\nimport { Bannerboar } from './minion/bannerboar';\r\nimport { Beetle } from './minion/beetle';\r\nimport { BellowingTyrant } from './minion/bellowing-tyrant';\r\nimport { BirdBuddy } from './minion/bird-buddy';\r\nimport { BlazingSkyfin } from './minion/blazing-skyfin';\r\nimport { BoarGamer } from './minion/boar-gamer';\r\nimport { BongoBopper } from './minion/bongo-bopper';\r\nimport { BriarbackBookie } from './minion/briarback-bookie';\r\nimport { BubbleGunner } from './minion/bubble-gunner';\r\nimport { BuzzingVermin } from './minion/buzzing-vermin';\r\nimport { CadaverCaretaker } from './minion/cadaver-caretaker';\r\nimport { CaptainBonerender } from './minion/captain-bonerender';\r\nimport { Carrier } from './minion/carrier';\r\nimport { ChampionOfThePrimus } from './minion/champion-of-the-primus';\r\nimport { Charlga } from './minion/charlga';\r\nimport { ClunkerJunker } from './minion/clunker-junker';\r\nimport { Colossus } from './minion/colossus';\r\nimport { CruiseController } from './minion/cruise-controller';\r\nimport { DeathlyStriker } from './minion/deathly-striker';\r\nimport { DefiantShipwright } from './minion/defiant-shipwright';\r\nimport { DeflectoBot } from './minion/deflecto-bot';\r\nimport { EchoingRoar } from './minion/echoing-roar';\r\nimport { EfficientEngineer } from './minion/efficient-engineer';\r\nimport { ElectricSynthesizer } from './minion/electric-synthesizer';\r\nimport { FairyGillmother } from './minion/fairy-gillmother';\r\nimport { ForestRover } from './minion/forest-rover';\r\nimport { FountainChiller } from './minion/fountain-chiller';\r\nimport { GemRat } from './minion/gem-rat';\r\nimport { GemSmuggler } from './minion/gem-smuggler';\r\nimport { GeneralDrakkisath } from './minion/general-drakkisath';\r\nimport { GentleDjinni } from './minion/gentle-djinni';\r\nimport { GentleStag } from './minion/gentle-stag';\r\nimport { GoldrinnTheGreatWolf } from './minion/goldrinn-the-great-wolf';\r\nimport { GreaseBot } from './minion/grease-bot';\r\nimport { GrittyHeadhunter } from './minion/gritty-headhunter';\r\nimport { Hackerfin } from './minion/hackerfin';\r\nimport { HandlessForsaken } from './minion/handless-forsaken';\r\nimport { HarmlessBonehead } from './minion/harmless-bonehead';\r\nimport { HoloRover } from './minion/holo-rover';\r\nimport { HummingBird } from './minion/humming-bird';\r\nimport { HungrySnapjaw } from './minion/hungry-snapjaw';\r\nimport { HunterOfGatherers } from './minion/hunter-of-gatherers';\r\nimport { Hydralisk } from './minion/hydralisk';\r\nimport { Immortal } from './minion/immortal';\r\nimport { ImplantSubject } from './minion/implant-subject';\r\nimport { ImposingPercussionist } from './minion/imposing-percussionist';\r\nimport { ImpulsiveTrickster } from './minion/impulsive-trickster';\r\nimport { IndomitableMount } from './minion/indomitable-mount';\r\nimport { InspiringUnderdog } from './minion/inspiring-underdog';\r\nimport { InterrogatorWhitemane } from './minion/interrogator-whitemane';\r\nimport { KalecgosArcaneAspect } from './minion/kalecgos-arcane-aspect';\r\nimport { KangorsApprentice } from './minion/kangors-apprentice';\r\nimport { KarmicChameleon } from './minion/karmic-chameleon';\r\nimport { KingBagurgle } from './minion/king-bagurgle';\r\nimport { LeeroyTheReckless } from './minion/leeroy-the-reckless';\r\nimport { LightfangEnforcer } from './minion/lightfang-enforcer';\r\nimport { LovesickBalladist } from './minion/lovesick-balladist';\r\nimport { LowFlier } from './minion/low-flier';\r\nimport { Lurker } from './minion/lurker';\r\nimport { Manasaber } from './minion/manasaber';\r\nimport { MarqueeTicker } from './minion/marquee-ticker';\r\nimport { MechaJaraxxus } from './minion/mecha-jaraxxus';\r\nimport { MechanizedGiftHorse } from './minion/mechanized-gift-horse';\r\nimport { Mechorse } from './minion/mechorse';\r\nimport { MenagerieJug } from './minion/menagerie-jug';\r\nimport { MisfitDragonling } from './minion/misfit-dragonling';\r\nimport { MoonsteelJuggernaut } from './minion/moonsteel-juggernaut';\r\nimport { Mothership } from './minion/mothership';\r\nimport { Mummifier } from './minion/mummifier';\r\nimport { Murky } from './minion/murky';\r\nimport { Mutalisk } from './minion/mutalisk';\r\nimport { MutatedLasher } from './minion/mutated-lasher';\r\nimport { MythraxTheUnraveler } from './minion/mythrax';\r\nimport { NeonAgent } from './minion/neon-agent';\r\nimport { NerubianDeathswarmer } from './minion/nerubian-deathswarmer';\r\nimport { NestSwarmer } from './minion/nest-swarmer';\r\nimport { NetherDrake } from './minion/nether-drake';\r\nimport { Niuzao } from './minion/niuzao';\r\nimport { OozelingGladiator } from './minion/oozeling-gladiator';\r\nimport { OperaticBelcher } from './minion/operatic-belcher';\r\nimport { OutbackSmolderer } from './minion/outback-smolderer';\r\nimport { ParchedWanderer } from './minion/parched-wanderer';\r\nimport { PeggySturdybone } from './minion/peggy-sturdybone';\r\nimport { PrimalfinLookout } from './minion/primalfin-lookout';\r\nimport { PrizedPromoDrake } from './minion/prized-promo-drake';\r\nimport { RapscallionRecruiter } from './minion/rapscallion-recruiter';\r\nimport { RazorfenGeomancer } from './minion/razorfen-geomancer';\r\nimport { RazorgoreTheUntamed } from './minion/razorgore-the-untamed';\r\nimport { RecklessCliffdiver } from './minion/reckless-cliffdiver';\r\nimport { RipsnarlCaptain } from './minion/ripsnarl-captain';\r\nimport { Roach } from './minion/roach';\r\nimport { RodeoPerformer } from './minion/rodeo-performer';\r\nimport { RunedProgenitor } from './minion/runed-progenitor';\r\nimport { RylakMetalhead } from './minion/rylak-metalhead';\r\nimport { SaltyHog } from './minion/salty-hog';\r\nimport { SanlaynScribe } from './minion/sanlayn-scribe';\r\nimport { Scallywag } from './minion/scallywag';\r\nimport { ShellCollector } from './minion/shell-collector';\r\nimport { ShowyCyclist } from './minion/showy-cyclist';\r\nimport { SilverHandedRecruit } from './minion/silver-handed-recruit';\r\nimport { SindoreiStraightShot } from './minion/sinodorei-straight-shot';\r\nimport { SkyPirateFlagbearer } from './minion/sky-pirate-flagbearer';\r\nimport { SkyPirateFlagbearerEnchantment } from './minion/sky-pirate-flagbearer-enchantment';\r\nimport { SlyRaptor } from './minion/sly-raptor';\r\nimport { Smolderwing } from './minion/smolderwing';\r\nimport { SoulRewinder } from './minion/soul-rewinder';\r\nimport { Spacefarer } from './minion/spacefarer';\r\nimport { StitchedSalvager } from './minion/stitched-salvager';\r\nimport { Swampstriker } from './minion/swampstriker';\r\nimport { ThreeLilQuilboar } from './minion/three-lil-quilboar';\r\nimport { ThunderingAbomination } from './minion/thundering-abomination';\r\nimport { Tichondrius } from './minion/tichondrius';\r\nimport { TransmutedBramblewitch } from './minion/transmuted-bramblewitch';\r\nimport { TunnelBlaster } from './minion/tunnel-blaster';\r\nimport { TurquoiseSkitterer } from './minion/turquoise-skitterer';\r\nimport { TwilightPrimordium } from './minion/twilight-primordium';\r\nimport { Ultralisk } from './minion/ultralisk';\r\nimport { UltravioletAscendant } from './minion/ultraviolet-ascendant';\r\nimport { VoidRay } from './minion/void-ray';\r\nimport { WanderingWight } from './minion/wandering-wight';\r\nimport { WhelpSmuggler } from './minion/whelp-smuggler';\r\nimport { WildfireElemental } from './minion/wildfire-elemental';\r\nimport { WispInTheShell } from './minion/wisp-in-the-shell';\r\nimport { Zergling } from './minion/zergling';\r\n\r\nconst cards = [\r\n\tSharingIsCaring,\r\n\tLowFlier,\r\n\tZergling,\r\n\tHydralisk,\r\n\tBaneling,\r\n\tMutalisk,\r\n\tLurker,\r\n\tRoach,\r\n\tUltralisk,\r\n\tColossus,\r\n\tCarrier,\r\n\tImmortal,\r\n\tVoidRay,\r\n\tMothership,\r\n\tCaptainBonerender,\r\n\tGentleStag,\r\n\tBellowingTyrant,\r\n\tStitchedSalvager,\r\n\tMythraxTheUnraveler,\r\n\tWildfireElemental,\r\n\tHoloRover,\r\n\tForestRover,\r\n\tBeetle,\r\n\tBuzzingVermin,\r\n\tGemRat,\r\n\tNestSwarmer,\r\n\tRunedProgenitor,\r\n\tTurquoiseSkitterer,\r\n\tEfficientEngineer,\r\n\tNetherDrake,\r\n\tElectricSynthesizer,\r\n\tOutbackSmolderer,\r\n\tRazorgoreTheUntamed,\r\n\tUltravioletAscendant,\r\n\tTwilightPrimordium,\r\n\tGentleDjinni,\r\n\tMoonsteelJuggernaut,\r\n\tMarqueeTicker,\r\n\tRecklessCliffdiver,\r\n\tFountainChiller,\r\n\tNeonAgent,\r\n\tImplantSubject,\r\n\tHackerfin,\r\n\tBubbleGunner,\r\n\tFairyGillmother,\r\n\tShowyCyclist,\r\n\tArcaneCannoneer,\r\n\tMutatedLasher,\r\n\tGloriousGloop,\r\n\tSilverHandedRecruit,\r\n\tSaltyHog,\r\n\tSpacefarer,\r\n\tGrittyHeadhunter,\r\n\tCrystalInfuserEnchantment,\r\n\tBoarGamer,\r\n\tBannerboar,\r\n\tWanderingWight,\r\n\tDeathlyStriker,\r\n\tWispInTheShell,\r\n\tHandlessForsaken,\r\n\tHarmlessBonehead,\r\n\tCadaverCaretaker,\r\n\tHungrySnapjaw,\r\n\tNiuzao,\r\n\tBirdBuddy,\r\n\tSlyRaptor,\r\n\tManasaber,\r\n\tRylakMetalhead,\r\n\tHummingBird,\r\n\tMechanizedGiftHorse,\r\n\tMechorse,\r\n\tIndomitableMount,\r\n\tKarmicChameleon,\r\n\tGoldrinnTheGreatWolf,\r\n\tImpulsiveTrickster,\r\n\tMechaJaraxxus,\r\n\tWhelpSmuggler,\r\n\tHunterOfGatherers,\r\n\tBlazingSkyfin,\r\n\tGeneralDrakkisath,\r\n\tSmolderwing,\r\n\tMisfitDragonling,\r\n\tKalecgosArcaneAspect,\r\n\tGreaseBot,\r\n\tClunkerJunker,\r\n\tKangorsApprentice,\r\n\tDeflectoBot,\r\n\tSwampstriker,\r\n\tMurky,\r\n\tOperaticBelcher,\r\n\tParchedWanderer,\r\n\tPrimalfinLookout,\r\n\tKingBagurgle,\r\n\tShellCollector,\r\n\tTunnelBlaster,\r\n\tLeeroyTheReckless,\r\n\tInterrogatorWhitemane,\r\n\tOozelingGladiator,\r\n\tRodeoPerformer,\r\n\tAssistantGuard,\r\n\tAridAtrocity,\r\n\tInspiringUnderdog,\r\n\tLightfangEnforcer,\r\n\tDefiantShipwright,\r\n\tPeggySturdybone,\r\n\tRapscallionRecruiter,\r\n\tLovesickBalladist,\r\n\tAdmiralElizaGoreblade,\r\n\tSkyPirateFlagbearer,\r\n\tSkyPirateFlagbearerEnchantment,\r\n\tCruiseController,\r\n\tRipsnarlCaptain,\r\n\tScallywag,\r\n\tRazorfenGeomancer,\r\n\tCharlga,\r\n\tGemSmuggler,\r\n\tBongoBopper,\r\n\tThreeLilQuilboar,\r\n\tAnubarakNerubianKing,\r\n\tNerubianDeathswarmer,\r\n\tSindoreiStraightShot,\r\n\tChampionOfThePrimus,\r\n\tMummifier,\r\n\tEchoingRoar,\r\n\tMenagerieJug,\r\n\tThunderingAbomination,\r\n\tPrizedPromoDrake,\r\n\tTransmutedBramblewitch,\r\n\tImposingPercussionist,\r\n\tSoulRewinder,\r\n\tTichondrius,\r\n\tArchimonde,\r\n\tSanlaynScribe,\r\n\tBriarbackBookie,\r\n];\r\n\r\nexport const cardMappings: { [cardId: string]: Card } = {};\r\nfor (const card of cards) {\r\n\tconst cardIds = card.cardIds ?? [];\r\n\tfor (const cardId of cardIds) {\r\n\t\tcardMappings[cardId] = card;\r\n\t}\r\n}\r\n"]}
@@ -5,7 +5,7 @@ const utils_1 = require("../../../services/utils");
5
5
  const attack_1 = require("../../../simulation/attack");
6
6
  const stats_1 = require("../../../simulation/stats");
7
7
  exports.SharingIsCaring = {
8
- cardIds: ["SharingIsCaring"],
8
+ cardIds: ["BG31_889"],
9
9
  startOfCombat: (secret, input) => {
10
10
  const friendlyMinion = input.playerBoard[0];
11
11
  if (!friendlyMinion) {
@@ -1 +1 @@
1
- {"version":3,"file":"sharing-is-caring.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/sharing-is-caring.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,uDAAgE;AAEhE,qDAAwD;AAI3C,QAAA,eAAe,GAAsB;IACjD,OAAO,EAAE,mBAA6B;IACtC,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE;YACpB,OAAO,KAAK,CAAC;SACb;QAED,MAAM,OAAO,GAAG,IAAA,2BAAkB,EACjC,KAAK,CAAC,WAAW,EACjB,cAAc,EACd,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EACxE,KAAK,CAAC,aAAa,EACnB,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,OAAO,KAAK,CAAC;SACb;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;QACnC,IAAA,mBAAW,EACV,cAAc,EACd,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardSecret } from '../../../board-secret';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { findNearestEnemies } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const SharingIsCaring: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.SharingIsCaring],\r\n\tstartOfCombat: (secret: BoardSecret, input: SoCInput) => {\r\n\t\tconst friendlyMinion = input.playerBoard[0];\r\n\t\tif (!friendlyMinion) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst targets = findNearestEnemies(\r\n\t\t\tinput.playerBoard,\r\n\t\t\tfriendlyMinion,\r\n\t\t\tinput.playerBoard.length - 1 - input.playerBoard.indexOf(friendlyMinion),\r\n\t\t\tinput.opponentBoard,\r\n\t\t\t1,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t);\r\n\t\tif (!targets.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (targets.length > 2) {\r\n\t\t\tconsole.error('Invalid number of targets', targets.length);\r\n\t\t}\r\n\r\n\t\tconst target = pickRandom(targets);\r\n\t\tmodifyStats(\r\n\t\t\tfriendlyMinion,\r\n\t\t\ttarget.attack,\r\n\t\t\ttarget.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"sharing-is-caring.js","sourceRoot":"","sources":["../../../../src/cards/impl/bg-spell/sharing-is-caring.ts"],"names":[],"mappings":";;;AAEA,mDAAqD;AACrD,uDAAgE;AAEhE,qDAAwD;AAG3C,QAAA,eAAe,GAAsB;IACjD,OAAO,EAAE,YAAkC;IAC3C,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,cAAc,EAAE;YACpB,OAAO,KAAK,CAAC;SACb;QAED,MAAM,OAAO,GAAG,IAAA,2BAAkB,EACjC,KAAK,CAAC,WAAW,EACjB,cAAc,EACd,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EACxE,KAAK,CAAC,aAAa,EACnB,CAAC,EACD,KAAK,CAAC,SAAS,CAAC,QAAQ,CACxB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,OAAO,KAAK,CAAC;SACb;QACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;SAC3D;QAED,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;QACnC,IAAA,mBAAW,EACV,cAAc,EACd,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,EACb,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardSecret } from '../../../board-secret';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { findNearestEnemies } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const SharingIsCaring: StartOfCombatCard = {\r\n\tcardIds: [CardIds.SharingIsCaring_BG31_889],\r\n\tstartOfCombat: (secret: BoardSecret, input: SoCInput) => {\r\n\t\tconst friendlyMinion = input.playerBoard[0];\r\n\t\tif (!friendlyMinion) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst targets = findNearestEnemies(\r\n\t\t\tinput.playerBoard,\r\n\t\t\tfriendlyMinion,\r\n\t\t\tinput.playerBoard.length - 1 - input.playerBoard.indexOf(friendlyMinion),\r\n\t\t\tinput.opponentBoard,\r\n\t\t\t1,\r\n\t\t\tinput.gameState.allCards,\r\n\t\t);\r\n\t\tif (!targets.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (targets.length > 2) {\r\n\t\t\tconsole.error('Invalid number of targets', targets.length);\r\n\t\t}\r\n\r\n\t\tconst target = pickRandom(targets);\r\n\t\tmodifyStats(\r\n\t\t\tfriendlyMinion,\r\n\t\t\ttarget.attack,\r\n\t\t\ttarget.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Baneling = void 0;
4
- const utils_1 = require("../../../services/utils");
5
4
  const attack_1 = require("../../../simulation/attack");
6
5
  exports.Baneling = {
7
- cardIds: ["Baneling", "Baneling_G"],
6
+ cardIds: ["BG31_HERO_811t5", "BG31_HERO_811t5_G"],
8
7
  deathrattleEffect: (minion, input) => {
9
- const target = (0, utils_1.pickRandom)(input.otherBoard);
10
- if (!!target) {
8
+ const loops = minion.cardId === "BG31_HERO_811t5_G" ? 2 : 1;
9
+ for (let i = 0; i < loops; i++) {
11
10
  const damage = minion.attack;
12
11
  (0, attack_1.dealDamageToRandomEnemy)(input.otherBoard, input.boardWithDeadEntityHero, minion, damage, input.boardWithDeadEntity, input.boardWithDeadEntityHero, input.gameState);
13
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"baneling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/baneling.ts"],"names":[],"mappings":";;;AACA,mDAAqD;AACrD,uDAAqE;AAKxD,QAAA,QAAQ,GAA0B;IAC9C,OAAO,EAAE,0BAA8C;IACvD,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,EAAE;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,IAAA,gCAAuB,EACtB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,uBAAuB,EAC7B,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { pickRandom } from '../../../services/utils';\r\nimport { dealDamageToRandomEnemy } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nexport const Baneling: DeathrattleEffectCard = {\r\n\tcardIds: [TempCardIds.Baneling, TempCardIds.Baneling_G],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst target = pickRandom(input.otherBoard);\r\n\t\tif (!!target) {\r\n\t\t\tconst damage = minion.attack;\r\n\t\t\tdealDamageToRandomEnemy(\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"baneling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/baneling.ts"],"names":[],"mappings":";;;AAEA,uDAAqE;AAIxD,QAAA,QAAQ,GAA0B;IAC9C,OAAO,EAAE,wCAAiG;IAC1G,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAAE,EAAE;QAC5E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,wBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,IAAA,gCAAuB,EACtB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,uBAAuB,EAC7B,MAAM,EACN,MAAM,EACN,KAAK,CAAC,mBAAmB,EACzB,KAAK,CAAC,uBAAuB,EAC7B,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToRandomEnemy } from '../../../simulation/attack';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { DeathrattleEffectCard } from '../../card.interface';\r\n\r\nexport const Baneling: DeathrattleEffectCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_BanelingToken_BG31_HERO_811t5, CardIds.Baneling_BG31_HERO_811t5_G],\r\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => {\r\n\t\tconst loops = minion.cardId === CardIds.Baneling_BG31_HERO_811t5_G ? 2 : 1;\r\n\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\tconst damage = minion.attack;\r\n\t\t\tdealDamageToRandomEnemy(\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\r\n\t\t\t\tinput.boardWithDeadEntity,\r\n\t\t\t\tinput.boardWithDeadEntityHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -5,10 +5,10 @@ const reference_data_1 = require("@firestone-hs/reference-data");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  const utils_1 = require("../../../utils");
7
7
  exports.BellowingTyrant = {
8
- cardIds: ["BellowingTyrant", "BellowingTyrant_G"],
8
+ cardIds: ["BG31_361", "BG31_361_G"],
9
9
  onSpawned: (minion, input) => {
10
10
  input.hero.globalInfo.BeastsSummonedThisGame += 1;
11
- const mult = minion.cardId === "BellowingTyrant_G" ? 2 : 1;
11
+ const mult = minion.cardId === "BG31_361_G" ? 2 : 1;
12
12
  const statsBonus = mult * input.hero.globalInfo.BeastsSummonedThisGame;
13
13
  (0, stats_1.modifyStats)(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);
14
14
  },
@@ -17,7 +17,7 @@ exports.BellowingTyrant = {
17
17
  return;
18
18
  }
19
19
  input.hero.globalInfo.BeastsSummonedThisGame += 1;
20
- const mult = minion.cardId === "BellowingTyrant_G" ? 2 : 1;
20
+ const mult = minion.cardId === "BG31_361_G" ? 2 : 1;
21
21
  const statsBonus = mult * 1;
22
22
  (0, stats_1.modifyStats)(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);
23
23
  },
@@ -1 +1 @@
1
- {"version":3,"file":"bellowing-tyrant.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bellowing-tyrant.ts"],"names":[],"mappings":";;;AAAA,iEAAoD;AAGpD,qDAAwD;AAExD,0CAAiD;AAGpC,QAAA,eAAe,GAAuC;IAClE,OAAO,EAAE,wCAA4D;IACrE,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QACvE,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACjE,IAAI,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACtF,OAAO;SACP;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;QAC5B,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACD,CAAC","sourcesContent":["import { Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput, OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { OnOtherSpawnedCard, OnSpawnedCard } from '../../card.interface';\r\n\r\nexport const BellowingTyrant: OnSpawnedCard & OnOtherSpawnedCard = {\r\n\tcardIds: [TempCardIds.BellowingTyrant, TempCardIds.BellowingTyrant_G],\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tinput.hero.globalInfo.BeastsSummonedThisGame += 1;\r\n\t\tconst mult = minion.cardId === TempCardIds.BellowingTyrant_G ? 2 : 1;\r\n\t\tconst statsBonus = mult * input.hero.globalInfo.BeastsSummonedThisGame;\r\n\t\tmodifyStats(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (!hasCorrectTribe(input.spawned, input.hero, Race.BEAST, input.gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tinput.hero.globalInfo.BeastsSummonedThisGame += 1;\r\n\t\tconst mult = minion.cardId === TempCardIds.BellowingTyrant_G ? 2 : 1;\r\n\t\tconst statsBonus = mult * 1;\r\n\t\tmodifyStats(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"bellowing-tyrant.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/bellowing-tyrant.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAG7D,qDAAwD;AACxD,0CAAiD;AAGpC,QAAA,eAAe,GAAuC;IAClE,OAAO,EAAE,0BAAsE;IAC/E,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAmB,EAAE,EAAE;QACvD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QACvE,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,cAAc,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACjE,IAAI,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACtF,OAAO;SACP;QACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC;QAC5B,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput, OnSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { hasCorrectTribe } from '../../../utils';\r\nimport { OnOtherSpawnedCard, OnSpawnedCard } from '../../card.interface';\r\n\r\nexport const BellowingTyrant: OnSpawnedCard & OnOtherSpawnedCard = {\r\n\tcardIds: [CardIds.BellowingTyrant_BG31_361, CardIds.BellowingTyrant_BG31_361_G],\r\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => {\r\n\t\tinput.hero.globalInfo.BeastsSummonedThisGame += 1;\r\n\t\tconst mult = minion.cardId === CardIds.BellowingTyrant_BG31_361_G ? 2 : 1;\r\n\t\tconst statsBonus = mult * input.hero.globalInfo.BeastsSummonedThisGame;\r\n\t\tmodifyStats(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (!hasCorrectTribe(input.spawned, input.hero, Race.BEAST, input.gameState.allCards)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tinput.hero.globalInfo.BeastsSummonedThisGame += 1;\r\n\t\tconst mult = minion.cardId === CardIds.BellowingTyrant_BG31_361_G ? 2 : 1;\r\n\t\tconst statsBonus = mult * 1;\r\n\t\tmodifyStats(minion, 3 * statsBonus, 2 * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -6,12 +6,12 @@ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
6
  const spawns_1 = require("../../../simulation/spawns");
7
7
  const utils_1 = require("../../../utils");
8
8
  exports.CaptainBonerender = {
9
- cardIds: ["CaptainBonerender", "CaptainBonerender_G"],
9
+ cardIds: ["BG31_840", "BG31_840_G"],
10
10
  afterOtherSpawned: (minion, input) => {
11
11
  if (exports.CaptainBonerender.cardIds.includes(input.spawned.cardId)) {
12
12
  return;
13
13
  }
14
- const mult = minion.cardId === "CaptainBonerender" ? 1 : 2;
14
+ const mult = minion.cardId === "BG31_840" ? 1 : 2;
15
15
  for (let i = 0; i < mult; i++) {
16
16
  if (input.board.length >= 7) {
17
17
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"captain-bonerender.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/captain-bonerender.ts"],"names":[],"mappings":";;;AACA,iFAAiG;AACjG,+EAAuE;AACvE,uDAAiE;AAEjE,0CAA4C;AAG/B,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,4CAAgE;IACzE,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACpE,IAAI,yBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAqB,CAAC,EAAE;YAC5E,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM;aACN;YACD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,MAAM,EACN,cAAc,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput, removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const CaptainBonerender: AfterOtherSpawnedCard = {\r\n\tcardIds: [TempCardIds.CaptainBonerender, TempCardIds.CaptainBonerender_G],\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (CaptainBonerender.cardIds.includes(input.spawned.cardId as TempCardIds)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === TempCardIds.CaptainBonerender ? 1 : 2;\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tif (input.board.length >= 7) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst copy = copyEntity(input.spawned);\r\n\t\t\tremoveAurasFromSelf(copy, input.board, input.hero, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.hero.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.board.length - input.board.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tminion,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"captain-bonerender.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/captain-bonerender.ts"],"names":[],"mappings":";;;AAEA,iFAAiG;AACjG,+EAAuE;AACvE,uDAAiE;AACjE,0CAA4C;AAG/B,QAAA,iBAAiB,GAA0B;IACvD,OAAO,EAAE,0BAA0E;IACnF,iBAAiB,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACpE,IAAI,yBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAiB,CAAC,EAAE;YACxE,OAAO;SACP;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,eAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM;aACN;YACD,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YACpE,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,IAAI,EACV,MAAM,EACN,cAAc,EACd,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,CACf,CAAC;SACF;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput, removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { copyEntity } from '../../../utils';\r\nimport { AfterOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const CaptainBonerender: AfterOtherSpawnedCard = {\r\n\tcardIds: [CardIds.CaptainBonerender_BG31_840, CardIds.CaptainBonerender_BG31_840_G],\r\n\tafterOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tif (CaptainBonerender.cardIds.includes(input.spawned.cardId as CardIds)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst mult = minion.cardId === CardIds.CaptainBonerender_BG31_840 ? 1 : 2;\r\n\t\tfor (let i = 0; i < mult; i++) {\r\n\t\t\tif (input.board.length >= 7) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst copy = copyEntity(input.spawned);\r\n\t\t\tremoveAurasFromSelf(copy, input.board, input.hero, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.hero.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.board.length - input.board.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.board,\r\n\t\t\t\tinput.hero,\r\n\t\t\t\tminion,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.otherBoard,\r\n\t\t\t\tinput.otherHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -4,7 +4,7 @@ exports.Carrier = void 0;
4
4
  const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  exports.Carrier = {
7
- cardIds: ["Carrier", "Carrier_G"],
7
+ cardIds: ["BG31_HERO_802pt1t", "BG31_HERO_802pt1_G"],
8
8
  baseAvengeValue: (cardId) => 4,
9
9
  avenge: (minion, input) => {
10
10
  const spawnInput = {
@@ -16,9 +16,10 @@ exports.Carrier = {
16
16
  otherBoardHero: input.otherHero,
17
17
  };
18
18
  const statBuff = minion.scriptDataNum1;
19
- const spawned = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("Interceptor_BG", 1, spawnInput);
19
+ const numberOfSummons = minion.cardId === "BG31_HERO_802pt1_G" ? 2 : 1;
20
+ const spawned = (0, deathrattle_spawns_1.simplifiedSpawnEntities)("BG31_HERO_802pt1t", numberOfSummons, spawnInput);
20
21
  spawned.forEach((e) => {
21
- (0, stats_1.modifyStats)(e, statBuff, statBuff, input.board, input.hero, input.gameState);
22
+ (0, stats_1.modifyStats)(e, statBuff * 3, statBuff * 3, input.board, input.hero, input.gameState);
22
23
  });
23
24
  },
24
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/carrier.ts"],"names":[],"mappings":";;;AAGA,+EAAiF;AACjF,qDAAwD;AAI3C,QAAA,OAAO,GAAe;IAClC,OAAO,EAAE,wBAA4C;IACrD,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,UAAU,GAA8B;YAC7C,mBAAmB,EAAE,KAAK,CAAC,KAAK;YAChC,uBAAuB,EAAE,KAAK,CAAC,IAAI;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,4CAAuB,oBAA6B,CAAC,EAAE,UAAU,CAAC,CAAC;QACnF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,IAAA,mBAAW,EAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACJ,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Carrier: AvengeCard = {\r\n\tcardIds: [TempCardIds.Carrier, TempCardIds.Carrier_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\tboardWithDeadEntity: input.board,\r\n\t\t\tboardWithDeadEntityHero: input.hero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t\tdeadEntity: minion, // weird\r\n\t\t\totherBoard: input.otherBoard,\r\n\t\t\totherBoardHero: input.otherHero,\r\n\t\t};\r\n\t\tconst statBuff = minion.scriptDataNum1;\r\n\t\tconst spawned = simplifiedSpawnEntities(TempCardIds.Interceptor_BG, 1, spawnInput);\r\n\t\tspawned.forEach((e) => {\r\n\t\t\tmodifyStats(e, statBuff, statBuff, input.board, input.hero, input.gameState);\r\n\t\t});\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"carrier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/carrier.ts"],"names":[],"mappings":";;;AAIA,+EAAiF;AACjF,qDAAwD;AAG3C,QAAA,OAAO,GAAe;IAClC,OAAO,EAAE,2CAAwF;IACjG,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,UAAU,GAA8B;YAC7C,mBAAmB,EAAE,KAAK,CAAC,KAAK;YAChC,uBAAuB,EAAE,KAAK,CAAC,IAAI;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,cAAc,EAAE,KAAK,CAAC,SAAS;SAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,yBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAA,4CAAuB,uBAEtC,eAAe,EACf,UAAU,CACV,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,IAAA,mBAAW,EAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;IACJ,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { simplifiedSpawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Carrier: AvengeCard = {\r\n\tcardIds: [CardIds.Carrier_InterceptorToken_BG31_HERO_802pt1t, CardIds.Carrier_BG31_HERO_802pt1_G],\r\n\tbaseAvengeValue: (cardId: string) => 4,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst spawnInput: DeathrattleTriggeredInput = {\r\n\t\t\tboardWithDeadEntity: input.board,\r\n\t\t\tboardWithDeadEntityHero: input.hero,\r\n\t\t\tgameState: input.gameState,\r\n\t\t\tdeadEntity: minion, // weird\r\n\t\t\totherBoard: input.otherBoard,\r\n\t\t\totherBoardHero: input.otherHero,\r\n\t\t};\r\n\t\tconst statBuff = minion.scriptDataNum1;\r\n\t\tconst numberOfSummons = minion.cardId === CardIds.Carrier_BG31_HERO_802pt1_G ? 2 : 1;\r\n\t\tconst spawned = simplifiedSpawnEntities(\r\n\t\t\tCardIds.Carrier_InterceptorToken_BG31_HERO_802pt1t,\r\n\t\t\tnumberOfSummons,\r\n\t\t\tspawnInput,\r\n\t\t);\r\n\t\tspawned.forEach((e) => {\r\n\t\t\tmodifyStats(e, statBuff * 3, statBuff * 3, input.board, input.hero, input.gameState);\r\n\t\t});\r\n\t},\r\n};\r\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Colossus = void 0;
4
4
  const attack_1 = require("../../../simulation/attack");
5
5
  exports.Colossus = {
6
- cardIds: ["Colossus", "Colossus_G"],
6
+ cardIds: ["BG31_HERO_802pt", "BG31_HERO_802pt_G"],
7
7
  onAttack: (minion, input) => {
8
8
  if (minion !== input.attacker) {
9
9
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"colossus.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/colossus.ts"],"names":[],"mappings":";;;AACA,uDAA+E;AAKlE,QAAA,QAAQ,GAAiB;IACrC,OAAO,EAAE,0BAA8C;IACvD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QACjH,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAChC,MAAM,GAAG,GAAG,IAAA,2BAAkB,EAC7B,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,iBAAiB,IAAI,GAAG,CAAC;SACzB;QACD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion, getNeighbours } from '../../../simulation/attack';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Colossus: OnAttackCard = {\r\n\tcardIds: [TempCardIds.Colossus, TempCardIds.Colossus_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tlet dmgDoneByAttacker = 0;\r\n\t\tconst neighbours = getNeighbours(input.defendingBoard, input.defendingEntity);\r\n\t\tconst damage = minion.scriptDataNum1 || 1;\r\n\t\tfor (const target of neighbours) {\r\n\t\t\tconst dmg = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.defendingBoard,\r\n\t\t\t\tinput.defendingHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tdmgDoneByAttacker += dmg;\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"colossus.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/colossus.ts"],"names":[],"mappings":";;;AAEA,uDAA+E;AAIlE,QAAA,QAAQ,GAAiB;IACrC,OAAO,EAAE,wCAAoF;IAC7F,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAA4D,EAAE;QACjH,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAChC,MAAM,GAAG,GAAG,IAAA,2BAAkB,EAC7B,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,MAAM,EACN,MAAM,EACN,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,iBAAiB,IAAI,GAAG,CAAC;SACzB;QACD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { dealDamageToMinion, getNeighbours } from '../../../simulation/attack';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Colossus: OnAttackCard = {\r\n\tcardIds: [CardIds.WarpGate_ColossusToken_BG31_HERO_802pt, CardIds.Colossus_BG31_HERO_802pt_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\r\n\t\tlet dmgDoneByAttacker = 0;\r\n\t\tconst neighbours = getNeighbours(input.defendingBoard, input.defendingEntity);\r\n\t\tconst damage = minion.scriptDataNum1 || 1;\r\n\t\tfor (const target of neighbours) {\r\n\t\t\tconst dmg = dealDamageToMinion(\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.defendingBoard,\r\n\t\t\t\tinput.defendingHero,\r\n\t\t\t\tminion,\r\n\t\t\t\tdamage,\r\n\t\t\t\tinput.attackingBoard,\r\n\t\t\t\tinput.attackingHero,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\tdmgDoneByAttacker += dmg;\r\n\t\t}\r\n\t\treturn { dmgDoneByAttacker, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GentleStag = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.GentleStag = {
6
- cardIds: ["GentleStag", "GentleStag_G"],
6
+ cardIds: ["BG31_369", "BG31_369_G"],
7
7
  onOtherSpawned: (minion, input) => {
8
- const mult = minion.cardId === "GentleStag_G" ? 2 : 1;
8
+ const mult = minion.cardId === "BG31_369_G" ? 2 : 1;
9
9
  const target = input.board[input.board.length - 1];
10
10
  (0, stats_1.modifyStats)(target, mult * 1, mult * 1, input.board, input.hero, input.gameState);
11
11
  input.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);
@@ -1 +1 @@
1
- {"version":3,"file":"gentle-stag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/gentle-stag.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,UAAU,GAAuB;IAC7C,OAAO,EAAE,8BAAkD;IAC3D,cAAc,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,mBAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzG,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const GentleStag: OnOtherSpawnedCard = {\r\n\tcardIds: [TempCardIds.GentleStag, TempCardIds.GentleStag_G],\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tconst mult = minion.cardId === TempCardIds.GentleStag_G ? 2 : 1;\r\n\t\tconst target = input.board[input.board.length - 1];\r\n\t\tmodifyStats(target, mult * 1, mult * 1, input.board, input.hero, input.gameState);\r\n\t\tinput.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"gentle-stag.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/gentle-stag.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,UAAU,GAAuB;IAC7C,OAAO,EAAE,0BAA4D;IACrE,cAAc,EAAE,CAAC,MAAmB,EAAE,KAAwB,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAClF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACzG,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnOtherSpawnInput } from '../../../simulation/add-minion-to-board';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnOtherSpawnedCard } from '../../card.interface';\r\n\r\nexport const GentleStag: OnOtherSpawnedCard = {\r\n\tcardIds: [CardIds.GentleStag_BG31_369, CardIds.GentleStag_BG31_369_G],\r\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.GentleStag_BG31_369_G ? 2 : 1;\r\n\t\tconst target = input.board[input.board.length - 1];\r\n\t\tmodifyStats(target, mult * 1, mult * 1, input.board, input.hero, input.gameState);\r\n\t\tinput.gameState.spectator.registerPowerTarget(minion, target, input.board, input.hero, input.otherHero);\r\n\t},\r\n};\r\n"]}
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Hydralisk = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.Hydralisk = {
6
- cardIds: ["Hydralisk", "Hydralisk_G"],
6
+ cardIds: ["BG31_HERO_811t4", "BG31_HERO_811t4_G"],
7
7
  onAttack: (minion, input) => {
8
8
  if (minion !== input.attacker) {
9
9
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
10
10
  }
11
+ const mult = minion.cardId === "BG31_HERO_811t4_G" ? 2 : 1;
11
12
  const buff = input.attackingHero.tavernTier;
12
- (0, stats_1.modifyStats)(minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);
13
+ (0, stats_1.modifyStats)(minion, buff * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);
13
14
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
14
15
  },
15
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hydralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/hydralisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,SAAS,GAAiB;IACtC,OAAO,EAAE,4BAAgD;IACzD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;QAC5C,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Hydralisk: OnAttackCard = {\r\n\tcardIds: [TempCardIds.Hydralisk, TempCardIds.Hydralisk_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\t\tconst buff = input.attackingHero.tavernTier;\r\n\t\tmodifyStats(minion, buff, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"hydralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/hydralisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,SAAS,GAAiB;IACtC,OAAO,EAAE,wCAAmG;IAC5G,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ,EAAE;YAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACtD;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC;QAC5C,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAChG,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const Hydralisk: OnAttackCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_HydraliskToken_BG31_HERO_811t4, CardIds.Hydralisk_BG31_HERO_811t4_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tif (minion !== input.attacker) {\r\n\t\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t\t}\r\n\t\tconst mult = minion.cardId === CardIds.Hydralisk_BG31_HERO_811t4_G ? 2 : 1;\r\n\t\tconst buff = input.attackingHero.tavernTier;\r\n\t\tmodifyStats(minion, buff * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -4,9 +4,9 @@ exports.Immortal = void 0;
4
4
  const attack_1 = require("../../../simulation/attack");
5
5
  const stats_1 = require("../../../simulation/stats");
6
6
  exports.Immortal = {
7
- cardIds: ["Immortal", "Immortal_G"],
7
+ cardIds: ["BG31_HERO_802pt4", "BG31_HERO_802pt4_G"],
8
8
  startOfCombat: (minion, input) => {
9
- const multiplier = minion.cardId === "Immortal_G" ? 2 : 1;
9
+ const multiplier = minion.cardId === "BG31_HERO_802pt4_G" ? 2 : 1;
10
10
  const neighbours = (0, attack_1.getNeighbours)(input.playerBoard, minion);
11
11
  const neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);
12
12
  const neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"immortal.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/immortal.ts"],"names":[],"mappings":";;;AACA,uDAA2D;AAE3D,qDAAwD;AAI3C,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,0BAA8C;IACvD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,gBAAgB,EAC7B,UAAU,GAAG,gBAAgB,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Immortal: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Immortal, TempCardIds.Immortal_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === TempCardIds.Immortal_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);\r\n\t\tconst neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * neighboursAttack,\r\n\t\t\tmultiplier * neighboursHealth,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"immortal.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/immortal.ts"],"names":[],"mappings":";;;AAEA,uDAA2D;AAE3D,qDAAwD;AAG3C,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,0CAAsF;IAC/F,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,yBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9F,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,gBAAgB,EAC7B,UAAU,GAAG,gBAAgB,EAC7B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { getNeighbours } from '../../../simulation/attack';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Immortal: StartOfCombatCard = {\r\n\tcardIds: [CardIds.WarpGate_ImmortalToken_BG31_HERO_802pt4, CardIds.Immortal_BG31_HERO_802pt4_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst multiplier = minion.cardId === CardIds.Immortal_BG31_HERO_802pt4_G ? 2 : 1;\r\n\t\tconst neighbours = getNeighbours(input.playerBoard, minion);\r\n\t\tconst neighboursAttack = neighbours.map((entity) => entity.attack).reduce((a, b) => a + b, 0);\r\n\t\tconst neighboursHealth = neighbours.map((entity) => entity.health).reduce((a, b) => a + b, 0);\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * neighboursAttack,\r\n\t\t\tmultiplier * neighboursHealth,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { EndOfTurnCard } from '../../card.interface';
2
+ export declare const LowFlier: EndOfTurnCard;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LowFlier = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.LowFlier = {
6
+ cardIds: ["BG26_969", "BG26_969_G"],
7
+ endOfTurn: (minion, input) => {
8
+ const mult = minion.cardId === "BG26_969_G" ? 2 : 1;
9
+ const targets = input.board.filter((e) => e.attack < minion.attack);
10
+ for (const target of targets) {
11
+ (0, stats_1.modifyStats)(target, 1 * mult, 0, input.board, input.hero, input.gameState);
12
+ }
13
+ },
14
+ };
15
+ //# sourceMappingURL=low-flier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"low-flier.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/low-flier.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAG3C,QAAA,QAAQ,GAAkB;IACtC,OAAO,EAAE,0BAAwD;IACjE,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,iBAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;SAC3E;IACF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const LowFlier: EndOfTurnCard = {\r\n\tcardIds: [CardIds.LowFlier_BG26_969, CardIds.LowFlier_BG26_969_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.LowFlier_BG26_969_G ? 2 : 1;\r\n\t\tconst targets = input.board.filter((e) => e.attack < minion.attack);\r\n\t\tfor (const target of targets) {\r\n\t\t\tmodifyStats(target, 1 * mult, 0, input.board, input.hero, input.gameState);\r\n\t\t}\r\n\t},\r\n};\r\n"]}
@@ -3,10 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Lurker = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.Lurker = {
6
- cardIds: ["Lurker", "Lurker_G"],
6
+ cardIds: ["BG31_HERO_811t7", "BG31_HERO_811t7_G"],
7
7
  baseAvengeValue: (cardId) => 2,
8
8
  avenge: (minion, input) => {
9
- (0, stats_1.modifyStats)(minion, 1, 1, input.board, input.hero, input.gameState);
9
+ const mult = minion.cardId === "BG31_HERO_811t7_G" ? 2 : 1;
10
+ (0, stats_1.modifyStats)(minion, 1 * mult, 1 * mult, input.board, input.hero, input.gameState);
10
11
  },
11
12
  };
12
13
  //# sourceMappingURL=lurker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lurker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/lurker.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,MAAM,GAAe;IACjC,OAAO,EAAE,sBAA0C;IACnD,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Lurker: AvengeCard = {\r\n\tcardIds: [TempCardIds.Lurker, TempCardIds.Lurker_G],\r\n\tbaseAvengeValue: (cardId: string) => 2,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tmodifyStats(minion, 1, 1, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"lurker.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/lurker.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,MAAM,GAAe;IACjC,OAAO,EAAE,wCAA6F;IACtG,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACnF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Lurker: AvengeCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_LurkerToken_BG31_HERO_811t7, CardIds.Lurker_BG31_HERO_811t7_G],\r\n\tbaseAvengeValue: (cardId: string) => 2,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst mult = minion.cardId === CardIds.Lurker_BG31_HERO_811t7_G ? 2 : 1;\r\n\t\tmodifyStats(minion, 1 * mult, 1 * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Mothership = void 0;
4
4
  const cards_in_hand_1 = require("../../../simulation/cards-in-hand");
5
5
  exports.Mothership = {
6
- cardIds: ["Mothership", "Mothership_G"],
6
+ cardIds: ["BG31_HERO_802pt7", "BG31_HERO_802pt7_G"],
7
7
  baseAvengeValue: (cardId) => 5,
8
8
  avenge: (minion, input) => {
9
- const cards = minion.cardId === "Mothership_G" ? 2 : 1;
9
+ const cards = minion.cardId === "BG31_HERO_802pt7_G" ? 2 : 1;
10
10
  const cardsAdded = Array(cards).map(() => input.gameState.cardsData.getRandomProtossMinion(input.hero.tavernTier));
11
11
  (0, cards_in_hand_1.addCardsInHand)(input.hero, input.board, cardsAdded, input.gameState);
12
12
  },
@@ -1 +1 @@
1
- {"version":3,"file":"mothership.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mothership.ts"],"names":[],"mappings":";;;AAEA,qEAAmE;AAItD,QAAA,UAAU,GAAe;IACrC,OAAO,EAAE,8BAAkD;IAC3D,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,mBAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CACxC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvE,CAAC;QACF,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Mothership: AvengeCard = {\r\n\tcardIds: [TempCardIds.Mothership, TempCardIds.Mothership_G],\r\n\tbaseAvengeValue: (cardId: string) => 5,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst cards = minion.cardId === TempCardIds.Mothership_G ? 2 : 1;\r\n\t\tconst cardsAdded = Array(cards).map(() =>\r\n\t\t\tinput.gameState.cardsData.getRandomProtossMinion(input.hero.tavernTier),\r\n\t\t);\r\n\t\taddCardsInHand(input.hero, input.board, cardsAdded, input.gameState);\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"mothership.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mothership.ts"],"names":[],"mappings":";;;AAGA,qEAAmE;AAGtD,QAAA,UAAU,GAAe;IACrC,OAAO,EAAE,0CAA0F;IACnG,eAAe,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,CAAC,MAAmB,EAAE,KAAkB,EAAQ,EAAE;QACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,yBAA0C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CACxC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CACvE,CAAC;QACF,IAAA,8BAAc,EAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { AvengeInput } from '../../../simulation/avenge';\r\nimport { addCardsInHand } from '../../../simulation/cards-in-hand';\r\nimport { AvengeCard } from '../../card.interface';\r\n\r\nexport const Mothership: AvengeCard = {\r\n\tcardIds: [CardIds.WarpGate_MothershipToken_BG31_HERO_802pt7, CardIds.Mothership_BG31_HERO_802pt7_G],\r\n\tbaseAvengeValue: (cardId: string) => 5,\r\n\tavenge: (minion: BoardEntity, input: AvengeInput): void => {\r\n\t\tconst cards = minion.cardId === CardIds.Mothership_BG31_HERO_802pt7_G ? 2 : 1;\r\n\t\tconst cardsAdded = Array(cards).map(() =>\r\n\t\t\tinput.gameState.cardsData.getRandomProtossMinion(input.hero.tavernTier),\r\n\t\t);\r\n\t\taddCardsInHand(input.hero, input.board, cardsAdded, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Mutalisk = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.Mutalisk = {
6
- cardIds: ["Mutalisk", "Mutalisk_G"],
6
+ cardIds: ["BG31_HERO_811t6", "BG31_HERO_811t6_G"],
7
7
  onMinionKilled: (minion, input) => {
8
- (0, stats_1.modifyStats)(minion, 4, 4, input.attackingBoard, input.attackingHero, input.gameState);
8
+ const mult = minion.cardId === "BG31_HERO_811t6_G" ? 2 : 1;
9
+ (0, stats_1.modifyStats)(minion, 4 * mult, 4 * mult, input.attackingBoard, input.attackingHero, input.gameState);
9
10
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
10
11
  },
11
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mutalisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mutalisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,QAAQ,GAAuB;IAC3C,OAAO,EAAE,0BAA8C;IACvD,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACtF,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const Mutalisk: OnMinionKilledCard = {\r\n\tcardIds: [TempCardIds.Mutalisk, TempCardIds.Mutalisk_G],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tmodifyStats(minion, 4, 4, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"mutalisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/mutalisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,QAAQ,GAAuB;IAC3C,OAAO,EAAE,wCAAiG;IAC1G,cAAc,EAAE,CACf,MAAmB,EACnB,KAA0B,EACiC,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACpG,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnMinionKilledInput } from '../../../simulation/attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnMinionKilledCard } from '../../card.interface';\r\n\r\nexport const Mutalisk: OnMinionKilledCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_MutaliskToken_BG31_HERO_811t6, CardIds.Mutalisk_BG31_HERO_811t6_G],\r\n\tonMinionKilled: (\r\n\t\tminion: BoardEntity,\r\n\t\tinput: OnMinionKilledInput,\r\n\t): { dmgDoneByAttacker: number; dmgDoneByDefender: number } => {\r\n\t\tconst mult = minion.cardId === CardIds.Mutalisk_BG31_HERO_811t6_G ? 2 : 1;\r\n\t\tmodifyStats(minion, 4 * mult, 4 * mult, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { EndOfTurnCard } from '../../card.interface';
2
+ export declare const Roach: EndOfTurnCard;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Roach = void 0;
4
+ const stats_1 = require("../../../simulation/stats");
5
+ exports.Roach = {
6
+ cardIds: ["BG31_HERO_811t3", "BG31_HERO_811t3_G"],
7
+ endOfTurn: (minion, input) => {
8
+ const mult = minion.cardId === "BG31_HERO_811t3_G" ? 2 : 1;
9
+ (0, stats_1.modifyStats)(minion, 0, input.hero.tavernTier * mult, input.board, input.hero, input.gameState);
10
+ },
11
+ };
12
+ //# sourceMappingURL=roach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roach.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/roach.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAG3C,QAAA,KAAK,GAAkB;IACnC,OAAO,EAAE,wCAA2F;IACpG,SAAS,EAAE,CAAC,MAAmB,EAAE,KAAqB,EAAE,EAAE;QACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,wBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAChG,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { EndOfTurnCard, EndOfTurnInput } from '../../card.interface';\r\n\r\nexport const Roach: EndOfTurnCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_RoachToken_BG31_HERO_811t3, CardIds.Roach_BG31_HERO_811t3_G],\r\n\tendOfTurn: (minion: BoardEntity, input: EndOfTurnInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.Roach_BG31_HERO_811t3_G ? 2 : 1;\r\n\t\tmodifyStats(minion, 0, input.hero.tavernTier * mult, input.board, input.hero, input.gameState);\r\n\t},\r\n};\r\n"]}
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StitchedSalvager = void 0;
4
4
  const utils_1 = require("../../../utils");
5
5
  exports.StitchedSalvager = {
6
- cardIds: ["StitchedSalvager", "StitchedSalvager_G"],
6
+ cardIds: ["BG31_999", "BG31_999_G"],
7
7
  startOfCombat: (minion, input) => {
8
8
  const minionIndex = input.playerBoard.indexOf(minion);
9
9
  const targets = [];
10
10
  if (minionIndex > 0) {
11
11
  targets.push(input.playerBoard[minionIndex - 1]);
12
12
  }
13
- if (minion.cardId === "StitchedSalvager_G" && minionIndex < input.playerBoard.length - 1) {
13
+ if (minion.cardId === "BG31_999_G" && minionIndex < input.playerBoard.length - 1) {
14
14
  targets.push(input.playerBoard[minionIndex + 1]);
15
15
  }
16
16
  if (!targets.length) {
@@ -1 +1 @@
1
- {"version":3,"file":"stitched-salvager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stitched-salvager.ts"],"names":[],"mappings":";;;AAIA,0CAA4C;AAG/B,QAAA,gBAAgB,GAA6C;IACzE,OAAO,EAAE,0CAA8D;IACvE,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,MAAM,CAAC,MAAM,yBAAmC,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACnG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,OAAO;SACP;QAED,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAA2B,CAAC;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;;QACnG,OAAO,CAAC,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,CAAkB,CAAC;IAC/C,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { DeathrattleSpawnCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const StitchedSalvager: StartOfCombatCard & DeathrattleSpawnCard = {\r\n\tcardIds: [TempCardIds.StitchedSalvager, TempCardIds.StitchedSalvager_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionIndex = input.playerBoard.indexOf(minion);\r\n\t\tconst targets = [];\r\n\t\tif (minionIndex > 0) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex - 1]);\r\n\t\t}\r\n\t\tif (minion.cardId === TempCardIds.StitchedSalvager_G && minionIndex < input.playerBoard.length - 1) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex + 1]);\r\n\t\t}\r\n\t\tif (!targets.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.memory = targets.map((t) => copyEntity(t)) as readonly BoardEntity[];\r\n\t\tfor (const target of targets) {\r\n\t\t\ttarget.definitelyDead = true;\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\treturn (minion.memory ?? []) as BoardEntity[];\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"stitched-salvager.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/stitched-salvager.ts"],"names":[],"mappings":";;;AAIA,0CAA4C;AAG/B,QAAA,gBAAgB,GAA6C;IACzE,OAAO,EAAE,0BAAwE;IACjF,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAI,WAAW,GAAG,CAAC,EAAE;YACpB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,MAAM,CAAC,MAAM,iBAAwC,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACxG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACpB,OAAO;SACP;QAED,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,kBAAU,EAAC,CAAC,CAAC,CAA2B,CAAC;QAC5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC7B,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,KAAK,CAAC,YAAY,EAClB,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;SACF;QACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC;IACrE,CAAC;IACD,gBAAgB,EAAE,CAAC,MAAmB,EAAE,KAAgC,EAA0B,EAAE;;QACnG,OAAO,CAAC,MAAA,MAAM,CAAC,MAAM,mCAAI,EAAE,CAAkB,CAAC;IAC/C,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { DeathrattleTriggeredInput } from '../../../simulation/deathrattle-on-trigger';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { copyEntity } from '../../../utils';\r\nimport { DeathrattleSpawnCard, StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const StitchedSalvager: StartOfCombatCard & DeathrattleSpawnCard = {\r\n\tcardIds: [CardIds.StitchedSalvager_BG31_999, CardIds.StitchedSalvager_BG31_999_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tconst minionIndex = input.playerBoard.indexOf(minion);\r\n\t\tconst targets = [];\r\n\t\tif (minionIndex > 0) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex - 1]);\r\n\t\t}\r\n\t\tif (minion.cardId === CardIds.StitchedSalvager_BG31_999_G && minionIndex < input.playerBoard.length - 1) {\r\n\t\t\ttargets.push(input.playerBoard[minionIndex + 1]);\r\n\t\t}\r\n\t\tif (!targets.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tminion.memory = targets.map((t) => copyEntity(t)) as readonly BoardEntity[];\r\n\t\tfor (const target of targets) {\r\n\t\t\ttarget.definitelyDead = true;\r\n\t\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\ttarget,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn { hasTriggered: true, shouldRecomputeCurrentAttacker: true };\r\n\t},\r\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput): readonly BoardEntity[] => {\r\n\t\treturn (minion.memory ?? []) as BoardEntity[];\r\n\t},\r\n};\r\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Ultralisk = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.Ultralisk = {
6
- cardIds: ["Ultralisk", "Ultralisk_G"],
6
+ cardIds: ["BG31_HERO_811t10", "BG31_HERO_811t10_G"],
7
7
  startOfCombat: (minion, input) => {
8
- const multiplier = minion.cardId === "Ultralisk_G" ? 3 : 2;
8
+ const multiplier = minion.cardId === "BG31_HERO_811t10_G" ? 3 : 2;
9
9
  (0, stats_1.modifyStats)(minion, multiplier * minion.attack, multiplier * minion.health, input.playerBoard, input.playerEntity, input.gameState);
10
10
  input.gameState.spectator.registerPowerTarget(minion, minion, input.playerBoard, input.playerEntity, input.opponentEntity);
11
11
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"ultralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ultralisk.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,4BAAgD;IACzD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAW,EAAE;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,kBAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Ultralisk: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Ultralisk, TempCardIds.Ultralisk_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput): boolean => {\r\n\t\tconst multiplier = minion.cardId === TempCardIds.Ultralisk_G ? 3 : 2;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * minion.attack,\r\n\t\t\tmultiplier * minion.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"ultralisk.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/ultralisk.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,SAAS,GAAsB;IAC3C,OAAO,EAAE,0CAAqG;IAC9G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAW,EAAE;QAChE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,yBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClF,IAAA,mBAAW,EACV,MAAM,EACN,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,UAAU,GAAG,MAAM,CAAC,MAAM,EAC1B,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,SAAS,CACf,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAC5C,MAAM,EACN,MAAM,EACN,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,cAAc,CACpB,CAAC;QACF,OAAO,IAAI,CAAC;IACb,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Ultralisk: StartOfCombatCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_UltraliskToken_BG31_HERO_811t10, CardIds.Ultralisk_BG31_HERO_811t10_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput): boolean => {\r\n\t\tconst multiplier = minion.cardId === CardIds.Ultralisk_BG31_HERO_811t10_G ? 3 : 2;\r\n\t\tmodifyStats(\r\n\t\t\tminion,\r\n\t\t\tmultiplier * minion.attack,\r\n\t\t\tmultiplier * minion.health,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.gameState,\r\n\t\t);\r\n\t\tinput.gameState.spectator.registerPowerTarget(\r\n\t\t\tminion,\r\n\t\t\tminion,\r\n\t\t\tinput.playerBoard,\r\n\t\t\tinput.playerEntity,\r\n\t\t\tinput.opponentEntity,\r\n\t\t);\r\n\t\treturn true;\r\n\t},\r\n};\r\n"]}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VoidRay = void 0;
4
4
  const stats_1 = require("../../../simulation/stats");
5
5
  exports.VoidRay = {
6
- cardIds: ["VoidRay", "VoidRay_G"],
6
+ cardIds: ["BG31_HERO_802pt5", "BG31_HERO_802pt5_G"],
7
7
  onAttack: (minion, input) => {
8
- const mult = minion.cardId === "VoidRay_G" ? 2 : 1;
8
+ const mult = minion.cardId === "BG31_HERO_802pt5_G" ? 2 : 1;
9
9
  (0, stats_1.modifyStats)(input.attacker, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);
10
10
  (0, stats_1.modifyStats)(minion, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);
11
11
  return { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };
@@ -1 +1 @@
1
- {"version":3,"file":"void-ray.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/void-ray.ts"],"names":[],"mappings":";;;AAEA,qDAAwD;AAI3C,QAAA,OAAO,GAAiB;IACpC,OAAO,EAAE,wBAA4C;IACrD,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,gBAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,IAAA,mBAAW,EAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrG,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7F,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const VoidRay: OnAttackCard = {\r\n\tcardIds: [TempCardIds.VoidRay, TempCardIds.VoidRay_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === TempCardIds.VoidRay_G ? 2 : 1;\r\n\t\tmodifyStats(input.attacker, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\tmodifyStats(minion, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"void-ray.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/void-ray.ts"],"names":[],"mappings":";;;AAGA,qDAAwD;AAG3C,QAAA,OAAO,GAAiB;IACpC,OAAO,EAAE,0CAAoF;IAC7F,QAAQ,EAAE,CAAC,MAAmB,EAAE,KAAoB,EAAE,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,yBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAA,mBAAW,EAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACrG,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7F,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { OnAttackInput } from '../../../simulation/on-attack';\r\nimport { modifyStats } from '../../../simulation/stats';\r\nimport { OnAttackCard } from '../../card.interface';\r\n\r\nexport const VoidRay: OnAttackCard = {\r\n\tcardIds: [CardIds.WarpGate_VoidRayToken_BG31_HERO_802pt5, CardIds.VoidRay_BG31_HERO_802pt5_G],\r\n\tonAttack: (minion: BoardEntity, input: OnAttackInput) => {\r\n\t\tconst mult = minion.cardId === CardIds.VoidRay_BG31_HERO_802pt5_G ? 2 : 1;\r\n\t\tmodifyStats(input.attacker, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\tmodifyStats(minion, 5 * mult, 0, input.attackingBoard, input.attackingHero, input.gameState);\r\n\t\treturn { dmgDoneByAttacker: 0, dmgDoneByDefender: 0 };\r\n\t},\r\n};\r\n"]}
@@ -6,7 +6,7 @@ const deathrattle_spawns_1 = require("../../../simulation/deathrattle-spawns");
6
6
  const spawns_1 = require("../../../simulation/spawns");
7
7
  const utils_1 = require("../../../utils");
8
8
  exports.Zergling = {
9
- cardIds: ["Zergling", "Zergling_G"],
9
+ cardIds: ["BG31_HERO_811t2", "BG31_HERO_811t2_G"],
10
10
  startOfCombat: (minion, input) => {
11
11
  let hasTriggered = false;
12
12
  if (input.playerBoard.length < 7) {
@@ -1 +1 @@
1
- {"version":3,"file":"zergling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/zergling.ts"],"names":[],"mappings":";;;AACA,iFAA8E;AAC9E,+EAAuE;AACvE,uDAAiE;AAGjE,0CAA4C;AAG/B,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,0BAA8C;IACvD,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;YAChC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,YAAY,CAAC,QAAQ,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxF,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,EAClB,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC;IACrF,CAAC;CACD,CAAC","sourcesContent":["import { BoardEntity } from '../../../board-entity';\r\nimport { removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { TempCardIds } from '../../../temp-card-ids';\r\nimport { copyEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Zergling: StartOfCombatCard = {\r\n\tcardIds: [TempCardIds.Zergling, TempCardIds.Zergling_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tlet hasTriggered = false;\r\n\t\tif (input.playerBoard.length < 7) {\r\n\t\t\tconst copy = copyEntity(minion);\r\n\t\t\tremoveAurasFromSelf(copy, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.playerEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.playerBoard.length - input.playerBoard.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\thasTriggered = true;\r\n\t\t}\r\n\t\treturn { hasTriggered: hasTriggered, shouldRecomputeCurrentAttacker: hasTriggered };\r\n\t},\r\n};\r\n"]}
1
+ {"version":3,"file":"zergling.js","sourceRoot":"","sources":["../../../../src/cards/impl/minion/zergling.ts"],"names":[],"mappings":";;;AAEA,iFAA8E;AAC9E,+EAAuE;AACvE,uDAAiE;AAEjE,0CAA4C;AAG/B,QAAA,QAAQ,GAAsB;IAC1C,OAAO,EAAE,wCAAiG;IAC1G,aAAa,EAAE,CAAC,MAAmB,EAAE,KAAe,EAAE,EAAE;QACvD,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,MAAM,CAAC,CAAC;YAChC,IAAA,yCAAmB,EAAC,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAClF,MAAM,UAAU,GAAG,IAAA,kCAAa,EAC/B,IAAI,CAAC,MAAM,EACX,CAAC,EACD,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EACxB,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,SAAS,CAAC,SAAS,EACzB,KAAK,CAAC,YAAY,CAAC,QAAQ,EAC3B,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxF,MAAM,MAAM,GAAG,IAAA,4BAAmB,EACjC,UAAU,EACV,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,YAAY,EAClB,cAAc,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,CACf,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,8BAA8B,EAAE,YAAY,EAAE,CAAC;IACrF,CAAC;CACD,CAAC","sourcesContent":["import { CardIds } from '@firestone-hs/reference-data';\r\nimport { BoardEntity } from '../../../board-entity';\r\nimport { removeAurasFromSelf } from '../../../simulation/add-minion-to-board';\r\nimport { spawnEntities } from '../../../simulation/deathrattle-spawns';\r\nimport { performEntitySpawns } from '../../../simulation/spawns';\r\nimport { SoCInput } from '../../../simulation/start-of-combat/start-of-combat-input';\r\nimport { copyEntity } from '../../../utils';\r\nimport { StartOfCombatCard } from '../../card.interface';\r\n\r\nexport const Zergling: StartOfCombatCard = {\r\n\tcardIds: [CardIds.KerriganQueenOfBlades_ZerglingToken_BG31_HERO_811t2, CardIds.Zergling_BG31_HERO_811t2_G],\r\n\tstartOfCombat: (minion: BoardEntity, input: SoCInput) => {\r\n\t\tlet hasTriggered = false;\r\n\t\tif (input.playerBoard.length < 7) {\r\n\t\t\tconst copy = copyEntity(minion);\r\n\t\t\tremoveAurasFromSelf(copy, input.playerBoard, input.playerEntity, input.gameState);\r\n\t\t\tconst newMinions = spawnEntities(\r\n\t\t\t\tcopy.cardId,\r\n\t\t\t\t1,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState.allCards,\r\n\t\t\t\tinput.gameState.cardsData,\r\n\t\t\t\tinput.gameState.sharedState,\r\n\t\t\t\tinput.gameState.spectator,\r\n\t\t\t\tinput.playerEntity.friendly,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tfalse,\r\n\t\t\t\tcopy,\r\n\t\t\t);\r\n\t\t\tconst indexFromRight = input.playerBoard.length - input.playerBoard.indexOf(minion) - 1;\r\n\t\t\tconst spawns = performEntitySpawns(\r\n\t\t\t\tnewMinions,\r\n\t\t\t\tinput.playerBoard,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tinput.playerEntity,\r\n\t\t\t\tindexFromRight,\r\n\t\t\t\tinput.opponentBoard,\r\n\t\t\t\tinput.opponentEntity,\r\n\t\t\t\tinput.gameState,\r\n\t\t\t);\r\n\t\t\thasTriggered = true;\r\n\t\t}\r\n\t\treturn { hasTriggered: hasTriggered, shouldRecomputeCurrentAttacker: hasTriggered };\r\n\t},\r\n};\r\n"]}
@@ -1,37 +1,2 @@
1
1
  export declare const enum TempCardIds {
2
- SharingIsCaring = "SharingIsCaring",
3
- Zergling = "Zergling",
4
- Zergling_G = "Zergling_G",
5
- Hydralisk = "Hydralisk",
6
- Hydralisk_G = "Hydralisk_G",
7
- Baneling = "Baneling",
8
- Baneling_G = "Baneling_G",
9
- Mutalisk = "Mutalisk",
10
- Mutalisk_G = "Mutalisk_G",
11
- Lurker = "Lurker",
12
- Lurker_G = "Lurker_G",
13
- Viper = "Viper",
14
- Viper_G = "Viper_G",
15
- Ultralisk = "Ultralisk",
16
- Ultralisk_G = "Ultralisk_G",
17
- Colossus = "Colossus",
18
- Colossus_G = "Colossus_G",
19
- Interceptor_BG = "Interceptor_BG",
20
- Interceptor_BG_G = "Interceptor_BG_G",
21
- Carrier = "Carrier",
22
- Carrier_G = "Carrier_G",
23
- Immortal = "Immortal",
24
- Immortal_G = "Immortal_G",
25
- VoidRay = "VoidRay",
26
- VoidRay_G = "VoidRay_G",
27
- Mothership = "Mothership",
28
- Mothership_G = "Mothership_G",
29
- CaptainBonerender = "CaptainBonerender",
30
- CaptainBonerender_G = "CaptainBonerender_G",
31
- GentleStag = "GentleStag",
32
- GentleStag_G = "GentleStag_G",
33
- BellowingTyrant = "BellowingTyrant",
34
- BellowingTyrant_G = "BellowingTyrant_G",
35
- StitchedSalvager = "StitchedSalvager",
36
- StitchedSalvager_G = "StitchedSalvager_G"
37
2
  }
@@ -1 +1 @@
1
- {"version":3,"file":"temp-card-ids.js","sourceRoot":"","sources":["../src/temp-card-ids.ts"],"names":[],"mappings":"","sourcesContent":["export declare const enum TempCardIds {\r\n\tSharingIsCaring = 'SharingIsCaring',\r\n\tZergling = 'Zergling',\r\n\tZergling_G = 'Zergling_G',\r\n\tHydralisk = 'Hydralisk',\r\n\tHydralisk_G = 'Hydralisk_G',\r\n\tBaneling = 'Baneling',\r\n\tBaneling_G = 'Baneling_G',\r\n\tMutalisk = 'Mutalisk',\r\n\tMutalisk_G = 'Mutalisk_G',\r\n\tLurker = 'Lurker',\r\n\tLurker_G = 'Lurker_G',\r\n\tViper = 'Viper',\r\n\tViper_G = 'Viper_G',\r\n\tUltralisk = 'Ultralisk',\r\n\tUltralisk_G = 'Ultralisk_G',\r\n\tColossus = 'Colossus',\r\n\tColossus_G = 'Colossus_G',\r\n\tInterceptor_BG = 'Interceptor_BG',\r\n\tInterceptor_BG_G = 'Interceptor_BG_G',\r\n\tCarrier = 'Carrier',\r\n\tCarrier_G = 'Carrier_G',\r\n\tImmortal = 'Immortal',\r\n\tImmortal_G = 'Immortal_G',\r\n\tVoidRay = 'VoidRay',\r\n\tVoidRay_G = 'VoidRay_G',\r\n\tMothership = 'Mothership',\r\n\tMothership_G = 'Mothership_G',\r\n\tCaptainBonerender = 'CaptainBonerender',\r\n\tCaptainBonerender_G = 'CaptainBonerender_G',\r\n\tGentleStag = 'GentleStag',\r\n\tGentleStag_G = 'GentleStag_G',\r\n\tBellowingTyrant = 'BellowingTyrant',\r\n\tBellowingTyrant_G = 'BellowingTyrant_G',\r\n\tStitchedSalvager = 'StitchedSalvager',\r\n\tStitchedSalvager_G = 'StitchedSalvager_G',\r\n}\r\n"]}
1
+ {"version":3,"file":"temp-card-ids.js","sourceRoot":"","sources":["../src/temp-card-ids.ts"],"names":[],"mappings":"","sourcesContent":["export declare const enum TempCardIds {}\r\n"]}
package/dist/utils.js CHANGED
@@ -13,15 +13,15 @@ const CLEAVE_IDS = [
13
13
  "TB_BaconUps_153",
14
14
  "BG26_817",
15
15
  "BG26_817_G",
16
- "Ultralisk",
17
- "Ultralisk_G",
16
+ "BG31_HERO_811t10",
17
+ "BG31_HERO_811t10_G",
18
18
  ];
19
19
  const ATTACK_IMMEDIATELY_IDS = [
20
20
  "BGS_061t",
21
21
  "TB_BaconUps_141t",
22
22
  "BG22_HERO_305t",
23
- "Interceptor_BG",
24
- "Interceptor_BG_G",
23
+ "BG31_HERO_802pt1t",
24
+ "BG31_HERO_802pt1t_G",
25
25
  ];
26
26
  const CANT_ATTACK_IDS = ["BGS_077", "TB_BaconUps_128"];
27
27
  const buildSingleBoardEntity = (cardId, controllerHero, friendlyBoard, allCards, friendly, entityId = 1, spawnReborn = false, cardsData, sharedState, entityToSpawn, originalEntity = null) => {
@@ -321,8 +321,8 @@ const addImpliedMechanics = (entity, cardsData) => {
321
321
  entity.immuneWhenAttackCharges = [
322
322
  "BG24_004",
323
323
  "BG24_004_G",
324
- "Viper",
325
- "Viper_G",
324
+ "BG31_HERO_811t8",
325
+ "BG31_HERO_811t8_G",
326
326
  ].includes(entity.cardId)
327
327
  ? 99999
328
328
  : null;
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { ALL_BG_RACES, AllCardsService, CardIds, GameTag, Race, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from './bgs-player-entity';\r\nimport { BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\nimport { hasDefaultCharges } from './cards/card.interface';\r\nimport { CardsData } from './cards/cards-data';\r\nimport { cardMappings } from './cards/impl/_card-mappings';\r\nimport { pickRandom, shuffleArray } from './services/utils';\r\nimport { FullGameState, GameState, PlayerState } from './simulation/internal-game-state';\r\nimport { SharedState } from './simulation/shared-state';\r\nimport { modifyStats } from './simulation/stats';\r\nimport { TempCardIds } from './temp-card-ids';\r\n\r\nconst CLEAVE_IDS = [\r\n\tCardIds.CaveHydra_BG_LOOT_078,\r\n\tCardIds.CaveHydra_TB_BaconUps_151,\r\n\tCardIds.FoeReaper4000_BG_GVG_113,\r\n\tCardIds.FoeReaper4000_TB_BaconUps_153,\r\n\tCardIds.BladeCollector_BG26_817,\r\n\tCardIds.BladeCollector_BG26_817_G,\r\n\tTempCardIds.Ultralisk,\r\n\tTempCardIds.Ultralisk_G,\r\n];\r\nconst ATTACK_IMMEDIATELY_IDS = [\r\n\tCardIds.Scallywag_SkyPirateToken_BGS_061t,\r\n\tCardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\tTempCardIds.Interceptor_BG,\r\n\tTempCardIds.Interceptor_BG_G,\r\n\t// The token doesn't attack immediately natively, only when spawned by the spell\r\n\t// See http://replays.firestoneapp.com/?reviewId=8924452a-540a-4324-8306-46900c3f9f35&turn=22&action=38\r\n\t// CardIds.ToxicTumbleweed_TumblingAssassinToken_BG28_641t,\r\n];\r\nconst CANT_ATTACK_IDS = [CardIds.ArcaneCannon_BGS_077, CardIds.ArcaneCannon_TB_BaconUps_128];\r\n\r\nexport const buildSingleBoardEntity = (\r\n\tcardId: string,\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tentityId = 1,\r\n\tspawnReborn = false,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tentityToSpawn: BoardEntity,\r\n\toriginalEntity: BoardEntity = null,\r\n): BoardEntity => {\r\n\tconst card = allCards.getCard(cardId);\r\n\tconst attackImmediately = ATTACK_IMMEDIATELY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst newEntity = !!entityToSpawn\r\n\t\t? ({\r\n\t\t\t\t...entityToSpawn,\r\n\t\t\t\tentityId: sharedState.currentEntityId++,\r\n\t\t\t\tdefinitelyDead: false,\r\n\t\t\t\tavengeCurrent: entityToSpawn.avengeDefault,\r\n\t\t\t\tattacking: false,\r\n\t\t\t\tdamageMultiplier: 1,\r\n\t\t\t\tfrenzyChargesLeft: 1,\r\n\t\t\t\tfriendly: friendly,\r\n\t\t\t\thasAttacked: 0,\r\n\t\t } as BoardEntity)\r\n\t\t: addImpliedMechanics(\r\n\t\t\t\t{\r\n\t\t\t\t\tentityId: entityId,\r\n\t\t\t\t\tattack: card.attack,\r\n\t\t\t\t\thasAttacked: 0,\r\n\t\t\t\t\tcardId: cardId,\r\n\t\t\t\t\tdivineShield: hasMechanic(card, 'DIVINE_SHIELD'),\r\n\t\t\t\t\thealth: card.health,\r\n\t\t\t\t\tmaxHealth: card.health,\r\n\t\t\t\t\ttaunt: hasMechanic(card, GameTag[GameTag.TAUNT]),\r\n\t\t\t\t\treborn: hasMechanic(card, 'REBORN'),\r\n\t\t\t\t\tpoisonous: hasMechanic(card, GameTag[GameTag.POISONOUS]),\r\n\t\t\t\t\tvenomous: hasMechanic(card, GameTag[GameTag.VENOMOUS]),\r\n\t\t\t\t\tstealth: hasMechanic(card, GameTag[GameTag.STEALTH]),\r\n\t\t\t\t\twindfury: hasMechanic(card, GameTag[GameTag.WINDFURY]),\r\n\t\t\t\t\tenchantments: [],\r\n\t\t\t\t\tpendingAttackBuffs: [],\r\n\t\t\t\t\tfriendly: friendly,\r\n\t\t\t\t\tattackImmediately: attackImmediately,\r\n\t\t\t\t\tavengeCurrent: cardsData.avengeValue(cardId),\r\n\t\t\t\t\tavengeDefault: cardsData.avengeValue(cardId),\r\n\t\t\t\t} as BoardEntity,\r\n\t\t\t\tcardsData,\r\n\t\t );\r\n\r\n\tif (spawnReborn && !entityToSpawn) {\r\n\t\tif (cardId === CardIds.BuildAnUndead_PutricidesCreationToken) {\r\n\t\t\tconst stitchedCardId = !!originalEntity.additionalCards?.length ? originalEntity.additionalCards[0] : null;\r\n\t\t\tif (stitchedCardId) {\r\n\t\t\t\tconst stitchedCard = allCards.getCard(stitchedCardId);\r\n\t\t\t\tnewEntity.attack = newEntity.attack + stitchedCard.attack;\r\n\t\t\t\tnewEntity.maxHealth = newEntity.maxHealth + stitchedCard.health;\r\n\t\t\t\tnewEntity.taunt = newEntity.taunt || hasMechanic(stitchedCard, GameTag[GameTag.TAUNT]);\r\n\t\t\t\tnewEntity.divineShield =\r\n\t\t\t\t\tnewEntity.divineShield || hasMechanic(stitchedCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\t\t\t\tnewEntity.hadDivineShield = newEntity.hadDivineShield || newEntity.divineShield;\r\n\t\t\t\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(stitchedCard, GameTag[GameTag.POISONOUS]);\r\n\t\t\t\tnewEntity.venomous = newEntity.venomous || hasMechanic(stitchedCard, GameTag[GameTag.VENOMOUS]);\r\n\t\t\t\tnewEntity.windfury = newEntity.windfury || hasMechanic(stitchedCard, GameTag[GameTag.WINDFURY]);\r\n\t\t\t\tnewEntity.avengeCurrent = newEntity.avengeCurrent || cardsData.avengeValue(stitchedCardId);\r\n\t\t\t\tnewEntity.avengeDefault = newEntity.avengeDefault || cardsData.avengeValue(stitchedCardId);\r\n\t\t\t}\r\n\t\t} else if (\r\n\t\t\tcardId === CardIds.ZilliaxAssembled_BG29_100_G &&\r\n\t\t\t!!originalEntity.additionalCards?.filter((c) => !!c).length\r\n\t\t) {\r\n\t\t\t// In this case, the base stats are still correct (the golden stats of Zilliax), but the keywords\r\n\t\t\t// can change\r\n\t\t\tfor (const moduleCardId of originalEntity.additionalCards) {\r\n\t\t\t\tconst moduleCard = allCards.getCard(moduleCardId);\r\n\t\t\t\tnewEntity.taunt = newEntity.taunt || hasMechanic(moduleCard, GameTag[GameTag.TAUNT]);\r\n\t\t\t\tnewEntity.divineShield =\r\n\t\t\t\t\tnewEntity.divineShield || hasMechanic(moduleCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\t\t\t\tnewEntity.hadDivineShield = newEntity.hadDivineShield || newEntity.divineShield;\r\n\t\t\t\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(moduleCard, GameTag[GameTag.POISONOUS]);\r\n\t\t\t\tnewEntity.venomous = newEntity.venomous || hasMechanic(moduleCard, GameTag[GameTag.VENOMOUS]);\r\n\t\t\t\tnewEntity.windfury = newEntity.windfury || hasMechanic(moduleCard, GameTag[GameTag.WINDFURY]);\r\n\t\t\t\tnewEntity.stealth = newEntity.stealth || hasMechanic(moduleCard, GameTag[GameTag.STEALTH]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tnewEntity.health = 1;\r\n\t\tnewEntity.reborn = false;\r\n\t\tnewEntity.scriptDataNum1 = getScriptDataNum1(cardId, originalEntity);\r\n\r\n\t\t// For ghoul-acabra + reborn\r\n\t\t// newEntity.attack += originalEntity.permanentAttack ?? 0;\r\n\t\t// newEntity.health += originalEntity.permanentHealth ?? 0;\r\n\t}\r\n\r\n\tnewEntity.hadDivineShield = newEntity.divineShield || newEntity.hadDivineShield;\r\n\treturn newEntity;\r\n};\r\n\r\nconst getScriptDataNum1 = (cardId: string, originalEntity: BoardEntity): number => {\r\n\tswitch (cardId) {\r\n\t\tcase CardIds.OctosariWrapGod_BG26_804:\r\n\t\t\treturn 8;\r\n\t\tcase CardIds.OctosariWrapGod_BG26_804_G:\r\n\t\t\treturn 16;\r\n\t\tdefault:\r\n\t\t\treturn 0;\r\n\t}\r\n};\r\n\r\nexport const buildRandomUndeadCreation = (\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n): BoardEntity => {\r\n\tconst baseCard = pickRandom(cardsData.putricidePool1);\r\n\tconst newEntity = buildSingleBoardEntity(\r\n\t\tbaseCard,\r\n\t\tcontrollerHero,\r\n\t\tfriendlyBoard,\r\n\t\tallCards,\r\n\t\tfriendly,\r\n\t\tsharedState.currentEntityId++,\r\n\t\tfalse,\r\n\t\tcardsData,\r\n\t\tsharedState,\r\n\t\tnull,\r\n\t);\r\n\r\n\tconst stitchedCardId =\r\n\t\tbaseCard === CardIds.EternalSummoner_BG25_009\r\n\t\t\t? pickRandom(cardsData.putridicePool2ForEternalSummoner)\r\n\t\t\t: pickRandom(cardsData.putricidePool2);\r\n\tconst stitchedCard = allCards.getCard(stitchedCardId);\r\n\tnewEntity.attack += stitchedCard.attack;\r\n\tnewEntity.health += stitchedCard.health;\r\n\tnewEntity.taunt = newEntity.taunt || hasMechanic(stitchedCard, GameTag[GameTag.TAUNT]);\r\n\tnewEntity.divineShield = newEntity.divineShield || hasMechanic(stitchedCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(stitchedCard, GameTag[GameTag.POISONOUS]);\r\n\tnewEntity.venomous = newEntity.venomous || hasMechanic(stitchedCard, GameTag[GameTag.VENOMOUS]);\r\n\tnewEntity.windfury = newEntity.windfury || hasMechanic(stitchedCard, GameTag[GameTag.WINDFURY]);\r\n\tnewEntity.reborn = newEntity.reborn || hasMechanic(stitchedCard, GameTag[GameTag.REBORN]);\r\n\tnewEntity.avengeCurrent = newEntity.avengeCurrent || cardsData.avengeValue(stitchedCardId);\r\n\tnewEntity.avengeDefault = newEntity.avengeDefault || cardsData.avengeValue(stitchedCardId);\r\n\treturn newEntity;\r\n};\r\n\r\nexport const grantRandomAttack = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tadditionalAttack: number,\r\n\tgameState: FullGameState,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board\r\n\t\t.filter((e) => !excludeSource || e.entityId !== source.entityId)\r\n\t\t.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = candidateBoard[Math.floor(Math.random() * candidateBoard.length)];\r\n\t\tmodifyStats(target, additionalAttack, 0, candidateBoard, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantRandomHealth = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board\r\n\t\t.filter((e) => !excludeSource || e.entityId !== source.entityId)\r\n\t\t.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = pickRandom(candidateBoard);\r\n\t\tmodifyStats(target, 0, health, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantRandomStats = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\trace: Race,\r\n\texcludeSource: boolean,\r\n\tgameState: FullGameState,\r\n): BoardEntity => {\r\n\tif (board.length > 0) {\r\n\t\tconst target: BoardEntity = getRandomAliveMinion(\r\n\t\t\tboard.filter((e) => !!e.cardId).filter((e) => (excludeSource ? e.entityId !== source.entityId : true)),\r\n\t\t\thero,\r\n\t\t\trace,\r\n\t\t\tgameState.allCards,\r\n\t\t);\r\n\t\tif (target) {\r\n\t\t\tmodifyStats(target, attack, health, board, hero, gameState);\r\n\t\t\tif (gameState.spectator) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t\t\t}\r\n\t\t\treturn target;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const getRandomAliveMinion = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n): BoardEntity => {\r\n\tconst validTribes = board\r\n\t\t.filter((e) => !race || hasCorrectTribe(e, hero, race, allCards))\r\n\t\t.filter((e) => e?.health > 0 && !e.definitelyDead);\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\tconst randomIndex = Math.floor(Math.random() * validTribes.length);\r\n\treturn validTribes[randomIndex];\r\n};\r\n\r\nexport const getRandomRevivableMinion = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n): BoardEntity => {\r\n\tconst validTribes = board\r\n\t\t.filter((e) => !race || hasCorrectTribe(e, hero, race, allCards))\r\n\t\t.filter((e) => !e.definitelyDead);\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\tconst randomIndex = Math.floor(Math.random() * validTribes.length);\r\n\treturn validTribes[randomIndex];\r\n};\r\n\r\nexport const getRandomMinionWithHighestHealth = (board: BoardEntity[]): BoardEntity => {\r\n\tif (!board.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst highestHealth = Math.max(...board.map((e) => e.health));\r\n\tconst validMinions = board.filter((e) => e.health === highestHealth);\r\n\treturn validMinions[Math.floor(Math.random() * validMinions.length)];\r\n};\r\n\r\n/**\r\n * Only use if the full board gets the stats, or if you're able to filter use the tribe param.\r\n * Otherwise some minions will be missing when applying onStatsUpdate effects\r\n */\r\nexport const addStatsToBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\ttribe?: string,\r\n\t// permanentUpgrade = false,\r\n): void => {\r\n\tfor (const entity of board) {\r\n\t\tif (!tribe || hasCorrectTribe(entity, hero, Race[tribe], gameState.allCards)) {\r\n\t\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\t\tgameState.spectator?.registerPowerTarget(sourceEntity, entity, board, null, null);\r\n\t\t\t// if (permanentUpgrade) {\r\n\t\t\t// \tentity.permanentAttack = (entity.permanentAttack ?? 0) + attack;\r\n\t\t\t// \tentity.permanentHealth = (entity.permanentHealth ?? 0) + health;\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const addStatsToAliveBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\ttribe?: string,\r\n\t// permanentUpgrade = false,\r\n): void => {\r\n\tfor (const entity of board.filter((e) => e.health > 0 && !e.definitelyDead)) {\r\n\t\tif (!tribe || hasCorrectTribe(entity, hero, Race[tribe], gameState.allCards)) {\r\n\t\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\t\tgameState.spectator?.registerPowerTarget(sourceEntity, entity, board, null, null);\r\n\t\t\t// if (permanentUpgrade) {\r\n\t\t\t// \tentity.permanentAttack = (entity.permanentAttack ?? 0) + attack;\r\n\t\t\t// \tentity.permanentHealth = (entity.permanentHealth ?? 0) + health;\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const grantStatsToMinionsOfEachType = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\tnumberOfDifferentTypes = 99,\r\n\tcanRevive = true,\r\n): void => {\r\n\tconst minionsToBuff = getMinionsOfDifferentTypes(board, hero, gameState, canRevive, numberOfDifferentTypes);\r\n\tfor (const entity of minionsToBuff) {\r\n\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, entity, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const getMinionsOfDifferentTypes = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tcanRevive = true,\r\n\tnumberOfDifferentTypes = 99,\r\n): BoardEntity[] => {\r\n\tconst result: BoardEntity[] = [];\r\n\tif (board.length > 0) {\r\n\t\tlet boardCopy = board.filter(\r\n\t\t\t(e) => !getEffectiveTribesForEntity(e, hero, gameState.allCards)?.includes(Race.ALL),\r\n\t\t);\r\n\t\tconst allRaces = shuffleArray(ALL_BG_RACES);\r\n\t\tlet typesBuffed = 0;\r\n\t\tconst racesProcessed = [];\r\n\t\tfor (let i = 1; i <= 2; i++) {\r\n\t\t\tfor (const tribe of allRaces) {\r\n\t\t\t\tconst minionsWithRaces = boardCopy\r\n\t\t\t\t\t.filter((e) => getEffectiveTribesForEntity(e, hero, gameState.allCards).length === i)\r\n\t\t\t\t\t.filter((e) =>\r\n\t\t\t\t\t\tgetEffectiveTribesForEntity(e, hero, gameState.allCards).some(\r\n\t\t\t\t\t\t\t(r) => !racesProcessed.includes(Race[r]),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\tif (typesBuffed >= numberOfDifferentTypes) {\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t\tconst validMinion: BoardEntity = canRevive\r\n\t\t\t\t\t? getRandomRevivableMinion(minionsWithRaces, hero, tribe, gameState.allCards)\r\n\t\t\t\t\t: getRandomAliveMinion(minionsWithRaces, hero, tribe, gameState.allCards);\r\n\t\t\t\tif (validMinion) {\r\n\t\t\t\t\tresult.push(validMinion);\r\n\t\t\t\t\tboardCopy = boardCopy.filter((e) => e !== validMinion);\r\n\t\t\t\t\ttypesBuffed++;\r\n\t\t\t\t\tracesProcessed.push(tribe);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult.push(\r\n\t\t\t...board.filter((e) => {\r\n\t\t\t\tconst effectiveTribes = getEffectiveTribesForEntity(e, hero, gameState.allCards);\r\n\t\t\t\treturn effectiveTribes?.includes(Race.ALL);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nexport const hasMechanic = (card: ReferenceCard, mechanic: string): boolean => {\r\n\treturn card.mechanics?.includes(mechanic);\r\n};\r\n\r\nexport const hasCorrectTribe = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\ttargetTribe: Race,\r\n\tallCards: AllCardsService,\r\n): boolean => {\r\n\tconst effectiveTribesForEntity = getEffectiveTribesForEntity(entity, playerEntity, allCards);\r\n\treturn (\r\n\t\teffectiveTribesForEntity.length > 0 &&\r\n\t\t(effectiveTribesForEntity.includes(targetTribe) || effectiveTribesForEntity.includes(Race.ALL))\r\n\t);\r\n};\r\n\r\nexport const getEffectiveTribesForEntity = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n): readonly Race[] => {\r\n\treturn [\r\n\t\t...(allCards.getCard(entity.cardId).races?.map((r) => Race[r]) ?? []),\r\n\t\t...getSpecialTribesForEntity(entity, playerEntity, allCards),\r\n\t];\r\n};\r\n\r\nconst getSpecialTribesForEntity = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n): readonly Race[] => {\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WhelpSmuggler_BG21_013:\r\n\t\tcase CardIds.WhelpSmuggler_BG21_013_G:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.SmugglerPortrait_BG30_MagicItem_825)\r\n\t\t\t\t? [Race.DRAGON]\r\n\t\t\t\t: [];\r\n\t\tcase CardIds.LightfangEnforcer_BGS_009:\r\n\t\tcase CardIds.LightfangEnforcer_TB_BaconUps_082:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.EnforcerPortrait_BG30_MagicItem_971)\r\n\t\t\t\t? [Race.ALL]\r\n\t\t\t\t: [];\r\n\t\tcase CardIds.BrannBronzebeard_BG_LOE_077:\r\n\t\tcase CardIds.BrannBronzebeard_TB_BaconUps_045:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.BronzebeardPortrait_BG30_MagicItem_418)\r\n\t\t\t\t? [Race.DRAGON, Race.MURLOC]\r\n\t\t\t\t: [];\r\n\t}\r\n\treturn [];\r\n};\r\n\r\n/** @deprecated use hasCorreectTribe instead */\r\nexport const isCorrectTribe = (cardRaces: readonly string[], targetTribe: Race): boolean => {\r\n\tif (!cardRaces?.length) {\r\n\t\treturn false;\r\n\t}\r\n\treturn cardRaces\r\n\t\t.map((cardRace) => getRaceEnum(cardRace))\r\n\t\t.some((raceEnum) => raceEnum === Race.ALL || raceEnum === targetTribe);\r\n};\r\n\r\nexport const getRaceEnum = (race: string): Race => {\r\n\treturn Race[race];\r\n};\r\n\r\nexport const addImpliedMechanics = (entity: BoardEntity, cardsData: CardsData): BoardEntity => {\r\n\tconst cleave = CLEAVE_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tconst cantAttack = CANT_ATTACK_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tentity.cleave = cleave;\r\n\tentity.cantAttack = cantAttack;\r\n\tentity.divineShield = entity.divineShield || entity.hadDivineShield;\r\n\tentity.immuneWhenAttackCharges = [\r\n\t\tCardIds.Warpwing_BG24_004,\r\n\t\tCardIds.Warpwing_BG24_004_G,\r\n\t\tTempCardIds.Viper,\r\n\t\tTempCardIds.Viper_G,\r\n\t].includes(entity.cardId as CardIds)\r\n\t\t? 99999\r\n\t\t: null;\r\n\tentity.frenzyChargesLeft =\r\n\t\tentity.cardId === CardIds.BristlebackKnight_BG20_204_G\r\n\t\t\t? 2\r\n\t\t\t: entity.cardId === CardIds.BristlebackKnight_BG20_204\r\n\t\t\t? 1\r\n\t\t\t: 0;\r\n\t// It's not an issue adding a charge for entities without a special ability\r\n\tconst defaultChargesImpl = cardMappings[entity.cardId];\r\n\tif (hasDefaultCharges(defaultChargesImpl)) {\r\n\t\tentity.abiityChargesLeft = defaultChargesImpl.defaultCharges(entity);\r\n\t} else {\r\n\t\tentity.abiityChargesLeft = [\r\n\t\t\tCardIds.MarineMatriarch_BG29_610,\r\n\t\t\tCardIds.MarineMatriarch_BG29_610_G,\r\n\t\t\tCardIds.SoftHeartedSiren_BG26_590,\r\n\t\t\tCardIds.SoftHeartedSiren_BG26_590_G,\r\n\t\t\tCardIds.LongJohnCopper_BG29_831,\r\n\t\t\tCardIds.LongJohnCopper_BG29_831_G,\r\n\t\t\tCardIds.BristlingBuffoon_BG29_160,\r\n\t\t\tCardIds.BristlingBuffoon_BG29_160_G,\r\n\t\t].includes(entity.cardId as CardIds)\r\n\t\t\t? 3\r\n\t\t\t: [\r\n\t\t\t\t\tCardIds.Mannoroth_BG27_507_G,\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t\t\tCardIds.MadMatador_BG28_404_G,\r\n\t\t\t\t\tCardIds.WingedChimera_BG29_844,\r\n\t\t\t\t\tCardIds.WingedChimera_BG29_844_G,\r\n\t\t\t\t\tCardIds.MossOfTheSchloss_BG30_111_G,\r\n\t\t\t ].includes(entity.cardId as CardIds)\r\n\t\t\t? 2\r\n\t\t\t: 1;\r\n\t}\r\n\r\n\treturn setImplicitDataForEntity(entity, cardsData);\r\n};\r\n\r\nconst setImplicitDataForEntity = (entity: BoardEntity, cardsData: CardsData): BoardEntity => {\r\n\tentity.cardId = normalizeCardIdForSkin(entity.cardId);\r\n\tentity.maxHealth = Math.max(0, entity.health, entity.maxHealth ?? 0);\r\n\tentity.maxAttack = Math.max(0, entity.attack, entity.maxAttack ?? 0);\r\n\tconst avengeValue = cardsData.avengeValue(entity.cardId);\r\n\tif (avengeValue > 0) {\r\n\t\tentity.avengeCurrent = avengeValue;\r\n\t\tentity.avengeDefault = avengeValue;\r\n\t}\r\n\treturn entity;\r\n};\r\n\r\nexport const normalizeCardIdForSkin = (cardId: string): string => {\r\n\tif (!cardId?.length) {\r\n\t\treturn cardId;\r\n\t}\r\n\tconst skinMatch = cardId.match(/(.*)_SKIN_.*/);\r\n\tif (skinMatch) {\r\n\t\treturn skinMatch[1];\r\n\t}\r\n\treturn cardId;\r\n};\r\n\r\nexport const stringifySimple = (board: readonly BoardEntity[], allCards: AllCardsService = null): string => {\r\n\treturn '[' + board.map((entity) => stringifySimpleCard(entity, allCards)).join(', ') + ']';\r\n};\r\n\r\nexport const stringifySimpleCard = (entity: BoardEntity, allCards: AllCardsService = null): string => {\r\n\treturn entity\r\n\t\t? `${allCards?.getCard(entity.cardId)?.name ?? entity.cardId}/entityId=${entity.entityId}/atk=${\r\n\t\t\t\tentity.attack\r\n\t\t }/hp=${entity.health}/ench=${entity.enchantments?.length}`\r\n\t\t: null;\r\n};\r\n\r\nexport const isFish = (entity: BoardEntity): boolean => {\r\n\treturn (\r\n\t\tentity.cardId.startsWith(CardIds.AvatarOfNzoth_FishOfNzothToken) ||\r\n\t\tentity.cardId.startsWith(CardIds.FishOfNzoth) ||\r\n\t\tentity.additionalCards?.includes(CardIds.DevourerOfSouls_BG_RLK_538)\r\n\t);\r\n};\r\n\r\nexport const isPilotedWhirlOTron = (entity: BoardEntity): boolean => {\r\n\treturn entity.cardId.startsWith(CardIds.PilotedWhirlOTron_BG21_HERO_030_Buddy);\r\n};\r\n\r\nexport const isGolden = (cardId: string, allCards: AllCardsService): boolean => {\r\n\treturn allCards.getCard(cardId).premium;\r\n};\r\n\r\nexport const getPlayerState = (gameState: GameState, hero: BgsPlayerEntity): PlayerState => {\r\n\treturn gameState.player.player === hero\r\n\t\t? gameState.player\r\n\t\t: gameState.player.teammate?.player === hero\r\n\t\t? gameState.player.teammate\r\n\t\t: gameState.opponent.player === hero\r\n\t\t? gameState.opponent\r\n\t\t: gameState.opponent.teammate?.player === hero\r\n\t\t? gameState.opponent.teammate\r\n\t\t: null;\r\n};\r\n\r\nexport const getTeammateInitialState = (gameState: GameState, hero: BgsPlayerEntity): PlayerState => {\r\n\treturn gameState.playerInitial.player?.entityId === hero?.entityId\r\n\t\t? gameState.playerInitial.teammate\r\n\t\t: gameState.playerInitial.teammate?.player?.entityId === hero?.entityId\r\n\t\t? gameState.playerInitial\r\n\t\t: gameState.opponentInitial.player?.entityId === hero?.entityId\r\n\t\t? gameState.opponentInitial.teammate\r\n\t\t: gameState.opponentInitial.teammate?.player?.entityId === hero?.entityId\r\n\t\t? gameState.opponentInitial\r\n\t\t: null;\r\n};\r\n\r\nexport const copyEntity = (entity: BoardEntity): BoardEntity => {\r\n\tconst copy: BoardEntity = {\r\n\t\t...entity,\r\n\t\tenchantments: (entity.enchantments ?? []).map((ench) => ({ ...ench })),\r\n\t\tpendingAttackBuffs: [],\r\n\t\trememberedDeathrattles: (entity.rememberedDeathrattles ?? []).map((r) => ({ ...r })),\r\n\t};\r\n\treturn copy;\r\n};\r\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\r\nimport { ALL_BG_RACES, AllCardsService, CardIds, GameTag, Race, ReferenceCard } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from './bgs-player-entity';\r\nimport { BoardEntity } from './board-entity';\r\nimport { BoardSecret } from './board-secret';\r\nimport { hasDefaultCharges } from './cards/card.interface';\r\nimport { CardsData } from './cards/cards-data';\r\nimport { cardMappings } from './cards/impl/_card-mappings';\r\nimport { pickRandom, shuffleArray } from './services/utils';\r\nimport { FullGameState, GameState, PlayerState } from './simulation/internal-game-state';\r\nimport { SharedState } from './simulation/shared-state';\r\nimport { modifyStats } from './simulation/stats';\r\n\r\nconst CLEAVE_IDS = [\r\n\tCardIds.CaveHydra_BG_LOOT_078,\r\n\tCardIds.CaveHydra_TB_BaconUps_151,\r\n\tCardIds.FoeReaper4000_BG_GVG_113,\r\n\tCardIds.FoeReaper4000_TB_BaconUps_153,\r\n\tCardIds.BladeCollector_BG26_817,\r\n\tCardIds.BladeCollector_BG26_817_G,\r\n\tCardIds.KerriganQueenOfBlades_UltraliskToken_BG31_HERO_811t10,\r\n\tCardIds.Ultralisk_BG31_HERO_811t10_G,\r\n];\r\nconst ATTACK_IMMEDIATELY_IDS = [\r\n\tCardIds.Scallywag_SkyPirateToken_BGS_061t,\r\n\tCardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\tCardIds.Carrier_InterceptorToken_BG31_HERO_802pt1t,\r\n\tCardIds.Interceptor_BG31_HERO_802pt1t_G,\r\n\t// The token doesn't attack immediately natively, only when spawned by the spell\r\n\t// See http://replays.firestoneapp.com/?reviewId=8924452a-540a-4324-8306-46900c3f9f35&turn=22&action=38\r\n\t// CardIds.ToxicTumbleweed_TumblingAssassinToken_BG28_641t,\r\n];\r\nconst CANT_ATTACK_IDS = [CardIds.ArcaneCannon_BGS_077, CardIds.ArcaneCannon_TB_BaconUps_128];\r\n\r\nexport const buildSingleBoardEntity = (\r\n\tcardId: string,\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tentityId = 1,\r\n\tspawnReborn = false,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n\tentityToSpawn: BoardEntity,\r\n\toriginalEntity: BoardEntity = null,\r\n): BoardEntity => {\r\n\tconst card = allCards.getCard(cardId);\r\n\tconst attackImmediately = ATTACK_IMMEDIATELY_IDS.indexOf(cardId as CardIds) !== -1;\r\n\tconst newEntity = !!entityToSpawn\r\n\t\t? ({\r\n\t\t\t\t...entityToSpawn,\r\n\t\t\t\tentityId: sharedState.currentEntityId++,\r\n\t\t\t\tdefinitelyDead: false,\r\n\t\t\t\tavengeCurrent: entityToSpawn.avengeDefault,\r\n\t\t\t\tattacking: false,\r\n\t\t\t\tdamageMultiplier: 1,\r\n\t\t\t\tfrenzyChargesLeft: 1,\r\n\t\t\t\tfriendly: friendly,\r\n\t\t\t\thasAttacked: 0,\r\n\t\t } as BoardEntity)\r\n\t\t: addImpliedMechanics(\r\n\t\t\t\t{\r\n\t\t\t\t\tentityId: entityId,\r\n\t\t\t\t\tattack: card.attack,\r\n\t\t\t\t\thasAttacked: 0,\r\n\t\t\t\t\tcardId: cardId,\r\n\t\t\t\t\tdivineShield: hasMechanic(card, 'DIVINE_SHIELD'),\r\n\t\t\t\t\thealth: card.health,\r\n\t\t\t\t\tmaxHealth: card.health,\r\n\t\t\t\t\ttaunt: hasMechanic(card, GameTag[GameTag.TAUNT]),\r\n\t\t\t\t\treborn: hasMechanic(card, 'REBORN'),\r\n\t\t\t\t\tpoisonous: hasMechanic(card, GameTag[GameTag.POISONOUS]),\r\n\t\t\t\t\tvenomous: hasMechanic(card, GameTag[GameTag.VENOMOUS]),\r\n\t\t\t\t\tstealth: hasMechanic(card, GameTag[GameTag.STEALTH]),\r\n\t\t\t\t\twindfury: hasMechanic(card, GameTag[GameTag.WINDFURY]),\r\n\t\t\t\t\tenchantments: [],\r\n\t\t\t\t\tpendingAttackBuffs: [],\r\n\t\t\t\t\tfriendly: friendly,\r\n\t\t\t\t\tattackImmediately: attackImmediately,\r\n\t\t\t\t\tavengeCurrent: cardsData.avengeValue(cardId),\r\n\t\t\t\t\tavengeDefault: cardsData.avengeValue(cardId),\r\n\t\t\t\t} as BoardEntity,\r\n\t\t\t\tcardsData,\r\n\t\t );\r\n\r\n\tif (spawnReborn && !entityToSpawn) {\r\n\t\tif (cardId === CardIds.BuildAnUndead_PutricidesCreationToken) {\r\n\t\t\tconst stitchedCardId = !!originalEntity.additionalCards?.length ? originalEntity.additionalCards[0] : null;\r\n\t\t\tif (stitchedCardId) {\r\n\t\t\t\tconst stitchedCard = allCards.getCard(stitchedCardId);\r\n\t\t\t\tnewEntity.attack = newEntity.attack + stitchedCard.attack;\r\n\t\t\t\tnewEntity.maxHealth = newEntity.maxHealth + stitchedCard.health;\r\n\t\t\t\tnewEntity.taunt = newEntity.taunt || hasMechanic(stitchedCard, GameTag[GameTag.TAUNT]);\r\n\t\t\t\tnewEntity.divineShield =\r\n\t\t\t\t\tnewEntity.divineShield || hasMechanic(stitchedCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\t\t\t\tnewEntity.hadDivineShield = newEntity.hadDivineShield || newEntity.divineShield;\r\n\t\t\t\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(stitchedCard, GameTag[GameTag.POISONOUS]);\r\n\t\t\t\tnewEntity.venomous = newEntity.venomous || hasMechanic(stitchedCard, GameTag[GameTag.VENOMOUS]);\r\n\t\t\t\tnewEntity.windfury = newEntity.windfury || hasMechanic(stitchedCard, GameTag[GameTag.WINDFURY]);\r\n\t\t\t\tnewEntity.avengeCurrent = newEntity.avengeCurrent || cardsData.avengeValue(stitchedCardId);\r\n\t\t\t\tnewEntity.avengeDefault = newEntity.avengeDefault || cardsData.avengeValue(stitchedCardId);\r\n\t\t\t}\r\n\t\t} else if (\r\n\t\t\tcardId === CardIds.ZilliaxAssembled_BG29_100_G &&\r\n\t\t\t!!originalEntity.additionalCards?.filter((c) => !!c).length\r\n\t\t) {\r\n\t\t\t// In this case, the base stats are still correct (the golden stats of Zilliax), but the keywords\r\n\t\t\t// can change\r\n\t\t\tfor (const moduleCardId of originalEntity.additionalCards) {\r\n\t\t\t\tconst moduleCard = allCards.getCard(moduleCardId);\r\n\t\t\t\tnewEntity.taunt = newEntity.taunt || hasMechanic(moduleCard, GameTag[GameTag.TAUNT]);\r\n\t\t\t\tnewEntity.divineShield =\r\n\t\t\t\t\tnewEntity.divineShield || hasMechanic(moduleCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\t\t\t\tnewEntity.hadDivineShield = newEntity.hadDivineShield || newEntity.divineShield;\r\n\t\t\t\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(moduleCard, GameTag[GameTag.POISONOUS]);\r\n\t\t\t\tnewEntity.venomous = newEntity.venomous || hasMechanic(moduleCard, GameTag[GameTag.VENOMOUS]);\r\n\t\t\t\tnewEntity.windfury = newEntity.windfury || hasMechanic(moduleCard, GameTag[GameTag.WINDFURY]);\r\n\t\t\t\tnewEntity.stealth = newEntity.stealth || hasMechanic(moduleCard, GameTag[GameTag.STEALTH]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tnewEntity.health = 1;\r\n\t\tnewEntity.reborn = false;\r\n\t\tnewEntity.scriptDataNum1 = getScriptDataNum1(cardId, originalEntity);\r\n\r\n\t\t// For ghoul-acabra + reborn\r\n\t\t// newEntity.attack += originalEntity.permanentAttack ?? 0;\r\n\t\t// newEntity.health += originalEntity.permanentHealth ?? 0;\r\n\t}\r\n\r\n\tnewEntity.hadDivineShield = newEntity.divineShield || newEntity.hadDivineShield;\r\n\treturn newEntity;\r\n};\r\n\r\nconst getScriptDataNum1 = (cardId: string, originalEntity: BoardEntity): number => {\r\n\tswitch (cardId) {\r\n\t\tcase CardIds.OctosariWrapGod_BG26_804:\r\n\t\t\treturn 8;\r\n\t\tcase CardIds.OctosariWrapGod_BG26_804_G:\r\n\t\t\treturn 16;\r\n\t\tdefault:\r\n\t\t\treturn 0;\r\n\t}\r\n};\r\n\r\nexport const buildRandomUndeadCreation = (\r\n\tcontrollerHero: BgsPlayerEntity,\r\n\tfriendlyBoard: BoardEntity[],\r\n\tallCards: AllCardsService,\r\n\tfriendly: boolean,\r\n\tcardsData: CardsData,\r\n\tsharedState: SharedState,\r\n): BoardEntity => {\r\n\tconst baseCard = pickRandom(cardsData.putricidePool1);\r\n\tconst newEntity = buildSingleBoardEntity(\r\n\t\tbaseCard,\r\n\t\tcontrollerHero,\r\n\t\tfriendlyBoard,\r\n\t\tallCards,\r\n\t\tfriendly,\r\n\t\tsharedState.currentEntityId++,\r\n\t\tfalse,\r\n\t\tcardsData,\r\n\t\tsharedState,\r\n\t\tnull,\r\n\t);\r\n\r\n\tconst stitchedCardId =\r\n\t\tbaseCard === CardIds.EternalSummoner_BG25_009\r\n\t\t\t? pickRandom(cardsData.putridicePool2ForEternalSummoner)\r\n\t\t\t: pickRandom(cardsData.putricidePool2);\r\n\tconst stitchedCard = allCards.getCard(stitchedCardId);\r\n\tnewEntity.attack += stitchedCard.attack;\r\n\tnewEntity.health += stitchedCard.health;\r\n\tnewEntity.taunt = newEntity.taunt || hasMechanic(stitchedCard, GameTag[GameTag.TAUNT]);\r\n\tnewEntity.divineShield = newEntity.divineShield || hasMechanic(stitchedCard, GameTag[GameTag.DIVINE_SHIELD]);\r\n\tnewEntity.poisonous = newEntity.poisonous || hasMechanic(stitchedCard, GameTag[GameTag.POISONOUS]);\r\n\tnewEntity.venomous = newEntity.venomous || hasMechanic(stitchedCard, GameTag[GameTag.VENOMOUS]);\r\n\tnewEntity.windfury = newEntity.windfury || hasMechanic(stitchedCard, GameTag[GameTag.WINDFURY]);\r\n\tnewEntity.reborn = newEntity.reborn || hasMechanic(stitchedCard, GameTag[GameTag.REBORN]);\r\n\tnewEntity.avengeCurrent = newEntity.avengeCurrent || cardsData.avengeValue(stitchedCardId);\r\n\tnewEntity.avengeDefault = newEntity.avengeDefault || cardsData.avengeValue(stitchedCardId);\r\n\treturn newEntity;\r\n};\r\n\r\nexport const grantRandomAttack = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tadditionalAttack: number,\r\n\tgameState: FullGameState,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board\r\n\t\t.filter((e) => !excludeSource || e.entityId !== source.entityId)\r\n\t\t.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = candidateBoard[Math.floor(Math.random() * candidateBoard.length)];\r\n\t\tmodifyStats(target, additionalAttack, 0, candidateBoard, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantRandomHealth = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\texcludeSource = false,\r\n): void => {\r\n\tconst candidateBoard = board\r\n\t\t.filter((e) => !excludeSource || e.entityId !== source.entityId)\r\n\t\t.filter((e) => e.health > 0 && !e.definitelyDead);\r\n\tif (candidateBoard.length > 0) {\r\n\t\tconst target = pickRandom(candidateBoard);\r\n\t\tmodifyStats(target, 0, health, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const grantRandomStats = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\trace: Race,\r\n\texcludeSource: boolean,\r\n\tgameState: FullGameState,\r\n): BoardEntity => {\r\n\tif (board.length > 0) {\r\n\t\tconst target: BoardEntity = getRandomAliveMinion(\r\n\t\t\tboard.filter((e) => !!e.cardId).filter((e) => (excludeSource ? e.entityId !== source.entityId : true)),\r\n\t\t\thero,\r\n\t\t\trace,\r\n\t\t\tgameState.allCards,\r\n\t\t);\r\n\t\tif (target) {\r\n\t\t\tmodifyStats(target, attack, health, board, hero, gameState);\r\n\t\t\tif (gameState.spectator) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(source, target, board, null, null);\r\n\t\t\t}\r\n\t\t\treturn target;\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nexport const getRandomAliveMinion = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n): BoardEntity => {\r\n\tconst validTribes = board\r\n\t\t.filter((e) => !race || hasCorrectTribe(e, hero, race, allCards))\r\n\t\t.filter((e) => e?.health > 0 && !e.definitelyDead);\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\tconst randomIndex = Math.floor(Math.random() * validTribes.length);\r\n\treturn validTribes[randomIndex];\r\n};\r\n\r\nexport const getRandomRevivableMinion = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\trace: Race,\r\n\tallCards: AllCardsService,\r\n): BoardEntity => {\r\n\tconst validTribes = board\r\n\t\t.filter((e) => !race || hasCorrectTribe(e, hero, race, allCards))\r\n\t\t.filter((e) => !e.definitelyDead);\r\n\tif (!validTribes.length) {\r\n\t\treturn null;\r\n\t}\r\n\tconst randomIndex = Math.floor(Math.random() * validTribes.length);\r\n\treturn validTribes[randomIndex];\r\n};\r\n\r\nexport const getRandomMinionWithHighestHealth = (board: BoardEntity[]): BoardEntity => {\r\n\tif (!board.length) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst highestHealth = Math.max(...board.map((e) => e.health));\r\n\tconst validMinions = board.filter((e) => e.health === highestHealth);\r\n\treturn validMinions[Math.floor(Math.random() * validMinions.length)];\r\n};\r\n\r\n/**\r\n * Only use if the full board gets the stats, or if you're able to filter use the tribe param.\r\n * Otherwise some minions will be missing when applying onStatsUpdate effects\r\n */\r\nexport const addStatsToBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\ttribe?: string,\r\n\t// permanentUpgrade = false,\r\n): void => {\r\n\tfor (const entity of board) {\r\n\t\tif (!tribe || hasCorrectTribe(entity, hero, Race[tribe], gameState.allCards)) {\r\n\t\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\t\tgameState.spectator?.registerPowerTarget(sourceEntity, entity, board, null, null);\r\n\t\t\t// if (permanentUpgrade) {\r\n\t\t\t// \tentity.permanentAttack = (entity.permanentAttack ?? 0) + attack;\r\n\t\t\t// \tentity.permanentHealth = (entity.permanentHealth ?? 0) + health;\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const addStatsToAliveBoard = (\r\n\tsourceEntity: BoardEntity | BgsPlayerEntity | BoardSecret,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\ttribe?: string,\r\n\t// permanentUpgrade = false,\r\n): void => {\r\n\tfor (const entity of board.filter((e) => e.health > 0 && !e.definitelyDead)) {\r\n\t\tif (!tribe || hasCorrectTribe(entity, hero, Race[tribe], gameState.allCards)) {\r\n\t\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\t\tgameState.spectator?.registerPowerTarget(sourceEntity, entity, board, null, null);\r\n\t\t\t// if (permanentUpgrade) {\r\n\t\t\t// \tentity.permanentAttack = (entity.permanentAttack ?? 0) + attack;\r\n\t\t\t// \tentity.permanentHealth = (entity.permanentHealth ?? 0) + health;\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport const grantStatsToMinionsOfEachType = (\r\n\tsource: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tattack: number,\r\n\thealth: number,\r\n\tgameState: FullGameState,\r\n\tnumberOfDifferentTypes = 99,\r\n\tcanRevive = true,\r\n): void => {\r\n\tconst minionsToBuff = getMinionsOfDifferentTypes(board, hero, gameState, canRevive, numberOfDifferentTypes);\r\n\tfor (const entity of minionsToBuff) {\r\n\t\tmodifyStats(entity, attack, health, board, hero, gameState);\r\n\t\tgameState.spectator.registerPowerTarget(source, entity, board, null, null);\r\n\t}\r\n};\r\n\r\nexport const getMinionsOfDifferentTypes = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n\tcanRevive = true,\r\n\tnumberOfDifferentTypes = 99,\r\n): BoardEntity[] => {\r\n\tconst result: BoardEntity[] = [];\r\n\tif (board.length > 0) {\r\n\t\tlet boardCopy = board.filter(\r\n\t\t\t(e) => !getEffectiveTribesForEntity(e, hero, gameState.allCards)?.includes(Race.ALL),\r\n\t\t);\r\n\t\tconst allRaces = shuffleArray(ALL_BG_RACES);\r\n\t\tlet typesBuffed = 0;\r\n\t\tconst racesProcessed = [];\r\n\t\tfor (let i = 1; i <= 2; i++) {\r\n\t\t\tfor (const tribe of allRaces) {\r\n\t\t\t\tconst minionsWithRaces = boardCopy\r\n\t\t\t\t\t.filter((e) => getEffectiveTribesForEntity(e, hero, gameState.allCards).length === i)\r\n\t\t\t\t\t.filter((e) =>\r\n\t\t\t\t\t\tgetEffectiveTribesForEntity(e, hero, gameState.allCards).some(\r\n\t\t\t\t\t\t\t(r) => !racesProcessed.includes(Race[r]),\r\n\t\t\t\t\t\t),\r\n\t\t\t\t\t);\r\n\t\t\t\tif (typesBuffed >= numberOfDifferentTypes) {\r\n\t\t\t\t\treturn result;\r\n\t\t\t\t}\r\n\t\t\t\tconst validMinion: BoardEntity = canRevive\r\n\t\t\t\t\t? getRandomRevivableMinion(minionsWithRaces, hero, tribe, gameState.allCards)\r\n\t\t\t\t\t: getRandomAliveMinion(minionsWithRaces, hero, tribe, gameState.allCards);\r\n\t\t\t\tif (validMinion) {\r\n\t\t\t\t\tresult.push(validMinion);\r\n\t\t\t\t\tboardCopy = boardCopy.filter((e) => e !== validMinion);\r\n\t\t\t\t\ttypesBuffed++;\r\n\t\t\t\t\tracesProcessed.push(tribe);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tresult.push(\r\n\t\t\t...board.filter((e) => {\r\n\t\t\t\tconst effectiveTribes = getEffectiveTribesForEntity(e, hero, gameState.allCards);\r\n\t\t\t\treturn effectiveTribes?.includes(Race.ALL);\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nexport const hasMechanic = (card: ReferenceCard, mechanic: string): boolean => {\r\n\treturn card.mechanics?.includes(mechanic);\r\n};\r\n\r\nexport const hasCorrectTribe = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\ttargetTribe: Race,\r\n\tallCards: AllCardsService,\r\n): boolean => {\r\n\tconst effectiveTribesForEntity = getEffectiveTribesForEntity(entity, playerEntity, allCards);\r\n\treturn (\r\n\t\teffectiveTribesForEntity.length > 0 &&\r\n\t\t(effectiveTribesForEntity.includes(targetTribe) || effectiveTribesForEntity.includes(Race.ALL))\r\n\t);\r\n};\r\n\r\nexport const getEffectiveTribesForEntity = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n): readonly Race[] => {\r\n\treturn [\r\n\t\t...(allCards.getCard(entity.cardId).races?.map((r) => Race[r]) ?? []),\r\n\t\t...getSpecialTribesForEntity(entity, playerEntity, allCards),\r\n\t];\r\n};\r\n\r\nconst getSpecialTribesForEntity = (\r\n\tentity: BoardEntity,\r\n\tplayerEntity: BgsPlayerEntity,\r\n\tallCards: AllCardsService,\r\n): readonly Race[] => {\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.WhelpSmuggler_BG21_013:\r\n\t\tcase CardIds.WhelpSmuggler_BG21_013_G:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.SmugglerPortrait_BG30_MagicItem_825)\r\n\t\t\t\t? [Race.DRAGON]\r\n\t\t\t\t: [];\r\n\t\tcase CardIds.LightfangEnforcer_BGS_009:\r\n\t\tcase CardIds.LightfangEnforcer_TB_BaconUps_082:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.EnforcerPortrait_BG30_MagicItem_971)\r\n\t\t\t\t? [Race.ALL]\r\n\t\t\t\t: [];\r\n\t\tcase CardIds.BrannBronzebeard_BG_LOE_077:\r\n\t\tcase CardIds.BrannBronzebeard_TB_BaconUps_045:\r\n\t\t\treturn playerEntity.trinkets.some((t) => t.cardId === CardIds.BronzebeardPortrait_BG30_MagicItem_418)\r\n\t\t\t\t? [Race.DRAGON, Race.MURLOC]\r\n\t\t\t\t: [];\r\n\t}\r\n\treturn [];\r\n};\r\n\r\n/** @deprecated use hasCorreectTribe instead */\r\nexport const isCorrectTribe = (cardRaces: readonly string[], targetTribe: Race): boolean => {\r\n\tif (!cardRaces?.length) {\r\n\t\treturn false;\r\n\t}\r\n\treturn cardRaces\r\n\t\t.map((cardRace) => getRaceEnum(cardRace))\r\n\t\t.some((raceEnum) => raceEnum === Race.ALL || raceEnum === targetTribe);\r\n};\r\n\r\nexport const getRaceEnum = (race: string): Race => {\r\n\treturn Race[race];\r\n};\r\n\r\nexport const addImpliedMechanics = (entity: BoardEntity, cardsData: CardsData): BoardEntity => {\r\n\tconst cleave = CLEAVE_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tconst cantAttack = CANT_ATTACK_IDS.indexOf(entity.cardId as CardIds) !== -1;\r\n\tentity.cleave = cleave;\r\n\tentity.cantAttack = cantAttack;\r\n\tentity.divineShield = entity.divineShield || entity.hadDivineShield;\r\n\tentity.immuneWhenAttackCharges = [\r\n\t\tCardIds.Warpwing_BG24_004,\r\n\t\tCardIds.Warpwing_BG24_004_G,\r\n\t\tCardIds.KerriganQueenOfBlades_ViperToken_BG31_HERO_811t8,\r\n\t\tCardIds.Viper_BG31_HERO_811t8_G,\r\n\t].includes(entity.cardId as CardIds)\r\n\t\t? 99999\r\n\t\t: null;\r\n\tentity.frenzyChargesLeft =\r\n\t\tentity.cardId === CardIds.BristlebackKnight_BG20_204_G\r\n\t\t\t? 2\r\n\t\t\t: entity.cardId === CardIds.BristlebackKnight_BG20_204\r\n\t\t\t? 1\r\n\t\t\t: 0;\r\n\t// It's not an issue adding a charge for entities without a special ability\r\n\tconst defaultChargesImpl = cardMappings[entity.cardId];\r\n\tif (hasDefaultCharges(defaultChargesImpl)) {\r\n\t\tentity.abiityChargesLeft = defaultChargesImpl.defaultCharges(entity);\r\n\t} else {\r\n\t\tentity.abiityChargesLeft = [\r\n\t\t\tCardIds.MarineMatriarch_BG29_610,\r\n\t\t\tCardIds.MarineMatriarch_BG29_610_G,\r\n\t\t\tCardIds.SoftHeartedSiren_BG26_590,\r\n\t\t\tCardIds.SoftHeartedSiren_BG26_590_G,\r\n\t\t\tCardIds.LongJohnCopper_BG29_831,\r\n\t\t\tCardIds.LongJohnCopper_BG29_831_G,\r\n\t\t\tCardIds.BristlingBuffoon_BG29_160,\r\n\t\t\tCardIds.BristlingBuffoon_BG29_160_G,\r\n\t\t].includes(entity.cardId as CardIds)\r\n\t\t\t? 3\r\n\t\t\t: [\r\n\t\t\t\t\tCardIds.Mannoroth_BG27_507_G,\r\n\t\t\t\t\tCardIds.EclipsionIllidari_TB_BaconShop_HERO_08_Buddy_G,\r\n\t\t\t\t\tCardIds.MadMatador_BG28_404_G,\r\n\t\t\t\t\tCardIds.WingedChimera_BG29_844,\r\n\t\t\t\t\tCardIds.WingedChimera_BG29_844_G,\r\n\t\t\t\t\tCardIds.MossOfTheSchloss_BG30_111_G,\r\n\t\t\t ].includes(entity.cardId as CardIds)\r\n\t\t\t? 2\r\n\t\t\t: 1;\r\n\t}\r\n\r\n\treturn setImplicitDataForEntity(entity, cardsData);\r\n};\r\n\r\nconst setImplicitDataForEntity = (entity: BoardEntity, cardsData: CardsData): BoardEntity => {\r\n\tentity.cardId = normalizeCardIdForSkin(entity.cardId);\r\n\tentity.maxHealth = Math.max(0, entity.health, entity.maxHealth ?? 0);\r\n\tentity.maxAttack = Math.max(0, entity.attack, entity.maxAttack ?? 0);\r\n\tconst avengeValue = cardsData.avengeValue(entity.cardId);\r\n\tif (avengeValue > 0) {\r\n\t\tentity.avengeCurrent = avengeValue;\r\n\t\tentity.avengeDefault = avengeValue;\r\n\t}\r\n\treturn entity;\r\n};\r\n\r\nexport const normalizeCardIdForSkin = (cardId: string): string => {\r\n\tif (!cardId?.length) {\r\n\t\treturn cardId;\r\n\t}\r\n\tconst skinMatch = cardId.match(/(.*)_SKIN_.*/);\r\n\tif (skinMatch) {\r\n\t\treturn skinMatch[1];\r\n\t}\r\n\treturn cardId;\r\n};\r\n\r\nexport const stringifySimple = (board: readonly BoardEntity[], allCards: AllCardsService = null): string => {\r\n\treturn '[' + board.map((entity) => stringifySimpleCard(entity, allCards)).join(', ') + ']';\r\n};\r\n\r\nexport const stringifySimpleCard = (entity: BoardEntity, allCards: AllCardsService = null): string => {\r\n\treturn entity\r\n\t\t? `${allCards?.getCard(entity.cardId)?.name ?? entity.cardId}/entityId=${entity.entityId}/atk=${\r\n\t\t\t\tentity.attack\r\n\t\t }/hp=${entity.health}/ench=${entity.enchantments?.length}`\r\n\t\t: null;\r\n};\r\n\r\nexport const isFish = (entity: BoardEntity): boolean => {\r\n\treturn (\r\n\t\tentity.cardId.startsWith(CardIds.AvatarOfNzoth_FishOfNzothToken) ||\r\n\t\tentity.cardId.startsWith(CardIds.FishOfNzoth) ||\r\n\t\tentity.additionalCards?.includes(CardIds.DevourerOfSouls_BG_RLK_538)\r\n\t);\r\n};\r\n\r\nexport const isPilotedWhirlOTron = (entity: BoardEntity): boolean => {\r\n\treturn entity.cardId.startsWith(CardIds.PilotedWhirlOTron_BG21_HERO_030_Buddy);\r\n};\r\n\r\nexport const isGolden = (cardId: string, allCards: AllCardsService): boolean => {\r\n\treturn allCards.getCard(cardId).premium;\r\n};\r\n\r\nexport const getPlayerState = (gameState: GameState, hero: BgsPlayerEntity): PlayerState => {\r\n\treturn gameState.player.player === hero\r\n\t\t? gameState.player\r\n\t\t: gameState.player.teammate?.player === hero\r\n\t\t? gameState.player.teammate\r\n\t\t: gameState.opponent.player === hero\r\n\t\t? gameState.opponent\r\n\t\t: gameState.opponent.teammate?.player === hero\r\n\t\t? gameState.opponent.teammate\r\n\t\t: null;\r\n};\r\n\r\nexport const getTeammateInitialState = (gameState: GameState, hero: BgsPlayerEntity): PlayerState => {\r\n\treturn gameState.playerInitial.player?.entityId === hero?.entityId\r\n\t\t? gameState.playerInitial.teammate\r\n\t\t: gameState.playerInitial.teammate?.player?.entityId === hero?.entityId\r\n\t\t? gameState.playerInitial\r\n\t\t: gameState.opponentInitial.player?.entityId === hero?.entityId\r\n\t\t? gameState.opponentInitial.teammate\r\n\t\t: gameState.opponentInitial.teammate?.player?.entityId === hero?.entityId\r\n\t\t? gameState.opponentInitial\r\n\t\t: null;\r\n};\r\n\r\nexport const copyEntity = (entity: BoardEntity): BoardEntity => {\r\n\tconst copy: BoardEntity = {\r\n\t\t...entity,\r\n\t\tenchantments: (entity.enchantments ?? []).map((ench) => ({ ...ench })),\r\n\t\tpendingAttackBuffs: [],\r\n\t\trememberedDeathrattles: (entity.rememberedDeathrattles ?? []).map((r) => ({ ...r })),\r\n\t};\r\n\treturn copy;\r\n};\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestone-hs/simulate-bgs-battle",
3
- "version": "1.1.531",
3
+ "version": "1.1.533",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "lint": "eslint --color --fix --ext .ts .",
@@ -25,7 +25,7 @@
25
25
  ],
26
26
  "dependencies": {
27
27
  "@firestone-hs/hs-replay-xml-parser": "0.0.46",
28
- "@firestone-hs/reference-data": "^2.0.105"
28
+ "@firestone-hs/reference-data": "^2.0.106"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/aws-lambda": "8.10.31",