diff --git a/config.json.example b/config.json.example
index c464ad1a..fdf59b35 100644
--- a/config.json.example
+++ b/config.json.example
@@ -20,6 +20,7 @@
"infiniteRegalAya": false,
"infiniteHelminthMaterials": false,
"claimingBlueprintRefundsIngredients": false,
+ "dontSubtractVoidTraces": false,
"dontSubtractConsumables": false,
"unlockAllShipFeatures": false,
"unlockAllShipDecorations": false,
diff --git a/src/controllers/api/projectionManagerController.ts b/src/controllers/api/projectionManagerController.ts
index 1f2554fb..cd209942 100644
--- a/src/controllers/api/projectionManagerController.ts
+++ b/src/controllers/api/projectionManagerController.ts
@@ -2,13 +2,16 @@ import { RequestHandler } from "express";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { addMiscItems, getInventory } from "@/src/services/inventoryService";
import { ExportRelics, IRelic } from "warframe-public-export-plus";
+import { config } from "@/src/services/configService";
export const projectionManagerController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
const inventory = await getInventory(accountId);
const request = JSON.parse(String(req.body)) as IProjectionUpgradeRequest;
const [era, category, currentQuality] = parseProjection(request.projectionType);
- const upgradeCost = (request.qualityTag - qualityKeywordToNumber[currentQuality]) * 25;
+ const upgradeCost = config.dontSubtractVoidTraces
+ ? 0
+ : (request.qualityTag - qualityKeywordToNumber[currentQuality]) * 25;
const newProjectionType = findProjection(era, category, qualityNumberToKeyword[request.qualityTag]);
addMiscItems(inventory, [
{
diff --git a/src/services/configService.ts b/src/services/configService.ts
index 8d3206ef..f17679d7 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -25,6 +25,7 @@ interface IConfig {
infiniteRegalAya?: boolean;
infiniteHelminthMaterials?: boolean;
claimingBlueprintRefundsIngredients?: boolean;
+ dontSubtractVoidTraces?: boolean;
dontSubtractConsumables?: boolean;
unlockAllShipFeatures?: boolean;
unlockAllShipDecorations?: boolean;
diff --git a/static/webui/index.html b/static/webui/index.html
index fae24828..be72a678 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -598,6 +598,10 @@
+
+
+
+
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index 156063d2..3a02c037 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -132,6 +132,7 @@ dict = {
cheats_infiniteRegalAya: `Unendlich Reines Aya`,
cheats_infiniteHelminthMaterials: `Unendlich Helminth-Materialien`,
cheats_claimingBlueprintRefundsIngredients: `Fertige Blaupausen erstatten Ressourcen zurück`,
+ cheats_dontSubtractVoidTraces: `[UNTRANSLATED] Don't Subtract Void Traces`,
cheats_dontSubtractConsumables: `Verbrauchsgegenstände (Ausrüstung) nicht verbrauchen`,
cheats_unlockAllShipFeatures: `Alle Schiffs-Funktionen freischalten`,
cheats_unlockAllShipDecorations: `Alle Schiffsdekorationen freischalten`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index 9dfeb21a..a8f8e858 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -131,6 +131,7 @@ dict = {
cheats_infiniteRegalAya: `Infinite Regal Aya`,
cheats_infiniteHelminthMaterials: `Infinite Helminth Materials`,
cheats_claimingBlueprintRefundsIngredients: `Claiming Blueprint Refunds Ingredients`,
+ cheats_dontSubtractVoidTraces: `Don't Subtract Void Traces`,
cheats_dontSubtractConsumables: `Don't Subtract Consumables`,
cheats_unlockAllShipFeatures: `Unlock All Ship Features`,
cheats_unlockAllShipDecorations: `Unlock All Ship Decorations`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index 83cdc5fb..75757b7d 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -132,6 +132,7 @@ dict = {
cheats_infiniteRegalAya: `Aya Real infinita`,
cheats_infiniteHelminthMaterials: `Materiales Helminto infinitos`,
cheats_claimingBlueprintRefundsIngredients: `Reclamar ingredientes devueltos por planos`,
+ cheats_dontSubtractVoidTraces: `[UNTRANSLATED] Don't Subtract Void Traces`,
cheats_dontSubtractConsumables: `No restar consumibles`,
cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`,
cheats_unlockAllShipDecorations: `Desbloquear todas las decoraciones de nave`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 9253bfff..63bdda1c 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -132,6 +132,7 @@ dict = {
cheats_infiniteRegalAya: `Aya Raffiné infini`,
cheats_infiniteHelminthMaterials: `Ressources d'Helminth infinies`,
cheats_claimingBlueprintRefundsIngredients: `[UNTRANSLATED] Claiming Blueprint Refunds Ingredients`,
+ cheats_dontSubtractVoidTraces: `[UNTRANSLATED] Don't Subtract Void Traces`,
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`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index a2bb6354..aa25b6a9 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -132,6 +132,7 @@ dict = {
cheats_infiniteRegalAya: `Бесконечная Королевская Айя`,
cheats_infiniteHelminthMaterials: `Бесконечные Выделения Гельминта`,
cheats_claimingBlueprintRefundsIngredients: `[UNTRANSLATED] Claiming Blueprint Refunds Ingredients`,
+ cheats_dontSubtractVoidTraces: `[UNTRANSLATED] Don't Subtract Void Traces`,
cheats_dontSubtractConsumables: `Не уменьшать количество расходников`,
cheats_unlockAllShipFeatures: `Разблокировать все функции корабля`,
cheats_unlockAllShipDecorations: `Разблокировать все украшения корабля`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index a242891a..8f5077a7 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -132,6 +132,7 @@ dict = {
cheats_infiniteRegalAya: `无限御品阿耶`,
cheats_infiniteHelminthMaterials: `无限Helminth材料`,
cheats_claimingBlueprintRefundsIngredients: `[UNTRANSLATED] Claiming Blueprint Refunds Ingredients`,
+ cheats_dontSubtractVoidTraces: `[UNTRANSLATED] Don't Subtract Void Traces`,
cheats_dontSubtractConsumables: `[UNTRANSLATED] Don't Subtract Consumables`,
cheats_unlockAllShipFeatures: `解锁所有飞船功能`,
cheats_unlockAllShipDecorations: `解锁所有飞船装饰`,