From c8ae3d688f6dd817aa22e939500b0f40462f5564 Mon Sep 17 00:00:00 2001
From: Sainan <63328889+Sainan@users.noreply.github.com>
Date: Mon, 14 Apr 2025 07:14:15 -0700
Subject: [PATCH] feat: noResourceExtractorDronesDamage cheat (#1613)
Closes #1609
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1613
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
---
 config.json.example                     | 1 +
 src/controllers/api/dronesController.ts | 2 +-
 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/es.js         | 1 +
 static/webui/translations/fr.js         | 1 +
 static/webui/translations/ru.js         | 1 +
 static/webui/translations/zh.js         | 1 +
 10 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/config.json.example b/config.json.example
index a813d093..907f8af7 100644
--- a/config.json.example
+++ b/config.json.example
@@ -34,6 +34,7 @@
   "noVendorPurchaseLimits": true,
   "noKimCooldowns": false,
   "instantResourceExtractorDrones": false,
+  "noResourceExtractorDronesDamage": false,
   "noDojoRoomBuildStage": false,
   "noDecoBuildStage": false,
   "fastDojoRoomDestruction": false,
diff --git a/src/controllers/api/dronesController.ts b/src/controllers/api/dronesController.ts
index 97e0d478..f319773b 100644
--- a/src/controllers/api/dronesController.ts
+++ b/src/controllers/api/dronesController.ts
@@ -55,7 +55,7 @@ export const dronesController: RequestHandler = async (req, res) => {
             ? new Date()
             : new Date(Date.now() + getRandomInt(3 * 3600 * 1000, 4 * 3600 * 1000));
         drone.PendingDamage =
-            Math.random() < system.damageChance
+            !config.noResourceExtractorDronesDamage && Math.random() < system.damageChance
                 ? getRandomInt(system.droneDamage.minValue, system.droneDamage.maxValue)
                 : 0;
         const resource = getRandomWeightedRewardUc(system.resources, droneMeta.probabilities)!;
diff --git a/src/services/configService.ts b/src/services/configService.ts
index c584a1fb..88a6634a 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -40,6 +40,7 @@ interface IConfig {
     noVendorPurchaseLimits?: boolean;
     noKimCooldowns?: boolean;
     instantResourceExtractorDrones?: boolean;
+    noResourceExtractorDronesDamage?: boolean;
     noDojoRoomBuildStage?: boolean;
     noDojoDecoBuildStage?: boolean;
     fastDojoRoomDestruction?: boolean;
diff --git a/static/webui/index.html b/static/webui/index.html
index 38eb3e54..d4a900c3 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -615,6 +615,10 @@
                                         
                                         
                                     
+                                    
+                                        
+                                        
+                                    
                                     
                                         
                                         
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index 31f9dc32..047b3b7d 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -139,6 +139,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
     cheats_noKimCooldowns: `Keine Wartezeit bei KIM`,
     cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`,
+    cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `Kein Dojo-Raum-Bauvorgang`,
     cheats_noDojoDecoBuildStage: `Kein Dojo-Deko-Bauvorgang`,
     cheats_fastDojoRoomDestruction: `Schnelle Dojo-Raum-Zerstörung`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index 3c9db66f..01a97404 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -138,6 +138,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
     cheats_noKimCooldowns: `No KIM Cooldowns`,
     cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`,
+    cheats_noResourceExtractorDronesDamage: `No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`,
     cheats_noDojoDecoBuildStage: `No Dojo Deco Build Stage`,
     cheats_fastDojoRoomDestruction: `Fast Dojo Room Destruction`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index e67352cb..b918d6c0 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -139,6 +139,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
     cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
     cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
+    cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `Sin etapa de construcción de sala del dojo`,
     cheats_noDojoDecoBuildStage: `Sin etapa de construcción de decoraciones del dojo`,
     cheats_fastDojoRoomDestruction: `Destrucción rápida de salas del dojo`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 90188be4..e2ebd5e7 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -139,6 +139,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
     cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
     cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`,
+    cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`,
     cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`,
     cheats_fastDojoRoomDestruction: `[UNTRANSLATED] Fast Dojo Room Destruction`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index 8682cca4..1def5df7 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -139,6 +139,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`,
     cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
     cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
+    cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `Мгновенное Строительтво Комнат Додзё`,
     cheats_noDojoDecoBuildStage: `Мгновенное Строительтво Декораций Додзё`,
     cheats_fastDojoRoomDestruction: `Мгновенные Уничтожение Комнат Додзё`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index 2f720067..1ee2ea4c 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -139,6 +139,7 @@ dict = {
     cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
     cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
     cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
+    cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
     cheats_noDojoRoomBuildStage: `无视道场房间建造阶段`,
     cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`,
     cheats_fastDojoRoomDestruction: `快速拆除道场房间`,