From 4d4f885c8e468dfbf72efeb2973b58b7ac212d05 Mon Sep 17 00:00:00 2001
From: Sainan <63328889+Sainan@users.noreply.github.com>
Date: Sat, 26 Apr 2025 11:55:45 -0700
Subject: [PATCH] feat: dontSubtractConsumables cheat (#1857)
Closes #1838
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1857
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/services/configService.ts                 | 1 +
 src/services/missionInventoryUpdateService.ts | 9 ++++++++-
 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, 20 insertions(+), 1 deletion(-)
diff --git a/config.json.example b/config.json.example
index 32562400..4eb30783 100644
--- a/config.json.example
+++ b/config.json.example
@@ -19,6 +19,7 @@
   "infiniteEndo": false,
   "infiniteRegalAya": false,
   "infiniteHelminthMaterials": false,
+  "dontSubtractConsumables": false,
   "unlockAllShipFeatures": false,
   "unlockAllShipDecorations": false,
   "unlockAllFlavourItems": false,
diff --git a/src/services/configService.ts b/src/services/configService.ts
index 24707bd5..3fe35bcb 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -24,6 +24,7 @@ interface IConfig {
     infiniteEndo?: boolean;
     infiniteRegalAya?: boolean;
     infiniteHelminthMaterials?: boolean;
+    dontSubtractConsumables?: boolean;
     unlockAllShipFeatures?: boolean;
     unlockAllShipDecorations?: boolean;
     unlockAllFlavourItems?: boolean;
diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts
index 2283a819..e758bd7f 100644
--- a/src/services/missionInventoryUpdateService.ts
+++ b/src/services/missionInventoryUpdateService.ts
@@ -266,7 +266,14 @@ export const addMissionInventoryUpdates = async (
                 addMiscItems(inventory, value);
                 break;
             case "Consumables":
-                addConsumables(inventory, value);
+                if (config.dontSubtractConsumables) {
+                    addConsumables(
+                        inventory,
+                        value.filter(x => x.ItemCount > 0)
+                    );
+                } else {
+                    addConsumables(inventory, value);
+                }
                 break;
             case "Recipes":
                 addRecipes(inventory, value);
diff --git a/static/webui/index.html b/static/webui/index.html
index 1d9f3550..d01d49ec 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -593,6 +593,10 @@
                                         
                                         
                                     
+                                    
+                                        
+                                        
+                                    
                                     
                                         
                                         
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index b0cbc3e2..47291541 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -133,6 +133,7 @@ dict = {
     cheats_infiniteEndo: `Unendlich Endo`,
     cheats_infiniteRegalAya: `Unendlich Reines Aya`,
     cheats_infiniteHelminthMaterials: `Unendlich Helminth-Materialien`,
+    cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `Alle Schiffs-Funktionen freischalten`,
     cheats_unlockAllShipDecorations: `Alle Schiffsdekorationen freischalten`,
     cheats_unlockAllFlavourItems: `Alle 
Sammlerstücke freischalten`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index 3797c6d0..3fe369a7 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -132,6 +132,7 @@ dict = {
     cheats_infiniteEndo: `Infinite Endo`,
     cheats_infiniteRegalAya: `Infinite Regal Aya`,
     cheats_infiniteHelminthMaterials: `Infinite Helminth Materials`,
+    cheats_dontSubtractConsumables: `Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `Unlock All Ship Features`,
     cheats_unlockAllShipDecorations: `Unlock All Ship Decorations`,
     cheats_unlockAllFlavourItems: `Unlock All 
Flavor Items`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index 3770e988..a2b29f0c 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -133,6 +133,7 @@ dict = {
     cheats_infiniteEndo: `Endo infinito`,
     cheats_infiniteRegalAya: `Aya Real infinita`,
     cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`,
+    cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`,
     cheats_unlockAllShipDecorations: `Desbloquear todas las decoraciones de nave`,
     cheats_unlockAllFlavourItems: `Desbloquear todos los 
ítems estéticos`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 31e3cfad..4f2bead1 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -133,6 +133,7 @@ dict = {
     cheats_infiniteEndo: `Endo infini`,
     cheats_infiniteRegalAya: `Aya Raffiné infini`,
     cheats_infiniteHelminthMaterials: `Ressources d'Helminth infinies`,
+    cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `Débloquer tous les segments du vaisseau`,
     cheats_unlockAllShipDecorations: `Débloquer toutes les décorations du vaisseau`,
     cheats_unlockAllFlavourItems: `Débloquer tous les 
Flavor Items`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index 72b38741..4a4b658d 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -133,6 +133,7 @@ dict = {
     cheats_infiniteEndo: `Бесконечное эндо`,
     cheats_infiniteRegalAya: `Бесконечная Королевская Айя`,
     cheats_infiniteHelminthMaterials: `Бесконечные Выделения Гельминта`,
+    cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `Разблокировать все функции корабля`,
     cheats_unlockAllShipDecorations: `Разблокировать все украшения корабля`,
     cheats_unlockAllFlavourItems: `Разблокировать все 
уникальные предметы`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index dd2752a6..c7d17e67 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -133,6 +133,7 @@ dict = {
     cheats_infiniteEndo: `无限内融核心`,
     cheats_infiniteRegalAya: `无限御品阿耶`,
     cheats_infiniteHelminthMaterials: `无限Helminth材料`,
+    cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
     cheats_unlockAllShipFeatures: `解锁所有飞船功能`,
     cheats_unlockAllShipDecorations: `解锁所有飞船装饰`,
     cheats_unlockAllFlavourItems: `解锁所有
装饰物品`,