diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index 7cd28c6c..ffb5dac5 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -191,6 +191,7 @@ const guildSchema = new Schema( VaultMiscItems: { type: [typeCountSchema], default: undefined }, VaultShipDecorations: { type: [typeCountSchema], default: undefined }, VaultFusionTreasures: { type: [fusionTreasuresSchema], default: undefined }, + VaultDecoRecipes: { type: [typeCountSchema], default: undefined }, TechProjects: { type: [techProjectSchema], default: undefined }, ActiveDojoColorResearch: { type: String, default: "" }, Class: { type: Number, default: 0 }, diff --git a/src/services/configService.ts b/src/services/configService.ts index 86461644..7a3f0b1d 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -29,6 +29,7 @@ interface IConfig { unlockAllFlavourItems?: boolean; unlockAllSkins?: boolean; unlockAllCapturaScenes?: boolean; + unlockAllDecoRecipes?: boolean; universalPolarityEverywhere?: boolean; unlockDoubleCapacityPotatoesEverywhere?: boolean; unlockExilusEverywhere?: boolean; diff --git a/src/services/guildService.ts b/src/services/guildService.ts index 3dbddc02..15b973f8 100644 --- a/src/services/guildService.ts +++ b/src/services/guildService.ts @@ -30,6 +30,7 @@ import { Inbox } from "../models/inboxModel"; import { IFusionTreasure, ITypeCount } from "../types/inventoryTypes/inventoryTypes"; import { IInventoryChanges } from "../types/purchaseTypes"; import { parallelForeach } from "../utils/async-utils"; +import allDecoRecipes from "@/static/fixed_responses/allDecoRecipes.json"; export const getGuildForRequest = async (req: Request): Promise => { const accountId = await getAccountIdForRequest(req); @@ -114,7 +115,10 @@ export const getGuildVault = (guild: TGuildDatabaseDocument): IGuildVault => { DojoRefundMiscItems: guild.VaultMiscItems, DojoRefundPremiumCredits: guild.VaultPremiumCredits, ShipDecorations: guild.VaultShipDecorations, - FusionTreasures: guild.VaultFusionTreasures + FusionTreasures: guild.VaultFusionTreasures, + DecoRecipes: config.unlockAllDecoRecipes + ? allDecoRecipes.map(recipe => ({ ItemType: recipe, ItemCount: 1 })) + : guild.VaultDecoRecipes }; }; diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 518e6bcf..0d02b0db 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -44,6 +44,7 @@ export interface IGuildDatabase { VaultMiscItems?: IMiscItem[]; VaultShipDecorations?: ITypeCount[]; VaultFusionTreasures?: IFusionTreasure[]; + VaultDecoRecipes?: ITypeCount[]; TechProjects?: ITechProjectDatabase[]; ActiveDojoColorResearch: string; diff --git a/static/fixed_responses/allDecoRecipes.json b/static/fixed_responses/allDecoRecipes.json new file mode 100644 index 00000000..4ed19d5b --- /dev/null +++ b/static/fixed_responses/allDecoRecipes.json @@ -0,0 +1,92 @@ +[ + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AmbulasEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AmbulasEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AmbulasEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AmbulasEventTerracottaTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AridFearBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AridFearGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/AridFearSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/BreedingGroundsBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/BreedingGroundsGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/BreedingGroundsSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/CiceroCrisisBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/CiceroCrisisGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/CiceroCrisisSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DisruptionEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DisruptionEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DisruptionEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DisruptionEventTerracottaTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DojoRemasterTrophyBronzeARecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DojoRemasterTrophyGoldARecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DojoRemasterTrophyPlatinumARecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/DojoRemasterTrophySilverARecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EntratiEventBaseTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EntratiEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EntratiEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EntratiEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EntratiEventTerracottaTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EvacuationEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EvacuationEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EvacuationEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EvacuationEventTerracottaTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/EyesOfBlightTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/FalseProfitBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/FalseProfitClayTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/FalseProfitGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/FalseProfitSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/FusionMoaTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaCorpusBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaCorpusGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaCorpusSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaGrineerBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaGrineerGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/GradivusDilemmaGrineerSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/IcePlanetTrophyBronzeRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/IcePlanetTrophyGoldRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/IcePlanetTrophySilverRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventBaseTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventPewterTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/JadeShadowsEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MechEventTrophyBronzeRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MechEventTrophyGoldRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MechEventTrophySilverRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MechEventTrophyTerracottaRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MutalistIncursionBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MutalistIncursionGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/MutalistIncursionSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/OrokinMusicBoxRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/OrokinSabotageTrophyBronzeRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/OrokinSabotageTrophyGoldRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/OrokinSabotageTrophySilverRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ProjectSinisterBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ProjectSinisterClayTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ProjectSinisterGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ProjectSinisterSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/RailjackResearchTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/RathuumBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/RathuumClayTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/RathuumGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/RathuumSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ShipyardsEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ShipyardsEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ShipyardsEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/SlingStoneTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/SpyDroneTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/SurvivalEventBronzeTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/SurvivalEventGoldTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/SurvivalEventSilverTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoConDojoGhostTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoConDojoMoonTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoConDojoMountainTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoConDojoShadowTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoConDojoStormTrophyRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ThumperTrophyBronzeRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ThumperTrophyCrystalRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ThumperTrophyGoldRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/ThumperTrophySilverRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/CorpusPlaceables/GasTurbineConeRecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/NaturalPlaceables/CoralChunkARecipe", + "/Lotus/Levels/ClanDojo/ComponentPropRecipes/TennoPlaceables/TnoBeaconEmitterRecipe" +] diff --git a/static/webui/index.html b/static/webui/index.html index 7d3af19c..afd841cd 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -568,6 +568,10 @@ +
+ + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 6d20ca01..5f000ff4 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -127,6 +127,7 @@ dict = { cheats_unlockAllFlavourItems: `Alle Sammlerstücke freischalten`, cheats_unlockAllSkins: `Alle Skins freischalten`, cheats_unlockAllCapturaScenes: `Alle Photora-Szenen freischalten`, + cheats_unlockAllDecoRecipes: `[UNTRANSLATED] Unlock All Dojo Deco Recipes`, cheats_universalPolarityEverywhere: `Universelle Polarität überall`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Orokin Reaktor & Beschleuniger überall`, cheats_unlockExilusEverywhere: `Exilus-Adapter überall`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 12638068..700e8566 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -126,6 +126,7 @@ dict = { cheats_unlockAllFlavourItems: `Unlock All Flavor Items`, cheats_unlockAllSkins: `Unlock All Skins`, cheats_unlockAllCapturaScenes: `Unlock All Captura Scenes`, + cheats_unlockAllDecoRecipes: `Unlock All Dojo Deco Recipes`, cheats_universalPolarityEverywhere: `Universal Polarity Everywhere`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Potatoes Everywhere`, cheats_unlockExilusEverywhere: `Exilus Adapters Everywhere`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 6d619821..03807992 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -127,6 +127,7 @@ dict = { cheats_unlockAllFlavourItems: `Débloquer tous les Flavor Items`, cheats_unlockAllSkins: `Débloquer tous les skins`, cheats_unlockAllCapturaScenes: `Débloquer toutes les scènes captura`, + cheats_unlockAllDecoRecipes: `[UNTRANSLATED] Unlock All Dojo Deco Recipes`, cheats_universalPolarityEverywhere: `Polarités universelles partout`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Réacteurs et Catalyseurs partout`, cheats_unlockExilusEverywhere: `Adaptateurs Exilus partout`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 62ff74c7..2299f2c1 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -127,6 +127,7 @@ dict = { cheats_unlockAllFlavourItems: `Разблокировать все уникальные предметы`, cheats_unlockAllSkins: `Разблокировать все скины`, cheats_unlockAllCapturaScenes: `Разблокировать все сцены Каптуры`, + cheats_unlockAllDecoRecipes: `Разблокировать все рецепты декораций Дoдзё`, cheats_universalPolarityEverywhere: `Универсальная полярность везде`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Катализаторы везде`, cheats_unlockExilusEverywhere: `Адаптеры Эксилус везде`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 246d6dca..7598b005 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -127,6 +127,7 @@ dict = { cheats_unlockAllFlavourItems: `解锁所有装饰物品`, cheats_unlockAllSkins: `解锁所有外观`, cheats_unlockAllCapturaScenes: `解锁所有Captura场景`, + cheats_unlockAllDecoRecipes: `[UNTRANSLATED] Unlock All Dojo Deco Recipes`, cheats_universalPolarityEverywhere: `全局万用极性`, cheats_unlockDoubleCapacityPotatoesEverywhere: `全物品自带Orokin反应堆`, cheats_unlockExilusEverywhere: `全物品自带适配器`,