@firestone-hs/reference-data 1.0.2 → 1.0.5
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/enums/booster-type.d.ts +1 -0
- package/dist/enums/booster-type.js +1 -0
- package/dist/enums/booster-type.js.map +1 -1
- package/dist/enums/card-set.d.ts +1 -0
- package/dist/enums/card-set.js +1 -0
- package/dist/enums/card-set.js.map +1 -1
- package/dist/services/all-cards.service.js +2 -2
- package/dist/services/all-cards.service.js.map +1 -1
- package/dist/services/duels-utils.js +1 -1
- package/dist/services/duels-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -50,6 +50,7 @@ var BoosterType;
|
|
|
50
50
|
BoosterType[BoosterType["STANDARD_BUNDLE"] = 713] = "STANDARD_BUNDLE";
|
|
51
51
|
BoosterType[BoosterType["WILD_PACK"] = 714] = "WILD_PACK";
|
|
52
52
|
BoosterType[BoosterType["GOLDEN_STANDARD_BUNDLE"] = 716] = "GOLDEN_STANDARD_BUNDLE";
|
|
53
|
+
BoosterType[BoosterType["REVENDRETH"] = 729] = "REVENDRETH";
|
|
53
54
|
BoosterType[BoosterType["GOLDEN_STORMWIND"] = 737] = "GOLDEN_STORMWIND";
|
|
54
55
|
BoosterType[BoosterType["GOLDEN_ALTERAC_VALLEY"] = 841] = "GOLDEN_ALTERAC_VALLEY";
|
|
55
56
|
BoosterType[BoosterType["GOLDEN_THE_SUNKEN_CITY"] = 850] = "GOLDEN_THE_SUNKEN_CITY";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"booster-type.js","sourceRoot":"","sources":["../../src/enums/booster-type.ts"],"names":[],"mappings":";;;AACA,IAAY,
|
|
1
|
+
{"version":3,"file":"booster-type.js","sourceRoot":"","sources":["../../src/enums/booster-type.ts"],"names":[],"mappings":";;;AACA,IAAY,WAoDX;AApDD,WAAY,WAAW;IACtB,mDAAW,CAAA;IACX,mDAAW,CAAA;IACX,uEAAqB,CAAA;IACrB,8EAAyB,CAAA;IACzB,sDAAa,CAAA;IACb,0EAAuB,CAAA;IACvB,sEAAqB,CAAA;IACrB,8DAAiB,CAAA;IACjB,kDAAW,CAAA;IACX,gEAAkB,CAAA;IAClB,4EAAwB,CAAA;IACxB,gFAA0B,CAAA;IAC1B,wDAAc,CAAA;IACd,8EAAyB,CAAA;IACzB,wEAAsB,CAAA;IACtB,kEAAmB,CAAA;IACnB,oDAAY,CAAA;IACZ,iDAAW,CAAA;IACX,mEAAoB,CAAA;IACpB,qDAAa,CAAA;IACb,+DAAkB,CAAA;IAClB,6DAAiB,CAAA;IACjB,qEAAqB,CAAA;IACrB,mEAAoB,CAAA;IACpB,iEAAmB,CAAA;IACnB,6DAAiB,CAAA;IACjB,qEAAqB,CAAA;IACrB,yDAAe,CAAA;IACf,2EAAwB,CAAA;IACxB,mEAAoB,CAAA;IACpB,qDAAa,CAAA;IACb,mEAAoB,CAAA;IACpB,uEAAsB,CAAA;IACtB,uEAAsB,CAAA;IACtB,qEAAqB,CAAA;IACrB,mEAAoB,CAAA;IACpB,qEAAqB,CAAA;IACrB,uEAAsB,CAAA;IACtB,+EAA0B,CAAA;IAC1B,iFAA2B,CAAA;IAC3B,mEAAoB,CAAA;IACpB,2EAAwB,CAAA;IACxB,qEAAqB,CAAA;IACrB,qEAAqB,CAAA;IACrB,qEAAqB,CAAA;IACrB,yDAAe,CAAA;IACf,mFAA4B,CAAA;IAC5B,2DAAgB,CAAA;IAChB,uEAAsB,CAAA;IACtB,iFAA2B,CAAA;IAC3B,mFAA4B,CAAA;AAC7B,CAAC,EApDW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAoDtB","sourcesContent":["// BoosterDbId.cs, not always up-to-date\r\nexport enum BoosterType {\r\n\tINVALID = 0,\r\n\tCLASSIC = 1,\r\n\tGOBLINS_VS_GNOMES = 9,\r\n\tTHE_GRAND_TOURNAMENT = 10,\r\n\tOLD_GODS = 11,\r\n\tFIRST_PURCHASE_OLD = 17,\r\n\tSIGNUP_INCENTIVE = 18,\r\n\tMEAN_STREETS = 19,\r\n\tUNGORO = 20,\r\n\tFROZEN_THRONE = 21,\r\n\tGOLDEN_CLASSIC_PACK = 23,\r\n\tKOBOLDS_AND_CATACOMBS = 30,\r\n\tWITCHWOOD = 31,\r\n\tTHE_BOOMSDAY_PROJECT = 38,\r\n\tRASTAKHANS_RUMBLE = 40,\r\n\tMAMMOTH_BUNDLE = 41,\r\n\tDALARAN = 49,\r\n\tULDUM = 128,\r\n\tFIRST_PURCHASE = 181,\r\n\tDRAGONS = 347,\r\n\tBLACK_TEMPLE = 423,\r\n\tSCHOLOMANCE = 468,\r\n\tSTANDARD_HUNTER = 470,\r\n\tYEAR_OF_DRAGON = 498,\r\n\tSTANDARD_MAGE = 545,\r\n\tTHE_BARRENS = 553,\r\n\tWAILING_CAVERNS = 583,\r\n\tSTORMWIND = 602,\r\n\tGOLDEN_SCHOLOMANCE = 603,\r\n\tDARKMOON_FAIRE = 616,\r\n\tLETTUCE = 629,\r\n\tSTANDARD_DRUID = 631,\r\n\tSTANDARD_PALADIN = 632,\r\n\tSTANDARD_WARRIOR = 633,\r\n\tSTANDARD_PRIEST = 634,\r\n\tSTANDARD_ROGUE = 635,\r\n\tSTANDARD_SHAMAN = 636,\r\n\tSTANDARD_WARLOCK = 637,\r\n\tSTANDARD_DEMONHUNTER = 638,\r\n\tGOLDEN_DARKMOON_FAIRE = 643,\r\n\tALTERAC_VALLEY = 665,\r\n\tGOLDEN_THE_BARRENS = 686,\r\n\tYEAR_OF_PHOENIX = 688,\r\n\tTHE_SUNKEN_CITY = 694,\r\n\tSTANDARD_BUNDLE = 713,\r\n\tWILD_PACK = 714,\r\n\tGOLDEN_STANDARD_BUNDLE = 716,\r\n\tREVENDRETH = 729,\r\n\tGOLDEN_STORMWIND = 737,\r\n\tGOLDEN_ALTERAC_VALLEY = 841,\r\n\tGOLDEN_THE_SUNKEN_CITY = 850,\r\n}\r\n"]}
|
package/dist/enums/card-set.d.ts
CHANGED
package/dist/enums/card-set.js
CHANGED
|
@@ -56,6 +56,7 @@ var CardSet;
|
|
|
56
56
|
CardSet[CardSet["CORE"] = 1637] = "CORE";
|
|
57
57
|
CardSet[CardSet["VANILLA"] = 1646] = "VANILLA";
|
|
58
58
|
CardSet[CardSet["THE_SUNKEN_CITY"] = 1658] = "THE_SUNKEN_CITY";
|
|
59
|
+
CardSet[CardSet["REVENDRETH"] = 1691] = "REVENDRETH";
|
|
59
60
|
CardSet[CardSet["MERCENARIES_DEV"] = 1705] = "MERCENARIES_DEV";
|
|
60
61
|
CardSet[CardSet["OLD_CORE_230"] = 1810] = "OLD_CORE_230";
|
|
61
62
|
})(CardSet = exports.CardSet || (exports.CardSet = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card-set.js","sourceRoot":"","sources":["../../src/enums/card-set.ts"],"names":[],"mappings":";;;AACA,IAAY,
|
|
1
|
+
{"version":3,"file":"card-set.js","sourceRoot":"","sources":["../../src/enums/card-set.ts"],"names":[],"mappings":";;;AACA,IAAY,OAyDX;AAzDD,WAAY,OAAO;IAClB,2CAAW,CAAA;IACX,yDAAkB,CAAA;IAClB,uCAAS,CAAA;IACT,2CAAW,CAAA;IACX,yCAAU,CAAA;IACV,6CAAY,CAAA;IACZ,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,uCAAS,CAAA;IACT,uCAAS,CAAA;IACT,8CAAa,CAAA;IACb,wCAAU,CAAA;IACV,sCAAS,CAAA;IACT,oCAAQ,CAAA;IACR,oCAAQ,CAAA;IACR,oCAAQ,CAAA;IACR,4CAAY,CAAA;IACZ,kDAAe,CAAA;IACf,kCAAO,CAAA;IACP,wCAAU,CAAA;IACV,oCAAQ,CAAA;IACR,kCAAO,CAAA;IACP,kDAAe,CAAA;IACf,sCAAS,CAAA;IACT,sDAAiB,CAAA;IACjB,wCAAU,CAAA;IACV,wDAAkB,CAAA;IAClB,0CAAW,CAAA;IACX,gDAAe,CAAA;IACf,wDAAmB,CAAA;IACnB,8CAAc,CAAA;IACd,gDAAe,CAAA;IACf,0CAAY,CAAA;IACZ,8CAAc,CAAA;IACd,8DAAsB,CAAA;IACtB,0CAAY,CAAA;IACZ,8CAAc,CAAA;IACd,sCAAU,CAAA;IACV,wDAAmB,CAAA;IACnB,oDAAiB,CAAA;IACjB,sDAAkB,CAAA;IAClB,0DAAoB,CAAA;IACpB,0EAA4B,CAAA;IAC5B,4DAAqB,CAAA;IACrB,sDAAkB,CAAA;IAClB,8DAAsB,CAAA;IACtB,kDAAgB,CAAA;IAChB,8CAAc,CAAA;IACd,4DAAqB,CAAA;IACrB,4CAAa,CAAA;IACb,wCAAW,CAAA;IACX,8CAAc,CAAA;IACd,8DAAsB,CAAA;IACtB,oDAAiB,CAAA;IACjB,8DAAsB,CAAA;IACtB,wDAAmB,CAAA;AACpB,CAAC,EAzDW,OAAO,GAAP,eAAO,KAAP,eAAO,QAyDlB","sourcesContent":["// TAG_CARD_SET.cs (but not always fully up-to-date)\r\nexport enum CardSet {\r\n\tINVALID = 0,\r\n\tTEST_TEMPORARY = 1,\r\n\tBASIC = 2,\r\n\tEXPERT1 = 3,\r\n\tREWARD = 4,\r\n\tMISSIONS = 5,\r\n\tDEMO = 6,\r\n\tNONE = 7,\r\n\tCHEAT = 8,\r\n\tBLANK = 9,\r\n\tDEBUG_SP = 10,\r\n\tPROMO = 11,\r\n\tNAXX = 12,\r\n\tGVG = 13,\r\n\tBRM = 14,\r\n\tTGT = 15,\r\n\tCREDITS = 16,\r\n\tHERO_SKINS = 17,\r\n\tTB = 18,\r\n\tSLUSH = 19,\r\n\tLOE = 20,\r\n\tOG = 21,\r\n\tOG_RESERVE = 22,\r\n\tKARA = 23,\r\n\tKARA_RESERVE = 24,\r\n\tGANGS = 25,\r\n\tGANGS_RESERVE = 26,\r\n\tUNGORO = 27,\r\n\tICECROWN = 1001,\r\n\tLOOTAPALOOZA = 1004,\r\n\tGILNEAS = 1125,\r\n\tBOOMSDAY = 1127,\r\n\tTROLL = 1129,\r\n\tDALARAN = 1130,\r\n\tTAVERNS_OF_TIME = 1143,\r\n\tULDUM = 1158,\r\n\tDRAGONS = 1347,\r\n\tYOD = 1403,\r\n\tBLACK_TEMPLE = 1414,\r\n\tWILD_EVENT = 1439,\r\n\tSCHOLOMANCE = 1443,\r\n\tBATTLEGROUNDS = 1453,\r\n\tDEMON_HUNTER_INITIATE = 1463,\r\n\tDARKMOON_FAIRE = 1466,\r\n\tTHE_BARRENS = 1525,\r\n\tWAILING_CAVERNS = 1559,\r\n\tSTORMWIND = 1578,\r\n\tLETTUCE = 1586,\r\n\tALTERAC_VALLEY = 1626,\r\n\tLEGACY = 1635,\r\n\tCORE = 1637,\r\n\tVANILLA = 1646,\r\n\tTHE_SUNKEN_CITY = 1658,\r\n\tREVENDRETH = 1691,\r\n\tMERCENARIES_DEV = 1705,\r\n\tOLD_CORE_230 = 1810, // Cards that were moved out of the core set with 23.0\r\n}\r\n"]}
|
|
@@ -22,7 +22,7 @@ class AllCardsService {
|
|
|
22
22
|
getCards() {
|
|
23
23
|
return Object.values(this.cache);
|
|
24
24
|
}
|
|
25
|
-
async initializeCardsDb(version = '', cardsFile = 'cards_enUS.json', useLocal = false) {
|
|
25
|
+
async initializeCardsDb(version = '', cardsFile = 'cards_enUS.gz.json', useLocal = false) {
|
|
26
26
|
return new Promise(async (resolve, reject) => {
|
|
27
27
|
let allCards = Object.values(this.cache);
|
|
28
28
|
if (!!(allCards === null || allCards === void 0 ? void 0 : allCards.length)) {
|
|
@@ -64,7 +64,7 @@ const loadCards = async (baseUrl, cardsFile, version) => {
|
|
|
64
64
|
const numberOfSplits = 3;
|
|
65
65
|
const result = [];
|
|
66
66
|
for (let i = 0; i < numberOfSplits; i++) {
|
|
67
|
-
const splitUrl = `${baseUrl}/split/${cardsFile}.${i}
|
|
67
|
+
const splitUrl = `${baseUrl}/split/${cardsFile}.${i}${versionString}`;
|
|
68
68
|
console.log('[all-cards] loading split', splitUrl);
|
|
69
69
|
cardsStr = await utils_1.httpWithRetries(splitUrl, 1);
|
|
70
70
|
if (!!(cardsStr === null || cardsStr === void 0 ? void 0 : cardsStr.length) && !cardsStr.startsWith('<')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all-cards.service.js","sourceRoot":"","sources":["../../src/services/all-cards.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { httpWithRetries } from './utils';\r\n\r\nconst CARDS_CDN_URL = 'https://static.firestoneapp.com/data/cards';\r\n\r\nexport class AllCardsService {\r\n\tprivate cache: { [cardId: string]: ReferenceCard } = {};\r\n\tprivate cacheDbfId: { [cardDbfId: string]: ReferenceCard } = {};\r\n\r\n\tconstructor() {\r\n\t\t// We don't call it in the constructor because we want the app to be in control\r\n\t\t// of how they load the cards, and for it to be aware of when cards have been loaded\r\n\t\t// this.retrieveAllCards();\r\n\t}\r\n\r\n\t// We keep this synchronous because we ensure, in the game init pipeline, that loading cards\r\n\t// is the first thing we do\r\n\tpublic getCard(id: string, errorWhenUndefined = true): ReferenceCard {\r\n\t\treturn this.cache[id] ?? ({} as ReferenceCard);\r\n\t}\r\n\r\n\tpublic getCardFromDbfId(dbfId: number): ReferenceCard {\r\n\t\treturn this.cacheDbfId[dbfId] ?? ({} as ReferenceCard);\r\n\t}\r\n\r\n\tpublic getCardsFromDbfIds(dbfIds: number[]): ReferenceCard[] {\r\n\t\treturn dbfIds.map((dbfId) => this.getCardFromDbfId(dbfId));\r\n\t}\r\n\r\n\tpublic getCards(): ReferenceCard[] {\r\n\t\treturn Object.values(this.cache);\r\n\t}\r\n\r\n\tpublic async initializeCardsDb(version = '', cardsFile = 'cards_enUS.json', useLocal = false): Promise<void> {\r\n\t\t// console.debug('[all-cards] asked to retrieve cards from CDN', version, new Error().stack);\r\n\t\treturn new Promise<void>(async (resolve, reject) => {\r\n\t\t\tlet allCards: readonly ReferenceCard[] = Object.values(this.cache);\r\n\t\t\tif (!!allCards?.length) {\r\n\t\t\t\t// console.debug('[all-cards] already loaded all cards');\r\n\t\t\t\tresolve();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.cache = {};\r\n\t\t\tthis.cacheDbfId = {};\r\n\t\t\tconst baseUrl = useLocal ? '.' : CARDS_CDN_URL;\r\n\t\t\tversion = useLocal ? `${version}${Math.random()}` : version;\r\n\t\t\tallCards = await loadCards(baseUrl, cardsFile, version);\r\n\t\t\tif (!allCards?.length) {\r\n\t\t\t\tconsole.error('[all-cards] could not load cards', baseUrl, version, allCards);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('[all-cards] retrieved all cards', allCards?.length);\r\n\t\t\t\tfor (const card of allCards) {\r\n\t\t\t\t\tif (card.id) {\r\n\t\t\t\t\t\tthis.cache[card.id] = card;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (card.dbfId) {\r\n\t\t\t\t\t\tthis.cacheDbfId[card.dbfId] = card;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n}\r\n\r\nconst loadCards = async (baseUrl: string, cardsFile: string, version: string): Promise<readonly ReferenceCard[]> => {\r\n\tconst versionString = !!version?.length ? `?v=${version}` : '';\r\n\tconst url = `${baseUrl}/${cardsFile}${versionString}`;\r\n\tlet cardsStr: string = await httpWithRetries(url, 1);\r\n\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\treturn JSON.parse(cardsStr) as readonly ReferenceCard[];\r\n\t}\r\n\r\n\tconsole.warn('[all-cards] could not load cards, defaulting to split');\r\n\tconst numberOfSplits = 3;\r\n\tconst result: ReferenceCard[] = [];\r\n\tfor (let i = 0; i < numberOfSplits; i++) {\r\n\t\tconst splitUrl = `${baseUrl}/split/${cardsFile}.${i}?v=${version}`;\r\n\t\tconsole.log('[all-cards] loading split', splitUrl);\r\n\t\tcardsStr = await httpWithRetries(splitUrl, 1);\r\n\t\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\t\tconst splitCards: readonly ReferenceCard[] = JSON.parse(cardsStr);\r\n\t\t\tconsole.log('loaded split cards', splitCards?.length);\r\n\t\t\tresult.push(...splitCards);\r\n\t\t}\r\n\t}\r\n\tif (!!result?.length) {\r\n\t\treturn result;\r\n\t}\r\n\r\n\tconst urlNoAudio = `${baseUrl}/no_audio/${cardsFile}?v=${version}`;\r\n\tconsole.warn('[all-cards] could not load cards, defaulting to no_audio', urlNoAudio);\r\n\tcardsStr = await httpWithRetries(urlNoAudio, 1);\r\n\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\treturn JSON.parse(cardsStr) as readonly ReferenceCard[];\r\n\t}\r\n\treturn [];\r\n};\r\n\r\n// The spellstones are present in the AI decklist in their basic version\r\n// However, if the AI plays the spellstone's upgraded version, we need to remove\r\n// the basic one from the decklist\r\nexport const getBaseCardId = (cardId: string): string => {\r\n\tif (!cardId) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (cardId) {\r\n\t\t// The spellstones\r\n\t\tcase 'LOOT_103t1':\r\n\t\tcase 'LOOT_103t2':\r\n\t\t\treturn 'LOOT_103';\r\n\t\tcase 'LOOT_043t2':\r\n\t\tcase 'LOOT_043t3':\r\n\t\t\treturn 'LOOT_043';\r\n\t\tcase 'LOOT_051t1':\r\n\t\tcase 'LOOT_051t2':\r\n\t\t\treturn 'LOOT_051';\r\n\t\tcase 'LOOT_064t1':\r\n\t\tcase 'LOOT_064t2':\r\n\t\t\treturn 'LOOT_064';\r\n\t\tcase 'LOOT_080t2':\r\n\t\tcase 'LOOT_080t3':\r\n\t\t\treturn 'LOOT_080';\r\n\t\tcase 'LOOT_091t1':\r\n\t\tcase 'LOOT_091t2':\r\n\t\t\treturn 'LOOT_091';\r\n\t\tcase 'LOOT_203t2':\r\n\t\tcase 'LOOT_203t3':\r\n\t\t\treturn 'LOOT_203';\r\n\t\tcase 'LOOT_503t':\r\n\t\tcase 'LOOT_503t2':\r\n\t\t\treturn 'LOOT_503';\r\n\t\tcase 'LOOT_507t':\r\n\t\tcase 'LOOT_507t2':\r\n\t\t\treturn 'LOOT_507';\r\n\t\tcase 'FB_Champs_LOOT_080t2':\r\n\t\tcase 'FB_Champs_LOOT_080t3':\r\n\t\t\treturn 'FB_Champs_LOOT_080';\r\n\t\t// The \"unidentified\" spells\r\n\t\tcase 'LOOT_278t1':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t2':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t3':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t4':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_285t':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t2':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t3':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t4':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_286t1':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t2':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t3':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t4':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'DAL_366t1':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t2':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t3':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t4':\r\n\t\t\treturn 'DAL_366';\r\n\t\t// Galakrond\r\n\t\tcase CardIds.GalakrondTheTempest_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheTempest_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheTempest;\r\n\t\tcase CardIds.GalakrondTheWretched_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheWretched_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheWretched;\r\n\t\tcase CardIds.GalakrondTheUnspeakable_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheUnspeakable_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheUnspeakable;\r\n\t\tcase CardIds.GalakrondTheNightmare_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheNightmare_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheNightmare;\r\n\t\tcase CardIds.GalakrondTheUnbreakable_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheUnbreakable_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheUnbreakable;\r\n\t\t// Corrupted\r\n\t\tcase 'DMF_054t':\r\n\t\t\treturn 'DMF_054';\r\n\t\tcase 'DMF_061t':\r\n\t\t\treturn 'DMF_061';\r\n\t\tcase 'DMF_064t':\r\n\t\t\treturn 'DMF_064';\r\n\t\tcase 'DMF_073t':\r\n\t\t\treturn 'DMF_073';\r\n\t\tcase 'DMF_078t':\r\n\t\t\treturn 'DMF_078';\r\n\t\tcase 'DMF_080t':\r\n\t\t\treturn 'DMF_080';\r\n\t\tcase 'DMF_082t':\r\n\t\t\treturn 'DMF_082';\r\n\t\tcase 'DMF_083t':\r\n\t\t\treturn 'DMF_083';\r\n\t\tcase 'DMF_090t':\r\n\t\t\treturn 'DMF_090';\r\n\t\tcase 'DMF_101t':\r\n\t\t\treturn 'DMF_101';\r\n\t\tcase 'DMF_105t':\r\n\t\t\treturn 'DMF_105';\r\n\t\tcase 'DMF_117t':\r\n\t\t\treturn 'DMF_117';\r\n\t\tcase 'DMF_117t2':\r\n\t\t\treturn 'DMF_117';\r\n\t\tcase 'DMF_118t':\r\n\t\t\treturn 'DMF_118';\r\n\t\tcase 'DMF_124t':\r\n\t\t\treturn 'DMF_124';\r\n\t\tcase 'DMF_163t':\r\n\t\t\treturn 'DMF_163';\r\n\t\tcase 'DMF_174t':\r\n\t\t\treturn 'DMF_174';\r\n\t\tcase 'DMF_184t':\r\n\t\t\treturn 'DMF_184';\r\n\t\tcase 'DMF_186a':\r\n\t\t\treturn 'DMF_186';\r\n\t\tcase 'DMF_244t':\r\n\t\t\treturn 'DMF_244';\r\n\t\tcase 'DMF_247t':\r\n\t\t\treturn 'DMF_247';\r\n\t\tcase 'DMF_248t':\r\n\t\t\treturn 'DMF_248';\r\n\t\tcase 'DMF_517a':\r\n\t\t\treturn 'DMF_517';\r\n\t\tcase 'DMF_526a':\r\n\t\t\treturn 'DMF_526';\r\n\t\tcase 'DMF_701t':\r\n\t\t\treturn 'DMF_701';\r\n\t\tcase 'DMF_703t':\r\n\t\t\treturn 'DMF_703';\r\n\t\tcase 'DMF_730t':\r\n\t\t\treturn 'DMF_730';\r\n\t\tcase 'DMF_526a':\r\n\t\t\treturn 'DMF_526';\r\n\t\tcase CardIds.DreamingDrake_DreamingDrakeToken:\r\n\t\t\treturn CardIds.DreamingDrake;\r\n\t\tcase CardIds.LibramOfJudgment_LibramOfJudgmentToken:\r\n\t\t\treturn CardIds.LibramOfJudgment;\r\n\t\tcase CardIds.LuckysoulHoarder_LuckysoulHoarderToken:\r\n\t\t\treturn CardIds.LuckysoulHoarder;\r\n\t\tcase CardIds.NitroboostPoison_NitroboostPoisonToken:\r\n\t\t\treturn CardIds.NitroboostPoison;\r\n\t\t// The \"improve during run\" cards in Duels\r\n\t\t// Upgradable ranked spells\r\n\t\tcase CardIds.TameBeastRank1_TameBeastRank2Token:\r\n\t\tcase CardIds.TameBeastRank1_TameBeastRank3Token:\r\n\t\t\treturn CardIds.TameBeastRank1;\r\n\t\tcase CardIds.ChainLightningRank1_ChainLightningRank2Token:\r\n\t\tcase CardIds.ChainLightningRank1_ChainLightningRank3Token:\r\n\t\t\treturn CardIds.ChainLightningRank1;\r\n\t\tcase CardIds.FlurryRank1_FlurryRank2Token:\r\n\t\tcase CardIds.FlurryRank1_FlurryRank3Token:\r\n\t\t\treturn CardIds.FlurryRank1;\r\n\t\tcase CardIds.CondemnRank1_CondemnRank2Token:\r\n\t\tcase CardIds.CondemnRank1_CondemnRank3Token:\r\n\t\t\treturn CardIds.CondemnRank1;\r\n\t\tcase CardIds.WickedStabRank1_WickedStabRank2Token:\r\n\t\tcase CardIds.WickedStabRank1_WickedStabRank3Token:\r\n\t\t\treturn CardIds.WickedStabRank1;\r\n\t\tcase CardIds.LivingSeedRank1_LivingSeedRank2Token:\r\n\t\tcase CardIds.LivingSeedRank1_LivingSeedRank3Token:\r\n\t\t\treturn CardIds.LivingSeedRank1;\r\n\t\tcase CardIds.ConvictionRank1_ConvictionRank2Token:\r\n\t\tcase CardIds.ConvictionRank1_ConvictionRank3Token:\r\n\t\t\treturn CardIds.ConvictionRank1;\r\n\t\tcase CardIds.ConditioningRank1_ConditioningRank2Token:\r\n\t\tcase CardIds.ConditioningRank1_ConditioningRank3Token:\r\n\t\t\treturn CardIds.ConditioningRank1;\r\n\t\tcase CardIds.FuryRank1_FuryRank2Token:\r\n\t\tcase CardIds.FuryRank1_FuryRank3Token:\r\n\t\t\treturn CardIds.FuryRank1;\r\n\t\tcase CardIds.ImpSwarmRank1_ImpSwarmRank2Token:\r\n\t\tcase CardIds.ImpSwarmRank1_ImpSwarmRank3Token:\r\n\t\t\treturn CardIds.ImpSwarmRank1;\r\n\r\n\t\t// Transfer Student should be handled on a case by case basis\r\n\t}\r\n\r\n\tif (cardId.startsWith(CardIds.TransferStudent)) {\r\n\t\treturn CardIds.TransferStudent;\r\n\t}\r\n\r\n\treturn cardId;\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"all-cards.service.js","sourceRoot":"","sources":["../../src/services/all-cards.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { httpWithRetries } from './utils';\r\n\r\nconst CARDS_CDN_URL = 'https://static.firestoneapp.com/data/cards';\r\n\r\nexport class AllCardsService {\r\n\tprivate cache: { [cardId: string]: ReferenceCard } = {};\r\n\tprivate cacheDbfId: { [cardDbfId: string]: ReferenceCard } = {};\r\n\r\n\tconstructor() {\r\n\t\t// We don't call it in the constructor because we want the app to be in control\r\n\t\t// of how they load the cards, and for it to be aware of when cards have been loaded\r\n\t\t// this.retrieveAllCards();\r\n\t}\r\n\r\n\t// We keep this synchronous because we ensure, in the game init pipeline, that loading cards\r\n\t// is the first thing we do\r\n\tpublic getCard(id: string, errorWhenUndefined = true): ReferenceCard {\r\n\t\treturn this.cache[id] ?? ({} as ReferenceCard);\r\n\t}\r\n\r\n\tpublic getCardFromDbfId(dbfId: number): ReferenceCard {\r\n\t\treturn this.cacheDbfId[dbfId] ?? ({} as ReferenceCard);\r\n\t}\r\n\r\n\tpublic getCardsFromDbfIds(dbfIds: number[]): ReferenceCard[] {\r\n\t\treturn dbfIds.map((dbfId) => this.getCardFromDbfId(dbfId));\r\n\t}\r\n\r\n\tpublic getCards(): ReferenceCard[] {\r\n\t\treturn Object.values(this.cache);\r\n\t}\r\n\r\n\tpublic async initializeCardsDb(version = '', cardsFile = 'cards_enUS.gz.json', useLocal = false): Promise<void> {\r\n\t\t// console.debug('[all-cards] asked to retrieve cards from CDN', version, new Error().stack);\r\n\t\treturn new Promise<void>(async (resolve, reject) => {\r\n\t\t\tlet allCards: readonly ReferenceCard[] = Object.values(this.cache);\r\n\t\t\tif (!!allCards?.length) {\r\n\t\t\t\t// console.debug('[all-cards] already loaded all cards');\r\n\t\t\t\tresolve();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.cache = {};\r\n\t\t\tthis.cacheDbfId = {};\r\n\t\t\tconst baseUrl = useLocal ? '.' : CARDS_CDN_URL;\r\n\t\t\tversion = useLocal ? `${version}${Math.random()}` : version;\r\n\t\t\tallCards = await loadCards(baseUrl, cardsFile, version);\r\n\t\t\tif (!allCards?.length) {\r\n\t\t\t\tconsole.error('[all-cards] could not load cards', baseUrl, version, allCards);\r\n\t\t\t} else {\r\n\t\t\t\tconsole.log('[all-cards] retrieved all cards', allCards?.length);\r\n\t\t\t\tfor (const card of allCards) {\r\n\t\t\t\t\tif (card.id) {\r\n\t\t\t\t\t\tthis.cache[card.id] = card;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (card.dbfId) {\r\n\t\t\t\t\t\tthis.cacheDbfId[card.dbfId] = card;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tresolve();\r\n\t\t});\r\n\t}\r\n}\r\n\r\nconst loadCards = async (baseUrl: string, cardsFile: string, version: string): Promise<readonly ReferenceCard[]> => {\r\n\tconst versionString = !!version?.length ? `?v=${version}` : '';\r\n\tconst url = `${baseUrl}/${cardsFile}${versionString}`;\r\n\tlet cardsStr: string = await httpWithRetries(url, 1);\r\n\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\treturn JSON.parse(cardsStr) as readonly ReferenceCard[];\r\n\t}\r\n\r\n\tconsole.warn('[all-cards] could not load cards, defaulting to split');\r\n\tconst numberOfSplits = 3;\r\n\tconst result: ReferenceCard[] = [];\r\n\tfor (let i = 0; i < numberOfSplits; i++) {\r\n\t\tconst splitUrl = `${baseUrl}/split/${cardsFile}.${i}${versionString}`;\r\n\t\tconsole.log('[all-cards] loading split', splitUrl);\r\n\t\tcardsStr = await httpWithRetries(splitUrl, 1);\r\n\t\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\t\tconst splitCards: readonly ReferenceCard[] = JSON.parse(cardsStr);\r\n\t\t\tconsole.log('loaded split cards', splitCards?.length);\r\n\t\t\tresult.push(...splitCards);\r\n\t\t}\r\n\t}\r\n\tif (!!result?.length) {\r\n\t\treturn result;\r\n\t}\r\n\r\n\tconst urlNoAudio = `${baseUrl}/no_audio/${cardsFile}?v=${version}`;\r\n\tconsole.warn('[all-cards] could not load cards, defaulting to no_audio', urlNoAudio);\r\n\tcardsStr = await httpWithRetries(urlNoAudio, 1);\r\n\tif (!!cardsStr?.length && !cardsStr.startsWith('<')) {\r\n\t\treturn JSON.parse(cardsStr) as readonly ReferenceCard[];\r\n\t}\r\n\treturn [];\r\n};\r\n\r\n// The spellstones are present in the AI decklist in their basic version\r\n// However, if the AI plays the spellstone's upgraded version, we need to remove\r\n// the basic one from the decklist\r\nexport const getBaseCardId = (cardId: string): string => {\r\n\tif (!cardId) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tswitch (cardId) {\r\n\t\t// The spellstones\r\n\t\tcase 'LOOT_103t1':\r\n\t\tcase 'LOOT_103t2':\r\n\t\t\treturn 'LOOT_103';\r\n\t\tcase 'LOOT_043t2':\r\n\t\tcase 'LOOT_043t3':\r\n\t\t\treturn 'LOOT_043';\r\n\t\tcase 'LOOT_051t1':\r\n\t\tcase 'LOOT_051t2':\r\n\t\t\treturn 'LOOT_051';\r\n\t\tcase 'LOOT_064t1':\r\n\t\tcase 'LOOT_064t2':\r\n\t\t\treturn 'LOOT_064';\r\n\t\tcase 'LOOT_080t2':\r\n\t\tcase 'LOOT_080t3':\r\n\t\t\treturn 'LOOT_080';\r\n\t\tcase 'LOOT_091t1':\r\n\t\tcase 'LOOT_091t2':\r\n\t\t\treturn 'LOOT_091';\r\n\t\tcase 'LOOT_203t2':\r\n\t\tcase 'LOOT_203t3':\r\n\t\t\treturn 'LOOT_203';\r\n\t\tcase 'LOOT_503t':\r\n\t\tcase 'LOOT_503t2':\r\n\t\t\treturn 'LOOT_503';\r\n\t\tcase 'LOOT_507t':\r\n\t\tcase 'LOOT_507t2':\r\n\t\t\treturn 'LOOT_507';\r\n\t\tcase 'FB_Champs_LOOT_080t2':\r\n\t\tcase 'FB_Champs_LOOT_080t3':\r\n\t\t\treturn 'FB_Champs_LOOT_080';\r\n\t\t// The \"unidentified\" spells\r\n\t\tcase 'LOOT_278t1':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t2':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t3':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_278t4':\r\n\t\t\treturn 'LOOT_278';\r\n\t\tcase 'LOOT_285t':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t2':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t3':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_285t4':\r\n\t\t\treturn 'LOOT_285';\r\n\t\tcase 'LOOT_286t1':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t2':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t3':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'LOOT_286t4':\r\n\t\t\treturn 'LOOT_286';\r\n\t\tcase 'DAL_366t1':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t2':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t3':\r\n\t\t\treturn 'DAL_366';\r\n\t\tcase 'DAL_366t4':\r\n\t\t\treturn 'DAL_366';\r\n\t\t// Galakrond\r\n\t\tcase CardIds.GalakrondTheTempest_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheTempest_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheTempest;\r\n\t\tcase CardIds.GalakrondTheWretched_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheWretched_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheWretched;\r\n\t\tcase CardIds.GalakrondTheUnspeakable_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheUnspeakable_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheUnspeakable;\r\n\t\tcase CardIds.GalakrondTheNightmare_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheNightmare_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheNightmare;\r\n\t\tcase CardIds.GalakrondTheUnbreakable_GalakrondTheApocalypseToken:\r\n\t\tcase CardIds.GalakrondTheUnbreakable_GalakrondAzerothsEndToken:\r\n\t\t\treturn CardIds.GalakrondTheUnbreakable;\r\n\t\t// Corrupted\r\n\t\tcase 'DMF_054t':\r\n\t\t\treturn 'DMF_054';\r\n\t\tcase 'DMF_061t':\r\n\t\t\treturn 'DMF_061';\r\n\t\tcase 'DMF_064t':\r\n\t\t\treturn 'DMF_064';\r\n\t\tcase 'DMF_073t':\r\n\t\t\treturn 'DMF_073';\r\n\t\tcase 'DMF_078t':\r\n\t\t\treturn 'DMF_078';\r\n\t\tcase 'DMF_080t':\r\n\t\t\treturn 'DMF_080';\r\n\t\tcase 'DMF_082t':\r\n\t\t\treturn 'DMF_082';\r\n\t\tcase 'DMF_083t':\r\n\t\t\treturn 'DMF_083';\r\n\t\tcase 'DMF_090t':\r\n\t\t\treturn 'DMF_090';\r\n\t\tcase 'DMF_101t':\r\n\t\t\treturn 'DMF_101';\r\n\t\tcase 'DMF_105t':\r\n\t\t\treturn 'DMF_105';\r\n\t\tcase 'DMF_117t':\r\n\t\t\treturn 'DMF_117';\r\n\t\tcase 'DMF_117t2':\r\n\t\t\treturn 'DMF_117';\r\n\t\tcase 'DMF_118t':\r\n\t\t\treturn 'DMF_118';\r\n\t\tcase 'DMF_124t':\r\n\t\t\treturn 'DMF_124';\r\n\t\tcase 'DMF_163t':\r\n\t\t\treturn 'DMF_163';\r\n\t\tcase 'DMF_174t':\r\n\t\t\treturn 'DMF_174';\r\n\t\tcase 'DMF_184t':\r\n\t\t\treturn 'DMF_184';\r\n\t\tcase 'DMF_186a':\r\n\t\t\treturn 'DMF_186';\r\n\t\tcase 'DMF_244t':\r\n\t\t\treturn 'DMF_244';\r\n\t\tcase 'DMF_247t':\r\n\t\t\treturn 'DMF_247';\r\n\t\tcase 'DMF_248t':\r\n\t\t\treturn 'DMF_248';\r\n\t\tcase 'DMF_517a':\r\n\t\t\treturn 'DMF_517';\r\n\t\tcase 'DMF_526a':\r\n\t\t\treturn 'DMF_526';\r\n\t\tcase 'DMF_701t':\r\n\t\t\treturn 'DMF_701';\r\n\t\tcase 'DMF_703t':\r\n\t\t\treturn 'DMF_703';\r\n\t\tcase 'DMF_730t':\r\n\t\t\treturn 'DMF_730';\r\n\t\tcase 'DMF_526a':\r\n\t\t\treturn 'DMF_526';\r\n\t\tcase CardIds.DreamingDrake_DreamingDrakeToken:\r\n\t\t\treturn CardIds.DreamingDrake;\r\n\t\tcase CardIds.LibramOfJudgment_LibramOfJudgmentToken:\r\n\t\t\treturn CardIds.LibramOfJudgment;\r\n\t\tcase CardIds.LuckysoulHoarder_LuckysoulHoarderToken:\r\n\t\t\treturn CardIds.LuckysoulHoarder;\r\n\t\tcase CardIds.NitroboostPoison_NitroboostPoisonToken:\r\n\t\t\treturn CardIds.NitroboostPoison;\r\n\t\t// The \"improve during run\" cards in Duels\r\n\t\t// Upgradable ranked spells\r\n\t\tcase CardIds.TameBeastRank1_TameBeastRank2Token:\r\n\t\tcase CardIds.TameBeastRank1_TameBeastRank3Token:\r\n\t\t\treturn CardIds.TameBeastRank1;\r\n\t\tcase CardIds.ChainLightningRank1_ChainLightningRank2Token:\r\n\t\tcase CardIds.ChainLightningRank1_ChainLightningRank3Token:\r\n\t\t\treturn CardIds.ChainLightningRank1;\r\n\t\tcase CardIds.FlurryRank1_FlurryRank2Token:\r\n\t\tcase CardIds.FlurryRank1_FlurryRank3Token:\r\n\t\t\treturn CardIds.FlurryRank1;\r\n\t\tcase CardIds.CondemnRank1_CondemnRank2Token:\r\n\t\tcase CardIds.CondemnRank1_CondemnRank3Token:\r\n\t\t\treturn CardIds.CondemnRank1;\r\n\t\tcase CardIds.WickedStabRank1_WickedStabRank2Token:\r\n\t\tcase CardIds.WickedStabRank1_WickedStabRank3Token:\r\n\t\t\treturn CardIds.WickedStabRank1;\r\n\t\tcase CardIds.LivingSeedRank1_LivingSeedRank2Token:\r\n\t\tcase CardIds.LivingSeedRank1_LivingSeedRank3Token:\r\n\t\t\treturn CardIds.LivingSeedRank1;\r\n\t\tcase CardIds.ConvictionRank1_ConvictionRank2Token:\r\n\t\tcase CardIds.ConvictionRank1_ConvictionRank3Token:\r\n\t\t\treturn CardIds.ConvictionRank1;\r\n\t\tcase CardIds.ConditioningRank1_ConditioningRank2Token:\r\n\t\tcase CardIds.ConditioningRank1_ConditioningRank3Token:\r\n\t\t\treturn CardIds.ConditioningRank1;\r\n\t\tcase CardIds.FuryRank1_FuryRank2Token:\r\n\t\tcase CardIds.FuryRank1_FuryRank3Token:\r\n\t\t\treturn CardIds.FuryRank1;\r\n\t\tcase CardIds.ImpSwarmRank1_ImpSwarmRank2Token:\r\n\t\tcase CardIds.ImpSwarmRank1_ImpSwarmRank3Token:\r\n\t\t\treturn CardIds.ImpSwarmRank1;\r\n\r\n\t\t// Transfer Student should be handled on a case by case basis\r\n\t}\r\n\r\n\tif (cardId.startsWith(CardIds.TransferStudent)) {\r\n\t\treturn CardIds.TransferStudent;\r\n\t}\r\n\r\n\treturn cardId;\r\n};\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duels-utils.js","sourceRoot":"","sources":["../../src/services/duels-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { CardClass } from '../public-api';\r\n\r\nexport const duelsPassivePool1 = [\r\n\tCardIds.AllShallServeTavernBrawl,\r\n\tCardIds.ArcaneFluxTavernBrawl,\r\n\tCardIds.ArcaniteCrystalTavernBrawl,\r\n\tCardIds.ArcticArmorTavernBrawl,\r\n\tCardIds.BeckoningBicornTavernBrawl,\r\n\tCardIds.BitterColdTavernBrawl,\r\n\tCardIds.BookOfWonders,\r\n\tCardIds.CannibalismTavernBrawl,\r\n\tCardIds.CoilCastingTavernBrawl,\r\n\tCardIds.CookiesLadleTavernBrawl,\r\n\t// CardIds.ConduitOfTheStormsTavernBrawl,\r\n\tCardIds.CrystalGemTavernBrawl,\r\n\tCardIds.DivineIlluminationTavernBrawl,\r\n\tCardIds.DragonbloodTavernBrawl,\r\n\t// CardIds.DragonAffinityTavernBrawl,\r\n\tCardIds.EdgeOfDredgeTavernBrawl,\r\n\t// CardIds.EverChangingElixirTavernBrawl,\r\n\tCardIds.FirekeepersIdolTavernBrawl,\r\n\t// CardIds.FireshaperTavernBrawl,\r\n\tCardIds.ForgottenDepthsTavernBrawl,\r\n\tCardIds.FreezeSolidTavernBrawl,\r\n\tCardIds.FromTheSwampTavernBrawl,\r\n\tCardIds.GrommashsArmguardsTavernBrawl,\r\n\tCardIds.HoldTheLineTavernBrawl,\r\n\tCardIds.InspiringPresenceTavernBrawl,\r\n\tCardIds.InvigoratingLightTavernBrawl,\r\n\tCardIds.KindlingFlameTavernBrawl,\r\n\tCardIds.MendingPoolsTavernBrawl,\r\n\tCardIds.MysteriousTomeTavernBrawl,\r\n\tCardIds.NaturalForceTavernBrawl,\r\n\tCardIds.OpenTheDoorwaysTavernBrawl,\r\n\tCardIds.OptimizedPolarityTavernBrawl,\r\n\tCardIds.PillageTheFallenTavernBrawl,\r\n\tCardIds.PlaguebringerTavernBrawl,\r\n\tCardIds.PotionOfSparkingTavernBrawl,\r\n\tCardIds.RecyclingTavernBrawl,\r\n\t// CardIds.RhoninsScryingOrbTavernBrawl,\r\n\tCardIds.RighteousReservesTavernBrawl,\r\n\tCardIds.RingOfPhaseshiftingTavernBrawl,\r\n\tCardIds.RobeOfTheApprenticeTavernBrawl,\r\n\tCardIds.RobesOfShrinkingTavernBrawl,\r\n\tCardIds.RocketBackpacksTavernBrawl,\r\n\t// CardIds.ScatteredCaltropsTavernBrawl,\r\n\tCardIds.SmallBackpacksTavernBrawl,\r\n\t// CardIds.SmallPouchesTavernBrawl,\r\n\tCardIds.StaffOfPainTavernBrawl,\r\n\tCardIds.StakingAClaimTavernBrawl,\r\n\tCardIds.StarvingTavernBrawl,\r\n\tCardIds.StickyFingersTavernBrawl,\r\n\tCardIds.TheFloorIsLavaTavernBrawl,\r\n\tCardIds.UnholyGiftTavernBrawl,\r\n\tCardIds.WitherTheWeakTavernBrawl,\r\n];\r\n\r\nexport const duelsPassivePool2 = [\r\n\tCardIds.AllTogetherNowTavernBrawl,\r\n\tCardIds.AvengingArmamentsTavernBrawl,\r\n\tCardIds.BattleStanceTavernBrawl,\r\n\t// CardIds.Caltrops,\r\n\tCardIds.BronzeSignetTavernBrawl,\r\n\tCardIds.CloakOfEmeraldDreamsTavernBrawl,\r\n\tCardIds.CorruptedFelstoneTavernBrawl,\r\n\tCardIds.DeathlyDeathTavernBrawl,\r\n\tCardIds.DoubleTime,\r\n\tCardIds.DraconicDreamTavernBrawl,\r\n\tCardIds.DragonboneRitualTavernBrawl,\r\n\tCardIds.EerieStoneTavernBrawl,\r\n\tCardIds.ElixirOfVigorTavernBrawl,\r\n\tCardIds.EmeraldGogglesTavernBrawl,\r\n\tCardIds.EnduranceTrainingTavernBrawl,\r\n\tCardIds.FlamesOfTheKirinTorTavernBrawl,\r\n\tCardIds.FlameWavesTavernBrawl,\r\n\tCardIds.GlacialDownpourTavernBrawl,\r\n\tCardIds.GreedyGainsTavernBrawl,\r\n\tCardIds.GuardianLightTavernBrawl,\r\n\tCardIds.HagathasEmbraceTavernBrawl,\r\n\tCardIds.HeavyArmorTavernBrawl,\r\n\tCardIds.IdolsOfEluneTavernBrawl,\r\n\tCardIds.ImpCredibleTrousersTavernBrawl,\r\n\tCardIds.IronRootsTavernBrawl,\r\n\tCardIds.KhadgarsScryingOrb,\r\n\tCardIds.MeekMasteryTavernBrawl,\r\n\tCardIds.MulchMadnessTavernBrawl,\r\n\tCardIds.MummyMagic,\r\n\tCardIds.OopsAllSpellsTavernBrawl,\r\n\tCardIds.OrbOfRevelationTavernBrawl,\r\n\tCardIds.PartyReplacementTavernBrawl,\r\n\tCardIds.RallyTheTroopsTavernBrawl,\r\n\tCardIds.RingOfBlackIceTavernBrawl,\r\n\tCardIds.RingOfRefreshmentTavernBrawl,\r\n\tCardIds.RunicHelmTavernBrawl,\r\n\tCardIds.SpecialDeliveryTavernBrawl,\r\n\tCardIds.SpreadingSaplingsTavernBrawl,\r\n\tCardIds.SunstridersCrownTavernBrawl,\r\n\tCardIds.UnlockedPotential,\r\n];\r\n\r\nexport const duelsPassivePool2UltraRare = [\r\n\tCardIds.BandOfBeesTavernBrawl,\r\n\tCardIds.BattleTotem_LOOTA_846,\r\n\tCardIds.CapturedFlag,\r\n\tCardIds.DisksOfLegendTavernBrawl,\r\n\t// CardIds.DisksOfLegend,\r\n\tCardIds.ExpeditedBurialTavernBrawl,\r\n\tCardIds.LegendaryLootTavernBrawl,\r\n\tCardIds.ManastormTavernBrawl,\r\n\tCardIds.MantleOfIgnitionTavernBrawl,\r\n\tCardIds.RobeOfTheMagi,\r\n\tCardIds.ScepterOfSummoning,\r\n\tCardIds.Shadowcasting101TavernBrawl,\r\n\tCardIds.Stargazing,\r\n\tCardIds.TotemOfTheDead_LOOTA_845,\r\n\tCardIds.UnstableMagicTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool1 = [\r\n\tCardIds.AmalgamateTavernBrawl,\r\n\tCardIds.AstralPortalTavernBrawl,\r\n\tCardIds.BeastlyBeautyTavernBrawl,\r\n\tCardIds.BubbaTavernBrawl,\r\n\tCardIds.ButchTavernBrawl,\r\n\tCardIds.BladeOfQueldelarTavernBrawl,\r\n\tCardIds.BloodMoonTavernBrawl,\r\n\tCardIds.ClockworkAssistantTavernBrawl,\r\n\tCardIds.CoinPouchTavernBrawl,\r\n\tCardIds.CreepyCurioTavernBrawl,\r\n\tCardIds.CrustyTheCrustaceanTavernBrawl,\r\n\tCardIds.Queldelar_HiltOfQueldelar,\r\n\tCardIds.Deathcharger,\r\n\tCardIds.Enrage,\r\n\tCardIds.GentlemansTopHat,\r\n\tCardIds.GoldenKobold,\r\n\tCardIds.GreedyPickaxeTavernBrawl,\r\n\tCardIds.HolyBookTavernBrawl,\r\n\tCardIds.HuntersInsightTavernBrawl,\r\n\tCardIds.JawsTavernBrawl,\r\n\tCardIds.LoyalHenchmanTavernBrawl,\r\n\tCardIds.LoyalSidekickTavernBrawl,\r\n\tCardIds.LoomingPresence_LOEA_01,\r\n\tCardIds.MageArmorTavernBrawl,\r\n\tCardIds.MaskOfMimicryTavernBrawl,\r\n\tCardIds.MindpocalypseTavernBrawl,\r\n\tCardIds.MurlocHolmesTavernBrawl,\r\n\tCardIds.MutatingInjection_NAX11_04,\r\n\tCardIds.NecroticPoisonTavernBrawl,\r\n\tCardIds.OldMilitiaHornTavernBrawl,\r\n\tCardIds.PartyPortalTavernBrawl_PVPDR_SCH_Active08,\r\n\tCardIds.PrincessTavernBrawl,\r\n\tCardIds.PureColdTavernBrawl,\r\n\tCardIds.PuzzleBoxTavernBrawl,\r\n\tCardIds.RoyalGift,\r\n\tCardIds.SowTheSeedsTavernBrawl,\r\n\tCardIds.SpyglassTavernBrawl,\r\n\tCardIds.SuperchargeTavernBrawl,\r\n\tCardIds.SurlyMobTavernBrawl,\r\n\tCardIds.TheExorcisorTavernBrawl,\r\n\tCardIds.VampiricFangsToken,\r\n\tCardIds.WorshipperHeroic,\r\n];\r\n\r\nexport const duelsActivePool2 = [\r\n\tCardIds.ArchmageStaffTavernBrawl,\r\n\tCardIds.BagOfCoinsTavernBrawl,\r\n\tCardIds.BookOfTheDeadTavernBrawl,\r\n\tCardIds.GrimmerPatron_DALA_705,\r\n\tCardIds.HyperblasterTavernBrawl,\r\n\tCardIds.AncientReflectionsTavernBrawl,\r\n\tCardIds.BagOfStuffingTavernBrawl,\r\n\tCardIds.Questionquestionquestion_BlackSoulstoneTavernBrawl,\r\n\tCardIds.BladeOfTheBurningSun,\r\n\tCardIds.GnomishArmyKnife_DALA_702,\r\n\tCardIds.BananaSplitTavernBrawl,\r\n\tCardIds.CanopicJarsTavernBrawl,\r\n\tCardIds.PhaorisBladeTavernBrawl,\r\n\tCardIds.StaffOfScales_ULDA_008,\r\n\tCardIds.WandOfDisintegrationTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool2UltraRare = [\r\n\tCardIds.ChaosTheoryTavernBrawl,\r\n\tCardIds.OverpoweredTavernBrawl,\r\n\tCardIds.DreamgroveRing,\r\n\tCardIds.EmbersOfRagnarosTavernBrawl,\r\n\tCardIds.WaxRager_LOOTA_840,\r\n\tCardIds.WishTavernBrawl,\r\n];\r\n\r\nexport const allDuelsTreasureCardIds = [\r\n\t...duelsPassivePool1,\r\n\t...duelsPassivePool2,\r\n\t...duelsPassivePool2UltraRare,\r\n\t...duelsActivePool1,\r\n\t...duelsActivePool2,\r\n\t...duelsActivePool2UltraRare,\r\n];\r\n\r\nexport const normalizeDuelsHeroCardId = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.VanndarStormpikeTavernBrawl:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n\t\t\treturn CardIds.VanndarStormpikeTavernBrawl;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n\t\t\treturn CardIds.DrektharTavernBrawl;\r\n\t\tdefault:\r\n\t\t\treturn heroCardId;\r\n\t}\r\n};\r\n\r\nexport const normalizeDuelsHeroCardIdForDeckCode = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n\t\t\treturn CardIds.IllidanStormrageHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n\t\t\treturn CardIds.RexxarHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n\t\t\treturn CardIds.UtherLightbringerHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n\t\t\treturn CardIds.AnduinWrynnHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n\t\t\treturn CardIds.ValeeraSanguinarHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n\t\t\treturn CardIds.MalfurionStormrageHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n\t\t\treturn CardIds.JainaProudmooreHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n\t\t\treturn CardIds.ThrallHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n\t\t\treturn CardIds.GuldanHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n\t\t\treturn CardIds.GarroshHellscreamHeroSkins;\r\n\t\tdefault:\r\n\t\t\treturn heroCardId;\r\n\t}\r\n};\r\n\r\n// Maybe it's possible to extract this from the game files or memory somehow?\r\n// Since it doesn't change often it's ok to maintain it manually, at least for now\r\nexport const duelsHeroConfigs = [\r\n\t{\r\n\t\thero: CardIds.StarStudentStelinaTavernBrawl,\r\n\t\theroClasses: [CardClass.DEMONHUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.InfernalStrikeTavernBrawl,\r\n\t\t\tCardIds.OutlanderTavernBrawl,\r\n\t\t\tCardIds.IllidariStrikeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SummoningRitualTavernBrawlToken,\r\n\t\t\tCardIds.MoargOutcastTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheLegionTavernBrawl,\r\n\t\t\tCardIds.BindingChainsTavernBrawlToken,\r\n\t\t\tCardIds.BladeOfQuickeningTavernBrawlToken,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ForestWardenOmuTavernBrawl,\r\n\t\theroClasses: [CardClass.DRUID],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NaturesGiftsTavernBrawl,\r\n\t\t\tCardIds.InvigoratingBloomTavernBrawl,\r\n\t\t\tCardIds.HarvestTimeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WardensInsightTavernBrawlToken,\r\n\t\t\tCardIds.MoonbeastTavernBrawlToken,\r\n\t\t\tCardIds.HerdingHornTavernBrawlToken,\r\n\t\t\tCardIds.MarvelousMyceliumTavernBrawlToken,\r\n\t\t\tCardIds.AwakenedAncientTavernBrawl,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ProfessorSlateTavernBrawl,\r\n\t\theroClasses: [CardClass.HUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SurvivalTrainingTavernBrawl,\r\n\t\t\tCardIds.DeathGamesTavernBrawl,\r\n\t\t\tCardIds.SavageSecretsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SlatesSyringeTavernBrawl,\r\n\t\t\tCardIds.BonecrusherTavernBrawlToken,\r\n\t\t\tCardIds.StalkingPrideTavernBrawlToken,\r\n\t\t\tCardIds.DeathstriderTavernBrawl,\r\n\t\t\tCardIds.CarrotOnAStickTavernBrawl,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MozakiMasterDuelistTavernBrawl,\r\n\t\theroClasses: [CardClass.MAGE],\r\n\t\theroPowers: [CardIds.WyrmBoltTavernBrawl, CardIds.SecretStudiesTavernBrawl, CardIds.FrostShardsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WandOfDuelingTavernBrawlToken,\r\n\t\t\tCardIds.ElementalLearningTavernBrawl,\r\n\t\t\tCardIds.InfiniteArcaneTavernBrawlToken,\r\n\t\t\tCardIds.EmbercasterTavernBrawl,\r\n\t\t\tCardIds.YoggTasticTastiesTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.TuralyonTheTenuredTavernBrawl,\r\n\t\theroClasses: [CardClass.PALADIN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.FromGoldenLightTavernBrawl,\r\n\t\t\tCardIds.BringOnRecruitsTavernBrawl,\r\n\t\t\tCardIds.ModestAspirationsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RoyalGreatswordTavernBrawlToken,\r\n\t\t\tCardIds.MenAtArmsTavernBrawlToken,\r\n\t\t\tCardIds.DrocomurchanicasTavernBrawlToken,\r\n\t\t\tCardIds.FavoredRacerTavernBrawl,\r\n\t\t\tCardIds.HumbleBlessingsTavernBrawl,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MindrenderIlluciaTavernBrawl,\r\n\t\theroClasses: [CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ShadowMendTavernBrawl, CardIds.MindTetherTavernBrawl, CardIds.CallOfMadnessTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FracturedSpiritsTavernBrawlToken,\r\n\t\t\tCardIds.DropletOfInsanityTavernBrawlToken,\r\n\t\t\tCardIds.ScionOfTheDeepTavernBrawlToken,\r\n\t\t\tCardIds.ShadowWordVoidTavernBrawl,\r\n\t\t\tCardIds.HeraldOfTheScaledOnesTavernBrawl,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InfiltratorLilianTavernBrawl,\r\n\t\theroClasses: [CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.RoguishManeuversTavernBrawl,\r\n\t\t\tCardIds.ConnectionsTavernBrawl,\r\n\t\t\tCardIds.VileConcoctionTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.DeadlyWeapons101TavernBrawlToken,\r\n\t\t\tCardIds.NerubianPeddlerTavernBrawlToken,\r\n\t\t\tCardIds.AcquiredAlliesTavernBrawlToken,\r\n\t\t\tCardIds.AceInTheHoleTavernBrawlToken,\r\n\t\t\tCardIds.GreenTortollanShellTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InstructorFireheartTavernBrawlToken,\r\n\t\theroClasses: [CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.StormcatcherTavernBrawl,\r\n\t\t\tCardIds.TotemicPowerTavernBrawl,\r\n\t\t\tCardIds.FerociousFlurryTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ChaosStormTavernBrawl,\r\n\t\t\tCardIds.FluctuatingTotemTavernBrawlToken,\r\n\t\t\tCardIds.InvokeTheVoidTavernBrawlToken,\r\n\t\t\tCardIds.PayloadTotemSpecialistTavernBrawl,\r\n\t\t\tCardIds.TempestsFuryTavernBrawlToken,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ArchwitchWillowTavernBrawl,\r\n\t\theroClasses: [CardClass.WARLOCK],\r\n\t\theroPowers: [CardIds.DarkArtsTavernBrawl, CardIds.DemonBloodTavernBrawl, CardIds.SoulcialStudiesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ImpishAidTavernBrawl,\r\n\t\t\tCardIds.GiftOfTheOldGodsTavernBrawlToken,\r\n\t\t\tCardIds.KillmoxTheBanishedOneTavernBrawlToken,\r\n\t\t\tCardIds.DemonizerTavernBrawlToken,\r\n\t\t\tCardIds.Demonology101TavernBrawlToken,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t// {\r\n\t// \thero: CardIds.DiabloTavernBrawl,\r\n\t// \theroPowers: [\r\n\t// \t\tCardIds.DoomChargeTavernBrawl,\r\n\t// \t\tCardIds.PrimalPowerTavernBrawl,\r\n\t// \t\tCardIds.DemonicTransformationTavernBrawl,\r\n\t// \t],\r\n\t// \tsignatureTreasures: [\r\n\t// \t\tCardIds.ClawsOfTerrorTavernBrawlToken,\r\n\t// \t\tCardIds.FireStompTavernBrawlToken,\r\n\t// \t\tCardIds.ApocalypseTavernBrawlToken,\r\n\t// \t\tCardIds.SoulstoneTrapTavernBrawlToken,\r\n\t// \t\tCardIds.HornsOfFlameTavernBrawlToken,\r\n\t// \t\tCardIds.QuestionquestionquestionTavernBrawlToken,\r\n\t// \t],\r\n\t// },\r\n\t{\r\n\t\thero: CardIds.RattlegoreTavernBrawl,\r\n\t\theroClasses: [CardClass.WARRIOR],\r\n\t\theroPowers: [CardIds.NoGutsNoGloryTavernBrawl, CardIds.BruisingTavernBrawl, CardIds.MagneticMinesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.AutoArmamentsTavernBrawlToken,\r\n\t\t\tCardIds.CollectorsIreTavernBrawlToken,\r\n\t\t\tCardIds.BrewsterTheBrutalTavernBrawlToken,\r\n\t\t\tCardIds.ScrapmetalDemolitionistTavernBrawl,\r\n\t\t\tCardIds.SpikedArmsTavernBrawlToken,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.DrektharTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5,\r\n\t\t],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.WarmastersFrenzyTavernBrawl,\r\n\t\t\tCardIds.HarnessTheElementsTavernBrawl,\r\n\t\t\tCardIds.WarCommandsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ValorousDisplayTavernBrawlToken,\r\n\t\t\tCardIds.ElementalChaosTavernBrawlToken,\r\n\t\t\tCardIds.PactOfTheLichTavernBrawlToken,\r\n\t\t\tCardIds.MagisterUnchainedTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheHeartTavernBrawlToken,\r\n\t\t\tCardIds.ForTheHordeTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.VanndarStormpikeTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5,\r\n\t\t],\r\n\t\theroPowers: [CardIds.PromoteTavernBrawl, CardIds.SendInTheScoutTavernBrawl, CardIds.BattleTacticsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ForgeInLightTavernBrawlToken,\r\n\t\t\tCardIds.SpymastersGambitTavernBrawlToken,\r\n\t\t\tCardIds.StalkersSuppliesTavernBrawlToken,\r\n\t\t\tCardIds.RendingAmbushTavernBrawlToken,\r\n\t\t\tCardIds.DevoutBlessingsTavernBrawlToken,\r\n\t\t\tCardIds.ForTheAllianceTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.RenoJacksonTavernBrawl_PVPDR_Hero_Reno,\r\n\t\theroClasses: [CardClass.MAGE, CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.AmateurMageTavernBrawl,\r\n\t\t\tCardIds.RelicologistTavernBrawl,\r\n\t\t\tCardIds.ArcaneCraftinessTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RenosLuckyHatTavernBrawl,\r\n\t\t\tCardIds.RenosCraftyLassoTavernBrawl,\r\n\t\t\tCardIds.RenosMagicalTorchTavernBrawl,\r\n\t\t\tCardIds.SrTombDiverTavernBrawl,\r\n\t\t\tCardIds.LeiFlamepawTavernBrawl,\r\n\t\t\tCardIds.TheGatlingWandTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.SirFinleyTavernBrawl_PVPDR_Hero_Finley,\r\n\t\theroClasses: [CardClass.PALADIN, CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NewRecruitsTavernBrawl,\r\n\t\t\tCardIds.BubbleBlowerTavernBrawl,\r\n\t\t\tCardIds.PowerUpTavernBrawl_PVPDR_Finley_HP3,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FinleysPithHelmetTavernBrawl,\r\n\t\t\tCardIds.MaxwellMightySteedTavernBrawl,\r\n\t\t\tCardIds.TruesilverLanceTavernBrawl,\r\n\t\t\tCardIds.SrScoutTavernBrawl,\r\n\t\t\tCardIds.KarlTheLostTavernBrawl,\r\n\t\t\tCardIds.ScalesOfJusticeTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.EliseStarseekerTavernBrawl_PVPDR_Hero_Elise,\r\n\t\theroClasses: [CardClass.DRUID, CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ElisesMightTavernBrawl, CardIds.DruidicTeachingTavernBrawl, CardIds.StarseekerTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.StarseekersToolsTavernBrawl,\r\n\t\t\tCardIds.ElisesMacheteTavernBrawl,\r\n\t\t\tCardIds.AddarahTavernBrawl,\r\n\t\t\tCardIds.SrNavigatorTavernBrawl,\r\n\t\t\tCardIds.AcademicResearchTavernBrawl,\r\n\t\t\tCardIds.StaffOfRenewalTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.BrannBronzebeardTavernBrawl_PVPDR_Hero_Brann,\r\n\t\theroClasses: [CardClass.HUNTER, CardClass.WARRIOR],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SpreadShotTavernBrawl,\r\n\t\t\tCardIds.WellEquippedTavernBrawl_PVPDR_Brann_HP2,\r\n\t\t\tCardIds.DinoTrackingTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.OlFaithfulTavernBrawl,\r\n\t\t\tCardIds.BrannsSaddleTavernBrawl,\r\n\t\t\tCardIds.TitanForgedGrapnelTavernBrawl,\r\n\t\t\tCardIds.SrExcavatorTavernBrawl,\r\n\t\t\tCardIds.FloSlatebrandTavernBrawl,\r\n\t\t\tCardIds.BrannsEpicEggTavernBrawl,\r\n\t\t],\r\n\t},\r\n];\r\n\r\nexport const allDuelsSignatureTreasures = duelsHeroConfigs.flatMap((info) => info.signatureTreasures);\r\n\r\nexport const allDuelsHeroes = duelsHeroConfigs.map((conf) => conf.hero);\r\n"]}
|
|
1
|
+
{"version":3,"file":"duels-utils.js","sourceRoot":"","sources":["../../src/services/duels-utils.ts"],"names":[],"mappings":";;;AACA,8CAA0C;AAE7B,QAAA,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDhC,CAAC;AAEW,QAAA,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyChC,CAAC;AAEW,QAAA,0BAA0B,GAAG;;;;;;;;;;;;;;;CAgBzC,CAAC;AAEW,QAAA,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C/B,CAAC;AAEW,QAAA,gBAAgB,GAAG;;;;;;;;;;;;;;;;CAgB/B,CAAC;AAEW,QAAA,yBAAyB,GAAG;;;;;;;CAOxC,CAAC;AAEW,QAAA,uBAAuB,GAAG;IACtC,GAAG,yBAAiB;IACpB,GAAG,yBAAiB;IACpB,GAAG,kCAA0B;IAC7B,GAAG,wBAAgB;IACnB,GAAG,wBAAgB;IACnB,GAAG,iCAAyB;CAC5B,CAAC;AAEK,MAAM,wBAAwB,GAAG,CAAC,UAAkB,EAAU,EAAE;IACtE,QAAQ,UAAU,EAAE;QACnB,0BAAyC;QACzC,4BAA+E;QAC/E,4BAA+E;QAC/E,4BAA+E;QAC/E,4BAA+E;QAC/E;YACC,4BAA2C;QAC5C,2BAAiC;QACjC,6BAAgE;QAChE,6BAAgE;QAChE,6BAAgE;QAChE,6BAAgE;QAChE;YACC,6BAAmC;QACpC;YACC,OAAO,UAAU,CAAC;KACnB;AACF,CAAC,CAAC;AAnBW,QAAA,wBAAwB,4BAmBnC;AAEK,MAAM,mCAAmC,GAAG,CAAC,UAAkB,EAAU,EAAE;IACjF,QAAQ,UAAU,EAAE;QACnB;YACC,iBAAyC;QAC1C;YACC,iBAA+B;QAChC;YACC,iBAA0C;QAC3C;YACC,iBAAoC;QACrC;YACC,iBAAyC;QAC1C;YACC,iBAA2C;QAC5C;YACC,iBAAwC;QACzC;YACC,iBAA+B;QAChC;YACC,iBAA+B;QAChC;YACC,iBAA0C;QAC3C;YACC,OAAO,UAAU,CAAC;KACnB;AACF,CAAC,CAAC;AAzBW,QAAA,mCAAmC,uCAyB9C;AAIW,QAAA,gBAAgB,GAAG;IAC/B;QACC,IAAI,sBAAuC;QAC3C,WAAW,EAAE,CAAC,sBAAS,CAAC,WAAW,CAAC;QACpC,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,kBAAoC;QACxC,WAAW,EAAE,CAAC,sBAAS,CAAC,KAAK,CAAC;QAC9B,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,oBAAmC;QACvC,WAAW,EAAE,CAAC,sBAAS,CAAC,MAAM,CAAC;QAC/B,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,qBAAwC;QAC5C,WAAW,EAAE,CAAC,sBAAS,CAAC,IAAI,CAAC;QAC7B,UAAU,EAAE,4DAA+F;QAC3G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,uBAAuC;QAC3C,WAAW,EAAE,CAAC,sBAAS,CAAC,OAAO,CAAC;QAChC,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,sBAAsC;QAC1C,WAAW,EAAE,CAAC,sBAAS,CAAC,MAAM,CAAC;QAC/B,UAAU,EAAE,kEAAgG;QAC5G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,qBAAsC;QAC1C,WAAW,EAAE,CAAC,sBAAS,CAAC,KAAK,CAAC;QAC9B,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,wBAA6C;QACjD,WAAW,EAAE,CAAC,sBAAS,CAAC,MAAM,CAAC;QAC/B,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,qBAAoC;QACxC,WAAW,EAAE,CAAC,sBAAS,CAAC,OAAO,CAAC;QAChC,UAAU,EAAE,qEAAgG;QAC5G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IAiBD;QACC,IAAI,yBAA+B;QACnC,WAAW,EAAE,CAAC,sBAAS,CAAC,OAAO,CAAC;QAChC,UAAU,EAAE,qEAAiG;QAC7G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,uBAA6B;QACjC,eAAe,EAAE;;;;;;SAMhB;QACD,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,sBAAqC;QACzC,eAAe,EAAE;;;;;;SAMhB;QACD,UAAU,EAAE,kEAAiG;QAC7G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,mBAAgD;QACpD,WAAW,EAAE,CAAC,sBAAS,CAAC,IAAI,EAAE,sBAAS,CAAC,KAAK,CAAC;QAC9C,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,qBAAgD;QACpD,WAAW,EAAE,CAAC,sBAAS,CAAC,OAAO,EAAE,sBAAS,CAAC,MAAM,CAAC;QAClD,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,oBAAqD;QACzD,WAAW,EAAE,CAAC,sBAAS,CAAC,KAAK,EAAE,sBAAS,CAAC,MAAM,CAAC;QAChD,UAAU,EAAE,yDAAmG;QAC/G,kBAAkB,EAAE;;;;;;;SAOnB;KACD;IACD;QACC,IAAI,oBAAsD;QAC1D,WAAW,EAAE,CAAC,sBAAS,CAAC,MAAM,EAAE,sBAAS,CAAC,OAAO,CAAC;QAClD,UAAU,EAAE;;;;SAIX;QACD,kBAAkB,EAAE;;;;;;;SAOnB;KACD;CACD,CAAC;AAEW,QAAA,0BAA0B,GAAG,wBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEzF,QAAA,cAAc,GAAG,wBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { CardClass } from '../public-api';\r\n\r\nexport const duelsPassivePool1 = [\r\n\tCardIds.AllShallServeTavernBrawl,\r\n\tCardIds.ArcaneFluxTavernBrawl,\r\n\tCardIds.ArcaniteCrystalTavernBrawl,\r\n\tCardIds.ArcticArmorTavernBrawl,\r\n\tCardIds.BeckoningBicornTavernBrawl,\r\n\tCardIds.BitterColdTavernBrawl,\r\n\tCardIds.BookOfWonders,\r\n\tCardIds.CannibalismTavernBrawl,\r\n\tCardIds.CoilCastingTavernBrawl,\r\n\tCardIds.CookiesLadleTavernBrawl,\r\n\t// CardIds.ConduitOfTheStormsTavernBrawl,\r\n\tCardIds.CrystalGemTavernBrawl,\r\n\tCardIds.DivineIlluminationTavernBrawl,\r\n\tCardIds.DragonbloodTavernBrawl,\r\n\t// CardIds.DragonAffinityTavernBrawl,\r\n\tCardIds.EdgeOfDredgeTavernBrawl,\r\n\t// CardIds.EverChangingElixirTavernBrawl,\r\n\tCardIds.FirekeepersIdolTavernBrawl,\r\n\t// CardIds.FireshaperTavernBrawl,\r\n\tCardIds.ForgottenDepthsTavernBrawl,\r\n\tCardIds.FreezeSolidTavernBrawl,\r\n\tCardIds.FromTheSwampTavernBrawl,\r\n\tCardIds.GrommashsArmguardsTavernBrawl,\r\n\tCardIds.HoldTheLineTavernBrawl,\r\n\tCardIds.InspiringPresenceTavernBrawl,\r\n\tCardIds.InvigoratingLightTavernBrawl,\r\n\tCardIds.KindlingFlameTavernBrawl,\r\n\tCardIds.MendingPoolsTavernBrawl,\r\n\tCardIds.MysteriousTomeTavernBrawl,\r\n\tCardIds.NaturalForceTavernBrawl,\r\n\tCardIds.OpenTheDoorwaysTavernBrawl,\r\n\tCardIds.OptimizedPolarityTavernBrawl,\r\n\tCardIds.PillageTheFallenTavernBrawl,\r\n\tCardIds.PlaguebringerTavernBrawl,\r\n\tCardIds.PotionOfSparkingTavernBrawl,\r\n\tCardIds.RecyclingTavernBrawl,\r\n\t// CardIds.RhoninsScryingOrbTavernBrawl,\r\n\tCardIds.RighteousReservesTavernBrawl,\r\n\tCardIds.RingOfPhaseshiftingTavernBrawl,\r\n\tCardIds.RobeOfTheApprenticeTavernBrawl,\r\n\tCardIds.RobesOfShrinkingTavernBrawl,\r\n\tCardIds.RocketBackpacksTavernBrawl,\r\n\t// CardIds.ScatteredCaltropsTavernBrawl,\r\n\tCardIds.SmallBackpacksTavernBrawl,\r\n\t// CardIds.SmallPouchesTavernBrawl,\r\n\tCardIds.StaffOfPainTavernBrawl,\r\n\tCardIds.StakingAClaimTavernBrawl,\r\n\tCardIds.StarvingTavernBrawl,\r\n\tCardIds.StickyFingersTavernBrawl,\r\n\tCardIds.TheFloorIsLavaTavernBrawl,\r\n\tCardIds.UnholyGiftTavernBrawl,\r\n\tCardIds.WitherTheWeakTavernBrawl,\r\n];\r\n\r\nexport const duelsPassivePool2 = [\r\n\tCardIds.AllTogetherNowTavernBrawl,\r\n\tCardIds.AvengingArmamentsTavernBrawl,\r\n\tCardIds.BattleStanceTavernBrawl,\r\n\t// CardIds.Caltrops,\r\n\tCardIds.BronzeSignetTavernBrawl,\r\n\tCardIds.CloakOfEmeraldDreamsTavernBrawl,\r\n\tCardIds.CorruptedFelstoneTavernBrawl,\r\n\tCardIds.DeathlyDeathTavernBrawl,\r\n\tCardIds.DoubleTime,\r\n\tCardIds.DraconicDreamTavernBrawl,\r\n\tCardIds.DragonboneRitualTavernBrawl,\r\n\tCardIds.EerieStoneTavernBrawl,\r\n\tCardIds.ElixirOfVigorTavernBrawl,\r\n\tCardIds.EmeraldGogglesTavernBrawl,\r\n\tCardIds.EnduranceTrainingTavernBrawl,\r\n\tCardIds.FlamesOfTheKirinTorTavernBrawl,\r\n\tCardIds.FlameWavesTavernBrawl,\r\n\tCardIds.GlacialDownpourTavernBrawl,\r\n\tCardIds.GreedyGainsTavernBrawl,\r\n\tCardIds.GuardianLightTavernBrawl,\r\n\tCardIds.HagathasEmbraceTavernBrawl,\r\n\tCardIds.HeavyArmorTavernBrawl,\r\n\tCardIds.IdolsOfEluneTavernBrawl,\r\n\tCardIds.ImpCredibleTrousersTavernBrawl,\r\n\tCardIds.IronRootsTavernBrawl,\r\n\tCardIds.KhadgarsScryingOrb,\r\n\tCardIds.MeekMasteryTavernBrawl,\r\n\tCardIds.MulchMadnessTavernBrawl,\r\n\tCardIds.MummyMagic,\r\n\tCardIds.OopsAllSpellsTavernBrawl,\r\n\tCardIds.OrbOfRevelationTavernBrawl,\r\n\tCardIds.PartyReplacementTavernBrawl,\r\n\tCardIds.RallyTheTroopsTavernBrawl,\r\n\tCardIds.RingOfBlackIceTavernBrawl,\r\n\tCardIds.RingOfRefreshmentTavernBrawl,\r\n\tCardIds.RunicHelmTavernBrawl,\r\n\tCardIds.SpecialDeliveryTavernBrawl,\r\n\tCardIds.SpreadingSaplingsTavernBrawl,\r\n\tCardIds.SunstridersCrownTavernBrawl,\r\n\tCardIds.UnlockedPotential,\r\n];\r\n\r\nexport const duelsPassivePool2UltraRare = [\r\n\tCardIds.BandOfBeesTavernBrawl,\r\n\tCardIds.BattleTotem_LOOTA_846,\r\n\tCardIds.CapturedFlag,\r\n\tCardIds.DisksOfLegendTavernBrawl,\r\n\t// CardIds.DisksOfLegend,\r\n\tCardIds.ExpeditedBurialTavernBrawl,\r\n\tCardIds.LegendaryLootTavernBrawl,\r\n\tCardIds.ManastormTavernBrawl,\r\n\tCardIds.MantleOfIgnitionTavernBrawl,\r\n\tCardIds.RobeOfTheMagi,\r\n\tCardIds.ScepterOfSummoning,\r\n\tCardIds.Shadowcasting101TavernBrawl,\r\n\tCardIds.Stargazing,\r\n\tCardIds.TotemOfTheDead_LOOTA_845,\r\n\tCardIds.UnstableMagicTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool1 = [\r\n\tCardIds.AmalgamateTavernBrawl,\r\n\tCardIds.AstralPortalTavernBrawl,\r\n\tCardIds.BeastlyBeautyTavernBrawl,\r\n\tCardIds.BubbaTavernBrawl,\r\n\tCardIds.ButchTavernBrawl,\r\n\tCardIds.BladeOfQueldelarTavernBrawl,\r\n\tCardIds.BloodMoonTavernBrawl,\r\n\tCardIds.ClockworkAssistantTavernBrawl,\r\n\tCardIds.CoinPouchTavernBrawl,\r\n\tCardIds.CreepyCurioTavernBrawl,\r\n\tCardIds.CrustyTheCrustaceanTavernBrawl,\r\n\tCardIds.Queldelar_HiltOfQueldelar,\r\n\tCardIds.Deathcharger,\r\n\tCardIds.Enrage,\r\n\tCardIds.GentlemansTopHat,\r\n\tCardIds.GoldenKobold,\r\n\tCardIds.GreedyPickaxeTavernBrawl,\r\n\tCardIds.HolyBookTavernBrawl,\r\n\tCardIds.HuntersInsightTavernBrawl,\r\n\tCardIds.JawsTavernBrawl,\r\n\tCardIds.LoyalHenchmanTavernBrawl,\r\n\tCardIds.LoyalSidekickTavernBrawl,\r\n\tCardIds.LoomingPresence_LOEA_01,\r\n\tCardIds.MageArmorTavernBrawl,\r\n\tCardIds.MaskOfMimicryTavernBrawl,\r\n\tCardIds.MindpocalypseTavernBrawl,\r\n\tCardIds.MurlocHolmesTavernBrawl,\r\n\tCardIds.MutatingInjection_NAX11_04,\r\n\tCardIds.NecroticPoisonTavernBrawl,\r\n\tCardIds.OldMilitiaHornTavernBrawl,\r\n\tCardIds.PartyPortalTavernBrawl_PVPDR_SCH_Active08,\r\n\tCardIds.PrincessTavernBrawl,\r\n\tCardIds.PureColdTavernBrawl,\r\n\tCardIds.PuzzleBoxTavernBrawl,\r\n\tCardIds.RoyalGift,\r\n\tCardIds.SowTheSeedsTavernBrawl,\r\n\tCardIds.SpyglassTavernBrawl,\r\n\tCardIds.SuperchargeTavernBrawl,\r\n\tCardIds.SurlyMobTavernBrawl,\r\n\tCardIds.TheExorcisorTavernBrawl,\r\n\tCardIds.VampiricFangsToken,\r\n\tCardIds.WorshipperHeroic,\r\n];\r\n\r\nexport const duelsActivePool2 = [\r\n\tCardIds.ArchmageStaffTavernBrawl,\r\n\tCardIds.BagOfCoinsTavernBrawl,\r\n\tCardIds.BookOfTheDeadTavernBrawl,\r\n\tCardIds.GrimmerPatron_DALA_705,\r\n\tCardIds.HyperblasterTavernBrawl,\r\n\tCardIds.AncientReflectionsTavernBrawl,\r\n\tCardIds.BagOfStuffingTavernBrawl,\r\n\tCardIds.Questionquestionquestion_BlackSoulstoneTavernBrawl,\r\n\tCardIds.BladeOfTheBurningSun,\r\n\tCardIds.GnomishArmyKnife_DALA_702,\r\n\tCardIds.BananaSplitTavernBrawl,\r\n\tCardIds.CanopicJarsTavernBrawl,\r\n\tCardIds.PhaorisBlade_ULDA_043,\r\n\tCardIds.StaffOfScales_ULDA_008,\r\n\tCardIds.WandOfDisintegrationTavernBrawl,\r\n];\r\n\r\nexport const duelsActivePool2UltraRare = [\r\n\tCardIds.ChaosTheoryTavernBrawl,\r\n\tCardIds.OverpoweredTavernBrawl,\r\n\tCardIds.DreamgroveRing,\r\n\tCardIds.EmbersOfRagnarosTavernBrawl,\r\n\tCardIds.WaxRager_LOOTA_840,\r\n\tCardIds.WishTavernBrawl,\r\n];\r\n\r\nexport const allDuelsTreasureCardIds = [\r\n\t...duelsPassivePool1,\r\n\t...duelsPassivePool2,\r\n\t...duelsPassivePool2UltraRare,\r\n\t...duelsActivePool1,\r\n\t...duelsActivePool2,\r\n\t...duelsActivePool2UltraRare,\r\n];\r\n\r\nexport const normalizeDuelsHeroCardId = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.VanndarStormpikeTavernBrawl:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n\t\t\treturn CardIds.VanndarStormpikeTavernBrawl;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n\t\t\treturn CardIds.DrektharTavernBrawl;\r\n\t\tdefault:\r\n\t\t\treturn heroCardId;\r\n\t}\r\n};\r\n\r\nexport const normalizeDuelsHeroCardIdForDeckCode = (heroCardId: string): string => {\r\n\tswitch (heroCardId) {\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1:\r\n\t\t\treturn CardIds.IllidanStormrageHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2:\r\n\t\t\treturn CardIds.RexxarHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3:\r\n\t\t\treturn CardIds.UtherLightbringerHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4:\r\n\t\t\treturn CardIds.AnduinWrynnHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5:\r\n\t\t\treturn CardIds.ValeeraSanguinarHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1:\r\n\t\t\treturn CardIds.MalfurionStormrageHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2:\r\n\t\t\treturn CardIds.JainaProudmooreHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3:\r\n\t\t\treturn CardIds.ThrallHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4:\r\n\t\t\treturn CardIds.GuldanHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5:\r\n\t\t\treturn CardIds.GarroshHellscreamHeroSkins;\r\n\t\tdefault:\r\n\t\t\treturn heroCardId;\r\n\t}\r\n};\r\n\r\n// Maybe it's possible to extract this from the game files or memory somehow?\r\n// Since it doesn't change often it's ok to maintain it manually, at least for now\r\nexport const duelsHeroConfigs = [\r\n\t{\r\n\t\thero: CardIds.StarStudentStelinaTavernBrawl,\r\n\t\theroClasses: [CardClass.DEMONHUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.InfernalStrikeTavernBrawl,\r\n\t\t\tCardIds.OutlanderTavernBrawl,\r\n\t\t\tCardIds.IllidariStrikeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SummoningRitualTavernBrawlToken,\r\n\t\t\tCardIds.MoargOutcastTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheLegionTavernBrawl,\r\n\t\t\tCardIds.BindingChainsTavernBrawlToken,\r\n\t\t\tCardIds.BladeOfQuickeningTavernBrawlToken,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ForestWardenOmuTavernBrawl,\r\n\t\theroClasses: [CardClass.DRUID],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NaturesGiftsTavernBrawl,\r\n\t\t\tCardIds.InvigoratingBloomTavernBrawl,\r\n\t\t\tCardIds.HarvestTimeTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WardensInsightTavernBrawlToken,\r\n\t\t\tCardIds.MoonbeastTavernBrawlToken,\r\n\t\t\tCardIds.HerdingHornTavernBrawlToken,\r\n\t\t\tCardIds.MarvelousMyceliumTavernBrawlToken,\r\n\t\t\tCardIds.AwakenedAncientTavernBrawl,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ProfessorSlateTavernBrawl,\r\n\t\theroClasses: [CardClass.HUNTER],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SurvivalTrainingTavernBrawl,\r\n\t\t\tCardIds.DeathGamesTavernBrawl,\r\n\t\t\tCardIds.SavageSecretsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.SlatesSyringeTavernBrawl,\r\n\t\t\tCardIds.BonecrusherTavernBrawlToken,\r\n\t\t\tCardIds.StalkingPrideTavernBrawlToken,\r\n\t\t\tCardIds.DeathstriderTavernBrawl,\r\n\t\t\tCardIds.CarrotOnAStickTavernBrawl,\r\n\t\t\tCardIds.TraktamerAelessaTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MozakiMasterDuelistTavernBrawl,\r\n\t\theroClasses: [CardClass.MAGE],\r\n\t\theroPowers: [CardIds.WyrmBoltTavernBrawl, CardIds.SecretStudiesTavernBrawl, CardIds.FrostShardsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.WandOfDuelingTavernBrawlToken,\r\n\t\t\tCardIds.ElementalLearningTavernBrawl,\r\n\t\t\tCardIds.InfiniteArcaneTavernBrawlToken,\r\n\t\t\tCardIds.EmbercasterTavernBrawl,\r\n\t\t\tCardIds.YoggTasticTastiesTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.TuralyonTheTenuredTavernBrawl,\r\n\t\theroClasses: [CardClass.PALADIN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.FromGoldenLightTavernBrawl,\r\n\t\t\tCardIds.BringOnRecruitsTavernBrawl,\r\n\t\t\tCardIds.ModestAspirationsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RoyalGreatswordTavernBrawlToken,\r\n\t\t\tCardIds.MenAtArmsTavernBrawlToken,\r\n\t\t\tCardIds.DrocomurchanicasTavernBrawlToken,\r\n\t\t\tCardIds.FavoredRacerTavernBrawl,\r\n\t\t\tCardIds.HumbleBlessingsTavernBrawl,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.MindrenderIlluciaTavernBrawl,\r\n\t\theroClasses: [CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ShadowMendTavernBrawl, CardIds.MindTetherTavernBrawl, CardIds.CallOfMadnessTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FracturedSpiritsTavernBrawlToken,\r\n\t\t\tCardIds.DropletOfInsanityTavernBrawlToken,\r\n\t\t\tCardIds.ScionOfTheDeepTavernBrawlToken,\r\n\t\t\tCardIds.ShadowWordVoidTavernBrawl,\r\n\t\t\tCardIds.HeraldOfTheScaledOnesTavernBrawl,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InfiltratorLilianTavernBrawl,\r\n\t\theroClasses: [CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.RoguishManeuversTavernBrawl,\r\n\t\t\tCardIds.ConnectionsTavernBrawl,\r\n\t\t\tCardIds.VileConcoctionTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.DeadlyWeapons101TavernBrawlToken,\r\n\t\t\tCardIds.NerubianPeddlerTavernBrawlToken,\r\n\t\t\tCardIds.AcquiredAlliesTavernBrawlToken,\r\n\t\t\tCardIds.AceInTheHoleTavernBrawlToken,\r\n\t\t\tCardIds.GreenTortollanShellTavernBrawl,\r\n\t\t\tCardIds.BritzBlazebucketTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.InstructorFireheartTavernBrawlToken,\r\n\t\theroClasses: [CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.StormcatcherTavernBrawl,\r\n\t\t\tCardIds.TotemicPowerTavernBrawl,\r\n\t\t\tCardIds.FerociousFlurryTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ChaosStormTavernBrawl,\r\n\t\t\tCardIds.FluctuatingTotemTavernBrawlToken,\r\n\t\t\tCardIds.InvokeTheVoidTavernBrawlToken,\r\n\t\t\tCardIds.PayloadTotemSpecialistTavernBrawl,\r\n\t\t\tCardIds.TempestsFuryTavernBrawlToken,\r\n\t\t\tCardIds.ZukaraTheWildTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.ArchwitchWillowTavernBrawl,\r\n\t\theroClasses: [CardClass.WARLOCK],\r\n\t\theroPowers: [CardIds.DarkArtsTavernBrawl, CardIds.DemonBloodTavernBrawl, CardIds.SoulcialStudiesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ImpishAidTavernBrawl,\r\n\t\t\tCardIds.GiftOfTheOldGodsTavernBrawlToken,\r\n\t\t\tCardIds.KillmoxTheBanishedOneTavernBrawlToken,\r\n\t\t\tCardIds.DemonizerTavernBrawlToken,\r\n\t\t\tCardIds.Demonology101TavernBrawlToken,\r\n\t\t\tCardIds.JorasThuldoomTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t// {\r\n\t// \thero: CardIds.DiabloTavernBrawl,\r\n\t// \theroPowers: [\r\n\t// \t\tCardIds.DoomChargeTavernBrawl,\r\n\t// \t\tCardIds.PrimalPowerTavernBrawl,\r\n\t// \t\tCardIds.DemonicTransformationTavernBrawl,\r\n\t// \t],\r\n\t// \tsignatureTreasures: [\r\n\t// \t\tCardIds.ClawsOfTerrorTavernBrawlToken,\r\n\t// \t\tCardIds.FireStompTavernBrawlToken,\r\n\t// \t\tCardIds.ApocalypseTavernBrawlToken,\r\n\t// \t\tCardIds.SoulstoneTrapTavernBrawlToken,\r\n\t// \t\tCardIds.HornsOfFlameTavernBrawlToken,\r\n\t// \t\tCardIds.QuestionquestionquestionTavernBrawlToken,\r\n\t// \t],\r\n\t// },\r\n\t{\r\n\t\thero: CardIds.RattlegoreTavernBrawl,\r\n\t\theroClasses: [CardClass.WARRIOR],\r\n\t\theroPowers: [CardIds.NoGutsNoGloryTavernBrawl, CardIds.BruisingTavernBrawl, CardIds.MagneticMinesTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.AutoArmamentsTavernBrawlToken,\r\n\t\t\tCardIds.CollectorsIreTavernBrawlToken,\r\n\t\t\tCardIds.BrewsterTheBrutalTavernBrawlToken,\r\n\t\t\tCardIds.ScrapmetalDemolitionistTavernBrawl,\r\n\t\t\tCardIds.SpikedArmsTavernBrawlToken,\r\n\t\t\tCardIds.SuLeadfootTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.DrektharTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5,\r\n\t\t],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.WarmastersFrenzyTavernBrawl,\r\n\t\t\tCardIds.HarnessTheElementsTavernBrawl,\r\n\t\t\tCardIds.WarCommandsTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ValorousDisplayTavernBrawlToken,\r\n\t\t\tCardIds.ElementalChaosTavernBrawlToken,\r\n\t\t\tCardIds.PactOfTheLichTavernBrawlToken,\r\n\t\t\tCardIds.MagisterUnchainedTavernBrawlToken,\r\n\t\t\tCardIds.GiftOfTheHeartTavernBrawlToken,\r\n\t\t\tCardIds.ForTheHordeTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.VanndarStormpikeTavernBrawl,\r\n\t\talternateHeroes: [\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5,\r\n\t\t],\r\n\t\theroPowers: [CardIds.PromoteTavernBrawl, CardIds.SendInTheScoutTavernBrawl, CardIds.BattleTacticsTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.ForgeInLightTavernBrawlToken,\r\n\t\t\tCardIds.SpymastersGambitTavernBrawlToken,\r\n\t\t\tCardIds.StalkersSuppliesTavernBrawlToken,\r\n\t\t\tCardIds.RendingAmbushTavernBrawlToken,\r\n\t\t\tCardIds.DevoutBlessingsTavernBrawlToken,\r\n\t\t\tCardIds.ForTheAllianceTavernBrawlToken,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.RenoJacksonTavernBrawl_PVPDR_Hero_Reno,\r\n\t\theroClasses: [CardClass.MAGE, CardClass.ROGUE],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.AmateurMageTavernBrawl,\r\n\t\t\tCardIds.RelicologistTavernBrawl,\r\n\t\t\tCardIds.ArcaneCraftinessTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.RenosLuckyHatTavernBrawl,\r\n\t\t\tCardIds.RenosCraftyLassoTavernBrawl,\r\n\t\t\tCardIds.RenosMagicalTorchTavernBrawl,\r\n\t\t\tCardIds.SrTombDiverTavernBrawl,\r\n\t\t\tCardIds.LeiFlamepawTavernBrawl,\r\n\t\t\tCardIds.TheGatlingWandTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.SirFinleyTavernBrawl_PVPDR_Hero_Finley,\r\n\t\theroClasses: [CardClass.PALADIN, CardClass.SHAMAN],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.NewRecruitsTavernBrawl,\r\n\t\t\tCardIds.BubbleBlowerTavernBrawl,\r\n\t\t\tCardIds.PowerUpTavernBrawl_PVPDR_Finley_HP3,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.FinleysPithHelmetTavernBrawl,\r\n\t\t\tCardIds.MaxwellMightySteedTavernBrawl,\r\n\t\t\tCardIds.TruesilverLanceTavernBrawl,\r\n\t\t\tCardIds.SrScoutTavernBrawl,\r\n\t\t\tCardIds.KarlTheLostTavernBrawl,\r\n\t\t\tCardIds.ScalesOfJusticeTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.EliseStarseekerTavernBrawl_PVPDR_Hero_Elise,\r\n\t\theroClasses: [CardClass.DRUID, CardClass.PRIEST],\r\n\t\theroPowers: [CardIds.ElisesMightTavernBrawl, CardIds.DruidicTeachingTavernBrawl, CardIds.StarseekerTavernBrawl],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.StarseekersToolsTavernBrawl,\r\n\t\t\tCardIds.ElisesMacheteTavernBrawl,\r\n\t\t\tCardIds.AddarahTavernBrawl,\r\n\t\t\tCardIds.SrNavigatorTavernBrawl,\r\n\t\t\tCardIds.AcademicResearchTavernBrawl,\r\n\t\t\tCardIds.StaffOfRenewalTavernBrawl,\r\n\t\t],\r\n\t},\r\n\t{\r\n\t\thero: CardIds.BrannBronzebeardTavernBrawl_PVPDR_Hero_Brann,\r\n\t\theroClasses: [CardClass.HUNTER, CardClass.WARRIOR],\r\n\t\theroPowers: [\r\n\t\t\tCardIds.SpreadShotTavernBrawl,\r\n\t\t\tCardIds.WellEquippedTavernBrawl_PVPDR_Brann_HP2,\r\n\t\t\tCardIds.DinoTrackingTavernBrawl,\r\n\t\t],\r\n\t\tsignatureTreasures: [\r\n\t\t\tCardIds.OlFaithfulTavernBrawl,\r\n\t\t\tCardIds.BrannsSaddleTavernBrawl,\r\n\t\t\tCardIds.TitanForgedGrapnelTavernBrawl,\r\n\t\t\tCardIds.SrExcavatorTavernBrawl,\r\n\t\t\tCardIds.FloSlatebrandTavernBrawl,\r\n\t\t\tCardIds.BrannsEpicEggTavernBrawl,\r\n\t\t],\r\n\t},\r\n];\r\n\r\nexport const allDuelsSignatureTreasures = duelsHeroConfigs.flatMap((info) => info.signatureTreasures);\r\n\r\nexport const allDuelsHeroes = duelsHeroConfigs.map((conf) => conf.hero);\r\n"]}
|