@firestone-hs/reference-data 0.1.247 → 1.0.0
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/card-ids.d.ts +3934 -3934
- package/dist/card-ids.js.map +1 -1
- package/dist/models/reference-cards/related-cards-data.js +36 -25
- package/dist/models/reference-cards/related-cards-data.js.map +1 -1
- package/dist/services/all-cards.service.js +35 -6
- package/dist/services/all-cards.service.js.map +1 -1
- package/dist/services/duels-utils.d.ts +1 -1
- package/dist/services/duels-utils.js +13 -22
- package/dist/services/duels-utils.js.map +1 -1
- package/dist/services/hs-utils.js +8 -8
- package/dist/services/hs-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,7 +24,7 @@ class AllCardsService {
|
|
|
24
24
|
}
|
|
25
25
|
async initializeCardsDb(version = '', cardsFile = 'cards_enUS.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)) {
|
|
29
29
|
resolve();
|
|
30
30
|
return;
|
|
@@ -33,13 +33,12 @@ class AllCardsService {
|
|
|
33
33
|
this.cacheDbfId = {};
|
|
34
34
|
const baseUrl = useLocal ? '.' : CARDS_CDN_URL;
|
|
35
35
|
version = useLocal ? `${version}${Math.random()}` : version;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
console.error('[all-cards] could not load cards', url, cardsStr);
|
|
36
|
+
allCards = await loadCards(baseUrl, cardsFile, version);
|
|
37
|
+
if (!(allCards === null || allCards === void 0 ? void 0 : allCards.length)) {
|
|
38
|
+
console.error('[all-cards] could not load cards', baseUrl, version, allCards);
|
|
40
39
|
}
|
|
41
40
|
else {
|
|
42
|
-
|
|
41
|
+
console.log('[all-cards] retrieved all cards', allCards === null || allCards === void 0 ? void 0 : allCards.length);
|
|
43
42
|
for (const card of allCards) {
|
|
44
43
|
if (card.id) {
|
|
45
44
|
this.cache[card.id] = card;
|
|
@@ -54,6 +53,36 @@ class AllCardsService {
|
|
|
54
53
|
}
|
|
55
54
|
}
|
|
56
55
|
exports.AllCardsService = AllCardsService;
|
|
56
|
+
const loadCards = async (baseUrl, cardsFile, version) => {
|
|
57
|
+
const url = `${baseUrl}/${cardsFile}?v=${version}`;
|
|
58
|
+
let cardsStr = await utils_1.httpWithRetries(url, 1);
|
|
59
|
+
if (!!(cardsStr === null || cardsStr === void 0 ? void 0 : cardsStr.length) && !cardsStr.startsWith('<')) {
|
|
60
|
+
return JSON.parse(cardsStr);
|
|
61
|
+
}
|
|
62
|
+
console.warn('[all-cards] could not load cards, defaulting to split');
|
|
63
|
+
const numberOfSplits = 3;
|
|
64
|
+
const result = [];
|
|
65
|
+
for (let i = 0; i < numberOfSplits; i++) {
|
|
66
|
+
const splitUrl = `${baseUrl}/split/${cardsFile}.${i}?v=${version}`;
|
|
67
|
+
console.log('[all-cards] loading split', splitUrl);
|
|
68
|
+
cardsStr = await utils_1.httpWithRetries(splitUrl, 1);
|
|
69
|
+
if (!!(cardsStr === null || cardsStr === void 0 ? void 0 : cardsStr.length) && !cardsStr.startsWith('<')) {
|
|
70
|
+
const splitCards = JSON.parse(cardsStr);
|
|
71
|
+
console.log('loaded split cards', splitCards === null || splitCards === void 0 ? void 0 : splitCards.length);
|
|
72
|
+
result.push(...splitCards);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (!!(result === null || result === void 0 ? void 0 : result.length)) {
|
|
76
|
+
return result;
|
|
77
|
+
}
|
|
78
|
+
const urlNoAudio = `${baseUrl}/no_audio/${cardsFile}?v=${version}`;
|
|
79
|
+
console.warn('[all-cards] could not load cards, defaulting to no_audio', urlNoAudio);
|
|
80
|
+
cardsStr = await utils_1.httpWithRetries(urlNoAudio, 1);
|
|
81
|
+
if (!!(cardsStr === null || cardsStr === void 0 ? void 0 : cardsStr.length) && !cardsStr.startsWith('<')) {
|
|
82
|
+
return JSON.parse(cardsStr);
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
};
|
|
57
86
|
const getBaseCardId = (cardId) => {
|
|
58
87
|
if (!cardId) {
|
|
59
88
|
return null;
|
|
@@ -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\tconst allCards = 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\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\tconst url = `${baseUrl}/${cardsFile}?v=${version}`;\r\n\t\t\tconst cardsStr: string = await httpWithRetries(url, 5);\r\n\t\t\tif (!cardsStr || cardsStr.length === 0 || cardsStr.startsWith('<')) {\r\n\t\t\t\tconsole.error('[all-cards] could not load cards', url, cardsStr);\r\n\t\t\t} else {\r\n\t\t\t\t// console.debug('[all-cards] retrieved all cards');\r\n\t\t\t\tconst allCards: readonly ReferenceCard[] = JSON.parse(cardsStr);\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\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":";;;AAEA,mCAA0C;AAE1C,MAAM,aAAa,GAAG,4CAA4C,CAAC;AAEnE,MAAa,eAAe;IAI3B;QAHQ,UAAK,GAAwC,EAAE,CAAC;QAChD,eAAU,GAA2C,EAAE,CAAC;IAMhE,CAAC;IAIM,OAAO,CAAC,EAAU,EAAE,kBAAkB,GAAG,IAAI;;QACnD,aAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,mCAAK,EAAoB,CAAC;IAChD,CAAC;IAEM,gBAAgB,CAAC,KAAa;;QACpC,aAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mCAAK,EAAoB,CAAC;IACxD,CAAC;IAEM,kBAAkB,CAAC,MAAgB;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,QAAQ;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,iBAAiB,EAAE,QAAQ,GAAG,KAAK;QAE3F,OAAO,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAClD,IAAI,QAAQ,GAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,EAAE;gBAEvB,OAAO,EAAE,CAAC;gBACV,OAAO;aACP;YAED,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;YAC/C,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC5D,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,EAAE;gBACtB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;aAC9E;iBAAM;gBACN,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAC,CAAC;gBACjE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;oBAC5B,IAAI,IAAI,CAAC,EAAE,EAAE;wBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;qBAC3B;oBACD,IAAI,IAAI,CAAC,KAAK,EAAE;wBACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;qBACnC;iBACD;aACD;YACD,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AA3DD,0CA2DC;AAED,MAAM,SAAS,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,OAAe,EAAqC,EAAE;IAClH,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,SAAS,MAAM,OAAO,EAAE,CAAC;IACnD,IAAI,QAAQ,GAAW,MAAM,uBAAe,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA6B,CAAC;KACxD;IAED,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,CAAC,CAAC;IACzB,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,GAAG,OAAO,UAAU,SAAS,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QACnD,QAAQ,GAAG,MAAM,uBAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACpD,MAAM,UAAU,GAA6B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;SAC3B;KACD;IACD,IAAI,CAAC,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAA,EAAE;QACrB,OAAO,MAAM,CAAC;KACd;IAED,MAAM,UAAU,GAAG,GAAG,OAAO,aAAa,SAAS,MAAM,OAAO,EAAE,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,0DAA0D,EAAE,UAAU,CAAC,CAAC;IACrF,QAAQ,GAAG,MAAM,uBAAe,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,EAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,CAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;QACpD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA6B,CAAC;KACxD;IACD,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAKK,MAAM,aAAa,GAAG,CAAC,MAAc,EAAU,EAAE;IACvD,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,IAAI,CAAC;KACZ;IAED,QAAQ,MAAM,EAAE;QAEf,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY,CAAC;QAClB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,sBAAsB,CAAC;QAC5B,KAAK,sBAAsB;YAC1B,OAAO,oBAAoB,CAAC;QAE7B,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,WAAW;YACf,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,YAAY;YAChB,OAAO,UAAU,CAAC;QACnB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC;QAElB,iBAA6D;QAC7D;YACC,iBAAmC;QACpC,iBAA8D;QAC9D;YACC,iBAAoC;QACrC,iBAAiE;QACjE;YACC,iBAAuC;QACxC,iBAA+D;QAC/D;YACC,iBAAqC;QACtC,iBAAiE;QACjE;YACC,iBAAuC;QAExC,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,WAAW;YACf,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB,KAAK,UAAU;YACd,OAAO,SAAS,CAAC;QAClB;YACC,iBAA6B;QAC9B;YACC,iBAAgC;QACjC;YACC,iBAAgC;QACjC;YACC,iBAAgC;QAGjC,gBAAgD;QAChD;YACC,iBAA8B;QAC/B,gBAA0D;QAC1D;YACC,iBAAmC;QACpC,gBAA0C;QAC1C;YACC,iBAA2B;QAC5B,gBAA4C;QAC5C;YACC,iBAA4B;QAC7B,gBAAkD;QAClD;YACC,iBAA+B;QAChC,gBAAkD;QAClD;YACC,iBAA+B;QAChC,gBAAkD;QAClD;YACC,iBAA+B;QAChC,gBAAsD;QACtD;YACC,iBAAiC;QAClC,gBAAsC;QACtC;YACC,iBAAyB;QAC1B,gBAA8C;QAC9C;YACC,iBAA6B;KAG9B;IAED,IAAI,MAAM,CAAC,UAAU,WAAyB,EAAE;QAC/C,iBAA+B;KAC/B;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAhMW,QAAA,aAAa,iBAgMxB","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 url = `${baseUrl}/${cardsFile}?v=${version}`;\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"]}
|
|
@@ -7,7 +7,6 @@ export declare const duelsActivePool1: CardIds[];
|
|
|
7
7
|
export declare const duelsActivePool2: CardIds[];
|
|
8
8
|
export declare const duelsActivePool2UltraRare: CardIds[];
|
|
9
9
|
export declare const allDuelsTreasureCardIds: CardIds[];
|
|
10
|
-
export declare const allDuelsHeroes: CardIds[];
|
|
11
10
|
export declare const normalizeDuelsHeroCardId: (heroCardId: string) => string;
|
|
12
11
|
export declare const normalizeDuelsHeroCardIdForDeckCode: (heroCardId: string) => string;
|
|
13
12
|
export declare const duelsHeroConfigs: ({
|
|
@@ -24,3 +23,4 @@ export declare const duelsHeroConfigs: ({
|
|
|
24
23
|
heroClasses?: undefined;
|
|
25
24
|
})[];
|
|
26
25
|
export declare const allDuelsSignatureTreasures: CardIds[];
|
|
26
|
+
export declare const allDuelsHeroes: CardIds[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.allDuelsHeroes = exports.allDuelsSignatureTreasures = exports.duelsHeroConfigs = exports.normalizeDuelsHeroCardIdForDeckCode = exports.normalizeDuelsHeroCardId = exports.allDuelsTreasureCardIds = exports.duelsActivePool2UltraRare = exports.duelsActivePool2 = exports.duelsActivePool1 = exports.duelsPassivePool2UltraRare = exports.duelsPassivePool2 = exports.duelsPassivePool1 = void 0;
|
|
4
4
|
const public_api_1 = require("../public-api");
|
|
5
5
|
exports.duelsPassivePool1 = [
|
|
6
6
|
"PVPDR_SCH_Passive18",
|
|
@@ -163,7 +163,7 @@ exports.duelsActivePool2 = [
|
|
|
163
163
|
"DALA_702",
|
|
164
164
|
"PVPDR_SCH_Active23",
|
|
165
165
|
"PVPDR_SCH_Active19",
|
|
166
|
-
"
|
|
166
|
+
"PVPDR_SCH_Active20",
|
|
167
167
|
"ULDA_008",
|
|
168
168
|
"PVPDR_SCH_Active07",
|
|
169
169
|
];
|
|
@@ -183,24 +183,6 @@ exports.allDuelsTreasureCardIds = [
|
|
|
183
183
|
...exports.duelsActivePool2,
|
|
184
184
|
...exports.duelsActivePool2UltraRare,
|
|
185
185
|
];
|
|
186
|
-
exports.allDuelsHeroes = [
|
|
187
|
-
"PVPDR_Hero_Illucia",
|
|
188
|
-
"PVPDR_Hero_Rattlegore",
|
|
189
|
-
"PVPDR_Hero_Turalyon",
|
|
190
|
-
"PVPDR_Hero_Stelina",
|
|
191
|
-
"PVPDR_Hero_Slate",
|
|
192
|
-
"PVPDR_Hero_Omu",
|
|
193
|
-
"PVPDR_Hero_Mozaki",
|
|
194
|
-
"PVPDR_Hero_Willow",
|
|
195
|
-
"PVPDR_Hero_Fireheart",
|
|
196
|
-
"PVPDR_Hero_Lilian",
|
|
197
|
-
"PVPDR_Hero_Vanndar",
|
|
198
|
-
"PVPDR_Hero_DrekThar",
|
|
199
|
-
"PVPDR_Hero_Reno",
|
|
200
|
-
"PVPDR_Hero_Finley",
|
|
201
|
-
"PVPDR_Hero_Elise",
|
|
202
|
-
"PVPDR_Hero_Brann",
|
|
203
|
-
];
|
|
204
186
|
const normalizeDuelsHeroCardId = (heroCardId) => {
|
|
205
187
|
switch (heroCardId) {
|
|
206
188
|
case "PVPDR_Hero_Vanndar":
|
|
@@ -466,7 +448,11 @@ exports.duelsHeroConfigs = [
|
|
|
466
448
|
{
|
|
467
449
|
hero: "PVPDR_Hero_Finley",
|
|
468
450
|
heroClasses: [public_api_1.CardClass.PALADIN, public_api_1.CardClass.SHAMAN],
|
|
469
|
-
heroPowers: [
|
|
451
|
+
heroPowers: [
|
|
452
|
+
"PVPDR_Finley_HP1",
|
|
453
|
+
"PVPDR_Finley_HP2",
|
|
454
|
+
"PVPDR_Finley_HP3",
|
|
455
|
+
],
|
|
470
456
|
signatureTreasures: [
|
|
471
457
|
"PVPDR_Finley_T1",
|
|
472
458
|
"PVPDR_Finley_T2",
|
|
@@ -492,7 +478,11 @@ exports.duelsHeroConfigs = [
|
|
|
492
478
|
{
|
|
493
479
|
hero: "PVPDR_Hero_Brann",
|
|
494
480
|
heroClasses: [public_api_1.CardClass.HUNTER, public_api_1.CardClass.WARRIOR],
|
|
495
|
-
heroPowers: [
|
|
481
|
+
heroPowers: [
|
|
482
|
+
"PVPDR_Brann_HP1",
|
|
483
|
+
"PVPDR_Brann_HP2",
|
|
484
|
+
"PVPDR_Brann_HP3",
|
|
485
|
+
],
|
|
496
486
|
signatureTreasures: [
|
|
497
487
|
"PVPDR_Brann_T1",
|
|
498
488
|
"PVPDR_Brann_T2",
|
|
@@ -504,4 +494,5 @@ exports.duelsHeroConfigs = [
|
|
|
504
494
|
},
|
|
505
495
|
];
|
|
506
496
|
exports.allDuelsSignatureTreasures = exports.duelsHeroConfigs.flatMap((info) => info.signatureTreasures);
|
|
497
|
+
exports.allDuelsHeroes = exports.duelsHeroConfigs.map((conf) => conf.hero);
|
|
507
498
|
//# sourceMappingURL=duels-utils.js.map
|
|
@@ -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.BattleTotem2,\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.TotemOfTheDead2,\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.LoomingPresence1,\r\n\tCardIds.MageArmorTavernBrawl,\r\n\tCardIds.MaskOfMimicryTavernBrawl,\r\n\tCardIds.MindpocalypseTavernBrawl,\r\n\tCardIds.MurlocHolmesTavernBrawl,\r\n\tCardIds.MutatingInjection1,\r\n\tCardIds.NecroticPoisonTavernBrawl,\r\n\tCardIds.OldMilitiaHornTavernBrawl,\r\n\tCardIds.PartyPortalTavernBrawl2,\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.GrimmerPatron1,\r\n\tCardIds.HyperblasterTavernBrawl,\r\n\tCardIds.AncientReflectionsTavernBrawl,\r\n\tCardIds.BagOfStuffingTavernBrawl,\r\n\tCardIds.Questionquestionquestion_BlackSoulstoneTavernBrawl,\r\n\tCardIds.BladeOfTheBurningSun,\r\n\tCardIds.GnomishArmyKnife1,\r\n\tCardIds.BananaSplitTavernBrawl,\r\n\tCardIds.CanopicJarsTavernBrawl,\r\n\tCardIds.PhaorisBlade1,\r\n\tCardIds.StaffOfScales1,\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.WaxRager1,\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 allDuelsHeroes = [\r\n\tCardIds.MindrenderIlluciaTavernBrawl,\r\n\tCardIds.RattlegoreTavernBrawl,\r\n\tCardIds.TuralyonTheTenuredTavernBrawl,\r\n\tCardIds.StarStudentStelinaTavernBrawl,\r\n\tCardIds.ProfessorSlateTavernBrawl,\r\n\tCardIds.ForestWardenOmuTavernBrawl,\r\n\tCardIds.MozakiMasterDuelistTavernBrawl,\r\n\tCardIds.ArchwitchWillowTavernBrawl,\r\n\tCardIds.InstructorFireheartTavernBrawlToken,\r\n\tCardIds.InfiltratorLilianTavernBrawl,\r\n\tCardIds.VanndarStormpikeTavernBrawl,\r\n\tCardIds.DrektharTavernBrawl,\r\n\tCardIds.RenoJacksonTavernBrawl5,\r\n\tCardIds.SirFinleyTavernBrawl5,\r\n\tCardIds.EliseStarseekerTavernBrawl4,\r\n\tCardIds.BrannBronzebeardTavernBrawl5,\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_VanndarStormpikeTavernBrawl1:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl2:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl3:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl4:\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl5:\r\n\t\t\treturn CardIds.VanndarStormpikeTavernBrawl;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl1:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl2:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl3:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl4:\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl5:\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_VanndarStormpikeTavernBrawl1:\r\n\t\t\treturn CardIds.IllidanStormrageHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl2:\r\n\t\t\treturn CardIds.RexxarHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl3:\r\n\t\t\treturn CardIds.UtherLightbringerHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl4:\r\n\t\t\treturn CardIds.AnduinWrynnHeroSkins;\r\n\t\tcase CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl5:\r\n\t\t\treturn CardIds.ValeeraSanguinarHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl1:\r\n\t\t\treturn CardIds.MalfurionStormrageHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl2:\r\n\t\t\treturn CardIds.JainaProudmooreHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl3:\r\n\t\t\treturn CardIds.ThrallHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl4:\r\n\t\t\treturn CardIds.GuldanHeroSkins;\r\n\t\tcase CardIds.Drekthar_DrektharTavernBrawl5:\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_DrektharTavernBrawl1,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl2,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl3,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl4,\r\n\t\t\tCardIds.Drekthar_DrektharTavernBrawl5,\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_VanndarStormpikeTavernBrawl1,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl2,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl3,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl4,\r\n\t\t\tCardIds.VanndarStormpike_VanndarStormpikeTavernBrawl5,\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.RenoJacksonTavernBrawl5,\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.SirFinleyTavernBrawl5,\r\n\t\theroClasses: [CardClass.PALADIN, CardClass.SHAMAN],\r\n\t\theroPowers: [CardIds.NewRecruitsTavernBrawl, CardIds.BubbleBlowerTavernBrawl, CardIds.PowerUpTavernBrawl2],\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.EliseStarseekerTavernBrawl4,\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.BrannBronzebeardTavernBrawl5,\r\n\t\theroClasses: [CardClass.HUNTER, CardClass.WARRIOR],\r\n\t\theroPowers: [CardIds.SpreadShotTavernBrawl, CardIds.WellEquippedTavernBrawl2, CardIds.DinoTrackingTavernBrawl],\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"]}
|
|
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.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"]}
|
|
@@ -36,21 +36,21 @@ const getEffectiveTechLevel = (card, allCards) => {
|
|
|
36
36
|
exports.getEffectiveTechLevel = getEffectiveTechLevel;
|
|
37
37
|
exports.COIN_IDS = [
|
|
38
38
|
"GAME_005",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
39
|
+
"AV_COIN1",
|
|
40
|
+
"AV_COIN2",
|
|
41
41
|
"BAR_COIN1",
|
|
42
42
|
"BAR_COIN2",
|
|
43
43
|
"BAR_COIN3",
|
|
44
|
-
"SW_COIN1",
|
|
45
|
-
"SW_COIN2",
|
|
46
44
|
"BT_COIN",
|
|
47
|
-
"DRG_COIN",
|
|
48
|
-
"ULD_COIN",
|
|
49
45
|
"DAL_COIN",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
46
|
+
"DMF_COIN1",
|
|
47
|
+
"DMF_COIN2",
|
|
48
|
+
"DRG_COIN",
|
|
49
|
+
"SW_COIN1",
|
|
50
|
+
"SW_COIN2",
|
|
52
51
|
"TSC_COIN1",
|
|
53
52
|
"TSC_COIN2",
|
|
53
|
+
"ULD_COIN",
|
|
54
54
|
];
|
|
55
55
|
exports.WATCH_POST_IDS = ["BAR_074", "BAR_076", "BAR_075"];
|
|
56
56
|
exports.LIBRAM_IDS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hs-utils.js","sourceRoot":"","sources":["../../src/services/hs-utils.ts"],"names":[],"mappings":";;;AAGA,8CAA2C;AAGpC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAoB,EAAE;IACpE,QAAQ,MAAM,EAAE;QACf,KAAK,uBAAU,CAAC,WAAW;YAC1B,OAAO,UAAU,CAAC;QACnB,KAAK,uBAAU,CAAC,UAAU;YACzB,OAAO,SAAS,CAAC;QAClB,KAAK,uBAAU,CAAC,OAAO,CAAC;QACxB;YACC,OAAO,MAAM,CAAC;KACf;AACF,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAmB,EAAW,EAAE;IACnE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAChG,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAmB,EAAE,QAAyB,EAAU,EAAE;;IAC/F,IAAI,IAAI,CAAC,SAAS,EAAE;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACtB;IAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,aAAO,UAAU,CAAC,SAAS,mCAAI,CAAC,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,yBAAyB,EAAE;QACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9E,aAAO,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;KAClC;IAED,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC;AAEW,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;CAiBvB,CAAC;AAEW,QAAA,cAAc,GAAG,iCAA6E,CAAC;AAE/F,QAAA,UAAU,GAAG;;;;;;;;;;CAUzB,CAAC","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { GameFormatString } from '../enums/game-format';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { GameFormat } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const formatFormat = (format: GameFormat): GameFormatString => {\r\n\tswitch (format) {\r\n\t\tcase GameFormat.FT_STANDARD:\r\n\t\t\treturn 'standard';\r\n\t\tcase GameFormat.FT_CLASSIC:\r\n\t\t\treturn 'classic';\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn 'wild';\r\n\t}\r\n};\r\n\r\nexport const isBattlegroundsCard = (card: ReferenceCard): boolean => {\r\n\treturn !!card.techLevel || !!card.battlegroundsNormalDbfId || !!card.battlegroundsPremiumDbfId;\r\n};\r\n\r\nexport const getEffectiveTechLevel = (card: ReferenceCard, allCards: AllCardsService): number => {\r\n\tif (card.techLevel) {\r\n\t\treturn card.techLevel;\r\n\t}\r\n\r\n\tif (card.battlegroundsNormalDbfId) {\r\n\t\tconst normalCard = allCards.getCardFromDbfId(card.battlegroundsNormalDbfId);\r\n\t\treturn normalCard.techLevel ?? 1;\r\n\t}\r\n\r\n\tif (card.battlegroundsPremiumDbfId) {\r\n\t\tconst premiumCard = allCards.getCardFromDbfId(card.battlegroundsPremiumDbfId);\r\n\t\treturn premiumCard.techLevel ?? 1;\r\n\t}\r\n\r\n\treturn 1;\r\n};\r\n\r\nexport const COIN_IDS = [\r\n\tCardIds.TheCoinCore,\r\n\tCardIds.
|
|
1
|
+
{"version":3,"file":"hs-utils.js","sourceRoot":"","sources":["../../src/services/hs-utils.ts"],"names":[],"mappings":";;;AAGA,8CAA2C;AAGpC,MAAM,YAAY,GAAG,CAAC,MAAkB,EAAoB,EAAE;IACpE,QAAQ,MAAM,EAAE;QACf,KAAK,uBAAU,CAAC,WAAW;YAC1B,OAAO,UAAU,CAAC;QACnB,KAAK,uBAAU,CAAC,UAAU;YACzB,OAAO,SAAS,CAAC;QAClB,KAAK,uBAAU,CAAC,OAAO,CAAC;QACxB;YACC,OAAO,MAAM,CAAC;KACf;AACF,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEK,MAAM,mBAAmB,GAAG,CAAC,IAAmB,EAAW,EAAE;IACnE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAChG,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B;AAEK,MAAM,qBAAqB,GAAG,CAAC,IAAmB,EAAE,QAAyB,EAAU,EAAE;;IAC/F,IAAI,IAAI,CAAC,SAAS,EAAE;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACtB;IAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC5E,aAAO,UAAU,CAAC,SAAS,mCAAI,CAAC,CAAC;KACjC;IAED,IAAI,IAAI,CAAC,yBAAyB,EAAE;QACnC,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9E,aAAO,WAAW,CAAC,SAAS,mCAAI,CAAC,CAAC;KAClC;IAED,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AAhBW,QAAA,qBAAqB,yBAgBhC;AAEW,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;CAiBvB,CAAC;AAEW,QAAA,cAAc,GAAG,iCAA6E,CAAC;AAE/F,QAAA,UAAU,GAAG;;;;;;;;;;CAUzB,CAAC","sourcesContent":["import { CardIds } from '../card-ids';\r\nimport { GameFormatString } from '../enums/game-format';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { GameFormat } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const formatFormat = (format: GameFormat): GameFormatString => {\r\n\tswitch (format) {\r\n\t\tcase GameFormat.FT_STANDARD:\r\n\t\t\treturn 'standard';\r\n\t\tcase GameFormat.FT_CLASSIC:\r\n\t\t\treturn 'classic';\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn 'wild';\r\n\t}\r\n};\r\n\r\nexport const isBattlegroundsCard = (card: ReferenceCard): boolean => {\r\n\treturn !!card.techLevel || !!card.battlegroundsNormalDbfId || !!card.battlegroundsPremiumDbfId;\r\n};\r\n\r\nexport const getEffectiveTechLevel = (card: ReferenceCard, allCards: AllCardsService): number => {\r\n\tif (card.techLevel) {\r\n\t\treturn card.techLevel;\r\n\t}\r\n\r\n\tif (card.battlegroundsNormalDbfId) {\r\n\t\tconst normalCard = allCards.getCardFromDbfId(card.battlegroundsNormalDbfId);\r\n\t\treturn normalCard.techLevel ?? 1;\r\n\t}\r\n\r\n\tif (card.battlegroundsPremiumDbfId) {\r\n\t\tconst premiumCard = allCards.getCardFromDbfId(card.battlegroundsPremiumDbfId);\r\n\t\treturn premiumCard.techLevel ?? 1;\r\n\t}\r\n\r\n\treturn 1;\r\n};\r\n\r\nexport const COIN_IDS = [\r\n\tCardIds.TheCoinCore,\r\n\tCardIds.TheCoin_AV_COIN1,\r\n\tCardIds.TheCoin_AV_COIN2,\r\n\tCardIds.TheCoin_BAR_COIN1,\r\n\tCardIds.TheCoin_BAR_COIN2,\r\n\tCardIds.TheCoin_BAR_COIN3,\r\n\tCardIds.TheCoin_BT_COIN,\r\n\tCardIds.TheCoin_DAL_COIN,\r\n\tCardIds.TheCoin_DMF_COIN1,\r\n\tCardIds.TheCoin_DMF_COIN2,\r\n\tCardIds.TheCoin_DRG_COIN,\r\n\tCardIds.TheCoin_SW_COIN1,\r\n\tCardIds.TheCoin_SW_COIN2,\r\n\tCardIds.TheCoin_TSC_COIN1,\r\n\tCardIds.TheCoin_TSC_COIN2,\r\n\tCardIds.TheCoin_ULD_COIN,\r\n];\r\n\r\nexport const WATCH_POST_IDS = [CardIds.FarWatchPost, CardIds.MorshanWatchPost, CardIds.CrossroadsWatchPost];\r\n\r\nexport const LIBRAM_IDS = [\r\n\tCardIds.LibramOfJustice_BT_011,\r\n\tCardIds.LibramOfJustice_Story_04_LibramofJustice,\r\n\tCardIds.LibramOfHope,\r\n\tCardIds.LibramOfWisdom_BT_025,\r\n\tCardIds.LibramOfWisdom_Story_01_LibramofWisdom,\r\n\tCardIds.LibramOfJudgment,\r\n\tCardIds.LibramOfJudgment_LibramOfJudgmentToken,\r\n\tCardIds.LibramOfHoliness,\r\n\tCardIds.LibramOfCompassion,\r\n];\r\n"]}
|