diff --git a/config-vanilla.json b/config-vanilla.json index e6f716ac..56f93879 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -12,7 +12,6 @@ "autoCreateAccount": true, "skipTutorial": false, "unlockAllShipDecorations": false, - "unlockAllFlavourItems": false, "unlockAllSkins": false, "fullyStockedVendors": false, "skipClanKeyCrafting": false, diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 1af5c350..00c825af 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -330,12 +330,7 @@ export const getInventoryResponse = async ( } } - if (config.unlockAllFlavourItems) { - inventoryResponse.FlavourItems = []; - for (const uniqueName in ExportFlavour) { - inventoryResponse.FlavourItems.push({ ItemType: uniqueName }); - } - } else if (config.worldState?.baroTennoConRelay) { + if (config.worldState?.baroTennoConRelay) { [ "/Lotus/Types/Items/Events/TennoConRelay2022EarlyAccess", "/Lotus/Types/Items/Events/TennoConRelay2023EarlyAccess", diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index 063d7cfa..3296ad1c 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -10,6 +10,7 @@ import { ExportDojoRecipes, ExportDrones, ExportFactions, + ExportFlavour, ExportGear, ExportKeys, ExportRailjackWeapons, @@ -62,6 +63,7 @@ interface ItemLists { Abilities: ListedItem[]; TechProjects: ListedItem[]; VaultDecoRecipes: ListedItem[]; + FlavourItems: ListedItem[]; //circuitGameModes: ListedItem[]; } @@ -102,7 +104,8 @@ const getItemListsController: RequestHandler = (req, response) => { VarziaOffers: [], Abilities: [], TechProjects: [], - VaultDecoRecipes: [] + VaultDecoRecipes: [], + FlavourItems: [] /*circuitGameModes: [ { uniqueName: "Survival", @@ -443,6 +446,13 @@ const getItemListsController: RequestHandler = (req, response) => { }); } + for (const [uniqueName, item] of Object.entries(ExportFlavour)) { + res.FlavourItems.push({ + uniqueName: uniqueName, + name: getString(item.name, lang) + }); + } + response.json(res); }; diff --git a/src/controllers/custom/removeCustomizationController.ts b/src/controllers/custom/removeCustomizationController.ts new file mode 100644 index 00000000..a1b84f56 --- /dev/null +++ b/src/controllers/custom/removeCustomizationController.ts @@ -0,0 +1,14 @@ +import { getAccountIdForRequest } from "../../services/loginService.ts"; +import { getInventory } from "../../services/inventoryService.ts"; +import type { RequestHandler } from "express"; +import { broadcastInventoryUpdate } from "../../services/wsService.ts"; + +export const removeCustomizationController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const ItemType = req.query.itemType as string; + const inventory = await getInventory(accountId, "FlavourItems"); + inventory.FlavourItems.pull({ ItemType }); + await inventory.save(); + res.end(); + broadcastInventoryUpdate(req); +}; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index ce0082db..457f0d99 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -21,6 +21,7 @@ import { unlockAllSimarisResearchEntriesController } from "../controllers/custom import { unlockAllScansController } from "../controllers/custom/unlockAllScansController.ts"; import { unlockAllShipFeaturesController } from "../controllers/custom/unlockAllShipFeaturesController.ts"; import { unlockAllCapturaScenesController } from "../controllers/custom/unlockAllCapturaScenesController.ts"; +import { removeCustomizationController } from "../controllers/custom/removeCustomizationController.ts"; import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts"; import { createAccountController } from "../controllers/custom/createAccountController.ts"; @@ -70,6 +71,7 @@ customRouter.get("/unlockAllSimarisResearchEntries", unlockAllSimarisResearchEnt customRouter.get("/unlockAllScans", unlockAllScansController); customRouter.get("/unlockAllShipFeatures", unlockAllShipFeaturesController); customRouter.get("/unlockAllCapturaScenes", unlockAllCapturaScenesController); +customRouter.get("/removeCustomization", removeCustomizationController); customRouter.post("/abilityOverride", abilityOverrideController); customRouter.post("/createAccount", createAccountController); diff --git a/src/services/configService.ts b/src/services/configService.ts index 162de999..18348357 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -22,7 +22,6 @@ export interface IConfig { autoCreateAccount?: boolean; skipTutorial?: boolean; unlockAllShipDecorations?: boolean; - unlockAllFlavourItems?: boolean; unlockAllSkins?: boolean; fullyStockedVendors?: boolean; skipClanKeyCrafting?: boolean; @@ -128,7 +127,8 @@ export const configRemovedOptionsKeys = [ "noDojoResearchCosts", "noDojoResearchTime", "fastClanAscension", - "unlockAllDecoRecipes" + "unlockAllDecoRecipes", + "unlockAllFlavourItems" ]; export const configPath = path.join(repoDir, args.configPath ?? "config.json"); diff --git a/static/webui/index.html b/static/webui/index.html index 2ad2751d..a3449f8a 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -459,6 +459,22 @@ +
+
+
+
+
+
+ + +
+ + +
+
+
+
+
@@ -469,6 +485,7 @@ +
@@ -983,10 +1000,6 @@
-
- - -
@@ -1387,6 +1400,7 @@ + diff --git a/static/webui/script.js b/static/webui/script.js index 4dc98212..e6293f87 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -570,6 +570,33 @@ function fetchItemList() { option.textContent = item.name; document.getElementById("changeSyndicate").appendChild(option); }); + } else if (type == "FlavourItems") { + const cursorPrefixes = { + Controller: loc("code_controller"), + MouseGrey: loc("code_mouse"), + MouseLine: loc("code_mouseLine"), + Mouse: loc("code_mouse") + }; + items.forEach(item => { + if (item.uniqueName.startsWith("/Lotus/Interface/Graphics/CustomUI/Cursors/")) { + let base = item.uniqueName.replace("/Lotus/Interface/Graphics/CustomUI/Cursors/", ""); + for (const key in cursorPrefixes) { + if (base.startsWith(key)) { + const prefix = cursorPrefixes[key]; + const suffix = base.slice(key.length); + item.name = prefix + " " + suffix; + break; + } + } + } else if (item.uniqueName.includes("ColourPicker")) { + item.name = loc("code_itemColorPalette").split("|ITEM|").join(item.name); + } + const option = document.createElement("option"); + option.setAttribute("data-key", item.uniqueName); + option.value = item.name; + document.getElementById("datalist-" + type).appendChild(option); + itemMap[item.uniqueName] = { ...item, type }; + }); } else { const nameToItems = {}; items.forEach(item => { @@ -960,6 +987,46 @@ function updateInventory() { document.getElementById("EvolutionProgress-list").appendChild(tr); }); + document.getElementById("FlavourItems-list").innerHTML = ""; + data.FlavourItems.forEach(item => { + const datalist = document.getElementById("datalist-FlavourItems"); + if (!data.FlavourItems.some(x => x.ItemType == item.uniqueName)) { + if (!datalist.querySelector(`option[value="${item.uniqueName}"]`)) { + reAddToItemList(itemMap, "FlavourItems", item.ItemType); + } + } + const optionToRemove = datalist.querySelector(`option[value="${item.ItemType}"]`); + optionToRemove?.remove(); + + const tr = document.createElement("tr"); + tr.setAttribute("data-item-type", item.ItemType); + { + const td = document.createElement("td"); + td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; + tr.appendChild(td); + } + { + const td = document.createElement("td"); + td.classList = "text-end text-nowrap"; + + { + const a = document.createElement("a"); + a.href = "#"; + a.onclick = function (event) { + event.preventDefault(); + reAddToItemList(itemMap, "FlavourItems", item.ItemType); + removeCustomization(item.ItemType); + }; + a.title = loc("code_remove"); + a.innerHTML = ``; + td.appendChild(a); + } + tr.appendChild(td); + } + + document.getElementById("FlavourItems-list").appendChild(tr); + }); + const datalistEvolutionProgress = document.querySelectorAll("#datalist-EvolutionProgress option"); const formEvolutionProgress = document.querySelector('form[onsubmit*="doAcquireEvolution()"]'); @@ -1966,6 +2033,15 @@ function doAcquireEquipment(category) { }); } +function removeCustomization(uniqueName) { + revalidateAuthz().then(() => { + const req = $.get("/custom/removeCustomization?" + window.authz + "&itemType=" + uniqueName); + req.done(() => { + updateInventory(); + }); + }); +} + function getRequiredParts(category, WeaponType) { switch (category) { case "Hoverboards": diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index d370142c..899a11c9 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -64,6 +64,10 @@ dict = { code_completed: `Abgeschlossen`, code_active: `Aktiv`, code_pigment: `Pigment`, + code_controller: `[UNTRANSLATED] Controller cursor`, + code_mouseLine: `[UNTRANSLATED] Line cursor`, + code_mouse: `[UNTRANSLATED] Cursor`, + code_itemColorPalette: `|ITEM| Farbpalette`, code_mature: `Für den Kampf auswachsen lassen`, code_unmature: `Genetisches Altern zurücksetzen`, code_fund: `[UNTRANSLATED] Fund`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `Bestien`, inventory_evolutionProgress: `Incarnon-Entwicklungsfortschritte`, inventory_Boosters: `Booster`, + inventory_flavourItems: `Sammlerstücke`, inventory_bulkAddSuits: `Fehlende Warframes hinzufügen`, inventory_bulkAddWeapons: `Fehlende Waffen hinzufügen`, inventory_bulkAddSpaceSuits: `Fehlende Archwings hinzufügen`, inventory_bulkAddSpaceWeapons: `Fehlende Archwing-Waffen hinzufügen`, inventory_bulkAddSentinels: `Fehlende Wächter hinzufügen`, inventory_bulkAddSentinelWeapons: `Fehlende Wächter-Waffen hinzufügen`, + inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `Fehlende Incarnon-Entwicklungsfortschritte hinzufügen`, inventory_bulkRankUpSuits: `Alle Warframes auf Max. Rang`, inventory_bulkRankUpWeapons: `Alle Waffen auf Max. Rang`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `Verbrauchsgegenstände (Ausrüstung) nicht verbrauchen`, cheats_unlockAllShipFeatures: `Alle Schiffs-Funktionen freischalten`, cheats_unlockAllShipDecorations: `Alle Schiffsdekorationen freischalten`, - cheats_unlockAllFlavourItems: `Alle Sammlerstücke freischalten`, cheats_unlockAllSkins: `Alle Skins freischalten`, cheats_unlockAllCapturaScenes: `Alle Photora-Szenen freischalten`, cheats_universalPolarityEverywhere: `Universelle Polarität überall`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 5f82beca..025cd56a 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -63,6 +63,10 @@ dict = { code_completed: `Completed`, code_active: `Active`, code_pigment: `Pigment`, + code_controller: `Controller cursor`, + code_mouseLine: `Line cursor`, + code_mouse: `Cursor`, + code_itemColorPalette: `|ITEM| Color Palette`, code_mature: `Mature for combat`, code_unmature: `Regress genetic aging`, code_fund: `Fund`, @@ -102,12 +106,14 @@ dict = { inventory_kubrowPets: `Beasts`, inventory_evolutionProgress: `Incarnon Evolution Progress`, inventory_Boosters: `Boosters`, + inventory_flavourItems: `Flavour Items`, inventory_bulkAddSuits: `Add Missing Warframes`, inventory_bulkAddWeapons: `Add Missing Weapons`, inventory_bulkAddSpaceSuits: `Add Missing Archwings`, inventory_bulkAddSpaceWeapons: `Add Missing Archwing Weapons`, inventory_bulkAddSentinels: `Add Missing Sentinels`, inventory_bulkAddSentinelWeapons: `Add Missing Sentinel Weapons`, + inventory_bulkAddFlavourItems: `Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `Add Missing Incarnon Evolution Progress`, inventory_bulkRankUpSuits: `Max Rank All Warframes`, inventory_bulkRankUpWeapons: `Max Rank All Weapons`, @@ -198,7 +204,6 @@ dict = { cheats_dontSubtractConsumables: `Don't Subtract Consumables`, cheats_unlockAllShipFeatures: `Unlock All Ship Features`, cheats_unlockAllShipDecorations: `Unlock All Ship Decorations`, - cheats_unlockAllFlavourItems: `Unlock All Flavor Items`, cheats_unlockAllSkins: `Unlock All Skins`, cheats_unlockAllCapturaScenes: `Unlock All Captura Scenes`, cheats_universalPolarityEverywhere: `Universal Polarity Everywhere`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 337cc27a..f9201e71 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -64,6 +64,10 @@ dict = { code_completed: `Completada`, code_active: `Activa`, code_pigment: `Pigmento`, + code_controller: `[UNTRANSLATED] Controller cursor`, + code_mouseLine: `[UNTRANSLATED] Line cursor`, + code_mouse: `[UNTRANSLATED] Cursor`, + code_itemColorPalette: `Paleta de colores |ITEM|`, code_mature: `Listo para el combate`, code_unmature: `Regresar el envejecimiento genético`, code_fund: `[UNTRANSLATED] Fund`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `Bestias`, inventory_evolutionProgress: `Progreso de evolución Incarnon`, inventory_Boosters: `Potenciadores`, + inventory_flavourItems: `Ítems estéticos`, inventory_bulkAddSuits: `Agregar Warframes faltantes`, inventory_bulkAddWeapons: `Agregar armas faltantes`, inventory_bulkAddSpaceSuits: `Agregar Archwings faltantes`, inventory_bulkAddSpaceWeapons: `Agregar armas Archwing faltantes`, inventory_bulkAddSentinels: `Agregar centinelas faltantes`, inventory_bulkAddSentinelWeapons: `Agregar armas de centinela faltantes`, + inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `Completar el progreso de evolución Incarnon faltante`, inventory_bulkRankUpSuits: `Maximizar rango de todos los Warframes`, inventory_bulkRankUpWeapons: `Maximizar rango de todas las armas`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `No restar consumibles`, cheats_unlockAllShipFeatures: `Desbloquear todas las funciones de nave`, cheats_unlockAllShipDecorations: `Desbloquear todas las decoraciones de nave`, - cheats_unlockAllFlavourItems: `Desbloquear todos los ítems estéticos`, cheats_unlockAllSkins: `Desbloquear todas las skins`, cheats_unlockAllCapturaScenes: `Desbloquear todas las escenas de Captura`, cheats_universalPolarityEverywhere: `Polaridad universal en todas partes`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 15d4be30..c89981e3 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -64,6 +64,10 @@ dict = { code_completed: `Complétée`, code_active: `Active`, code_pigment: `Pigment`, + code_controller: `[UNTRANSLATED] Controller cursor`, + code_mouseLine: `[UNTRANSLATED] Line cursor`, + code_mouse: `[UNTRANSLATED] Cursor`, + code_itemColorPalette: `Palette de couleurs |ITEM|`, code_mature: `Maturer pour le combat`, code_unmature: `Régrésser l'âge génétique`, code_fund: `Financer`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `Bêtes`, inventory_evolutionProgress: `Progrès de l'évolution Incarnon`, inventory_Boosters: `Boosters`, + inventory_flavourItems: `[UNTRANSLATED] Flavour Items`, inventory_bulkAddSuits: `Ajouter les Warframes manquantes`, inventory_bulkAddWeapons: `Ajouter les armes manquantes`, inventory_bulkAddSpaceSuits: `Ajouter les Archwings manquants`, inventory_bulkAddSpaceWeapons: `Ajouter les armes d'Archwing manquantes`, inventory_bulkAddSentinels: `Ajouter les Sentinelles manquantes`, inventory_bulkAddSentinelWeapons: `Ajouter les armes de Sentinelles manquantes`, + inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `Ajouter les évolutions Incarnon manquantes`, inventory_bulkRankUpSuits: `Toutes les Warframes au rang max`, inventory_bulkRankUpWeapons: `Toutes les armes au rang max`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `Ne pas retirer de consommables`, 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`, cheats_unlockAllSkins: `Débloquer tous les skins`, cheats_unlockAllCapturaScenes: `Débloquer toutes les scènes captura`, cheats_universalPolarityEverywhere: `Polarités universelles partout`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index c1157079..cdf25b1a 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -64,6 +64,10 @@ dict = { code_completed: `Завершено`, code_active: `Активный`, code_pigment: `Пигмент`, + code_controller: `Курсор контроллера`, + code_mouseLine: `Линейный курсор`, + code_mouse: `Курсор`, + code_itemColorPalette: `Цветовая палитра: |ITEM|`, code_mature: `Подготовить к сражениям`, code_unmature: `Регрессия генетического старения`, code_fund: `Профинансировать`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `Звери`, inventory_evolutionProgress: `Прогресс эволюции Инкарнонов`, inventory_Boosters: `Бустеры`, + inventory_flavourItems: `Уникальные предметы`, inventory_bulkAddSuits: `Добавить отсутствующие Варфреймы`, inventory_bulkAddWeapons: `Добавить отсутствующее оружие`, inventory_bulkAddSpaceSuits: `Добавить отсутствующие Арчвинги`, inventory_bulkAddSpaceWeapons: `Добавить отсутствующее оружие Арчвингов`, inventory_bulkAddSentinels: `Добавить отсутствующих Стражей`, inventory_bulkAddSentinelWeapons: `Добавить отсутствующее оружие Стражей`, + inventory_bulkAddFlavourItems: `Добавить отсутствующие Уникальные предметы`, inventory_bulkAddEvolutionProgress: `Добавить отсутствующий прогресс эволюции Инкарнонов`, inventory_bulkRankUpSuits: `Макс. ранг всех Варфреймов`, inventory_bulkRankUpWeapons: `Макс. ранг всего оружия`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `Не вычитать количество расходников`, cheats_unlockAllShipFeatures: `Разблокировать все функции корабля`, cheats_unlockAllShipDecorations: `Разблокировать все украшения корабля`, - cheats_unlockAllFlavourItems: `Разблокировать все уникальные предметы`, cheats_unlockAllSkins: `Разблокировать все скины`, cheats_unlockAllCapturaScenes: `Разблокировать все сцены Каптуры`, cheats_universalPolarityEverywhere: `Универсальная полярность везде`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index 7981eae1..b543e3fa 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -64,6 +64,10 @@ dict = { code_completed: `Завершено`, code_active: `Активний`, code_pigment: `Барвник`, + code_controller: `[UNTRANSLATED] Controller cursor`, + code_mouseLine: `[UNTRANSLATED] Line cursor`, + code_mouse: `[UNTRANSLATED] Cursor`, + code_itemColorPalette: `Палітра кольорів «|ITEM|»`, code_mature: `Виростити для бою`, code_unmature: `Обернути старіння`, code_fund: `[UNTRANSLATED] Fund`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `Тварини`, inventory_evolutionProgress: `Прогрес еволюції Інкарнонів`, inventory_Boosters: `Посилення`, + inventory_flavourItems: `Унікальні предмети`, inventory_bulkAddSuits: `Додати відсутні Ворфрейми`, inventory_bulkAddWeapons: `Додати відсутню зброю`, inventory_bulkAddSpaceSuits: `Додати відсутні Арквінґи`, inventory_bulkAddSpaceWeapons: `Додати відсутню зброю Арквінґів`, inventory_bulkAddSentinels: `Додати відсутніх Вартових`, inventory_bulkAddSentinelWeapons: `Додати відсутню зброю Вартових`, + inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `Додати відсутній прогрес еволюції Інкарнонів`, inventory_bulkRankUpSuits: `Макс. рівень всіх Ворфреймів`, inventory_bulkRankUpWeapons: `Макс. рівень всієї зброї`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `Не вираховувати кількість витратних матеріалів`, cheats_unlockAllShipFeatures: `Розблокувати всі функції судна`, cheats_unlockAllShipDecorations: `Розблокувати всі прикраси судна`, - cheats_unlockAllFlavourItems: `Розблокувати всі унікальні предмети`, cheats_unlockAllSkins: `Розблокувати всі скіни`, cheats_unlockAllCapturaScenes: `Розблокувати всі сцени Світлописця`, cheats_universalPolarityEverywhere: `Будь-яка полярність скрізь`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 4b806799..d32cfae6 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -64,6 +64,10 @@ dict = { code_completed: `已完成`, code_active: `正在执行`, code_pigment: `颜料`, + code_controller: `[UNTRANSLATED] Controller cursor`, + code_mouseLine: `[UNTRANSLATED] Line cursor`, + code_mouse: `[UNTRANSLATED] Cursor`, + code_itemColorPalette: `|ITEM| 调色盘`, code_mature: `成长并战备`, code_unmature: `逆转衰老基因`, code_fund: `[UNTRANSLATED] Fund`, @@ -103,12 +107,14 @@ dict = { inventory_kubrowPets: `动物同伴`, inventory_evolutionProgress: `灵化之源进度`, inventory_Boosters: `加成器`, + inventory_flavourItems: `装饰物品`, inventory_bulkAddSuits: `添加缺失战甲`, inventory_bulkAddWeapons: `添加缺失武器`, inventory_bulkAddSpaceSuits: `添加缺失载具`, inventory_bulkAddSpaceWeapons: `添加缺失载具武器`, inventory_bulkAddSentinels: `添加缺失守护`, inventory_bulkAddSentinelWeapons: `添加缺失守护武器`, + inventory_bulkAddFlavourItems: `[UNTRANSLATED] Add Missing Flavour Items`, inventory_bulkAddEvolutionProgress: `添加缺失的灵化之源进度`, inventory_bulkRankUpSuits: `所有战甲升满级`, inventory_bulkRankUpWeapons: `所有武器升满级`, @@ -199,7 +205,6 @@ dict = { cheats_dontSubtractConsumables: `消耗物品使用时无损耗`, cheats_unlockAllShipFeatures: `解锁所有飞船功能`, cheats_unlockAllShipDecorations: `解锁所有飞船装饰`, - cheats_unlockAllFlavourItems: `解锁所有装饰物品`, cheats_unlockAllSkins: `解锁所有外观`, cheats_unlockAllCapturaScenes: `解锁所有Captura场景`, cheats_universalPolarityEverywhere: `全局万用极性`,