diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index e07858f1..1e5bcdaa 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -4,6 +4,7 @@ import type { TInventoryDatabaseDocument } from "../../models/inventoryModels/in import { Inventory } from "../../models/inventoryModels/inventoryModel.ts"; import { config } from "../../services/configService.ts"; import allDialogue from "../../../static/fixed_responses/allDialogue.json" with { type: "json" }; +import allPopups from "../../../static/fixed_responses/allPopups.json" with { type: "json" }; import type { ILoadoutDatabase } from "../../types/saveLoadoutTypes.ts"; import type { IInventoryClient, IShipInventory } from "../../types/inventoryTypes/inventoryTypes.ts"; import { equipmentKeys } from "../../types/inventoryTypes/inventoryTypes.ts"; @@ -326,6 +327,12 @@ export const getInventoryResponse = async ( } } + if (inventory.skipAllPopups) { + for (const str of allPopups) { + addString(inventoryResponse.NodeIntrosCompleted, str); + } + } + if (config.worldState?.baroTennoConRelay) { [ "/Lotus/Types/Items/Events/TennoConRelay2022EarlyAccess", diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 4facc3b9..b08535cd 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1447,6 +1447,7 @@ const inventorySchema = new Schema( // SNS account cheats skipAllDialogue: Boolean, + skipAllPopups: Boolean, dontSubtractPurchaseCreditCost: Boolean, dontSubtractPurchasePlatinumCost: Boolean, dontSubtractPurchaseItemCost: Boolean, diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 8a963db1..5c8cb8ee 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -23,6 +23,7 @@ export type InventoryDatabaseEquipment = { // Fields specific to SNS export interface IAccountCheats { skipAllDialogue?: boolean; + skipAllPopups?: boolean; dontSubtractPurchaseCreditCost?: boolean; dontSubtractPurchasePlatinumCost?: boolean; dontSubtractPurchaseItemCost?: boolean; diff --git a/static/fixed_responses/allDialogue.json b/static/fixed_responses/allDialogue.json index 72bdc5b4..b846ebfa 100644 --- a/static/fixed_responses/allDialogue.json +++ b/static/fixed_responses/allDialogue.json @@ -1,4 +1,6 @@ [ + "ArcaneWallConsole", + "CetusHub4", "SolarisUnitedHub1", "/Lotus/Language/SolarisVenus/FishmongerName", "/Lotus/Language/SolarisVenus/ProspectorName", @@ -12,6 +14,7 @@ "SaturnWolf3", "SaturnWolf4", "SaturnWolf5", + "SyndicateFirstPledge", "ConclaveSyndicate", "ArbitersSyndicate", "LibrarySyndicate", @@ -117,6 +120,7 @@ "/Lotus/Language/EntratiLab/EntratiGeneral/Fibonacci", "/Lotus/Language/EntratiLab/EntratiGeneral/BirdThree", "/Lotus/Language/Zariman/Quinn", + "/Lotus/Language/EntratiLab/EntratiGeneral/Tagfer", "/Lotus/Language/EntratiLab/EntratiGeneral/TagferFirstRank1", "VoidVaultIntro", "PurchasePlatformLockedNotificationSeen", @@ -137,6 +141,7 @@ "EntratiLabConquestHardModeUnlocked", "/Lotus/Language/Npcs/KonzuPostNewWar", "/Lotus/Language/SolarisVenus/EudicoPostNewWar", + "/Lotus/Language/FiveFates/KoumeiStatueHubName", "/Lotus/Language/NokkoColony/NokkoVendorName", "NokkoVisions_FirstVisit" ] diff --git a/static/fixed_responses/allPopups.json b/static/fixed_responses/allPopups.json new file mode 100644 index 00000000..a5ee4530 --- /dev/null +++ b/static/fixed_responses/allPopups.json @@ -0,0 +1,27 @@ +[ + "RailjackPlexusTutorial", + "RailjackIntrinsicsTutorial", + "RailjackDryDockTutorial", + "RailjackStarchartTutorial", + "NPE_poponce_ayatans", + "NPE_poponce_sellmodinfo", + "NPE_poponce_transmuteinfo", + "MarketOpened", + "PrimeTokensTutorial", + "WelcomeScreen_Undermind", + "WelcomeScreen_Jade", + "WelcomeScreen_Isleweaver", + "WelcomeScreen_Techrot", + "WelcomeScreen_1999", + "WelcomeScreen_Koumei", + "WelcomeScreen_Dante", + "WelcomeScreen_Whispers", + "WelcomeScreen_Dagath", + "WelcomeScreen_Kullervo", + "EpisodeIntro_RadioLegionIntermission14Syndicate", + "EpisodeIntro_RadioLegionIntermission13Syndicate", + "EpisodeIntro_RadioLegionIntermission12Syndicate", + "EpisodeIntro_RadioLegionIntermission11Syndicate", + "EpisodeIntro_RadioLegionIntermission10Syndicate", + "EpisodeIntro_RadioLegionIntermission9Syndicate" +] diff --git a/static/webui/index.html b/static/webui/index.html index 6f356c97..d1d53f4f 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -960,6 +960,10 @@ +
+ + +
diff --git a/static/webui/script.js b/static/webui/script.js index d71b18a2..6ac13c99 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -487,6 +487,12 @@ function fetchItemList() { name: loc("disabled") }); + data.Boosters ??= []; + data.Boosters.push({ + uniqueName: "/Lotus/Types/Boosters/ReviveBooster", + name: loc("code_reviveBooster") + }); + const itemMap = { // Generics for rivens "/Lotus/Weapons/Tenno/Archwing/Primary/ArchGun": { name: loc("code_archgun") }, @@ -1068,6 +1074,13 @@ function updateInventory() { const td = document.createElement("td"); td.textContent = itemMap[item.ItemType]?.name ?? item.ItemType; tr.appendChild(td); + if (item.ItemType == "/Lotus/Types/Boosters/ReviveBooster") { + td.textContent += " "; + const abbr = document.createElement("abbr"); + abbr.innerHTML = ``; + abbr.title = loc("code_reviveBoosterDesc"); + td.appendChild(abbr); + } } { const td = document.createElement("td"); diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 32b4e5ef..2b833fbc 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `Drifter-Bart: |INDEX|`, code_drifterFaceName: `Drifter-Gesicht: |INDEX|`, code_operatorFaceName: `Operator-Gesicht: |INDEX|`, + code_reviveBooster: `Wiederbelebungsbooster`, + code_reviveBoosterDesc: `[UNTRANSLATED] Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `Erfolgreich geändert.`, code_requiredInvigorationUpgrade: `Du musst sowohl ein Offensiv- als auch ein Support-Upgrade auswählen.`, code_feature_1: `[UNTRANSLATED] Orokin Reactor`, @@ -213,6 +215,7 @@ dict = { cheats_server: `Server`, cheats_skipTutorial: `Tutorial überspringen`, cheats_skipAllDialogue: `Alle Dialoge überspringen`, + cheats_skipAllPopups: `Alle Popups überspringen`, cheats_unlockAllScans: `Alle Scans freischalten`, cheats_unlockSuccRelog: `Erfolgreich. Bitte beachte, dass du dich neu anmelden musst, damit der Client dies aktualisiert.`, cheats_unlockAllMissions: `Alle Missionen freischalten`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 96b05cc4..e2220d63 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -81,6 +81,8 @@ dict = { code_drifterBeardName: `Drifter Beard |INDEX|`, code_drifterFaceName: `Drifter Visage |INDEX|`, code_operatorFaceName: `Operator Visage |INDEX|`, + code_reviveBooster: `Revive Booster`, + code_reviveBoosterDesc: `Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `Successfully changed.`, code_requiredInvigorationUpgrade: `You must select both an offensive & utility upgrade.`, code_feature_1: `Orokin Reactor`, @@ -212,6 +214,7 @@ dict = { cheats_server: `Server`, cheats_skipTutorial: `Skip Tutorial`, cheats_skipAllDialogue: `Skip All Dialogue`, + cheats_skipAllPopups: `Skip All Popups`, cheats_unlockAllScans: `Unlock All Scans`, cheats_unlockSuccRelog: `Success. Please note that you'll need to relog for the client to refresh this.`, cheats_unlockAllMissions: `Unlock All Missions`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 367a2c7f..59a1c22b 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `Barba del Viajero: |INDEX|`, code_drifterFaceName: `Rostro del Viajero |INDEX|`, code_operatorFaceName: `Rostro del operador |INDEX|`, + code_reviveBooster: `Potenciador de reanimaciones`, + code_reviveBoosterDesc: `[UNTRANSLATED] Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `Cambiado correctamente`, code_requiredInvigorationUpgrade: `Debes seleccionar una mejora ofensiva y una mejora de utilidad.`, code_feature_1: `[UNTRANSLATED] Orokin Reactor`, @@ -213,6 +215,7 @@ dict = { cheats_server: `Servidor`, cheats_skipTutorial: `Omitir tutorial`, cheats_skipAllDialogue: `Omitir todos los diálogos`, + cheats_skipAllPopups: `[UNTRANSLATED] Skip All Popups`, cheats_unlockAllScans: `Desbloquear todos los escaneos`, cheats_unlockSuccRelog: `Éxito. Ten en cuenta que deberás volver a iniciar sesión para que el cliente se actualice.`, cheats_unlockAllMissions: `Desbloquear todas las misiones`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 54845862..0170b3c8 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `Barbe du Voyageur |INDEX|`, code_drifterFaceName: `Visage du Voyageur |INDEX|`, code_operatorFaceName: `Visage de l'Opérateur |INDEX|`, + code_reviveBooster: `Booster de Réanimation`, + code_reviveBoosterDesc: `[UNTRANSLATED] Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `Changement effectué.`, code_requiredInvigorationUpgrade: `Invigoration offensive et défensive requises.`, code_feature_1: `[UNTRANSLATED] Orokin Reactor`, @@ -213,6 +215,7 @@ dict = { cheats_server: `Serveur`, cheats_skipTutorial: `Passer le tutoriel`, cheats_skipAllDialogue: `Passer les dialogues`, + cheats_skipAllPopups: `[UNTRANSLATED] Skip All Popups`, cheats_unlockAllScans: `Débloquer tous les scans`, cheats_unlockSuccRelog: `Succès. Une reconnexion est requise pour appliquer les changements.`, cheats_unlockAllMissions: `Débloquer toutes les missions`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index e4025a1d..88ed6108 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `Борода скитальца: |INDEX|`, code_drifterFaceName: `Внешность скитальца: |INDEX|`, code_operatorFaceName: `Внешность оператора: |INDEX|`, + code_reviveBooster: `Усилитель возрождения`, + code_reviveBoosterDesc: `Устанавливает количество возрождений на 4. Снимает ограничение на самовоскрешение на миссиях Охоты на архонтов.`, code_succChange: `Успешно изменено.`, code_requiredInvigorationUpgrade: `Вы должны выбрать как атакующее, так и вспомогательное улучшение.`, code_feature_1: `Реактор Орокин`, @@ -213,6 +215,7 @@ dict = { cheats_server: `Сервер`, cheats_skipTutorial: `Пропустить обучение`, cheats_skipAllDialogue: `Пропустить все диалоги`, + cheats_skipAllPopups: `[UNTRANSLATED] Skip All Popups`, cheats_unlockAllScans: `Разблокировать все сканирования`, cheats_unlockSuccRelog: `Успех. Вам необходимо повторно войти в игру, чтобы клиент обновил эту информацию.`, cheats_unlockAllMissions: `Разблокировать все миссии`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index 8fba6840..bcf81f40 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `Борода мандрівника: |INDEX|`, code_drifterFaceName: `Зовнішність мандрівника: |INDEX|`, code_operatorFaceName: `Зовнішність оператора: |INDEX|`, + code_reviveBooster: `Збільшувач зцілення`, + code_reviveBoosterDesc: `[UNTRANSLATED] Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `Успішно змінено.`, code_requiredInvigorationUpgrade: `Ви повинні вибрати як атакуюче, так і допоміжне вдосконалення.`, code_feature_1: `[UNTRANSLATED] Orokin Reactor`, @@ -213,6 +215,7 @@ dict = { cheats_server: `Сервер`, cheats_skipTutorial: `Пропустити навчання`, cheats_skipAllDialogue: `Пропустити всі діалоги`, + cheats_skipAllPopups: `[UNTRANSLATED] Skip All Popups`, cheats_unlockAllScans: `Розблокувати всі сканування`, cheats_unlockSuccRelog: `Успіх. Вам потрібно буде повторно увійти в гру, щоб клієнт оновив цю інформацію.`, cheats_unlockAllMissions: `Розблокувати всі місії`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 6f401474..0b1cd209 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -82,6 +82,8 @@ dict = { code_drifterBeardName: `漂泊者胡须 |INDEX|`, code_drifterFaceName: `漂泊者面部 |INDEX|`, code_operatorFaceName: `指挥官面部 |INDEX|`, + code_reviveBooster: `复活加速器`, + code_reviveBoosterDesc: `[UNTRANSLATED] Sets revive count to 4, which allows self-revive in Archon Hunts.`, code_succChange: `更改成功`, code_requiredInvigorationUpgrade: `[UNTRANSLATED] You must select both an offensive & utility upgrade.`, code_feature_1: `[UNTRANSLATED] Orokin Reactor`, @@ -213,6 +215,7 @@ dict = { cheats_server: `服务器`, cheats_skipTutorial: `跳过教程`, cheats_skipAllDialogue: `跳过所有对话`, + cheats_skipAllPopups: `[UNTRANSLATED] Skip All Popups`, cheats_unlockAllScans: `解锁所有扫描`, cheats_unlockSuccRelog: `[UNTRANSLATED] Success. Please note that you'll need to relog for the client to refresh this.`, cheats_unlockAllMissions: `解锁所有星图`,