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反应堆`,