返回提交历史
Modified
README.md
+1
-0
Modified
src/constants/gameToBuildVersion.ts
+1
-0
Modified
src/services/worldStateService.ts
+6
-1
Modified
static/webui/index.html
+1
-0
Modified
static/webui/translations/de.js
+1
-0
Modified
static/webui/translations/en.js
+1
-0
Modified
static/webui/translations/es.js
+1
-0
Modified
static/webui/translations/fr.js
+1
-0
Modified
static/webui/translations/ru.js
+1
-0
Modified
static/webui/translations/uk.js
+1
-0
Modified
static/webui/translations/zh.js
+1
-0
XFEstudio/XFESpaceNinjaServer
feat: nightwave time tempests (#3789)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3789 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
0c66ea94
代码差异
11 个文件
+16
-1
@@ -22,6 +22,7 @@ SpaceNinjaServer requires a `config.json`. To set it up, you can copy the [confi
22
22
- `worldState.vallisOverride` can be set to `warm` or `cold` to lock the temperature on Orb Vallis.
23
23
- `worldState.duviriOverride` can be set to `joy`, `anger`, `envy`, `sorrow`, or `fear` to lock the Duviri spiral.
24
24
- `worldState.nightwaveOverride` will lock the nightwave season, assuming the client is new enough for it. Valid values:
25
- `RadioLegionIntermission15Syndicate` for Nora's Mix: Time Tempests
25
26
- `RadioLegionIntermission14Syndicate` for Nora's Mix: Dreams of the Dead
26
27
- `RadioLegionIntermission13Syndicate` for Nora's Mix Vol. 9
27
28
- `RadioLegionIntermission12Syndicate` for Nora's Mix Vol. 8
@@ -1,4 +1,5 @@
1
1
const gameToBuildVersion = {
2
"42.0.6": "2026.04.07.14.59",
2
3
"42.0.0": "2026.03.24.16.59",
3
4
"41.0.0": "2025.12.09.14.18",
4
5
"40.0.0": "2025.09.25.17.01",
@@ -4589,7 +4589,10 @@ export const getNightwaveSyndicateTag = (buildLabel: string | undefined): string
4589
4589
valid_values: Object.keys(nightwaveTagToSeason)
4590
4590
});
4591
4591
}
4592
if (!buildLabel || version_compare(buildLabel, gameToBuildVersion["40.0.0"]) >= 0) {
4592
if (!buildLabel || version_compare(buildLabel, gameToBuildVersion["42.0.6"]) >= 0) {
4593
return "RadioLegionIntermission15Syndicate";
4594
}
4595
if (version_compare(buildLabel, gameToBuildVersion["40.0.0"]) >= 0) {
4593
4596
return "RadioLegionIntermission14Syndicate";
4594
4597
}
4595
4598
if (version_compare(buildLabel, gameToBuildVersion["38.6.0"]) >= 0) {
@@ -4611,6 +4614,7 @@ export const getNightwaveSyndicateTag = (buildLabel: string | undefined): string
4611
4614
};
4612
4615
4613
4616
export const nightwaveTagToSeason: Record<string, number> = {
4617
RadioLegionIntermission15Syndicate: 17, // Nora's Mix: Time Tempests
4614
4618
RadioLegionIntermission14Syndicate: 16, // Nora's Mix: Dreams of the Dead
4615
4619
RadioLegionIntermission13Syndicate: 15, // Nora's Mix Vol. 9
4616
4620
RadioLegionIntermission12Syndicate: 14, // Nora's Mix Vol. 8
@@ -4631,6 +4635,7 @@ export const nightwaveTagToSeason: Record<string, number> = {
4631
4635
};
4632
4636
4633
4637
const nightwaveTagToActivation: Record<string, number> = {
4638
RadioLegionIntermission15Syndicate: 1775662200000,
4634
4639
RadioLegionIntermission14Syndicate: 1761589199000
4635
4640
};
4636
4641
@@ -1584,6 +1584,7 @@
1584
1584
<label class="form-label" for="worldState.nightwaveOverride" data-loc="worldState_nightwaveOverride"></label>
1585
1585
<select class="form-control" id="worldState.nightwaveOverride" data-default="">
1586
1586
<option value="" data-loc="disabled"></option>
1587
<option value="RadioLegionIntermission15Syndicate" data-loc="worldState_RadioLegionIntermission15Syndicate"></option>
1587
1588
<option value="RadioLegionIntermission14Syndicate" data-loc="worldState_RadioLegionIntermission14Syndicate"></option>
1588
1589
<option value="RadioLegionIntermission13Syndicate" data-loc="worldState_RadioLegionIntermission13Syndicate"></option>
1589
1590
<option value="RadioLegionIntermission12Syndicate" data-loc="worldState_RadioLegionIntermission12Syndicate"></option>
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `Trauer`,
395
395
worldState_fear: `Angst`,
396
396
worldState_nightwaveOverride: `Nightwave-Überschreibung`,
397
worldState_RadioLegionIntermission15Syndicate: `Noras Mix: Chronosturm`,
397
398
worldState_RadioLegionIntermission14Syndicate: `Noras Mix: Träume der Toten`,
398
399
worldState_RadioLegionIntermission13Syndicate: `Noras Mix - Vol. 9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `Noras Mix - Vol. 8`,
@@ -393,6 +393,7 @@ dict = {
393
393
worldState_sorrow: `Sorrow`,
394
394
worldState_fear: `Fear`,
395
395
worldState_nightwaveOverride: `Nightwave Override`,
396
worldState_RadioLegionIntermission15Syndicate: `Nora's Mix: Time Tempests`,
396
397
worldState_RadioLegionIntermission14Syndicate: `Nora's Mix: Dreams of the Dead`,
397
398
worldState_RadioLegionIntermission13Syndicate: `Nora's Mix Vol. 9`,
398
399
worldState_RadioLegionIntermission12Syndicate: `Nora's Mix Vol. 8`,
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `Tristeza`,
395
395
worldState_fear: `Miedo`,
396
396
worldState_nightwaveOverride: `Volúmen de Onda Nocturna`,
397
worldState_RadioLegionIntermission15Syndicate: `Mix de Nora: Tempestades temporales`,
397
398
worldState_RadioLegionIntermission14Syndicate: `Mix de Nora: Sueños de los Muertos`,
398
399
worldState_RadioLegionIntermission13Syndicate: `Mix de Nora Vol. 9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `Mix de Nora Vol. 8`,
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `hagrin`,
395
395
worldState_fear: `Peur`,
396
396
worldState_nightwaveOverride: `Saison des Ondes Nocturnes`,
397
worldState_RadioLegionIntermission15Syndicate: `Mix de Nora : Tempêtes Temporelles`,
397
398
worldState_RadioLegionIntermission14Syndicate: `Mix de Nora: Les Rêves des Morts`,
398
399
worldState_RadioLegionIntermission13Syndicate: `Mix de Nora Vol. 9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `Mix de Nora Vol. 8`,
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `Печаль`,
395
395
worldState_fear: `Страх`,
396
396
worldState_nightwaveOverride: `Сезон Ночной волны`,
397
worldState_RadioLegionIntermission15Syndicate: `Микс Норы: Временные бури`,
397
398
worldState_RadioLegionIntermission14Syndicate: `Микс Норы: Сны мёртвых`,
398
399
worldState_RadioLegionIntermission13Syndicate: `Микс Норы, Диск 9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `Микс Норы, Диск 8`,
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `Журба`,
395
395
worldState_fear: `Страх`,
396
396
worldState_nightwaveOverride: `Сезон Нічної хвилі`,
397
worldState_RadioLegionIntermission15Syndicate: `Вибірка Нори «Часові бурі»`,
397
398
worldState_RadioLegionIntermission14Syndicate: `Вибірка Нори: «Сни мерців»`,
398
399
worldState_RadioLegionIntermission13Syndicate: `Вибірка Нори 9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `Вибірка Нори 8`,
@@ -394,6 +394,7 @@ dict = {
394
394
worldState_sorrow: `悲伤`,
395
395
worldState_fear: `恐惧`,
396
396
worldState_nightwaveOverride: `午夜电波系列`,
397
worldState_RadioLegionIntermission15Syndicate: `《诺拉的混选:时间风暴》`,
397
398
worldState_RadioLegionIntermission14Syndicate: `诺拉的混选:亡者之梦`,
398
399
worldState_RadioLegionIntermission13Syndicate: `诺拉的混选VOL.9`,
399
400
worldState_RadioLegionIntermission12Syndicate: `诺拉的混选VOL.8`,