From 304b0b347b5709001ad61bf2f46780fce303161d Mon Sep 17 00:00:00 2001 From: Gian Date: Sat, 27 Sep 2025 02:57:30 -0300 Subject: [PATCH 01/34] naberus --- config-vanilla.json | 1 + src/services/configService.ts | 1 + src/services/worldStateService.ts | 18 ++++++++++++++++++ static/webui/index.html | 6 +++++- 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 + 11 files changed, 32 insertions(+), 1 deletion(-) diff --git a/config-vanilla.json b/config-vanilla.json index 887a2141..9ff94d49 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -34,6 +34,7 @@ "wolfHunt": false, "orphixVenom": false, "longShadow": false, + "naberusNights": false, "hallowedFlame": false, "anniversary": null, "hallowedNightmares": false, diff --git a/src/services/configService.ts b/src/services/configService.ts index 238cb368..525f0d28 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -44,6 +44,7 @@ export interface IConfig { wolfHunt?: boolean; orphixVenom?: boolean; longShadow?: boolean; + naberusNights?: boolean; hallowedFlame?: boolean; anniversary?: number; hallowedNightmares?: boolean; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index df35d988..f3681e7b 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -2504,6 +2504,24 @@ export const getWorldState = (buildLabel?: string): IWorldState => { BonusReward: { items: ["/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"] } }); } + + if (config.worldState?.naberusNights) { + worldState.Goals.push({ + _id: { $oid: "66fd602de1778d583419e8e7" }, + Activation: { $date: { $numberLong: "1727881200000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, + Count: 0, + Goal: 0, + Success: 0, + Personal: true, + Desc: "/Lotus/Language/Events/HalloweenNaberusName", + ToolTip: "/Lotus/Language/Events/HalloweenNaberusDesc", + Icon: "/Lotus/Interface/Icons/JackOLanternColour.png", + Tag: "DeimosHalloween", + Node: "DeimosHub" + }); + } + if (config.worldState?.bellyOfTheBeast) { worldState.Goals.push({ _id: { $oid: "67a5035c2a198564d62e165e" }, diff --git a/static/webui/index.html b/static/webui/index.html index 8c1d398d..bf3244cf 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1184,6 +1184,10 @@ +
+ + +
@@ -1236,7 +1240,7 @@
- + - -
@@ -1211,6 +1207,14 @@
+
+ + +
-- 2.47.2 From 73bda1e5b3f306bcd5b77f88a33445fc37ec4e65 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Sat, 27 Sep 2025 11:25:05 -0700 Subject: [PATCH 04/34] Update static/webui/index.html --- static/webui/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/webui/index.html b/static/webui/index.html index 1ef08648..b3c7ee31 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1244,7 +1244,7 @@
- + + + -- 2.47.2 From 4d23d1a131f84f8f9e7268c6db0c419684c45476 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 29 Sep 2025 10:59:01 +0200 Subject: [PATCH 11/34] fix location of naberus nights in translations --- static/webui/translations/de.js | 2 +- static/webui/translations/en.js | 2 +- static/webui/translations/es.js | 2 +- static/webui/translations/fr.js | 2 +- static/webui/translations/ru.js | 2 +- static/webui/translations/uk.js | 2 +- static/webui/translations/zh.js | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index c5fd8778..473294a0 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `Wolfsjagd (2025)`, worldState_orphixVenom: `Orphix Gift`, worldState_longShadow: `Lange Schatten`, - worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_hallowedFlame: `Geweihte Flamme`, worldState_hallowedNightmares: `Geweihte Albträume`, worldState_hallowedNightmaresRewards: `[UNTRANSLATED] Hallowed Nightmares Rewards`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Proxy-Rebellion`, worldState_proxyRebellionRewards: `[UNTRANSLATED] Proxy Rebellion Rewards`, worldState_bellyOfTheBeast: `Das Innere der Bestie`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index df3d4b5d..cdb850fa 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -280,10 +280,10 @@ dict = { worldState_wolfHunt: `Wolf Hunt (2025)`, worldState_orphixVenom: `Orphix Venom`, worldState_longShadow: `Long Shadow`, - worldState_naberusNights: `Nights of Naberus`, worldState_hallowedFlame: `Hallowed Flame`, worldState_hallowedNightmares: `Hallowed Nightmares`, worldState_hallowedNightmaresRewards: `Hallowed Nightmares Rewards`, + worldState_naberusNights: `Nights of Naberus`, worldState_proxyRebellion: `Proxy Rebellion`, worldState_proxyRebellionRewards: `Proxy Rebellion Rewards`, worldState_bellyOfTheBeast: `Belly of the Beast`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 1ebaf947..bee464df 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `Cacería del Lobo (2025)`, worldState_orphixVenom: `Veneno de Orphix`, worldState_longShadow: `Sombra Prolongada`, - worldState_naberusNights: `Noches de Naberus`, worldState_hallowedFlame: `Llama Sagrada`, worldState_hallowedNightmares: `Pesadillas Sagradas`, worldState_hallowedNightmaresRewards: `Recompensas de Pesadillas Sagradas`, + worldState_naberusNights: `Noches de Naberus`, worldState_proxyRebellion: `Rebelión Proxy`, worldState_proxyRebellionRewards: `Recompensas de Rebelión Proxy`, worldState_bellyOfTheBeast: `Vientre de la Bestia`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index e283741f..66fbad3c 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `Chasse au Loup (2025)`, worldState_orphixVenom: `Venin Orphix`, worldState_longShadow: `La Propagation des Ombres`, - worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_hallowedFlame: `Flamme Hantée`, worldState_hallowedNightmares: `Cauchemars Hantés`, worldState_hallowedNightmaresRewards: `Récompenses Flamme Hantée Cauchemar`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Rébellion Proxy`, worldState_proxyRebellionRewards: `Récompenses Rébellion Proxy`, worldState_bellyOfTheBeast: `Ventre de la Bête`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index abf6d93e..bdabbfb7 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `Волчья Охота (2025)`, worldState_orphixVenom: `Яд Орфикса`, worldState_longShadow: `Длинная Тень`, - worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_hallowedFlame: `Священное пламя`, worldState_hallowedNightmares: `Священные кошмары`, worldState_hallowedNightmaresRewards: `Награды Священных кошмаров`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Восстание роботов`, worldState_proxyRebellionRewards: `Награды Восстания роботов`, worldState_bellyOfTheBeast: `Чрево зверя`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index 0d61ae43..7f5e38d9 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `Полювання на Вовка (2025)`, worldState_orphixVenom: `Орфіксова отрута`, worldState_longShadow: `Довга тінь`, - worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_hallowedFlame: `Священне полум'я`, worldState_hallowedNightmares: `Священні жахіття`, worldState_hallowedNightmaresRewards: `Нагороди Священних жахіть`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Повстання роботів`, worldState_proxyRebellionRewards: `Нагороди Повстання роботів`, worldState_bellyOfTheBeast: `У лігві звіра`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 73e98749..4d6495ec 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -281,10 +281,10 @@ dict = { worldState_wolfHunt: `恶狼狩猎 (2025)`, worldState_orphixVenom: `奥影之毒`, worldState_longShadow: `暗夜长影`, - worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_hallowedFlame: `万圣之焰`, worldState_hallowedNightmares: `万圣噩梦`, worldState_hallowedNightmaresRewards: `万圣噩梦奖励设置`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `机械叛乱`, worldState_proxyRebellionRewards: `机械叛乱奖励设置`, worldState_bellyOfTheBeast: `兽之腹`, -- 2.47.2 From e443cd1e4391a97c41886cb81bd053714f9e8075 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Mon, 6 Oct 2025 11:27:48 -0300 Subject: [PATCH 12/34] 2025 alerts --- config-vanilla.json | 1 + src/services/configService.ts | 1 + src/services/missionInventoryUpdateService.ts | 92 ++++++++++++------- src/services/worldStateService.ts | 87 ++++++++++++++++++ src/types/requestTypes.ts | 1 + src/types/worldStateTypes.ts | 26 +++++- 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 | 21 +++-- static/webui/translations/uk.js | 21 +++-- static/webui/translations/zh.js | 1 + 14 files changed, 202 insertions(+), 57 deletions(-) diff --git a/config-vanilla.json b/config-vanilla.json index b8810686..a0e8674f 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -31,6 +31,7 @@ "baroAlwaysAvailable": false, "baroFullyStocked": false, "varziaFullyStocked": false, + "voidCorruption": false, "wolfHunt": false, "orphixVenom": false, "longShadow": false, diff --git a/src/services/configService.ts b/src/services/configService.ts index 0c34e967..39df1756 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -41,6 +41,7 @@ export interface IConfig { baroAlwaysAvailable?: boolean; baroFullyStocked?: boolean; varziaFullyStocked?: boolean; + voidCorruption?: boolean; wolfHunt?: boolean; orphixVenom?: boolean; longShadow?: boolean; diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index dfb6c815..70ade363 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1154,6 +1154,28 @@ export const addMissionRewards = async ( let ConquestCompletedMissionsCount; let missionCompletionCredits = 0; + + if (rewardInfo.alertId) { + const alert = getWorldState().Alerts.find(x => x._id.$oid == rewardInfo.alertId); + if (!alert) { + logger.warn(`mission completed unknown alert`, { alertId: rewardInfo.alertId }); + } else { + inventory.CompletedAlerts ??= []; + if (inventory.CompletedAlerts.includes(alert._id.$oid)) { + logger.debug(`alert ${alert._id.$oid} already completed, skipping alert reward`); + } else { + inventory.CompletedAlerts.push(alert._id.$oid); + if (alert.MissionInfo.missionReward) { + missionCompletionCredits += addFixedLevelRewards( + alert.MissionInfo.missionReward, + MissionRewards, + rewardInfo + ); + } + } + } + } + //inventory change is what the client has not rewarded itself, also the client needs to know the credit changes for display if (rewardInfo.goalId) { @@ -2483,95 +2505,95 @@ const goalMessagesByKey: Record, SORTIE_BOSS_VOR: "SolNode108" }; +const voidCorruptionAlerts = [ + { + _id: { $oid: "677d452e2f324ee7b90f8ccf" }, + Activation: { $date: { $numberLong: "1736524800000" } }, + Expiry: { $date: { $numberLong: "1736784000000" } }, + MissionInfo: { + location: "SolNode61", + missionType: "MT_SABOTAGE", + faction: "FC_CORPUS", + difficulty: 1, + missionReward: { + credits: 30000, + items: ["/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/CorruptedFireRateDamagePistol"] + }, + levelOverride: "/Lotus/Levels/Proc/Corpus/CorpusShipCoreSabotage", + enemySpec: "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSquadA", + extraEnemySpec: "/Lotus/Types/Game/EnemySpecs/GamemodeExtraEnemySpecs/CorpusSabotageTiersA", + minEnemyLevel: 10, + maxEnemyLevel: 15 + } + }, + { + _id: { $oid: "677d45811daeae9de40e8c0f" }, + Activation: { $date: { $numberLong: "1737129600000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, + MissionInfo: { + location: "SettlementNode11", + missionType: "MT_DEFENSE", + faction: "FC_CORPUS", + difficulty: 1, + missionReward: { + credits: 30000, + items: ["/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/CorruptedCritChanceFireRatePistol"] + }, + levelOverride: "/Lotus/Levels/Proc/Corpus/CorpusShipDefense", + enemySpec: "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSquadDefenseB", + minEnemyLevel: 20, + maxEnemyLevel: 25, + maxWaveNum: 10 + } + }, + { + _id: { $oid: "677d45a494ad716c90006b9a" }, + Activation: { $date: { $numberLong: "1737734400000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, + MissionInfo: { + location: "SolNode118", + missionType: "MT_ARTIFACT", + faction: "FC_CORPUS", + difficulty: 1, + missionReward: { + credits: 30000, + items: ["/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/CorruptedCritDamagePistol"] + }, + levelOverride: "/Lotus/Levels/Proc/Corpus/CorpusShipDisruption", + enemySpec: "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSurvivalA", + extraEnemySpec: "/Lotus/Types/Game/EnemySpecs/SpecialMissionSpecs/DisruptionCorpusShip", + customAdvancedSpawners: ["/Lotus/Types/Enemies/AdvancedSpawners/ErrantSpecterInvasion"], + minEnemyLevel: 30, + maxEnemyLevel: 35 + } + }, + { + _id: { $oid: "677d4700682d173abb0e19fe" }, + Activation: { $date: { $numberLong: "1738339200000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, + MissionInfo: { + location: "SolNode4", + missionType: "MT_EXTERMINATION", + faction: "FC_CORPUS", + difficulty: 1, + missionReward: { + credits: 30000, + items: ["/Lotus/StoreItems/Upgrades/Mods/Pistol/DualStat/CorruptedDamageRecoilPistol"] + }, + levelOverride: "/Lotus/Levels/Proc/Corpus/CorpusShipExterminate", + enemySpec: "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipExterminateMixed", + minEnemyLevel: 40, + maxEnemyLevel: 45 + } + } +] satisfies readonly IAlert[]; + const eidolonJobs: readonly string[] = [ "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyCap", @@ -1481,6 +1565,9 @@ export const getWorldState = (buildLabel?: string): IWorldState => { worldState.VoidTraders.push(vt); fullyStockBaro(vt); } + if (config.worldState?.voidCorruption) { + worldState.Alerts.push(...voidCorruptionAlerts.map(alert => structuredClone(alert))); + } const isFebruary = date.getUTCMonth() == 1; if (config.worldState?.starDaysOverride ?? isFebruary) { worldState.Goals.push({ diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 0dac8d75..d762edd8 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -178,6 +178,7 @@ export interface IRewardInfo { goalManifest?: string; invasionId?: string; invasionAllyFaction?: "FC_GRINEER" | "FC_CORPUS"; + alertId?: string; sortieId?: string; sortieTag?: "Mission1" | "Mission2" | "Final"; sortiePrereqs?: string[]; diff --git a/src/types/worldStateTypes.ts b/src/types/worldStateTypes.ts index f39c4bf7..723e8875 100644 --- a/src/types/worldStateTypes.ts +++ b/src/types/worldStateTypes.ts @@ -1,4 +1,4 @@ -import type { IMissionReward } from "warframe-public-export-plus"; +import type { IMissionReward, TFaction } from "warframe-public-export-plus"; import type { IMongoDate, IOid } from "./commonTypes.ts"; export interface IWorldState { @@ -7,7 +7,7 @@ export interface IWorldState { Time: number; InGameMarket: IInGameMarket; Goals: IGoal[]; - Alerts: []; + Alerts: IAlert[]; Sorties: ISortie[]; LiteSorties: ILiteSortie[]; SyndicateMissions: ISyndicateMissionInfo[]; @@ -35,6 +35,28 @@ export interface IWorldState { Tmp?: string; } +export interface IAlert { + _id: IOid; + Activation: IMongoDate; + Expiry: IMongoDate; + MissionInfo: IAlertMissionInfo; +} + +export interface IAlertMissionInfo { + location: string; + missionType: string; + faction: TFaction; + difficulty: number; + missionReward?: IMissionReward; + levelOverride?: string; + enemySpec?: string; + extraEnemySpec?: string; + customAdvancedSpawners?: string[]; + minEnemyLevel?: number; + maxEnemyLevel?: number; + maxWaveNum?: number; +} + export interface IGoal { _id: IOid; Activation: IMongoDate; diff --git a/static/webui/index.html b/static/webui/index.html index ba8e4b78..4f830ccf 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1169,6 +1169,10 @@
+
+ + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index b642b800..77732278 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -279,6 +279,7 @@ dict = { worldState_dogDays: `Hitzefrei`, worldState_dogDaysRewards: `[UNTRANSLATED] Dog Days Rewards`, worldState_wolfHunt: `Wolfsjagd (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, worldState_orphixVenom: `Orphix Gift`, worldState_longShadow: `Lange Schatten`, worldState_hallowedFlame: `Geweihte Flamme`, diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 57a32595..569615e5 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -278,6 +278,7 @@ dict = { worldState_dogDays: `Dog Days`, worldState_dogDaysRewards: `Dog Days Rewards`, worldState_wolfHunt: `Wolf Hunt (2025)`, + worldState_voidCorruption: `Void Corruption (2025)`, worldState_orphixVenom: `Orphix Venom`, worldState_longShadow: `Long Shadow`, worldState_hallowedFlame: `Hallowed Flame`, diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 888f16da..5813151a 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -279,6 +279,7 @@ dict = { worldState_dogDays: `Canícula`, worldState_dogDaysRewards: `Recompensas de Canícula`, worldState_wolfHunt: `Cacería del Lobo (2025)`, + worldState_voidCorruption: `Corrupción del Vacío (2025)`, worldState_orphixVenom: `Veneno de Orphix`, worldState_longShadow: `Sombra Prolongada`, worldState_hallowedFlame: `Llama Sagrada`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 66fbad3c..d6e2a8a6 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -279,6 +279,7 @@ dict = { worldState_dogDays: `Bataille d'Eau`, worldState_dogDaysRewards: `Récompenses de la Bataille d'Eau`, worldState_wolfHunt: `Chasse au Loup (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, worldState_orphixVenom: `Venin Orphix`, worldState_longShadow: `La Propagation des Ombres`, worldState_hallowedFlame: `Flamme Hantée`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 4de12099..689655d0 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -1,6 +1,6 @@ // Russian translation by AMelonInsideLemon, LoseFace dict = { - general_inventoryUpdateNote: `Примечание: Чтобы увидеть изменения в игре, вам нужно повторно синхронизировать свой инвентарь, например, используя команду загрузчика /sync в чате игры, посетив Додзё/Реле или перезагрузив игру.`, + general_inventoryUpdateNote: `Примечание: Чтобы увидеть изменения в игре, вам нужно повторно синхронизировать свой инвентарь, например, используя команду /sync в программе bootstrapper, посетив Додзё/Реле или перезагрузив игру.`, general_inventoryUpdateNoteGameWs: `Примечание: для того, чтобы изменения вступили в силу, может потребоваться повторно открыть меню, в котором вы находитесь.`, general_addButton: `Добавить`, general_setButton: `Установить`, @@ -45,7 +45,7 @@ dict = { code_rank: `Ранг`, code_rankUp: `Повысить ранг`, code_rankDown: `Понизить ранг`, - code_unlockLevelCap: `Разблокировать ограничение уровня`, + code_unlockLevelCap: `[UNTRANSLATED] Unlock level cap`, code_count: `Количество`, code_focusAllUnlocked: `Все школы Фокуса уже разблокированы.`, code_focusUnlocked: `Разблокировано |COUNT| новых школ Фокуса! Для отображения изменений в игре потребуется обновление инвентаря. Посещение навигации — самый простой способ этого добиться.`, @@ -227,7 +227,7 @@ dict = { cheats_baroFullyStocked: `Баро полностью укомплектован`, cheats_syndicateMissionsRepeatable: `Повторять миссии синдиката`, cheats_unlockAllProfitTakerStages: `Разблокировать все этапы Сферы извлечения прибыли`, - cheats_unlockSuccInventory: `Успех. Обратите внимание, что вам необходимо будет повторно синхронизировать свой инвентарь, например, с помощью команды загрузчика /sync в чате игры, посетив Додзё/Реле или повторно войдя в игру.`, + cheats_unlockSuccInventory: `Успех. Обратите внимание, что вам необходимо будет повторно синхронизировать свой инвентарь, например, с помощью команды /sync в программе bootstrapper, посетив Додзё/Реле или повторно войдя в игру.`, cheats_instantFinishRivenChallenge: `Мгновенное завершение испытания мода Разлома`, cheats_instantResourceExtractorDrones: `Мгновенно добывающие Дроны-сборщики`, cheats_noResourceExtractorDronesDamage: `Без урона по Дронам-сборщикам`, @@ -257,12 +257,12 @@ dict = { cheats_changeButton: `Изменить`, cheats_markAllAsRead: `Пометить все входящие как прочитанные`, cheats_finishInvasionsInOneMission: `Завершать вторжение за одну миссию`, - cheats_nemesisHenchmenKillsMultiplierGrineer: `Мультипликатор прогресса ярости (Гринир)`, - cheats_nemesisHenchmenKillsMultiplierCorpus: `Мультипликатор прогресса ярости (Корпус)`, - cheats_nemesisAntivirusGainMultiplier: `Мультипликатор прогресса антивируса`, - cheats_nemesisHintProgressMultiplierGrineer: `Мультипликатор прогресса подсказки (Гринир)`, - cheats_nemesisHintProgressMultiplierCorpus: `Мультипликатор прогресса подсказки (Корпус)`, - cheats_nemesisExtraWeapon: `Дополнительное оружие/активный Кардиомиоцит за победу над Противником (0 для отключения)`, + cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`, + cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`, + cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`, + cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`, + cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`, + cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`, worldState: `Состояние мира`, worldState_creditBoost: `Глобальный бустер Кредитов`, @@ -279,12 +279,13 @@ dict = { worldState_dogDays: `Знойные дни`, worldState_dogDaysRewards: `Награды Знойных дней`, worldState_wolfHunt: `Волчья Охота (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, worldState_orphixVenom: `Яд Орфикса`, worldState_longShadow: `Длинная Тень`, worldState_hallowedFlame: `Священное пламя`, worldState_hallowedNightmares: `Священные кошмары`, worldState_hallowedNightmaresRewards: `Награды Священных кошмаров`, - worldState_naberusNights: `Ночи Наберуса`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Восстание роботов`, worldState_proxyRebellionRewards: `Награды Восстания роботов`, worldState_bellyOfTheBeast: `Чрево зверя`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index dcfdc95c..267aba69 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -1,6 +1,6 @@ // Ukrainian translation by LoseFace dict = { - general_inventoryUpdateNote: `Пам'ятка: Щоб побачити зміни в грі, вам потрібно повторно синхронізувати своє спорядження, наприклад, використовуючи команду завантажувача /sync у чаті гри, відвідавши Доджьо/Реле або перезавантаживши гру.`, + general_inventoryUpdateNote: `Пам'ятка: Щоб побачити зміни в грі, вам потрібно повторно синхронізувати своє спорядження, наприклад, використовуючи команду /sync в програмі bootstrapper, відвідавши Доджьо/Реле або перезавантаживши гру.`, general_inventoryUpdateNoteGameWs: `Примітка: для відображення змін може знадобитися повторно відкрити меню, в якому ви перебуваєте.`, general_addButton: `Добавити`, general_setButton: `Встановити`, @@ -45,7 +45,7 @@ dict = { code_rank: `Рівень`, code_rankUp: `Підвищити рівень`, code_rankDown: `Понизити рівень`, - code_unlockLevelCap: `Розблокувати обмеження рівня`, + code_unlockLevelCap: `[UNTRANSLATED] Unlock level cap`, code_count: `Кількість`, code_focusAllUnlocked: `Всі школи Фокусу вже розблоковані.`, code_focusUnlocked: `Розблоковано |COUNT| нових шкіл Фокусу! Для відображення змін в грі знадобиться оновлення спорядження. Відвідування навігації — найпростіший спосіб цього досягти.`, @@ -227,7 +227,7 @@ dict = { cheats_baroFullyStocked: `Баро повністю укомплектований`, cheats_syndicateMissionsRepeatable: `Повторювати місії синдиката`, cheats_unlockAllProfitTakerStages: `Розблокувати всі етапи Привласнювачки`, - cheats_unlockSuccInventory: `Успішно. Зверніть увагу, що вам потрібно буде повторно синхронізувати своє спорядження, наприклад, за допомогою команди завантажувача /sync у чаті гри, відвідавши Доджьо/Реле або повторно увійшовши в гру.`, + cheats_unlockSuccInventory: `Успішно. Зверніть увагу, що вам потрібно буде повторно синхронізувати своє спорядження, наприклад, за допомогою команди /sync в програмі bootstrapper, відвідавши Доджьо/Реле або повторно увійшовши в гру.`, cheats_instantFinishRivenChallenge: `Миттєве завершення випробування модифікатора Розколу`, cheats_instantResourceExtractorDrones: `Миттєво добуваючі Дрони-видобувачі`, cheats_noResourceExtractorDronesDamage: `Без шкоди по Дронам-видобувачам`, @@ -257,12 +257,12 @@ dict = { cheats_changeButton: `Змінити`, cheats_markAllAsRead: `Помітити всі вхідні як прочитані`, cheats_finishInvasionsInOneMission: `Завершувати вторгнення за одну місію`, - cheats_nemesisHenchmenKillsMultiplierGrineer: `Множник прогресу люті (Ґрінери)`, - cheats_nemesisHenchmenKillsMultiplierCorpus: `Множник прогресу люті (Корпус)`, - cheats_nemesisAntivirusGainMultiplier: `Мультиплікатор прогресу антивіруса`, - cheats_nemesisHintProgressMultiplierGrineer: `Множник прогресу підсказки (Ґрінери)`, - cheats_nemesisHintProgressMultiplierCorpus: `Множник прогресу підсказки (Корпус)`, - cheats_nemesisExtraWeapon: `Додаткова зброя/Жива сердцевина за перемогу над Недругом (0 для вимкнення)`, + cheats_nemesisHenchmenKillsMultiplierGrineer: `[UNTRANSLATED] Rage Progess Multiplier (Grineer)`, + cheats_nemesisHenchmenKillsMultiplierCorpus: `[UNTRANSLATED] Rage Progess Multiplier (Corpus)`, + cheats_nemesisAntivirusGainMultiplier: `[UNTRANSLATED] Antivirus Progress Multiplier`, + cheats_nemesisHintProgressMultiplierGrineer: `[UNTRANSLATED] Hint Progress Multiplier (Grineer)`, + cheats_nemesisHintProgressMultiplierCorpus: `[UNTRANSLATED] Hint Progress Multiplier (Corpus)`, + cheats_nemesisExtraWeapon: `[UNTRANSLATED] Extra Nemesis Weapon / Token On Vanquish (0 to disable)`, worldState: `Стан світу`, worldState_creditBoost: `Глобальне посилення Кредитів`, @@ -279,12 +279,13 @@ dict = { worldState_dogDays: `Спекотні дні`, worldState_dogDaysRewards: `Нагороди Спекотних днів`, worldState_wolfHunt: `Полювання на Вовка (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, worldState_orphixVenom: `Орфіксова отрута`, worldState_longShadow: `Довга тінь`, worldState_hallowedFlame: `Священне полум'я`, worldState_hallowedNightmares: `Священні жахіття`, worldState_hallowedNightmaresRewards: `Нагороди Священних жахіть`, - worldState_naberusNights: `Наберові ночі`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `Повстання роботів`, worldState_proxyRebellionRewards: `Нагороди Повстання роботів`, worldState_bellyOfTheBeast: `У лігві звіра`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index 97a24244..cb581106 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -279,6 +279,7 @@ dict = { worldState_dogDays: `三伏天`, worldState_dogDaysRewards: `三伏天奖励设置`, worldState_wolfHunt: `恶狼狩猎 (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, worldState_orphixVenom: `奥影之毒`, worldState_longShadow: `暗夜长影`, worldState_hallowedFlame: `万圣之焰`, -- 2.47.2 From b4400b1946bea667fae4ad7a3d2d4c50402dba0e Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Mon, 6 Oct 2025 11:36:11 -0300 Subject: [PATCH 13/34] dumbass --- src/services/missionInventoryUpdateService.ts | 70 +++++++++---------- static/webui/translations/ru.js | 20 +++--- static/webui/translations/uk.js | 20 +++--- 3 files changed, 55 insertions(+), 55 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 70ade363..a94d2db0 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -2505,95 +2505,95 @@ const goalMessagesByKey: Record Date: Mon, 6 Oct 2025 13:12:26 -0700 Subject: [PATCH 14/34] Fix I think --- src/types/inventoryTypes/inventoryTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 83d00c1d..6c32e851 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -314,7 +314,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu DeathMarks: string[]; FusionTreasures: IFusionTreasure[]; //WebFlags: IWebFlags; - CompletedAlerts: string[]; + CompletedAlerts?: string[]; Consumables: ITypeCount[]; LevelKeys: ITypeCount[]; TauntHistory?: ITaunt[]; -- 2.47.2 From bb8d766971856af2260ba04363514dcea4a922c8 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Mon, 6 Oct 2025 17:42:39 -0700 Subject: [PATCH 15/34] Update waves --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 0e8af383..708306d3 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -151,7 +151,7 @@ const voidCorruptionAlerts = [ enemySpec: "/Lotus/Types/Game/EnemySpecs/CorpusShipEnemySpecs/CorpusShipSquadDefenseB", minEnemyLevel: 20, maxEnemyLevel: 25, - maxWaveNum: 10 + maxWaveNum: 6 } }, { -- 2.47.2 From 0615656674fde274f6c6ca4685a84e4574d59a3c Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Mon, 6 Oct 2025 18:12:26 -0700 Subject: [PATCH 16/34] Update src/services/missionInventoryUpdateService.ts --- src/services/missionInventoryUpdateService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index a94d2db0..e3621a8e 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1160,7 +1160,6 @@ export const addMissionRewards = async ( if (!alert) { logger.warn(`mission completed unknown alert`, { alertId: rewardInfo.alertId }); } else { - inventory.CompletedAlerts ??= []; if (inventory.CompletedAlerts.includes(alert._id.$oid)) { logger.debug(`alert ${alert._id.$oid} already completed, skipping alert reward`); } else { -- 2.47.2 From 2fda5c7de5c179dd65eab47356edc1f051f3482b Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Mon, 6 Oct 2025 18:12:46 -0700 Subject: [PATCH 17/34] Update src/types/inventoryTypes/inventoryTypes.ts --- src/types/inventoryTypes/inventoryTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 6c32e851..83d00c1d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -314,7 +314,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu DeathMarks: string[]; FusionTreasures: IFusionTreasure[]; //WebFlags: IWebFlags; - CompletedAlerts?: string[]; + CompletedAlerts: string[]; Consumables: ITypeCount[]; LevelKeys: ITypeCount[]; TauntHistory?: ITaunt[]; -- 2.47.2 From 88a765cda0e04a3a5998448013cd2667a1a38681 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 04:05:41 -0700 Subject: [PATCH 18/34] Update src/types/worldStateTypes.ts --- src/types/worldStateTypes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/worldStateTypes.ts b/src/types/worldStateTypes.ts index 723e8875..77bdc3be 100644 --- a/src/types/worldStateTypes.ts +++ b/src/types/worldStateTypes.ts @@ -7,7 +7,7 @@ export interface IWorldState { Time: number; InGameMarket: IInGameMarket; Goals: IGoal[]; - Alerts: IAlert[]; + Alerts: readonly IAlert[]; Sorties: ISortie[]; LiteSorties: ILiteSortie[]; SyndicateMissions: ISyndicateMissionInfo[]; -- 2.47.2 From 34d0ec50671c5bc46c2e113a932b66c2dee1e593 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 04:06:36 -0700 Subject: [PATCH 19/34] Update src/services/worldStateService.ts --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 708306d3..4aa6ac5c 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1566,7 +1566,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { fullyStockBaro(vt); } if (config.worldState?.voidCorruption) { - worldState.Alerts.push(...voidCorruptionAlerts.map(alert => structuredClone(alert))); + worldState.Alerts.push(...voidCorruptionAlerts); } const isFebruary = date.getUTCMonth() == 1; if (config.worldState?.starDaysOverride ?? isFebruary) { -- 2.47.2 From b3e003672e38f1085c8eee8170e0dcf1affc05a4 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 04:09:18 -0700 Subject: [PATCH 20/34] Update src/services/worldStateService.ts --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 4aa6ac5c..6105aea5 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1566,7 +1566,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { fullyStockBaro(vt); } if (config.worldState?.voidCorruption) { - worldState.Alerts.push(...voidCorruptionAlerts); + worldState.Alerts = [...worldState.Alerts, ...voidCorruptionAlerts]; } const isFebruary = date.getUTCMonth() == 1; if (config.worldState?.starDaysOverride ?? isFebruary) { -- 2.47.2 From 0d394d4591b2e5a45a3aa1f5089336cc136e940f Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 10:13:55 -0300 Subject: [PATCH 21/34] enabling by week --- config-vanilla.json | 2 +- src/services/configService.ts | 2 +- src/services/worldStateService.ts | 11 ++++++++--- static/webui/index.html | 15 +++++++++++---- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/config-vanilla.json b/config-vanilla.json index a0e8674f..c11e8621 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -31,7 +31,6 @@ "baroAlwaysAvailable": false, "baroFullyStocked": false, "varziaFullyStocked": false, - "voidCorruption": false, "wolfHunt": false, "orphixVenom": false, "longShadow": false, @@ -42,6 +41,7 @@ "naberusNightsOverride": null, "proxyRebellion": false, "proxyRebellionRewardsOverride": 0, + "voidCorruption": 0, "galleonOfGhouls": 0, "ghoulEmergenceOverride": null, "plagueStarOverride": null, diff --git a/src/services/configService.ts b/src/services/configService.ts index 39df1756..a9dabaa4 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -41,7 +41,6 @@ export interface IConfig { baroAlwaysAvailable?: boolean; baroFullyStocked?: boolean; varziaFullyStocked?: boolean; - voidCorruption?: boolean; wolfHunt?: boolean; orphixVenom?: boolean; longShadow?: boolean; @@ -52,6 +51,7 @@ export interface IConfig { naberusNightsOverride?: boolean; proxyRebellion?: boolean; proxyRebellionRewardsOverride?: number; + voidCorruption?: number; galleonOfGhouls?: number; ghoulEmergenceOverride?: boolean; plagueStarOverride?: boolean; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 6105aea5..8f2b9ac2 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -117,7 +117,7 @@ const voidCorruptionAlerts = [ { _id: { $oid: "677d452e2f324ee7b90f8ccf" }, Activation: { $date: { $numberLong: "1736524800000" } }, - Expiry: { $date: { $numberLong: "1736784000000" } }, + Expiry: { $date: { $numberLong: "2000000000000" } }, MissionInfo: { location: "SolNode61", missionType: "MT_SABOTAGE", @@ -1565,8 +1565,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => { worldState.VoidTraders.push(vt); fullyStockBaro(vt); } - if (config.worldState?.voidCorruption) { - worldState.Alerts = [...worldState.Alerts, ...voidCorruptionAlerts]; + const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; + + if (voidCorruptionWeeks > 0) { + worldState.Alerts = [ + ...worldState.Alerts, + ...voidCorruptionAlerts.slice(0, voidCorruptionWeeks) + ]; } const isFebruary = date.getUTCMonth() == 1; if (config.worldState?.starDaysOverride ?? isFebruary) { diff --git a/static/webui/index.html b/static/webui/index.html index 4f830ccf..bc5c6406 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1169,10 +1169,7 @@
-
- - -
+
@@ -1236,6 +1233,16 @@
+
+ + +
-- 2.47.2 From d9349137de5c1cac76c544eabac5dda8d1c4088b Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 06:18:40 -0700 Subject: [PATCH 22/34] Update src/services/worldStateService.ts --- src/services/worldStateService.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 8f2b9ac2..c7c04fbc 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1565,14 +1565,15 @@ export const getWorldState = (buildLabel?: string): IWorldState => { worldState.VoidTraders.push(vt); fullyStockBaro(vt); } - const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; + const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; if (voidCorruptionWeeks > 0) { worldState.Alerts = [ ...worldState.Alerts, ...voidCorruptionAlerts.slice(0, voidCorruptionWeeks) ]; } + const isFebruary = date.getUTCMonth() == 1; if (config.worldState?.starDaysOverride ?? isFebruary) { worldState.Goals.push({ -- 2.47.2 From 55adf8185e97a1abe608503694250502d5170152 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 06:25:23 -0700 Subject: [PATCH 23/34] Update src/services/worldStateService.ts --- src/services/worldStateService.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index c7c04fbc..0d87a57c 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1568,10 +1568,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; if (voidCorruptionWeeks > 0) { - worldState.Alerts = [ - ...worldState.Alerts, - ...voidCorruptionAlerts.slice(0, voidCorruptionWeeks) - ]; + worldState.Alerts = [...worldState.Alerts, ...voidCorruptionAlerts.slice(0, voidCorruptionWeeks)]; } const isFebruary = date.getUTCMonth() == 1; -- 2.47.2 From 5a8be1c48300ef2908bac82031d30ae9000cb479 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 07:34:51 -0700 Subject: [PATCH 24/34] remove slice --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 0d87a57c..9b03bf17 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1568,7 +1568,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; if (voidCorruptionWeeks > 0) { - worldState.Alerts = [...worldState.Alerts, ...voidCorruptionAlerts.slice(0, voidCorruptionWeeks)]; + worldState.Alerts = [...worldState.Alerts, voidCorruptionAlerts[voidCorruptionWeeks - 1]]; } const isFebruary = date.getUTCMonth() == 1; -- 2.47.2 From c9170b4086d7ad13d4ce7eb533d74d963c209fb6 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 17:17:34 -0300 Subject: [PATCH 25/34] toggles --- config-vanilla.json | 5 ++++- src/services/configService.ts | 5 ++++- src/services/worldStateService.ts | 16 +++++++++++++--- static/webui/index.html | 29 +++++++++++++++++++---------- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/config-vanilla.json b/config-vanilla.json index c11e8621..990b017e 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -41,7 +41,10 @@ "naberusNightsOverride": null, "proxyRebellion": false, "proxyRebellionRewardsOverride": 0, - "voidCorruption": 0, + "voidCorruptionWeek1": false, + "voidCorruptionWeek2": false, + "voidCorruptionWeek3": false, + "voidCorruptionWeek4": false, "galleonOfGhouls": 0, "ghoulEmergenceOverride": null, "plagueStarOverride": null, diff --git a/src/services/configService.ts b/src/services/configService.ts index a9dabaa4..c3d41987 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -51,7 +51,10 @@ export interface IConfig { naberusNightsOverride?: boolean; proxyRebellion?: boolean; proxyRebellionRewardsOverride?: number; - voidCorruption?: number; + voidCorruptionWeek1?: boolean; + voidCorruptionWeek2?: boolean; + voidCorruptionWeek3?: boolean; + voidCorruptionWeek4?: boolean; galleonOfGhouls?: number; ghoulEmergenceOverride?: boolean; plagueStarOverride?: boolean; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 9b03bf17..6363440b 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1566,9 +1566,19 @@ export const getWorldState = (buildLabel?: string): IWorldState => { fullyStockBaro(vt); } - const voidCorruptionWeeks = config.worldState?.voidCorruption ?? 0; - if (voidCorruptionWeeks > 0) { - worldState.Alerts = [...worldState.Alerts, voidCorruptionAlerts[voidCorruptionWeeks - 1]]; + const vcWeeks = [ + ["voidCorruptionWeek1", 0], + ["voidCorruptionWeek2", 1], + ["voidCorruptionWeek3", 2], + ["voidCorruptionWeek4", 3], + ] as const; + + const selected = vcWeeks + .filter(([flag]) => (config.worldState as any)?.[flag]) + .map(([, idx]) => voidCorruptionAlerts[idx]); + + if (selected.length) { + worldState.Alerts = [...worldState.Alerts, ...selected]; } const isFebruary = date.getUTCMonth() == 1; diff --git a/static/webui/index.html b/static/webui/index.html index bc5c6406..216b34d8 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1233,16 +1233,25 @@
-
- - -
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
-- 2.47.2 From 8957da527549df04b15910ab7dc828d8800451c8 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 13:23:12 -0700 Subject: [PATCH 26/34] lint:ci fix --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 6363440b..70d16e0c 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1574,7 +1574,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { ] as const; const selected = vcWeeks - .filter(([flag]) => (config.worldState as any)?.[flag]) + .filter(([flag]) => (config.worldState)?.[flag]) .map(([, idx]) => voidCorruptionAlerts[idx]); if (selected.length) { -- 2.47.2 From 9b1db045a8df424a7235621c05ec27a5c0cf4ac3 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 13:25:32 -0700 Subject: [PATCH 27/34] prettier --- src/services/worldStateService.ts | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 70d16e0c..2595d9a9 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1567,15 +1567,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => { } const vcWeeks = [ - ["voidCorruptionWeek1", 0], - ["voidCorruptionWeek2", 1], - ["voidCorruptionWeek3", 2], - ["voidCorruptionWeek4", 3], + ["voidCorruptionWeek1", 0], + ["voidCorruptionWeek2", 1], + ["voidCorruptionWeek3", 2], + ["voidCorruptionWeek4", 3], ] as const; - const selected = vcWeeks - .filter(([flag]) => (config.worldState)?.[flag]) - .map(([, idx]) => voidCorruptionAlerts[idx]); + const selected = vcWeeks.filter(([flag]) => config.worldState?.[flag]).map(([, idx]) => voidCorruptionAlerts[idx]); if (selected.length) { worldState.Alerts = [...worldState.Alerts, ...selected]; -- 2.47.2 From be1b2a40e3f0c4553896e234d493339b81ba8be0 Mon Sep 17 00:00:00 2001 From: Slayer55555 Date: Tue, 7 Oct 2025 13:29:30 -0700 Subject: [PATCH 28/34] remove unnecessary comma --- src/services/worldStateService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 2595d9a9..742c41c0 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -1570,7 +1570,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => { ["voidCorruptionWeek1", 0], ["voidCorruptionWeek2", 1], ["voidCorruptionWeek3", 2], - ["voidCorruptionWeek4", 3], + ["voidCorruptionWeek4", 3] ] as const; const selected = vcWeeks.filter(([flag]) => config.worldState?.[flag]).map(([, idx]) => voidCorruptionAlerts[idx]); -- 2.47.2 From e9e8eea8015e4a3902889cf12cd7bb1d64e42e54 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:25:57 +0200 Subject: [PATCH 29/34] fix margin --- static/webui/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/static/webui/index.html b/static/webui/index.html index 216b34d8..2ada48ca 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1233,6 +1233,7 @@
+
@@ -1252,6 +1253,7 @@
+
-- 2.47.2 From 8d4abe863c0dedb7604b41b0a89bfff5a36f6a67 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:34:34 +0200 Subject: [PATCH 30/34] simplify worldState logic --- src/services/worldStateService.ts | 29 ++++++++++++----------------- src/types/worldStateTypes.ts | 2 +- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 742c41c0..526f313b 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -113,8 +113,8 @@ const sortieBossNode: Record, SORTIE_BOSS_VOR: "SolNode108" }; -const voidCorruptionAlerts = [ - { +const configAlerts: Record = { + voidCorruptionWeek1: { _id: { $oid: "677d452e2f324ee7b90f8ccf" }, Activation: { $date: { $numberLong: "1736524800000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -134,7 +134,7 @@ const voidCorruptionAlerts = [ maxEnemyLevel: 15 } }, - { + voidCorruptionWeek2: { _id: { $oid: "677d45811daeae9de40e8c0f" }, Activation: { $date: { $numberLong: "1737129600000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -154,7 +154,7 @@ const voidCorruptionAlerts = [ maxWaveNum: 6 } }, - { + voidCorruptionWeek3: { _id: { $oid: "677d45a494ad716c90006b9a" }, Activation: { $date: { $numberLong: "1737734400000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -175,7 +175,7 @@ const voidCorruptionAlerts = [ maxEnemyLevel: 35 } }, - { + voidCorruptionWeek4: { _id: { $oid: "677d4700682d173abb0e19fe" }, Activation: { $date: { $numberLong: "1738339200000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -194,7 +194,7 @@ const voidCorruptionAlerts = [ maxEnemyLevel: 45 } } -] satisfies readonly IAlert[]; +}; const eidolonJobs: readonly string[] = [ "/Lotus/Types/Gameplay/Eidolon/Jobs/AssassinateBountyAss", @@ -1566,17 +1566,12 @@ export const getWorldState = (buildLabel?: string): IWorldState => { fullyStockBaro(vt); } - const vcWeeks = [ - ["voidCorruptionWeek1", 0], - ["voidCorruptionWeek2", 1], - ["voidCorruptionWeek3", 2], - ["voidCorruptionWeek4", 3] - ] as const; - - const selected = vcWeeks.filter(([flag]) => config.worldState?.[flag]).map(([, idx]) => voidCorruptionAlerts[idx]); - - if (selected.length) { - worldState.Alerts = [...worldState.Alerts, ...selected]; + if (config.worldState) { + for (const [key, alert] of Object.entries(configAlerts)) { + if (config.worldState[key as keyof typeof config.worldState]) { + worldState.Alerts.push(alert); + } + } } const isFebruary = date.getUTCMonth() == 1; diff --git a/src/types/worldStateTypes.ts b/src/types/worldStateTypes.ts index 77bdc3be..723e8875 100644 --- a/src/types/worldStateTypes.ts +++ b/src/types/worldStateTypes.ts @@ -7,7 +7,7 @@ export interface IWorldState { Time: number; InGameMarket: IInGameMarket; Goals: IGoal[]; - Alerts: readonly IAlert[]; + Alerts: IAlert[]; Sorties: ISortie[]; LiteSorties: ILiteSortie[]; SyndicateMissions: ISyndicateMissionInfo[]; -- 2.47.2 From 274b0a3a4a5c136b9f6746f2055516d5b0f474ce Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:38:29 +0200 Subject: [PATCH 31/34] be explicit about the year --- config-vanilla.json | 8 ++++---- src/services/configService.ts | 8 ++++---- src/services/worldStateService.ts | 8 ++++---- static/webui/index.html | 2 +- static/webui/translations/en.js | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/config-vanilla.json b/config-vanilla.json index 990b017e..fef4a021 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -41,10 +41,10 @@ "naberusNightsOverride": null, "proxyRebellion": false, "proxyRebellionRewardsOverride": 0, - "voidCorruptionWeek1": false, - "voidCorruptionWeek2": false, - "voidCorruptionWeek3": false, - "voidCorruptionWeek4": false, + "voidCorruption2025Week1": false, + "voidCorruption2025Week2": false, + "voidCorruption2025Week3": false, + "voidCorruption2025Week4": false, "galleonOfGhouls": 0, "ghoulEmergenceOverride": null, "plagueStarOverride": null, diff --git a/src/services/configService.ts b/src/services/configService.ts index c3d41987..0eface6b 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -51,10 +51,10 @@ export interface IConfig { naberusNightsOverride?: boolean; proxyRebellion?: boolean; proxyRebellionRewardsOverride?: number; - voidCorruptionWeek1?: boolean; - voidCorruptionWeek2?: boolean; - voidCorruptionWeek3?: boolean; - voidCorruptionWeek4?: boolean; + voidCorruption2025Week1?: boolean; + voidCorruption2025Week2?: boolean; + voidCorruption2025Week3?: boolean; + voidCorruption2025Week4?: boolean; galleonOfGhouls?: number; ghoulEmergenceOverride?: boolean; plagueStarOverride?: boolean; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index 526f313b..fb8fb029 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -114,7 +114,7 @@ const sortieBossNode: Record, }; const configAlerts: Record = { - voidCorruptionWeek1: { + voidCorruption2025Week1: { _id: { $oid: "677d452e2f324ee7b90f8ccf" }, Activation: { $date: { $numberLong: "1736524800000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -134,7 +134,7 @@ const configAlerts: Record = { maxEnemyLevel: 15 } }, - voidCorruptionWeek2: { + voidCorruption2025Week2: { _id: { $oid: "677d45811daeae9de40e8c0f" }, Activation: { $date: { $numberLong: "1737129600000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -154,7 +154,7 @@ const configAlerts: Record = { maxWaveNum: 6 } }, - voidCorruptionWeek3: { + voidCorruption2025Week3: { _id: { $oid: "677d45a494ad716c90006b9a" }, Activation: { $date: { $numberLong: "1737734400000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, @@ -175,7 +175,7 @@ const configAlerts: Record = { maxEnemyLevel: 35 } }, - voidCorruptionWeek4: { + voidCorruption2025Week4: { _id: { $oid: "677d4700682d173abb0e19fe" }, Activation: { $date: { $numberLong: "1738339200000" } }, Expiry: { $date: { $numberLong: "2000000000000" } }, diff --git a/static/webui/index.html b/static/webui/index.html index 2ada48ca..0bc6fb90 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1234,7 +1234,7 @@
- +
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js index 569615e5..33ae5fa7 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -278,7 +278,7 @@ dict = { worldState_dogDays: `Dog Days`, worldState_dogDaysRewards: `Dog Days Rewards`, worldState_wolfHunt: `Wolf Hunt (2025)`, - worldState_voidCorruption: `Void Corruption (2025)`, + worldState_voidCorruption: `Void Corruption (|VAL|)`, worldState_orphixVenom: `Orphix Venom`, worldState_longShadow: `Long Shadow`, worldState_hallowedFlame: `Hallowed Flame`, -- 2.47.2 From 0d78dd602330254354bfe7c3cc926ea5ff2703ef Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:40:34 +0200 Subject: [PATCH 32/34] fixup --- static/webui/translations/de.js | 2 +- static/webui/translations/fr.js | 2 +- static/webui/translations/ru.js | 2 +- static/webui/translations/uk.js | 2 +- static/webui/translations/zh.js | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 77732278..540de36f 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `Hitzefrei`, worldState_dogDaysRewards: `[UNTRANSLATED] Dog Days Rewards`, worldState_wolfHunt: `Wolfsjagd (2025)`, - worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (|VAL|)`, worldState_orphixVenom: `Orphix Gift`, worldState_longShadow: `Lange Schatten`, worldState_hallowedFlame: `Geweihte Flamme`, diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index d6e2a8a6..3e7e2434 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `Bataille d'Eau`, worldState_dogDaysRewards: `Récompenses de la Bataille d'Eau`, worldState_wolfHunt: `Chasse au Loup (2025)`, - worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (|VAL|)`, worldState_orphixVenom: `Venin Orphix`, worldState_longShadow: `La Propagation des Ombres`, worldState_hallowedFlame: `Flamme Hantée`, diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js index 9ca676b6..c4ab0386 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `Знойные дни`, worldState_dogDaysRewards: `Награды Знойных дней`, worldState_wolfHunt: `Волчья Охота (2025)`, - worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (|VAL|)`, worldState_orphixVenom: `Яд Орфикса`, worldState_longShadow: `Длинная Тень`, worldState_hallowedFlame: `Священное пламя`, diff --git a/static/webui/translations/uk.js b/static/webui/translations/uk.js index 9b1c0311..ffb3d11a 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `Спекотні дні`, worldState_dogDaysRewards: `Нагороди Спекотних днів`, worldState_wolfHunt: `Полювання на Вовка (2025)`, - worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (|VAL|)`, worldState_orphixVenom: `Орфіксова отрута`, worldState_longShadow: `Довга тінь`, worldState_hallowedFlame: `Священне полум'я`, diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js index cb581106..0230716e 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `三伏天`, worldState_dogDaysRewards: `三伏天奖励设置`, worldState_wolfHunt: `恶狼狩猎 (2025)`, - worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (2025)`, + worldState_voidCorruption: `[UNTRANSLATED] Void Corruption (|VAL|)`, worldState_orphixVenom: `奥影之毒`, worldState_longShadow: `暗夜长影`, worldState_hallowedFlame: `万圣之焰`, -- 2.47.2 From 709f7e727759734f3750a2625dd808b00b4dd40a Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:40:25 +0200 Subject: [PATCH 33/34] diff reduction --- static/webui/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/static/webui/index.html b/static/webui/index.html index 0bc6fb90..70703102 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1169,7 +1169,6 @@
-
-- 2.47.2 From e0e7a24e4452ac095b34cf348fddb0a99d6df751 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 8 Oct 2025 08:41:30 +0200 Subject: [PATCH 34/34] update es --- static/webui/translations/es.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js index 5813151a..267e66c3 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -279,7 +279,7 @@ dict = { worldState_dogDays: `Canícula`, worldState_dogDaysRewards: `Recompensas de Canícula`, worldState_wolfHunt: `Cacería del Lobo (2025)`, - worldState_voidCorruption: `Corrupción del Vacío (2025)`, + worldState_voidCorruption: `Corrupción del Vacío (|VAL|)`, worldState_orphixVenom: `Veneno de Orphix`, worldState_longShadow: `Sombra Prolongada`, worldState_hallowedFlame: `Llama Sagrada`, -- 2.47.2