返回提交历史
Modified
config-vanilla.json
+1
-0
Modified
src/services/configService.ts
+1
-0
Modified
src/services/configWatcherService.ts
+7
-0
Modified
src/services/worldStateService.ts
+2
-1
Modified
static/webui/index.html
+34
-23
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/SpaceNinjaServer
feat: nightwave phase override (#3234)
Re #3204 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3234 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>
bdf042b2
代码差异
12 个文件
+52
-24
@@ -66,6 +66,7 @@
66
66
"vallisOverride": "",
67
67
"duviriOverride": "",
68
68
"nightwaveOverride": "",
69
"nightwavePhaseOverride": 0,
69
70
"allTheFissures": "",
70
71
"varziaOverride": "",
71
72
"circuitGameModes": null,
@@ -75,6 +75,7 @@ export interface IConfig {
75
75
vallisOverride?: string;
76
76
duviriOverride?: string;
77
77
nightwaveOverride?: string;
78
nightwavePhaseOverride?: number;
78
79
allTheFissures?: string;
79
80
varziaOverride?: string;
80
81
circuitGameModes?: string[];
@@ -100,6 +100,13 @@ export const validateConfig = (): void => {
100
100
config.worldState.varziaOverride = "";
101
101
modified = true;
102
102
}
103
if (
104
config.worldState?.nightwavePhaseOverride &&
105
(config.worldState.nightwavePhaseOverride > 4 || config.worldState.nightwavePhaseOverride < 0)
106
) {
107
config.worldState.nightwavePhaseOverride = 0;
108
modified = true;
109
}
103
110
if (modified) {
104
111
logger.info(`Updating config file to fix some issues with it.`);
105
112
void saveConfig();
@@ -3383,12 +3383,13 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
3383
3383
if (nightwaveSyndicateTag) {
3384
3384
const nightwaveStartTimestamp = nightwaveTagToActivation[nightwaveSyndicateTag] ?? 1747851300000;
3385
3385
const nightwaveSeason = nightwaveTagToSeason[nightwaveSyndicateTag];
3386
const nightwavePhase = ([0, 2, 4].includes(nightwaveSeason) && config.worldState?.nightwavePhaseOverride) || 0;
3386
3387
worldState.SeasonInfo = {
3387
3388
Activation: { $date: { $numberLong: nightwaveStartTimestamp.toString() } },
3388
3389
Expiry: { $date: { $numberLong: "2000000000000" } },
3389
3390
AffiliationTag: nightwaveSyndicateTag,
3390
3391
Season: nightwaveSeason,
3391
Phase: 0,
3392
Phase: nightwavePhase,
3392
3393
Params: "",
3393
3394
ActiveChallenges: []
3394
3395
};
@@ -1495,6 +1495,40 @@
1495
1495
</form>
1496
1496
</div>
1497
1497
</div>
1498
<div class="form-group mt-2 d-flex gap-2">
1499
<div class="flex-fill">
1500
<label class="form-label" for="worldState.nightwaveOverride" data-loc="worldState_nightwaveOverride"></label>
1501
<select class="form-control" id="worldState.nightwaveOverride" data-default="">
1502
<option value="" data-loc="disabled"></option>
1503
<option value="RadioLegionIntermission14Syndicate" data-loc="worldState_RadioLegionIntermission14Syndicate"></option>
1504
<option value="RadioLegionIntermission13Syndicate" data-loc="worldState_RadioLegionIntermission13Syndicate"></option>
1505
<option value="RadioLegionIntermission12Syndicate" data-loc="worldState_RadioLegionIntermission12Syndicate"></option>
1506
<option value="RadioLegionIntermission11Syndicate" data-loc="worldState_RadioLegionIntermission11Syndicate"></option>
1507
<option value="RadioLegionIntermission10Syndicate" data-loc="worldState_RadioLegionIntermission10Syndicate"></option>
1508
<option value="RadioLegionIntermission9Syndicate" data-loc="worldState_RadioLegionIntermission9Syndicate"></option>
1509
<option value="RadioLegionIntermission8Syndicate" data-loc="worldState_RadioLegionIntermission8Syndicate"></option>
1510
<option value="RadioLegionIntermission7Syndicate" data-loc="worldState_RadioLegionIntermission7Syndicate"></option>
1511
<option value="RadioLegionIntermission6Syndicate" data-loc="worldState_RadioLegionIntermission6Syndicate"></option>
1512
<option value="RadioLegionIntermission5Syndicate" data-loc="worldState_RadioLegionIntermission5Syndicate"></option>
1513
<option value="RadioLegionIntermission4Syndicate" data-loc="worldState_RadioLegionIntermission4Syndicate"></option>
1514
<option value="RadioLegionIntermission3Syndicate" data-loc="worldState_RadioLegionIntermission3Syndicate"></option>
1515
<option value="RadioLegion3Syndicate" data-loc="worldState_RadioLegion3Syndicate"></option>
1516
<option value="RadioLegionIntermission2Syndicate" data-loc="worldState_RadioLegionIntermission2Syndicate"></option>
1517
<option value="RadioLegion2Syndicate" data-loc="worldState_RadioLegion2Syndicate"></option>
1518
<option value="RadioLegionIntermissionSyndicate" data-loc="worldState_RadioLegionIntermissionSyndicate"></option>
1519
<option value="RadioLegionSyndicate" data-loc="worldState_RadioLegionSyndicate"></option>
1520
</select>
1521
</div>
1522
<div class="flex-fill">
1523
<form class="form-group" onsubmit="doSaveConfigInt('worldState.nightwavePhaseOverride'); return false;">
1524
<label class="form-label" for="worldState.nightwavePhaseOverride" data-loc="worldState_nightwavePhaseOverride"></label>
1525
<div class="input-group">
1526
<input id="worldState.nightwavePhaseOverride" class="form-control" type="number" min="0" max="4" data-default="0" />
1527
<button class="btn btn-secondary" type="submit" data-loc="cheats_save"></button>
1528
</div>
1529
</form>
1530
</div>
1531
</div>
1498
1532
<div class="form-group mt-2">
1499
1533
<label class="form-label" for="worldState.eidolonOverride" data-loc="worldState_eidolonOverride"></label>
1500
1534
<select class="form-control" id="worldState.eidolonOverride" data-default="">
@@ -1522,29 +1556,6 @@
1522
1556
<option value="fear" data-loc="worldState_fear"></option>
1523
1557
</select>
1524
1558
</div>
1525
<div class="form-group mt-2">
1526
<label class="form-label" for="worldState.nightwaveOverride" data-loc="worldState_nightwaveOverride"></label>
1527
<select class="form-control" id="worldState.nightwaveOverride" data-default="">
1528
<option value="" data-loc="disabled"></option>
1529
<option value="RadioLegionIntermission14Syndicate" data-loc="worldState_RadioLegionIntermission14Syndicate"></option>
1530
<option value="RadioLegionIntermission13Syndicate" data-loc="worldState_RadioLegionIntermission13Syndicate"></option>
1531
<option value="RadioLegionIntermission12Syndicate" data-loc="worldState_RadioLegionIntermission12Syndicate"></option>
1532
<option value="RadioLegionIntermission11Syndicate" data-loc="worldState_RadioLegionIntermission11Syndicate"></option>
1533
<option value="RadioLegionIntermission10Syndicate" data-loc="worldState_RadioLegionIntermission10Syndicate"></option>
1534
<option value="RadioLegionIntermission9Syndicate" data-loc="worldState_RadioLegionIntermission9Syndicate"></option>
1535
<option value="RadioLegionIntermission8Syndicate" data-loc="worldState_RadioLegionIntermission8Syndicate"></option>
1536
<option value="RadioLegionIntermission7Syndicate" data-loc="worldState_RadioLegionIntermission7Syndicate"></option>
1537
<option value="RadioLegionIntermission6Syndicate" data-loc="worldState_RadioLegionIntermission6Syndicate"></option>
1538
<option value="RadioLegionIntermission5Syndicate" data-loc="worldState_RadioLegionIntermission5Syndicate"></option>
1539
<option value="RadioLegionIntermission4Syndicate" data-loc="worldState_RadioLegionIntermission4Syndicate"></option>
1540
<option value="RadioLegionIntermission3Syndicate" data-loc="worldState_RadioLegionIntermission3Syndicate"></option>
1541
<option value="RadioLegion3Syndicate" data-loc="worldState_RadioLegion3Syndicate"></option>
1542
<option value="RadioLegionIntermission2Syndicate" data-loc="worldState_RadioLegionIntermission2Syndicate"></option>
1543
<option value="RadioLegion2Syndicate" data-loc="worldState_RadioLegion2Syndicate"></option>
1544
<option value="RadioLegionIntermissionSyndicate" data-loc="worldState_RadioLegionIntermissionSyndicate"></option>
1545
<option value="RadioLegionSyndicate" data-loc="worldState_RadioLegionSyndicate"></option>
1546
</select>
1547
</div>
1548
1559
<div class="form-group mt-2">
1549
1560
<label class="form-label" for="worldState.allTheFissures" data-loc="worldState_fissures"></label>
1550
1561
<select class="form-control" id="worldState.allTheFissures" data-default="">
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `Der Botschafter`,
363
363
worldState_RadioLegionIntermissionSyndicate: `Sendepause I`,
364
364
worldState_RadioLegionSyndicate: `Der Wolf von Saturn Six`,
365
worldState_nightwavePhaseOverride: `[UNTRANSLATED] Nightwave Phase Override`,
365
366
worldState_fissures: `Void-Risse`,
366
367
normal: `Normal`,
367
368
worldState_allAtOnceNormal: `Alle gleichzeitig, Normal`,
@@ -361,6 +361,7 @@ dict = {
361
361
worldState_RadioLegion2Syndicate: `The Emissary`,
362
362
worldState_RadioLegionIntermissionSyndicate: `Intermission I`,
363
363
worldState_RadioLegionSyndicate: `The Wolf of Saturn Six`,
364
worldState_nightwavePhaseOverride: `Nightwave Phase Override`,
364
365
worldState_fissures: `Fissures`,
365
366
normal: `Normal`,
366
367
worldState_allAtOnceNormal: `All At Once, Normal`,
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `El Emisario`,
363
363
worldState_RadioLegionIntermissionSyndicate: `Intermedio I`,
364
364
worldState_RadioLegionSyndicate: `El lobo de Saturno Seis`,
365
worldState_nightwavePhaseOverride: `[UNTRANSLATED] Nightwave Phase Override`,
365
366
worldState_fissures: `Fisuras`,
366
367
normal: `Normal`,
367
368
worldState_allAtOnceNormal: `Todo a la vez, normal`,
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `L'Émissaire`,
363
363
worldState_RadioLegionIntermissionSyndicate: `Intermission I`,
364
364
worldState_RadioLegionSyndicate: `Le Loup de Saturne Six`,
365
worldState_nightwavePhaseOverride: `[UNTRANSLATED] Nightwave Phase Override`,
365
366
worldState_fissures: `Fissures`,
366
367
normal: `Normal`,
367
368
worldState_allAtOnceNormal: `Toutes, Normal`,
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `Эмиссар`,
363
363
worldState_RadioLegionIntermissionSyndicate: `Антракт I`,
364
364
worldState_RadioLegionSyndicate: `Волк Сатурна Шесть`,
365
worldState_nightwavePhaseOverride: `Фаза Ночной волны`,
365
366
worldState_fissures: `Разрывы бездны`,
366
367
normal: `Стандартные`,
367
368
worldState_allAtOnceNormal: `Все сразу, в обычном режиме`,
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `Емісар`,
363
363
worldState_RadioLegionIntermissionSyndicate: `Антракт I`,
364
364
worldState_RadioLegionSyndicate: `Вовк із Сатурна-6`,
365
worldState_nightwavePhaseOverride: `[UNTRANSLATED] Nightwave Phase Override`,
365
366
worldState_fissures: `Прориви порожнечі`,
366
367
normal: `Стандартні`,
367
368
worldState_allAtOnceNormal: `Всі одразу, в звичайному режимі`,
@@ -362,6 +362,7 @@ dict = {
362
362
worldState_RadioLegion2Syndicate: `系列2 — 使徒`,
363
363
worldState_RadioLegionIntermissionSyndicate: `间歇I`,
364
364
worldState_RadioLegionSyndicate: `系列1 — 土星六号之狼`,
365
worldState_nightwavePhaseOverride: `[UNTRANSLATED] Nightwave Phase Override`,
365
366
worldState_fissures: `虚空裂缝难度设定`,
366
367
normal: `正常`,
367
368
worldState_allAtOnceNormal: `全部开启(普通)`,