@firestone-hs/simulate-bgs-battle 1.1.501 → 1.1.502
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bgs-player-entity.d.ts +6 -0
- package/dist/bgs-player-entity.js.map +1 -1
- package/dist/cards/card.interface.d.ts +110 -1
- package/dist/cards/card.interface.js +45 -0
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.d.ts +5 -1
- package/dist/cards/cards-data.js +39 -6
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.d.ts +4 -0
- package/dist/cards/impl/_card-mappings.js +120 -0
- package/dist/cards/impl/_card-mappings.js.map +1 -0
- package/dist/cards/impl/anomaly/blessed-or-blighted.js +3 -2
- package/dist/cards/impl/anomaly/blessed-or-blighted.js.map +1 -1
- package/dist/cards/impl/bg-spell/boon-of-beetles.js +1 -1
- package/dist/cards/impl/bg-spell/boon-of-beetles.js.map +1 -1
- package/dist/cards/impl/enchantments/crystal-infuser-enchantment.d.ts +2 -0
- package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js +16 -0
- package/dist/cards/impl/enchantments/crystal-infuser-enchantment.js.map +1 -0
- package/dist/cards/impl/hero-power/reborn-rites.js +2 -1
- package/dist/cards/impl/hero-power/reborn-rites.js.map +1 -1
- package/dist/cards/impl/hero-power/swatting-insects.js +5 -3
- package/dist/cards/impl/hero-power/swatting-insects.js.map +1 -1
- package/dist/cards/impl/hero-power/water-invocation.js +1 -1
- package/dist/cards/impl/hero-power/water-invocation.js.map +1 -1
- package/dist/cards/impl/minion/amber-guardian.js +1 -1
- package/dist/cards/impl/minion/amber-guardian.js.map +1 -1
- package/dist/cards/impl/minion/arcane-cannoneer.d.ts +2 -0
- package/dist/cards/impl/minion/arcane-cannoneer.js +15 -0
- package/dist/cards/impl/minion/arcane-cannoneer.js.map +1 -0
- package/dist/cards/impl/minion/bannerboar.d.ts +2 -0
- package/dist/cards/impl/minion/bannerboar.js +16 -0
- package/dist/cards/impl/minion/bannerboar.js.map +1 -0
- package/dist/cards/impl/minion/beetle.d.ts +2 -0
- package/dist/cards/impl/minion/beetle.js +16 -0
- package/dist/cards/impl/minion/beetle.js.map +1 -0
- package/dist/cards/impl/minion/bird-buddy.d.ts +2 -0
- package/dist/cards/impl/minion/bird-buddy.js +14 -0
- package/dist/cards/impl/minion/bird-buddy.js.map +1 -0
- package/dist/cards/impl/minion/boar-gamer.d.ts +2 -0
- package/dist/cards/impl/minion/boar-gamer.js +12 -0
- package/dist/cards/impl/minion/boar-gamer.js.map +1 -0
- package/dist/cards/impl/minion/bubble-gunner.d.ts +2 -0
- package/dist/cards/impl/minion/bubble-gunner.js +44 -0
- package/dist/cards/impl/minion/bubble-gunner.js.map +1 -0
- package/dist/cards/impl/minion/buzzing-vermin.d.ts +2 -0
- package/dist/cards/impl/minion/buzzing-vermin.js +12 -0
- package/dist/cards/impl/minion/buzzing-vermin.js.map +1 -0
- package/dist/cards/impl/minion/cadaver-caretaker.d.ts +2 -0
- package/dist/cards/impl/minion/cadaver-caretaker.js +12 -0
- package/dist/cards/impl/minion/cadaver-caretaker.js.map +1 -0
- package/dist/cards/impl/minion/deathly-striker.d.ts +2 -0
- package/dist/cards/impl/minion/deathly-striker.js +32 -0
- package/dist/cards/impl/minion/deathly-striker.js.map +1 -0
- package/dist/cards/impl/minion/efficient-engineer.d.ts +2 -0
- package/dist/cards/impl/minion/efficient-engineer.js +24 -0
- package/dist/cards/impl/minion/efficient-engineer.js.map +1 -0
- package/dist/cards/impl/minion/electric-synthesizer.d.ts +2 -0
- package/dist/cards/impl/minion/electric-synthesizer.js +24 -0
- package/dist/cards/impl/minion/electric-synthesizer.js.map +1 -0
- package/dist/cards/impl/minion/fairy-gillmother.d.ts +2 -0
- package/dist/cards/impl/minion/fairy-gillmother.js +18 -0
- package/dist/cards/impl/minion/fairy-gillmother.js.map +1 -0
- package/dist/cards/impl/minion/forest-rover.d.ts +2 -0
- package/dist/cards/impl/minion/forest-rover.js +23 -0
- package/dist/cards/impl/minion/forest-rover.js.map +1 -0
- package/dist/cards/impl/minion/fountain-chiller.d.ts +2 -0
- package/dist/cards/impl/minion/fountain-chiller.js +27 -0
- package/dist/cards/impl/minion/fountain-chiller.js.map +1 -0
- package/dist/cards/impl/minion/gem-rat.d.ts +2 -0
- package/dist/cards/impl/minion/gem-rat.js +12 -0
- package/dist/cards/impl/minion/gem-rat.js.map +1 -0
- package/dist/cards/impl/minion/gentle-djinni.d.ts +2 -0
- package/dist/cards/impl/minion/gentle-djinni.js +25 -0
- package/dist/cards/impl/minion/gentle-djinni.js.map +1 -0
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.d.ts +2 -0
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.js +15 -0
- package/dist/cards/impl/minion/goldrinn-the-great-wolf.js.map +1 -0
- package/dist/cards/impl/minion/gritty-headhunter.d.ts +2 -0
- package/dist/cards/impl/minion/gritty-headhunter.js +14 -0
- package/dist/cards/impl/minion/gritty-headhunter.js.map +1 -0
- package/dist/cards/impl/minion/hackerfin.d.ts +2 -0
- package/dist/cards/impl/minion/hackerfin.js +21 -0
- package/dist/cards/impl/minion/hackerfin.js.map +1 -0
- package/dist/cards/impl/minion/handless-forsaken.d.ts +2 -0
- package/dist/cards/impl/minion/handless-forsaken.js +12 -0
- package/dist/cards/impl/minion/handless-forsaken.js.map +1 -0
- package/dist/cards/impl/minion/harmless-bonehead.d.ts +2 -0
- package/dist/cards/impl/minion/harmless-bonehead.js +12 -0
- package/dist/cards/impl/minion/harmless-bonehead.js.map +1 -0
- package/dist/cards/impl/minion/holo-rover.d.ts +2 -0
- package/dist/cards/impl/minion/holo-rover.js +16 -0
- package/dist/cards/impl/minion/holo-rover.js.map +1 -0
- package/dist/cards/impl/minion/humming-bird.d.ts +2 -5
- package/dist/cards/impl/minion/humming-bird.js +1 -0
- package/dist/cards/impl/minion/humming-bird.js.map +1 -1
- package/dist/cards/impl/minion/hungry-snapjaw.d.ts +2 -0
- package/dist/cards/impl/minion/hungry-snapjaw.js +17 -0
- package/dist/cards/impl/minion/hungry-snapjaw.js.map +1 -0
- package/dist/cards/impl/minion/implant-subject.d.ts +2 -0
- package/dist/cards/impl/minion/implant-subject.js +42 -0
- package/dist/cards/impl/minion/implant-subject.js.map +1 -0
- package/dist/cards/impl/minion/indomitable-mount.d.ts +2 -0
- package/dist/cards/impl/minion/indomitable-mount.js +23 -0
- package/dist/cards/impl/minion/indomitable-mount.js.map +1 -0
- package/dist/cards/impl/minion/interrogator-whitemane.js +5 -4
- package/dist/cards/impl/minion/interrogator-whitemane.js.map +1 -1
- package/dist/cards/impl/minion/karmic-chameleon.d.ts +2 -0
- package/dist/cards/impl/minion/karmic-chameleon.js +27 -0
- package/dist/cards/impl/minion/karmic-chameleon.js.map +1 -0
- package/dist/cards/impl/minion/manasaber.d.ts +2 -0
- package/dist/cards/impl/minion/manasaber.js +14 -0
- package/dist/cards/impl/minion/manasaber.js.map +1 -0
- package/dist/cards/impl/minion/mantid-queen.js +6 -3
- package/dist/cards/impl/minion/mantid-queen.js.map +1 -1
- package/dist/cards/impl/minion/marquee-ticker.d.ts +2 -0
- package/dist/cards/impl/minion/marquee-ticker.js +12 -0
- package/dist/cards/impl/minion/marquee-ticker.js.map +1 -0
- package/dist/cards/impl/minion/mechanized-gift-horse.d.ts +2 -0
- package/dist/cards/impl/minion/mechanized-gift-horse.js +13 -0
- package/dist/cards/impl/minion/mechanized-gift-horse.js.map +1 -0
- package/dist/cards/impl/minion/mechorse.d.ts +2 -0
- package/dist/cards/impl/minion/mechorse.js +16 -0
- package/dist/cards/impl/minion/mechorse.js.map +1 -0
- package/dist/cards/impl/minion/moonsteel-juggernaut.d.ts +2 -0
- package/dist/cards/impl/minion/moonsteel-juggernaut.js +15 -0
- package/dist/cards/impl/minion/moonsteel-juggernaut.js.map +1 -0
- package/dist/cards/impl/minion/mutated-lasher.d.ts +2 -0
- package/dist/cards/impl/minion/mutated-lasher.js +26 -0
- package/dist/cards/impl/minion/mutated-lasher.js.map +1 -0
- package/dist/cards/impl/minion/neon-agent.d.ts +2 -0
- package/dist/cards/impl/minion/neon-agent.js +18 -0
- package/dist/cards/impl/minion/neon-agent.js.map +1 -0
- package/dist/cards/impl/minion/nest-swarmer.d.ts +2 -0
- package/dist/cards/impl/minion/nest-swarmer.js +12 -0
- package/dist/cards/impl/minion/nest-swarmer.js.map +1 -0
- package/dist/cards/impl/minion/nether-drake.d.ts +2 -0
- package/dist/cards/impl/minion/nether-drake.js +15 -0
- package/dist/cards/impl/minion/nether-drake.js.map +1 -0
- package/dist/cards/impl/minion/niuzao.d.ts +2 -0
- package/dist/cards/impl/minion/niuzao.js +21 -0
- package/dist/cards/impl/minion/niuzao.js.map +1 -0
- package/dist/cards/impl/minion/outback-smolderer.d.ts +2 -0
- package/dist/cards/impl/minion/outback-smolderer.js +17 -0
- package/dist/cards/impl/minion/outback-smolderer.js.map +1 -0
- package/dist/cards/impl/minion/razorgore-the-untamed.d.ts +2 -0
- package/dist/cards/impl/minion/razorgore-the-untamed.js +20 -0
- package/dist/cards/impl/minion/razorgore-the-untamed.js.map +1 -0
- package/dist/cards/impl/minion/reckless-cliffdiver.d.ts +2 -0
- package/dist/cards/impl/minion/reckless-cliffdiver.js +19 -0
- package/dist/cards/impl/minion/reckless-cliffdiver.js.map +1 -0
- package/dist/cards/impl/minion/runed-progenitor.d.ts +2 -0
- package/dist/cards/impl/minion/runed-progenitor.js +24 -0
- package/dist/cards/impl/minion/runed-progenitor.js.map +1 -0
- package/dist/cards/impl/minion/rylak-metalhead.d.ts +2 -0
- package/dist/cards/impl/minion/rylak-metalhead.js +22 -0
- package/dist/cards/impl/minion/rylak-metalhead.js.map +1 -0
- package/dist/cards/impl/minion/salty-hog.d.ts +2 -0
- package/dist/cards/impl/minion/salty-hog.js +17 -0
- package/dist/cards/impl/minion/salty-hog.js.map +1 -0
- package/dist/cards/impl/minion/showy-cyclist.d.ts +2 -0
- package/dist/cards/impl/minion/showy-cyclist.js +14 -0
- package/dist/cards/impl/minion/showy-cyclist.js.map +1 -0
- package/dist/cards/impl/minion/silver-handed-recruit.d.ts +2 -0
- package/dist/cards/impl/minion/silver-handed-recruit.js +17 -0
- package/dist/cards/impl/minion/silver-handed-recruit.js.map +1 -0
- package/dist/cards/impl/minion/sly-raptor.d.ts +2 -0
- package/dist/cards/impl/minion/sly-raptor.js +18 -0
- package/dist/cards/impl/minion/sly-raptor.js.map +1 -0
- package/dist/cards/impl/minion/soulsplitter.js +2 -1
- package/dist/cards/impl/minion/soulsplitter.js.map +1 -1
- package/dist/cards/impl/minion/spacefarer.d.ts +2 -0
- package/dist/cards/impl/minion/spacefarer.js +20 -0
- package/dist/cards/impl/minion/spacefarer.js.map +1 -0
- package/dist/cards/impl/minion/sun-screener.js +1 -1
- package/dist/cards/impl/minion/sun-screener.js.map +1 -1
- package/dist/cards/impl/minion/thousandth-paper-drake.js +2 -1
- package/dist/cards/impl/minion/thousandth-paper-drake.js.map +1 -1
- package/dist/cards/impl/minion/turquoise-skitterer.d.ts +2 -0
- package/dist/cards/impl/minion/turquoise-skitterer.js +25 -0
- package/dist/cards/impl/minion/turquoise-skitterer.js.map +1 -0
- package/dist/cards/impl/minion/twilight-primordium.d.ts +2 -0
- package/dist/cards/impl/minion/twilight-primordium.js +24 -0
- package/dist/cards/impl/minion/twilight-primordium.js.map +1 -0
- package/dist/cards/impl/minion/ultraviolet-ascendant.d.ts +2 -0
- package/dist/cards/impl/minion/ultraviolet-ascendant.js +14 -0
- package/dist/cards/impl/minion/ultraviolet-ascendant.js.map +1 -0
- package/dist/cards/impl/minion/wandering-wight.d.ts +2 -0
- package/dist/cards/impl/minion/wandering-wight.js +12 -0
- package/dist/cards/impl/minion/wandering-wight.js.map +1 -0
- package/dist/cards/impl/minion/wisp-in-the-shell.d.ts +2 -0
- package/dist/cards/impl/minion/wisp-in-the-shell.js +19 -0
- package/dist/cards/impl/minion/wisp-in-the-shell.js.map +1 -0
- package/dist/cards/impl/trinket/eternal-portrait.js +4 -2
- package/dist/cards/impl/trinket/eternal-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/holly-mallet.js +1 -1
- package/dist/cards/impl/trinket/holly-mallet.js.map +1 -1
- package/dist/{divine-shield.d.ts → keywords/divine-shield.d.ts} +9 -3
- package/dist/{divine-shield.js → keywords/divine-shield.js} +17 -4
- package/dist/keywords/divine-shield.js.map +1 -0
- package/dist/keywords/reborn.d.ts +10 -0
- package/dist/keywords/reborn.js +22 -0
- package/dist/keywords/reborn.js.map +1 -0
- package/dist/keywords/stealth.d.ts +10 -0
- package/dist/keywords/stealth.js +22 -0
- package/dist/keywords/stealth.js.map +1 -0
- package/dist/keywords/taunt.d.ts +10 -0
- package/dist/keywords/taunt.js +22 -0
- package/dist/keywords/taunt.js.map +1 -0
- package/dist/keywords/venomous.d.ts +10 -0
- package/dist/keywords/venomous.js +33 -0
- package/dist/keywords/venomous.js.map +1 -0
- package/dist/keywords/windfury.d.ts +10 -0
- package/dist/keywords/windfury.js +22 -0
- package/dist/keywords/windfury.js.map +1 -0
- package/dist/simulate-bgs-battle.d.ts +2 -2
- package/dist/simulate-bgs-battle.js +19 -2
- package/dist/simulate-bgs-battle.js.map +1 -1
- package/dist/simulation/add-minion-to-board.d.ts +16 -0
- package/dist/simulation/add-minion-to-board.js +40 -11
- package/dist/simulation/add-minion-to-board.js.map +1 -1
- package/dist/simulation/after-attack.js +2 -1
- package/dist/simulation/after-attack.js.map +1 -1
- package/dist/simulation/attack.js +7 -24
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/auras.d.ts +1 -1
- package/dist/simulation/auras.js +21 -15
- package/dist/simulation/auras.js.map +1 -1
- package/dist/simulation/avenge.d.ts +7 -0
- package/dist/simulation/avenge.js +223 -229
- package/dist/simulation/avenge.js.map +1 -1
- package/dist/simulation/battlecries.d.ts +8 -0
- package/dist/simulation/battlecries.js +634 -609
- package/dist/simulation/battlecries.js.map +1 -1
- package/dist/simulation/blood-gems.js +1 -1
- package/dist/simulation/blood-gems.js.map +1 -1
- package/dist/simulation/cards-in-hand.d.ts +7 -1
- package/dist/simulation/cards-in-hand.js +14 -0
- package/dist/simulation/cards-in-hand.js.map +1 -1
- package/dist/simulation/damage-effects.js +1 -1
- package/dist/simulation/damage-effects.js.map +1 -1
- package/dist/simulation/deathrattle-effects.d.ts +1 -1
- package/dist/simulation/deathrattle-effects.js +498 -516
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/deathrattle-on-trigger.d.ts +1 -0
- package/dist/simulation/deathrattle-on-trigger.js.map +1 -1
- package/dist/simulation/deathrattle-spawns.d.ts +2 -0
- package/dist/simulation/deathrattle-spawns.js +324 -384
- package/dist/simulation/deathrattle-spawns.js.map +1 -1
- package/dist/simulation/deathrattle-utils.js +1 -1
- package/dist/simulation/deathrattle-utils.js.map +1 -1
- package/dist/simulation/frenzy.js +1 -1
- package/dist/simulation/frenzy.js.map +1 -1
- package/dist/simulation/magnetize.js.map +1 -1
- package/dist/simulation/on-attack.d.ts +13 -1
- package/dist/simulation/on-attack.js +21 -1
- package/dist/simulation/on-attack.js.map +1 -1
- package/dist/simulation/on-being-attacked.js +7 -4
- package/dist/simulation/on-being-attacked.js.map +1 -1
- package/dist/simulation/simulator.js +1 -1
- package/dist/simulation/simulator.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +6 -4
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/simulation/stats.d.ts +8 -0
- package/dist/simulation/stats.js +21 -4
- package/dist/simulation/stats.js.map +1 -1
- package/dist/temp-card-ids.d.ts +70 -0
- package/dist/temp-card-ids.js.map +1 -1
- package/dist/utils.d.ts +0 -1
- package/dist/utils.js +30 -36
- package/dist/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/divine-shield.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-minion-to-board.js","sourceRoot":"","sources":["../../src/simulation/add-minion-to-board.ts"],"names":[],"mappings":";;;AAAA,iEAA6D;AAG7D,oDAAqD;AACrD,oDAAsD;AACtD,6CAA+C;AAC/C,oCAAwE;AACxE,mCAA+C;AAE/C,mCAAiD;AACjD,mCAAsD;AAE/C,MAAM,iBAAiB,GAAG,CAChC,KAAoB,EACpB,SAA0B,EAC1B,SAA0B,EAC1B,KAAa,EACb,YAAoC,EACpC,SAAwB,EACjB,EAAE;IAET,KAAK,MAAM,WAAW,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE;QACtD,IAAA,wBAAgB,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;KACpF;IACD,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;AACpE,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAEK,MAAM,gBAAgB,GAAG,CAC/B,KAAoB,EACpB,SAA0B,EAC1B,SAA0B,EAC1B,KAAa,EACb,WAAwB,EACxB,SAAwB,EACxB,wBAAwB,GAAG,IAAI,EAC/B,cAAc,GAAG,IAAI,EACd,EAAE;IACT,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IAEpC,IAAA,mCAA2B,EAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAEjG,IAAA,wBAAgB,EAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,IAAI,wBAAwB,EAAE;QAC7B,uBAAuB,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,CAAC;KACpE;AACF,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B;AAEF,MAAM,iBAAiB,GAAG,CACzB,KAAoB,EACpB,SAA0B,EAC1B,SAA0B,EAC1B,OAAoB,EACpB,SAAwB,EACjB,EAAE;;IACT,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAA,OAAO,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,CAAC;IAGrE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,2BAAc,CAAC,QAAQ,CAAC,MAAiB,CAAC,CAAC,EAAE;QACzE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,0BAA2C,CAAC,CAAC;QACtG,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,4BAA6C,CAAC,CAAC;QAC9G,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;KACH;IAED,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAE3B,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;YACzC,SAAS;SACT;QAED,QAAQ,MAAM,CAAC,MAAM,EAAE;YACtB,kCAAoD;YACpD;gBACC,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,UAAU,EAAE;oBAClF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,mCAAqD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9F,IAAA,mBAAW,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBAC1E;gBACD,MAAM;YACP;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACvE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;wBACzB,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;qBACzE;oBACD,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBACvD,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,eAAiC;YACjC;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACvE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,sBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;wBACzB,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;qBACzE;oBACD,IAAA,mBAAW,EAAC,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBAChE,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,eAA+B;YAC/B;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACxE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,sBAAsC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,IAAA,mBAAW,EAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBACzE,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,eAA8B;YAC9B;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACxE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,sBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9E,IAAA,mBAAW,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBAC1E,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,gBAA+B;YAC/B;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACxE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,iBAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,IAAA,mBAAW,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBAC1E,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,eAAgC;YAChC;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACxE,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,sBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAA,mBAAW,EAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;oBACjE,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;iBACrF;gBACD,MAAM;YACP,gBAA4C;YAC5C;gBACC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAA6C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/F,IAAA,mBAAW,EAAC,OAAO,EAAE,mBAAmB,GAAG,CAAC,EAAE,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACpG,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBACtF,MAAM;SACP;KACD;AACF,CAAC,CAAC;AACK,MAAM,2BAA2B,GAAG,CAC1C,KAAoB,EACpB,SAA0B,EAC1B,SAA0B,EAC1B,OAAoB,EACpB,SAAwB,EACxB,cAAc,GAAG,IAAI,EACd,EAAE;;IACT,QAAQ,SAAS,CAAC,WAAW,EAAE;QAC9B;YACC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM;QACP;YACC,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM;QACP;YACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;gBACvE,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;aACxD;YACD,MAAM;KACP;IAED,IAAI,MAAA,SAAS,CAAC,YAAY,0CAAE,QAAQ,mBAA0C,EAAE;QAC/E,MAAM,qBAAqB,GAC1B,CAAA,MAAA,MAAA,SAAS,CAAC,mBAAmB,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,sBAA6C,CAAC,0CAC9F,cAAc,KAAI,CAAC,CAAC;QACxB,IAAA,mBAAW,EAAC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KAChG;IAED,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;QACzC,QAAQ,OAAO,CAAC,MAAM,EAAE;YACvB;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACvE,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;oBAChE,IAAI,CAAC,CAAC,MAAM,EAAE;wBACb,IAAA,kCAAkB,EAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;qBACzE;iBACD;gBACD,MAAM;YACP,0BAAgD;YAChD;gBACC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;oBAC9B,OAAO,CAAC,gBAAgB,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC;iBAC/C;gBACD,MAAM;YACP;gBACC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBACxD,IAAA,kCAAkB,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC1E,OAAO,CAAC,cAAc,EAAE,CAAC;iBACzB;gBACD,MAAM;SACP;KACD;IAGD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAA,OAAO,CAAC,eAAe,mCAAI,EAAE,CAAC,CAAC,CAAC;IACrE,KAAK,MAAM,aAAa,IAAI,OAAO,EAAE;QACpC,2BAA2B,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACjF;IAGD,IAAI,cAAc,EAAE;QAKnB,IAAA,wBAAgB,EAAC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;KACvD;AACF,CAAC,CAAC;AArEW,QAAA,2BAA2B,+BAqEtC;AAEK,MAAM,gBAAgB,GAAG,CAC/B,OAAoB,EACpB,KAAoB,EACpB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;;IACT,IAAI,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,YAAY,0CAAE,MAAM,CAAA,EAAE;QACrC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,YAAY,EAAE;YAC3C,QAAQ,KAAK,EAAE;gBACd;oBACC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;wBACzB,MAAM,oBAA2C;wBACjD,cAAc,EAAE,SAAS;wBACzB,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,eAAe,EAAE;qBAC/C,CAAC,CAAC;oBACH,MAAM;gBACP;oBACC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM;aACP;SACD;KACD;IAED,IAAI,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAE,MAAM,CAAA,EAAE;QACjC,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;YACzC,QAAQ,OAAO,CAAC,MAAM,EAAE;gBACvB;oBACC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM;gBACP;oBACC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBACpB,MAAM;gBACP;oBACC,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBAC5D,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;wBACpB,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;qBACpB;oBACD,MAAM;gBACP;oBACC,IACC,OAAO,CAAC,MAAM,eAA8C;wBAC5D,OAAO,CAAC,MAAM,uBAAsD,EACnE;wBACD,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;qBACpB;oBACD,MAAM;aACP;SACD;KACD;IAED,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACzE,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC/C,IAAA,mBAAW,EAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SAC7F;KACD;IACD,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACzE,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC/C,IAAA,mBAAW,EAAC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;SAC7F;KACD;IACD,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACxE,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,EAAE;YAC7C,IAAA,mBAAW,EACV,OAAO,EACP,SAAS,CAAC,UAAU,CAAC,eAAe,EACpC,SAAS,CAAC,UAAU,CAAC,kBAAkB,EACvC,KAAK,EACL,SAAS,EACT,SAAS,CACT,CAAC;YACF,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC/E;KACD;IAOD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAC3B,QAAQ,MAAM,CAAC,MAAM,EAAE;YACtB,kBAA8C;YAC9C;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACpE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1F;gBACD,MAAM;YACP,mBAA+C;YAC/C;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACpE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1F;gBACD,MAAM;YACP,gBAAkC;YAClC;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACnE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACP,gBAAkC;YAClC;gBACC,IAAI,OAAO,CAAC,YAAY,EAAE;oBACzB,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5E;gBACD,MAAM;YACP,gBAAgC;YAChC;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACpE,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;iBAClG;gBACD,MAAM;SACP;KACD;IAED,QAAQ,OAAO,CAAC,MAAM,EAAE;QACvB,gBAAoC;QACpC;YACC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC5F,IAAA,mBAAW,EAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACtF,MAAM;QACP,gBAAwC;QACxC;YACC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAC1F,IAAA,mBAAW,EAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC1F,MAAM;QACP,gBAA2C;QAC3C;YACC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,iBAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC;YACtF,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,GAAG,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChG,MAAM;QACP,eAAiC;QACjC;YACC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,sBAAwC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,uBAAuB,CAAC;YACzF,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9F,MAAM;QACP,kBAAwC;QACxC;YACC,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,mBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEzF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,gCAAgC,GAAG,CAAC,CAAC,CAAC;YACxG,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9F,MAAM;QACP,gBAAmC;QACnC;YACC,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,eAAe,GACpB,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACtG,IAAA,mBAAW,EAAC,OAAO,EAAE,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACtE,MAAM;KACP;AACF,CAAC,CAAC;AA3KW,QAAA,gBAAgB,oBA2K3B;AAIK,MAAM,mBAAmB,GAAG,CAClC,MAAmB,EACnB,KAAoB,EACpB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;;IACT,IAAI,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,YAAY,0CAAE,MAAM,CAAA,EAAE;QACrC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,YAAY,EAAE;YAC3C,QAAQ,KAAK,EAAE;gBACd;oBACC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,uBAA8C,CAC7D,CAAC;oBACF,MAAM;gBACP;oBACC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACP;oBACC,IACC,MAAM,CAAC,MAAM,eAAyC;wBACtD,MAAM,CAAC,MAAM,iBAA2C,EACvD;wBACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBACD,MAAM;aACP;SACD;KACD;IAED,IAAI,CAAC,CAAC,CAAA,MAAA,SAAS,CAAC,QAAQ,0CAAE,MAAM,CAAA,EAAE;QACjC,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;YACzC,QAAQ,OAAO,CAAC,MAAM,EAAE;gBACvB;oBACC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACP;oBACC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBACP;oBACC,IAAI,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;wBAC3D,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBAC/C;oBACD,MAAM;aACP;SACD;KACD;IAED,IAAI,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACxE,IAAI,SAAS,CAAC,UAAU,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC/C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;SACpF;KACD;IACD,IAAI,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvE,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,GAAG,CAAC,EAAE;YAC7C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAClF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;SACrF;KACD;IAED,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE;QAChC,QAAQ,WAAW,CAAC,MAAM,EAAE;YAC3B,kBAA8C;YAC9C;gBACC,IACC,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACnE,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EACvC;oBACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9F,CAAC;iBACF;gBACD,MAAM;YACP,mBAA+C;YAC/C;gBACC,IACC,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACnE,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EACvC;oBACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9F,CAAC;oBACF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC9F,CAAC;iBACF;gBACD,MAAM;YACP,gBAAkC;YAClC;gBACC,IACC,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;oBAClE,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EACvC;oBACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC;iBACF;gBACD,MAAM;YACP,gBAAkC;YAClC;gBACC,IAAI,MAAM,CAAC,YAAY,EAAE;oBACxB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAChF,CAAC;iBACF;gBACD,MAAM;YACP,gBAAgC;YAChC;gBACC,IACC,IAAA,uBAAe,EAAC,MAAM,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBACnE,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,EACvC;oBACD,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CACvB,CAAC,EACD,MAAM,CAAC,MAAM;wBACZ,CAAC,WAAW,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CACrF,CAAC;iBACF;gBACD,MAAM;SACP;KACD;IAED,QAAQ,MAAM,CAAC,MAAM,EAAE;QACtB,gBAAoC;QACpC;YACC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC5F,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YAC9D,MAAM;QACP,gBAAwC;QACxC;YACC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,iBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,SAAS,CAAC,UAAU,CAAC,wBAAwB,CAAC;YAC1F,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YAC9D,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAClE,MAAM;QACP,gBAA2C;QAC3C;YACC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,iBAA4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,mBAAmB,GAAG,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,cAAc,CAAC;YACtF,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;YACjE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,mBAAmB,CAAC,CAAC;YACjE,MAAM;QACP,kBAAwC;QACxC;YACC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,mBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAGxF,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,gCAAgC,GAAG,CAAC,CAAC,CAAC;YACxG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,gBAAgB,CAAC,CAAC;YAClE,MAAM;QACP,gBAAmC;QACnC;YACC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,eAAe,GACpB,eAAe,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACrG,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;YAC7D,MAAM;KACP;IAED,KAAK,MAAM,WAAW,IAAI,MAAA,MAAM,CAAC,YAAY,mCAAI,EAAE,EAAE;QACpD,QAAQ,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE;YAC5B;gBACC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;gBAC3E,MAAM;SACP;KACD;AACF,CAAC,CAAC;AAlLW,QAAA,mBAAmB,uBAkL9B;AAEF,MAAM,2BAA2B,GAAG,CACnC,aAAqB,EACrB,OAAoB,EACpB,KAAoB,EACpB,SAA0B,EAC1B,SAAwB,EACjB,EAAE;IACT,QAAQ,aAAa,EAAE;QACtB,mBAA+C;QAC/C;YACC,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAE7E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBAC9C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrF,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;YACJ,MAAM;QACP,kBAA8C;QAC9C;YACC,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC7E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBAC9C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,sBAAkD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtF,CAAC,CAAC,CAAC;YACJ,MAAM;QACP,gBAAkC;QAClC;YACC,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC5E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBAC9C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC;YACJ,MAAM;QACP,gBAAkC;QAClC;YACC,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;iBAC7B,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,iBAAmC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YACJ,MAAM;QAEP,gBAAgC;QAChC;YACC,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,SAAS,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC7E,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBAC9C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC;YAC9F,CAAC,CAAC,CAAC;YACJ,MAAM;QACP,kBAAwC;QACxC;YACC,SAAS,CAAC,UAAU,CAAC,gCAAgC,EAAE,CAAC;YACxD,KAAK;iBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;iBAC9C,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,MAAM,iBAAuC;gBAC/C,CAAC,CAAC,MAAM,mBAAyC,CAClD;iBACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,mBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnF,IAAA,mBAAW,EAAC,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,gBAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YACzF,CAAC,CAAC,CAAC;YACJ,MAAM;KACP;AACF,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAC/B,KAAoB,EACpB,IAAqB,EACrB,UAAkC,EAClC,SAAwB,EACjB,EAAE;IACT,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE;QACjC,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KACxD;IACD,IAAA,4BAAoB,EAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,IAAqB,EAAE,KAAoB,EAAE,SAAwB,EAAQ,EAAE;;IAC/G,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,aAAa,mCAAI,EAAE,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;QACnB,OAAO;KACP;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC3B,QAAQ,KAAK,CAAC,MAAM,EAAE;YACrB;gBACC,IAAA,8BAAsB,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBACtD,MAAM;SACP;KACD;AACF,CAAC,CAAC;AAbW,QAAA,gBAAgB,oBAa3B;AAEF,MAAM,sBAAsB,GAAG,CAC9B,KAAoB,EACpB,IAAqB,EACrB,OAAoB,EACpB,SAAwB,EACjB,EAAE;;IAET,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;QAC3B,QAAQ,MAAM,CAAC,MAAM,EAAE;YAYtB,gBAAmC;YACnC;gBACC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;oBACzC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9E,MAAM,WAAW,GAChB,WAAW,GAAG,CAAC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzF,IAAI,WAAW,GAAG,CAAC,EAAE;wBACpB,IAAA,mBAAW,EAAC,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;wBAC5D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;qBAC3E;iBACD;gBACD,MAAM;YACP,gBAAiC;YACjC,kBAAmC;YACnC,gBAAkC;YAClC;gBAEC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;oBACzC,MAAM,cAAc,GACnB,MAAM,CAAC,MAAM,iBAAkC;wBAC/C,MAAM,CAAC,MAAM,iBAAmC;wBAC/C,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,CAAC,CAAC;oBACN,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACnB,IAAA,mBAAW,EAAC,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;wBAC1D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;oBACvE,CAAC,CAAC,CAAC;iBACH;gBACD,MAAM;YACP,gBAAgC;YAChC;gBACC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;oBACzC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,iBAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC9D,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC3E;gBACD,MAAM;YACP,gBAAsC;YACtC;gBACC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE;oBACzC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,iBAAuC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,MAAM,CAAC,cAAc,GAAG,CAAC,MAAA,MAAM,CAAC,cAAc,mCAAI,CAAC,CAAC,GAAG,SAAS,CAAC;iBACjE;gBACD,MAAM;YACP,gBAAmC;YACnC;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;oBAC9D,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,iBAAoC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACjF,IAAA,sBAAc,EACb,OAAO,EACP,OAAO,CAAC,MAAM,GAAG,cAAc,EAC/B,OAAO,CAAC,MAAM,GAAG,cAAc,EAC/B,KAAK,EACL,IAAI,EACJ,SAAS,CACT,CAAC;oBACF,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC5E;gBACD,MAAM;YACP,gBAAoC;YACpC;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC;oBAC9D,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,iBAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/E,IAAA,mBAAW,EAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;iBAC5D;gBACD,MAAM;YACP,kBAAwC;YACxC;gBACC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;oBACnC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,mBAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpF,IAAA,uBAAe,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;iBACjE;gBACD,MAAM;YACP,kCAA6D;YAC7D;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBAC/D,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,MAAM,aAAa,GAClB,MAAM,CAAC,MAAM,mCAA8D,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrF,IAAA,mBAAW,EAAC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBAC1E,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC5E;gBACD,MAAM;YAGP;gBACC,IACC,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC;oBAC/D,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EACnC;oBACD,IAAA,mBAAW,EAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACnD,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC3E;gBACD,MAAM;SACP;KACD;IAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;QACpC,QAAQ,OAAO,CAAC,MAAM,EAAE;YACvB;gBACC,IAAI,IAAA,uBAAe,EAAC,OAAO,EAAE,IAAI,EAAE,qBAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;oBACnE,IAAA,sBAAc,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;oBACxF,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC1E;gBACD,MAAM;SACP;KACD;AACF,CAAC,CAAC","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport { updateDivineShield } from '../divine-shield';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, copyEntity, hasCorrectTribe } from '../utils';\r\nimport { updateBoardwideAuras } from './auras';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats, setEntityStats } from './stats';\r\n\r\nexport const addMinionsToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionsToAdd: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// board.splice(index, 0, ...minionsToAdd);\r\n\tfor (const minionToAdd of [...minionsToAdd].reverse()) {\r\n\t\taddMinionToBoard(board, boardHero, otherHero, index, minionToAdd, gameState, false);\r\n\t}\r\n\thandleAfterSpawnEffects(board, boardHero, minionsToAdd, gameState);\r\n};\r\n\r\nexport const addMinionToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionToAdd: BoardEntity,\r\n\tgameState: FullGameState,\r\n\tperformAfterSpawnEffects = true,\r\n\tapplySelfAuras = true,\r\n): void => {\r\n\tboard.splice(index, 0, minionToAdd);\r\n\t// Minion has already been removed from the board in the previous step\r\n\thandleAddedMinionAuraEffect(board, boardHero, otherHero, minionToAdd, gameState, applySelfAuras);\r\n\t// Important to do this here, so that \"attack immediately\" minions can be taken into account by the quests\r\n\tonMinionSummoned(boardHero, board, gameState);\r\n\thandleSpawnEffect(board, boardHero, otherHero, minionToAdd, gameState);\r\n\tif (performAfterSpawnEffects) {\r\n\t\thandleAfterSpawnEffects(board, boardHero, [minionToAdd], gameState);\r\n\t}\r\n};\r\n\r\nconst handleSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst cardIds = [spawned.cardId, ...(spawned.additionalCards ?? [])];\r\n\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\tif (cardIds.some((cardId) => WHELP_CARD_IDS.includes(cardId as CardIds))) {\r\n\t\tconst manyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps_BG22_HERO_305_Buddy);\r\n\t\tconst goldenManyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps_BG22_HERO_305_Buddy_G);\r\n\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 2, board, boardHero, gameState);\r\n\t\t});\r\n\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 4, 4, board, boardHero, gameState);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of board) {\r\n\t\t// The case for Reborns, and these shouldn't proc on themselves\r\n\t\tif (entity.entityId === spawned.entityId) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy:\r\n\t\t\tcase CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy_G:\r\n\t\t\t\tif (gameState.allCards.getCard(spawned.cardId).techLevel === boardHero.tavernTier) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy_G ? 8 : 4;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CobaltGuardian:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyStats(entity, 2, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.DeflectOBot_BGS_071:\r\n\t\t\tcase CardIds.DeflectOBot_TB_BaconUps_123:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.DeflectOBot_TB_BaconUps_123 ? 4 : 2;\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyStats(entity, statsBonus, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Bigfernal_BGS_204:\r\n\t\t\tcase CardIds.Bigfernal_TB_BaconUps_304:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.DEMON, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.Bigfernal_TB_BaconUps_304 ? 2 : 1;\r\n\t\t\t\t\tmodifyStats(entity, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MamaBear_BGS_021:\r\n\t\t\tcase CardIds.MamaBear_TB_BaconUps_090:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.MamaBear_TB_BaconUps_090 ? 8 : 4;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PapaBear_BG27_509:\r\n\t\t\tcase CardIds.PapaBear_BG27_509_G:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PapaBear_BG27_509_G ? 16 : 8;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackLeader_BGS_017:\r\n\t\t\tcase CardIds.PackLeader_TB_BaconUps_086:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PackLeader_TB_BaconUps_086 ? 4 : 2;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ThunderingAbomination_BG30_124:\r\n\t\t\tcase CardIds.ThunderingAbomination_BG30_124_G:\r\n\t\t\t\tconst abomStatsMultiplier = entity.cardId === CardIds.ThunderingAbomination_BG30_124_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(spawned, abomStatsMultiplier * 3, abomStatsMultiplier * 3, board, boardHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, boardHero, otherHero);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\nexport const handleAddedMinionAuraEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n\tapplySelfAuras = true,\r\n): void => {\r\n\tswitch (boardHero.heroPowerId) {\r\n\t\tcase CardIds.SproutItOut:\r\n\t\t\tspawned.taunt = true;\r\n\t\t\tmodifyStats(spawned, 1, 2, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.KurtrusAshfallen_CloseThePortal:\r\n\t\t\tmodifyStats(spawned, 2, 2, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Tinker_TB_BaconShop_HP_015:\r\n\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\tmodifyStats(spawned, 2, 0, board, boardHero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (boardHero.questRewards?.includes(CardIds.TumblingDisaster_BG28_Reward_505)) {\r\n\t\tconst tumblingDisasterBonus =\r\n\t\t\tboardHero.questRewardEntities?.find((e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505)\r\n\t\t\t\t?.scriptDataNum1 || 1;\r\n\t\tmodifyStats(spawned, tumblingDisasterBonus, tumblingDisasterBonus, board, boardHero, gameState);\r\n\t}\r\n\r\n\tfor (const trinket of boardHero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.BlingtronsSunglasses_BG30_MagicItem_978:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tconst target = pickRandom(board.filter((e) => !e.divineShield));\r\n\t\t\t\t\tif (!!target) {\r\n\t\t\t\t\t\tupdateDivineShield(target, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\t\tif (!trinket.rememberedMinion) {\r\n\t\t\t\t\ttrinket.rememberedMinion = copyEntity(spawned);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\tif (trinket.scriptDataNum1 > 0 && !spawned.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(spawned, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Apply auras to board\r\n\tconst cardIds = [spawned.cardId, ...(spawned.additionalCards ?? [])];\r\n\tfor (const spawnedCardId of cardIds) {\r\n\t\thandleMinionAddedAuraEffect(spawnedCardId, spawned, board, boardHero, gameState);\r\n\t}\r\n\r\n\t// When we want to summon an \"exact copy\", we need to make sure we don't apply the aura twice\r\n\tif (applySelfAuras) {\r\n\t\t// The board here already contains the new minion\r\n\t\t// TODO: what if the additional part is a potential target for the aura effect?\r\n\t\t// 2024-08-27: changing the order to first handleMinionAddedAuraEffect so that the automatons get boosted,\r\n\t\t// then apply the aura\r\n\t\tapplyAurasToSelf(spawned, board, boardHero, gameState);\r\n\t}\r\n};\r\n\r\nexport const applyAurasToSelf = (\r\n\tspawned: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (!!boardHero.questRewards?.length) {\r\n\t\tfor (const quest of boardHero.questRewards) {\r\n\t\t\tswitch (quest) {\r\n\t\t\t\tcase CardIds.VolatileVenom:\r\n\t\t\t\t\tspawned.attack += 7;\r\n\t\t\t\t\tspawned.health += 7;\r\n\t\t\t\t\tspawned.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\t\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.TheSmokingGun:\r\n\t\t\t\t\tspawned.attack += 4;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!!boardHero.trinkets?.length) {\r\n\t\tfor (const trinket of boardHero.trinkets) {\r\n\t\t\tswitch (trinket.cardId) {\r\n\t\t\t\tcase CardIds.FeralTalisman_BG30_MagicItem_880:\r\n\t\t\t\t\tspawned.attack += 2;\r\n\t\t\t\t\tspawned.health += 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FeralTalisman_FeralTalismanToken_BG30_MagicItem_880t:\r\n\t\t\t\t\tspawned.attack += 6;\r\n\t\t\t\t\tspawned.health += 4;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.HordeKeychainToken_BG30_MagicItem_843t:\r\n\t\t\t\t\tif (gameState.cardsData.getTavernLevel(spawned.cardId) <= 3) {\r\n\t\t\t\t\t\tspawned.attack += 7;\r\n\t\t\t\t\t\tspawned.health += 5;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FlagbearerPortrait_BG30_MagicItem_921:\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tspawned.cardId === CardIds.Scallywag_SkyPirateToken_BGS_061t ||\r\n\t\t\t\t\t\tspawned.cardId === CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tspawned.attack += 6;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.UNDEAD, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tmodifyStats(spawned, boardHero.globalInfo.UndeadAttackBonus, 0, board, boardHero, gameState);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.PIRATE, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.PirateAttackBonus > 0) {\r\n\t\t\tmodifyStats(spawned, boardHero.globalInfo.PirateAttackBonus, 0, board, boardHero, gameState);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.GoldrinnBuffAtk > 0) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tspawned,\r\n\t\t\t\tboardHero.globalInfo.GoldrinnBuffAtk,\r\n\t\t\t\tboardHero.globalInfo.GoldrinnBuffHealth,\r\n\t\t\t\tboard,\r\n\t\t\t\tboardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tgameState.spectator.registerPowerTarget(boardHero, spawned, board, null, null);\r\n\t\t}\r\n\t}\r\n\r\n\t// In case Putricide spawns a stictched minion whose stitched part creates an aura effect\r\n\t// const potentialAuraSources: { cardId: string; entityId: number }[] = [\r\n\t// \t{ cardId: spawned.cardId, entityId: spawned.entityId },\r\n\t// \t...(spawned.additionalCards ?? []).map((cardId) => ({ cardId, entityId: spawned.entityId })),\r\n\t// ];\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.MURLOC, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.PIRATE, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t\tspawned.health += entity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.DEMON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.Kathranatir_BG21_039_G ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\t\tif (spawned.divineShield) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += (entity.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (spawned.cardId) {\r\n\t\tcase CardIds.EternalKnight_BG25_008:\r\n\t\tcase CardIds.EternalKnight_BG25_008_G:\r\n\t\t\tconst multiplierKnight = spawned.cardId === CardIds.EternalKnight_BG25_008_G ? 2 : 1;\r\n\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\tmodifyStats(spawned, statsBonusKnight, statsBonusKnight, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555:\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555_G:\r\n\t\t\tconst multiplierFungus = spawned.cardId === CardIds.EnsorcelledFungus_BG28_555_G ? 2 : 1;\r\n\t\t\tconst statsBonusFungus = multiplierFungus * boardHero.globalInfo.TavernSpellsCastThisGame;\r\n\t\t\tmodifyStats(spawned, statsBonusFungus, 2 * statsBonusFungus, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537:\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537_G:\r\n\t\t\tconst multiplierFrostling = spawned.cardId === CardIds.FlourishingFrostling_BG26_537_G ? 2 : 1;\r\n\t\t\tconst statsBonusFrostling = multiplierFrostling * boardHero.globalInfo.FrostlingBonus;\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusFrostling, statsBonusFrostling, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SaltyLooter_BGS_081:\r\n\t\tcase CardIds.SaltyLooter_TB_BaconUps_143:\r\n\t\t\tconst multiplierLooter = spawned.cardId === CardIds.SaltyLooter_TB_BaconUps_143 ? 2 : 1;\r\n\t\t\tconst statsBonusLooter = multiplierLooter * boardHero.globalInfo.PiratesSummonedThisGame;\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusLooter, 2 * multiplierLooter, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tconst multiplierAstral = spawned.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t// Don't count the yourself\r\n\t\t\tconst statsBonusAstral = multiplierAstral * (boardHero.globalInfo.AstralAutomatonsSummonedThisGame - 1);\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusAstral, 1 * statsBonusAstral, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RotHideGnoll_BG25_013:\r\n\t\tcase CardIds.RotHideGnoll_BG25_013_G:\r\n\t\t\tconst multiplierGnoll = spawned.cardId === CardIds.RotHideGnoll_BG25_013_G ? 2 : 1;\r\n\t\t\tconst statsBonusGnoll =\r\n\t\t\t\tmultiplierGnoll * gameState.sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;\r\n\t\t\tmodifyStats(spawned, statsBonusGnoll, 0, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\n// Introduced for Rapid Reanimation: since we will \"addMinionToBoard\" the minion afterwards, the auras will\r\n// be re-applied then, so we need to remove them first\r\nexport const removeAurasFromSelf = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (!!boardHero.questRewards?.length) {\r\n\t\tfor (const quest of boardHero.questRewards) {\r\n\t\t\tswitch (quest) {\r\n\t\t\t\tcase CardIds.VolatileVenom:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 7);\r\n\t\t\t\t\tentity.enchantments = entity.enchantments.filter(\r\n\t\t\t\t\t\t(e) => e.cardId !== CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.TheSmokingGun:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FlagbearerPortrait_BG30_MagicItem_921:\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tentity.cardId === CardIds.SkyPirateFlagbearer_BG30_119 ||\r\n\t\t\t\t\t\tentity.cardId === CardIds.SkyPirateFlagbearer_BG30_119_G\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 8);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!!boardHero.trinkets?.length) {\r\n\t\tfor (const trinket of boardHero.trinkets) {\r\n\t\t\tswitch (trinket.cardId) {\r\n\t\t\t\tcase CardIds.FeralTalisman_BG30_MagicItem_880:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 2);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FeralTalisman_FeralTalismanToken_BG30_MagicItem_880t:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 6);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 4);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.HordeKeychainToken_BG30_MagicItem_843t:\r\n\t\t\t\t\tif (gameState.cardsData.getTavernLevel(entity.cardId) <= 3) {\r\n\t\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\t\tentity.health = Math.max(1, entity.health - 5);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasCorrectTribe(entity, boardHero, Race.UNDEAD, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tentity.attack = Math.max(0, entity.attack - boardHero.globalInfo.UndeadAttackBonus);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(entity, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.GoldrinnBuffAtk > 0) {\r\n\t\t\tentity.attack = Math.max(0, entity.attack - boardHero.globalInfo.GoldrinnBuffAtk);\r\n\t\t\tentity.health = Math.max(1, entity.health - boardHero.globalInfo.GoldrinnBuffHealth);\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const boardEntity of board) {\r\n\t\tswitch (boardEntity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.MURLOC, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.PIRATE, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tentity.health = Math.max(\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tentity.health - (boardEntity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.DEMON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.Kathranatir_BG21_039_G ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\t\tif (entity.divineShield) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack -\r\n\t\t\t\t\t\t\t(boardEntity.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.EternalKnight_BG25_008:\r\n\t\tcase CardIds.EternalKnight_BG25_008_G:\r\n\t\t\tconst multiplierKnight = entity.cardId === CardIds.EternalKnight_BG25_008_G ? 2 : 1;\r\n\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusKnight);\r\n\t\t\tentity.health = Math.max(1, entity.health - statsBonusKnight);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555:\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555_G:\r\n\t\t\tconst multiplierFungus = entity.cardId === CardIds.EnsorcelledFungus_BG28_555_G ? 2 : 1;\r\n\t\t\tconst statsBonusFungus = multiplierFungus * boardHero.globalInfo.TavernSpellsCastThisGame;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusFungus);\r\n\t\t\tentity.health = Math.max(1, entity.health - 2 * statsBonusFungus);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537:\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537_G:\r\n\t\t\tconst multiplierFrostling = entity.cardId === CardIds.FlourishingFrostling_BG26_537_G ? 2 : 1;\r\n\t\t\tconst statsBonusFrostling = multiplierFrostling * boardHero.globalInfo.FrostlingBonus;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusFrostling);\r\n\t\t\tentity.health = Math.max(1, entity.health - statsBonusFrostling);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tconst multiplierAstral = entity.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t// We remove 1 because the AstralAutomatonsSummonedThisGame also includes the current one\r\n\t\t\t// and ancestral automaton only counts \"other\" automatons\r\n\t\t\tconst statsBonusAstral = multiplierAstral * (boardHero.globalInfo.AstralAutomatonsSummonedThisGame - 1);\r\n\t\t\tentity.attack = Math.max(0, entity.attack - 2 * statsBonusAstral);\r\n\t\t\tentity.health = Math.max(1, entity.health - 1 * statsBonusAstral);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RotHideGnoll_BG25_013:\r\n\t\tcase CardIds.RotHideGnoll_BG25_013_G:\r\n\t\t\tconst multiplierGnoll = entity.cardId === CardIds.RotHideGnoll_BG25_013_G ? 2 : 1;\r\n\t\t\tconst statsBonusGnoll =\r\n\t\t\t\tmultiplierGnoll * gameState.sharedState.deaths.filter((e) => e.friendly === entity.friendly).length;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusGnoll);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tfor (const enchantment of entity.enchantments ?? []) {\r\n\t\tswitch (enchantment?.cardId) {\r\n\t\t\tcase CardIds.TavernLighting_TavernLightsEnchantment:\r\n\t\t\t\tentity.attack = Math.max(0, entity.attack - enchantment.tagScriptDataNum1);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleMinionAddedAuraEffect = (\r\n\tspawnedCardId: string,\r\n\tspawned: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tswitch (spawnedCardId) {\r\n\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, gameState.allCards))\r\n\t\t\t\t// Other\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t\te.health += spawned.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.Kathranatir_BG21_039_G ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => e.divineShield)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += (spawned.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tboardHero.globalInfo.AstralAutomatonsSummonedThisGame++;\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId === CardIds.AstralAutomaton_BG_TTN_401 ||\r\n\t\t\t\t\t\te.cardId === CardIds.AstralAutomaton_BG_TTN_401_G,\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tconst multiplierAstral = e.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t\t\tmodifyStats(e, 2 * multiplierAstral, 1 * multiplierAstral, board, boardHero, gameState);\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffects = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tallSpawned: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tfor (const spawned of allSpawned) {\r\n\t\thandleAfterSpawnEffect(board, hero, spawned, gameState);\r\n\t}\r\n\tupdateBoardwideAuras(board, hero, gameState);\r\n};\r\n\r\nexport const onMinionSummoned = (hero: BgsPlayerEntity, board: BoardEntity[], gameState: FullGameState): void => {\r\n\tconst quests = hero.questEntities ?? [];\r\n\tif (!quests.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.AssembleALineup:\r\n\t\t\t\tonQuestProgressUpdated(hero, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// console.debug('after spawn', stringifySimpleCard(spawned, allCards), stringifySimple(board, allCards));\r\n\tfor (const entity of board) {\r\n\t\tswitch (entity.cardId) {\r\n\t\t\t// case CardIds.MurlocTidecallerLegacy:\r\n\t\t\t// case CardIds.MurlocTidecallerCore:\r\n\t\t\t// \tconst multiplier = entity.cardId === CardIds.MurlocTidecallerBattlegrounds ? 2 : 1;\r\n\t\t\t// \tconst buffAmount =\r\n\t\t\t// \t\tmultiplier * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t// \tif (buffAmount > 0) {\r\n\t\t\t// \t\tmodifyAttack(entity, buffAmount, board, allCards);\r\n\t\t\t// \t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t// \t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.Swampstriker_BG22_401:\r\n\t\t\tcase CardIds.Swampstriker_BG22_401_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst multiplier2 = entity.cardId === CardIds.Swampstriker_BG22_401_G ? 2 : 1;\r\n\t\t\t\t\tconst buffAmount2 =\r\n\t\t\t\t\t\tmultiplier2 * (hasCorrectTribe(spawned, hero, Race.MURLOC, gameState.allCards) ? 1 : 0);\r\n\t\t\t\t\tif (buffAmount2 > 0) {\r\n\t\t\t\t\t\tmodifyStats(entity, buffAmount2, 0, board, hero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Felstomper_BG25_042:\r\n\t\t\tcase CardIds.Felstomper_BG25_042_G:\r\n\t\t\tcase CardIds.Deadstomper_BG28_634:\r\n\t\t\tcase CardIds.Deadstomper_BG28_634_G:\r\n\t\t\t\t// console.debug('felstomper');\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst felstomperBuff =\r\n\t\t\t\t\t\tentity.cardId === CardIds.Felstomper_BG25_042_G ||\r\n\t\t\t\t\t\tentity.cardId === CardIds.Deadstomper_BG28_634_G\r\n\t\t\t\t\t\t\t? 6\r\n\t\t\t\t\t\t\t: 3;\r\n\t\t\t\t\tboard.forEach((e) => {\r\n\t\t\t\t\t\tmodifyStats(e, felstomperBuff, 0, board, hero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, e, board, null, null);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.XyloBones_BG26_172:\r\n\t\t\tcase CardIds.XyloBones_BG26_172_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst xylobonesBuff = entity.cardId === CardIds.XyloBones_BG26_172_G ? 4 : 2;\r\n\t\t\t\t\tmodifyStats(entity, 0, xylobonesBuff, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.OctosariWrapGod_BG26_804:\r\n\t\t\tcase CardIds.OctosariWrapGod_BG26_804_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst octoStats = entity.cardId === CardIds.OctosariWrapGod_BG26_804_G ? 4 : 2;\r\n\t\t\t\t\tentity.scriptDataNum1 = (entity.scriptDataNum1 ?? 0) + octoStats;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BananaSlamma_BG26_802:\r\n\t\t\tcase CardIds.BananaSlamma_BG26_802_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.BEAST, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst bananaStatBuff = entity.cardId === CardIds.BananaSlamma_BG26_802_G ? 3 : 2;\r\n\t\t\t\t\tsetEntityStats(\r\n\t\t\t\t\t\tspawned,\r\n\t\t\t\t\t\tspawned.attack * bananaStatBuff,\r\n\t\t\t\t\t\tspawned.health * bananaStatBuff,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.HungrySnapjaw_BG26_370:\r\n\t\t\tcase CardIds.HungrySnapjaw_BG26_370_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.BEAST, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst snapjawBuff = entity.cardId === CardIds.HungrySnapjaw_BG26_370_G ? 2 : 1;\r\n\t\t\t\t\tmodifyStats(entity, 0, snapjawBuff, board, hero, gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ObserverOfMyths_BG_TTN_078:\r\n\t\t\tcase CardIds.ObserverOfMyths_BG_TTN_078_G:\r\n\t\t\t\tif (spawned.attack > entity.attack) {\r\n\t\t\t\t\tconst observerBuff = entity.cardId === CardIds.ObserverOfMyths_BG_TTN_078_G ? 2 : 1;\r\n\t\t\t\t\taddStatsToBoard(entity, board, hero, observerBuff, 0, gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy:\r\n\t\t\tcase CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.DRAGON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst valithriaBuff =\r\n\t\t\t\t\t\tentity.cardId === CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy_G ? 3 : 2;\r\n\t\t\t\t\tmodifyStats(entity, valithriaBuff, valithriaBuff, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Putricide-only\r\n\t\t\tcase CardIds.ArmsDealer_BG26_RLK_824:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tmodifyStats(spawned, 1, 0, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const trinket of hero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.SlammaSticker_BG30_MagicItem_540:\r\n\t\t\t\tif (hasCorrectTribe(spawned, hero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tsetEntityStats(spawned, spawned.attack * 2, spawned.health * 2, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(hero, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"add-minion-to-board.js","sourceRoot":"","sources":["../../src/simulation/add-minion-to-board.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { hasAfterOtherSpawned, hasOnDespawned, hasOnOtherSpawned, hasOnSpawned } from '../cards/card.interface';\r\nimport { WHELP_CARD_IDS } from '../cards/cards-data';\r\nimport { cardMappings } from '../cards/impl/_card-mappings';\r\nimport { updateDivineShield } from '../keywords/divine-shield';\r\nimport { updateTaunt } from '../keywords/taunt';\r\nimport { pickRandom } from '../services/utils';\r\nimport { addStatsToBoard, copyEntity, hasCorrectTribe } from '../utils';\r\nimport { updateBoardwideAuras } from './auras';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats, setEntityStats } from './stats';\r\n\r\nexport const addMinionsToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionsToAdd: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// board.splice(index, 0, ...minionsToAdd);\r\n\tfor (const minionToAdd of [...minionsToAdd].reverse()) {\r\n\t\taddMinionToBoard(board, boardHero, otherHero, index, minionToAdd, gameState, false);\r\n\t}\r\n\thandleAfterSpawnEffects(board, boardHero, minionsToAdd, gameState);\r\n};\r\n\r\nexport const addMinionToBoard = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tindex: number,\r\n\tminionToAdd: BoardEntity,\r\n\tgameState: FullGameState,\r\n\tperformAfterSpawnEffects = true,\r\n\tapplySelfAuras = true,\r\n): void => {\r\n\tboard.splice(index, 0, minionToAdd);\r\n\t// Minion has already been removed from the board in the previous step\r\n\thandleAddedMinionAuraEffect(board, boardHero, otherHero, minionToAdd, gameState, applySelfAuras);\r\n\t// Important to do this here, so that \"attack immediately\" minions can be taken into account by the quests\r\n\tonMinionSummoned(boardHero, board, gameState);\r\n\thandleSpawnEffect(board, boardHero, otherHero, minionToAdd, gameState);\r\n\tif (performAfterSpawnEffects) {\r\n\t\thandleAfterSpawnEffects(board, boardHero, [minionToAdd], gameState);\r\n\t}\r\n};\r\n\r\nconst handleSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tconst cardIds = [spawned.cardId, ...(spawned.additionalCards ?? [])];\r\n\r\n\t// https://twitter.com/LoewenMitchell/status/1491879869457879040\r\n\tif (cardIds.some((cardId) => WHELP_CARD_IDS.includes(cardId as CardIds))) {\r\n\t\tconst manyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps_BG22_HERO_305_Buddy);\r\n\t\tconst goldenManyWhelps = board.filter((entity) => entity.cardId === CardIds.ManyWhelps_BG22_HERO_305_Buddy_G);\r\n\t\tmanyWhelps.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 2, 2, board, boardHero, gameState);\r\n\t\t});\r\n\t\tgoldenManyWhelps.forEach((entity) => {\r\n\t\t\tmodifyStats(entity, 4, 4, board, boardHero, gameState);\r\n\t\t});\r\n\t}\r\n\r\n\tfor (const entity of board) {\r\n\t\t// The case for Reborns, and these shouldn't proc on themselves\r\n\t\tif (entity.entityId === spawned.entityId) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy:\r\n\t\t\tcase CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy_G:\r\n\t\t\t\tif (gameState.allCards.getCard(spawned.cardId).techLevel === boardHero.tavernTier) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.BabyYshaarj_TB_BaconShop_HERO_92_Buddy_G ? 8 : 4;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CobaltGuardian:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyStats(entity, 2, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.DeflectOBot_BGS_071:\r\n\t\t\tcase CardIds.DeflectOBot_TB_BaconUps_123:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.DeflectOBot_TB_BaconUps_123 ? 4 : 2;\r\n\t\t\t\t\tif (!entity.divineShield) {\r\n\t\t\t\t\t\tupdateDivineShield(entity, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodifyStats(entity, statsBonus, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Bigfernal_BGS_204:\r\n\t\t\tcase CardIds.Bigfernal_TB_BaconUps_304:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.DEMON, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.Bigfernal_TB_BaconUps_304 ? 2 : 1;\r\n\t\t\t\t\tmodifyStats(entity, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.MamaBear_BGS_021:\r\n\t\t\tcase CardIds.MamaBear_TB_BaconUps_090:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.MamaBear_TB_BaconUps_090 ? 8 : 4;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PapaBear_BG27_509:\r\n\t\t\tcase CardIds.PapaBear_BG27_509_G:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PapaBear_BG27_509_G ? 16 : 8;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, statsBonus, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.PackLeader_BGS_017:\r\n\t\t\tcase CardIds.PackLeader_TB_BaconUps_086:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tconst statsBonus = entity.cardId === CardIds.PackLeader_TB_BaconUps_086 ? 4 : 2;\r\n\t\t\t\t\tmodifyStats(spawned, statsBonus, 0, board, boardHero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, boardHero, otherHero);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ThunderingAbomination_BG30_124:\r\n\t\t\tcase CardIds.ThunderingAbomination_BG30_124_G:\r\n\t\t\t\tconst abomStatsMultiplier = entity.cardId === CardIds.ThunderingAbomination_BG30_124_G ? 2 : 1;\r\n\t\t\t\tmodifyStats(spawned, abomStatsMultiplier * 3, abomStatsMultiplier * 3, board, boardHero, gameState);\r\n\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, boardHero, otherHero);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\nexport const handleAddedMinionAuraEffect = (\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\totherHero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n\tapplySelfAuras = true,\r\n): void => {\r\n\tswitch (boardHero.heroPowerId) {\r\n\t\tcase CardIds.SproutItOut:\r\n\t\t\tupdateTaunt(spawned, true, board, boardHero, otherHero, gameState);\r\n\t\t\tmodifyStats(spawned, 1, 2, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.KurtrusAshfallen_CloseThePortal:\r\n\t\t\tmodifyStats(spawned, 2, 2, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Tinker_TB_BaconShop_HP_015:\r\n\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\tmodifyStats(spawned, 2, 0, board, boardHero, gameState);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (boardHero.questRewards?.includes(CardIds.TumblingDisaster_BG28_Reward_505)) {\r\n\t\tconst tumblingDisasterBonus =\r\n\t\t\tboardHero.questRewardEntities?.find((e) => e.cardId === CardIds.TumblingDisaster_BG28_Reward_505)\r\n\t\t\t\t?.scriptDataNum1 || 1;\r\n\t\tmodifyStats(spawned, tumblingDisasterBonus, tumblingDisasterBonus, board, boardHero, gameState);\r\n\t}\r\n\r\n\tfor (const trinket of boardHero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.BlingtronsSunglasses_BG30_MagicItem_978:\r\n\t\t\t\tif (hasCorrectTribe(spawned, boardHero, Race.MECH, gameState.allCards)) {\r\n\t\t\t\t\tconst target = pickRandom(board.filter((e) => !e.divineShield));\r\n\t\t\t\t\tif (!!target) {\r\n\t\t\t\t\t\tupdateDivineShield(target, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\r\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\r\n\t\t\t\tif (!trinket.rememberedMinion) {\r\n\t\t\t\t\ttrinket.rememberedMinion = copyEntity(spawned);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ReinforcedShield_BG30_MagicItem_886:\r\n\t\t\t\tif (trinket.scriptDataNum1 > 0 && !spawned.divineShield) {\r\n\t\t\t\t\tupdateDivineShield(spawned, board, boardHero, otherHero, true, gameState);\r\n\t\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Apply auras to board\r\n\tconst cardIds = [spawned.cardId, ...(spawned.additionalCards ?? [])];\r\n\tfor (const spawnedCardId of cardIds) {\r\n\t\thandleMinionAddedAuraEffect(spawnedCardId, spawned, board, boardHero, gameState);\r\n\t}\r\n\r\n\t// When we want to summon an \"exact copy\", we need to make sure we don't apply the aura twice\r\n\tif (applySelfAuras) {\r\n\t\t// The board here already contains the new minion\r\n\t\t// TODO: what if the additional part is a potential target for the aura effect?\r\n\t\t// 2024-08-27: changing the order to first handleMinionAddedAuraEffect so that the automatons get boosted,\r\n\t\t// then apply the aura\r\n\t\tapplyAurasToSelf(spawned, board, boardHero, gameState);\r\n\t}\r\n};\r\n\r\nexport const applyAurasToSelf = (\r\n\tspawned: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (!!boardHero.questRewards?.length) {\r\n\t\tfor (const quest of boardHero.questRewards) {\r\n\t\t\tswitch (quest) {\r\n\t\t\t\tcase CardIds.VolatileVenom:\r\n\t\t\t\t\tspawned.attack += 7;\r\n\t\t\t\t\tspawned.health += 7;\r\n\t\t\t\t\tspawned.enchantments.push({\r\n\t\t\t\t\t\tcardId: CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t\toriginEntityId: undefined,\r\n\t\t\t\t\t\ttiming: gameState.sharedState.currentEntityId++,\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.TheSmokingGun:\r\n\t\t\t\t\tspawned.attack += 4;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!!boardHero.trinkets?.length) {\r\n\t\tfor (const trinket of boardHero.trinkets) {\r\n\t\t\tswitch (trinket.cardId) {\r\n\t\t\t\tcase CardIds.FeralTalisman_BG30_MagicItem_880:\r\n\t\t\t\t\tspawned.attack += 2;\r\n\t\t\t\t\tspawned.health += 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FeralTalisman_FeralTalismanToken_BG30_MagicItem_880t:\r\n\t\t\t\t\tspawned.attack += 6;\r\n\t\t\t\t\tspawned.health += 4;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.HordeKeychainToken_BG30_MagicItem_843t:\r\n\t\t\t\t\tif (gameState.cardsData.getTavernLevel(spawned.cardId) <= 3) {\r\n\t\t\t\t\t\tspawned.attack += 7;\r\n\t\t\t\t\t\tspawned.health += 5;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FlagbearerPortrait_BG30_MagicItem_921:\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tspawned.cardId === CardIds.Scallywag_SkyPirateToken_BGS_061t ||\r\n\t\t\t\t\t\tspawned.cardId === CardIds.Scallywag_SkyPirateToken_TB_BaconUps_141t\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tspawned.attack += 6;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.UNDEAD, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tmodifyStats(spawned, boardHero.globalInfo.UndeadAttackBonus, 0, board, boardHero, gameState);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.PIRATE, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.PirateAttackBonus > 0) {\r\n\t\t\tmodifyStats(spawned, boardHero.globalInfo.PirateAttackBonus, 0, board, boardHero, gameState);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(spawned, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.GoldrinnBuffAtk > 0) {\r\n\t\t\tmodifyStats(\r\n\t\t\t\tspawned,\r\n\t\t\t\tboardHero.globalInfo.GoldrinnBuffAtk,\r\n\t\t\t\tboardHero.globalInfo.GoldrinnBuffHealth,\r\n\t\t\t\tboard,\r\n\t\t\t\tboardHero,\r\n\t\t\t\tgameState,\r\n\t\t\t);\r\n\t\t\tgameState.spectator.registerPowerTarget(boardHero, spawned, board, null, null);\r\n\t\t}\r\n\t}\r\n\r\n\t// In case Putricide spawns a stictched minion whose stitched part creates an aura effect\r\n\t// const potentialAuraSources: { cardId: string; entityId: number }[] = [\r\n\t// \t{ cardId: spawned.cardId, entityId: spawned.entityId },\r\n\t// \t...(spawned.additionalCards ?? []).map((cardId) => ({ cardId, entityId: spawned.entityId })),\r\n\t// ];\r\n\tfor (const entity of board) {\r\n\t\tconst onOtherSpawnedImpl = cardMappings[entity.cardId];\r\n\t\tif (hasOnOtherSpawned(onOtherSpawnedImpl)) {\r\n\t\t\tonOtherSpawnedImpl.onOtherSpawned(entity, {\r\n\t\t\t\tspawned: spawned,\r\n\t\t\t\tplayerEntity: boardHero,\r\n\t\t\t\tplayerBoard: board,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\t\tswitch (entity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.MURLOC, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.PIRATE, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t\tspawned.health += entity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.DEMON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.Kathranatir_BG21_039_G ? 2 : 1;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\t\tif (spawned.divineShield) {\r\n\t\t\t\t\tspawned.attack += entity.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, boardHero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tspawned.attack += (entity.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tconst onSpawnedImpl = cardMappings[spawned.cardId];\r\n\tif (hasOnSpawned(onSpawnedImpl)) {\r\n\t\tonSpawnedImpl.onSpawned(spawned, {\r\n\t\t\tplayerEntity: boardHero,\r\n\t\t\tplayerBoard: board,\r\n\t\t\tgameState,\r\n\t\t});\r\n\t}\r\n\tswitch (spawned.cardId) {\r\n\t\tcase CardIds.EternalKnight_BG25_008:\r\n\t\tcase CardIds.EternalKnight_BG25_008_G:\r\n\t\t\tconst multiplierKnight = spawned.cardId === CardIds.EternalKnight_BG25_008_G ? 2 : 1;\r\n\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\tmodifyStats(spawned, statsBonusKnight, statsBonusKnight, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555:\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555_G:\r\n\t\t\tconst multiplierFungus = spawned.cardId === CardIds.EnsorcelledFungus_BG28_555_G ? 2 : 1;\r\n\t\t\tconst statsBonusFungus = multiplierFungus * boardHero.globalInfo.TavernSpellsCastThisGame;\r\n\t\t\tmodifyStats(spawned, statsBonusFungus, 2 * statsBonusFungus, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537:\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537_G:\r\n\t\t\tconst multiplierFrostling = spawned.cardId === CardIds.FlourishingFrostling_BG26_537_G ? 2 : 1;\r\n\t\t\tconst statsBonusFrostling = multiplierFrostling * boardHero.globalInfo.FrostlingBonus;\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusFrostling, statsBonusFrostling, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.SaltyLooter_BGS_081:\r\n\t\tcase CardIds.SaltyLooter_TB_BaconUps_143:\r\n\t\t\tconst multiplierLooter = spawned.cardId === CardIds.SaltyLooter_TB_BaconUps_143 ? 2 : 1;\r\n\t\t\tconst statsBonusLooter = multiplierLooter * boardHero.globalInfo.PiratesSummonedThisGame;\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusLooter, 2 * multiplierLooter, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tconst multiplierAstral = spawned.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t// Don't count the yourself\r\n\t\t\tconst statsBonusAstral = multiplierAstral * (boardHero.globalInfo.AstralAutomatonsSummonedThisGame - 1);\r\n\t\t\tmodifyStats(spawned, 2 * statsBonusAstral, 2 * statsBonusAstral, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RotHideGnoll_BG25_013:\r\n\t\tcase CardIds.RotHideGnoll_BG25_013_G:\r\n\t\t\tconst multiplierGnoll = spawned.cardId === CardIds.RotHideGnoll_BG25_013_G ? 2 : 1;\r\n\t\t\tconst statsBonusGnoll =\r\n\t\t\t\tmultiplierGnoll * gameState.sharedState.deaths.filter((e) => e.friendly === spawned.friendly).length;\r\n\t\t\tmodifyStats(spawned, statsBonusGnoll, 0, board, boardHero, gameState);\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\n// Introduced for Rapid Reanimation: since we will \"addMinionToBoard\" the minion afterwards, the auras will\r\n// be re-applied then, so we need to remove them first\r\nexport const removeAurasFromSelf = (\r\n\tentity: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tif (!!boardHero.questRewards?.length) {\r\n\t\tfor (const quest of boardHero.questRewards) {\r\n\t\t\tswitch (quest) {\r\n\t\t\t\tcase CardIds.VolatileVenom:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 7);\r\n\t\t\t\t\tentity.enchantments = entity.enchantments.filter(\r\n\t\t\t\t\t\t(e) => e.cardId !== CardIds.VolatileVenom_VolatileEnchantment,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.TheSmokingGun:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FlagbearerPortrait_BG30_MagicItem_921:\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tentity.cardId === CardIds.SkyPirateFlagbearer_BG30_119 ||\r\n\t\t\t\t\t\tentity.cardId === CardIds.SkyPirateFlagbearer_BG30_119_G\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 8);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (!!boardHero.trinkets?.length) {\r\n\t\tfor (const trinket of boardHero.trinkets) {\r\n\t\t\tswitch (trinket.cardId) {\r\n\t\t\t\tcase CardIds.FeralTalisman_BG30_MagicItem_880:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 2);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.FeralTalisman_FeralTalismanToken_BG30_MagicItem_880t:\r\n\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 6);\r\n\t\t\t\t\tentity.health = Math.max(1, entity.health - 4);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CardIds.HordeKeychainToken_BG30_MagicItem_843t:\r\n\t\t\t\t\tif (gameState.cardsData.getTavernLevel(entity.cardId) <= 3) {\r\n\t\t\t\t\t\tentity.attack = Math.max(0, entity.attack - 7);\r\n\t\t\t\t\t\tentity.health = Math.max(1, entity.health - 5);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tconst onDespawnedImpl = cardMappings[entity.cardId];\r\n\tif (hasOnDespawned(onDespawnedImpl)) {\r\n\t\tonDespawnedImpl.onDespawned(entity, {\r\n\t\t\tplayerEntity: boardHero,\r\n\t\t\tplayerBoard: board,\r\n\t\t\tgameState,\r\n\t\t});\r\n\t}\r\n\r\n\tif (hasCorrectTribe(entity, boardHero, Race.UNDEAD, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.UndeadAttackBonus > 0) {\r\n\t\t\tentity.attack = Math.max(0, entity.attack - boardHero.globalInfo.UndeadAttackBonus);\r\n\t\t}\r\n\t}\r\n\tif (hasCorrectTribe(entity, boardHero, Race.BEAST, gameState.allCards)) {\r\n\t\tif (boardHero.globalInfo.GoldrinnBuffAtk > 0) {\r\n\t\t\tentity.attack = Math.max(0, entity.attack - boardHero.globalInfo.GoldrinnBuffAtk);\r\n\t\t\tentity.health = Math.max(1, entity.health - boardHero.globalInfo.GoldrinnBuffHealth);\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const boardEntity of board) {\r\n\t\tswitch (boardEntity.cardId) {\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.MURLOC, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.PIRATE, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t\tentity.health = Math.max(\r\n\t\t\t\t\t\t1,\r\n\t\t\t\t\t\tentity.health - (boardEntity.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.DEMON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.Kathranatir_BG21_039_G ? 2 : 1),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\t\tif (entity.divineShield) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack - (boardEntity.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6),\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(entity, boardHero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== boardEntity.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tentity.attack = Math.max(\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\tentity.attack -\r\n\t\t\t\t\t\t\t(boardEntity.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier,\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (entity.cardId) {\r\n\t\tcase CardIds.EternalKnight_BG25_008:\r\n\t\tcase CardIds.EternalKnight_BG25_008_G:\r\n\t\t\tconst multiplierKnight = entity.cardId === CardIds.EternalKnight_BG25_008_G ? 2 : 1;\r\n\t\t\tconst statsBonusKnight = multiplierKnight * boardHero.globalInfo.EternalKnightsDeadThisGame;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusKnight);\r\n\t\t\tentity.health = Math.max(1, entity.health - statsBonusKnight);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555:\r\n\t\tcase CardIds.EnsorcelledFungus_BG28_555_G:\r\n\t\t\tconst multiplierFungus = entity.cardId === CardIds.EnsorcelledFungus_BG28_555_G ? 2 : 1;\r\n\t\t\tconst statsBonusFungus = multiplierFungus * boardHero.globalInfo.TavernSpellsCastThisGame;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusFungus);\r\n\t\t\tentity.health = Math.max(1, entity.health - 2 * statsBonusFungus);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537:\r\n\t\tcase CardIds.FlourishingFrostling_BG26_537_G:\r\n\t\t\tconst multiplierFrostling = entity.cardId === CardIds.FlourishingFrostling_BG26_537_G ? 2 : 1;\r\n\t\t\tconst statsBonusFrostling = multiplierFrostling * boardHero.globalInfo.FrostlingBonus;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusFrostling);\r\n\t\t\tentity.health = Math.max(1, entity.health - statsBonusFrostling);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tconst multiplierAstral = entity.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t// We remove 1 because the AstralAutomatonsSummonedThisGame also includes the current one\r\n\t\t\t// and ancestral automaton only counts \"other\" automatons\r\n\t\t\tconst statsBonusAstral = multiplierAstral * (boardHero.globalInfo.AstralAutomatonsSummonedThisGame - 1);\r\n\t\t\tentity.attack = Math.max(0, entity.attack - 2 * statsBonusAstral);\r\n\t\t\tentity.health = Math.max(1, entity.health - 1 * statsBonusAstral);\r\n\t\t\tbreak;\r\n\t\tcase CardIds.RotHideGnoll_BG25_013:\r\n\t\tcase CardIds.RotHideGnoll_BG25_013_G:\r\n\t\t\tconst multiplierGnoll = entity.cardId === CardIds.RotHideGnoll_BG25_013_G ? 2 : 1;\r\n\t\t\tconst statsBonusGnoll =\r\n\t\t\t\tmultiplierGnoll * gameState.sharedState.deaths.filter((e) => e.friendly === entity.friendly).length;\r\n\t\t\tentity.attack = Math.max(0, entity.attack - statsBonusGnoll);\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tfor (const enchantment of entity.enchantments ?? []) {\r\n\t\tswitch (enchantment?.cardId) {\r\n\t\t\tcase CardIds.TavernLighting_TavernLightsEnchantment:\r\n\t\t\t\tentity.attack = Math.max(0, entity.attack - enchantment.tagScriptDataNum1);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleMinionAddedAuraEffect = (\r\n\tspawnedCardId: string,\r\n\tspawned: BoardEntity,\r\n\tboard: BoardEntity[],\r\n\tboardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tswitch (spawnedCardId) {\r\n\t\tcase CardIds.SouthseaCaptainLegacy_BG_NEW1_027:\r\n\t\tcase CardIds.SouthseaCaptainLegacy_TB_BaconUps_136:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.PIRATE, gameState.allCards))\r\n\t\t\t\t// Other\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t\te.health += spawned.cardId === CardIds.SouthseaCaptainLegacy_TB_BaconUps_136 ? 2 : 1;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.MurlocWarleaderLegacy_BG_EX1_507:\r\n\t\tcase CardIds.MurlocWarleaderLegacy_TB_BaconUps_008:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.MURLOC, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.MurlocWarleaderLegacy_TB_BaconUps_008 ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.Kathranatir_BG21_039:\r\n\t\tcase CardIds.Kathranatir_BG21_039_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.DEMON, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.Kathranatir_BG21_039_G ? 4 : 2;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.CyborgDrake_BG25_043:\r\n\t\tcase CardIds.CyborgDrake_BG25_043_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => e.divineShield)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += spawned.cardId === CardIds.CyborgDrake_BG25_043_G ? 12 : 6;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\r\n\t\tcase CardIds.SoreLoser_BG27_030:\r\n\t\tcase CardIds.SoreLoser_BG27_030_G:\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => hasCorrectTribe(e, boardHero, Race.UNDEAD, gameState.allCards))\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\te.attack += (spawned.cardId === CardIds.SoreLoser_BG27_030_G ? 2 : 1) * boardHero.tavernTier;\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401:\r\n\t\tcase CardIds.AstralAutomaton_BG_TTN_401_G:\r\n\t\t\tboardHero.globalInfo.AstralAutomatonsSummonedThisGame++;\r\n\t\t\tboard\r\n\t\t\t\t.filter((e) => e.entityId !== spawned.entityId)\r\n\t\t\t\t.filter(\r\n\t\t\t\t\t(e) =>\r\n\t\t\t\t\t\te.cardId === CardIds.AstralAutomaton_BG_TTN_401 ||\r\n\t\t\t\t\t\te.cardId === CardIds.AstralAutomaton_BG_TTN_401_G,\r\n\t\t\t\t)\r\n\t\t\t\t.forEach((e) => {\r\n\t\t\t\t\tconst multiplierAstral = e.cardId === CardIds.AstralAutomaton_BG_TTN_401_G ? 2 : 1;\r\n\t\t\t\t\tmodifyStats(e, 2 * multiplierAstral, 1 * multiplierAstral, board, boardHero, gameState);\r\n\t\t\t\t});\r\n\t\t\tbreak;\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffects = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tallSpawned: readonly BoardEntity[],\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tfor (const spawned of allSpawned) {\r\n\t\thandleAfterSpawnEffect(board, hero, spawned, gameState);\r\n\t}\r\n\tupdateBoardwideAuras(board, hero, gameState);\r\n};\r\n\r\nexport const onMinionSummoned = (hero: BgsPlayerEntity, board: BoardEntity[], gameState: FullGameState): void => {\r\n\tconst quests = hero.questEntities ?? [];\r\n\tif (!quests.length) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.AssembleALineup:\r\n\t\t\t\tonQuestProgressUpdated(hero, quest, board, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nconst handleAfterSpawnEffect = (\r\n\tboard: BoardEntity[],\r\n\thero: BgsPlayerEntity,\r\n\tspawned: BoardEntity,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\t// console.debug('after spawn', stringifySimpleCard(spawned, allCards), stringifySimple(board, allCards));\r\n\tfor (const entity of board) {\r\n\t\tconst onAfterSpawnedImpl = cardMappings[entity.cardId];\r\n\t\tif (hasAfterOtherSpawned(onAfterSpawnedImpl)) {\r\n\t\t\tonAfterSpawnedImpl.afterOtherSpawned(entity, {\r\n\t\t\t\tspawned: spawned,\r\n\t\t\t\tplayerEntity: hero,\r\n\t\t\t\tplayerBoard: board,\r\n\t\t\t\tgameState,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tswitch (entity.cardId) {\r\n\t\t\t// case CardIds.MurlocTidecallerLegacy:\r\n\t\t\t// case CardIds.MurlocTidecallerCore:\r\n\t\t\t// \tconst multiplier = entity.cardId === CardIds.MurlocTidecallerBattlegrounds ? 2 : 1;\r\n\t\t\t// \tconst buffAmount =\r\n\t\t\t// \t\tmultiplier * (isCorrectTribe(allCards.getCard(spawned.cardId).races, Race.MURLOC) ? 1 : 0);\r\n\t\t\t// \tif (buffAmount > 0) {\r\n\t\t\t// \t\tmodifyAttack(entity, buffAmount, board, allCards);\r\n\t\t\t// \t\tafterStatsUpdate(entity, board, allCards);\r\n\t\t\t// \t\tspectator.registerPowerTarget(entity, entity, board);\r\n\t\t\t// \t}\r\n\t\t\t// \tbreak;\r\n\t\t\tcase CardIds.Swampstriker_BG22_401:\r\n\t\t\tcase CardIds.Swampstriker_BG22_401_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst multiplier2 = entity.cardId === CardIds.Swampstriker_BG22_401_G ? 2 : 1;\r\n\t\t\t\t\tconst buffAmount2 =\r\n\t\t\t\t\t\tmultiplier2 * (hasCorrectTribe(spawned, hero, Race.MURLOC, gameState.allCards) ? 1 : 0);\r\n\t\t\t\t\tif (buffAmount2 > 0) {\r\n\t\t\t\t\t\tmodifyStats(entity, buffAmount2, 0, board, hero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.Felstomper_BG25_042:\r\n\t\t\tcase CardIds.Felstomper_BG25_042_G:\r\n\t\t\tcase CardIds.Deadstomper_BG28_634:\r\n\t\t\tcase CardIds.Deadstomper_BG28_634_G:\r\n\t\t\t\t// console.debug('felstomper');\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst felstomperBuff =\r\n\t\t\t\t\t\tentity.cardId === CardIds.Felstomper_BG25_042_G ||\r\n\t\t\t\t\t\tentity.cardId === CardIds.Deadstomper_BG28_634_G\r\n\t\t\t\t\t\t\t? 6\r\n\t\t\t\t\t\t\t: 3;\r\n\t\t\t\t\tboard.forEach((e) => {\r\n\t\t\t\t\t\tmodifyStats(e, felstomperBuff, 0, board, hero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, e, board, null, null);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.XyloBones_BG26_172:\r\n\t\t\tcase CardIds.XyloBones_BG26_172_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst xylobonesBuff = entity.cardId === CardIds.XyloBones_BG26_172_G ? 4 : 2;\r\n\t\t\t\t\tmodifyStats(entity, 0, xylobonesBuff, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.OctosariWrapGod_BG26_804:\r\n\t\t\tcase CardIds.OctosariWrapGod_BG26_804_G:\r\n\t\t\t\tif (entity.entityId !== spawned.entityId) {\r\n\t\t\t\t\tconst octoStats = entity.cardId === CardIds.OctosariWrapGod_BG26_804_G ? 4 : 2;\r\n\t\t\t\t\tentity.scriptDataNum1 = (entity.scriptDataNum1 ?? 0) + octoStats;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.BananaSlamma_BG26_802:\r\n\t\t\tcase CardIds.BananaSlamma_BG26_802_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.BEAST, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst bananaStatBuff = entity.cardId === CardIds.BananaSlamma_BG26_802_G ? 3 : 2;\r\n\t\t\t\t\tsetEntityStats(\r\n\t\t\t\t\t\tspawned,\r\n\t\t\t\t\t\tspawned.attack * bananaStatBuff,\r\n\t\t\t\t\t\tspawned.health * bananaStatBuff,\r\n\t\t\t\t\t\tboard,\r\n\t\t\t\t\t\thero,\r\n\t\t\t\t\t\tgameState,\r\n\t\t\t\t\t);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ObserverOfMyths_BG_TTN_078:\r\n\t\t\tcase CardIds.ObserverOfMyths_BG_TTN_078_G:\r\n\t\t\t\tif (spawned.attack > entity.attack) {\r\n\t\t\t\t\tconst observerBuff = entity.cardId === CardIds.ObserverOfMyths_BG_TTN_078_G ? 2 : 1;\r\n\t\t\t\t\taddStatsToBoard(entity, board, hero, observerBuff, 0, gameState);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy:\r\n\t\t\tcase CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy_G:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.DRAGON, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tconst valithriaBuff =\r\n\t\t\t\t\t\tentity.cardId === CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy_G ? 3 : 2;\r\n\t\t\t\t\tmodifyStats(entity, valithriaBuff, valithriaBuff, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t// Putricide-only\r\n\t\t\tcase CardIds.ArmsDealer_BG26_RLK_824:\r\n\t\t\t\tif (\r\n\t\t\t\t\thasCorrectTribe(spawned, hero, Race.UNDEAD, gameState.allCards) &&\r\n\t\t\t\t\tentity.entityId !== spawned.entityId\r\n\t\t\t\t) {\r\n\t\t\t\t\tmodifyStats(spawned, 1, 0, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(entity, entity, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tfor (const trinket of hero.trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.SlammaSticker_BG30_MagicItem_540:\r\n\t\t\t\tif (hasCorrectTribe(spawned, hero, Race.BEAST, gameState.allCards)) {\r\n\t\t\t\t\tsetEntityStats(spawned, spawned.attack * 2, spawned.health * 2, board, hero, gameState);\r\n\t\t\t\t\tgameState.spectator.registerPowerTarget(hero, spawned, board, null, null);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport interface OnSpawnInput {\r\n\tplayerEntity: BgsPlayerEntity;\r\n\tplayerBoard: BoardEntity[];\r\n\tgameState: FullGameState;\r\n}\r\nexport interface OnOtherSpawnInput {\r\n\tspawned: BoardEntity;\r\n\tplayerEntity: BgsPlayerEntity;\r\n\tplayerBoard: BoardEntity[];\r\n\tgameState: FullGameState;\r\n}\r\nexport interface OnDespawnInput {\r\n\tplayerEntity: BgsPlayerEntity;\r\n\tplayerBoard: BoardEntity[];\r\n\tgameState: FullGameState;\r\n}\r\n"]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.applyAfterAttackEffects = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
|
+
const stealth_1 = require("../keywords/stealth");
|
|
5
6
|
const utils_1 = require("../utils");
|
|
6
7
|
const blood_gems_1 = require("./blood-gems");
|
|
7
8
|
const cards_in_hand_1 = require("./cards-in-hand");
|
|
@@ -54,7 +55,7 @@ const applyAfterAttackEffects = (attackingEntity, attackingBoard, attackingBoard
|
|
|
54
55
|
.forEach((e) => {
|
|
55
56
|
(0, stats_1.modifyStats)(e, 1, 0, attackingBoard, attackingBoardHero, gameState);
|
|
56
57
|
});
|
|
57
|
-
attackingEntity
|
|
58
|
+
(0, stealth_1.updateStealth)(attackingEntity, false, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);
|
|
58
59
|
applyOnAttackQuest(attackingEntity, attackingBoard, attackingBoardHero, gameState);
|
|
59
60
|
};
|
|
60
61
|
exports.applyAfterAttackEffects = applyAfterAttackEffects;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"after-attack.js","sourceRoot":"","sources":["../../src/simulation/after-attack.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { processDeathrattleForMinion } from './deathrattle-orchestration';\r\nimport { getValidDeathrattles } from './deathrattle-utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const applyAfterAttackEffects = (\r\n\tattackingEntity: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tdamageDoneByAttacker: number,\r\n\tdamageDoneByDefender: number,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tlet secretTriggered = null;\r\n\tif (\r\n\t\t(secretTriggered = defendingBoardHero.secrets?.find(\r\n\t\t\t(secret) => !secret.triggered && secret?.cardId === CardIds.Reckoning_TB_Bacon_Secrets_14,\r\n\t\t)) != null\r\n\t) {\r\n\t\t// console.log('triggering secret?', damageDoneByAttacker, stringifySimpleCard(attackingEntity, allCards));\r\n\t\tif (damageDoneByAttacker >= 3 && !(attackingEntity.health <= 0 || attackingEntity.definitelyDead)) {\r\n\t\t\tsecretTriggered.triggered = true;\r\n\t\t\tattackingEntity.definitelyDead = true;\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tsecretTriggered,\r\n\t\t\t\tattackingEntity,\r\n\t\t\t\tattackingBoard,\r\n\t\t\t\tdefendingBoardHero,\r\n\t\t\t\tattackingBoardHero,\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tif (attackingEntity.cardId === CardIds.Bonker_BG20_104 || attackingEntity.cardId === CardIds.Bonker_BG20_104_G) {\r\n\t\tconst quantity = attackingEntity.cardId === CardIds.Bonker_BG20_104_G ? 2 : 1;\r\n\t\tconst cards = quantity === 1 ? [CardIds.BloodGem] : [CardIds.BloodGem, CardIds.BloodGem];\r\n\t\taddCardsInHand(attackingBoardHero, attackingBoard, cards, gameState);\r\n\t} else if (attackingEntity.cardId === CardIds.Yrel_BG23_350 || attackingEntity.cardId === CardIds.Yrel_BG23_350_G) {\r\n\t\tconst modifier = attackingEntity.cardId === CardIds.Yrel_BG23_350_G ? 2 : 1;\r\n\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\tattackingEntity,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tmodifier * 1,\r\n\t\t\tmodifier * 2,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t} else if (\r\n\t\tattackingEntity.cardId === CardIds.IncorporealCorporal_BG26_RLK_117 ||\r\n\t\tattackingEntity.cardId === CardIds.IncorporealCorporal_BG26_RLK_117_G\r\n\t) {\r\n\t\tattackingEntity.definitelyDead = true;\r\n\t} else if (\r\n\t\tattackingEntity.cardId === CardIds.MonstrousMacaw_BGS_078 ||\r\n\t\tattackingEntity.cardId === CardIds.MonstrousMacaw_TB_BaconUps_135\r\n\t) {\r\n\t\tconst loops = attackingEntity.cardId === CardIds.MonstrousMacaw_TB_BaconUps_135 ? 2 : 1;\r\n\t\tconst targetBoard = attackingBoard.filter((e) => e.entityId !== attackingEntity.entityId);\r\n\t\tconst validDeathrattles = getValidDeathrattles(targetBoard, gameState);\r\n\t\tconst leftMost = validDeathrattles[0];\r\n\t\tif (!!leftMost) {\r\n\t\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tattackingEntity,\r\n\t\t\t\t\tleftMost,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tdefendingBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tconst indexFromRight = attackingBoard.length - (attackingBoard.indexOf(leftMost) + 1);\r\n\t\t\t\tprocessDeathrattleForMinion(\r\n\t\t\t\t\tleftMost,\r\n\t\t\t\t\tindexFromRight,\r\n\t\t\t\t\t[leftMost],\r\n\t\t\t\t\tleftMost.friendly ? gameState.gameState.player : gameState.gameState.opponent,\r\n\t\t\t\t\tleftMost.friendly ? gameState.gameState.opponent : gameState.gameState.player,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// Putricide-only\r\n\telse if (attackingEntity.additionalCards?.includes(CardIds.IncorporealCorporal_BG26_RLK_117)) {\r\n\t\tattackingEntity.definitelyDead = true;\r\n\t}\r\n\r\n\tattackingBoard\r\n\t\t.filter((e) => e.additionalCards?.includes(CardIds.FesterootHulk_BG_GIL_655))\r\n\t\t.forEach((e) => {\r\n\t\t\tmodifyStats(e, 1, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t\t});\r\n\r\n\tattackingEntity.stealth = false;\r\n\r\n\tapplyOnAttackQuest(attackingEntity, attackingBoard, attackingBoardHero, gameState);\r\n};\r\n\r\nconst applyOnAttackQuest = (\r\n\tattackingEntity: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = attackingBoardHero.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.CrackTheCase:\r\n\t\t\t\tonQuestProgressUpdated(attackingBoardHero, quest, attackingBoard, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tconst trinkets = attackingBoardHero.trinkets ?? [];\r\n\tfor (const trinket of trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\t\t\tfor (const entity of attackingBoard.filter((e) =>\r\n\t\t\t\t\t\thasCorrectTribe(e, attackingBoardHero, Race.QUILBOAR, gameState.allCards),\r\n\t\t\t\t\t)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(trinket, entity, 1, attackingBoard, attackingBoardHero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttrinket.scriptDataNum1 = gameState.cardsData.defaultScriptDataNum(trinket.cardId);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"after-attack.js","sourceRoot":"","sources":["../../src/simulation/after-attack.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, Race } from '@firestone-hs/reference-data';\r\nimport { BgsPlayerEntity } from '../bgs-player-entity';\r\nimport { BoardEntity } from '../board-entity';\r\nimport { updateStealth } from '../keywords/stealth';\r\nimport { grantStatsToMinionsOfEachType, hasCorrectTribe } from '../utils';\r\nimport { playBloodGemsOn } from './blood-gems';\r\nimport { addCardsInHand } from './cards-in-hand';\r\nimport { processDeathrattleForMinion } from './deathrattle-orchestration';\r\nimport { getValidDeathrattles } from './deathrattle-utils';\r\nimport { FullGameState } from './internal-game-state';\r\nimport { onQuestProgressUpdated } from './quest';\r\nimport { modifyStats } from './stats';\r\n\r\nexport const applyAfterAttackEffects = (\r\n\tattackingEntity: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tdefendingEntity: BoardEntity,\r\n\tdefendingBoardHero: BgsPlayerEntity,\r\n\tdamageDoneByAttacker: number,\r\n\tdamageDoneByDefender: number,\r\n\tgameState: FullGameState,\r\n): void => {\r\n\tlet secretTriggered = null;\r\n\tif (\r\n\t\t(secretTriggered = defendingBoardHero.secrets?.find(\r\n\t\t\t(secret) => !secret.triggered && secret?.cardId === CardIds.Reckoning_TB_Bacon_Secrets_14,\r\n\t\t)) != null\r\n\t) {\r\n\t\t// console.log('triggering secret?', damageDoneByAttacker, stringifySimpleCard(attackingEntity, allCards));\r\n\t\tif (damageDoneByAttacker >= 3 && !(attackingEntity.health <= 0 || attackingEntity.definitelyDead)) {\r\n\t\t\tsecretTriggered.triggered = true;\r\n\t\t\tattackingEntity.definitelyDead = true;\r\n\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\tsecretTriggered,\r\n\t\t\t\tattackingEntity,\r\n\t\t\t\tattackingBoard,\r\n\t\t\t\tdefendingBoardHero,\r\n\t\t\t\tattackingBoardHero,\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tif (attackingEntity.cardId === CardIds.Bonker_BG20_104 || attackingEntity.cardId === CardIds.Bonker_BG20_104_G) {\r\n\t\tconst quantity = attackingEntity.cardId === CardIds.Bonker_BG20_104_G ? 2 : 1;\r\n\t\tconst cards = quantity === 1 ? [CardIds.BloodGem] : [CardIds.BloodGem, CardIds.BloodGem];\r\n\t\taddCardsInHand(attackingBoardHero, attackingBoard, cards, gameState);\r\n\t} else if (attackingEntity.cardId === CardIds.Yrel_BG23_350 || attackingEntity.cardId === CardIds.Yrel_BG23_350_G) {\r\n\t\tconst modifier = attackingEntity.cardId === CardIds.Yrel_BG23_350_G ? 2 : 1;\r\n\t\tgrantStatsToMinionsOfEachType(\r\n\t\t\tattackingEntity,\r\n\t\t\tattackingBoard,\r\n\t\t\tattackingBoardHero,\r\n\t\t\tmodifier * 1,\r\n\t\t\tmodifier * 2,\r\n\t\t\tgameState,\r\n\t\t);\r\n\t} else if (\r\n\t\tattackingEntity.cardId === CardIds.IncorporealCorporal_BG26_RLK_117 ||\r\n\t\tattackingEntity.cardId === CardIds.IncorporealCorporal_BG26_RLK_117_G\r\n\t) {\r\n\t\tattackingEntity.definitelyDead = true;\r\n\t} else if (\r\n\t\tattackingEntity.cardId === CardIds.MonstrousMacaw_BGS_078 ||\r\n\t\tattackingEntity.cardId === CardIds.MonstrousMacaw_TB_BaconUps_135\r\n\t) {\r\n\t\tconst loops = attackingEntity.cardId === CardIds.MonstrousMacaw_TB_BaconUps_135 ? 2 : 1;\r\n\t\tconst targetBoard = attackingBoard.filter((e) => e.entityId !== attackingEntity.entityId);\r\n\t\tconst validDeathrattles = getValidDeathrattles(targetBoard, gameState);\r\n\t\tconst leftMost = validDeathrattles[0];\r\n\t\tif (!!leftMost) {\r\n\t\t\tfor (let i = 0; i < loops; i++) {\r\n\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\tattackingEntity,\r\n\t\t\t\t\tleftMost,\r\n\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\tdefendingBoardHero,\r\n\t\t\t\t);\r\n\t\t\t\tconst indexFromRight = attackingBoard.length - (attackingBoard.indexOf(leftMost) + 1);\r\n\t\t\t\tprocessDeathrattleForMinion(\r\n\t\t\t\t\tleftMost,\r\n\t\t\t\t\tindexFromRight,\r\n\t\t\t\t\t[leftMost],\r\n\t\t\t\t\tleftMost.friendly ? gameState.gameState.player : gameState.gameState.opponent,\r\n\t\t\t\t\tleftMost.friendly ? gameState.gameState.opponent : gameState.gameState.player,\r\n\t\t\t\t\tgameState,\r\n\t\t\t\t\tfalse,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// Putricide-only\r\n\telse if (attackingEntity.additionalCards?.includes(CardIds.IncorporealCorporal_BG26_RLK_117)) {\r\n\t\tattackingEntity.definitelyDead = true;\r\n\t}\r\n\r\n\tattackingBoard\r\n\t\t.filter((e) => e.additionalCards?.includes(CardIds.FesterootHulk_BG_GIL_655))\r\n\t\t.forEach((e) => {\r\n\t\t\tmodifyStats(e, 1, 0, attackingBoard, attackingBoardHero, gameState);\r\n\t\t});\r\n\r\n\tupdateStealth(attackingEntity, false, attackingBoard, attackingBoardHero, defendingBoardHero, gameState);\r\n\r\n\tapplyOnAttackQuest(attackingEntity, attackingBoard, attackingBoardHero, gameState);\r\n};\r\n\r\nconst applyOnAttackQuest = (\r\n\tattackingEntity: BoardEntity,\r\n\tattackingBoard: BoardEntity[],\r\n\tattackingBoardHero: BgsPlayerEntity,\r\n\tgameState: FullGameState,\r\n) => {\r\n\tconst quests = attackingBoardHero.questEntities ?? [];\r\n\tfor (const quest of quests) {\r\n\t\tswitch (quest.CardId) {\r\n\t\t\tcase CardIds.CrackTheCase:\r\n\t\t\t\tonQuestProgressUpdated(attackingBoardHero, quest, attackingBoard, gameState);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tconst trinkets = attackingBoardHero.trinkets ?? [];\r\n\tfor (const trinket of trinkets) {\r\n\t\tswitch (trinket.cardId) {\r\n\t\t\tcase CardIds.JarOGems_BG30_MagicItem_546:\r\n\t\t\t\ttrinket.scriptDataNum1--;\r\n\t\t\t\tif (trinket.scriptDataNum1 <= 0) {\r\n\t\t\t\t\tfor (const entity of attackingBoard.filter((e) =>\r\n\t\t\t\t\t\thasCorrectTribe(e, attackingBoardHero, Race.QUILBOAR, gameState.allCards),\r\n\t\t\t\t\t)) {\r\n\t\t\t\t\t\tplayBloodGemsOn(trinket, entity, 1, attackingBoard, attackingBoardHero, gameState);\r\n\t\t\t\t\t\tgameState.spectator.registerPowerTarget(\r\n\t\t\t\t\t\t\ttrinket,\r\n\t\t\t\t\t\t\tentity,\r\n\t\t\t\t\t\t\tattackingBoard,\r\n\t\t\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\t\t\tattackingBoardHero,\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttrinket.scriptDataNum1 = gameState.cardsData.defaultScriptDataNum(trinket.cardId);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n"]}
|
|
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.processMinionDeath = exports.bumpEntities = exports.getDefendingEntity = exports.dealDamageToMinion = exports.dealDamageToRandomEnemy = exports.getLeftNeighbour = exports.getNeighbours = exports.findNearestEnemies = exports.doFullAttack = exports.simulateAttack = void 0;
|
|
4
4
|
const reference_data_1 = require("@firestone-hs/reference-data");
|
|
5
5
|
const debug_state_1 = require("../debug-state");
|
|
6
|
-
const divine_shield_1 = require("../divine-shield");
|
|
6
|
+
const divine_shield_1 = require("../keywords/divine-shield");
|
|
7
|
+
const venomous_1 = require("../keywords/venomous");
|
|
7
8
|
const utils_1 = require("../services/utils");
|
|
8
9
|
const utils_2 = require("../utils");
|
|
9
10
|
const after_attack_1 = require("./after-attack");
|
|
@@ -58,8 +59,10 @@ const doFullAttack = (attackingEntity, attackingBoard, attackingBoardHero, defen
|
|
|
58
59
|
const isAttackingImmediately = attackingEntity.attackImmediately;
|
|
59
60
|
gameState.spectator.registerAttack(attackingEntity, defendingEntity, attackingBoard, defendingBoard, attackingBoardHero, defendingBoardHero);
|
|
60
61
|
(0, on_being_attacked_1.applyOnBeingAttackedBuffs)(attackingEntity, attackingBoard, attackingBoardHero, defendingEntity, defendingBoard, defendingBoardHero, gameState);
|
|
61
|
-
(0, on_attack_1.applyOnAttackEffects)(attackingEntity, attackingBoard, attackingBoardHero, defendingEntity, defendingBoard, defendingBoardHero, gameState);
|
|
62
|
-
const { damageDoneByAttacker, damageDoneByDefender } = performAttack(attackingEntity, defendingEntity, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState);
|
|
62
|
+
const { damageDoneByAttacker: damageDoneByAttacker1, damageDoneByDefender: damageDoneByDefender1 } = (0, on_attack_1.applyOnAttackEffects)(attackingEntity, attackingBoard, attackingBoardHero, defendingEntity, defendingBoard, defendingBoardHero, gameState);
|
|
63
|
+
const { damageDoneByAttacker: damageDoneByAttacker2, damageDoneByDefender: damageDoneByDefender2 } = performAttack(attackingEntity, defendingEntity, attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState);
|
|
64
|
+
const damageDoneByAttacker = damageDoneByAttacker1 + damageDoneByAttacker2;
|
|
65
|
+
const damageDoneByDefender = damageDoneByDefender1 + damageDoneByDefender2;
|
|
63
66
|
(0, after_attack_1.applyAfterAttackEffects)(attackingEntity, attackingBoard, attackingBoardHero, defendingEntity, defendingBoardHero, damageDoneByAttacker, damageDoneByDefender, gameState);
|
|
64
67
|
(0, exports.processMinionDeath)(attackingBoard, attackingBoardHero, defendingBoard, defendingBoardHero, gameState, isAttackingImmediately);
|
|
65
68
|
(0, stats_1.applyAfterStatsUpdate)(gameState);
|
|
@@ -99,17 +102,6 @@ const performAttack = (attackingEntity, defendingEntity, attackingBoard, attacki
|
|
|
99
102
|
});
|
|
100
103
|
}
|
|
101
104
|
}
|
|
102
|
-
else if (attackingEntity.cardId === "BG27_822" ||
|
|
103
|
-
attackingEntity.cardId === "BG27_822_G") {
|
|
104
|
-
const multiplier = attackingEntity.cardId === "BG27_822_G" ? 2 : 1;
|
|
105
|
-
for (let i = 0; i < multiplier; i++) {
|
|
106
|
-
const target = (0, utils_1.pickRandom)(defendingBoard.filter((e) => e.entityId != defendingEntity.entityId));
|
|
107
|
-
if (target) {
|
|
108
|
-
gameState.spectator.registerPowerTarget(attackingEntity, target, defendingBoard, attackingBoardHero, defendingBoardHero);
|
|
109
|
-
damageDoneByAttacker += (0, exports.dealDamageToMinion)(target, defendingBoard, defendingBoardHero, attackingEntity, attackingEntity.attack, attackingBoard, attackingBoardHero, gameState);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
105
|
else if (["BG22_001", "BG22_001_G"].includes(attackingEntity.cardId)) {
|
|
114
106
|
const spawns = (0, deathrattle_spawns_1.spawnEntities)(attackingEntity.cardId === "BG22_001_G"
|
|
115
107
|
? "BG22_001_G"
|
|
@@ -190,15 +182,6 @@ const performAttack = (attackingEntity, defendingEntity, attackingBoard, attacki
|
|
|
190
182
|
return { damageDoneByAttacker, damageDoneByDefender };
|
|
191
183
|
};
|
|
192
184
|
const getAttackingEntity = (attackingBoard, allCards) => {
|
|
193
|
-
const debug = attackingBoard.map((e) => {
|
|
194
|
-
var _a;
|
|
195
|
-
return ({
|
|
196
|
-
name: (_a = allCards.getCard(e.cardId)) === null || _a === void 0 ? void 0 : _a.name,
|
|
197
|
-
attacked: e.hasAttacked,
|
|
198
|
-
entityId: e.entityId,
|
|
199
|
-
reborn: e.reborn,
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
185
|
let validAttackers = attackingBoard.filter((entity) => (0, entity_utils_1.canAttack)(entity));
|
|
203
186
|
if (validAttackers.length === 0) {
|
|
204
187
|
return null;
|
|
@@ -417,7 +400,7 @@ const bumpEntities = (entity, bumpInto, entityBoard, entityBoardHero, otherBoard
|
|
|
417
400
|
}
|
|
418
401
|
if (bumpInto.venomous && applyVenomous) {
|
|
419
402
|
entity.definitelyDead = true;
|
|
420
|
-
(0,
|
|
403
|
+
(0, venomous_1.updateVenomous)(bumpInto, false, otherBoard, otherHero, entityBoardHero, gameState);
|
|
421
404
|
}
|
|
422
405
|
entity.lastAffectedByEntity = bumpInto;
|
|
423
406
|
if (entity.frenzyChargesLeft > 0 && entity.health > 0 && !entity.definitelyDead) {
|