From 9426359370211325df777d780c6018d5b3de6d6a Mon Sep 17 00:00:00 2001 From: Gian Date: Mon, 29 Sep 2025 23:59:17 -0700 Subject: [PATCH] feat: Nights of Naberus (#2817) Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2817 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: Gian Co-committed-by: Gian --- config-vanilla.json | 1 + src/services/configService.ts | 1 + src/services/worldStateService.ts | 31 +++++++++++++++++++++++++++++++ static/webui/index.html | 8 ++++++++ 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, 48 insertions(+) diff --git a/config-vanilla.json b/config-vanilla.json index 887a2141..b8810686 100644 --- a/config-vanilla.json +++ b/config-vanilla.json @@ -38,6 +38,7 @@ "anniversary": null, "hallowedNightmares": false, "hallowedNightmaresRewardsOverride": 0, + "naberusNightsOverride": null, "proxyRebellion": false, "proxyRebellionRewardsOverride": 0, "galleonOfGhouls": 0, diff --git a/src/services/configService.ts b/src/services/configService.ts index 238cb368..0c34e967 100644 --- a/src/services/configService.ts +++ b/src/services/configService.ts @@ -48,6 +48,7 @@ export interface IConfig { anniversary?: number; hallowedNightmares?: boolean; hallowedNightmaresRewardsOverride?: number; + naberusNightsOverride?: boolean; proxyRebellion?: boolean; proxyRebellionRewardsOverride?: number; galleonOfGhouls?: number; diff --git a/src/services/worldStateService.ts b/src/services/worldStateService.ts index df35d988..716edee4 100644 --- a/src/services/worldStateService.ts +++ b/src/services/worldStateService.ts @@ -2504,6 +2504,37 @@ export const getWorldState = (buildLabel?: string): IWorldState => { BonusReward: { items: ["/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"] } }); } + + const isOctober = date.getUTCMonth() == 9; // October = month index 9 + if (config.worldState?.naberusNightsOverride ?? isOctober) { + worldState.Goals.push({ + _id: { $oid: "66fd602de1778d583419e8e7" }, + Activation: { + $date: { + $numberLong: config.worldState?.naberusNightsOverride + ? "1727881200000" + : Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1).toString() + } + }, + Expiry: { + $date: { + $numberLong: config.worldState?.naberusNightsOverride + ? "2000000000000" + : Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + 1, 1).toString() + } + }, + 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..ba8e4b78 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -1207,6 +1207,14 @@ +
+ + +
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js index 6608ac2e..473294a0 100644 --- a/static/webui/translations/de.js +++ b/static/webui/translations/de.js @@ -284,6 +284,7 @@ dict = { 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 792ba3fe..cdb850fa 100644 --- a/static/webui/translations/en.js +++ b/static/webui/translations/en.js @@ -283,6 +283,7 @@ dict = { 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 cb7cb419..bee464df 100644 --- a/static/webui/translations/es.js +++ b/static/webui/translations/es.js @@ -284,6 +284,7 @@ dict = { 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 fbff6516..66fbad3c 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -284,6 +284,7 @@ dict = { 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 3174df2e..bdabbfb7 100644 --- a/static/webui/translations/ru.js +++ b/static/webui/translations/ru.js @@ -284,6 +284,7 @@ dict = { 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 ff679a6a..7f5e38d9 100644 --- a/static/webui/translations/uk.js +++ b/static/webui/translations/uk.js @@ -284,6 +284,7 @@ dict = { 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 e3d227ba..4d6495ec 100644 --- a/static/webui/translations/zh.js +++ b/static/webui/translations/zh.js @@ -284,6 +284,7 @@ dict = { worldState_hallowedFlame: `万圣之焰`, worldState_hallowedNightmares: `万圣噩梦`, worldState_hallowedNightmaresRewards: `万圣噩梦奖励设置`, + worldState_naberusNights: `[UNTRANSLATED] Nights of Naberus`, worldState_proxyRebellion: `机械叛乱`, worldState_proxyRebellionRewards: `机械叛乱奖励设置`, worldState_bellyOfTheBeast: `兽之腹`,