@firestone-hs/reference-data 1.0.146 → 1.0.148

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.
@@ -1,2 +1,5 @@
1
+ import { GameFormat } from '../public-api';
1
2
  import { AllCardsService } from './all-cards.service';
2
3
  export declare const normalizeDeckList: (decklist: string, allCards: AllCardsService) => string;
4
+ export declare const getBaseCardForDeckbuilding: (dbfId: number, format: GameFormat, allCards: AllCardsService) => number;
5
+ export declare const getBaseCardIdForDeckbuilding: (cardId: string, format: GameFormat, allCards: AllCardsService) => string;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeDeckList = void 0;
3
+ exports.getBaseCardIdForDeckbuilding = exports.getBaseCardForDeckbuilding = exports.normalizeDeckList = void 0;
4
4
  const deckstrings_1 = require("@firestone-hs/deckstrings");
5
5
  const public_api_1 = require("../public-api");
6
6
  const normalizeDeckList = (decklist, allCards) => {
7
7
  var _a;
8
8
  const decoded = deckstrings_1.decode(decklist);
9
9
  const cards = decoded.cards.map((pair) => [
10
- getBaseCardForDeckbuilding(pair[0], decoded.format, allCards),
10
+ exports.getBaseCardForDeckbuilding(pair[0], decoded.format, allCards),
11
11
  pair[1],
12
12
  ]);
13
13
  const sideboards = (_a = decoded.sideboards) === null || _a === void 0 ? void 0 : _a.map((sideboard) => normalizeSideboard(sideboard, decoded.format, allCards));
@@ -35,6 +35,24 @@ const getBaseCardForDeckbuilding = (dbfId, format, allCards) => {
35
35
  }
36
36
  return dbfId;
37
37
  };
38
+ exports.getBaseCardForDeckbuilding = getBaseCardForDeckbuilding;
39
+ const getBaseCardIdForDeckbuilding = (cardId, format, allCards) => {
40
+ var _a;
41
+ const card = allCards.getCard(cardId);
42
+ if (!card.deckDuplicateDbfId) {
43
+ return cardId;
44
+ }
45
+ const originCard = allCards.getCard(card.deckDuplicateDbfId);
46
+ if (!originCard) {
47
+ return cardId;
48
+ }
49
+ const allowedSets = getAllowedSets(format);
50
+ if (allowedSets.includes((_a = originCard.set) === null || _a === void 0 ? void 0 : _a.toLowerCase())) {
51
+ return originCard.id;
52
+ }
53
+ return cardId;
54
+ };
55
+ exports.getBaseCardIdForDeckbuilding = getBaseCardIdForDeckbuilding;
38
56
  const getAllowedSets = (format) => {
39
57
  switch (format) {
40
58
  case public_api_1.GameFormat.FT_STANDARD:
@@ -50,7 +68,7 @@ const getAllowedSets = (format) => {
50
68
  };
51
69
  const normalizeSideboard = (sideboard, format, allCards) => {
52
70
  const cards = sideboard.cards.map((pair) => [
53
- getBaseCardForDeckbuilding(pair[0], format, allCards),
71
+ exports.getBaseCardForDeckbuilding(pair[0], format, allCards),
54
72
  pair[1],
55
73
  ]);
56
74
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"deck-utils.js","sourceRoot":"","sources":["../../src/services/deck-utils.ts"],"names":[],"mappings":";;;AAAA,2DAAgG;AAChG,8CAA8E;AAGvE,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,QAAyB,EAAU,EAAE;;IACxF,MAAM,OAAO,GAAmB,oBAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,KAAK,GAAa,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACnD,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;QAC7D,IAAI,CAAC,CAAC,CAAC;KACP,CAAC,CAAC;IACH,MAAM,UAAU,GAAgB,MAAA,OAAO,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACrE,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CACvD,CAAC;IACF,MAAM,OAAO,GAAmB;QAC/B,GAAG,OAAO;QACV,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,UAAU;KACtB,CAAC;IACF,OAAO,oBAAM,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC,CAAC;AAfW,QAAA,iBAAiB,qBAe5B;AAGF,MAAM,0BAA0B,GAAG,CAAC,KAAa,EAAE,MAAkB,EAAE,QAAyB,EAAU,EAAE;;IAC3G,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAC7B,OAAO,KAAK,CAAC;KACb;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,KAAK,CAAC;KACb;IAGD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAA,UAAU,CAAC,GAAG,0CAAE,WAAW,EAAE,CAAC,EAAE;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC;KACxB;IAED,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAAkB,EAAqB,EAAE;IAChE,QAAQ,MAAM,EAAE;QACf,KAAK,uBAAU,CAAC,WAAW;YAC1B,OAAO,yBAAY,CAAC;QACrB,KAAK,uBAAU,CAAC,UAAU;YACzB,OAAO,CAAC,SAAS,CAAC,CAAC;QACpB,KAAK,uBAAU,CAAC,QAAQ;YACvB,OAAO,sBAAS,CAAC;QAClB,KAAK,uBAAU,CAAC,OAAO,CAAC;QACxB;YACC,OAAO,qBAAQ,CAAC;KACjB;AACF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,SAAoB,EAAE,MAAkB,EAAE,QAAyB,EAAa,EAAE;IAC7G,MAAM,KAAK,GAAa,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrD,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC;QACrD,IAAI,CAAC,CAAC,CAAC;KACP,CAAC,CAAC;IACH,OAAO;QACN,GAAG,SAAS;QACZ,KAAK,EAAE,KAAK;KACZ,CAAC;AACH,CAAC,CAAC","sourcesContent":["import { DeckDefinition, DeckList, decode, encode, Sideboard } from '@firestone-hs/deckstrings';\r\nimport { GameFormat, standardSets, twistSets, wildSets } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const normalizeDeckList = (decklist: string, allCards: AllCardsService): string => {\r\n\tconst decoded: DeckDefinition = decode(decklist);\r\n\tconst cards: DeckList = decoded.cards.map((pair) => [\r\n\t\tgetBaseCardForDeckbuilding(pair[0], decoded.format, allCards),\r\n\t\tpair[1],\r\n\t]);\r\n\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) =>\r\n\t\tnormalizeSideboard(sideboard, decoded.format, allCards),\r\n\t);\r\n\tconst updated: DeckDefinition = {\r\n\t\t...decoded,\r\n\t\tcards: cards,\r\n\t\tsideboards: sideboards,\r\n\t};\r\n\treturn encode(updated);\r\n};\r\n\r\n// TODO: add the standard/wild/twist etc distinction\r\nconst getBaseCardForDeckbuilding = (dbfId: number, format: GameFormat, allCards: AllCardsService): number => {\r\n\tconst card = allCards.getCard(dbfId);\r\n\tif (!card.deckDuplicateDbfId) {\r\n\t\treturn dbfId;\r\n\t}\r\n\r\n\tconst originCard = allCards.getCard(card.deckDuplicateDbfId);\r\n\tif (!originCard) {\r\n\t\treturn dbfId;\r\n\t}\r\n\r\n\t// Now check if the origin card is in the list of sets allowed for the format\r\n\tconst allowedSets = getAllowedSets(format);\r\n\tif (allowedSets.includes(originCard.set?.toLowerCase())) {\r\n\t\treturn originCard.dbfId;\r\n\t}\r\n\r\n\treturn dbfId;\r\n};\r\n\r\nconst getAllowedSets = (format: GameFormat): readonly string[] => {\r\n\tswitch (format) {\r\n\t\tcase GameFormat.FT_STANDARD:\r\n\t\t\treturn standardSets;\r\n\t\tcase GameFormat.FT_CLASSIC:\r\n\t\t\treturn ['classic'];\r\n\t\tcase GameFormat.FT_TWIST:\r\n\t\t\treturn twistSets;\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn wildSets;\r\n\t}\r\n};\r\n\r\nconst normalizeSideboard = (sideboard: Sideboard, format: GameFormat, allCards: AllCardsService): Sideboard => {\r\n\tconst cards: DeckList = sideboard.cards.map((pair) => [\r\n\t\tgetBaseCardForDeckbuilding(pair[0], format, allCards),\r\n\t\tpair[1],\r\n\t]);\r\n\treturn {\r\n\t\t...sideboard,\r\n\t\tcards: cards,\r\n\t};\r\n};\r\n"]}
1
+ {"version":3,"file":"deck-utils.js","sourceRoot":"","sources":["../../src/services/deck-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeckDefinition, DeckList, decode, encode, Sideboard } from '@firestone-hs/deckstrings';\r\nimport { GameFormat, standardSets, twistSets, wildSets } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const normalizeDeckList = (decklist: string, allCards: AllCardsService): string => {\r\n\tconst decoded: DeckDefinition = decode(decklist);\r\n\tconst cards: DeckList = decoded.cards.map((pair) => [\r\n\t\tgetBaseCardForDeckbuilding(pair[0], decoded.format, allCards),\r\n\t\tpair[1],\r\n\t]);\r\n\tconst sideboards: Sideboard[] = decoded.sideboards?.map((sideboard) =>\r\n\t\tnormalizeSideboard(sideboard, decoded.format, allCards),\r\n\t);\r\n\tconst updated: DeckDefinition = {\r\n\t\t...decoded,\r\n\t\tcards: cards,\r\n\t\tsideboards: sideboards,\r\n\t};\r\n\treturn encode(updated);\r\n};\r\n\r\n// TODO: add the standard/wild/twist etc distinction\r\nexport const getBaseCardForDeckbuilding = (dbfId: number, format: GameFormat, allCards: AllCardsService): number => {\r\n\tconst card = allCards.getCard(dbfId);\r\n\tif (!card.deckDuplicateDbfId) {\r\n\t\treturn dbfId;\r\n\t}\r\n\r\n\tconst originCard = allCards.getCard(card.deckDuplicateDbfId);\r\n\tif (!originCard) {\r\n\t\treturn dbfId;\r\n\t}\r\n\r\n\t// Now check if the origin card is in the list of sets allowed for the format\r\n\tconst allowedSets = getAllowedSets(format);\r\n\tif (allowedSets.includes(originCard.set?.toLowerCase())) {\r\n\t\treturn originCard.dbfId;\r\n\t}\r\n\r\n\treturn dbfId;\r\n};\r\n\r\nexport const getBaseCardIdForDeckbuilding = (cardId: string, format: GameFormat, allCards: AllCardsService): string => {\r\n\tconst card = allCards.getCard(cardId);\r\n\tif (!card.deckDuplicateDbfId) {\r\n\t\treturn cardId;\r\n\t}\r\n\r\n\tconst originCard = allCards.getCard(card.deckDuplicateDbfId);\r\n\tif (!originCard) {\r\n\t\treturn cardId;\r\n\t}\r\n\r\n\t// Now check if the origin card is in the list of sets allowed for the format\r\n\tconst allowedSets = getAllowedSets(format);\r\n\tif (allowedSets.includes(originCard.set?.toLowerCase())) {\r\n\t\treturn originCard.id;\r\n\t}\r\n\r\n\treturn cardId;\r\n};\r\n\r\nconst getAllowedSets = (format: GameFormat): readonly string[] => {\r\n\tswitch (format) {\r\n\t\tcase GameFormat.FT_STANDARD:\r\n\t\t\treturn standardSets;\r\n\t\tcase GameFormat.FT_CLASSIC:\r\n\t\t\treturn ['classic'];\r\n\t\tcase GameFormat.FT_TWIST:\r\n\t\t\treturn twistSets;\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn wildSets;\r\n\t}\r\n};\r\n\r\nconst normalizeSideboard = (sideboard: Sideboard, format: GameFormat, allCards: AllCardsService): Sideboard => {\r\n\tconst cards: DeckList = sideboard.cards.map((pair) => [\r\n\t\tgetBaseCardForDeckbuilding(pair[0], format, allCards),\r\n\t\tpair[1],\r\n\t]);\r\n\treturn {\r\n\t\t...sideboard,\r\n\t\tcards: cards,\r\n\t};\r\n};\r\n"]}
@@ -4,7 +4,9 @@ import { CardClass, GameFormat, GameType } from '../public-api';
4
4
  import { AllCardsService } from './all-cards.service';
5
5
  export declare const ALL_CLASSES: string[];
6
6
  export declare const formatFormat: (format: GameFormat) => GameFormatString;
7
+ export declare const formatFormatReverse: (format: GameFormatString) => GameFormat;
7
8
  export declare const formatGameType: (gameType: GameType) => string;
9
+ export declare const formatGameTypeReverse: (gameType: string) => GameType;
8
10
  export declare const getDefaultHeroDbfIdForClass: (playerClass: string) => number;
9
11
  export declare const normalizeDeckHeroDbfId: (heroDbfId: number, cards: AllCardsService, duelsClass?: CardClass, deckClass?: CardClass) => number;
10
12
  export declare const isBattlegroundsCard: (card: ReferenceCard) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEffectiveTechLevel = exports.isBattlegroundsCard = exports.normalizeDeckHeroDbfId = exports.getDefaultHeroDbfIdForClass = exports.formatGameType = exports.formatFormat = exports.ALL_CLASSES = void 0;
3
+ exports.getEffectiveTechLevel = exports.isBattlegroundsCard = exports.normalizeDeckHeroDbfId = exports.getDefaultHeroDbfIdForClass = exports.formatGameTypeReverse = exports.formatGameType = exports.formatFormatReverse = exports.formatFormat = exports.ALL_CLASSES = void 0;
4
4
  const public_api_1 = require("../public-api");
5
5
  exports.ALL_CLASSES = [
6
6
  'deathknight',
@@ -29,6 +29,20 @@ const formatFormat = (format) => {
29
29
  }
30
30
  };
31
31
  exports.formatFormat = formatFormat;
32
+ const formatFormatReverse = (format) => {
33
+ switch (format) {
34
+ case 'standard':
35
+ return public_api_1.GameFormat.FT_STANDARD;
36
+ case 'classic':
37
+ return public_api_1.GameFormat.FT_CLASSIC;
38
+ case 'twist':
39
+ return public_api_1.GameFormat.FT_TWIST;
40
+ case 'wild':
41
+ default:
42
+ return public_api_1.GameFormat.FT_WILD;
43
+ }
44
+ };
45
+ exports.formatFormatReverse = formatFormatReverse;
32
46
  const formatGameType = (gameType) => {
33
47
  switch (gameType) {
34
48
  case public_api_1.GameType.GT_UNKNOWN:
@@ -78,6 +92,46 @@ const formatGameType = (gameType) => {
78
92
  }
79
93
  };
80
94
  exports.formatGameType = formatGameType;
95
+ const formatGameTypeReverse = (gameType) => {
96
+ switch (gameType) {
97
+ case 'unknown':
98
+ return public_api_1.GameType.GT_UNKNOWN;
99
+ case 'practice':
100
+ return public_api_1.GameType.GT_VS_AI;
101
+ case 'friendly':
102
+ return public_api_1.GameType.GT_VS_FRIEND;
103
+ case 'tutorial':
104
+ return public_api_1.GameType.GT_TUTORIAL;
105
+ case 'arena':
106
+ return public_api_1.GameType.GT_ARENA;
107
+ case 'ranked':
108
+ return public_api_1.GameType.GT_RANKED;
109
+ case 'casual':
110
+ return public_api_1.GameType.GT_CASUAL;
111
+ case 'tavern-brawl':
112
+ return public_api_1.GameType.GT_TAVERNBRAWL;
113
+ case 'battlegrounds':
114
+ return public_api_1.GameType.GT_BATTLEGROUNDS;
115
+ case 'mercenaries-ai-vs-ai':
116
+ return public_api_1.GameType.GT_MERCENARIES_AI_VS_AI;
117
+ case 'mercenaries-friendly':
118
+ return public_api_1.GameType.GT_MERCENARIES_FRIENDLY;
119
+ case 'mercenaries-pve':
120
+ return public_api_1.GameType.GT_MERCENARIES_PVE;
121
+ case 'mercenaries-pvp':
122
+ return public_api_1.GameType.GT_MERCENARIES_PVP;
123
+ case 'mercenaries-pve-coop':
124
+ return public_api_1.GameType.GT_MERCENARIES_PVE_COOP;
125
+ case 'duels':
126
+ return public_api_1.GameType.GT_PVPDR;
127
+ case 'paid-duels':
128
+ return public_api_1.GameType.GT_PVPDR_PAID;
129
+ default:
130
+ console.warn('unsupported game type', gameType);
131
+ return public_api_1.GameType.GT_UNKNOWN;
132
+ }
133
+ };
134
+ exports.formatGameTypeReverse = formatGameTypeReverse;
81
135
  const getDefaultHeroDbfIdForClass = (playerClass) => {
82
136
  switch (playerClass === null || playerClass === void 0 ? void 0 : playerClass.toLowerCase()) {
83
137
  case 'deathknight':
@@ -1 +1 @@
1
- {"version":3,"file":"hs-utils.js","sourceRoot":"","sources":["../../src/services/hs-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameFormatString } from '../enums/game-format';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { CardClass, CardIds, GameFormat, GameType, allDuelsHeroesExtended } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const ALL_CLASSES = [\r\n\t'deathknight',\r\n\t'druid',\r\n\t'hunter',\r\n\t'mage',\r\n\t'paladin',\r\n\t'priest',\r\n\t'rogue',\r\n\t'shaman',\r\n\t'warlock',\r\n\t'warrior',\r\n\t'demonhunter',\r\n];\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_TWIST:\r\n\t\t\treturn 'twist';\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 formatGameType = (gameType: GameType): string => {\r\n\tswitch (gameType) {\r\n\t\tcase GameType.GT_UNKNOWN:\r\n\t\t\treturn 'unknown';\r\n\t\tcase GameType.GT_VS_AI:\r\n\t\t\treturn 'practice';\r\n\t\tcase GameType.GT_VS_FRIEND:\r\n\t\t\treturn 'friendly';\r\n\t\tcase GameType.GT_TUTORIAL:\r\n\t\t\treturn 'tutorial';\r\n\t\tcase GameType.GT_ARENA:\r\n\t\t\treturn 'arena';\r\n\t\tcase GameType.GT_RANKED:\r\n\t\t\treturn 'ranked';\r\n\t\tcase GameType.GT_CASUAL:\r\n\t\t\treturn 'casual';\r\n\t\tcase GameType.GT_TAVERNBRAWL:\r\n\t\tcase GameType.GT_TB_1P_VS_AI:\r\n\t\tcase GameType.GT_TB_2P_COOP:\r\n\t\tcase GameType.GT_FSG_BRAWL_VS_FRIEND:\r\n\t\tcase GameType.GT_FSG_BRAWL:\r\n\t\tcase GameType.GT_FSG_BRAWL_1P_VS_AI:\r\n\t\tcase GameType.GT_FSG_BRAWL_2P_COOP:\r\n\t\t\treturn 'tavern-brawl';\r\n\t\tcase GameType.GT_BATTLEGROUNDS:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_FRIENDLY:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_AI_VS_AI:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_PLAYER_VS_AI:\r\n\t\t\treturn 'battlegrounds';\r\n\t\tcase GameType.GT_MERCENARIES_AI_VS_AI:\r\n\t\t\treturn 'mercenaries-ai-vs-ai';\r\n\t\tcase GameType.GT_MERCENARIES_FRIENDLY:\r\n\t\t\treturn 'mercenaries-friendly';\r\n\t\tcase GameType.GT_MERCENARIES_PVE:\r\n\t\t\treturn 'mercenaries-pve';\r\n\t\tcase GameType.GT_MERCENARIES_PVP:\r\n\t\t\treturn 'mercenaries-pvp';\r\n\t\tcase GameType.GT_MERCENARIES_PVE_COOP:\r\n\t\t\treturn 'mercenaries-pve-coop';\r\n\t\tcase GameType.GT_PVPDR:\r\n\t\t\treturn 'duels';\r\n\t\tcase GameType.GT_PVPDR_PAID:\r\n\t\t\treturn 'paid-duels';\r\n\t\tdefault:\r\n\t\t\tconsole.warn('unsupported game type', gameType);\r\n\t\t\treturn 'unknown';\r\n\t}\r\n};\r\n\r\nexport const getDefaultHeroDbfIdForClass = (playerClass: string): number => {\r\n\tswitch (playerClass?.toLowerCase()) {\r\n\t\tcase 'deathknight':\r\n\t\t\treturn 78065;\r\n\t\tcase 'demonhunter':\r\n\t\t\treturn 56550;\r\n\t\tcase 'druid':\r\n\t\t\treturn 274;\r\n\t\tcase 'hunter':\r\n\t\t\treturn 31;\r\n\t\tcase 'mage':\r\n\t\t\treturn 637;\r\n\t\tcase 'paladin':\r\n\t\t\treturn 671;\r\n\t\tcase 'priest':\r\n\t\t\treturn 813;\r\n\t\tcase 'rogue':\r\n\t\t\treturn 930;\r\n\t\tcase 'shaman':\r\n\t\t\treturn 1066;\r\n\t\tcase 'warlock':\r\n\t\t\treturn 893;\r\n\t\tcase 'warrior':\r\n\t\t\treturn 7;\r\n\t\tdefault:\r\n\t\t\tconsole.warn('Could not normalize hero card id', playerClass);\r\n\t\t\treturn 7;\r\n\t}\r\n};\r\n\r\nexport const normalizeDeckHeroDbfId = (\r\n\theroDbfId: number,\r\n\tcards: AllCardsService,\r\n\tduelsClass?: CardClass,\r\n\t// Should probably not be needed, but it's a safeguard in case we can't figure out the class from the Duels sign treasure\r\n\tdeckClass?: CardClass,\r\n): number => {\r\n\tconst cardFromHeroDbfId = cards.getCardFromDbfId(heroDbfId);\r\n\t// Don't normalize the dual-class heroes\r\n\tswitch (cardFromHeroDbfId.id) {\r\n\t\t// Sometimes a neutral hero is provided even though the deck has class cards\r\n\t\tcase CardIds.VanndarStormpikeTavernBrawl:\r\n\t\t\tswitch (duelsClass ?? deckClass) {\r\n\t\t\t\tcase CardClass.DEMONHUNTER:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.HUNTER:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.PALADIN:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.PRIEST:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.ROGUE:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\t\tswitch (duelsClass ?? deckClass) {\r\n\t\t\t\tcase CardClass.DRUID:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1).dbfId;\r\n\t\t\t\tcase CardClass.MAGE:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2).dbfId;\r\n\t\t\t\tcase CardClass.SHAMAN:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3).dbfId;\r\n\t\t\t\tcase CardClass.WARLOCK:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4).dbfId;\r\n\t\t\t\tcase CardClass.WARRIOR:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5).dbfId;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t// No need for further normalization, all heroes are supported in Duels\r\n\tif (duelsClass || allDuelsHeroesExtended.includes(cardFromHeroDbfId.id as CardIds)) {\r\n\t\treturn heroDbfId;\r\n\t}\r\n\r\n\tconst playerClass: CardClass = CardClass[cards.getCard(heroDbfId)?.playerClass?.toUpperCase()];\r\n\t// Not sure this should happen anymore now that all Duels heroes are supported\r\n\tif (!playerClass) {\r\n\t\treturn heroDbfId;\r\n\t}\r\n\r\n\t// Used for all the skins\r\n\tswitch (playerClass) {\r\n\t\tcase CardClass.DEATHKNIGHT:\r\n\t\t\treturn 78065;\r\n\t\tcase CardClass.DEMONHUNTER:\r\n\t\t\treturn 56550;\r\n\t\tcase CardClass.DRUID:\r\n\t\t\treturn 274;\r\n\t\tcase CardClass.HUNTER:\r\n\t\t\treturn 31;\r\n\t\tcase CardClass.MAGE:\r\n\t\t\treturn 637;\r\n\t\tcase CardClass.PALADIN:\r\n\t\t\treturn 671;\r\n\t\tcase CardClass.PRIEST:\r\n\t\t\treturn 813;\r\n\t\tcase CardClass.ROGUE:\r\n\t\t\treturn 930;\r\n\t\tcase CardClass.SHAMAN:\r\n\t\t\treturn 1066;\r\n\t\tcase CardClass.WARLOCK:\r\n\t\t\treturn 893;\r\n\t\tcase CardClass.WARRIOR:\r\n\t\t\treturn 7;\r\n\t\tdefault:\r\n\t\t\t// Keep the neutral heroes\r\n\t\t\treturn heroDbfId;\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"]}
1
+ {"version":3,"file":"hs-utils.js","sourceRoot":"","sources":["../../src/services/hs-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { GameFormatString } from '../enums/game-format';\r\nimport { ReferenceCard } from '../models/reference-cards/reference-card';\r\nimport { CardClass, CardIds, GameFormat, GameType, allDuelsHeroesExtended } from '../public-api';\r\nimport { AllCardsService } from './all-cards.service';\r\n\r\nexport const ALL_CLASSES = [\r\n\t'deathknight',\r\n\t'druid',\r\n\t'hunter',\r\n\t'mage',\r\n\t'paladin',\r\n\t'priest',\r\n\t'rogue',\r\n\t'shaman',\r\n\t'warlock',\r\n\t'warrior',\r\n\t'demonhunter',\r\n];\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_TWIST:\r\n\t\t\treturn 'twist';\r\n\t\tcase GameFormat.FT_WILD:\r\n\t\tdefault:\r\n\t\t\treturn 'wild';\r\n\t}\r\n};\r\nexport const formatFormatReverse = (format: GameFormatString): GameFormat => {\r\n\tswitch (format) {\r\n\t\tcase 'standard':\r\n\t\t\treturn GameFormat.FT_STANDARD;\r\n\t\tcase 'classic':\r\n\t\t\treturn GameFormat.FT_CLASSIC;\r\n\t\tcase 'twist':\r\n\t\t\treturn GameFormat.FT_TWIST;\r\n\t\tcase 'wild':\r\n\t\tdefault:\r\n\t\t\treturn GameFormat.FT_WILD;\r\n\t}\r\n};\r\n\r\nexport const formatGameType = (gameType: GameType): string => {\r\n\tswitch (gameType) {\r\n\t\tcase GameType.GT_UNKNOWN:\r\n\t\t\treturn 'unknown';\r\n\t\tcase GameType.GT_VS_AI:\r\n\t\t\treturn 'practice';\r\n\t\tcase GameType.GT_VS_FRIEND:\r\n\t\t\treturn 'friendly';\r\n\t\tcase GameType.GT_TUTORIAL:\r\n\t\t\treturn 'tutorial';\r\n\t\tcase GameType.GT_ARENA:\r\n\t\t\treturn 'arena';\r\n\t\tcase GameType.GT_RANKED:\r\n\t\t\treturn 'ranked';\r\n\t\tcase GameType.GT_CASUAL:\r\n\t\t\treturn 'casual';\r\n\t\tcase GameType.GT_TAVERNBRAWL:\r\n\t\tcase GameType.GT_TB_1P_VS_AI:\r\n\t\tcase GameType.GT_TB_2P_COOP:\r\n\t\tcase GameType.GT_FSG_BRAWL_VS_FRIEND:\r\n\t\tcase GameType.GT_FSG_BRAWL:\r\n\t\tcase GameType.GT_FSG_BRAWL_1P_VS_AI:\r\n\t\tcase GameType.GT_FSG_BRAWL_2P_COOP:\r\n\t\t\treturn 'tavern-brawl';\r\n\t\tcase GameType.GT_BATTLEGROUNDS:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_FRIENDLY:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_AI_VS_AI:\r\n\t\tcase GameType.GT_BATTLEGROUNDS_PLAYER_VS_AI:\r\n\t\t\treturn 'battlegrounds';\r\n\t\tcase GameType.GT_MERCENARIES_AI_VS_AI:\r\n\t\t\treturn 'mercenaries-ai-vs-ai';\r\n\t\tcase GameType.GT_MERCENARIES_FRIENDLY:\r\n\t\t\treturn 'mercenaries-friendly';\r\n\t\tcase GameType.GT_MERCENARIES_PVE:\r\n\t\t\treturn 'mercenaries-pve';\r\n\t\tcase GameType.GT_MERCENARIES_PVP:\r\n\t\t\treturn 'mercenaries-pvp';\r\n\t\tcase GameType.GT_MERCENARIES_PVE_COOP:\r\n\t\t\treturn 'mercenaries-pve-coop';\r\n\t\tcase GameType.GT_PVPDR:\r\n\t\t\treturn 'duels';\r\n\t\tcase GameType.GT_PVPDR_PAID:\r\n\t\t\treturn 'paid-duels';\r\n\t\tdefault:\r\n\t\t\tconsole.warn('unsupported game type', gameType);\r\n\t\t\treturn 'unknown';\r\n\t}\r\n};\r\n\r\nexport const formatGameTypeReverse = (gameType: string): GameType => {\r\n\tswitch (gameType) {\r\n\t\tcase 'unknown':\r\n\t\t\treturn GameType.GT_UNKNOWN;\r\n\t\tcase 'practice':\r\n\t\t\treturn GameType.GT_VS_AI;\r\n\t\tcase 'friendly':\r\n\t\t\treturn GameType.GT_VS_FRIEND;\r\n\t\tcase 'tutorial':\r\n\t\t\treturn GameType.GT_TUTORIAL;\r\n\t\tcase 'arena':\r\n\t\t\treturn GameType.GT_ARENA;\r\n\t\tcase 'ranked':\r\n\t\t\treturn GameType.GT_RANKED;\r\n\t\tcase 'casual':\r\n\t\t\treturn GameType.GT_CASUAL;\r\n\t\tcase 'tavern-brawl':\r\n\t\t\treturn GameType.GT_TAVERNBRAWL;\r\n\t\tcase 'battlegrounds':\r\n\t\t\treturn GameType.GT_BATTLEGROUNDS;\r\n\t\tcase 'mercenaries-ai-vs-ai':\r\n\t\t\treturn GameType.GT_MERCENARIES_AI_VS_AI;\r\n\t\tcase 'mercenaries-friendly':\r\n\t\t\treturn GameType.GT_MERCENARIES_FRIENDLY;\r\n\t\tcase 'mercenaries-pve':\r\n\t\t\treturn GameType.GT_MERCENARIES_PVE;\r\n\t\tcase 'mercenaries-pvp':\r\n\t\t\treturn GameType.GT_MERCENARIES_PVP;\r\n\t\tcase 'mercenaries-pve-coop':\r\n\t\t\treturn GameType.GT_MERCENARIES_PVE_COOP;\r\n\t\tcase 'duels':\r\n\t\t\treturn GameType.GT_PVPDR;\r\n\t\tcase 'paid-duels':\r\n\t\t\treturn GameType.GT_PVPDR_PAID;\r\n\t\tdefault:\r\n\t\t\tconsole.warn('unsupported game type', gameType);\r\n\t\t\treturn GameType.GT_UNKNOWN;\r\n\t}\r\n};\r\n\r\nexport const getDefaultHeroDbfIdForClass = (playerClass: string): number => {\r\n\tswitch (playerClass?.toLowerCase()) {\r\n\t\tcase 'deathknight':\r\n\t\t\treturn 78065;\r\n\t\tcase 'demonhunter':\r\n\t\t\treturn 56550;\r\n\t\tcase 'druid':\r\n\t\t\treturn 274;\r\n\t\tcase 'hunter':\r\n\t\t\treturn 31;\r\n\t\tcase 'mage':\r\n\t\t\treturn 637;\r\n\t\tcase 'paladin':\r\n\t\t\treturn 671;\r\n\t\tcase 'priest':\r\n\t\t\treturn 813;\r\n\t\tcase 'rogue':\r\n\t\t\treturn 930;\r\n\t\tcase 'shaman':\r\n\t\t\treturn 1066;\r\n\t\tcase 'warlock':\r\n\t\t\treturn 893;\r\n\t\tcase 'warrior':\r\n\t\t\treturn 7;\r\n\t\tdefault:\r\n\t\t\tconsole.warn('Could not normalize hero card id', playerClass);\r\n\t\t\treturn 7;\r\n\t}\r\n};\r\n\r\nexport const normalizeDeckHeroDbfId = (\r\n\theroDbfId: number,\r\n\tcards: AllCardsService,\r\n\tduelsClass?: CardClass,\r\n\t// Should probably not be needed, but it's a safeguard in case we can't figure out the class from the Duels sign treasure\r\n\tdeckClass?: CardClass,\r\n): number => {\r\n\tconst cardFromHeroDbfId = cards.getCardFromDbfId(heroDbfId);\r\n\t// Don't normalize the dual-class heroes\r\n\tswitch (cardFromHeroDbfId.id) {\r\n\t\t// Sometimes a neutral hero is provided even though the deck has class cards\r\n\t\tcase CardIds.VanndarStormpikeTavernBrawl:\r\n\t\t\tswitch (duelsClass ?? deckClass) {\r\n\t\t\t\tcase CardClass.DEMONHUNTER:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv1)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.HUNTER:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv2)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.PALADIN:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv3)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.PRIEST:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv4)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t\tcase CardClass.ROGUE:\r\n\t\t\t\t\treturn cards.getCard(CardIds.VanndarStormpike_VanndarStormpikeTavernBrawl_PVPDR_Hero_Vanndarv5)\r\n\t\t\t\t\t\t.dbfId;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tcase CardIds.DrektharTavernBrawl:\r\n\t\t\tswitch (duelsClass ?? deckClass) {\r\n\t\t\t\tcase CardClass.DRUID:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv1).dbfId;\r\n\t\t\t\tcase CardClass.MAGE:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv2).dbfId;\r\n\t\t\t\tcase CardClass.SHAMAN:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv3).dbfId;\r\n\t\t\t\tcase CardClass.WARLOCK:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv4).dbfId;\r\n\t\t\t\tcase CardClass.WARRIOR:\r\n\t\t\t\t\treturn cards.getCard(CardIds.Drekthar_DrektharTavernBrawl_PVPDR_Hero_DrekTharv5).dbfId;\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\t// No need for further normalization, all heroes are supported in Duels\r\n\tif (duelsClass || allDuelsHeroesExtended.includes(cardFromHeroDbfId.id as CardIds)) {\r\n\t\treturn heroDbfId;\r\n\t}\r\n\r\n\tconst playerClass: CardClass = CardClass[cards.getCard(heroDbfId)?.playerClass?.toUpperCase()];\r\n\t// Not sure this should happen anymore now that all Duels heroes are supported\r\n\tif (!playerClass) {\r\n\t\treturn heroDbfId;\r\n\t}\r\n\r\n\t// Used for all the skins\r\n\tswitch (playerClass) {\r\n\t\tcase CardClass.DEATHKNIGHT:\r\n\t\t\treturn 78065;\r\n\t\tcase CardClass.DEMONHUNTER:\r\n\t\t\treturn 56550;\r\n\t\tcase CardClass.DRUID:\r\n\t\t\treturn 274;\r\n\t\tcase CardClass.HUNTER:\r\n\t\t\treturn 31;\r\n\t\tcase CardClass.MAGE:\r\n\t\t\treturn 637;\r\n\t\tcase CardClass.PALADIN:\r\n\t\t\treturn 671;\r\n\t\tcase CardClass.PRIEST:\r\n\t\t\treturn 813;\r\n\t\tcase CardClass.ROGUE:\r\n\t\t\treturn 930;\r\n\t\tcase CardClass.SHAMAN:\r\n\t\t\treturn 1066;\r\n\t\tcase CardClass.WARLOCK:\r\n\t\t\treturn 893;\r\n\t\tcase CardClass.WARRIOR:\r\n\t\t\treturn 7;\r\n\t\tdefault:\r\n\t\t\t// Keep the neutral heroes\r\n\t\t\treturn heroDbfId;\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firestone-hs/reference-data",
3
- "version": "1.0.146",
3
+ "version": "1.0.148",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf dist && tsc",