@firestone-hs/simulate-bgs-battle 1.1.698 → 1.1.700
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/cards/card.interface.d.ts +1 -1
- package/dist/cards/card.interface.js.map +1 -1
- package/dist/cards/cards-data.js +2 -1
- package/dist/cards/cards-data.js.map +1 -1
- package/dist/cards/impl/_card-mappings.js +8 -32
- package/dist/cards/impl/_card-mappings.js.map +1 -1
- package/dist/cards/impl/bg-spell/conflagration.d.ts +2 -0
- package/dist/cards/impl/bg-spell/{conflagration-bg352.js → conflagration.js} +3 -3
- package/dist/cards/impl/bg-spell/conflagration.js.map +1 -0
- package/dist/cards/impl/bg-spell/shifting-tide.js +3 -3
- package/dist/cards/impl/bg-spell/shifting-tide.js.map +1 -1
- package/dist/cards/impl/minion/bristlemane-scrapsmith.js +3 -2
- package/dist/cards/impl/minion/bristlemane-scrapsmith.js.map +1 -1
- package/dist/cards/impl/minion/burgeoning-whelp.js +3 -12
- package/dist/cards/impl/minion/burgeoning-whelp.js.map +1 -1
- package/dist/cards/impl/minion/{bg352-chromadrake-pool.js → chromadrake-pool.js} +1 -1
- package/dist/cards/impl/minion/chromadrake-pool.js.map +1 -0
- package/dist/cards/impl/minion/draconic-warden.js +2 -2
- package/dist/cards/impl/minion/draconic-warden.js.map +1 -1
- package/dist/cards/impl/minion/incubation-researcher.js +2 -2
- package/dist/cards/impl/minion/incubation-researcher.js.map +1 -1
- package/dist/cards/impl/minion/living-azerite.js.map +1 -1
- package/dist/cards/impl/minion/silent-enforcer.js +6 -6
- package/dist/cards/impl/minion/silent-enforcer.js.map +1 -1
- package/dist/cards/impl/minion/sinrunner-blanchy.d.ts +0 -2
- package/dist/cards/impl/minion/sinrunner-blanchy.js +1 -4
- package/dist/cards/impl/minion/sinrunner-blanchy.js.map +1 -1
- package/dist/cards/impl/minion/stellar-freebooter.js +4 -1
- package/dist/cards/impl/minion/stellar-freebooter.js.map +1 -1
- package/dist/cards/impl/minion/stuntdrake.js +1 -1
- package/dist/cards/impl/minion/stuntdrake.js.map +1 -1
- package/dist/cards/impl/minion/timewarped-hag.d.ts +2 -2
- package/dist/cards/impl/minion/timewarped-hag.js +7 -5
- package/dist/cards/impl/minion/timewarped-hag.js.map +1 -1
- package/dist/cards/impl/trinket/bloodbound-earrings.js +6 -1
- package/dist/cards/impl/trinket/bloodbound-earrings.js.map +1 -1
- package/dist/cards/impl/trinket/bluegill-flippers.js +2 -0
- package/dist/cards/impl/trinket/bluegill-flippers.js.map +1 -1
- package/dist/cards/impl/trinket/lucky-tabby.d.ts +2 -0
- package/dist/cards/impl/trinket/lucky-tabby.js +20 -0
- package/dist/cards/impl/trinket/lucky-tabby.js.map +1 -0
- package/dist/cards/impl/trinket/scrapsmith-portrait.d.ts +2 -0
- package/dist/cards/impl/trinket/scrapsmith-portrait.js +21 -0
- package/dist/cards/impl/trinket/scrapsmith-portrait.js.map +1 -0
- package/dist/cards/impl/trinket/stegodon-portrait.js +1 -0
- package/dist/cards/impl/trinket/stegodon-portrait.js.map +1 -1
- package/dist/cards/impl/trinket/stormcoil-sticker.d.ts +2 -0
- package/dist/cards/impl/trinket/stormcoil-sticker.js +21 -0
- package/dist/cards/impl/trinket/stormcoil-sticker.js.map +1 -0
- package/dist/cards/impl/trinket/unholy-sanctum.js +0 -3
- package/dist/cards/impl/trinket/unholy-sanctum.js.map +1 -1
- package/dist/simulation/attack.d.ts +2 -0
- package/dist/simulation/attack.js.map +1 -1
- package/dist/simulation/death-effects.js +28 -38
- package/dist/simulation/death-effects.js.map +1 -1
- package/dist/simulation/deathrattle-effects.js +0 -13
- package/dist/simulation/deathrattle-effects.js.map +1 -1
- package/dist/simulation/global-info-helpers.d.ts +1 -0
- package/dist/simulation/global-info-helpers.js +13 -1
- package/dist/simulation/global-info-helpers.js.map +1 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js +8 -1
- package/dist/simulation/start-of-combat/soc-action-processor.js.map +1 -1
- package/dist/simulation/stats.js +0 -1
- package/dist/simulation/stats.js.map +1 -1
- package/package.json +51 -51
- package/dist/cards/impl/bg-spell/arcane-absorption-bg352.d.ts +0 -2
- package/dist/cards/impl/bg-spell/arcane-absorption-bg352.js +0 -7
- package/dist/cards/impl/bg-spell/arcane-absorption-bg352.js.map +0 -1
- package/dist/cards/impl/bg-spell/conflagration-bg352.d.ts +0 -2
- package/dist/cards/impl/bg-spell/conflagration-bg352.js.map +0 -1
- package/dist/cards/impl/minion/alert-alarmist.d.ts +0 -2
- package/dist/cards/impl/minion/alert-alarmist.js +0 -7
- package/dist/cards/impl/minion/alert-alarmist.js.map +0 -1
- package/dist/cards/impl/minion/ancestral-automaton.d.ts +0 -2
- package/dist/cards/impl/minion/ancestral-automaton.js +0 -7
- package/dist/cards/impl/minion/ancestral-automaton.js.map +0 -1
- package/dist/cards/impl/minion/balinda-stonehearth.d.ts +0 -2
- package/dist/cards/impl/minion/balinda-stonehearth.js +0 -7
- package/dist/cards/impl/minion/balinda-stonehearth.js.map +0 -1
- package/dist/cards/impl/minion/bg352-chromadrake-pool.js.map +0 -1
- package/dist/cards/impl/minion/demon-fodder.d.ts +0 -2
- package/dist/cards/impl/minion/demon-fodder.js +0 -7
- package/dist/cards/impl/minion/demon-fodder.js.map +0 -1
- package/dist/cards/impl/minion/egg-of-the-endtimes.d.ts +0 -2
- package/dist/cards/impl/minion/egg-of-the-endtimes.js +0 -7
- package/dist/cards/impl/minion/egg-of-the-endtimes.js.map +0 -1
- package/dist/cards/impl/minion/gluttonous-trogg.d.ts +0 -2
- package/dist/cards/impl/minion/gluttonous-trogg.js +0 -7
- package/dist/cards/impl/minion/gluttonous-trogg.js.map +0 -1
- package/dist/cards/impl/minion/hired-ritualist.d.ts +0 -2
- package/dist/cards/impl/minion/hired-ritualist.js +0 -7
- package/dist/cards/impl/minion/hired-ritualist.js.map +0 -1
- package/dist/cards/impl/minion/laboratory-assistant.d.ts +0 -2
- package/dist/cards/impl/minion/laboratory-assistant.js +0 -7
- package/dist/cards/impl/minion/laboratory-assistant.js.map +0 -1
- package/dist/cards/impl/minion/maelstrom-emergent.d.ts +0 -2
- package/dist/cards/impl/minion/maelstrom-emergent.js +0 -7
- package/dist/cards/impl/minion/maelstrom-emergent.js.map +0 -1
- package/dist/cards/impl/minion/old-soul.d.ts +0 -2
- package/dist/cards/impl/minion/old-soul.js +0 -7
- package/dist/cards/impl/minion/old-soul.js.map +0 -1
- package/dist/cards/impl/minion/proud-privateer.d.ts +0 -2
- package/dist/cards/impl/minion/proud-privateer.js +0 -7
- package/dist/cards/impl/minion/proud-privateer.js.map +0 -1
- package/dist/cards/impl/minion/twisted-wrathguard.d.ts +0 -2
- package/dist/cards/impl/minion/twisted-wrathguard.js +0 -7
- package/dist/cards/impl/minion/twisted-wrathguard.js.map +0 -1
- package/dist/cards/impl/trinket/tarecgosa-sticker.d.ts +0 -2
- package/dist/cards/impl/trinket/tarecgosa-sticker.js +0 -7
- package/dist/cards/impl/trinket/tarecgosa-sticker.js.map +0 -1
- /package/dist/cards/impl/minion/{bg352-chromadrake-pool.d.ts → chromadrake-pool.d.ts} +0 -0
|
@@ -213,7 +213,7 @@ export interface OnAfterDeathCard extends Card {
|
|
|
213
213
|
}
|
|
214
214
|
export declare const hasOnAfterDeath: (card: Card) => card is OnAfterDeathCard;
|
|
215
215
|
export interface OnAfterFriendlyMinionDeathCard extends Card {
|
|
216
|
-
onAfterFriendlyMinionDeath: (listener: BoardEntity, input: OnAfterFriendlyMinionDeathInput) => void;
|
|
216
|
+
onAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;
|
|
217
217
|
}
|
|
218
218
|
export declare const hasOnAfterFriendlyMinionDeath: (card: Card) => card is OnAfterFriendlyMinionDeathCard;
|
|
219
219
|
export interface OnMinionKilledCard extends Card {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":";;;;AAsDO,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAA8B,EAAE,CAC3E,CAAC,IAA2B,aAA3B,IAAI,uBAAJ,IAAI,CAAyB,cAAc,MAAK,SAAS,CAAC;AAD/C,QAAA,iBAAiB,qBAC8B;AAMrD,MAAM,gBAAgB,GAAG,CAAC,IAAU,EAA6B,EAAE,CACzE,CAAC,IAA0B,aAA1B,IAAI,uBAAJ,IAAI,CAAwB,aAAa,MAAK,SAAS,CAAC;AAD7C,QAAA,gBAAgB,oBAC6B;AAInD,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAqC,EAAE,CACzF,CAAC,IAAkC,aAAlC,IAAI,uBAAJ,IAAI,CAAgC,qBAAqB,MAAK,SAAS,CAAC;AAD7D,QAAA,wBAAwB,4BACqC;AAMnE,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAA2B,EAAE,CACzE,CAAC,IAAwB,aAAxB,IAAI,uBAAJ,IAAI,CAAsB,eAAe,MAAK,SAAS,CAAC;AAD7C,QAAA,kBAAkB,sBAC2B;AAKnD,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAK3D,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACvF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,oBAAoB,MAAK,SAAS,CAAC;AAD3D,QAAA,uBAAuB,2BACoC;AASjE,MAAM,QAAQ,GAAG,CAAC,IAAU,EAAqB,EAAE,CAAC,CAAC,IAAkB,aAAlB,IAAI,uBAAJ,IAAI,CAAgB,KAAK,MAAK,SAAS,CAAC;AAAvF,QAAA,QAAQ,YAA+E;AAQ7F,MAAM,iCAAiC,GAAG,CAAC,IAAU,EAA8C,EAAE,CAC3G,CAAC,IAA2C,aAA3C,IAAI,uBAAJ,IAAI,CAAyC,8BAA8B,MAAK,SAAS,CAAC;AAD/E,QAAA,iCAAiC,qCAC8C;AAQrF,MAAM,4BAA4B,GAAG,CAAC,IAAU,EAAyC,EAAE,CACjG,CAAC,IAAsC,aAAtC,IAAI,uBAAJ,IAAI,CAAoC,yBAAyB,MAAK,SAAS,CAAC;AADrE,QAAA,4BAA4B,gCACyC;AAK3E,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,UAAU,MAAK,SAAS,CAAC;AAD7C,QAAA,mBAAmB,uBAC0B;AAKnD,MAAM,YAAY,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC,CAAC,IAAsB,aAAtB,IAAI,uBAAJ,IAAI,CAAoB,SAAS,MAAK,SAAS,CAAC;AAAvG,QAAA,YAAY,gBAA2F;AAK7G,MAAM,qBAAqB,GAAG,CAAC,IAAU,EAAkC,EAAE,CACnF,CAAC,IAA+B,aAA/B,IAAI,uBAAJ,IAAI,CAA6B,kBAAkB,MAAK,SAAS,CAAC;AADvD,QAAA,qBAAqB,yBACkC;AAK7D,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAA8B,EAAE,CAC3E,CAAC,IAA2B,aAA3B,IAAI,uBAAJ,IAAI,CAAyB,cAAc,MAAK,SAAS,CAAC;AAD/C,QAAA,iBAAiB,qBAC8B;AAKrD,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAK3D,MAAM,kCAAkC,GAAG,CAAC,IAAU,EAA+C,EAAE,CAC7G,CAAC,IAA4C,aAA5C,IAAI,uBAAJ,IAAI,CAA0C,wBAAwB,MAAK,SAAS,CAAC;AAD1E,QAAA,kCAAkC,sCACwC;AAKhF,MAAM,cAAc,GAAG,CAAC,IAAU,EAA2B,EAAE,CACrE,CAAC,IAAwB,aAAxB,IAAI,uBAAJ,IAAI,CAAsB,WAAW,MAAK,SAAS,CAAC;AADzC,QAAA,cAAc,kBAC2B;AAK/C,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,gBAAgB,MAAK,SAAS,CAAC;AADnD,QAAA,mBAAmB,uBACgC;AAMzD,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAO3D,MAAM,YAAY,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC,CAAC,IAAsB,aAAtB,IAAI,uBAAJ,IAAI,CAAoB,SAAS,MAAK,SAAS,CAAC;AAAvG,QAAA,YAAY,gBAA2F;AAK7G,MAAM,eAAe,GAAG,CAAC,IAAU,EAA4B,EAAE,CACvE,CAAC,IAAyB,aAAzB,IAAI,uBAAJ,IAAI,CAAuB,YAAY,MAAK,SAAS,CAAC;AAD3C,QAAA,eAAe,mBAC4B;AAKjD,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,gBAAgB,MAAK,SAAS,CAAC;AADnD,QAAA,mBAAmB,uBACgC;AAKzD,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACvF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,oBAAoB,MAAK,SAAS,CAAC;AAD3D,QAAA,uBAAuB,2BACoC;AAMjE,MAAM,SAAS,GAAG,CAAC,IAAU,EAAsB,EAAE,CAAC,CAAC,IAAmB,aAAnB,IAAI,uBAAJ,IAAI,CAAiB,MAAM,MAAK,SAAS,CAAC;AAA3F,QAAA,SAAS,aAAkF;AAKjG,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACvF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,oBAAoB,MAAK,SAAS,CAAC;AAD3D,QAAA,uBAAuB,2BACoC;AAMjE,MAAM,yBAAyB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACzF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,sBAAsB,MAAK,SAAS,CAAC;AAD7D,QAAA,yBAAyB,6BACoC;AAoBnE,MAAM,8BAA8B,GAAG,CAAC,IAAU,EAA2C,EAAE,CACrG,CAAC,IAAwC,aAAxC,IAAI,uBAAJ,IAAI,CAAsC,iCAAiC,MAAK,SAAS,CAAC;AAD/E,QAAA,8BAA8B,kCACiD;AAKrF,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAM3D,MAAM,YAAY,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC,CAAC,IAAsB,aAAtB,IAAI,uBAAJ,IAAI,CAAoB,SAAS,MAAK,SAAS,CAAC;AAAvG,QAAA,YAAY,gBAA2F;AAM7G,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAqC,EAAE,CACzF,CAAC,IAAkC,aAAlC,IAAI,uBAAJ,IAAI,CAAgC,qBAAqB,MAAK,SAAS,CAAC;AAD7D,QAAA,wBAAwB,4BACqC;AAUnE,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAA8B,EAAE,CAC3E,CAAC,IAA2B,aAA3B,IAAI,uBAAJ,IAAI,CAAyB,cAAc,MAAK,SAAS,CAAC;AAD/C,QAAA,iBAAiB,qBAC8B;AAUrD,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAA+B,EAAE,CAC7E,CAAC,IAA4B,aAA5B,IAAI,uBAAJ,IAAI,CAA0B,eAAe,MAAK,SAAS,CAAC;AADjD,QAAA,kBAAkB,sBAC+B;AAUvD,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,gBAAgB,MAAK,SAAS,CAAC;AADnD,QAAA,mBAAmB,uBACgC;AAUzD,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAU3D,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAK3D,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAA8B,EAAE,CAC3E,CAAC,IAA2B,aAA3B,IAAI,uBAAJ,IAAI,CAAyB,cAAc,MAAK,SAAS,CAAC;AAD/C,QAAA,iBAAiB,qBAC8B;AAKrD,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,gBAAgB,MAAK,SAAS,CAAC;AADnD,QAAA,mBAAmB,uBACgC;AAKzD,MAAM,YAAY,GAAG,CAAC,IAAU,EAAyB,EAAE,CAAC,CAAC,IAAsB,aAAtB,IAAI,uBAAJ,IAAI,CAAoB,SAAS,MAAK,SAAS,CAAC;AAAvG,QAAA,YAAY,gBAA2F;AAO7G,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAA+B,EAAE,CAC7E,CAAC,IAA4B,aAA5B,IAAI,uBAAJ,IAAI,CAA0B,eAAe,MAAK,SAAS,CAAC;AADjD,QAAA,kBAAkB,sBAC+B;AAKvD,MAAM,oCAAoC,GAAG,CAAC,IAAU,EAAiD,EAAE,CACjH,CAAC,IAA8C,aAA9C,IAAI,uBAAJ,IAAI,CAA4C,0BAA0B,MAAK,SAAS,CAAC;AAD9E,QAAA,oCAAoC,wCAC0C;AAKpF,MAAM,UAAU,GAAG,CAAC,IAAU,EAAuB,EAAE,CAAC,CAAC,IAAoB,aAApB,IAAI,uBAAJ,IAAI,CAAkB,OAAO,MAAK,SAAS,CAAC;AAA/F,QAAA,UAAU,cAAqF;AAKrG,MAAM,eAAe,GAAG,CAAC,IAAU,EAA4B,EAAE,CACvE,CAAC,IAAyB,aAAzB,IAAI,uBAAJ,IAAI,CAAuB,YAAY,MAAK,SAAS,CAAC;AAD3C,QAAA,eAAe,mBAC4B;AASjD,MAAM,6BAA6B,GAAG,CAAC,IAAU,EAA0C,EAAE,CACnG,CAAC,IAAuC,aAAvC,IAAI,uBAAJ,IAAI,CAAqC,0BAA0B,MAAK,SAAS,CAAC;AADvE,QAAA,6BAA6B,iCAC0C;AAQ7E,MAAM,iBAAiB,GAAG,CAAC,IAAU,EAA8B,EAAE,CAC3E,CAAC,IAA2B,aAA3B,IAAI,uBAAJ,IAAI,CAAyB,cAAc,MAAK,SAAS,CAAC;AAD/C,QAAA,iBAAiB,qBAC8B;AAKrD,MAAM,oBAAoB,GAAG,CAAC,IAAU,EAAiC,EAAE,CACjF,CAAC,IAA8B,aAA9B,IAAI,uBAAJ,IAAI,CAA4B,iBAAiB,MAAK,SAAS,CAAC;AADrD,QAAA,oBAAoB,wBACiC;AAK3D,MAAM,wBAAwB,GAAG,CAAC,IAAU,EAAqC,EAAE,CACzF,CAAC,IAAkC,aAAlC,IAAI,uBAAJ,IAAI,CAAgC,qBAAqB,MAAK,SAAS,CAAC;AAD7D,QAAA,wBAAwB,4BACqC;AAKnE,MAAM,yBAAyB,GAAG,CAAC,IAAU,EAAsC,EAAE,CAC3F,CAAC,IAAmC,aAAnC,IAAI,uBAAJ,IAAI,CAAiC,sBAAsB,MAAK,SAAS,CAAC;AAD/D,QAAA,yBAAyB,6BACsC;AAKrE,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACvF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,oBAAoB,MAAK,SAAS,CAAC;AAD3D,QAAA,uBAAuB,2BACoC;AAKjE,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAgC,EAAE,CAC/E,CAAC,IAA6B,aAA7B,IAAI,uBAAJ,IAAI,CAA2B,gBAAgB,MAAK,SAAS,CAAC;AADnD,QAAA,mBAAmB,uBACgC;AAKzD,MAAM,cAAc,GAAG,CAAC,IAAU,EAA2B,EAAE,CACrE,CAAC,IAAwB,aAAxB,IAAI,uBAAJ,IAAI,CAAsB,WAAW,MAAK,SAAS,CAAC;AADzC,QAAA,cAAc,kBAC2B;AAK/C,MAAM,sBAAsB,GAAG,CAAC,IAAU,EAAmC,EAAE,CACrF,CAAC,IAAgC,aAAhC,IAAI,uBAAJ,IAAI,CAA8B,mBAAmB,MAAK,SAAS,CAAC;AADzD,QAAA,sBAAsB,0BACmC;AAK/D,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAoC,EAAE,CACvF,CAAC,IAAiC,aAAjC,IAAI,uBAAJ,IAAI,CAA+B,oBAAoB,MAAK,SAAS,CAAC;AAD3D,QAAA,uBAAuB,2BACoC","sourcesContent":["import { BgsPlayerEntity, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\nimport { BoardSecret } from '../board-secret';\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\nimport {\n\tOnDespawnInput,\n\tOnFriendlyMinionSummonedTrinketInput,\n\tOnOtherSpawnAuraInput,\n\tOnOtherSpawnInput,\n\tOnSpawnInput,\n} from '../simulation/add-minion-to-board';\nimport {\n\tOnAfterDeathInput,\n\tOnAfterFriendlyMinionDeathInput,\n\tOnDeathInput,\n\tOnMinionKilledInput,\n} from '../simulation/attack';\nimport { AvengeInput } from '../simulation/avenge';\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\nimport { FullGameState } from '../simulation/internal-game-state';\nimport {\n\tOnAfterMagnetizeInput,\n\tOnAfterMagnetizeSelfInput,\n\tOnBeforeMagnetizeInput,\n\tOnBeforeMagnetizeSelfInput,\n} from '../simulation/magnetize';\nimport { OnAttackInput } from '../simulation/on-attack';\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\nimport { RebornEffectInput } from '../simulation/reborn';\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\nimport { OnStatsChangedInput } from '../simulation/stats';\n\nexport interface Card {\n\t// Maybe should make this mandatory\n\tcardIds?: readonly string[];\n\tstartOfCombat?: (\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\n\t\tinput: SoCInput,\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\n}\n\nexport interface DefaultChargesCard extends Card {\n\tdefaultCharges: (entity: BoardEntity) => number;\n}\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\n\nexport interface StartOfCombatCard extends Card {\n\tstartOfCombatTiming?: StartOfCombatTiming;\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\n}\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\n\tstartOfCombatFromHand: true;\n}\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\n\nexport interface TavernSpellCard extends Card {\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\n}\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\n\nexport interface OnTavernSpellCastCard extends Card {\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\n\nexport interface AfterTavernSpellCastCard extends Card {\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\n\n// Whenever this attacks\nexport interface RallyCard extends Card {\n\trally: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\n\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\n\tonWheneverAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\n\nexport interface AfterAnotherMinionAttacksCard extends Card {\n\tafterAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\n\nexport interface OnMinionAttackedCard extends Card {\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\n}\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\n\nexport interface OnSpawnedCard extends Card {\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\n}\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\n\nexport interface OnOtherSpawnedAuraCard extends Card {\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\n}\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\n\nexport interface OnOtherSpawnedCard extends Card {\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => void;\n}\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\n\nexport interface AfterOtherSpawnedCard extends Card {\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\n\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\n}\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\n\nexport interface OnDespawnedCard extends Card {\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\n}\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\n\nexport interface DeathrattleSpawnCard extends Card {\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\n}\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\n\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\nexport interface DeathrattleEffectCard extends Card {\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\n\nexport interface BattlecryCard extends Card {\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\n\t// is in game)\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\n}\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\n\nexport interface RebornEffectCard extends Card {\n\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\n\nexport interface RebornSelfEffectCard extends Card {\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\n\nexport interface OnBattlecryTriggeredCard extends Card {\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\n}\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\n\nexport interface AvengeCard extends Card {\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\n\tbaseAvengeValue: (cardId: string) => number;\n}\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\n\nexport interface DefaultScriptDataNumCard extends Card {\n\tdefaultScriptDataNum: (cardId: string) => number;\n}\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\n\n/** To use when another deathrattle is triggered */\nexport interface DeathrattleTriggeredCard extends Card {\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\n\n// export interface DeathrattleEnchantmentEffectCard extends Card {\n// \tdeathrattleEffectEnchantmentEffect: (\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\n// \t\tinput: DeathrattleTriggeredInput,\n// \t) => void;\n// \tcardIds: readonly string[];\n// }\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\n\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\n\tdeathrattleSpawnEnchantmentEffect: (\n\t\tenchantment: { cardId: string; originEntityId?: number; repeats?: number },\n\t\tminion: BoardEntity | null | undefined,\n\t\tinput: DeathrattleTriggeredInput,\n\t) => readonly BoardEntity[];\n\tcardIds: readonly string[];\n}\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\n\nexport interface OnCardAddedToHandCard extends Card {\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\n}\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\n\nexport interface EndOfTurnCard extends Card {\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\n}\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\nexport type EndOfTurnInput = BattlecryInput;\n\nexport interface OnDivineShieldUpdatedCard extends Card {\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\n}\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\n\nexport interface OnTauntUpdatedCard extends Card {\n\tonTauntUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnTauntUpdatedInput,\n\t) => void;\n}\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\n\nexport interface OnRebornUpdatedCard extends Card {\n\tonRebornUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnRebornUpdatedInput,\n\t) => void;\n}\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\n\nexport interface OnStealthUpdatedCard extends Card {\n\tonStealthUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnStealthUpdatedInput,\n\t) => void;\n}\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\n\nexport interface OnVenomousUpdatedCard extends Card {\n\tonVenomousUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnVenomousUpdatedInput,\n\t) => void;\n}\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\n\nexport interface OnWindfuryUpdatedCard extends Card {\n\tonWindfuryUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnWindfuryUpdatedInput,\n\t) => void;\n}\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\n\nexport interface OnStatsChangedCard extends Card {\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\n}\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\n\nexport interface AfterHeroDamagedCard extends Card {\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\n}\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\n\nexport interface OnDamagedCard extends Card {\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\n}\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\n\nexport interface AfterDealDamageCard extends Card {\n\t// Called whenever damage is dealt, both on the friendly and enemy side\n\t// So you need to check the \"friendly\" flag\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\n}\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\n\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\n}\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\n\nexport interface OnDeathCard extends Card {\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\n}\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\n\nexport interface OnAfterDeathCard extends Card {\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\n}\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\n\n/**\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\n * (e.g. only if `input.deadEntity.taunt`). Dispatch mirrors `handleAfterMinionsDeaths` via `cardMappings`.\n */\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity, input: OnAfterFriendlyMinionDeathInput) => void;\n}\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\n\nexport interface OnMinionKilledCard extends Card {\n\tonMinionKilled: (\n\t\tentity: BoardEntity,\n\t\tinput: OnMinionKilledInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\n\nexport interface OnBeforeMagnetizeCard extends Card {\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\n}\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\n\nexport interface OnBeforeMagnetizeSelfCard extends Card {\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\n}\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeToSelfCard extends Card {\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\n}\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\n\nexport interface OnAfterMagnetizeSelfCard extends Card {\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeCard extends Card {\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\n\nexport interface OnSpawnFailCard extends Card {\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\n}\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\n\nexport interface PlayedBloodGemsOnMeCard extends Card {\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\n}\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\n\nexport interface PlayedBloodGemsOnAnyCard extends Card {\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\n}\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\n\nexport interface OnSpawnFailInput {\n\tfailedSpawn: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n\nexport interface CastSpellInput {\n\tspellCardId: string;\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\n\ttarget: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherBoard: BoardEntity[];\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\nexport interface OnDamagedInput {\n\tdamagedEntity: BoardEntity;\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\n\tdamage: number;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"card.interface.js","sourceRoot":"","sources":["../../src/cards/card.interface.ts"],"names":[],"mappings":"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","sourcesContent":["import { BgsPlayerEntity, BgsQuestEntity, BoardTrinket } from '../bgs-player-entity';\nimport { BoardEnchantment, BoardEntity } from '../board-entity';\nimport { BoardSecret } from '../board-secret';\nimport { OnDivineShieldUpdatedInput } from '../keywords/divine-shield';\nimport { OnRebornUpdatedInput } from '../keywords/reborn';\nimport { OnStealthUpdatedInput } from '../keywords/stealth';\nimport { OnTauntUpdatedInput } from '../keywords/taunt';\nimport { OnVenomousUpdatedInput } from '../keywords/venomous';\nimport { OnWindfuryUpdatedInput } from '../keywords/windfury';\nimport {\n\tOnDespawnInput,\n\tOnFriendlyMinionSummonedTrinketInput,\n\tOnOtherSpawnAuraInput,\n\tOnOtherSpawnInput,\n\tOnSpawnInput,\n} from '../simulation/add-minion-to-board';\nimport {\n\tOnAfterDeathInput,\n\tOnAfterFriendlyMinionDeathInput,\n\tOnDeathInput,\n\tOnMinionKilledInput,\n} from '../simulation/attack';\nimport { AvengeInput } from '../simulation/avenge';\nimport { BattlecryInput, OnBattlecryTriggeredInput } from '../simulation/battlecries';\nimport { PlayedBloodGemsOnAnyInput, PlayedBloodGemsOnMeInput } from '../simulation/blood-gems';\nimport { OnCardAddedToHandInput } from '../simulation/cards-in-hand';\nimport { AfterDealDamageInput, AfterFriendlyMinionDamagedInput } from '../simulation/damage-effects';\nimport { AfterHeroDamagedInput } from '../simulation/damage-to-hero';\nimport { DeathrattleTriggeredInput } from '../simulation/deathrattle-on-trigger';\nimport { FullGameState } from '../simulation/internal-game-state';\nimport {\n\tOnAfterMagnetizeInput,\n\tOnAfterMagnetizeSelfInput,\n\tOnBeforeMagnetizeInput,\n\tOnBeforeMagnetizeSelfInput,\n} from '../simulation/magnetize';\nimport { OnAttackInput } from '../simulation/on-attack';\nimport { OnMinionAttackedInput } from '../simulation/on-being-attacked';\nimport { RebornEffectInput } from '../simulation/reborn';\nimport { SoCInput } from '../simulation/start-of-combat/start-of-combat-input';\nimport { OnStatsChangedInput } from '../simulation/stats';\n\nexport interface Card {\n\t// Maybe should make this mandatory\n\tcardIds?: readonly string[];\n\tstartOfCombat?: (\n\t\ttrinket: BoardEntity | BoardTrinket | BgsPlayerEntity | BoardSecret,\n\t\tinput: SoCInput,\n\t) => boolean | { hasTriggered: boolean; shouldRecomputeCurrentAttacker: boolean };\n}\n\nexport interface DefaultChargesCard extends Card {\n\tdefaultCharges: (entity: BoardEntity) => number;\n}\nexport const hasDefaultCharges = (card: Card): card is DefaultChargesCard =>\n\t(card as DefaultChargesCard)?.defaultCharges !== undefined;\n\nexport interface StartOfCombatCard extends Card {\n\tstartOfCombatTiming?: StartOfCombatTiming;\n\tstartOfCombat: NonNullable<Card['startOfCombat']>;\n}\nexport const hasStartOfCombat = (card: Card): card is StartOfCombatCard =>\n\t(card as StartOfCombatCard)?.startOfCombat !== undefined;\nexport interface StartOfCombatFromHandCard extends StartOfCombatCard {\n\tstartOfCombatFromHand: true;\n}\nexport const hasStartOfCombatFromHand = (card: Card): card is StartOfCombatFromHandCard =>\n\t(card as StartOfCombatFromHandCard)?.startOfCombatFromHand !== undefined;\nexport type StartOfCombatTiming = 'start-of-combat' | 'pre-combat' | 'illidan';\n\nexport interface TavernSpellCard extends Card {\n\tcastTavernSpell: (spellCardId: string, input: CastSpellInput) => void;\n}\nexport const hasCastTavernSpell = (card: Card): card is TavernSpellCard =>\n\t(card as TavernSpellCard)?.castTavernSpell !== undefined;\n\nexport interface OnTavernSpellCastCard extends Card {\n\tonTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasOnTavernSpellCast = (card: Card): card is OnTavernSpellCastCard =>\n\t(card as OnTavernSpellCastCard)?.onTavernSpellCast !== undefined;\n\nexport interface AfterTavernSpellCastCard extends Card {\n\tafterTavernSpellCast: (entity: BoardEntity | BoardTrinket, input: CastSpellInput) => void;\n}\nexport const hasAfterTavernSpellCast = (card: Card): card is AfterTavernSpellCastCard =>\n\t(card as AfterTavernSpellCastCard)?.afterTavernSpellCast !== undefined;\n\n// Whenever this attacks\nexport interface RallyCard extends Card {\n\trally: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasRally = (card: Card): card is RallyCard => (card as RallyCard)?.rally !== undefined;\n\nexport interface OnWheneverAnotherMinionAttacksCard extends Card {\n\tonWheneverAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnWheneverAnotherMinionAttacks = (card: Card): card is OnWheneverAnotherMinionAttacksCard =>\n\t(card as OnWheneverAnotherMinionAttacksCard)?.onWheneverAnotherMinionAttacks !== undefined;\n\nexport interface AfterAnotherMinionAttacksCard extends Card {\n\tafterAnotherMinionAttacks: (\n\t\tminion: BoardEntity | BoardTrinket | BoardEnchantment,\n\t\tinput: OnAttackInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasAfterAnotherMinionAttacks = (card: Card): card is AfterAnotherMinionAttacksCard =>\n\t(card as AfterAnotherMinionAttacksCard)?.afterAnotherMinionAttacks !== undefined;\n\nexport interface OnMinionAttackedCard extends Card {\n\tonAttacked: (minion: BoardEntity, input: OnMinionAttackedInput) => void;\n}\nexport const hasOnMinionAttacked = (card: Card): card is OnMinionAttackedCard =>\n\t(card as OnMinionAttackedCard)?.onAttacked !== undefined;\n\nexport interface OnSpawnedCard extends Card {\n\tonSpawned: (minion: BoardEntity, input: OnSpawnInput) => void;\n}\nexport const hasOnSpawned = (card: Card): card is OnSpawnedCard => (card as OnSpawnedCard)?.onSpawned !== undefined;\n\nexport interface OnOtherSpawnedAuraCard extends Card {\n\tonOtherSpawnedAura: (minion: BoardEntity, input: OnOtherSpawnAuraInput) => void;\n}\nexport const hasOnOtherAuraSpawned = (card: Card): card is OnOtherSpawnedAuraCard =>\n\t(card as OnOtherSpawnedAuraCard)?.onOtherSpawnedAura !== undefined;\n\nexport interface OnOtherSpawnedCard extends Card {\n\tonOtherSpawned: (minion: BoardEntity, input: OnOtherSpawnInput) => void;\n}\nexport const hasOnOtherSpawned = (card: Card): card is OnOtherSpawnedCard =>\n\t(card as OnOtherSpawnedCard)?.onOtherSpawned !== undefined;\n\nexport interface AfterOtherSpawnedCard extends Card {\n\tafterOtherSpawned: (minion: BoardEntity | BoardTrinket, input: OnOtherSpawnInput) => void;\n}\nexport const hasAfterOtherSpawned = (card: Card): card is AfterOtherSpawnedCard =>\n\t(card as AfterOtherSpawnedCard)?.afterOtherSpawned !== undefined;\n\nexport interface OnFriendlyMinionSummonedTrinketCard extends Card {\n\tonFriendlyMinionSummoned: (trinket: BoardTrinket, input: OnFriendlyMinionSummonedTrinketInput) => void;\n}\nexport const hasOnFriendlyMinionSummonedTrinket = (card: Card): card is OnFriendlyMinionSummonedTrinketCard =>\n\t(card as OnFriendlyMinionSummonedTrinketCard)?.onFriendlyMinionSummoned !== undefined;\n\nexport interface OnDespawnedCard extends Card {\n\tonDespawned: (minion: BoardEntity, input: OnDespawnInput) => void;\n}\nexport const hasOnDespawned = (card: Card): card is OnDespawnedCard =>\n\t(card as OnDespawnedCard)?.onDespawned !== undefined;\n\nexport interface DeathrattleSpawnCard extends Card {\n\tdeathrattleSpawn: (minion: BoardEntity, input: DeathrattleTriggeredInput) => readonly BoardEntity[];\n}\nexport const hasDeathrattleSpawn = (card: Card): card is DeathrattleSpawnCard =>\n\t(card as DeathrattleSpawnCard)?.deathrattleSpawn !== undefined;\n\n/** Deathrattle that does not return board spawns (hand buffs, stat grants, etc.). */\nexport interface DeathrattleEffectCard extends Card {\n\tdeathrattleEffect: (minion: BoardEntity, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasDeathrattleEffect = (card: Card): card is DeathrattleEffectCard =>\n\t(card as DeathrattleEffectCard)?.deathrattleEffect !== undefined;\n\nexport interface BattlecryCard extends Card {\n\t// boolean return type is used only for conditional battlecries (eg cards that only work as battlecries if a specific trinket\n\t// is in game)\n\tbattlecry: (minion: BoardEntity, input: BattlecryInput) => boolean;\n}\nexport const hasBattlecry = (card: Card): card is BattlecryCard => (card as BattlecryCard)?.battlecry !== undefined;\n\nexport interface RebornEffectCard extends Card {\n\trebornEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornEffect = (card: Card): card is RebornEffectCard =>\n\t(card as RebornEffectCard)?.rebornEffect !== undefined;\n\nexport interface RebornSelfEffectCard extends Card {\n\trebornSelfEffect: (minion: BoardEntity, input: RebornEffectInput) => void;\n}\nexport const hasRebornSelfEffect = (card: Card): card is RebornSelfEffectCard =>\n\t(card as RebornSelfEffectCard)?.rebornSelfEffect !== undefined;\n\nexport interface OnBattlecryTriggeredCard extends Card {\n\tonBattlecryTriggered: (minion: BoardEntity, input: OnBattlecryTriggeredInput) => void;\n}\nexport const hasOnBattlecryTriggered = (card: Card): card is OnBattlecryTriggeredCard =>\n\t(card as OnBattlecryTriggeredCard)?.onBattlecryTriggered !== undefined;\n\nexport interface AvengeCard extends Card {\n\tavenge: (minion: BoardEntity | BoardTrinket, input: AvengeInput) => void | readonly BoardEntity[];\n\tbaseAvengeValue: (cardId: string) => number;\n}\nexport const hasAvenge = (card: Card): card is AvengeCard => (card as AvengeCard)?.avenge !== undefined;\n\nexport interface DefaultScriptDataNumCard extends Card {\n\tdefaultScriptDataNum: (cardId: string) => number;\n}\nexport const hasDefaultScriptDataNum = (card: Card): card is DefaultScriptDataNumCard =>\n\t(card as DefaultScriptDataNumCard)?.defaultScriptDataNum !== undefined;\n\n/** To use when another deathrattle is triggered */\nexport interface DeathrattleTriggeredCard extends Card {\n\tonDeathrattleTriggered: (minion: BoardEntity | BoardTrinket, input: DeathrattleTriggeredInput) => void;\n}\nexport const hasOnDeathrattleTriggered = (card: Card): card is DeathrattleTriggeredCard =>\n\t(card as DeathrattleTriggeredCard)?.onDeathrattleTriggered !== undefined;\n\n// export interface DeathrattleEnchantmentEffectCard extends Card {\n// \tdeathrattleEffectEnchantmentEffect: (\n// \t\tminion: { cardId: string; originEntityId?: number; repeats?: number },\n// \t\tinput: DeathrattleTriggeredInput,\n// \t) => void;\n// \tcardIds: readonly string[];\n// }\n// export const hasDeathrattleEnchantmentEffect = (card: Card): card is DeathrattleEnchantmentEffectCard =>\n// \t(card as DeathrattleEnchantmentEffectCard)?.deathrattleEffectEnchantmentEffect !== undefined;\n\nexport interface DeathrattleSpawnEnchantmentCard extends Card {\n\tdeathrattleSpawnEnchantmentEffect: (\n\t\tenchantment: { cardId: string; originEntityId?: number; repeats?: number },\n\t\tminion: BoardEntity | null | undefined,\n\t\tinput: DeathrattleTriggeredInput,\n\t) => readonly BoardEntity[];\n\tcardIds: readonly string[];\n}\nexport const hasDeathrattleSpawnEnchantment = (card: Card): card is DeathrattleSpawnEnchantmentCard =>\n\t(card as DeathrattleSpawnEnchantmentCard)?.deathrattleSpawnEnchantmentEffect !== undefined;\n\nexport interface OnCardAddedToHandCard extends Card {\n\tonCardAddedToHand: (entity: BoardEntity | BgsQuestEntity | BoardTrinket, input: OnCardAddedToHandInput) => void;\n}\nexport const hasOnCardAddedToHand = (card: Card): card is OnCardAddedToHandCard =>\n\t(card as OnCardAddedToHandCard)?.onCardAddedToHand !== undefined;\n\nexport interface EndOfTurnCard extends Card {\n\t// Use BattlecryInput because it's the only way end of turn effects are triggered\n\tendOfTurn: (entity: BoardEntity, input: EndOfTurnInput) => void;\n}\nexport const hasEndOfTurn = (card: Card): card is EndOfTurnCard => (card as EndOfTurnCard)?.endOfTurn !== undefined;\nexport type EndOfTurnInput = BattlecryInput;\n\nexport interface OnDivineShieldUpdatedCard extends Card {\n\tonDivineShieldUpdated: (entity: BoardEntity | BoardTrinket, input: OnDivineShieldUpdatedInput) => void;\n}\nexport const hasOnDivineShieldUpdated = (card: Card): card is OnDivineShieldUpdatedCard =>\n\t(card as OnDivineShieldUpdatedCard)?.onDivineShieldUpdated !== undefined;\n\nexport interface OnTauntUpdatedCard extends Card {\n\tonTauntUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnTauntUpdatedInput,\n\t) => void;\n}\nexport const hasOnTauntUpdated = (card: Card): card is OnTauntUpdatedCard =>\n\t(card as OnTauntUpdatedCard)?.onTauntUpdated !== undefined;\n\nexport interface OnRebornUpdatedCard extends Card {\n\tonRebornUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnRebornUpdatedInput,\n\t) => void;\n}\nexport const hasOnRebornUpdated = (card: Card): card is OnRebornUpdatedCard =>\n\t(card as OnRebornUpdatedCard)?.onRebornUpdated !== undefined;\n\nexport interface OnStealthUpdatedCard extends Card {\n\tonStealthUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnStealthUpdatedInput,\n\t) => void;\n}\nexport const hasOnStealthUpdated = (card: Card): card is OnStealthUpdatedCard =>\n\t(card as OnStealthUpdatedCard)?.onStealthUpdated !== undefined;\n\nexport interface OnVenomousUpdatedCard extends Card {\n\tonVenomousUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnVenomousUpdatedInput,\n\t) => void;\n}\nexport const hasOnVenomousUpdated = (card: Card): card is OnVenomousUpdatedCard =>\n\t(card as OnVenomousUpdatedCard)?.onVenomousUpdated !== undefined;\n\nexport interface OnWindfuryUpdatedCard extends Card {\n\tonWindfuryUpdated: (\n\t\tentity: BoardEntity,\n\t\timpactedEntity: BoardEntity,\n\t\tpreviousValue: boolean,\n\t\tinput: OnWindfuryUpdatedInput,\n\t) => void;\n}\nexport const hasOnWindfuryUpdated = (card: Card): card is OnWindfuryUpdatedCard =>\n\t(card as OnWindfuryUpdatedCard)?.onWindfuryUpdated !== undefined;\n\nexport interface OnStatsChangedCard extends Card {\n\tonStatsChanged: (entity: BoardEntity, input: OnStatsChangedInput) => void;\n}\nexport const hasOnStatsChanged = (card: Card): card is OnStatsChangedCard =>\n\t(card as OnStatsChangedCard)?.onStatsChanged !== undefined;\n\nexport interface AfterHeroDamagedCard extends Card {\n\tafterHeroDamaged: (entity: BoardEntity | BoardTrinket, input: AfterHeroDamagedInput) => void;\n}\nexport const hasAfterHeroDamaged = (card: Card): card is AfterHeroDamagedCard =>\n\t(card as AfterHeroDamagedCard)?.afterHeroDamaged !== undefined;\n\nexport interface OnDamagedCard extends Card {\n\tonDamaged: (entity: BoardEntity, input: OnDamagedInput) => void;\n}\nexport const hasOnDamaged = (card: Card): card is OnDamagedCard => (card as OnDamagedCard)?.onDamaged !== undefined;\n\nexport interface AfterDealDamageCard extends Card {\n\t// Called whenever damage is dealt, both on the friendly and enemy side\n\t// So you need to check the \"friendly\" flag\n\tafterDealDamage: (entity: BoardEntity, input: AfterDealDamageInput) => void;\n}\nexport const hasAfterDealDamage = (card: Card): card is AfterDealDamageCard =>\n\t(card as AfterDealDamageCard)?.afterDealDamage !== undefined;\n\nexport interface AfterFriendlyMinionDamagedTrinketCard extends Card {\n\tafterFriendlyMinionDamaged: (trinket: BoardTrinket, input: AfterFriendlyMinionDamagedInput) => void;\n}\nexport const hasAfterFriendlyMinionDamagedTrinket = (card: Card): card is AfterFriendlyMinionDamagedTrinketCard =>\n\t(card as AfterFriendlyMinionDamagedTrinketCard)?.afterFriendlyMinionDamaged !== undefined;\n\nexport interface OnDeathCard extends Card {\n\tonDeath: (entity: BoardEntity, input: OnDeathInput) => void;\n}\nexport const hasOnDeath = (card: Card): card is OnDeathCard => (card as OnDeathCard)?.onDeath !== undefined;\n\nexport interface OnAfterDeathCard extends Card {\n\tonAfterDeath: (entity: BoardEntity | BoardTrinket, input: OnAfterDeathInput) => void;\n}\nexport const hasOnAfterDeath = (card: Card): card is OnAfterDeathCard =>\n\t(card as OnAfterDeathCard)?.onAfterDeath !== undefined;\n\n/**\n * After any friendly board minion dies (during `applyWheneverMinionDiesEffect`). Filter in the card\n * (e.g. only if `input.deadEntity.taunt`). Board minions and trinkets that implement this are dispatched\n * from `deathrattle-effects`.\n */\nexport interface OnAfterFriendlyMinionDeathCard extends Card {\n\tonAfterFriendlyMinionDeath: (listener: BoardEntity | BoardTrinket, input: OnAfterFriendlyMinionDeathInput) => void;\n}\nexport const hasOnAfterFriendlyMinionDeath = (card: Card): card is OnAfterFriendlyMinionDeathCard =>\n\t(card as OnAfterFriendlyMinionDeathCard)?.onAfterFriendlyMinionDeath !== undefined;\n\nexport interface OnMinionKilledCard extends Card {\n\tonMinionKilled: (\n\t\tentity: BoardEntity,\n\t\tinput: OnMinionKilledInput,\n\t) => { dmgDoneByAttacker: number; dmgDoneByDefender: number };\n}\nexport const hasOnMinionKilled = (card: Card): card is OnMinionKilledCard =>\n\t(card as OnMinionKilledCard)?.onMinionKilled !== undefined;\n\nexport interface OnBeforeMagnetizeCard extends Card {\n\tonBeforeMagnetize: (entity: BoardEntity | BoardTrinket, input: OnBeforeMagnetizeInput) => void;\n}\nexport const hasOnBeforeMagnetize = (card: Card): card is OnBeforeMagnetizeCard =>\n\t(card as OnBeforeMagnetizeCard)?.onBeforeMagnetize !== undefined;\n\nexport interface OnBeforeMagnetizeSelfCard extends Card {\n\tonBeforeMagnetizeSelf: (entity: BoardEntity, input: OnBeforeMagnetizeSelfInput) => void;\n}\nexport const hasOnBeforeMagnetizeSelf = (card: Card): card is OnBeforeMagnetizeSelfCard =>\n\t(card as OnBeforeMagnetizeSelfCard)?.onBeforeMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeToSelfCard extends Card {\n\tonAfterMagnetizeToSelf: (entity: BoardEntity, input: OnAfterMagnetizeSelfInput) => void;\n}\nexport const hasOnAfterMagnetizeToSelf = (card: Card): card is OnAfterMagnetizeToSelfCard =>\n\t(card as OnAfterMagnetizeToSelfCard)?.onAfterMagnetizeToSelf !== undefined;\n\nexport interface OnAfterMagnetizeSelfCard extends Card {\n\tonAfterMagnetizeSelf: (entity: BoardEntity, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetizeSelf = (card: Card): card is OnAfterMagnetizeSelfCard =>\n\t(card as OnAfterMagnetizeSelfCard)?.onAfterMagnetizeSelf !== undefined;\n\nexport interface OnAfterMagnetizeCard extends Card {\n\tonAfterMagnetize: (entity: BoardEntity | BoardTrinket, input: OnAfterMagnetizeInput) => void;\n}\nexport const hasOnAfterMagnetize = (card: Card): card is OnAfterMagnetizeCard =>\n\t(card as OnAfterMagnetizeCard)?.onAfterMagnetize !== undefined;\n\nexport interface OnSpawnFailCard extends Card {\n\tonSpawnFail: (entity: BoardEntity, input: OnSpawnFailInput) => void;\n}\nexport const hasOnSpawnFail = (card: Card): card is OnSpawnFailCard =>\n\t(card as OnSpawnFailCard)?.onSpawnFail !== undefined;\n\nexport interface PlayedBloodGemsOnMeCard extends Card {\n\tplayedBloodGemsOnMe: (entity: BoardEntity, input: PlayedBloodGemsOnMeInput) => void;\n}\nexport const hasPlayedBloodGemsOnMe = (card: Card): card is PlayedBloodGemsOnMeCard =>\n\t(card as PlayedBloodGemsOnMeCard)?.playedBloodGemsOnMe !== undefined;\n\nexport interface PlayedBloodGemsOnAnyCard extends Card {\n\tplayedBloodGemsOnAny: (entity: BoardEntity, input: PlayedBloodGemsOnAnyInput) => void;\n}\nexport const hasPlayedBloodGemsOnAny = (card: Card): card is PlayedBloodGemsOnAnyCard =>\n\t(card as PlayedBloodGemsOnAnyCard)?.playedBloodGemsOnAny !== undefined;\n\nexport interface OnSpawnFailInput {\n\tfailedSpawn: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n\nexport interface CastSpellInput {\n\tspellCardId: string;\n\tsource: BoardEntity | BoardTrinket | BgsPlayerEntity;\n\ttarget: BoardEntity;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherBoard: BoardEntity[];\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\nexport interface OnDamagedInput {\n\tdamagedEntity: BoardEntity;\n\tdamageDealer: BoardEntity | BgsPlayerEntity;\n\tdamage: number;\n\tboard: BoardEntity[];\n\thero: BgsPlayerEntity;\n\totherHero: BgsPlayerEntity;\n\tgameState: FullGameState;\n}\n"]}
|
package/dist/cards/cards-data.js
CHANGED
|
@@ -234,7 +234,8 @@ class CardsData {
|
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
|
|
237
|
+
const result = (_a = (0, utils_1.pickRandom)(pool)) === null || _a === void 0 ? void 0 : _a.id;
|
|
238
|
+
return result;
|
|
238
239
|
}
|
|
239
240
|
getRandomDivineShield(tavernLimitUpper) {
|
|
240
241
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":";;;AAAA,iEAQsC;AAGtC,gDAA4C;AAE5C,6CAAgE;AAChE,oCAAiF;AACjF,qDAAsE;AACtE,0DAAqD;AAE9C,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,QAAyB,EAAW,EAAE;;IAC7E,OAAO,MAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,0CAAE,QAAQ,CAAC,wBAAO,CAAC,wBAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAEW,QAAA,kBAAkB,GAAG;IACjC,wBAAO,CAAC,KAAK;IACb,wBAAO,CAAC,aAAa;IACrB,wBAAO,CAAC,QAAQ;IAChB,wBAAO,CAAC,SAAS;IACjB,wBAAO,CAAC,QAAQ;IAChB,wBAAO,CAAC,OAAO;IACf,wBAAO,CAAC,MAAM;CACd,CAAC;AAEK,MAAM,UAAU,GAAG,CAAC,MAAmB,EAAE,OAAgB,EAAE,EAAE;IACnE,QAAQ,OAAO,EAAE;QAChB,KAAK,wBAAO,CAAC,KAAK;YACjB,OAAO,MAAM,CAAC,KAAK,CAAC;QACrB,KAAK,wBAAO,CAAC,aAAa;YACzB,OAAO,MAAM,CAAC,YAAY,CAAC;QAC5B,KAAK,wBAAO,CAAC,QAAQ;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACxB,KAAK,wBAAO,CAAC,QAAQ;YACpB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACxB,KAAK,wBAAO,CAAC,OAAO;YACnB,OAAO,MAAM,CAAC,OAAO,CAAC;QACvB,KAAK,wBAAO,CAAC,MAAM;YAClB,OAAO,MAAM,CAAC,MAAM,CAAC;QACtB;YACC,OAAO,KAAK,CAAC;KACd;AACF,CAAC,CAAC;AAjBW,QAAA,UAAU,cAiBrB;AAEF,MAAa,SAAS;IAwBrB,YAA6B,QAAyB,EAAE,IAAI,GAAG,IAAI;QAAtC,aAAQ,GAAR,QAAQ,CAAiB;QACrD,IAAI,IAAI,EAAE;YACT,IAAI,CAAC,YAAY,EAAE,CAAC;SACpB;IACF,CAAC;IAEM,YAAY,CAAC,WAA6B,EAAE,SAA6B;QAC/E,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ;aAClC,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,oCAAmB,EAAC,IAAI,CAAC,CAAC;aAE3C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,IAAI,CAAC,WAAW,KAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,0CAAE,WAAW,CAAA,CAAA,EAAA,CAAC;aACvG,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aACxE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,WAAW,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC;aACxC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAChB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,oBAAoC;YACtD,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC;YACrB,CAAC,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,oBAAuC;gBAC5D,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC;gBACrB,CAAC,CAAC,IAAI,CACP,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,cAAc;aACxB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAChB,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,oBAAyC;YAC3D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CACvB,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,IAAA,uBAAe,EAAC,CAAC,IAAmB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1F,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI;aAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,SAAS,CAAC;aACvC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,WAAW,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,qBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,cAA4B,CAAC,CAAC;QAC7F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI;aACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,qBAAI,CAAC,SAAS,CAAC,CAAC;aAC5D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,cAAiC,CAAC;aAC1D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAQzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI;aAC3B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,qBAAI,CAAC,KAAK,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,iCAA8C,CAAC;aACvE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI;aACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,WAAW,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,qBAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,sBAAc,EAAC,IAAI,CAAC,KAAK,EAAE,qBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI;aACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,QAAQ,CAAC,CAAC;aACrD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI;aAC/B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,WAAW,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,wBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;aACjC,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,4BAAW,CAAC,4BAAW,CAAC,UAAU,CAAC,CAAC;aACpE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC;aAExC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ;aACvC,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;aACtD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,KAAK,CAAC,CAAA,EAAA,CAAC;aACjE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,SAAS,0CAAE,QAAQ,CAAC,cAAc,CAAC,CAAA,EAAA,CAAC;aACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,6BAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;aACjC,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC;aAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ;aACjC,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC;aAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC,QAAQ;aACnD,QAAQ,EAAE;aACV,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC;aAClD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC;aAC/D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAEM,WAAW,CAAC,MAAc;QAChC,MAAM,UAAU,GAAG,6BAAY,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,IAAA,0BAAS,EAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC1C;QACD,QAAQ,MAAM,EAAE;YACf,gBAA2C;YAC3C;gBAEC,OAAO,CAAC,CAAC;YACV,gBAAkC;YAClC,kBAAoC;YACpC,gBAAyC;YACzC,kBAA2C;YAC3C,2BAAqD;YACrD,6BAAuD;YACvD,gBAAkC;YAClC;gBACC,OAAO,CAAC,CAAC;YACV,uBAAuC;YACvC,gBAAuC;YACvC;gBACC,OAAO,CAAC,CAAC;YACV,sBAAgC;YAChC,gBAAyC;YACzC,kBAA2C;YAO3C,gBAAuC;YACvC,kBAAyC;YACzC,gBAA2C;YAC3C,kBAA6C;YAC7C,uBAA8C;YAC9C,uBAA2C;YAC3C,gBAAuC;YACvC,kBAAyC;YACzC,gBAAgC;YAChC;gBACC,OAAO,CAAC,CAAC;YACV,gBAAyC;YACzC,kBAA2C;YAC3C;gBACC,OAAO,CAAC,CAAC;YACV;gBACC,OAAO,CAAC,CAAC;YACV;gBACC,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;IACV,CAAC;IAEM,oBAAoB,CAAC,MAAc;QACzC,MAAM,wBAAwB,GAAG,6BAAY,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,IAAA,wCAAuB,EAAC,wBAAwB,CAAC,EAAE;YACtD,OAAO,wBAAwB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;SAC7D;QACD,QAAQ,MAAM,EAAE;YACf,uBAA8C;YAC9C,0BAAgD;YAChD,4BAAuE;YACvE,0BAA+C;YAC/C,0BAAiD;YACjD,2BAAwE;YACxE,0BAAkD;YAClD;gBACC,OAAO,CAAC,CAAC;YACV,0BAAkD;YAClD,0BAAgD;YAChD;gBACC,OAAO,CAAC,CAAC;YACV;gBACC,OAAO,CAAC,CAAC;SACV;IACF,CAAC;IAEM,cAAc,CAAC,MAAc;;QACnC,OAAO,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,mCAAI,CAAC,CAAC;IACrD,CAAC;IAEM,4BAA4B,CAAC,UAAkB;;QAIrD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAA,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;SACxD;QACD,OAAO,MAAA,IAAA,kBAAU,EAAC,cAAc,CAAC,0CAAE,EAAE,CAAC;IACvC,CAAC;IAEM,+BAA+B,CAAC,UAAkB;;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;QAC1E,IAAI,CAAC,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,MAAM,CAAA,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;SACxD;QACD,OAAO,MAAA,IAAA,kBAAU,EAAC,cAAc,CAAC,0CAAE,EAAE,CAAC;IACvC,CAAC;IAEM,wBAAwB,CAAC,gBAAwB;;QACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,CAAC,EAAE,wBAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QAC1E,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,0BAA0B,CAChC,YAA6B,EAC7B,SAA4B,EAC5B,gBAAwB,EACxB,YAA0B,EAC1B,YAA0B;;QAE1B,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC5D,IAAA,mBAAW,EAAC,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CACzD,CAAC;QACF,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QAE/E,IAAI,YAAY,IAAI,YAAY,IAAI,wBAAU,CAAC,MAAM,IAAI,wBAAU,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjG,MAAM,MAAM,GAAG,wBAAU,CAAC,iBAAiB,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CACL,wBAAU,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC;gBAClD,wBAAU,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CACnD,CAAC;YACF,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,YAAY,EAAE;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC9D,IAAI,MAAM,EAAE;oBACX,wBAAU,CAAC,iBAAiB,GAAG,wBAAU,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;oBACxF,OAAO,MAAM,CAAC,YAAY,CAAC;iBAC3B;aACD;SACD;QAED,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,qBAAqB,CAAC,gBAAwB;;QACpD,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,CAAC,EAAE,wBAAO,CAAC,aAAa,CAAC,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QAC7E,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,cAAc,CAAC,gBAAwB;;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,CAAC,EAAE,wBAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QACvE,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,uBAAuB,CAC7B,KAAW,EACX,gBAAwB,EACxB,gBAAmC,EAAE;;QAErC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;aACzD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC;aAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,sBAAsB,CAAC,gBAAwB;;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,MAAA,CAAC,CAAC,SAAS,0CAAE,QAAQ,CAAC,wBAAO,CAAC,wBAAO,CAAC,OAAO,CAAC,CAAC,CAAA,EAAA,CAAC;aAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,MAAM,CAAC,CAAA,EAAA,CAAC;aAClE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,gBAAgB,CAAC,CAAC;QACjD,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,mBAAmB,CAAC,OAAmC;;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7C,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CACnE,CAAC;QACF,OAAO,MAAA,IAAA,kBAAU,EAAC,IAAI,CAAC,0CAAE,EAAE,CAAC;IAC7B,CAAC;IAEM,QAAQ,CAAC,IAAmB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAEO,YAAY,CAAC,WAA4B,EAAE,SAA4B,EAAE,eAAe,GAAG,IAAI;QACtG,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,IAAI,eAAe,EAAE;YAC1C,OAAO,IAAI,CAAC;SACZ;QACD,OAAO,CAAC,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;aACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,KAAK,qBAAI,CAAC,GAAG,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,CAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvG,CAAC;IAEM,oBAAoB,CAAC,OAA8D;QACzF,OAAO,IAAI,CAAC;IACb,CAAC;IAGM,0CAA0C;QAChD,OAAO,IAAI,CAAC,QAAQ;aAClB,QAAQ,EAAE;aACV,MAAM,CACN,CAAC,CAAC,EAAE,EAAE;;YACL,OAAA,CAAC,CAAC,GAAG,KAAK,eAAe;gBACzB,CAAC,CAAC,CAAC,OAAO;gBACV,CAAC,MAAA,CAAC,CAAC,IAAI,mCAAI,CAAC,CAAC,KAAK,CAAC;gBACnB,CAAA,MAAA,CAAC,CAAC,IAAI,0CAAE,WAAW,EAAE,MAAK,yBAAQ,CAAC,yBAAQ,CAAC,KAAK,CAAC;gBAClD,6BAAY,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAA;SAAA,CAC3B;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;CACD;AA/UD,8BA+UC","sourcesContent":["import {\n\tAllCardsService,\n\tCardType,\n\tGameTag,\n\tisBattlegroundsCard,\n\tRace,\n\tReferenceCard,\n\tSpellSchool,\n} from '@firestone-hs/reference-data';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\nimport { BoardEntity } from '../board-entity';\nimport { debugState } from '../debug-state';\nimport { CardIds } from '../services/card-ids';\nimport { groupByFunction, pickRandom } from '../services/utils';\nimport { getRaceEnum, hasMechanic, isCorrectTribe, isVolumizer } from '../utils';\nimport { hasAvenge, hasDefaultScriptDataNum } from './card.interface';\nimport { cardMappings } from './impl/_card-mappings';\n\nexport const isWhelp = (cardId: string, allCards: AllCardsService): boolean => {\n\treturn allCards.getCard(cardId).mechanics?.includes(GameTag[GameTag.WHELP]);\n};\n\nexport const validBonusKeywords = [\n\tGameTag.TAUNT,\n\tGameTag.DIVINE_SHIELD,\n\tGameTag.VENOMOUS,\n\tGameTag.POISONOUS,\n\tGameTag.WINDFURY,\n\tGameTag.STEALTH,\n\tGameTag.REBORN,\n];\n\nexport const hasKeyword = (entity: BoardEntity, keyword: GameTag) => {\n\tswitch (keyword) {\n\t\tcase GameTag.TAUNT:\n\t\t\treturn entity.taunt;\n\t\tcase GameTag.DIVINE_SHIELD:\n\t\t\treturn entity.divineShield;\n\t\tcase GameTag.VENOMOUS:\n\t\t\treturn entity.venomous;\n\t\tcase GameTag.WINDFURY:\n\t\t\treturn entity.windfury;\n\t\tcase GameTag.STEALTH:\n\t\t\treturn entity.stealth;\n\t\tcase GameTag.REBORN:\n\t\t\treturn entity.reborn;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\nexport class CardsData {\n\tpublic ghastcoilerSpawns: readonly string[];\n\tpublic impMamaSpawns: readonly string[];\n\tpublic demonSpawns: readonly string[];\n\tpublic gentleDjinniSpawns: readonly string[];\n\tpublic kilrekSpawns: readonly string[];\n\tpublic battlecryMinions: readonly string[];\n\tpublic deathrattleMinions: readonly string[];\n\tpublic pirateSpawns: readonly string[];\n\tpublic beastSpawns: readonly string[];\n\tpublic scrapScraperSpawns: readonly string[];\n\t/** Tavern spells with BACON_BOUNTY (Proud Privateer, Lost City Looter). */\n\tpublic bountyTavernSpellIds: readonly string[];\n\tpublic endOfTurnMinions: readonly string[];\n\tpublic magneticMinions: readonly ReferenceCard[];\n\tpublic spellcraftPool: readonly ReferenceCard[];\n\n\tpublic putricidePool1: readonly string[];\n\tpublic putricidePool2: readonly string[];\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\n\n\tprivate pool: readonly ReferenceCard[];\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\n\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\n\t\tif (init) {\n\t\t\tthis.inititialize();\n\t\t}\n\t}\n\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\n\t\tconst poolWithGolden = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => isBattlegroundsCard(card))\n\t\t\t// Premiums are not in bacon pool\n\t\t\t.filter((card) => card.isBaconPool || this.allCards.getCard(card.battlegroundsNormalDbfId)?.isBaconPool)\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((card) => !hasMechanic(card, GameTag.BACON_BUDDY))\n\t\t\t.filter((card) => card.set !== 'Vanilla')\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\n\t\t\t\t\t? card.techLevel >= 3\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\n\t\t\t\t\t? card.techLevel <= 4\n\t\t\t\t\t: true,\n\t\t\t);\n\t\tthis.pool = poolWithGolden\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\n\t\t\t\t\t? this.isGolden(card)\n\t\t\t\t\t: !this.isGolden(card),\n\t\t\t);\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\n\t\tthis.ghastcoilerSpawns = this.pool\n\t\t\t.filter((card) => card.id !== 'BGS_008')\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.map((card) => card.id);\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\n\t\tthis.gentleDjinniSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\n\t\t\t.map((card) => card.id);\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\n\t\t// this.festergutSpawns = pool\n\t\t// \t.filter((card) => !this.isGolden(card))\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\n\t\t// \t.map((card) => card.id);\n\t\tthis.kilrekSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\n\t\t\t.map((card) => card.id);\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, GameTag.BATTLECRY)).map((card) => card.id);\n\t\tthis.deathrattleMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.map((card) => card.id);\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\n\t\tthis.scrapScraperSpawns = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.MAGNETIC))\n\t\t\t.map((card) => card.id);\n\t\tthis.endOfTurnMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.END_OF_TURN))\n\t\t\t.map((card) => card.id);\n\t\tthis.magneticMinions = this.pool.filter((card) => hasMechanic(card, GameTag.MAGNETIC));\n\t\tthis.spellcraftPool = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.spellSchool === SpellSchool[SpellSchool.SPELLCRAFT])\n\t\t\t.filter((c) => !c.premium)\n\t\t\t.filter((c) => c.set === 'Battlegrounds')\n\t\t\t// Remove unimplemented ones (mainly spellcrafts that don't have sense in combat)\n\t\t\t.filter((c) => cardMappings[c.id] != null);\n\n\t\tthis.bountyTavernSpellIds = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.set === 'Battlegrounds' && !c.premium)\n\t\t\t.filter((c) => c.type?.toUpperCase() === CardType[CardType.SPELL])\n\t\t\t.filter((c) => c.mechanics?.includes('BACON_BOUNTY'))\n\t\t\t.filter((c) => cardMappings[c.id] != null)\n\t\t\t.map((c) => c.id);\n\n\t\tthis.putricidePool1 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\n\t\t\t.map((card) => card.id);\n\t\tthis.putricidePool2 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.map((card) => card.id);\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\n\t\t\t.map((card) => card.id);\n\t}\n\n\tpublic avengeValue(cardId: string): number {\n\t\tconst avengeImpl = cardMappings[cardId];\n\t\tif (hasAvenge(avengeImpl)) {\n\t\t\treturn avengeImpl.baseAvengeValue(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\n\t\t\t\t// case CardIds.IceSickle:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.MechanoTank_BG21_023:\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\n\t\t\tcase CardIds.Bristlebach_BG26_157:\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\n\t\t\t\treturn 2;\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\n\t\t\t\treturn 3;\n\t\t\tcase CardIds.Onyxia_Broodmother:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\n\t\t\t// case CardIds.Sisefin_BG21_009:\n\t\t\t// case CardIds.Sisefin_BG21_009_G:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\n\t\t\t\treturn 4;\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\n\t\t\t\treturn 5;\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\n\t\t\t\treturn 7;\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\n\t\t\t\treturn 9;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic defaultScriptDataNum(cardId: string): number {\n\t\tconst defaultScriptDataNumImpl = cardMappings[cardId];\n\t\tif (hasDefaultScriptDataNum(defaultScriptDataNumImpl)) {\n\t\t\treturn defaultScriptDataNumImpl.defaultScriptDataNum(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\n\t\t\tcase CardIds.FaerieDragonScale_BG32_MagicItem_363:\n\t\t\t\treturn 3;\n\t\t\tdefault:\n\t\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic getTavernLevel(cardId: string): number {\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\n\t}\n\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\n\t\t// level seems to work in all cases\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMinionForMinTavernTier(tavernTier: number): string {\n\t\tconst minionsForTier = this.pool.filter((m) => m.techLevel >= tavernTier);\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\n\t\tconst magneticMechs = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.MODULAR));\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMagneticVolumizer(\n\t\tplayerEntity: BgsPlayerEntity,\n\t\tanomalies: readonly string[],\n\t\ttavernLimitUpper: number,\n\t\tsourceEntity?: BoardEntity,\n\t\ttargetEntity?: BoardEntity,\n\t): string {\n\t\tconst magneticVolumizers = this.magneticMinions.filter((m) =>\n\t\t\tisVolumizer(m.id, playerEntity, anomalies, this.allCards),\n\t\t);\n\t\tconst pool = magneticVolumizers.filter((m) => m.techLevel <= tavernLimitUpper);\n\n\t\tif (sourceEntity && targetEntity && debugState.active && debugState.forcedRandomPicks.length > 0) {\n\t\t\tconst forced = debugState.forcedRandomPicks.find(\n\t\t\t\t(p) =>\n\t\t\t\t\tdebugState.isCorrectEntity(p.source, sourceEntity) &&\n\t\t\t\t\tdebugState.isCorrectEntity(p.target, targetEntity),\n\t\t\t);\n\t\t\tif (forced?.chosenCardId) {\n\t\t\t\tconst inPool = pool.some((m) => m.id === forced.chosenCardId);\n\t\t\t\tif (inPool) {\n\t\t\t\t\tdebugState.forcedRandomPicks = debugState.forcedRandomPicks.filter((p) => p !== forced);\n\t\t\t\t\treturn forced.chosenCardId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomDivineShield(tavernLimitUpper: number) {\n\t\tconst divineShieldPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.DIVINE_SHIELD));\n\t\tconst pool = divineShieldPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomRally(tavernLimitUpper: number) {\n\t\tconst targetPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.BACON_RALLY));\n\t\tconst pool = targetPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMinionForTribe(\n\t\ttribe: Race,\n\t\ttavernLimitUpper: number,\n\t\texcludedCards: readonly string[] = [],\n\t): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper)\n\t\t\t.filter((m) => !excludedCards.includes(m.id));\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomProtossMinion(tavernLimitUpper: number): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => m.mechanics?.includes(GameTag[GameTag.PROTOSS]))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomSpellcraft(options: { maxTavernTier?: number }): string {\n\t\tconst pool = this.spellcraftPool.filter((c) =>\n\t\t\toptions.maxTavernTier ? c.techLevel <= options.maxTavernTier : true,\n\t\t);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic isGolden(card: ReferenceCard): boolean {\n\t\treturn card.premium;\n\t}\n\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (cardRaces ?? [])\n\t\t\t.map((race) => getRaceEnum(race))\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\n\t}\n\n\tpublic getRandomTavernSpell(options?: { exactTavernTier?: number; maxTavernTier?: number }): string {\n\t\treturn null;\n\t}\n\n\t/** BG 2-cost spells that have simulator support (cardMappings). */\n\tpublic getTwoCostBattlegroundsSpellIdsImplemented(): string[] {\n\t\treturn this.allCards\n\t\t\t.getCards()\n\t\t\t.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.set === 'Battlegrounds' &&\n\t\t\t\t\t!c.premium &&\n\t\t\t\t\t(c.cost ?? 0) === 2 &&\n\t\t\t\t\tc.type?.toUpperCase() === CardType[CardType.SPELL] &&\n\t\t\t\t\tcardMappings[c.id] != null,\n\t\t\t)\n\t\t\t.map((c) => c.id);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cards-data.js","sourceRoot":"","sources":["../../src/cards/cards-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tAllCardsService,\n\tCardType,\n\tGameTag,\n\tisBattlegroundsCard,\n\tRace,\n\tReferenceCard,\n\tSpellSchool,\n} from '@firestone-hs/reference-data';\nimport { BgsPlayerEntity } from '../bgs-player-entity';\nimport { BoardEntity } from '../board-entity';\nimport { debugState } from '../debug-state';\nimport { CardIds } from '../services/card-ids';\nimport { groupByFunction, pickRandom } from '../services/utils';\nimport { getRaceEnum, hasMechanic, isCorrectTribe, isVolumizer } from '../utils';\nimport { hasAvenge, hasDefaultScriptDataNum } from './card.interface';\nimport { cardMappings } from './impl/_card-mappings';\n\nexport const isWhelp = (cardId: string, allCards: AllCardsService): boolean => {\n\treturn allCards.getCard(cardId).mechanics?.includes(GameTag[GameTag.WHELP]);\n};\n\nexport const validBonusKeywords = [\n\tGameTag.TAUNT,\n\tGameTag.DIVINE_SHIELD,\n\tGameTag.VENOMOUS,\n\tGameTag.POISONOUS,\n\tGameTag.WINDFURY,\n\tGameTag.STEALTH,\n\tGameTag.REBORN,\n];\n\nexport const hasKeyword = (entity: BoardEntity, keyword: GameTag) => {\n\tswitch (keyword) {\n\t\tcase GameTag.TAUNT:\n\t\t\treturn entity.taunt;\n\t\tcase GameTag.DIVINE_SHIELD:\n\t\t\treturn entity.divineShield;\n\t\tcase GameTag.VENOMOUS:\n\t\t\treturn entity.venomous;\n\t\tcase GameTag.WINDFURY:\n\t\t\treturn entity.windfury;\n\t\tcase GameTag.STEALTH:\n\t\t\treturn entity.stealth;\n\t\tcase GameTag.REBORN:\n\t\t\treturn entity.reborn;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n};\n\nexport class CardsData {\n\tpublic ghastcoilerSpawns: readonly string[];\n\tpublic impMamaSpawns: readonly string[];\n\tpublic demonSpawns: readonly string[];\n\tpublic gentleDjinniSpawns: readonly string[];\n\tpublic kilrekSpawns: readonly string[];\n\tpublic battlecryMinions: readonly string[];\n\tpublic deathrattleMinions: readonly string[];\n\tpublic pirateSpawns: readonly string[];\n\tpublic beastSpawns: readonly string[];\n\tpublic scrapScraperSpawns: readonly string[];\n\t/** Tavern spells with BACON_BOUNTY (Proud Privateer, Lost City Looter). */\n\tpublic bountyTavernSpellIds: readonly string[];\n\tpublic endOfTurnMinions: readonly string[];\n\tpublic magneticMinions: readonly ReferenceCard[];\n\tpublic spellcraftPool: readonly ReferenceCard[];\n\n\tpublic putricidePool1: readonly string[];\n\tpublic putricidePool2: readonly string[];\n\tpublic putridicePool2ForEternalSummoner: readonly string[];\n\n\tprivate pool: readonly ReferenceCard[];\n\tprivate minionsForTier: { [key: string]: readonly ReferenceCard[] };\n\n\tconstructor(private readonly allCards: AllCardsService, init = true) {\n\t\tif (init) {\n\t\t\tthis.inititialize();\n\t\t}\n\t}\n\n\tpublic inititialize(validTribes?: readonly Race[], anomalies?: readonly string[]): void {\n\t\tconst poolWithGolden = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => isBattlegroundsCard(card))\n\t\t\t// Premiums are not in bacon pool\n\t\t\t.filter((card) => card.isBaconPool || this.allCards.getCard(card.battlegroundsNormalDbfId)?.isBaconPool)\n\t\t\t.filter((card) => card.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((card) => !hasMechanic(card, GameTag.BACON_BUDDY))\n\t\t\t.filter((card) => card.set !== 'Vanilla')\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.BigLeague_BG27_Anomaly_100)\n\t\t\t\t\t? card.techLevel >= 3\n\t\t\t\t\t: anomalies?.includes(CardIds.LittleLeague_BG27_Anomaly_800)\n\t\t\t\t\t? card.techLevel <= 4\n\t\t\t\t\t: true,\n\t\t\t);\n\t\tthis.pool = poolWithGolden\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.filter((card) =>\n\t\t\t\tanomalies?.includes(CardIds.TheGoldenArena_BG27_Anomaly_801)\n\t\t\t\t\t? this.isGolden(card)\n\t\t\t\t\t: !this.isGolden(card),\n\t\t\t);\n\t\tthis.minionsForTier = groupByFunction((card: ReferenceCard) => card.techLevel)(this.pool);\n\t\tthis.ghastcoilerSpawns = this.pool\n\t\t\t.filter((card) => card.id !== 'BGS_008')\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.filter((card) => this.isValidTribe(validTribes, card.races))\n\t\t\t.map((card) => card.id);\n\t\tthis.demonSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.DEMON)).map((card) => card.id);\n\t\tthis.impMamaSpawns = this.demonSpawns.filter((cardId) => cardId !== CardIds.ImpMama_BGS_044);\n\t\tthis.gentleDjinniSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.ELEMENTAL))\n\t\t\t.filter((card) => card.id !== CardIds.GentleDjinni_BGS_121)\n\t\t\t.map((card) => card.id);\n\t\t// FIXME: just spawn a random undead instead of an Undead Creation\n\t\t// this.festergutSpawns = pool\n\t\t// \t.filter((card) => !this.isGolden(card))\n\t\t// \t.filter((card) => isCorrectTribe(card.races, Race.UNDEAD))\n\t\t// \t.filter((card) => card.id !== CardIds.Festergut_BG25_HERO_100_Buddy)\n\t\t// \t// .filter((card) => REMOVED_CARD_IDS.indexOf(card.id) === -1)\n\t\t// \t.map((card) => card.id);\n\t\tthis.kilrekSpawns = this.pool\n\t\t\t.filter((card) => isCorrectTribe(card.races, Race.DEMON))\n\t\t\t.filter((card) => card.id !== CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy)\n\t\t\t.map((card) => card.id);\n\t\tthis.battlecryMinions = this.pool.filter((card) => hasMechanic(card, GameTag.BATTLECRY)).map((card) => card.id);\n\t\tthis.deathrattleMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.DEATHRATTLE))\n\t\t\t.map((card) => card.id);\n\t\tthis.pirateSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.PIRATE)).map((card) => card.id);\n\t\tthis.beastSpawns = this.pool.filter((card) => isCorrectTribe(card.races, Race.BEAST)).map((card) => card.id);\n\t\tthis.scrapScraperSpawns = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.MAGNETIC))\n\t\t\t.map((card) => card.id);\n\t\tthis.endOfTurnMinions = this.pool\n\t\t\t.filter((card) => hasMechanic(card, GameTag.END_OF_TURN))\n\t\t\t.map((card) => card.id);\n\t\tthis.magneticMinions = this.pool.filter((card) => hasMechanic(card, GameTag.MAGNETIC));\n\t\tthis.spellcraftPool = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.spellSchool === SpellSchool[SpellSchool.SPELLCRAFT])\n\t\t\t.filter((c) => !c.premium)\n\t\t\t.filter((c) => c.set === 'Battlegrounds')\n\t\t\t// Remove unimplemented ones (mainly spellcrafts that don't have sense in combat)\n\t\t\t.filter((c) => cardMappings[c.id] != null);\n\n\t\tthis.bountyTavernSpellIds = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((c) => c.set === 'Battlegrounds' && !c.premium)\n\t\t\t.filter((c) => c.type?.toUpperCase() === CardType[CardType.SPELL])\n\t\t\t.filter((c) => c.mechanics?.includes('BACON_BOUNTY'))\n\t\t\t.filter((c) => cardMappings[c.id] != null)\n\t\t\t.map((c) => c.id);\n\n\t\tthis.putricidePool1 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool1)\n\t\t\t.map((card) => card.id);\n\t\tthis.putricidePool2 = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.map((card) => card.id);\n\t\tthis.putridicePool2ForEternalSummoner = this.allCards\n\t\t\t.getCards()\n\t\t\t.filter((card) => card.battlegroundsPutridicePool2)\n\t\t\t.filter((card) => !card.battlegroundsPutridiceSummonerExclusion)\n\t\t\t.map((card) => card.id);\n\t}\n\n\tpublic avengeValue(cardId: string): number {\n\t\tconst avengeImpl = cardMappings[cardId];\n\t\tif (hasAvenge(avengeImpl)) {\n\t\t\treturn avengeImpl.baseAvengeValue(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.HungeringAbomination_BG25_014:\n\t\t\tcase CardIds.HungeringAbomination_BG25_014_G:\n\t\t\t\t// case CardIds.IceSickle:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.MechanoTank_BG21_023:\n\t\t\tcase CardIds.MechanoTank_BG21_023_G:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001:\n\t\t\tcase CardIds.PalescaleCrocolisk_BG21_001_G:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy:\n\t\t\tcase CardIds.StormpikeLieutenant_BG22_HERO_003_Buddy_G:\n\t\t\tcase CardIds.Bristlebach_BG26_157:\n\t\t\tcase CardIds.Bristlebach_BG26_157_G:\n\t\t\t\treturn 2;\n\t\t\tcase CardIds.BoomSquad_BG27_Reward_502:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967:\n\t\t\tcase CardIds.TremblingTrolley_BG28_967_G:\n\t\t\t\treturn 3;\n\t\t\tcase CardIds.Onyxia_Broodmother:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007:\n\t\t\tcase CardIds.ImpatientDoomsayer_BG21_007_G:\n\t\t\t// case CardIds.Sisefin_BG21_009:\n\t\t\t// case CardIds.Sisefin_BG21_009_G:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031:\n\t\t\t// case CardIds.TonyTwoTusk_BG21_031_G:\n\t\t\t// case CardIds.ScrapScraper_BG26_148:\n\t\t\t// case CardIds.ScrapScraper_BG26_148_G:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003:\n\t\t\tcase CardIds.RelentlessSentry_BG25_003_G:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403:\n\t\t\tcase CardIds.PhaerixWrathOfTheSun_BG28_403_G:\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.CycleOfEnergy_BG28_Reward_504:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740:\n\t\t\tcase CardIds.AugmentedLaborer_BG28_740_G:\n\t\t\tcase CardIds.MurglMkIi_BG29_991:\n\t\t\tcase CardIds.MurglMkIi_BG29_991_G:\n\t\t\t\treturn 4;\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010:\n\t\t\tcase CardIds.RelentlessMurghoul_BG27_010_G:\n\t\t\tcase CardIds.StaffOfTheScourge_BG30_MagicItem_437:\n\t\t\t\treturn 5;\n\t\t\tcase CardIds.StableAmalgamation_BG28_Reward_518:\n\t\t\t\treturn 7;\n\t\t\tcase CardIds.BleedingHeart_BG30_MagicItem_713:\n\t\t\t\treturn 9;\n\t\t}\n\t\treturn 0;\n\t}\n\n\tpublic defaultScriptDataNum(cardId: string): number {\n\t\tconst defaultScriptDataNumImpl = cardMappings[cardId];\n\t\tif (hasDefaultScriptDataNum(defaultScriptDataNumImpl)) {\n\t\t\treturn defaultScriptDataNumImpl.defaultScriptDataNum(cardId);\n\t\t}\n\t\tswitch (cardId) {\n\t\t\tcase CardIds.TumblingDisaster_BG28_Reward_505:\n\t\t\tcase CardIds.TwinSkyLanterns_BG30_MagicItem_822:\n\t\t\tcase CardIds.TwinSkyLanterns_TwinSkyLanternsToken_BG30_MagicItem_822t2:\n\t\t\tcase CardIds.BoomController_BG30_MagicItem_440:\n\t\t\tcase CardIds.AllianceKeychain_BG30_MagicItem_433:\n\t\t\tcase CardIds.AllianceKeychain_AllianceKeychainToken_BG30_MagicItem_433t:\n\t\t\tcase CardIds.DeathlyPhylactery_BG30_MagicItem_700:\n\t\t\tcase CardIds.PromoPortrait_BG30_MagicItem_918:\n\t\t\t\treturn 1;\n\t\t\tcase CardIds.BloodGolemSticker_BG30_MagicItem_442:\n\t\t\tcase CardIds.MechagonAdapter_BG30_MagicItem_910:\n\t\t\tcase CardIds.FaerieDragonScale_BG32_MagicItem_363:\n\t\t\t\treturn 3;\n\t\t\tdefault:\n\t\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic getTavernLevel(cardId: string): number {\n\t\treturn this.allCards.getCard(cardId).techLevel ?? 1;\n\t}\n\n\tpublic getRandomMinionForTavernTier(tavernTier: number): string {\n\t\t// Tzvern tier can be undefined for hero-power specific tokens, like the Amalgam, or when\n\t\t// for some reason tokens end up in the shop. For now, defaulting to 1 for tavern\n\t\t// level seems to work in all cases\n\t\tconst minionsForTier = this.minionsForTier[tavernTier ?? 1];\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMinionForMinTavernTier(tavernTier: number): string {\n\t\tconst minionsForTier = this.pool.filter((m) => m.techLevel >= tavernTier);\n\t\tif (!minionsForTier?.length) {\n\t\t\tconsole.error('incorrect minions for tier', tavernTier);\n\t\t}\n\t\treturn pickRandom(minionsForTier)?.id;\n\t}\n\n\tpublic getRandomMechToMagnetize(tavernLimitUpper: number): string {\n\t\tconst magneticMechs = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.MODULAR));\n\t\tconst pool = magneticMechs.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMagneticVolumizer(\n\t\tplayerEntity: BgsPlayerEntity,\n\t\tanomalies: readonly string[],\n\t\ttavernLimitUpper: number,\n\t\tsourceEntity?: BoardEntity,\n\t\ttargetEntity?: BoardEntity,\n\t): string {\n\t\tconst magneticVolumizers = this.magneticMinions.filter((m) =>\n\t\t\tisVolumizer(m.id, playerEntity, anomalies, this.allCards),\n\t\t);\n\t\tconst pool = magneticVolumizers.filter((m) => m.techLevel <= tavernLimitUpper);\n\n\t\tif (sourceEntity && targetEntity && debugState.active && debugState.forcedRandomPicks.length > 0) {\n\t\t\tconst forced = debugState.forcedRandomPicks.find(\n\t\t\t\t(p) =>\n\t\t\t\t\tdebugState.isCorrectEntity(p.source, sourceEntity) &&\n\t\t\t\t\tdebugState.isCorrectEntity(p.target, targetEntity),\n\t\t\t);\n\t\t\tif (forced?.chosenCardId) {\n\t\t\t\tconst inPool = pool.some((m) => m.id === forced.chosenCardId);\n\t\t\t\tif (inPool) {\n\t\t\t\t\tdebugState.forcedRandomPicks = debugState.forcedRandomPicks.filter((p) => p !== forced);\n\t\t\t\t\treturn forced.chosenCardId;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst result = pickRandom(pool)?.id;\n\t\treturn result;\n\t}\n\n\tpublic getRandomDivineShield(tavernLimitUpper: number) {\n\t\tconst divineShieldPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.DIVINE_SHIELD));\n\t\tconst pool = divineShieldPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomRally(tavernLimitUpper: number) {\n\t\tconst targetPool = this.pool\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => hasMechanic(m, GameTag.BACON_RALLY));\n\t\tconst pool = targetPool.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomMinionForTribe(\n\t\ttribe: Race,\n\t\ttavernLimitUpper: number,\n\t\texcludedCards: readonly string[] = [],\n\t): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => this.isValidTribe([tribe], m.races, false))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper)\n\t\t\t.filter((m) => !excludedCards.includes(m.id));\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomProtossMinion(tavernLimitUpper: number): string {\n\t\tconst pool = this.pool\n\t\t\t.filter((m) => m.mechanics?.includes(GameTag[GameTag.PROTOSS]))\n\t\t\t.filter((m) => m.type?.toUpperCase() === CardType[CardType.MINION])\n\t\t\t.filter((m) => m.techLevel <= tavernLimitUpper);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic getRandomSpellcraft(options: { maxTavernTier?: number }): string {\n\t\tconst pool = this.spellcraftPool.filter((c) =>\n\t\t\toptions.maxTavernTier ? c.techLevel <= options.maxTavernTier : true,\n\t\t);\n\t\treturn pickRandom(pool)?.id;\n\t}\n\n\tpublic isGolden(card: ReferenceCard): boolean {\n\t\treturn card.premium;\n\t}\n\n\tprivate isValidTribe(validTribes: readonly Race[], cardRaces: readonly string[], allowEmptyRaces = true): boolean {\n\t\tif (!cardRaces?.length && allowEmptyRaces) {\n\t\t\treturn true;\n\t\t}\n\t\treturn (cardRaces ?? [])\n\t\t\t.map((race) => getRaceEnum(race))\n\t\t\t.some((raceEnum) => raceEnum === Race.ALL || !validTribes?.length || validTribes.includes(raceEnum));\n\t}\n\n\tpublic getRandomTavernSpell(options?: { exactTavernTier?: number; maxTavernTier?: number }): string {\n\t\treturn null;\n\t}\n\n\t/** BG 2-cost spells that have simulator support (cardMappings). */\n\tpublic getTwoCostBattlegroundsSpellIdsImplemented(): string[] {\n\t\treturn this.allCards\n\t\t\t.getCards()\n\t\t\t.filter(\n\t\t\t\t(c) =>\n\t\t\t\t\tc.set === 'Battlegrounds' &&\n\t\t\t\t\t!c.premium &&\n\t\t\t\t\t(c.cost ?? 0) === 2 &&\n\t\t\t\t\tc.type?.toUpperCase() === CardType[CardType.SPELL] &&\n\t\t\t\t\tcardMappings[c.id] != null,\n\t\t\t)\n\t\t\t.map((c) => c.id);\n\t}\n}\n"]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.cardMappings = void 0;
|
|
5
|
-
const arcane_absorption_bg352_1 = require("./bg-spell/arcane-absorption-bg352");
|
|
6
5
|
const azerite_empowerment_1 = require("./bg-spell/azerite-empowerment");
|
|
7
6
|
const back_to_back_1 = require("./bg-spell/back-to-back");
|
|
8
7
|
const blood_gem_barrage_1 = require("./bg-spell/blood-gem-barrage");
|
|
@@ -12,7 +11,7 @@ const blood_gem_quilboar_taunt_1 = require("./bg-spell/blood-gem-quilboar-taunt"
|
|
|
12
11
|
const brood_of_nozdormu_1 = require("./bg-spell/brood-of-nozdormu");
|
|
13
12
|
const butchering_1 = require("./bg-spell/butchering");
|
|
14
13
|
const chefs_choice_1 = require("./bg-spell/chefs-choice");
|
|
15
|
-
const
|
|
14
|
+
const conflagration_1 = require("./bg-spell/conflagration");
|
|
16
15
|
const deepwater_clan_1 = require("./bg-spell/deepwater-clan");
|
|
17
16
|
const eyes_of_the_earth_mother_1 = require("./bg-spell/eyes-of-the-earth-mother");
|
|
18
17
|
const friendly_bounty_1 = require("./bg-spell/friendly-bounty");
|
|
@@ -55,10 +54,8 @@ const stormpike_1 = require("./hero-power/stormpike");
|
|
|
55
54
|
const swatting_insects_1 = require("./hero-power/swatting-insects");
|
|
56
55
|
const abyssal_bruiser_1 = require("./minion/abyssal-bruiser");
|
|
57
56
|
const admiral_eliza_goreblade_1 = require("./minion/admiral-eliza-goreblade");
|
|
58
|
-
const alert_alarmist_1 = require("./minion/alert-alarmist");
|
|
59
57
|
const all_seeing_elder_1 = require("./minion/all-seeing-elder");
|
|
60
58
|
const alleycat_1 = require("./minion/alleycat");
|
|
61
|
-
const ancestral_automaton_1 = require("./minion/ancestral-automaton");
|
|
62
59
|
const anubarak_nerubian_king_1 = require("./minion/anubarak-nerubian-king");
|
|
63
60
|
const apexis_guardian_1 = require("./minion/apexis-guardian");
|
|
64
61
|
const apprentice_of_sefin_1 = require("./minion/apprentice-of-sefin");
|
|
@@ -74,7 +71,6 @@ const auto_assembler_enchantment_1 = require("./minion/auto-assembler-enchantmen
|
|
|
74
71
|
const avalanche_caller_1 = require("./minion/avalanche-caller");
|
|
75
72
|
const azsharan_cutlassier_1 = require("./minion/azsharan-cutlassier");
|
|
76
73
|
const baby_yshaarj_1 = require("./minion/baby-yshaarj");
|
|
77
|
-
const balinda_stonehearth_1 = require("./minion/balinda-stonehearth");
|
|
78
74
|
const banana_slamma_1 = require("./minion/banana-slamma");
|
|
79
75
|
const baneling_1 = require("./minion/baneling");
|
|
80
76
|
const bannerboar_1 = require("./minion/bannerboar");
|
|
@@ -138,7 +134,6 @@ const deathly_striker_1 = require("./minion/deathly-striker");
|
|
|
138
134
|
const deepwater_chieftain_1 = require("./minion/deepwater-chieftain");
|
|
139
135
|
const defiant_shipwright_1 = require("./minion/defiant-shipwright");
|
|
140
136
|
const deflecto_bot_1 = require("./minion/deflecto-bot");
|
|
141
|
-
const demon_fodder_1 = require("./minion/demon-fodder");
|
|
142
137
|
const determined_defender_1 = require("./minion/determined-defender");
|
|
143
138
|
const devout_hellcaller_1 = require("./minion/devout-hellcaller");
|
|
144
139
|
const disguised_graverobber_1 = require("./minion/disguised-graverobber");
|
|
@@ -152,7 +147,6 @@ const dustbone_devastator_1 = require("./minion/dustbone-devastator");
|
|
|
152
147
|
const earthsong_shaman_1 = require("./minion/earthsong-shaman");
|
|
153
148
|
const echoing_roar_1 = require("./minion/echoing-roar");
|
|
154
149
|
const efficient_engineer_1 = require("./minion/efficient-engineer");
|
|
155
|
-
const egg_of_the_endtimes_1 = require("./minion/egg-of-the-endtimes");
|
|
156
150
|
const electric_synthesizer_1 = require("./minion/electric-synthesizer");
|
|
157
151
|
const elite_navigator_1 = require("./minion/elite-navigator");
|
|
158
152
|
const enchanted_sentinel_1 = require("./minion/enchanted-sentinel");
|
|
@@ -192,7 +186,6 @@ const gilded_gargoyle_1 = require("./minion/gilded-gargoyle");
|
|
|
192
186
|
const gleaming_trader_1 = require("./minion/gleaming-trader");
|
|
193
187
|
const glowgullet_warlord_1 = require("./minion/glowgullet-warlord");
|
|
194
188
|
const glowing_cinder_1 = require("./minion/glowing-cinder");
|
|
195
|
-
const gluttonous_trogg_1 = require("./minion/gluttonous-trogg");
|
|
196
189
|
const goldgrubber_1 = require("./minion/goldgrubber");
|
|
197
190
|
const goldrinn_the_great_wolf_1 = require("./minion/goldrinn-the-great-wolf");
|
|
198
191
|
const gormling_gourmet_1 = require("./minion/gormling-gourmet");
|
|
@@ -209,7 +202,6 @@ const hardy_orca_1 = require("./minion/hardy-orca");
|
|
|
209
202
|
const harmless_bonehead_1 = require("./minion/harmless-bonehead");
|
|
210
203
|
const heroic_underdog_1 = require("./minion/heroic-underdog");
|
|
211
204
|
const highkeeper_ra_1 = require("./minion/highkeeper-ra");
|
|
212
|
-
const hired_ritualist_1 = require("./minion/hired-ritualist");
|
|
213
205
|
const hog_watcher_1 = require("./minion/hog-watcher");
|
|
214
206
|
const holo_rover_1 = require("./minion/holo-rover");
|
|
215
207
|
const hot_springer_1 = require("./minion/hot-springer");
|
|
@@ -236,7 +228,6 @@ const kalecgos_arcane_aspect_1 = require("./minion/kalecgos-arcane-aspect");
|
|
|
236
228
|
const kangors_apprentice_1 = require("./minion/kangors-apprentice");
|
|
237
229
|
const karmic_chameleon_1 = require("./minion/karmic-chameleon");
|
|
238
230
|
const king_bagurgle_1 = require("./minion/king-bagurgle");
|
|
239
|
-
const laboratory_assistant_1 = require("./minion/laboratory-assistant");
|
|
240
231
|
const leeroy_the_reckless_1 = require("./minion/leeroy-the-reckless");
|
|
241
232
|
const leyline_surfacer_1 = require("./minion/leyline-surfacer");
|
|
242
233
|
const lightfang_enforcer_1 = require("./minion/lightfang-enforcer");
|
|
@@ -249,7 +240,6 @@ const lovesick_balladist_1 = require("./minion/lovesick-balladist");
|
|
|
249
240
|
const low_flier_1 = require("./minion/low-flier");
|
|
250
241
|
const lurker_1 = require("./minion/lurker");
|
|
251
242
|
const lurking_leviathan_1 = require("./minion/lurking-leviathan");
|
|
252
|
-
const maelstrom_emergent_1 = require("./minion/maelstrom-emergent");
|
|
253
243
|
const magicfin_apprentice_1 = require("./minion/magicfin-apprentice");
|
|
254
244
|
const malorne_1 = require("./minion/malorne");
|
|
255
245
|
const mama_mrrglton_1 = require("./minion/mama-mrrglton");
|
|
@@ -289,7 +279,6 @@ const nimble_hatchling_1 = require("./minion/nimble-hatchling");
|
|
|
289
279
|
const niuzao_1 = require("./minion/niuzao");
|
|
290
280
|
const noisul_of_the_many_faces_1 = require("./minion/noisul-of-the-many-faces");
|
|
291
281
|
const obisidian_ravager_1 = require("./minion/obisidian-ravager");
|
|
292
|
-
const old_soul_1 = require("./minion/old-soul");
|
|
293
282
|
const oozeling_gladiator_1 = require("./minion/oozeling-gladiator");
|
|
294
283
|
const operatic_belcher_1 = require("./minion/operatic-belcher");
|
|
295
284
|
const oranomonos_the_wilted_1 = require("./minion/oranomonos-the-wilted");
|
|
@@ -311,7 +300,6 @@ const primeval_monstrosity_1 = require("./minion/primeval-monstrosity");
|
|
|
311
300
|
const prized_promo_drake_1 = require("./minion/prized-promo-drake");
|
|
312
301
|
const prodigious_tusker_1 = require("./minion/prodigious-tusker");
|
|
313
302
|
const profound_thinker_1 = require("./minion/profound-thinker");
|
|
314
|
-
const proud_privateer_1 = require("./minion/proud-privateer");
|
|
315
303
|
const psychus_1 = require("./minion/psychus");
|
|
316
304
|
const pufferquil_1 = require("./minion/pufferquil");
|
|
317
305
|
const radio_star_1 = require("./minion/radio-star");
|
|
@@ -369,7 +357,6 @@ const silithid_burrower_1 = require("./minion/silithid-burrower");
|
|
|
369
357
|
const silky_shimmermoth_1 = require("./minion/silky-shimmermoth");
|
|
370
358
|
const silver_handed_recruit_1 = require("./minion/silver-handed-recruit");
|
|
371
359
|
const sinodorei_straight_shot_1 = require("./minion/sinodorei-straight-shot");
|
|
372
|
-
const sinrunner_blanchy_1 = require("./minion/sinrunner-blanchy");
|
|
373
360
|
const skeletal_strafer_1 = require("./minion/skeletal-strafer");
|
|
374
361
|
const skulking_bristlemane_1 = require("./minion/skulking-bristlemane");
|
|
375
362
|
const sky_pirate_flagbearer_1 = require("./minion/sky-pirate-flagbearer");
|
|
@@ -523,7 +510,6 @@ const twilight_broodmother_1 = require("./minion/twilight-broodmother");
|
|
|
523
510
|
const twilight_hatchling_1 = require("./minion/twilight-hatchling");
|
|
524
511
|
const twilight_primordium_1 = require("./minion/twilight-primordium");
|
|
525
512
|
const twilight_watcher_1 = require("./minion/twilight-watcher");
|
|
526
|
-
const twisted_wrathguard_1 = require("./minion/twisted-wrathguard");
|
|
527
513
|
const ultralisk_1 = require("./minion/ultralisk");
|
|
528
514
|
const ultraviolet_ascendant_1 = require("./minion/ultraviolet-ascendant");
|
|
529
515
|
const unforgiving_treant_1 = require("./minion/unforgiving-treant");
|
|
@@ -613,6 +599,7 @@ const herald_sticker_1 = require("./trinket/herald-sticker");
|
|
|
613
599
|
const hogwash_basin_1 = require("./trinket/hogwash-basin");
|
|
614
600
|
const jar_o_gems_1 = require("./trinket/jar-o-gems");
|
|
615
601
|
const lorewalker_scroll_1 = require("./trinket/lorewalker-scroll");
|
|
602
|
+
const lucky_tabby_1 = require("./trinket/lucky-tabby");
|
|
616
603
|
const miniature_ship_1 = require("./trinket/miniature-ship");
|
|
617
604
|
const powder_keg_1 = require("./trinket/powder-keg");
|
|
618
605
|
const powder_keg_enchantment_1 = require("./trinket/powder-keg-enchantment");
|
|
@@ -620,11 +607,12 @@ const protective_ring_1 = require("./trinket/protective-ring");
|
|
|
620
607
|
const quilligraphy_set_1 = require("./trinket/quilligraphy-set");
|
|
621
608
|
const reinforced_shield_1 = require("./trinket/reinforced-shield");
|
|
622
609
|
const saltscale_honcho_1 = require("./trinket/saltscale-honcho");
|
|
610
|
+
const scrapsmith_portrait_1 = require("./trinket/scrapsmith-portrait");
|
|
623
611
|
const sepulchral_sergent_1 = require("./trinket/sepulchral-sergent");
|
|
624
612
|
const slamma_sticker_1 = require("./trinket/slamma-sticker");
|
|
625
613
|
const stegodon_portrait_1 = require("./trinket/stegodon-portrait");
|
|
614
|
+
const stormcoil_sticker_1 = require("./trinket/stormcoil-sticker");
|
|
626
615
|
const sthara_sticker_1 = require("./trinket/sthara-sticker");
|
|
627
|
-
const tarecgosa_sticker_1 = require("./trinket/tarecgosa-sticker");
|
|
628
616
|
const thornspike_pauldron_1 = require("./trinket/thornspike-pauldron");
|
|
629
617
|
const tide_raiser_portrait_1 = require("./trinket/tide-raiser-portrait");
|
|
630
618
|
const tiger_carving_token_1 = require("./trinket/tiger-carving-token");
|
|
@@ -765,7 +753,6 @@ const cards = [
|
|
|
765
753
|
springy_spriggan_1.SpringySpriggan,
|
|
766
754
|
rickety_repairbot_1.RicketyRepairbot,
|
|
767
755
|
mechagnome_interpreter_1.MechagnomeInterpreter,
|
|
768
|
-
ancestral_automaton_1.AncestralAutomaton,
|
|
769
756
|
auto_assembler_1.AutoAssembler,
|
|
770
757
|
auto_assembler_enchantment_1.AutoAssemblerEnchantment,
|
|
771
758
|
deadstomper_1.Deadstomper,
|
|
@@ -1068,7 +1055,6 @@ const cards = [
|
|
|
1068
1055
|
timewarped_duskmaw_1.TimewarpedDuskmaw,
|
|
1069
1056
|
timewarped_primscale_1.TimewarpedPrimscale,
|
|
1070
1057
|
plankwalker_1.Plankwalker,
|
|
1071
|
-
proud_privateer_1.ProudPrivateer,
|
|
1072
1058
|
menagerie_tableware_1.MenagerieTableware,
|
|
1073
1059
|
veterans_tactics_1.VeteransTactics,
|
|
1074
1060
|
charging_czarina_1.ChargingCzarina,
|
|
@@ -1157,14 +1143,12 @@ const cards = [
|
|
|
1157
1143
|
natural_blessing_1.NaturalBlessing,
|
|
1158
1144
|
shifting_tide_1.ShiftingTide,
|
|
1159
1145
|
chefs_choice_1.ChefsChoice,
|
|
1160
|
-
|
|
1161
|
-
conflagration_bg352_1.ConflagrationBg352,
|
|
1146
|
+
conflagration_1.Conflagration,
|
|
1162
1147
|
deepwater_clan_1.DeepwaterClan,
|
|
1163
1148
|
queens_command_1.QueensCommand,
|
|
1164
1149
|
determined_defender_1.DeterminedDefender,
|
|
1165
1150
|
living_azerite_1.LivingAzerite,
|
|
1166
1151
|
tidemistress_athissa_1.TidemistressAthissa,
|
|
1167
|
-
balinda_stonehearth_1.BalindaStonehearth,
|
|
1168
1152
|
black_chromadrake_1.BlackChromadrake,
|
|
1169
1153
|
blue_chromadrake_1.BlueChromadrake,
|
|
1170
1154
|
blood_gem_quilboar_reborn_1.BloodGemQuilboarRebornSpell,
|
|
@@ -1187,26 +1171,18 @@ const cards = [
|
|
|
1187
1171
|
skeletal_strafer_1.SkeletalStrafer,
|
|
1188
1172
|
very_hungry_winterfinner_1.VeryHungryWinterfinner,
|
|
1189
1173
|
abyssal_bruiser_1.AbyssalBruiser,
|
|
1190
|
-
alert_alarmist_1.AlertAlarmist,
|
|
1191
1174
|
bristleback_bully_1.BristlebackBully,
|
|
1192
1175
|
bristlebach_1.Bristlebach,
|
|
1193
1176
|
bristlemane_scrapsmith_1.BristlemaneScrapsmith,
|
|
1194
1177
|
cataclysmic_harbinger_1.CataclysmicHarbinger,
|
|
1195
1178
|
consummate_conqueror_1.ConsummateConqueror,
|
|
1196
1179
|
deepwater_chieftain_1.DeepwaterChieftain,
|
|
1197
|
-
demon_fodder_1.DemonFodder,
|
|
1198
1180
|
draconic_warden_1.DraconicWarden,
|
|
1199
1181
|
dustbone_devastator_1.DustboneDevastator,
|
|
1200
|
-
egg_of_the_endtimes_1.EggOfTheEndtimes,
|
|
1201
1182
|
falling_sky_golem_1.FallingSkyGolem,
|
|
1202
1183
|
firelands_fugitive_1.FirelandsFugitive,
|
|
1203
|
-
gluttonous_trogg_1.GluttonousTrogg,
|
|
1204
|
-
hired_ritualist_1.HiredRitualist,
|
|
1205
1184
|
incubation_researcher_1.IncubationResearcher,
|
|
1206
|
-
laboratory_assistant_1.LaboratoryAssistant,
|
|
1207
1185
|
leyline_surfacer_1.LeylineSurfacer,
|
|
1208
|
-
maelstrom_emergent_1.MaelstromEmergent,
|
|
1209
|
-
old_soul_1.OldSoul,
|
|
1210
1186
|
plaguerunner_1.Plaguerunner,
|
|
1211
1187
|
ring_bearer_1.RingBearer,
|
|
1212
1188
|
ruthless_queensguard_1.RuthlessQueensguard,
|
|
@@ -1218,9 +1194,7 @@ const cards = [
|
|
|
1218
1194
|
sewer_lord_1.SewerLord,
|
|
1219
1195
|
sewer_rat_1.SewerRat,
|
|
1220
1196
|
ship_jumper_1.ShipJumper,
|
|
1221
|
-
sinrunner_blanchy_1.SinrunnerBlanchy,
|
|
1222
1197
|
tide_raiser_1.TideRaiser,
|
|
1223
|
-
twisted_wrathguard_1.TwistedWrathguard,
|
|
1224
1198
|
vinespeaker_1.Vinespeaker,
|
|
1225
1199
|
void_pup_trainer_1.VoidPupTrainer,
|
|
1226
1200
|
woodland_defiler_1.WoodlandDefiler,
|
|
@@ -1240,7 +1214,9 @@ const cards = [
|
|
|
1240
1214
|
powder_keg_enchantment_1.PowderKegEnchantment,
|
|
1241
1215
|
dramaloc_sticker_1.DramalocSticker,
|
|
1242
1216
|
slamma_sticker_1.SlammaSticker,
|
|
1217
|
+
scrapsmith_portrait_1.ScrapsmithPortrait,
|
|
1243
1218
|
stegodon_portrait_1.StegodonPortrait,
|
|
1219
|
+
stormcoil_sticker_1.StormcoilSticker,
|
|
1244
1220
|
cloud_serpent_horn_1.CloudSerpentHorn,
|
|
1245
1221
|
quilligraphy_set_1.QuilligraphySet,
|
|
1246
1222
|
quilligraphy_set_1.QuilligraphySetToken,
|
|
@@ -1251,6 +1227,7 @@ const cards = [
|
|
|
1251
1227
|
blood_amulet_1.BloodAmulet,
|
|
1252
1228
|
copper_coil_1.CopperCoil,
|
|
1253
1229
|
lorewalker_scroll_1.LorewalkerScroll,
|
|
1230
|
+
lucky_tabby_1.LuckyTabby,
|
|
1254
1231
|
bewitched_ribbon_1.BewitchedRibbon,
|
|
1255
1232
|
coral_spear_1.CoralSpear,
|
|
1256
1233
|
miniature_ship_1.MiniatureShip,
|
|
@@ -1266,7 +1243,6 @@ const cards = [
|
|
|
1266
1243
|
tide_raiser_portrait_1.TideRaiserPortrait,
|
|
1267
1244
|
felburned_ledger_1.FelburnedLedger,
|
|
1268
1245
|
fridge_magnet_1.FridgeMagnet,
|
|
1269
|
-
tarecgosa_sticker_1.TarecgosaSticker,
|
|
1270
1246
|
jailer_sticker_306_1.JailerSticker306,
|
|
1271
1247
|
jailer_sticker_733_1.JailerSticker733,
|
|
1272
1248
|
ophidian_staff_1.OphidianStaff,
|