@firestone-hs/reference-data 2.0.96 → 2.0.97
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/custom-tags.d.ts +1 -2
- package/dist/enums/custom-tags.js +0 -1
- package/dist/enums/custom-tags.js.map +1 -1
- package/dist/enums/game-tags.js.map +1 -1
- package/dist/models/reference-cards/related-cards-data.js +10 -0
- package/dist/models/reference-cards/related-cards-data.js.map +1 -1
- package/dist/services/cards-for-deckbuilding.service.js +14 -0
- package/dist/services/cards-for-deckbuilding.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -66,6 +66,20 @@ class CardsForDeckbuildingService {
|
|
|
66
66
|
return deckstrings_1.encode(updated);
|
|
67
67
|
}
|
|
68
68
|
normalizeSideboard(sideboard, format, allCards) {
|
|
69
|
+
var _a;
|
|
70
|
+
if ((_a = allCards.getCard(sideboard.keyCardDbfId).id) === null || _a === void 0 ? void 0 : _a.startsWith("TOY_330")) {
|
|
71
|
+
const cards = sideboard.cards.map((pair) => {
|
|
72
|
+
const isCosmeticModule = !allCards.getCard(pair[0]).health;
|
|
73
|
+
return [
|
|
74
|
+
isCosmeticModule ? 110446 : this.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),
|
|
75
|
+
pair[1],
|
|
76
|
+
];
|
|
77
|
+
});
|
|
78
|
+
return {
|
|
79
|
+
...sideboard,
|
|
80
|
+
cards: cards,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
69
83
|
const cards = sideboard.cards.map((pair) => [
|
|
70
84
|
this.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),
|
|
71
85
|
pair[1],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cards-for-deckbuilding.service.js","sourceRoot":"","sources":["../../src/services/cards-for-deckbuilding.service.ts"],"names":[],"mappings":";;;AAAA,2DAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"cards-for-deckbuilding.service.js","sourceRoot":"","sources":["../../src/services/cards-for-deckbuilding.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeckDefinition, DeckList, Sideboard, decode, encode } from '@firestone-hs/deckstrings';\r\nimport {\r\n\tCardIds,\r\n\tGameFormat,\r\n\tReferenceCard,\r\n\tduelsSets,\r\n\tformatFormat,\r\n\tnormalizeDeckHeroDbfId,\r\n\tstandardSets,\r\n\ttwistSets,\r\n\twildSets,\r\n} from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\ninterface Duplicates {\r\n\t[format: string]: DuplicatesForFormat;\r\n}\r\ninterface DuplicatesForFormat {\r\n\t[dbfId: string]: ReferenceCard;\r\n}\r\n\r\nexport class CardsForDeckbuildingService {\r\n\tprivate duplicatesForDeckbuilding: Duplicates = null;\r\n\r\n\tpublic init(allCards: AllCardsService) {\r\n\t\tconst allSetsDuplicates: {\r\n\t\t\t[dbfId: string]: ReferenceCard[];\r\n\t\t} = {};\r\n\t\tfor (const card of allCards.getCards()) {\r\n\t\t\tif (!!card.counterpartCards?.length || card.deckDuplicateDbfId) {\r\n\t\t\t\tconst rootId = card.counterpartCards?.[0] ?? card.deckDuplicateDbfId;\r\n\t\t\t\tif (!allSetsDuplicates[rootId]) {\r\n\t\t\t\t\tallSetsDuplicates[rootId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[rootId].push(card);\r\n\t\t\t} else {\r\n\t\t\t\tif (!allSetsDuplicates[card.dbfId]) {\r\n\t\t\t\t\tallSetsDuplicates[card.dbfId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[card.dbfId].push(card);\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Order all the cards by their dbfid\r\n\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\tallSetsDuplicates[dbfId] = allSetsDuplicates[dbfId].sort((a, b) => a.dbfId - b.dbfId);\r\n\t\t}\r\n\r\n\t\tconst formats: readonly ('standard' | 'wild' | 'twist' | 'classic' | 'duels')[] = [\r\n\t\t\t'standard',\r\n\t\t\t'wild',\r\n\t\t\t'twist',\r\n\t\t\t'duels',\r\n\t\t];\r\n\t\tconst result: Duplicates = {};\r\n\t\tfor (const format of formats) {\r\n\t\t\tresult[format] = {};\r\n\t\t\tconst allowedSets = this.getAllowedSets(format);\r\n\t\t\tfor (const dbfId of Object.keys(allSetsDuplicates)) {\r\n\t\t\t\tconst cards = allSetsDuplicates[dbfId];\r\n\t\t\t\tconst card = cards.find((card) => allowedSets.includes(card.set?.toLowerCase()));\r\n\t\t\t\tif (card) {\r\n\t\t\t\t\tresult[format][dbfId] = card;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.duplicatesForDeckbuilding = result;\r\n\t}\r\n\r\n\tpublic normalizeDeckList(decklist: string, allCards: AllCardsService): string {\r\n\t\tconst decoded: DeckDefinition = decode(decklist);\r\n\t\tconst cards: DeckList = decoded.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], decoded.format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) =>\r\n\t\t\tthis.normalizeSideboard(sideboard, decoded.format, allCards),\r\n\t\t);\r\n\t\tconst heroes = decoded.heroes?.map((heroDbfId) => normalizeDeckHeroDbfId(heroDbfId, allCards) ?? 7);\r\n\t\tconst updated: DeckDefinition = {\r\n\t\t\t...decoded,\r\n\t\t\theroes: heroes,\r\n\t\t\tcards: cards,\r\n\t\t\tsideboards: sideboards,\r\n\t\t};\r\n\t\treturn encode(updated);\r\n\t}\r\n\r\n\tpublic normalizeSideboard(sideboard: Sideboard, format: GameFormat, allCards: AllCardsService): Sideboard {\r\n\t\tif (allCards.getCard(sideboard.keyCardDbfId).id?.startsWith(CardIds.ZilliaxDeluxe3000_TOY_330)) {\r\n\t\t\tconst cards: DeckList = sideboard.cards.map((pair) => {\r\n\t\t\t\tconst isCosmeticModule = !allCards.getCard(pair[0]).health;\r\n\t\t\t\treturn [\r\n\t\t\t\t\tisCosmeticModule ? 110446 : this.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),\r\n\t\t\t\t\tpair[1],\r\n\t\t\t\t];\r\n\t\t\t});\r\n\t\t\treturn {\r\n\t\t\t\t...sideboard,\r\n\t\t\t\tcards: cards,\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst cards: DeckList = sideboard.cards.map((pair) => [\r\n\t\t\tthis.getBaseCardDbfIdForDeckbuilding(pair[0], format, allCards),\r\n\t\t\tpair[1],\r\n\t\t]);\r\n\t\treturn {\r\n\t\t\t...sideboard,\r\n\t\t\tcards: cards,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getBaseCardDbfIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): number {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn (\r\n\t\t\tthis.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.dbfId ?? allCards.getCard(deckDbfId).dbfId\r\n\t\t);\r\n\t}\r\n\r\n\tpublic getBaseCardIdForDeckbuilding(\r\n\t\tcardIdOrDbfId: number | string,\r\n\t\tformat: GameFormat,\r\n\t\tallCards: AllCardsService,\r\n\t): string {\r\n\t\tconst refCard = allCards.getCard(cardIdOrDbfId);\r\n\t\tconst deckDbfId = refCard.counterpartCards?.[0] ?? refCard.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn this.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.id ?? allCards.getCard(deckDbfId).id;\r\n\t}\r\n\r\n\tprivate getAllowedSets(format: 'standard' | 'wild' | 'twist' | 'classic' | 'duels'): readonly string[] {\r\n\t\tswitch (format) {\r\n\t\t\tcase 'standard':\r\n\t\t\t\treturn standardSets;\r\n\t\t\tcase 'classic':\r\n\t\t\t\treturn ['classic'];\r\n\t\t\tcase 'twist':\r\n\t\t\t\treturn twistSets;\r\n\t\t\tcase 'duels':\r\n\t\t\t\treturn duelsSets;\r\n\t\t\tcase 'wild':\r\n\t\t\tdefault:\r\n\t\t\t\treturn wildSets;\r\n\t\t}\r\n\t}\r\n}\r\n"]}
|