@firestone-hs/reference-data 1.0.145 → 1.0.147
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bgs-utils.js","sourceRoot":"","sources":["../../src/services/bgs-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { CardIds, GameType, Race, ReferenceCard } from '../public-api';\r\n\r\nexport const ALL_BG_RACES = [\r\n\tRace.BEAST,\r\n\tRace.DEMON,\r\n\tRace.DRAGON,\r\n\tRace.MECH,\r\n\tRace.MURLOC,\r\n\tRace.PIRATE,\r\n\tRace.ELEMENTAL,\r\n\tRace.QUILBOAR,\r\n\tRace.NAGA,\r\n\tRace.UNDEAD,\r\n];\r\n\r\nexport const TOTAL_RACES_IN_GAME = 5;\r\n\r\nexport const NON_BUYABLE_MINION_IDS = [\r\n\tCardIds.Cuddlgam_TB_BaconShop_HP_033t_SKIN_A,\r\n\tCardIds.Cuddlgam_TB_BaconShop_HP_033t_SKIN_A_G,\r\n\tCardIds.AbominableAmalgam_TB_BaconShop_HP_033t_SKIN_D,\r\n\tCardIds.AbominableAmalgam_TB_BaconShop_HP_033t_SKIN_D_G,\r\n\tCardIds.BookEatingAmalgam_TB_BaconShop_HP_033t_SKIN_B,\r\n\tCardIds.BookEatingAmalgam_TB_BaconShop_HP_033t_SKIN_B_G,\r\n\t// CardIds.ArgentBraggart_BG_SCH_149,\r\n\t// CardIds.ArgentBraggart_TB_BaconUps_308,\r\n\tCardIds.AvatarOfNzoth_FishOfNzothToken,\r\n\tCardIds.FishOfNzoth,\r\n\tCardIds.CattlecarpOfNzoth_TB_BaconShop_HP_105t_SKIN_A,\r\n\tCardIds.CattlecarpOfNzoth_TB_BaconShop_HP_105t_SKIN_A_G,\r\n\tCardIds.SnakeTrap_SnakeLegacyToken,\r\n\tCardIds.SnakeTrap_SnakeVanillaToken,\r\n\tCardIds.ImprovedSnakeTrap_SnakeToken,\r\n\tCardIds.ElementEarth_StoneElementalToken,\r\n\tCardIds.BabyKrush_DevilsaurToken,\r\n\tCardIds.Devilsaur,\r\n\t// To remove once the cards list is properly updated\r\n\tCardIds.FriendOfAFriend_BG22_404,\r\n\tCardIds.FriendOfAFriend_BG22_404_G,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\tCardIds.MurlocWarleaderCore,\r\n\tCardIds.MurlocWarleaderVanilla,\r\n\t// 23.4, probably not needed since they are already tokens\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt2,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt3,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt4,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt5,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt6,\r\n\t// 24.0, same\r\n\tCardIds.EmperorCobraLegacy_BG_EX1_170,\r\n\tCardIds.EmperorCobraLegacy_BG_EX1_170_G,\r\n\tCardIds.EmperorCobraLegacy_EX1_170,\r\n\tCardIds.SnakeLegacyToken,\r\n\tCardIds.SnakeLegacy,\r\n\tCardIds.ElementEarth_StoneElementalToken,\r\n\tCardIds.BolvarFireblood_CORE_ICC_858,\r\n\tCardIds.BolvarFireblood_ICC_858,\r\n\t// 25.2\r\n\tCardIds.HandlessForsaken_HelpingHandToken_BG25_010t,\r\n\tCardIds.HandlessForsaken_HelpingHandToken_BG25_010_Gt,\r\n\tCardIds.GeneralDrakkisath_SmolderwingToken_BG25_309t,\r\n\tCardIds.GeneralDrakkisath_SmolderwingToken_BG25_309_Gt,\r\n\tCardIds.MechaJaraxxus_RustedReggieToken,\r\n\tCardIds.MechaJaraxxus_MagtheridonPrimeToken,\r\n\tCardIds.MechaJaraxxus_BaltharakToken,\r\n\tCardIds.RustedReggie,\r\n\tCardIds.MagtheridonPrime,\r\n\tCardIds.Baltharak,\r\n\tCardIds.Shudderskull_TB_BaconShop_HP_022t_SKIN_C,\r\n\tCardIds.Shudderskull_TB_BaconShop_HP_022t_SKIN_C_G,\r\n\tCardIds.OzumatsTentacle_BG23_HERO_201pt_SKIN_A,\r\n\tCardIds.OzumatsTentacle_BG23_HERO_201pt_SKIN_A_G,\r\n\t// 26.2\r\n\tCardIds.Manasaber_CublingToken_BG26_800t,\r\n\tCardIds.Manasaber_CublingToken_BG26_800_Gt,\r\n\tCardIds.TentacleOfOctosariToken_BG26_803t,\r\n\tCardIds.TentacleOfOctosariToken_BG26_803_Gt,\r\n\t//27.2\r\n\tCardIds.OozelingGladiator_SlimyShieldToken_BG27_002t,\r\n\tCardIds.SurfNSurf_CrabMountToken_BG27_004t,\r\n\tCardIds.SurfNSurf_CrabMountToken_BG27_004_Gt,\r\n\tCardIds.SurfNSurf_CrabToken_BG27_004t2,\r\n\tCardIds.SurfNSurf_CrabToken_BG27_004_Gt2,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n\tCardIds.MechanizedGiftHorse_MechaponyToken_BG27_008t2,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n\tCardIds.MechanizedGiftHorse_MechaponyToken_BG27_008_Gt2,\r\n\tCardIds.TavernTier2,\r\n\tCardIds.TavernTier3,\r\n\tCardIds.TavernTier4,\r\n\tCardIds.TavernTier5,\r\n\tCardIds.TavernTier6,\r\n\tCardIds.TavernTier7_TB_BaconShopTechUp07_Button,\r\n\tCardIds.TombPillager_WON_340,\r\n\t// 27.2.2\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008t,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n];\r\n\r\nexport const NON_DISCOVERABLE_BUDDIES = [\r\n\tCardIds.SpiritRaptor_BG22_HERO_001_Buddy,\r\n\tCardIds.RagingContender_TB_BaconShop_HERO_67_Buddy,\r\n\tCardIds.CaptainFairmount_BG21_HERO_000_Buddy,\r\n\tCardIds.FlightTrainer_BG20_HERO_283_Buddy,\r\n\tCardIds.JandicesApprentice_TB_BaconShop_HERO_71_Buddy,\r\n\tCardIds.CrimsonHandCenturion_TB_BaconShop_HERO_60_Buddy,\r\n\tCardIds.CrazyMonkey_TB_BaconShop_HERO_38_Buddy,\r\n\tCardIds.ShadowWarden_TB_BaconShop_HERO_62_Buddy,\r\n\tCardIds.NexusLord_TB_BaconShop_HERO_58_Buddy,\r\n\tCardIds.LeiFlamepaw_BG20_HERO_202_Buddy,\r\n\tCardIds.Watfin_BG23_HERO_303_Buddy,\r\n\tCardIds.NightmareEctoplasm_BG20_HERO_301_Buddy,\r\n\tCardIds.ManyWhelps_BG22_HERO_305_Buddy,\r\n\tCardIds.DranoshSaurfang_BG20_HERO_102_Buddy,\r\n\tCardIds.Tamuzo_BG23_HERO_201_Buddy,\r\n\tCardIds.MaxwellMightySteed_TB_BaconShop_HERO_40_Buddy,\r\n\tCardIds.Crabby_BG22_HERO_000_Buddy,\r\n\tCardIds.Mishmash_TB_BaconShop_HERO_33_Buddy,\r\n\tCardIds.PigeonLord_TB_BaconShop_HERO_12_Buddy,\r\n\tCardIds.VardensAquarrior_BG22_HERO_004_Buddy,\r\n\tCardIds.AcolyteOfYoggSaron_TB_BaconShop_HERO_35_Buddy,\r\n\tCardIds.SubmersibleChef_BG22_HERO_201_Buddy,\r\n];\r\n\r\nexport const BUDDIES_TRIBE_REQUIREMENTS = [\r\n\t{\r\n\t\tbuddy: CardIds.Vaelastrasz_TB_BaconShop_HERO_56_Buddy,\r\n\t\ttribe: Race.DRAGON,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.DeathsHeadSage_BG20_HERO_103_Buddy,\r\n\t\ttribe: Race.QUILBOAR,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.SparkfinSoothsayer_TB_BaconShop_HERO_55_Buddy,\r\n\t\ttribe: Race.MURLOC,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.SubScrubber_BG22_HERO_200_Buddy,\r\n\t\ttribe: Race.MECH,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.CoilfangElite_BG23_HERO_304_Buddy,\r\n\t\ttribe: Race.NAGA,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy,\r\n\t\ttribe: Race.DEMON,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy,\r\n\t\ttribe: Race.MECH,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.TuskarrRaider_TB_BaconShop_HERO_18_Buddy,\r\n\t\ttribe: Race.PIRATE,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.Festergut_BG25_HERO_100_Buddy,\r\n\t\ttribe: Race.UNDEAD,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ImperialDefender_BG22_HERO_007_Buddy,\r\n\t\ttribe: Race.NAGA,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy,\r\n\t\ttribe: Race.DRAGON,\r\n\t},\r\n];\r\n\r\nexport const defaultStartingHp = (\r\n\tgameType: GameType,\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): number => {\r\n\tif (isBattlegrounds(gameType)) {\r\n\t\tconst normalized = normalizeHeroCardId(heroCardId, allCards);\r\n\t\treturn allCards.getCard(normalized).health || 30;\r\n\t}\r\n\treturn 30;\r\n};\r\n\r\nexport const isBattlegrounds = (gameType: GameType): boolean => {\r\n\treturn [\r\n\t\tGameType.GT_BATTLEGROUNDS,\r\n\t\tGameType.GT_BATTLEGROUNDS_FRIENDLY,\r\n\t\tGameType.GT_BATTLEGROUNDS_AI_VS_AI,\r\n\t\tGameType.GT_BATTLEGROUNDS_PLAYER_VS_AI,\r\n\t].includes(gameType as GameType);\r\n};\r\n\r\nexport const normalizeHeroCardId = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tif (!heroCardId) {\r\n\t\treturn heroCardId;\r\n\t}\r\n\r\n\tconst normalizedAfterSkin = normalizeHeroCardIdAfterSkin(heroCardId, allCards);\r\n\tswitch (normalizedAfterSkin) {\r\n\t\tcase 'TB_BaconShop_HERO_59t':\r\n\t\t\treturn 'TB_BaconShop_HERO_59';\r\n\t\tcase CardIds.QueenAzshara_NagaQueenAzsharaToken:\r\n\t\t\treturn CardIds.QueenAzshara_BG22_HERO_007;\r\n\t\tdefault:\r\n\t\t\treturn normalizedAfterSkin;\r\n\t}\r\n};\r\n\r\nconst normalizeHeroCardIdAfterSkin = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tconst heroCard = allCards.getCard(heroCardId);\r\n\tif (!!heroCard?.battlegroundsHeroParentDbfId) {\r\n\t\tconst parentCard = allCards.getCard(heroCard.battlegroundsHeroParentDbfId);\r\n\t\tif (!!parentCard) {\r\n\t\t\treturn parentCard.id;\r\n\t\t}\r\n\t}\r\n\t// Fallback to regex\r\n\tconst bgHeroSkinMatch = heroCardId.match(/(.*)_SKIN_.*/);\r\n\tif (bgHeroSkinMatch) {\r\n\t\treturn bgHeroSkinMatch[1];\r\n\t}\r\n\treturn heroCardId;\r\n};\r\n\r\nexport const getTribeName = (tribe: Race, i18n: { translateString: (input: string) => string }): string =>\r\n\ti18n.translateString(`app.battlegrounds.tribes.${Race[tribe]?.toLowerCase()}`);\r\n\r\nexport const getTribeIcon = (tribe: string | Race): string => {\r\n\tconst referenceCardId = getReferenceTribeCardId(tribe);\r\n\treturn `https://static.zerotoheroes.com/hearthstone/cardart/256x/${referenceCardId}.jpg`;\r\n};\r\n\r\nexport const getReferenceTribeCardId = (tribe: string | Race): string => {\r\n\tlet referenceCardId: string;\r\n\ttribe = (tribe as string)?.padStart ? (tribe as string).toLowerCase() : tribe;\r\n\tswitch (tribe) {\r\n\t\tcase 'mech':\r\n\t\tcase Race.MECH:\r\n\t\t\treferenceCardId = CardIds.DeflectOBot_BGS_071;\r\n\t\t\tbreak;\r\n\t\tcase 'beast':\r\n\t\tcase Race.BEAST:\r\n\t\t\treferenceCardId = CardIds.MamaBear_BGS_021;\r\n\t\t\tbreak;\r\n\t\tcase 'demon':\r\n\t\tcase Race.DEMON:\r\n\t\t\treferenceCardId = CardIds.ImpulsiveTrickster_BG21_006;\r\n\t\t\tbreak;\r\n\t\tcase 'dragon':\r\n\t\tcase Race.DRAGON:\r\n\t\t\treferenceCardId = CardIds.KalecgosArcaneAspect_BGS_041;\r\n\t\t\tbreak;\r\n\t\tcase 'murloc':\r\n\t\tcase Race.MURLOC:\r\n\t\t\treferenceCardId = CardIds.RockpoolHunter_BG_UNG_073;\r\n\t\t\tbreak;\r\n\t\tcase 'pirate':\r\n\t\tcase Race.PIRATE:\r\n\t\t\treferenceCardId = CardIds.Scallywag_BGS_061;\r\n\t\t\tbreak;\r\n\t\tcase 'elemental':\r\n\t\tcase Race.ELEMENTAL:\r\n\t\t\treferenceCardId = CardIds.Sellemental_BGS_115;\r\n\t\t\tbreak;\r\n\t\tcase 'naga':\r\n\t\tcase Race.NAGA:\r\n\t\t\treferenceCardId = CardIds.ShellCollector_BG23_002;\r\n\t\t\tbreak;\r\n\t\tcase 'quilboar':\r\n\t\tcase Race.QUILBOAR:\r\n\t\t\treferenceCardId = CardIds.SunBaconRelaxer_BG20_301;\r\n\t\t\tbreak;\r\n\t\tcase 'undead':\r\n\t\tcase Race.UNDEAD:\r\n\t\t\treferenceCardId = CardIds.EternalKnight_BG25_008;\r\n\t\t\tbreak;\r\n\t\tcase 'all':\r\n\t\tcase Race.ALL:\r\n\t\t\treferenceCardId = CardIds.Amalgadon_BGS_069;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\treferenceCardId = CardIds.PatientScout_BG24_715;\r\n\t\t\tbreak;\r\n\t}\r\n\treturn referenceCardId;\r\n};\r\n\r\nexport const getHeroPower = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tconst normalized = normalizeHeroCardId(heroCardId, allCards);\r\n\tswitch (normalized) {\r\n\t\tcase 'TB_BaconShop_HERO_01':\r\n\t\t\treturn 'TB_BaconShop_HP_001';\r\n\t\tcase 'TB_BaconShop_HERO_02':\r\n\t\t\treturn 'TB_BaconShop_HP_011';\r\n\t\tcase 'TB_BaconShop_HERO_08':\r\n\t\t\treturn 'TB_BaconShop_HP_069';\r\n\t\tcase CardIds.RagnarosTheFirelord_TB_BaconShop_HERO_11:\r\n\t\t\treturn CardIds.DieInsects_TB_BaconShop_HP_087;\r\n\t\tcase 'TB_BaconShop_HERO_12':\r\n\t\t\treturn 'TB_BaconShop_HP_041';\r\n\t\tcase CardIds.QueenWagtoggle_TB_BaconShop_HERO_14:\r\n\t\t\treturn CardIds.WaxWarband;\r\n\t\tcase 'TB_BaconShop_HERO_15':\r\n\t\t\treturn 'TB_BaconShop_HP_010';\r\n\t\tcase 'TB_BaconShop_HERO_16':\r\n\t\t\treturn 'TB_BaconShop_HP_044';\r\n\t\tcase 'TB_BaconShop_HERO_17':\r\n\t\t\treturn 'TB_BaconShop_HP_015';\r\n\t\tcase 'TB_BaconShop_HERO_18':\r\n\t\t\treturn 'TB_BaconShop_HP_072';\r\n\t\tcase 'TB_BaconShop_HERO_20':\r\n\t\t\treturn 'TB_BaconShop_HP_018';\r\n\t\tcase 'TB_BaconShop_HERO_21':\r\n\t\t\treturn 'TB_BaconShop_HP_020';\r\n\t\tcase 'TB_BaconShop_HERO_22':\r\n\t\t\treturn 'TB_BaconShop_HP_024';\r\n\t\tcase CardIds.Shudderwock_TB_BaconShop_HERO_23:\r\n\t\t\treturn CardIds.SnickerSnack;\r\n\t\tcase 'TB_BaconShop_HERO_25':\r\n\t\t\treturn 'TB_BaconShop_HP_049';\r\n\t\tcase 'TB_BaconShop_HERO_27':\r\n\t\t\treturn 'TB_BaconShop_HP_014';\r\n\t\tcase 'TB_BaconShop_HERO_28':\r\n\t\t\treturn 'TB_BaconShop_HP_028';\r\n\t\tcase 'TB_BaconShop_HERO_30':\r\n\t\t\treturn 'TB_BaconShop_HP_043';\r\n\t\tcase 'TB_BaconShop_HERO_31':\r\n\t\t\treturn 'TB_BaconShop_HP_009';\r\n\t\tcase 'TB_BaconShop_HERO_33':\r\n\t\t\treturn 'TB_BaconShop_HP_033';\r\n\t\tcase 'TB_BaconShop_HERO_34':\r\n\t\t\treturn 'TB_BaconShop_HP_035';\r\n\t\tcase 'TB_BaconShop_HERO_35':\r\n\t\t\treturn 'TB_BaconShop_HP_039';\r\n\t\tcase 'TB_BaconShop_HERO_36':\r\n\t\t\treturn 'TB_BaconShop_HP_042';\r\n\t\tcase 'TB_BaconShop_HERO_37':\r\n\t\t\treturn 'TB_BaconShop_HP_036';\r\n\t\tcase 'TB_BaconShop_HERO_38':\r\n\t\t\treturn 'TB_BaconShop_HP_038';\r\n\t\tcase 'TB_BaconShop_HERO_39':\r\n\t\t\treturn 'TB_BaconShop_HP_040';\r\n\t\tcase 'TB_BaconShop_HERO_40':\r\n\t\t\treturn 'TB_BaconShop_HP_057';\r\n\t\tcase 'TB_BaconShop_HERO_41':\r\n\t\t\treturn 'TB_BaconShop_HP_046';\r\n\t\tcase 'TB_BaconShop_HERO_42':\r\n\t\t\treturn 'TB_BaconShop_HP_047';\r\n\t\tcase 'TB_BaconShop_HERO_43':\r\n\t\t\treturn 'TB_BaconShop_HP_048';\r\n\t\t// case 'TB_BaconShop_HERO_44':\r\n\t\t// \treturn 'TB_BaconShop_HP_050';\r\n\t\tcase 'TB_BaconShop_HERO_45':\r\n\t\t\treturn 'TB_BaconShop_HP_053';\r\n\t\tcase 'TB_BaconShop_HERO_47':\r\n\t\t\treturn 'TB_BaconShop_HP_051';\r\n\t\tcase 'TB_BaconShop_HERO_49':\r\n\t\t\treturn 'TB_BaconShop_HP_054';\r\n\t\tcase 'TB_BaconShop_HERO_50':\r\n\t\t\treturn 'TB_BaconShop_HP_077';\r\n\t\tcase 'TB_BaconShop_HERO_52':\r\n\t\t\treturn 'TB_BaconShop_HP_061';\r\n\t\tcase 'TB_BaconShop_HERO_53':\r\n\t\t\treturn 'TB_BaconShop_HP_062';\r\n\t\tcase 'TB_BaconShop_HERO_55':\r\n\t\t\treturn 'TB_BaconShop_HP_056';\r\n\t\tcase 'TB_BaconShop_HERO_56':\r\n\t\t\treturn 'TB_BaconShop_HP_064';\r\n\t\tcase 'TB_BaconShop_HERO_57':\r\n\t\t\treturn 'TB_BaconShop_HP_063';\r\n\t\tcase 'TB_BaconShop_HERO_58':\r\n\t\t\treturn 'TB_BaconShop_HP_052';\r\n\t\tcase 'TB_BaconShop_HERO_59t':\r\n\t\t\treturn 'TB_BaconShop_HP_065t2';\r\n\t\tcase 'TB_BaconShop_HERO_59':\r\n\t\t\treturn 'TB_BaconShop_HP_065';\r\n\t\tcase 'TB_BaconShop_HERO_60':\r\n\t\t\treturn 'TB_BaconShop_HP_066';\r\n\t\tcase 'TB_BaconShop_HERO_61':\r\n\t\t\treturn 'TB_BaconShop_HP_067';\r\n\t\tcase 'TB_BaconShop_HERO_62':\r\n\t\t\treturn 'TB_BaconShop_HP_068';\r\n\t\tcase 'TB_BaconShop_HERO_64':\r\n\t\t\treturn 'TB_BaconShop_HP_074';\r\n\t\tcase CardIds.CaptainHooktusk_TB_BaconShop_HERO_67:\r\n\t\t\treturn CardIds.TrashForTreasure;\r\n\t\tcase 'TB_BaconShop_HERO_68':\r\n\t\t\treturn 'TB_BaconShop_HP_076';\r\n\t\tcase 'TB_BaconShop_HERO_70':\r\n\t\t\treturn 'TB_BaconShop_HP_080';\r\n\t\tcase 'TB_BaconShop_HERO_71':\r\n\t\t\treturn 'TB_BaconShop_HP_084';\r\n\t\tcase 'TB_BaconShop_HERO_72':\r\n\t\t\treturn 'TB_BaconShop_HP_081';\r\n\t\tcase 'TB_BaconShop_HERO_74':\r\n\t\t\treturn 'TB_BaconShop_HP_082';\r\n\t\tcase CardIds.Chenvaala_TB_BaconShop_HERO_78:\r\n\t\t\treturn CardIds.Avalanche_TB_BaconShop_HP_088;\r\n\t\tcase CardIds.Rakanishu_TB_BaconShop_HERO_75:\r\n\t\t\treturn CardIds.TavernLighting;\r\n\t\tcase CardIds.Alakir:\r\n\t\t\treturn CardIds.SwattingInsects;\r\n\t\tcase CardIds.ZephrysTheGreat_TB_BaconShop_HERO_91:\r\n\t\t\treturn CardIds.ThreeWishes;\r\n\t\tcase CardIds.SilasDarkmoon_TB_BaconShop_HERO_90:\r\n\t\t\treturn CardIds.ComeOneComeAll;\r\n\t\tcase CardIds.Cthun_TB_BaconShop_HERO_29:\r\n\t\t\treturn CardIds.SaturdayCthuns;\r\n\t\tcase CardIds.Nzoth:\r\n\t\t\treturn CardIds.AvatarOfNzoth;\r\n\t\tcase CardIds.Yshaarj:\r\n\t\t\treturn CardIds.EmbraceYourRage;\r\n\t\tcase CardIds.Tickatus_TB_BaconShop_HERO_94:\r\n\t\t\treturn CardIds.PrizeWall;\r\n\t\tcase CardIds.Greybough_TB_BaconShop_HERO_95:\r\n\t\t\treturn CardIds.SproutItOut;\r\n\t\tcase CardIds.OverlordSaurfang_BG20_HERO_102:\r\n\t\t\treturn CardIds.OverlordSaurfang_ForTheHorde;\r\n\t\tcase CardIds.DeathSpeakerBlackthorn_BG20_HERO_103:\r\n\t\t\treturn CardIds.DeathSpeakerBlackthorn_Bloodbound;\r\n\t\tcase CardIds.Voljin_BG20_HERO_201:\r\n\t\t\treturn CardIds.Voljin_SpiritSwap_BG20_HERO_201p;\r\n\t\tcase CardIds.Xyrella_BG20_HERO_101:\r\n\t\t\treturn CardIds.Xyrella_SeeTheLight;\r\n\t\tcase CardIds.MutanusTheDevourer_BG20_HERO_301:\r\n\t\t\treturn CardIds.MutanusTheDevourer_Devour;\r\n\t\tcase CardIds.GuffRunetotem_BG20_HERO_242:\r\n\t\t\treturn CardIds.GuffRunetotem_NaturalBalance;\r\n\t\tcase CardIds.KurtrusAshfallen_BG20_HERO_280:\r\n\t\t\treturn CardIds.KurtrusAshfallen_GlaiveRicochet;\r\n\t\tcase CardIds.Galewing:\r\n\t\t\treturn CardIds.Galewing_DungarsGryphon;\r\n\t\tcase CardIds.TradePrinceGallywix_TB_BaconShop_HERO_10:\r\n\t\t\treturn CardIds.SmartSavings;\r\n\t\tcase CardIds.MasterNguyen:\r\n\t\t\treturn CardIds.MasterNguyen_PowerOfTheStorm;\r\n\t\tcase CardIds.CarielRoame_BG21_HERO_000:\r\n\t\t\treturn CardIds.CarielRoame_Conviction;\r\n\t\tcase CardIds.Sneed_BG21_HERO_030:\r\n\t\t\treturn CardIds.Sneed_SneedsReplicator;\r\n\t\tcase CardIds.CookieTheCook_BG21_HERO_020:\r\n\t\t\treturn CardIds.CookieTheCook_StirThePot;\r\n\t\tcase CardIds.TamsinRoame_BG20_HERO_282:\r\n\t\t\treturn CardIds.TamsinRoame_FragrantPhylactery;\r\n\t\tcase CardIds.ScabbsCutterbutter_BG21_HERO_010:\r\n\t\t\treturn CardIds.ScabbsCutterbutter_ISpy;\r\n\t\tcase CardIds.Brukan_BG22_HERO_001:\r\n\t\t\treturn CardIds.Brukan_EmbraceTheElements;\r\n\t\tcase CardIds.Drekthar_BG22_HERO_002:\r\n\t\t\treturn CardIds.Drekthar_LeadTheFrostwolves;\r\n\t\tcase CardIds.VanndarStormpike_BG22_HERO_003:\r\n\t\t\treturn CardIds.VanndarStormpike_LeadTheStormpikes;\r\n\t\tcase CardIds.TavishStormpike_BG22_HERO_000:\r\n\t\t\treturn CardIds.TavishStormpike_Deadeye;\r\n\t\tcase CardIds.VardenDawngrasp_BG22_HERO_004:\r\n\t\t\treturn CardIds.VardenDawngrasp_TwiceAsNice;\r\n\t\tcase CardIds.Rokara_BG20_HERO_100:\r\n\t\t\treturn CardIds.Rokara_GloryOfCombat;\r\n\t\tcase CardIds.Onyxia_BG22_HERO_305:\r\n\t\t\treturn CardIds.Onyxia_Broodmother;\r\n\t\tcase CardIds.AmbassadorFaelin_BG22_HERO_201:\r\n\t\t\treturn CardIds.AmbassadorFaelin_ExpeditionPlans;\r\n\t\tcase CardIds.IniStormcoil_BG22_HERO_200:\r\n\t\t\treturn CardIds.IniStormcoil_Mechgyver;\r\n\t\tcase CardIds.QueenAzshara_BG22_HERO_007:\r\n\t\t\treturn CardIds.QueenAzshara_AzsharasAmbition;\r\n\t\tcase CardIds.QueenAzshara_NagaQueenAzsharaToken:\r\n\t\t\treturn CardIds.QueenAzshara_NagaConquest;\r\n\t\tcase CardIds.Ozumat_BG23_HERO_201:\r\n\t\t\treturn CardIds.Ozumat_Tentacular;\r\n\t\tcase CardIds.LadyVashj_BG23_HERO_304:\r\n\t\t\treturn CardIds.LadyVashj_RelicsOfTheDeep;\r\n\t\tcase CardIds.HeistbaronTogwaggle_BG23_HERO_305:\r\n\t\t\treturn CardIds.HeistbaronTogwaggle_ThePerfectCrime;\r\n\t\tcase CardIds.MurlocHolmes_BG23_HERO_303:\r\n\t\t\treturn CardIds.MurlocHolmes_DetectiveForHire;\r\n\t\tcase CardIds.SireDenathrius_BG24_HERO_100:\r\n\t\t\treturn CardIds.SireDenathrius_Whodunitquestion;\r\n\t\tcase CardIds.SylvanasWindrunner_BG23_HERO_306:\r\n\t\t\treturn CardIds.SylvanasWindrunner_ReclaimedSouls;\r\n\t\tcase CardIds.TheJailer_TB_BaconShop_HERO_702:\r\n\t\t\treturn CardIds.RunicEmpowerment;\r\n\t\tcase CardIds.EnhanceOMechano_BG24_HERO_204:\r\n\t\t\treturn CardIds.EnhanceOMechano_Enhancification;\r\n\t\tcase CardIds.ProfessorPutricide_BG25_HERO_100:\r\n\t\t\treturn CardIds.ProfessorPutricide_BuildAnUndead;\r\n\t\tcase CardIds.TeronGorefiend_BG25_HERO_103:\r\n\t\t\treturn CardIds.TeronGorefiend_RapidReanimation;\r\n\t\tcase CardIds.ETCBandManager_BG25_HERO_105:\r\n\t\t\treturn CardIds.ETCBandManager_SignANewArtist;\r\n\t\tcase CardIds.RockMasterVoone_BG26_HERO_104:\r\n\t\t\treturn CardIds.RockMasterVoone_UpbeatHarmony;\r\n\t\tcase CardIds.IngeTheIronHymn:\r\n\t\t\treturn CardIds.IngeTheIronHymn_MajorHymn;\r\n\t\tcase CardIds.CapnHoggarr_BG26_HERO_101:\r\n\t\t\treturn CardIds.CapnHoggarr_ImTheCapnNow;\r\n\t\tcase CardIds.Diablo:\r\n\t\t\treturn CardIds.Diablo_RealmOfTerror;\r\n\t\tcase CardIds.ThorimStormlord_BG27_HERO_801:\r\n\t\t\treturn CardIds.ThorimStormlord_ChooseYourChampion_BG27_HERO_801p2;\r\n\t\tcase CardIds.SnakeEyes_BG28_HERO_400:\r\n\t\t\treturn CardIds.SnakeEyes_LuckyRoll_BG28_HERO_400p;\r\n\t\tcase CardIds.TaethelanBloodwatcher_BG28_HERO_800:\r\n\t\t\treturn CardIds.TaethelanBloodwatcher_ReliquaryResearch_BG28_HERO_800p;\r\n\t\tcase CardIds.DoctorHollidae_BG28_HERO_801:\r\n\t\t\treturn CardIds.DoctorHollidae_BlessingOfTheNineFrogs_BG28_HERO_801p;\r\n\r\n\t\tcase '':\r\n\t\t\treturn null; // new heroes\r\n\t}\r\n};\r\n"]}
|
|
1
|
+
{"version":3,"file":"bgs-utils.js","sourceRoot":"","sources":["../../src/services/bgs-utils.ts"],"names":[],"mappings":";;;AAAA,8CAAuE;AAE1D,QAAA,YAAY,GAAG;IAC3B,iBAAI,CAAC,KAAK;IACV,iBAAI,CAAC,KAAK;IACV,iBAAI,CAAC,MAAM;IACX,iBAAI,CAAC,IAAI;IACT,iBAAI,CAAC,MAAM;IACX,iBAAI,CAAC,MAAM;IACX,iBAAI,CAAC,SAAS;IACd,iBAAI,CAAC,QAAQ;IACb,iBAAI,CAAC,IAAI;IACT,iBAAI,CAAC,MAAM;CACX,CAAC;AAEW,QAAA,mBAAmB,GAAG,CAAC,CAAC;AAExB,QAAA,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFrC,CAAC;AAEW,QAAA,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuBvC,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACzC;QACC,KAAK,8BAAgD;QACrD,KAAK,EAAE,iBAAI,CAAC,MAAM;KAClB;IACD;QACC,KAAK,uBAA4C;QACjD,KAAK,EAAE,iBAAI,CAAC,QAAQ;KACpB;IACD;QACC,KAAK,8BAAuD;QAC5D,KAAK,EAAE,iBAAI,CAAC,MAAM;KAClB;IACD;QACC,KAAK,uBAAyC;QAC9C,KAAK,EAAE,iBAAI,CAAC,IAAI;KAChB;IACD;QACC,KAAK,uBAA2C;QAChD,KAAK,EAAE,iBAAI,CAAC,IAAI;KAChB;IACD;QACC,KAAK,8BAA2C;QAChD,KAAK,EAAE,iBAAI,CAAC,KAAK;KACjB;IACD;QACC,KAAK,8BAA2D;QAChE,KAAK,EAAE,iBAAI,CAAC,IAAI;KAChB;IACD;QACC,KAAK,8BAAkD;QACvD,KAAK,EAAE,iBAAI,CAAC,MAAM;KAClB;IACD;QACC,KAAK,uBAAuC;QAC5C,KAAK,EAAE,iBAAI,CAAC,MAAM;KAClB;IACD;QACC,KAAK,uBAA8C;QACnD,KAAK,EAAE,iBAAI,CAAC,IAAI;KAChB;IACD;QACC,KAAK,8BAAyD;QAC9D,KAAK,EAAE,iBAAI,CAAC,MAAM;KAClB;CACD,CAAC;AAEK,MAAM,iBAAiB,GAAG,CAChC,QAAkB,EAClB,UAAkB,EAClB,QAAiE,EACxD,EAAE;IACX,IAAI,uBAAe,CAAC,QAAQ,CAAC,EAAE;QAC9B,MAAM,UAAU,GAAG,2BAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7D,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;KACjD;IACD,OAAO,EAAE,CAAC;AACX,CAAC,CAAC;AAVW,QAAA,iBAAiB,qBAU5B;AAEK,MAAM,eAAe,GAAG,CAAC,QAAkB,EAAW,EAAE;IAC9D,OAAO;QACN,qBAAQ,CAAC,gBAAgB;QACzB,qBAAQ,CAAC,yBAAyB;QAClC,qBAAQ,CAAC,yBAAyB;QAClC,qBAAQ,CAAC,6BAA6B;KACtC,CAAC,QAAQ,CAAC,QAAoB,CAAC,CAAC;AAClC,CAAC,CAAC;AAPW,QAAA,eAAe,mBAO1B;AAEK,MAAM,mBAAmB,GAAG,CAClC,UAAkB,EAClB,QAAiE,EACxD,EAAE;IACX,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,UAAU,CAAC;KAClB;IAED,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC/E,QAAQ,mBAAmB,EAAE;QAC5B,KAAK,uBAAuB;YAC3B,OAAO,sBAAsB,CAAC;QAC/B;YACC,uBAA0C;QAC3C;YACC,OAAO,mBAAmB,CAAC;KAC5B;AACF,CAAC,CAAC;AAjBW,QAAA,mBAAmB,uBAiB9B;AAEF,MAAM,4BAA4B,GAAG,CACpC,UAAkB,EAClB,QAAiE,EACxD,EAAE;IACX,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,4BAA4B,CAAA,EAAE;QAC7C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QAC3E,IAAI,CAAC,CAAC,UAAU,EAAE;YACjB,OAAO,UAAU,CAAC,EAAE,CAAC;SACrB;KACD;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,eAAe,EAAE;QACpB,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;KAC1B;IACD,OAAO,UAAU,CAAC;AACnB,CAAC,CAAC;AAEK,MAAM,YAAY,GAAG,CAAC,KAAW,EAAE,IAAoD,EAAU,EAAE,WACzG,OAAA,IAAI,CAAC,eAAe,CAAC,4BAA4B,MAAA,iBAAI,CAAC,KAAK,CAAC,0CAAE,WAAW,EAAE,EAAE,CAAC,CAAA,EAAA,CAAC;AADnE,QAAA,YAAY,gBACuD;AAEzE,MAAM,YAAY,GAAG,CAAC,KAAoB,EAAU,EAAE;IAC5D,MAAM,eAAe,GAAG,+BAAuB,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,4DAA4D,eAAe,MAAM,CAAC;AAC1F,CAAC,CAAC;AAHW,QAAA,YAAY,gBAGvB;AAEK,MAAM,uBAAuB,GAAG,CAAC,KAAoB,EAAU,EAAE;;IACvE,IAAI,eAAuB,CAAC;IAC5B,KAAK,GAAG,CAAA,MAAC,KAAgB,0CAAE,QAAQ,EAAC,CAAC,CAAE,KAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9E,QAAQ,KAAK,EAAE;QACd,KAAK,MAAM,CAAC;QACZ,KAAK,iBAAI,CAAC,IAAI;YACb,eAAe,YAA8B,CAAC;YAC9C,MAAM;QACP,KAAK,OAAO,CAAC;QACb,KAAK,iBAAI,CAAC,KAAK;YACd,eAAe,YAA2B,CAAC;YAC3C,MAAM;QACP,KAAK,OAAO,CAAC;QACb,KAAK,iBAAI,CAAC,KAAK;YACd,eAAe,aAAsC,CAAC;YACtD,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAI,CAAC,MAAM;YACf,eAAe,YAAuC,CAAC;YACvD,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAI,CAAC,MAAM;YACf,eAAe,eAAoC,CAAC;YACpD,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAI,CAAC,MAAM;YACf,eAAe,YAA4B,CAAC;YAC5C,MAAM;QACP,KAAK,WAAW,CAAC;QACjB,KAAK,iBAAI,CAAC,SAAS;YAClB,eAAe,YAA8B,CAAC;YAC9C,MAAM;QACP,KAAK,MAAM,CAAC;QACZ,KAAK,iBAAI,CAAC,IAAI;YACb,eAAe,aAAkC,CAAC;YAClD,MAAM;QACP,KAAK,UAAU,CAAC;QAChB,KAAK,iBAAI,CAAC,QAAQ;YACjB,eAAe,aAAmC,CAAC;YACnD,MAAM;QACP,KAAK,QAAQ,CAAC;QACd,KAAK,iBAAI,CAAC,MAAM;YACf,eAAe,aAAiC,CAAC;YACjD,MAAM;QACP,KAAK,KAAK,CAAC;QACX,KAAK,iBAAI,CAAC,GAAG;YACZ,eAAe,YAA4B,CAAC;YAC5C,MAAM;QACP;YACC,eAAe,aAAgC,CAAC;YAChD,MAAM;KACP;IACD,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AArDW,QAAA,uBAAuB,2BAqDlC;AAEK,MAAM,YAAY,GAAG,CAC3B,UAAkB,EAClB,QAAiE,EACxD,EAAE;IACX,MAAM,UAAU,GAAG,2BAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7D,QAAQ,UAAU,EAAE;QACnB,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B;YACC,6BAA8C;QAC/C,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B;YACC,8BAA0B;QAC3B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B;YACC,6BAA4B;QAC7B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAG9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,uBAAuB;YAC3B,OAAO,uBAAuB,CAAC;QAChC,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B;YACC,6BAAgC;QACjC,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B,KAAK,sBAAsB;YAC1B,OAAO,qBAAqB,CAAC;QAC9B;YACC,6BAA6C;QAC9C;YACC,6BAA8B;QAC/B;YACC,6BAA+B;QAChC;YACC,6BAA2B;QAC5B;YACC,6BAA8B;QAC/B;YACC,6BAA8B;QAC/B;YACC,6BAA6B;QAC9B;YACC,6BAA+B;QAChC;YACC,6BAAyB;QAC1B;YACC,6BAA2B;QAC5B;YACC,wBAA4C;QAC7C;YACC,wBAAiD;QAClD;YACC,wBAAgD;QACjD;YACC,wBAAmC;QACpC;YACC,wBAAyC;QAC1C;YACC,wBAA4C;QAC7C;YACC,yBAA+C;QAChD;YACC,wBAAuC;QACxC;YACC,6BAA4B;QAC7B;YACC,wBAA4C;QAC7C;YACC,wBAAsC;QACvC;YACC,wBAAsC;QACvC;YACC,wBAAwC;QACzC;YACC,wBAA8C;QAC/C;YACC,wBAAuC;QACxC;YACC,wBAAyC;QAC1C;YACC,wBAA2C;QAC5C;YACC,wBAAkD;QACnD;YACC,wBAAuC;QACxC;YACC,wBAA2C;QAC5C;YACC,wBAAoC;QACrC;YACC,wBAAkC;QACnC;YACC,wBAAgD;QACjD;YACC,wBAAsC;QACvC;YACC,wBAA6C;QAC9C;YACC,yBAAyC;QAC1C;YACC,wBAAiC;QAClC;YACC,wBAAyC;QAC1C;YACC,wBAAmD;QACpD;YACC,yBAA6C;QAC9C;YACC,wBAA+C;QAChD;YACC,wBAAiD;QAClD;YACC,6BAAgC;QACjC;YACC,wBAA+C;QAChD;YACC,wBAAgD;QACjD;YACC,wBAA+C;QAChD;YACC,wBAA6C;QAC9C;YACC,wBAA6C;QAC9C;YACC,wBAAyC;QAC1C;YACC,wBAAwC;QACzC;YACC,wBAAoC;QACrC;YACC,yBAAkE;QACnE;YACC,wBAAkD;QACnD;YACC,wBAAsE;QACvE;YACC,wBAAoE;QAErE,KAAK,EAAE;YACN,OAAO,IAAI,CAAC;KACb;AACF,CAAC,CAAC;AAlOW,QAAA,YAAY,gBAkOvB","sourcesContent":["import { CardIds, GameType, Race, ReferenceCard } from '../public-api';\r\n\r\nexport const ALL_BG_RACES = [\r\n\tRace.BEAST,\r\n\tRace.DEMON,\r\n\tRace.DRAGON,\r\n\tRace.MECH,\r\n\tRace.MURLOC,\r\n\tRace.PIRATE,\r\n\tRace.ELEMENTAL,\r\n\tRace.QUILBOAR,\r\n\tRace.NAGA,\r\n\tRace.UNDEAD,\r\n];\r\n\r\nexport const TOTAL_RACES_IN_GAME = 5;\r\n\r\nexport const NON_BUYABLE_MINION_IDS = [\r\n\tCardIds.Cuddlgam_TB_BaconShop_HP_033t_SKIN_A,\r\n\tCardIds.Cuddlgam_TB_BaconShop_HP_033t_SKIN_A_G,\r\n\tCardIds.AbominableAmalgam_TB_BaconShop_HP_033t_SKIN_D,\r\n\tCardIds.AbominableAmalgam_TB_BaconShop_HP_033t_SKIN_D_G,\r\n\tCardIds.BookEatingAmalgam_TB_BaconShop_HP_033t_SKIN_B,\r\n\tCardIds.BookEatingAmalgam_TB_BaconShop_HP_033t_SKIN_B_G,\r\n\t// CardIds.ArgentBraggart_BG_SCH_149,\r\n\t// CardIds.ArgentBraggart_TB_BaconUps_308,\r\n\tCardIds.AvatarOfNzoth_FishOfNzothToken,\r\n\tCardIds.FishOfNzoth,\r\n\tCardIds.CattlecarpOfNzoth_TB_BaconShop_HP_105t_SKIN_A,\r\n\tCardIds.CattlecarpOfNzoth_TB_BaconShop_HP_105t_SKIN_A_G,\r\n\tCardIds.SnakeTrap_SnakeLegacyToken,\r\n\tCardIds.SnakeTrap_SnakeVanillaToken,\r\n\tCardIds.ImprovedSnakeTrap_SnakeToken,\r\n\tCardIds.ElementEarth_StoneElementalToken,\r\n\tCardIds.BabyKrush_DevilsaurToken,\r\n\tCardIds.Devilsaur,\r\n\t// To remove once the cards list is properly updated\r\n\tCardIds.FriendOfAFriend_BG22_404,\r\n\tCardIds.FriendOfAFriend_BG22_404_G,\r\n\tCardIds.Onyxia_OnyxianWhelpToken,\r\n\tCardIds.MurlocWarleaderCore,\r\n\tCardIds.MurlocWarleaderVanilla,\r\n\t// 23.4, probably not needed since they are already tokens\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt2,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt3,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt4,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt5,\r\n\tCardIds.Tentacular_OzumatsTentacleToken_BG23_HERO_201pt6,\r\n\t// 24.0, same\r\n\tCardIds.EmperorCobraLegacy_BG_EX1_170,\r\n\tCardIds.EmperorCobraLegacy_BG_EX1_170_G,\r\n\tCardIds.EmperorCobraLegacy_EX1_170,\r\n\tCardIds.SnakeLegacyToken,\r\n\tCardIds.SnakeLegacy,\r\n\tCardIds.ElementEarth_StoneElementalToken,\r\n\tCardIds.BolvarFireblood_CORE_ICC_858,\r\n\tCardIds.BolvarFireblood_ICC_858,\r\n\t// 25.2\r\n\tCardIds.HandlessForsaken_HelpingHandToken_BG25_010t,\r\n\tCardIds.HandlessForsaken_HelpingHandToken_BG25_010_Gt,\r\n\tCardIds.GeneralDrakkisath_SmolderwingToken_BG25_309t,\r\n\tCardIds.GeneralDrakkisath_SmolderwingToken_BG25_309_Gt,\r\n\tCardIds.MechaJaraxxus_RustedReggieToken,\r\n\tCardIds.MechaJaraxxus_MagtheridonPrimeToken,\r\n\tCardIds.MechaJaraxxus_BaltharakToken,\r\n\tCardIds.RustedReggie,\r\n\tCardIds.MagtheridonPrime,\r\n\tCardIds.Baltharak,\r\n\tCardIds.Shudderskull_TB_BaconShop_HP_022t_SKIN_C,\r\n\tCardIds.Shudderskull_TB_BaconShop_HP_022t_SKIN_C_G,\r\n\tCardIds.OzumatsTentacle_BG23_HERO_201pt_SKIN_A,\r\n\tCardIds.OzumatsTentacle_BG23_HERO_201pt_SKIN_A_G,\r\n\t// 26.2\r\n\tCardIds.Manasaber_CublingToken_BG26_800t,\r\n\tCardIds.Manasaber_CublingToken_BG26_800_Gt,\r\n\tCardIds.TentacleOfOctosariToken_BG26_803t,\r\n\tCardIds.TentacleOfOctosariToken_BG26_803_Gt,\r\n\t//27.2\r\n\tCardIds.OozelingGladiator_SlimyShieldToken_BG27_002t,\r\n\tCardIds.SurfNSurf_CrabMountToken_BG27_004t,\r\n\tCardIds.SurfNSurf_CrabMountToken_BG27_004_Gt,\r\n\tCardIds.SurfNSurf_CrabToken_BG27_004t2,\r\n\tCardIds.SurfNSurf_CrabToken_BG27_004_Gt2,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n\tCardIds.MechanizedGiftHorse_MechaponyToken_BG27_008t2,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n\tCardIds.MechanizedGiftHorse_MechaponyToken_BG27_008_Gt2,\r\n\tCardIds.TavernTier2,\r\n\tCardIds.TavernTier3,\r\n\tCardIds.TavernTier4,\r\n\tCardIds.TavernTier5,\r\n\tCardIds.TavernTier6,\r\n\tCardIds.TavernTier7_TB_BaconShopTechUp07_Button,\r\n\tCardIds.TombPillager_WON_340,\r\n\t// 27.2.2\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008t,\r\n\tCardIds.MechanizedGiftHorse_MechorseToken_BG27_008_Gt,\r\n\t// 28.6\r\n\tCardIds.StableAmalgamation_TotallyNormalHorseToken_BG28_Reward_518t,\r\n\tCardIds.TotallyNormalHorse_BG28_Reward_518t_G,\r\n];\r\n\r\nexport const NON_DISCOVERABLE_BUDDIES = [\r\n\tCardIds.SpiritRaptor_BG22_HERO_001_Buddy,\r\n\tCardIds.RagingContender_TB_BaconShop_HERO_67_Buddy,\r\n\tCardIds.CaptainFairmount_BG21_HERO_000_Buddy,\r\n\tCardIds.FlightTrainer_BG20_HERO_283_Buddy,\r\n\tCardIds.JandicesApprentice_TB_BaconShop_HERO_71_Buddy,\r\n\tCardIds.CrimsonHandCenturion_TB_BaconShop_HERO_60_Buddy,\r\n\tCardIds.CrazyMonkey_TB_BaconShop_HERO_38_Buddy,\r\n\tCardIds.ShadowWarden_TB_BaconShop_HERO_62_Buddy,\r\n\tCardIds.NexusLord_TB_BaconShop_HERO_58_Buddy,\r\n\tCardIds.LeiFlamepaw_BG20_HERO_202_Buddy,\r\n\tCardIds.Watfin_BG23_HERO_303_Buddy,\r\n\tCardIds.NightmareEctoplasm_BG20_HERO_301_Buddy,\r\n\tCardIds.ManyWhelps_BG22_HERO_305_Buddy,\r\n\tCardIds.DranoshSaurfang_BG20_HERO_102_Buddy,\r\n\tCardIds.Tamuzo_BG23_HERO_201_Buddy,\r\n\tCardIds.MaxwellMightySteed_TB_BaconShop_HERO_40_Buddy,\r\n\tCardIds.Crabby_BG22_HERO_000_Buddy,\r\n\tCardIds.Mishmash_TB_BaconShop_HERO_33_Buddy,\r\n\tCardIds.PigeonLord_TB_BaconShop_HERO_12_Buddy,\r\n\tCardIds.VardensAquarrior_BG22_HERO_004_Buddy,\r\n\tCardIds.AcolyteOfYoggSaron_TB_BaconShop_HERO_35_Buddy,\r\n\tCardIds.SubmersibleChef_BG22_HERO_201_Buddy,\r\n];\r\n\r\nexport const BUDDIES_TRIBE_REQUIREMENTS = [\r\n\t{\r\n\t\tbuddy: CardIds.Vaelastrasz_TB_BaconShop_HERO_56_Buddy,\r\n\t\ttribe: Race.DRAGON,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.DeathsHeadSage_BG20_HERO_103_Buddy,\r\n\t\ttribe: Race.QUILBOAR,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.SparkfinSoothsayer_TB_BaconShop_HERO_55_Buddy,\r\n\t\ttribe: Race.MURLOC,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.SubScrubber_BG22_HERO_200_Buddy,\r\n\t\ttribe: Race.MECH,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.CoilfangElite_BG23_HERO_304_Buddy,\r\n\t\ttribe: Race.NAGA,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.Kilrek_TB_BaconShop_HERO_37_Buddy,\r\n\t\ttribe: Race.DEMON,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ElementiumSquirrelBomb_TB_BaconShop_HERO_17_Buddy,\r\n\t\ttribe: Race.MECH,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.TuskarrRaider_TB_BaconShop_HERO_18_Buddy,\r\n\t\ttribe: Race.PIRATE,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.Festergut_BG25_HERO_100_Buddy,\r\n\t\ttribe: Race.UNDEAD,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ImperialDefender_BG22_HERO_007_Buddy,\r\n\t\ttribe: Race.NAGA,\r\n\t},\r\n\t{\r\n\t\tbuddy: CardIds.ValithriaDreamwalker_TB_BaconShop_HERO_53_Buddy,\r\n\t\ttribe: Race.DRAGON,\r\n\t},\r\n];\r\n\r\nexport const defaultStartingHp = (\r\n\tgameType: GameType,\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): number => {\r\n\tif (isBattlegrounds(gameType)) {\r\n\t\tconst normalized = normalizeHeroCardId(heroCardId, allCards);\r\n\t\treturn allCards.getCard(normalized).health || 30;\r\n\t}\r\n\treturn 30;\r\n};\r\n\r\nexport const isBattlegrounds = (gameType: GameType): boolean => {\r\n\treturn [\r\n\t\tGameType.GT_BATTLEGROUNDS,\r\n\t\tGameType.GT_BATTLEGROUNDS_FRIENDLY,\r\n\t\tGameType.GT_BATTLEGROUNDS_AI_VS_AI,\r\n\t\tGameType.GT_BATTLEGROUNDS_PLAYER_VS_AI,\r\n\t].includes(gameType as GameType);\r\n};\r\n\r\nexport const normalizeHeroCardId = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tif (!heroCardId) {\r\n\t\treturn heroCardId;\r\n\t}\r\n\r\n\tconst normalizedAfterSkin = normalizeHeroCardIdAfterSkin(heroCardId, allCards);\r\n\tswitch (normalizedAfterSkin) {\r\n\t\tcase 'TB_BaconShop_HERO_59t':\r\n\t\t\treturn 'TB_BaconShop_HERO_59';\r\n\t\tcase CardIds.QueenAzshara_NagaQueenAzsharaToken:\r\n\t\t\treturn CardIds.QueenAzshara_BG22_HERO_007;\r\n\t\tdefault:\r\n\t\t\treturn normalizedAfterSkin;\r\n\t}\r\n};\r\n\r\nconst normalizeHeroCardIdAfterSkin = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tconst heroCard = allCards.getCard(heroCardId);\r\n\tif (!!heroCard?.battlegroundsHeroParentDbfId) {\r\n\t\tconst parentCard = allCards.getCard(heroCard.battlegroundsHeroParentDbfId);\r\n\t\tif (!!parentCard) {\r\n\t\t\treturn parentCard.id;\r\n\t\t}\r\n\t}\r\n\t// Fallback to regex\r\n\tconst bgHeroSkinMatch = heroCardId.match(/(.*)_SKIN_.*/);\r\n\tif (bgHeroSkinMatch) {\r\n\t\treturn bgHeroSkinMatch[1];\r\n\t}\r\n\treturn heroCardId;\r\n};\r\n\r\nexport const getTribeName = (tribe: Race, i18n: { translateString: (input: string) => string }): string =>\r\n\ti18n.translateString(`app.battlegrounds.tribes.${Race[tribe]?.toLowerCase()}`);\r\n\r\nexport const getTribeIcon = (tribe: string | Race): string => {\r\n\tconst referenceCardId = getReferenceTribeCardId(tribe);\r\n\treturn `https://static.zerotoheroes.com/hearthstone/cardart/256x/${referenceCardId}.jpg`;\r\n};\r\n\r\nexport const getReferenceTribeCardId = (tribe: string | Race): string => {\r\n\tlet referenceCardId: string;\r\n\ttribe = (tribe as string)?.padStart ? (tribe as string).toLowerCase() : tribe;\r\n\tswitch (tribe) {\r\n\t\tcase 'mech':\r\n\t\tcase Race.MECH:\r\n\t\t\treferenceCardId = CardIds.DeflectOBot_BGS_071;\r\n\t\t\tbreak;\r\n\t\tcase 'beast':\r\n\t\tcase Race.BEAST:\r\n\t\t\treferenceCardId = CardIds.MamaBear_BGS_021;\r\n\t\t\tbreak;\r\n\t\tcase 'demon':\r\n\t\tcase Race.DEMON:\r\n\t\t\treferenceCardId = CardIds.ImpulsiveTrickster_BG21_006;\r\n\t\t\tbreak;\r\n\t\tcase 'dragon':\r\n\t\tcase Race.DRAGON:\r\n\t\t\treferenceCardId = CardIds.KalecgosArcaneAspect_BGS_041;\r\n\t\t\tbreak;\r\n\t\tcase 'murloc':\r\n\t\tcase Race.MURLOC:\r\n\t\t\treferenceCardId = CardIds.RockpoolHunter_BG_UNG_073;\r\n\t\t\tbreak;\r\n\t\tcase 'pirate':\r\n\t\tcase Race.PIRATE:\r\n\t\t\treferenceCardId = CardIds.Scallywag_BGS_061;\r\n\t\t\tbreak;\r\n\t\tcase 'elemental':\r\n\t\tcase Race.ELEMENTAL:\r\n\t\t\treferenceCardId = CardIds.Sellemental_BGS_115;\r\n\t\t\tbreak;\r\n\t\tcase 'naga':\r\n\t\tcase Race.NAGA:\r\n\t\t\treferenceCardId = CardIds.ShellCollector_BG23_002;\r\n\t\t\tbreak;\r\n\t\tcase 'quilboar':\r\n\t\tcase Race.QUILBOAR:\r\n\t\t\treferenceCardId = CardIds.SunBaconRelaxer_BG20_301;\r\n\t\t\tbreak;\r\n\t\tcase 'undead':\r\n\t\tcase Race.UNDEAD:\r\n\t\t\treferenceCardId = CardIds.EternalKnight_BG25_008;\r\n\t\t\tbreak;\r\n\t\tcase 'all':\r\n\t\tcase Race.ALL:\r\n\t\t\treferenceCardId = CardIds.Amalgadon_BGS_069;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\treferenceCardId = CardIds.PatientScout_BG24_715;\r\n\t\t\tbreak;\r\n\t}\r\n\treturn referenceCardId;\r\n};\r\n\r\nexport const getHeroPower = (\r\n\theroCardId: string,\r\n\tallCards: { getCard: (cardId: string | number) => ReferenceCard },\r\n): string => {\r\n\tconst normalized = normalizeHeroCardId(heroCardId, allCards);\r\n\tswitch (normalized) {\r\n\t\tcase 'TB_BaconShop_HERO_01':\r\n\t\t\treturn 'TB_BaconShop_HP_001';\r\n\t\tcase 'TB_BaconShop_HERO_02':\r\n\t\t\treturn 'TB_BaconShop_HP_011';\r\n\t\tcase 'TB_BaconShop_HERO_08':\r\n\t\t\treturn 'TB_BaconShop_HP_069';\r\n\t\tcase CardIds.RagnarosTheFirelord_TB_BaconShop_HERO_11:\r\n\t\t\treturn CardIds.DieInsects_TB_BaconShop_HP_087;\r\n\t\tcase 'TB_BaconShop_HERO_12':\r\n\t\t\treturn 'TB_BaconShop_HP_041';\r\n\t\tcase CardIds.QueenWagtoggle_TB_BaconShop_HERO_14:\r\n\t\t\treturn CardIds.WaxWarband;\r\n\t\tcase 'TB_BaconShop_HERO_15':\r\n\t\t\treturn 'TB_BaconShop_HP_010';\r\n\t\tcase 'TB_BaconShop_HERO_16':\r\n\t\t\treturn 'TB_BaconShop_HP_044';\r\n\t\tcase 'TB_BaconShop_HERO_17':\r\n\t\t\treturn 'TB_BaconShop_HP_015';\r\n\t\tcase 'TB_BaconShop_HERO_18':\r\n\t\t\treturn 'TB_BaconShop_HP_072';\r\n\t\tcase 'TB_BaconShop_HERO_20':\r\n\t\t\treturn 'TB_BaconShop_HP_018';\r\n\t\tcase 'TB_BaconShop_HERO_21':\r\n\t\t\treturn 'TB_BaconShop_HP_020';\r\n\t\tcase 'TB_BaconShop_HERO_22':\r\n\t\t\treturn 'TB_BaconShop_HP_024';\r\n\t\tcase CardIds.Shudderwock_TB_BaconShop_HERO_23:\r\n\t\t\treturn CardIds.SnickerSnack;\r\n\t\tcase 'TB_BaconShop_HERO_25':\r\n\t\t\treturn 'TB_BaconShop_HP_049';\r\n\t\tcase 'TB_BaconShop_HERO_27':\r\n\t\t\treturn 'TB_BaconShop_HP_014';\r\n\t\tcase 'TB_BaconShop_HERO_28':\r\n\t\t\treturn 'TB_BaconShop_HP_028';\r\n\t\tcase 'TB_BaconShop_HERO_30':\r\n\t\t\treturn 'TB_BaconShop_HP_043';\r\n\t\tcase 'TB_BaconShop_HERO_31':\r\n\t\t\treturn 'TB_BaconShop_HP_009';\r\n\t\tcase 'TB_BaconShop_HERO_33':\r\n\t\t\treturn 'TB_BaconShop_HP_033';\r\n\t\tcase 'TB_BaconShop_HERO_34':\r\n\t\t\treturn 'TB_BaconShop_HP_035';\r\n\t\tcase 'TB_BaconShop_HERO_35':\r\n\t\t\treturn 'TB_BaconShop_HP_039';\r\n\t\tcase 'TB_BaconShop_HERO_36':\r\n\t\t\treturn 'TB_BaconShop_HP_042';\r\n\t\tcase 'TB_BaconShop_HERO_37':\r\n\t\t\treturn 'TB_BaconShop_HP_036';\r\n\t\tcase 'TB_BaconShop_HERO_38':\r\n\t\t\treturn 'TB_BaconShop_HP_038';\r\n\t\tcase 'TB_BaconShop_HERO_39':\r\n\t\t\treturn 'TB_BaconShop_HP_040';\r\n\t\tcase 'TB_BaconShop_HERO_40':\r\n\t\t\treturn 'TB_BaconShop_HP_057';\r\n\t\tcase 'TB_BaconShop_HERO_41':\r\n\t\t\treturn 'TB_BaconShop_HP_046';\r\n\t\tcase 'TB_BaconShop_HERO_42':\r\n\t\t\treturn 'TB_BaconShop_HP_047';\r\n\t\tcase 'TB_BaconShop_HERO_43':\r\n\t\t\treturn 'TB_BaconShop_HP_048';\r\n\t\t// case 'TB_BaconShop_HERO_44':\r\n\t\t// \treturn 'TB_BaconShop_HP_050';\r\n\t\tcase 'TB_BaconShop_HERO_45':\r\n\t\t\treturn 'TB_BaconShop_HP_053';\r\n\t\tcase 'TB_BaconShop_HERO_47':\r\n\t\t\treturn 'TB_BaconShop_HP_051';\r\n\t\tcase 'TB_BaconShop_HERO_49':\r\n\t\t\treturn 'TB_BaconShop_HP_054';\r\n\t\tcase 'TB_BaconShop_HERO_50':\r\n\t\t\treturn 'TB_BaconShop_HP_077';\r\n\t\tcase 'TB_BaconShop_HERO_52':\r\n\t\t\treturn 'TB_BaconShop_HP_061';\r\n\t\tcase 'TB_BaconShop_HERO_53':\r\n\t\t\treturn 'TB_BaconShop_HP_062';\r\n\t\tcase 'TB_BaconShop_HERO_55':\r\n\t\t\treturn 'TB_BaconShop_HP_056';\r\n\t\tcase 'TB_BaconShop_HERO_56':\r\n\t\t\treturn 'TB_BaconShop_HP_064';\r\n\t\tcase 'TB_BaconShop_HERO_57':\r\n\t\t\treturn 'TB_BaconShop_HP_063';\r\n\t\tcase 'TB_BaconShop_HERO_58':\r\n\t\t\treturn 'TB_BaconShop_HP_052';\r\n\t\tcase 'TB_BaconShop_HERO_59t':\r\n\t\t\treturn 'TB_BaconShop_HP_065t2';\r\n\t\tcase 'TB_BaconShop_HERO_59':\r\n\t\t\treturn 'TB_BaconShop_HP_065';\r\n\t\tcase 'TB_BaconShop_HERO_60':\r\n\t\t\treturn 'TB_BaconShop_HP_066';\r\n\t\tcase 'TB_BaconShop_HERO_61':\r\n\t\t\treturn 'TB_BaconShop_HP_067';\r\n\t\tcase 'TB_BaconShop_HERO_62':\r\n\t\t\treturn 'TB_BaconShop_HP_068';\r\n\t\tcase 'TB_BaconShop_HERO_64':\r\n\t\t\treturn 'TB_BaconShop_HP_074';\r\n\t\tcase CardIds.CaptainHooktusk_TB_BaconShop_HERO_67:\r\n\t\t\treturn CardIds.TrashForTreasure;\r\n\t\tcase 'TB_BaconShop_HERO_68':\r\n\t\t\treturn 'TB_BaconShop_HP_076';\r\n\t\tcase 'TB_BaconShop_HERO_70':\r\n\t\t\treturn 'TB_BaconShop_HP_080';\r\n\t\tcase 'TB_BaconShop_HERO_71':\r\n\t\t\treturn 'TB_BaconShop_HP_084';\r\n\t\tcase 'TB_BaconShop_HERO_72':\r\n\t\t\treturn 'TB_BaconShop_HP_081';\r\n\t\tcase 'TB_BaconShop_HERO_74':\r\n\t\t\treturn 'TB_BaconShop_HP_082';\r\n\t\tcase CardIds.Chenvaala_TB_BaconShop_HERO_78:\r\n\t\t\treturn CardIds.Avalanche_TB_BaconShop_HP_088;\r\n\t\tcase CardIds.Rakanishu_TB_BaconShop_HERO_75:\r\n\t\t\treturn CardIds.TavernLighting;\r\n\t\tcase CardIds.Alakir:\r\n\t\t\treturn CardIds.SwattingInsects;\r\n\t\tcase CardIds.ZephrysTheGreat_TB_BaconShop_HERO_91:\r\n\t\t\treturn CardIds.ThreeWishes;\r\n\t\tcase CardIds.SilasDarkmoon_TB_BaconShop_HERO_90:\r\n\t\t\treturn CardIds.ComeOneComeAll;\r\n\t\tcase CardIds.Cthun_TB_BaconShop_HERO_29:\r\n\t\t\treturn CardIds.SaturdayCthuns;\r\n\t\tcase CardIds.Nzoth:\r\n\t\t\treturn CardIds.AvatarOfNzoth;\r\n\t\tcase CardIds.Yshaarj:\r\n\t\t\treturn CardIds.EmbraceYourRage;\r\n\t\tcase CardIds.Tickatus_TB_BaconShop_HERO_94:\r\n\t\t\treturn CardIds.PrizeWall;\r\n\t\tcase CardIds.Greybough_TB_BaconShop_HERO_95:\r\n\t\t\treturn CardIds.SproutItOut;\r\n\t\tcase CardIds.OverlordSaurfang_BG20_HERO_102:\r\n\t\t\treturn CardIds.OverlordSaurfang_ForTheHorde;\r\n\t\tcase CardIds.DeathSpeakerBlackthorn_BG20_HERO_103:\r\n\t\t\treturn CardIds.DeathSpeakerBlackthorn_Bloodbound;\r\n\t\tcase CardIds.Voljin_BG20_HERO_201:\r\n\t\t\treturn CardIds.Voljin_SpiritSwap_BG20_HERO_201p;\r\n\t\tcase CardIds.Xyrella_BG20_HERO_101:\r\n\t\t\treturn CardIds.Xyrella_SeeTheLight;\r\n\t\tcase CardIds.MutanusTheDevourer_BG20_HERO_301:\r\n\t\t\treturn CardIds.MutanusTheDevourer_Devour;\r\n\t\tcase CardIds.GuffRunetotem_BG20_HERO_242:\r\n\t\t\treturn CardIds.GuffRunetotem_NaturalBalance;\r\n\t\tcase CardIds.KurtrusAshfallen_BG20_HERO_280:\r\n\t\t\treturn CardIds.KurtrusAshfallen_GlaiveRicochet;\r\n\t\tcase CardIds.Galewing:\r\n\t\t\treturn CardIds.Galewing_DungarsGryphon;\r\n\t\tcase CardIds.TradePrinceGallywix_TB_BaconShop_HERO_10:\r\n\t\t\treturn CardIds.SmartSavings;\r\n\t\tcase CardIds.MasterNguyen:\r\n\t\t\treturn CardIds.MasterNguyen_PowerOfTheStorm;\r\n\t\tcase CardIds.CarielRoame_BG21_HERO_000:\r\n\t\t\treturn CardIds.CarielRoame_Conviction;\r\n\t\tcase CardIds.Sneed_BG21_HERO_030:\r\n\t\t\treturn CardIds.Sneed_SneedsReplicator;\r\n\t\tcase CardIds.CookieTheCook_BG21_HERO_020:\r\n\t\t\treturn CardIds.CookieTheCook_StirThePot;\r\n\t\tcase CardIds.TamsinRoame_BG20_HERO_282:\r\n\t\t\treturn CardIds.TamsinRoame_FragrantPhylactery;\r\n\t\tcase CardIds.ScabbsCutterbutter_BG21_HERO_010:\r\n\t\t\treturn CardIds.ScabbsCutterbutter_ISpy;\r\n\t\tcase CardIds.Brukan_BG22_HERO_001:\r\n\t\t\treturn CardIds.Brukan_EmbraceTheElements;\r\n\t\tcase CardIds.Drekthar_BG22_HERO_002:\r\n\t\t\treturn CardIds.Drekthar_LeadTheFrostwolves;\r\n\t\tcase CardIds.VanndarStormpike_BG22_HERO_003:\r\n\t\t\treturn CardIds.VanndarStormpike_LeadTheStormpikes;\r\n\t\tcase CardIds.TavishStormpike_BG22_HERO_000:\r\n\t\t\treturn CardIds.TavishStormpike_Deadeye;\r\n\t\tcase CardIds.VardenDawngrasp_BG22_HERO_004:\r\n\t\t\treturn CardIds.VardenDawngrasp_TwiceAsNice;\r\n\t\tcase CardIds.Rokara_BG20_HERO_100:\r\n\t\t\treturn CardIds.Rokara_GloryOfCombat;\r\n\t\tcase CardIds.Onyxia_BG22_HERO_305:\r\n\t\t\treturn CardIds.Onyxia_Broodmother;\r\n\t\tcase CardIds.AmbassadorFaelin_BG22_HERO_201:\r\n\t\t\treturn CardIds.AmbassadorFaelin_ExpeditionPlans;\r\n\t\tcase CardIds.IniStormcoil_BG22_HERO_200:\r\n\t\t\treturn CardIds.IniStormcoil_Mechgyver;\r\n\t\tcase CardIds.QueenAzshara_BG22_HERO_007:\r\n\t\t\treturn CardIds.QueenAzshara_AzsharasAmbition;\r\n\t\tcase CardIds.QueenAzshara_NagaQueenAzsharaToken:\r\n\t\t\treturn CardIds.QueenAzshara_NagaConquest;\r\n\t\tcase CardIds.Ozumat_BG23_HERO_201:\r\n\t\t\treturn CardIds.Ozumat_Tentacular;\r\n\t\tcase CardIds.LadyVashj_BG23_HERO_304:\r\n\t\t\treturn CardIds.LadyVashj_RelicsOfTheDeep;\r\n\t\tcase CardIds.HeistbaronTogwaggle_BG23_HERO_305:\r\n\t\t\treturn CardIds.HeistbaronTogwaggle_ThePerfectCrime;\r\n\t\tcase CardIds.MurlocHolmes_BG23_HERO_303:\r\n\t\t\treturn CardIds.MurlocHolmes_DetectiveForHire;\r\n\t\tcase CardIds.SireDenathrius_BG24_HERO_100:\r\n\t\t\treturn CardIds.SireDenathrius_Whodunitquestion;\r\n\t\tcase CardIds.SylvanasWindrunner_BG23_HERO_306:\r\n\t\t\treturn CardIds.SylvanasWindrunner_ReclaimedSouls;\r\n\t\tcase CardIds.TheJailer_TB_BaconShop_HERO_702:\r\n\t\t\treturn CardIds.RunicEmpowerment;\r\n\t\tcase CardIds.EnhanceOMechano_BG24_HERO_204:\r\n\t\t\treturn CardIds.EnhanceOMechano_Enhancification;\r\n\t\tcase CardIds.ProfessorPutricide_BG25_HERO_100:\r\n\t\t\treturn CardIds.ProfessorPutricide_BuildAnUndead;\r\n\t\tcase CardIds.TeronGorefiend_BG25_HERO_103:\r\n\t\t\treturn CardIds.TeronGorefiend_RapidReanimation;\r\n\t\tcase CardIds.ETCBandManager_BG25_HERO_105:\r\n\t\t\treturn CardIds.ETCBandManager_SignANewArtist;\r\n\t\tcase CardIds.RockMasterVoone_BG26_HERO_104:\r\n\t\t\treturn CardIds.RockMasterVoone_UpbeatHarmony;\r\n\t\tcase CardIds.IngeTheIronHymn:\r\n\t\t\treturn CardIds.IngeTheIronHymn_MajorHymn;\r\n\t\tcase CardIds.CapnHoggarr_BG26_HERO_101:\r\n\t\t\treturn CardIds.CapnHoggarr_ImTheCapnNow;\r\n\t\tcase CardIds.Diablo:\r\n\t\t\treturn CardIds.Diablo_RealmOfTerror;\r\n\t\tcase CardIds.ThorimStormlord_BG27_HERO_801:\r\n\t\t\treturn CardIds.ThorimStormlord_ChooseYourChampion_BG27_HERO_801p2;\r\n\t\tcase CardIds.SnakeEyes_BG28_HERO_400:\r\n\t\t\treturn CardIds.SnakeEyes_LuckyRoll_BG28_HERO_400p;\r\n\t\tcase CardIds.TaethelanBloodwatcher_BG28_HERO_800:\r\n\t\t\treturn CardIds.TaethelanBloodwatcher_ReliquaryResearch_BG28_HERO_800p;\r\n\t\tcase CardIds.DoctorHollidae_BG28_HERO_801:\r\n\t\t\treturn CardIds.DoctorHollidae_BlessingOfTheNineFrogs_BG28_HERO_801p;\r\n\r\n\t\tcase '':\r\n\t\t\treturn null; // new heroes\r\n\t}\r\n};\r\n"]}
|
|
@@ -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,
|
|
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"]}
|