@firestone-hs/reference-data 2.0.9 → 2.0.11

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.
@@ -24,6 +24,9 @@ exports.COIN_IDS = [
24
24
  "ULD_COIN",
25
25
  "ETC_COIN1",
26
26
  "ETC_COIN2",
27
+ "TOY_COIN1",
28
+ "TOY_COIN2",
29
+ "TOY_COIN3",
27
30
  "TTN_COIN1",
28
31
  "TTN_COIN2",
29
32
  "WW_COIN1",
@@ -1 +1 @@
1
- {"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../../src/models/reference-cards/reference-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BvB,CAAC;AAEW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AACW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AACW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AAEW,QAAA,cAAc,GAAG,iCAA6E,CAAC;AAE/F,QAAA,UAAU,GAAG;;;;;;;;;;CAUzB,CAAC;AAEW,QAAA,SAAS,GAAG,iCAAgF,CAAC","sourcesContent":["import { CardIds } from '../../card-ids';\r\n\r\nexport const COIN_IDS = [\r\n\tCardIds.TheCoinCore,\r\n\t// CardIds.TheCoin_AT_COIN,\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_REV_COIN1,\r\n\tCardIds.TheCoin_REV_COIN2,\r\n\tCardIds.TheCoin_RLK_COIN1,\r\n\tCardIds.TheCoin_RLK_COIN2,\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\tCardIds.TheCoin_ETC_COIN1,\r\n\tCardIds.TheCoin_ETC_COIN2,\r\n\tCardIds.TheCoin_TTN_COIN1,\r\n\tCardIds.TheCoin_TTN_COIN2,\r\n\tCardIds.TheCoin_WW_COIN1,\r\n\tCardIds.TheCoin_WW_COIN2,\r\n];\r\n\r\nexport const EXCAVATE_TREASURE_1_IDS = [\r\n\tCardIds.KoboldMiner_EscapingTroggToken_WW_001t4,\r\n\tCardIds.KoboldMiner_FoolsAzeriteToken_WW_001t3,\r\n\tCardIds.KoboldMiner_PouchOfCoinsToken_WW_001t18,\r\n\tCardIds.KoboldMiner_RockToken_WW_001t,\r\n\tCardIds.KoboldMiner_WaterSourceToken_WW_001t2,\r\n\tCardIds.HeartblossomToken_DEEP_999t1,\r\n];\r\nexport const EXCAVATE_TREASURE_2_IDS = [\r\n\tCardIds.KoboldMiner_AzeriteChunkToken_WW_001t9,\r\n\tCardIds.KoboldMiner_CanaryToken_WW_001t7,\r\n\tCardIds.KoboldMiner_FallingStalactiteToken_WW_001t5,\r\n\tCardIds.KoboldMiner_GlowingGlyphToken_WW_001t8,\r\n\tCardIds.KoboldMiner_LivingStoneToken_WW_001t16,\r\n\tCardIds.DeepholmGeodeToken_DEEP_999t2,\r\n];\r\nexport const EXCAVATE_TREASURE_3_IDS = [\r\n\tCardIds.KoboldMiner_AzeriteGemToken_WW_001t14,\r\n\tCardIds.KoboldMiner_CollapseToken_WW_001t12,\r\n\tCardIds.KoboldMiner_MotherlodeDrakeToken_WW_001t17,\r\n\tCardIds.KoboldMiner_OgrefistBoulderToken_WW_001t11,\r\n\tCardIds.KoboldMiner_SteelhideMoleToken_WW_001t13,\r\n\tCardIds.WorldPillarFragmentToken_DEEP_999t3,\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\r\nexport const RELIC_IDS = [CardIds.RelicOfDimensions, CardIds.RelicOfExtinction, CardIds.RelicOfPhantasms];\r\n"]}
1
+ {"version":3,"file":"reference-data.js","sourceRoot":"","sources":["../../../src/models/reference-cards/reference-data.ts"],"names":[],"mappings":";;;AAEa,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BvB,CAAC;AAEW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AACW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AACW,QAAA,uBAAuB,GAAG;;;;;;;CAOtC,CAAC;AAEW,QAAA,cAAc,GAAG,iCAA6E,CAAC;AAE/F,QAAA,UAAU,GAAG;;;;;;;;;;CAUzB,CAAC;AAEW,QAAA,SAAS,GAAG,iCAAgF,CAAC","sourcesContent":["import { CardIds } from '../../card-ids';\r\n\r\nexport const COIN_IDS = [\r\n\tCardIds.TheCoinCore,\r\n\t// CardIds.TheCoin_AT_COIN,\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_REV_COIN1,\r\n\tCardIds.TheCoin_REV_COIN2,\r\n\tCardIds.TheCoin_RLK_COIN1,\r\n\tCardIds.TheCoin_RLK_COIN2,\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\tCardIds.TheCoin_ETC_COIN1,\r\n\tCardIds.TheCoin_ETC_COIN2,\r\n\tCardIds.TheCoin_TOY_COIN1,\r\n\tCardIds.TheCoin_TOY_COIN2,\r\n\tCardIds.TheCoin_TOY_COIN3,\r\n\tCardIds.TheCoin_TTN_COIN1,\r\n\tCardIds.TheCoin_TTN_COIN2,\r\n\tCardIds.TheCoin_WW_COIN1,\r\n\tCardIds.TheCoin_WW_COIN2,\r\n];\r\n\r\nexport const EXCAVATE_TREASURE_1_IDS = [\r\n\tCardIds.KoboldMiner_EscapingTroggToken_WW_001t4,\r\n\tCardIds.KoboldMiner_FoolsAzeriteToken_WW_001t3,\r\n\tCardIds.KoboldMiner_PouchOfCoinsToken_WW_001t18,\r\n\tCardIds.KoboldMiner_RockToken_WW_001t,\r\n\tCardIds.KoboldMiner_WaterSourceToken_WW_001t2,\r\n\tCardIds.HeartblossomToken_DEEP_999t1,\r\n];\r\nexport const EXCAVATE_TREASURE_2_IDS = [\r\n\tCardIds.KoboldMiner_AzeriteChunkToken_WW_001t9,\r\n\tCardIds.KoboldMiner_CanaryToken_WW_001t7,\r\n\tCardIds.KoboldMiner_FallingStalactiteToken_WW_001t5,\r\n\tCardIds.KoboldMiner_GlowingGlyphToken_WW_001t8,\r\n\tCardIds.KoboldMiner_LivingStoneToken_WW_001t16,\r\n\tCardIds.DeepholmGeodeToken_DEEP_999t2,\r\n];\r\nexport const EXCAVATE_TREASURE_3_IDS = [\r\n\tCardIds.KoboldMiner_AzeriteGemToken_WW_001t14,\r\n\tCardIds.KoboldMiner_CollapseToken_WW_001t12,\r\n\tCardIds.KoboldMiner_MotherlodeDrakeToken_WW_001t17,\r\n\tCardIds.KoboldMiner_OgrefistBoulderToken_WW_001t11,\r\n\tCardIds.KoboldMiner_SteelhideMoleToken_WW_001t13,\r\n\tCardIds.WorldPillarFragmentToken_DEEP_999t3,\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\r\nexport const RELIC_IDS = [CardIds.RelicOfDimensions, CardIds.RelicOfExtinction, CardIds.RelicOfPhantasms];\r\n"]}
@@ -75,13 +75,13 @@ class CardsForDeckbuildingService {
75
75
  var _a, _b, _c;
76
76
  const refCard = allCards.getCard(cardIdOrDbfId);
77
77
  const deckDbfId = (_a = refCard.deckDuplicateDbfId) !== null && _a !== void 0 ? _a : refCard.dbfId;
78
- return (_c = (_b = this.duplicatesForDeckbuilding[public_api_1.formatFormat(format)][deckDbfId]) === null || _b === void 0 ? void 0 : _b.dbfId) !== null && _c !== void 0 ? _c : refCard.dbfId;
78
+ return ((_c = (_b = this.duplicatesForDeckbuilding[public_api_1.formatFormat(format)][deckDbfId]) === null || _b === void 0 ? void 0 : _b.dbfId) !== null && _c !== void 0 ? _c : allCards.getCard(deckDbfId).dbfId);
79
79
  }
80
80
  getBaseCardIdForDeckbuilding(cardIdOrDbfId, format, allCards) {
81
81
  var _a, _b, _c;
82
82
  const refCard = allCards.getCard(cardIdOrDbfId);
83
83
  const deckDbfId = (_a = refCard.deckDuplicateDbfId) !== null && _a !== void 0 ? _a : refCard.dbfId;
84
- return (_c = (_b = this.duplicatesForDeckbuilding[public_api_1.formatFormat(format)][deckDbfId]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : refCard.id;
84
+ return (_c = (_b = this.duplicatesForDeckbuilding[public_api_1.formatFormat(format)][deckDbfId]) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : allCards.getCard(deckDbfId).id;
85
85
  }
86
86
  getAllowedSets(format) {
87
87
  switch (format) {
@@ -1 +1 @@
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 { GameFormat, ReferenceCard, duelsSets, formatFormat, standardSets, twistSets, wildSets } 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.deckDuplicateDbfId) {\r\n\t\t\t\tif (!allSetsDuplicates[card.deckDuplicateDbfId]) {\r\n\t\t\t\t\tallSetsDuplicates[card.deckDuplicateDbfId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[card.deckDuplicateDbfId].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 updated: DeckDefinition = {\r\n\t\t\t...decoded,\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\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.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn this.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.dbfId ?? refCard.dbfId;\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.deckDuplicateDbfId ?? refCard.dbfId;\r\n\t\treturn this.duplicatesForDeckbuilding[formatFormat(format)][deckDbfId]?.id ?? refCard.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"]}
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 { GameFormat, ReferenceCard, duelsSets, formatFormat, standardSets, twistSets, wildSets } 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.deckDuplicateDbfId) {\r\n\t\t\t\tif (!allSetsDuplicates[card.deckDuplicateDbfId]) {\r\n\t\t\t\t\tallSetsDuplicates[card.deckDuplicateDbfId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tallSetsDuplicates[card.deckDuplicateDbfId].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 updated: DeckDefinition = {\r\n\t\t\t...decoded,\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\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.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.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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestone-hs/reference-data",
3
- "version": "2.0.9",
3
+ "version": "2.0.11",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && tsc",