From 97d482f5a15c5f9f7063e35340374292468ad324 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 25 Jun 2025 19:52:47 +0200 Subject: [PATCH 1/3] feat(webui): Add Missing Helminth Recipes Closes #1984 --- .../addMissingHelminthBlueprintsController.ts | 24 +++++++++++++++++++ src/routes/custom.ts | 2 ++ static/webui/index.html | 1 + static/webui/script.js | 6 +++++ static/webui/translations/de.js | 1 + static/webui/translations/en.js | 1 + static/webui/translations/es.js | 1 + static/webui/translations/fr.js | 1 + static/webui/translations/ru.js | 1 + static/webui/translations/zh.js | 1 + 10 files changed, 39 insertions(+) create mode 100644 src/controllers/custom/addMissingHelminthBlueprintsController.ts diff --git a/src/controllers/custom/addMissingHelminthBlueprintsController.ts b/src/controllers/custom/addMissingHelminthBlueprintsController.ts new file mode 100644 index 00000000..4de501fe --- /dev/null +++ b/src/controllers/custom/addMissingHelminthBlueprintsController.ts @@ -0,0 +1,24 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory, addRecipes } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; +import { ExportRecipes } from "warframe-public-export-plus"; + +export const addMissingHelminthBlueprintsController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId, "Recipes"); + const allHelminthRecipes = Object.keys(ExportRecipes).filter( + key => ExportRecipes[key].secretIngredientAction === "SIA_WARFRAME_ABILITY" + ); + const inventoryHelminthRecipes = inventory.Recipes.filter(recipe => + recipe.ItemType.startsWith("/Lotus/Types/Recipes/AbilityOverrides/") + ).map(recipe => recipe.ItemType); + + const missingHelminthRecipes = allHelminthRecipes + .filter(key => !inventoryHelminthRecipes.includes(key)) + .map(ItemType => ({ ItemType, ItemCount: 1 })); + + addRecipes(inventory, missingHelminthRecipes); + + await inventory.save(); + res.end(); +}; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 35d89d4d..4c6a52c0 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -13,6 +13,7 @@ import { unlockAllIntrinsicsController } from "@/src/controllers/custom/unlockAl import { addMissingMaxRankModsController } from "@/src/controllers/custom/addMissingMaxRankModsController"; import { webuiFileChangeDetectedController } from "@/src/controllers/custom/webuiFileChangeDetectedController"; import { completeAllMissionsController } from "@/src/controllers/custom/completeAllMissionsController"; +import { addMissingHelminthBlueprintsController } from "@/src/controllers/custom/addMissingHelminthBlueprintsController"; import { createAccountController } from "@/src/controllers/custom/createAccountController"; import { createMessageController } from "@/src/controllers/custom/createMessageController"; @@ -42,6 +43,7 @@ customRouter.get("/unlockAllIntrinsics", unlockAllIntrinsicsController); customRouter.get("/addMissingMaxRankMods", addMissingMaxRankModsController); customRouter.get("/webuiFileChangeDetected", webuiFileChangeDetectedController); customRouter.get("/completeAllMissions", completeAllMissionsController); +customRouter.get("/addMissingHelminthBlueprintsController", addMissingHelminthBlueprintsController); customRouter.post("/createAccount", createAccountController); customRouter.post("/createMessage", createMessageController); diff --git a/static/webui/index.html b/static/webui/index.html index 3d706ee9..f284382c 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -442,6 +442,7 @@ +
diff --git a/static/webui/script.js b/static/webui/script.js index c6c6727b..190a10de 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1449,6 +1449,12 @@ function addMissingEquipment(categories) { } } +async function addMissingHelminthRecipes() { + await revalidateAuthz(); + await fetch("/custom/addMissingHelminthBlueprintsController?" + window.authz); + updateInventory(); +} + function addMissingEvolutionProgress() { const requests = []; document.querySelectorAll("#datalist-EvolutionProgress option").forEach(elm => { diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 08b02c78..12a5d2ee 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -93,6 +93,7 @@ dict = { inventory_bulkAddSentinels: `Fehlende Wächter hinzufügen`, inventory_bulkAddSentinelWeapons: `Fehlende Wächter-Waffen hinzufügen`, inventory_bulkAddEvolutionProgress: `Fehlende Incarnon-Entwicklungsfortschritte hinzufügen`, + inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Alle Warframes auf Max. Rang`, inventory_bulkRankUpWeapons: `Alle Waffen auf Max. Rang`, inventory_bulkRankUpSpaceSuits: `Alle Archwings auf Max. Rang`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index a97ee549..41ac29a4 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -92,6 +92,7 @@ dict = { inventory_bulkAddSentinels: `Add Missing Sentinels`, inventory_bulkAddSentinelWeapons: `Add Missing Sentinel Weapons`, inventory_bulkAddEvolutionProgress: `Add Missing Incarnon Evolution Progress`, + inventory_bulkAddMissingHelminthRecipes: `Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Max Rank All Warframes`, inventory_bulkRankUpWeapons: `Max Rank All Weapons`, inventory_bulkRankUpSpaceSuits: `Max Rank All Archwings`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index a4e798d7..e32e07d8 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -93,6 +93,7 @@ dict = { inventory_bulkAddSentinels: `Agregar centinelas faltantes`, inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`, inventory_bulkAddEvolutionProgress: `Completar el progreso de evolución Incarnon faltante`, + inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`, inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`, inventory_bulkRankUpSpaceSuits: `Maximizar rango de todos los Archwings`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 26ead631..df340d17 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -93,6 +93,7 @@ dict = { inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`, inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`, inventory_bulkAddEvolutionProgress: `Ajouter les évolutions Incarnon manquantes`, + inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Toutes les Warframes au rang max`, inventory_bulkRankUpWeapons: `Toutes les armes au rang max`, inventory_bulkRankUpSpaceSuits: `Tous les Archwings au rang max`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 5b353690..1a3457cb 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -93,6 +93,7 @@ dict = { inventory_bulkAddSentinels: `Добавить отсутствующих стражей`, inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие стражей`, inventory_bulkAddEvolutionProgress: `Добавить отсуствующий прогресс эволюции Инкарнонов`, + inventory_bulkAddMissingHelminthRecipes: `Добавить отсутствующее рецепты Гельминта`, inventory_bulkRankUpSuits: `Максимальный ранг всех варфреймов`, inventory_bulkRankUpWeapons: `Максимальный ранг всего оружия`, inventory_bulkRankUpSpaceSuits: `Максимальный ранг всех арчвингов`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 04463ace..617e7085 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -93,6 +93,7 @@ dict = { inventory_bulkAddSentinels: `添加缺失守护`, inventory_bulkAddSentinelWeapons: `添加缺失守护武器`, inventory_bulkAddEvolutionProgress: `添加缺失的灵化之源`, + inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `所有战甲升满级`, inventory_bulkRankUpWeapons: `所有武器升满级`, inventory_bulkRankUpSpaceSuits: `所有Archwing升满级`, -- 2.47.2 From 83d91bd9f67b070a881cd58d8b022a73da02bbcc Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Wed, 25 Jun 2025 20:04:48 +0200 Subject: [PATCH 2/3] move to cheats tab --- src/routes/custom.ts | 2 +- static/webui/index.html | 2 +- static/webui/script.js | 2 +- static/webui/translations/de.js | 2 +- static/webui/translations/en.js | 2 +- static/webui/translations/es.js | 2 +- static/webui/translations/fr.js | 2 +- static/webui/translations/ru.js | 2 +- static/webui/translations/zh.js | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/routes/custom.ts b/src/routes/custom.ts index 4c6a52c0..5ed4906e 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -43,7 +43,7 @@ customRouter.get("/unlockAllIntrinsics", unlockAllIntrinsicsController); customRouter.get("/addMissingMaxRankMods", addMissingMaxRankModsController); customRouter.get("/webuiFileChangeDetected", webuiFileChangeDetectedController); customRouter.get("/completeAllMissions", completeAllMissionsController); -customRouter.get("/addMissingHelminthBlueprintsController", addMissingHelminthBlueprintsController); +customRouter.get("/addMissingHelminthBlueprints", addMissingHelminthBlueprintsController); customRouter.post("/createAccount", createAccountController); customRouter.post("/createMessage", createMessageController); diff --git a/static/webui/index.html b/static/webui/index.html index f284382c..b7811335 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -442,7 +442,6 @@ -
@@ -795,6 +794,7 @@ +
diff --git a/static/webui/script.js b/static/webui/script.js index 190a10de..6b903f08 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1451,7 +1451,7 @@ function addMissingEquipment(categories) { async function addMissingHelminthRecipes() { await revalidateAuthz(); - await fetch("/custom/addMissingHelminthBlueprintsController?" + window.authz); + await fetch("/custom/addMissingHelminthBlueprints?" + window.authz); updateInventory(); } diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 12a5d2ee..a56103b6 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -93,7 +93,6 @@ dict = { inventory_bulkAddSentinels: `Fehlende Wächter hinzufügen`, inventory_bulkAddSentinelWeapons: `Fehlende Wächter-Waffen hinzufügen`, inventory_bulkAddEvolutionProgress: `Fehlende Incarnon-Entwicklungsfortschritte hinzufügen`, - inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Alle Warframes auf Max. Rang`, inventory_bulkRankUpWeapons: `Alle Waffen auf Max. Rang`, inventory_bulkRankUpSpaceSuits: `Alle Archwings auf Max. Rang`, @@ -182,6 +181,7 @@ dict = { cheats_account: `Account`, cheats_unlockAllFocusSchools: `Alle Fokus-Schulen freischalten`, cheats_helminthUnlockAll: `Helminth vollständig aufleveln`, + cheats_addMissingSubsumedAbilities: `[UNTRANSLATED] Add Missing Subsumed Abilities`, cheats_intrinsicsUnlockAll: `Alle Inhärenzen auf Max. Rang`, cheats_changeSupportedSyndicate: `Unterstütztes Syndikat`, cheats_changeButton: `Ändern`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 41ac29a4..36d38301 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -92,7 +92,6 @@ dict = { inventory_bulkAddSentinels: `Add Missing Sentinels`, inventory_bulkAddSentinelWeapons: `Add Missing Sentinel Weapons`, inventory_bulkAddEvolutionProgress: `Add Missing Incarnon Evolution Progress`, - inventory_bulkAddMissingHelminthRecipes: `Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Max Rank All Warframes`, inventory_bulkRankUpWeapons: `Max Rank All Weapons`, inventory_bulkRankUpSpaceSuits: `Max Rank All Archwings`, @@ -181,6 +180,7 @@ dict = { cheats_account: `Account`, cheats_unlockAllFocusSchools: `Unlock All Focus Schools`, cheats_helminthUnlockAll: `Fully Level Up Helminth`, + cheats_addMissingSubsumedAbilities: `Add Missing Subsumed Abilities`, cheats_intrinsicsUnlockAll: `Max Rank All Intrinsics`, cheats_changeSupportedSyndicate: `Supported syndicate`, cheats_changeButton: `Change`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index e32e07d8..3fbb7bf1 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -93,7 +93,6 @@ dict = { inventory_bulkAddSentinels: `Agregar centinelas faltantes`, inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`, inventory_bulkAddEvolutionProgress: `Completar el progreso de evolución Incarnon faltante`, - inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`, inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`, inventory_bulkRankUpSpaceSuits: `Maximizar rango de todos los Archwings`, @@ -182,6 +181,7 @@ dict = { cheats_account: `Cuenta`, cheats_unlockAllFocusSchools: `Desbloquear todas las escuelas de enfoque`, cheats_helminthUnlockAll: `Subir al máximo el Helminto`, + cheats_addMissingSubsumedAbilities: `[UNTRANSLATED] Add Missing Subsumed Abilities`, cheats_intrinsicsUnlockAll: `Maximizar todos los intrínsecos`, cheats_changeSupportedSyndicate: `Sindicatos disponibles`, cheats_changeButton: `Cambiar`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index df340d17..9aac6d17 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -93,7 +93,6 @@ dict = { inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`, inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`, inventory_bulkAddEvolutionProgress: `Ajouter les évolutions Incarnon manquantes`, - inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `Toutes les Warframes au rang max`, inventory_bulkRankUpWeapons: `Toutes les armes au rang max`, inventory_bulkRankUpSpaceSuits: `Tous les Archwings au rang max`, @@ -182,6 +181,7 @@ dict = { cheats_account: `Compte`, cheats_unlockAllFocusSchools: `Débloquer toutes les écoles de focus`, cheats_helminthUnlockAll: `Helminth niveau max`, + cheats_addMissingSubsumedAbilities: `[UNTRANSLATED] Add Missing Subsumed Abilities`, cheats_intrinsicsUnlockAll: `Inhérences niveau max`, cheats_changeSupportedSyndicate: `Allégeance`, cheats_changeButton: `Changer`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 1a3457cb..26fef974 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -93,7 +93,6 @@ dict = { inventory_bulkAddSentinels: `Добавить отсутствующих стражей`, inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие стражей`, inventory_bulkAddEvolutionProgress: `Добавить отсуствующий прогресс эволюции Инкарнонов`, - inventory_bulkAddMissingHelminthRecipes: `Добавить отсутствующее рецепты Гельминта`, inventory_bulkRankUpSuits: `Максимальный ранг всех варфреймов`, inventory_bulkRankUpWeapons: `Максимальный ранг всего оружия`, inventory_bulkRankUpSpaceSuits: `Максимальный ранг всех арчвингов`, @@ -182,6 +181,7 @@ dict = { cheats_account: `Аккаунт`, cheats_unlockAllFocusSchools: `Разблокировать все школы фокуса`, cheats_helminthUnlockAll: `Полностью улучшить Гельминта`, + cheats_addMissingSubsumedAbilities: `Добавить отсутствующие поглощённые способности`, cheats_intrinsicsUnlockAll: `Полностью улучшить Модуляры`, cheats_changeSupportedSyndicate: `Поддерживаемый синдикат`, cheats_changeButton: `Изменить`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 617e7085..e0ba1ff1 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -93,7 +93,6 @@ dict = { inventory_bulkAddSentinels: `添加缺失守护`, inventory_bulkAddSentinelWeapons: `添加缺失守护武器`, inventory_bulkAddEvolutionProgress: `添加缺失的灵化之源`, - inventory_bulkAddMissingHelminthRecipes: `[UNTRANSLATED] Add Missing Helminth Recipes`, inventory_bulkRankUpSuits: `所有战甲升满级`, inventory_bulkRankUpWeapons: `所有武器升满级`, inventory_bulkRankUpSpaceSuits: `所有Archwing升满级`, @@ -182,6 +181,7 @@ dict = { cheats_account: `账户`, cheats_unlockAllFocusSchools: `解锁所有专精学派`, cheats_helminthUnlockAll: `完全升级Helminth`, + cheats_addMissingSubsumedAbilities: `[UNTRANSLATED] Add Missing Subsumed Abilities`, cheats_intrinsicsUnlockAll: `所有内源之力最大等级`, cheats_changeSupportedSyndicate: `支持的集团`, cheats_changeButton: `更改`, -- 2.47.2 From 84c590b464c54ae3eca172c9656eab2d2b179777 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 26 Jun 2025 05:17:55 +0200 Subject: [PATCH 3/3] details --- static/webui/index.html | 2 +- static/webui/script.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/static/webui/index.html b/static/webui/index.html index b7811335..caf7be01 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -794,7 +794,7 @@ - + diff --git a/static/webui/script.js b/static/webui/script.js index 6b903f08..209d727e 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -1452,7 +1452,6 @@ function addMissingEquipment(categories) { async function addMissingHelminthRecipes() { await revalidateAuthz(); await fetch("/custom/addMissingHelminthBlueprints?" + window.authz); - updateInventory(); } function addMissingEvolutionProgress() { -- 2.47.2