From a9f994ea4c24c43e7b51006af326c0b48118ce42 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Sat, 27 Sep 2025 21:59:41 +0200 Subject: [PATCH] readd `unlockAllSkins` as account cheat --- src/controllers/api/inventoryController.ts | 47 +++++++++++++++------- src/types/inventoryTypes/inventoryTypes.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/uk.js | 1 + static/webui/translations/zh.js | 1 + 10 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 8e80e105..86a8d7b1 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -334,28 +334,45 @@ export const getInventoryResponse = async ( }); } - for (const key of equipmentKeys) { - if (key in inventoryResponse) { - for (const equipment of inventoryResponse[key]) { - equipment.Configs.forEach(config => { - if (config.Skins) processSkins(config.Skins, inventoryResponse.WeaponSkins, equipment.ItemType); + if (inventory.unlockAllSkins) { + const missingWeaponSkins = new Set(Object.keys(ExportCustoms)); + inventoryResponse.WeaponSkins.forEach(x => missingWeaponSkins.delete(x.ItemType)); + for (const uniqueName of missingWeaponSkins) { + inventoryResponse.WeaponSkins.push({ + ItemId: { + $oid: "ca70ca70ca70ca70" + catBreadHash(uniqueName).toString(16).padStart(8, "0") + }, + ItemType: uniqueName + }); + } + } else { + for (const key of equipmentKeys) { + if (key in inventoryResponse) { + for (const equipment of inventoryResponse[key]) { + equipment.Configs.forEach(config => { + if (config.Skins) processSkins(config.Skins, inventoryResponse.WeaponSkins, equipment.ItemType); + }); + } + } + } + + for (const key of ["AdultOperatorLoadOuts", "OperatorLoadOuts", "KahlLoadOuts"] as const) { + if (key in inventoryResponse) { + inventoryResponse[key].forEach(loadOut => { + if (loadOut.Skins) processSkins(loadOut.Skins, inventoryResponse.WeaponSkins, key); }); } } - } - for (const key of ["AdultOperatorLoadOuts", "OperatorLoadOuts", "KahlLoadOuts"] as const) { - if (key in inventoryResponse) { - inventoryResponse[key].forEach(loadOut => { - if (loadOut.Skins) processSkins(loadOut.Skins, inventoryResponse.WeaponSkins, key); - }); + if (inventoryResponse.LotusCustomization?.Skins) { + processSkins( + inventoryResponse.LotusCustomization.Skins, + inventoryResponse.WeaponSkins, + "LotusCustomization" + ); } } - if (inventoryResponse.LotusCustomization?.Skins) { - processSkins(inventoryResponse.LotusCustomization.Skins, inventoryResponse.WeaponSkins, "LotusCustomization"); - } - if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) { inventoryResponse.PlayerLevel = config.spoofMasteryRank; if (!xpBasedLevelCapDisabled) { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 83d00c1d..9a3f9366 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -38,6 +38,7 @@ export interface IAccountCheats { unlockDoubleCapacityPotatoesEverywhere?: boolean; unlockExilusEverywhere?: boolean; unlockArcanesEverywhere?: boolean; + unlockAllSkins?: boolean; syndicateMissionsRepeatable?: boolean; instantFinishRivenChallenge?: boolean; noDailyStandingLimits?: boolean; diff --git a/static/webui/index.html b/static/webui/index.html index 737af753..c39023b9 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -962,6 +962,10 @@ +
+ + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 3800d109..e628ae95 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `Void-Spuren nicht verbrauchen`, cheats_dontSubtractConsumables: `Verbrauchsgegenstände (Ausrüstung) nicht verbrauchen`, cheats_unlockAllShipFeatures: `Alle Schiffs-Funktionen freischalten`, + cheats_unlockAllSkins: `Alle Skins freischalten`, cheats_unlockAllCapturaScenes: `Alle Photora-Szenen freischalten`, cheats_universalPolarityEverywhere: `Universelle Polarität überall`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Orokin Reaktor & Beschleuniger überall`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index e70998a9..c271f8de 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -214,6 +214,7 @@ dict = { cheats_dontSubtractVoidTraces: `Don't Subtract Void Traces`, cheats_dontSubtractConsumables: `Don't Subtract Consumables`, cheats_unlockAllShipFeatures: `Unlock All Ship Features`, + heats_unlockAllSkins: `Unlock All Skins`, cheats_unlockAllCapturaScenes: `Unlock All Captura Scenes`, cheats_universalPolarityEverywhere: `Universal Polarity Everywhere`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Potatoes Everywhere`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 405b3f44..39194178 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `No descontar vestigios del Vacío`, cheats_dontSubtractConsumables: `No restar consumibles`, cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`, + cheats_unlockAllSkins: `Desbloquear todas las skins`, cheats_unlockAllCapturaScenes: `Desbloquear todas las escenas de Captura`, cheats_universalPolarityEverywhere: `Polaridad universal en todas partes`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Patatas en todas partes`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 9357982b..e9520553 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `Ne pas consommer de Void Traces`, cheats_dontSubtractConsumables: `Ne pas retirer de consommables`, cheats_unlockAllShipFeatures: `Débloquer tous les segments du vaisseau`, + cheats_unlockAllSkins: `Débloquer tous les skins`, cheats_unlockAllCapturaScenes: `Débloquer toutes les scènes captura`, cheats_universalPolarityEverywhere: `Polarités universelles partout`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Réacteurs et Catalyseurs partout`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 50c7bb27..e579508d 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `Не вычитать количество Отголосков Бездны`, cheats_dontSubtractConsumables: `Не вычитать количество расходников`, cheats_unlockAllShipFeatures: `Разблокировать все функции корабля`, + cheats_unlockAllSkins: `Разблокировать все скины`, cheats_unlockAllCapturaScenes: `Разблокировать все сцены Каптуры`, cheats_universalPolarityEverywhere: `Универсальная полярность везде`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Реакторы/Катализаторы орокин везде`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index c2be4396..6b745335 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `Не вираховувати кількість Відлуння`, cheats_dontSubtractConsumables: `Не вираховувати кількість витратних матеріалів`, cheats_unlockAllShipFeatures: `Розблокувати всі функції судна`, + cheats_unlockAllSkins: `Розблокувати всі скіни`, cheats_unlockAllCapturaScenes: `Розблокувати всі сцени Світлописця`, cheats_universalPolarityEverywhere: `Будь-яка полярність скрізь`, cheats_unlockDoubleCapacityPotatoesEverywhere: `Орокінські Реактори/Каталізатори скрізь`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 66b40b08..58f7e8c8 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -215,6 +215,7 @@ dict = { cheats_dontSubtractVoidTraces: `虚空光体无消耗`, cheats_dontSubtractConsumables: `消耗物品使用时无损耗`, cheats_unlockAllShipFeatures: `解锁所有飞船功能`, + cheats_unlockAllSkins: `解锁所有外观`, cheats_unlockAllCapturaScenes: `解锁所有Captura场景`, cheats_universalPolarityEverywhere: `全局万用极性`, cheats_unlockDoubleCapacityPotatoesEverywhere: `全物品自带Orokin反应堆`,