From c6acab6c11602fc07243c3ba3f5c630c08511079 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:02:23 +0200 Subject: [PATCH 1/4] feat: No Decoration Build Stage cheat Closes #1502 --- config.json.example | 1 + src/controllers/api/placeDecoInComponentController.ts | 3 ++- src/services/configService.ts | 1 + static/webui/index.html | 4 ++++ static/webui/translations/de.js | 1 + static/webui/translations/en.js | 1 + static/webui/translations/fr.js | 1 + static/webui/translations/ru.js | 1 + static/webui/translations/zh.js | 1 + 9 files changed, 13 insertions(+), 1 deletion(-) diff --git a/config.json.example b/config.json.example index 4e52c750..626d2d7b 100644 --- a/config.json.example +++ b/config.json.example @@ -34,6 +34,7 @@ "noVendorPurchaseLimits": true, "instantResourceExtractorDrones": false, "noDojoRoomBuildStage": false, + "noDecoBuildStage": false, "fastDojoRoomDestruction": false, "noDojoResearchCosts": false, "noDojoResearchTime": false, diff --git a/src/controllers/api/placeDecoInComponentController.ts b/src/controllers/api/placeDecoInComponentController.ts index 7dab5bbf..a70b07a1 100644 --- a/src/controllers/api/placeDecoInComponentController.ts +++ b/src/controllers/api/placeDecoInComponentController.ts @@ -13,6 +13,7 @@ import { GuildPermission } from "@/src/types/guildTypes"; import { RequestHandler } from "express"; import { Types } from "mongoose"; import { ExportDojoRecipes, ExportResources } from "warframe-public-export-plus"; +import { config } from "@/src/services/configService"; export const placeDecoInComponentController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); @@ -62,7 +63,7 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) = guild.VaultShipDecorations!.find(x => x.ItemType == itemType)!.ItemCount -= 1; } } - if (!meta || (meta.price == 0 && meta.ingredients.length == 0)) { + if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDecoBuildStage) { deco.CompletionTime = new Date(); } else if ( guild.AutoContributeFromVault && diff --git a/src/services/configService.ts b/src/services/configService.ts index 04c47d36..a13f81ad 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -39,6 +39,7 @@ interface IConfig { noVendorPurchaseLimits?: boolean; instantResourceExtractorDrones?: boolean; noDojoRoomBuildStage?: boolean; + noDecoBuildStage?: boolean; fastDojoRoomDestruction?: boolean; noDojoResearchCosts?: boolean; noDojoResearchTime?: boolean; diff --git a/static/webui/index.html b/static/webui/index.html index 6468d53a..a35b3b31 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -608,6 +608,10 @@ +
+ + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 51250542..57f50758 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -137,6 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`, cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`, cheats_noDojoRoomBuildStage: `Kein Dojo-Raum-Bauvorgang`, + cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, cheats_fastDojoRoomDestruction: `Schnelle Dojo-Raum-Zerstörung`, cheats_noDojoResearchCosts: `Keine Dojo-Forschungskosten`, cheats_noDojoResearchTime: `Keine Dojo-Forschungszeit`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 88466019..ec671d4b 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -136,6 +136,7 @@ dict = { cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`, cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`, + cheats_noDecoBuildStage: `No Decoration Build Stage`, cheats_fastDojoRoomDestruction: `Fast Dojo Room Destruction`, cheats_noDojoResearchCosts: `No Dojo Research Costs`, cheats_noDojoResearchTime: `No Dojo Research Time`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 2e119445..62c47fee 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -137,6 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`, cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`, + cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, cheats_fastDojoRoomDestruction: `[UNTRANSLATED] Fast Dojo Room Destruction`, cheats_noDojoResearchCosts: `Aucun coût de recherche (Dojo)`, cheats_noDojoResearchTime: `Aucun temps de recherche (Dojo)`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 1543b848..bbb468df 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -137,6 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`, cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`, cheats_noDojoRoomBuildStage: `Мгновенное Строительтво Комнат Додзё`, + cheats_noDecoBuildStage: `Мгновенное Строительтво Украшений`, cheats_fastDojoRoomDestruction: `Мгновенные Уничтожение Комнат Додзё`, cheats_noDojoResearchCosts: `Бесплатные Исследование Додзё`, cheats_noDojoResearchTime: `Мгновенные Исследование Додзё`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 423a47df..856ec742 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -137,6 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `即时资源采集无人机`, cheats_noDojoRoomBuildStage: `无视道场房间建造阶段`, + cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, cheats_fastDojoRoomDestruction: `快速拆除道场房间`, cheats_noDojoResearchCosts: `无视道场研究消耗`, cheats_noDojoResearchTime: `无视道场研究时间`, -- 2.47.2 From 4acb16e6d6bdc9acb877ed59fc94f783fa948156 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:29:40 +0200 Subject: [PATCH 2/4] exclude paintbot --- .../api/placeDecoInComponentController.ts | 61 +++++++++---------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/src/controllers/api/placeDecoInComponentController.ts b/src/controllers/api/placeDecoInComponentController.ts index a70b07a1..d8464b94 100644 --- a/src/controllers/api/placeDecoInComponentController.ts +++ b/src/controllers/api/placeDecoInComponentController.ts @@ -63,41 +63,38 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) = guild.VaultShipDecorations!.find(x => x.ItemType == itemType)!.ItemCount -= 1; } } - if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDecoBuildStage) { - deco.CompletionTime = new Date(); - } else if ( - guild.AutoContributeFromVault && - guild.VaultRegularCredits && - guild.VaultMiscItems && - deco.Type != "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco" - ) { - if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) { - let enoughMiscItems = true; - for (const ingredient of meta.ingredients) { - if ( - getVaultMiscItemCount(guild, ingredient.ItemType) < - scaleRequiredCount(guild.Tier, ingredient.ItemCount) - ) { - enoughMiscItems = false; - break; - } - } - if (enoughMiscItems) { - guild.VaultRegularCredits -= scaleRequiredCount(guild.Tier, meta.price); - deco.RegularCredits = scaleRequiredCount(guild.Tier, meta.price); - - deco.MiscItems = []; + if (deco.Type != "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco") { + if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDecoBuildStage) { + deco.CompletionTime = new Date(); + } else if (guild.AutoContributeFromVault && guild.VaultRegularCredits && guild.VaultMiscItems) { + if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) { + let enoughMiscItems = true; for (const ingredient of meta.ingredients) { - guild.VaultMiscItems.find(x => x.ItemType == ingredient.ItemType)!.ItemCount -= - scaleRequiredCount(guild.Tier, ingredient.ItemCount); - deco.MiscItems.push({ - ItemType: ingredient.ItemType, - ItemCount: scaleRequiredCount(guild.Tier, ingredient.ItemCount) - }); + if ( + getVaultMiscItemCount(guild, ingredient.ItemType) < + scaleRequiredCount(guild.Tier, ingredient.ItemCount) + ) { + enoughMiscItems = false; + break; + } } + if (enoughMiscItems) { + guild.VaultRegularCredits -= scaleRequiredCount(guild.Tier, meta.price); + deco.RegularCredits = scaleRequiredCount(guild.Tier, meta.price); - deco.CompletionTime = new Date(Date.now() + meta.time * 1000); - processDojoBuildMaterialsGathered(guild, meta); + deco.MiscItems = []; + for (const ingredient of meta.ingredients) { + guild.VaultMiscItems.find(x => x.ItemType == ingredient.ItemType)!.ItemCount -= + scaleRequiredCount(guild.Tier, ingredient.ItemCount); + deco.MiscItems.push({ + ItemType: ingredient.ItemType, + ItemCount: scaleRequiredCount(guild.Tier, ingredient.ItemCount) + }); + } + + deco.CompletionTime = new Date(Date.now() + meta.time * 1000); + processDojoBuildMaterialsGathered(guild, meta); + } } } } -- 2.47.2 From f28cfdda0eec19455f7bd45450404897010064cc Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:49:24 +0200 Subject: [PATCH 3/4] ensure guild xp is claimed with cheats as well --- src/controllers/api/placeDecoInComponentController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/controllers/api/placeDecoInComponentController.ts b/src/controllers/api/placeDecoInComponentController.ts index d8464b94..fee6edf1 100644 --- a/src/controllers/api/placeDecoInComponentController.ts +++ b/src/controllers/api/placeDecoInComponentController.ts @@ -66,6 +66,9 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) = if (deco.Type != "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco") { if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDecoBuildStage) { deco.CompletionTime = new Date(); + if (meta) { + processDojoBuildMaterialsGathered(guild, meta); + } } else if (guild.AutoContributeFromVault && guild.VaultRegularCredits && guild.VaultMiscItems) { if (guild.VaultRegularCredits >= scaleRequiredCount(guild.Tier, meta.price)) { let enoughMiscItems = true; -- 2.47.2 From d93c967d12fe88c1e870ce8594b02451a0c25127 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:51:48 +0200 Subject: [PATCH 4/4] more consistent naming --- src/controllers/api/placeDecoInComponentController.ts | 2 +- src/services/configService.ts | 2 +- static/webui/index.html | 4 ++-- static/webui/translations/de.js | 2 +- static/webui/translations/en.js | 2 +- static/webui/translations/fr.js | 2 +- static/webui/translations/ru.js | 2 +- static/webui/translations/zh.js | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/controllers/api/placeDecoInComponentController.ts b/src/controllers/api/placeDecoInComponentController.ts index fee6edf1..cf50a90b 100644 --- a/src/controllers/api/placeDecoInComponentController.ts +++ b/src/controllers/api/placeDecoInComponentController.ts @@ -64,7 +64,7 @@ export const placeDecoInComponentController: RequestHandler = async (req, res) = } } if (deco.Type != "/Lotus/Objects/Tenno/Props/TnoPaintBotDojoDeco") { - if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDecoBuildStage) { + if (!meta || (meta.price == 0 && meta.ingredients.length == 0) || config.noDojoDecoBuildStage) { deco.CompletionTime = new Date(); if (meta) { processDojoBuildMaterialsGathered(guild, meta); diff --git a/src/services/configService.ts b/src/services/configService.ts index a13f81ad..86461644 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -39,7 +39,7 @@ interface IConfig { noVendorPurchaseLimits?: boolean; instantResourceExtractorDrones?: boolean; noDojoRoomBuildStage?: boolean; - noDecoBuildStage?: boolean; + noDojoDecoBuildStage?: boolean; fastDojoRoomDestruction?: boolean; noDojoResearchCosts?: boolean; noDojoResearchTime?: boolean; diff --git a/static/webui/index.html b/static/webui/index.html index a35b3b31..b567687e 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -609,8 +609,8 @@
- - + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 57f50758..cf1268de 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -137,7 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`, cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`, cheats_noDojoRoomBuildStage: `Kein Dojo-Raum-Bauvorgang`, - cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, + cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`, cheats_fastDojoRoomDestruction: `Schnelle Dojo-Raum-Zerstörung`, cheats_noDojoResearchCosts: `Keine Dojo-Forschungskosten`, cheats_noDojoResearchTime: `Keine Dojo-Forschungszeit`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index ec671d4b..12638068 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -136,7 +136,7 @@ dict = { cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`, cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`, - cheats_noDecoBuildStage: `No Decoration Build Stage`, + cheats_noDojoDecoBuildStage: `No Dojo Deco Build Stage`, cheats_fastDojoRoomDestruction: `Fast Dojo Room Destruction`, cheats_noDojoResearchCosts: `No Dojo Research Costs`, cheats_noDojoResearchTime: `No Dojo Research Time`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 62c47fee..6d619821 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -137,7 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`, cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`, - cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, + cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`, cheats_fastDojoRoomDestruction: `[UNTRANSLATED] Fast Dojo Room Destruction`, cheats_noDojoResearchCosts: `Aucun coût de recherche (Dojo)`, cheats_noDojoResearchTime: `Aucun temps de recherche (Dojo)`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index bbb468df..62ff74c7 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -137,7 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`, cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`, cheats_noDojoRoomBuildStage: `Мгновенное Строительтво Комнат Додзё`, - cheats_noDecoBuildStage: `Мгновенное Строительтво Украшений`, + cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`, cheats_fastDojoRoomDestruction: `Мгновенные Уничтожение Комнат Додзё`, cheats_noDojoResearchCosts: `Бесплатные Исследование Додзё`, cheats_noDojoResearchTime: `Мгновенные Исследование Додзё`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 856ec742..246d6dca 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -137,7 +137,7 @@ dict = { cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`, cheats_instantResourceExtractorDrones: `即时资源采集无人机`, cheats_noDojoRoomBuildStage: `无视道场房间建造阶段`, - cheats_noDecoBuildStage: `[UNTRANSLATED] No Decoration Build Stage`, + cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`, cheats_fastDojoRoomDestruction: `快速拆除道场房间`, cheats_noDojoResearchCosts: `无视道场研究消耗`, cheats_noDojoResearchTime: `无视道场研究时间`, -- 2.47.2