返回提交历史
Modified
config-vanilla.json
+1
-1
Modified
src/services/configService.ts
+1
-1
Modified
src/services/missionInventoryUpdateService.ts
+12
-0
Modified
src/services/worldStateService.ts
+100
-57
Modified
static/webui/index.html
+9
-5
Modified
static/webui/translations/de.js
+1
-1
Modified
static/webui/translations/en.js
+1
-1
Modified
static/webui/translations/es.js
+1
-1
Modified
static/webui/translations/fr.js
+1
-1
Modified
static/webui/translations/ru.js
+1
-1
Modified
static/webui/translations/uk.js
+1
-1
Modified
static/webui/translations/zh.js
+1
-1
XFEstudio/XFESpaceNinjaServer
feat: wolf hunt 2019 (#2888)
Re #1103 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2888 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>
9e66d222
代码差异
12 个文件
+130
-71
@@ -31,7 +31,7 @@
31
31
"baroAlwaysAvailable": false,
32
32
"baroFullyStocked": false,
33
33
"varziaFullyStocked": false,
34
"wolfHunt": false,
34
"wolfHunt": null,
35
35
"orphixVenom": false,
36
36
"longShadow": false,
37
37
"hallowedFlame": false,
@@ -41,7 +41,7 @@ export interface IConfig {
41
41
baroAlwaysAvailable?: boolean;
42
42
baroFullyStocked?: boolean;
43
43
varziaFullyStocked?: boolean;
44
wolfHunt?: boolean;
44
wolfHunt?: number;
45
45
orphixVenom?: boolean;
46
46
longShadow?: boolean;
47
47
hallowedFlame?: boolean;
@@ -2479,6 +2479,18 @@ const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string
2479
2479
sub: "/Lotus/Language/Inbox/WaterFightRewardSubjectD",
2480
2480
icon: "/Lotus/Interface/Icons/Npcs/Grineer/KelaDeThaym.png"
2481
2481
},
2482
"/Lotus/Types/Keys/WolfTacAlertA": {
2483
sndr: "/Lotus/Language/Bosses/NoraNight",
2484
msg: "/Lotus/Language/Inbox/WolfTacAlertBody",
2485
sub: "/Lotus/Language/Inbox/WolfTacAlertTitle",
2486
icon: "/Lotus/Interface/Icons/Npcs/Seasonal/NoraNight.png"
2487
},
2488
"/Lotus/Types/Keys/WolfTacAlertxB": {
2489
sndr: "/Lotus/Language/Bosses/NoraNight",
2490
msg: "/Lotus/Language/Inbox/WolfTacAlertHardBody",
2491
sub: "/Lotus/Language/Inbox/WolfTacAlertHardTitle",
2492
icon: "/Lotus/Interface/Icons/Npcs/Seasonal/NoraNight.png"
2493
},
2482
2494
"/Lotus/Types/Keys/WolfTacAlertReduxA": {
2483
2495
sndr: "/Lotus/Language/Bosses/NoraNight",
2484
2496
msg: "/Lotus/Language/Inbox/WolfTacAlertBody",
@@ -1747,7 +1747,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1747
1747
Personal: true,
1748
1748
Bounty: true,
1749
1749
ClampNodeScores: true,
1750
Node: "EventNode28", // Incompatible with Wolf Hunt (2025), Orphix Venom, Warframe Anniversary
1750
Node: "EventNode28", // Incompatible with Wolf Hunt, Orphix Venom, Warframe Anniversary
1751
1751
MissionKeyName: "/Lotus/Types/Keys/GalleonRobberyAlertB",
1752
1752
Desc: "/Lotus/Language/Events/GalleonRobberyEventMissionTitle",
1753
1753
Icon: "/Lotus/Interface/Icons/Player/GalleonRobberiesEvent.png",
@@ -2144,7 +2144,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2144
2144
}
2145
2145
2146
2146
if (config.worldState?.anniversary != undefined) {
2147
// Incompatible with: Use Tag from Warframe Anniversary for old Events, Wolf Hunt (2025), Galleon Of Ghouls, Hallowed Flame, Hallowed Nightmares, Dog Days, Proxy Rebellion, Long Shadow
2147
// Incompatible with: Use Tag from Warframe Anniversary for old Events, Wolf Hunt, Galleon Of Ghouls, Hallowed Flame, Hallowed Nightmares, Dog Days, Proxy Rebellion, Long Shadow
2148
2148
const goalsByWeek: Partial<IGoal>[][] = [
2149
2149
[
2150
2150
{
@@ -2363,65 +2363,108 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2363
2363
});
2364
2364
}
2365
2365
2366
if (config.worldState?.wolfHunt) {
2367
worldState.Goals.push({
2368
_id: {
2369
$oid: "67ed7672798d6466172e3b9d"
2370
},
2371
Activation: {
2372
$date: {
2373
$numberLong: "1743616800000"
2374
}
2375
},
2376
Expiry: {
2377
$date: {
2378
$numberLong: "2000000000000"
2366
if (config.worldState?.wolfHunt != undefined) {
2367
if (config.worldState.wolfHunt == 0) {
2368
worldState.Goals.push({
2369
_id: {
2370
$oid: "67ed7672798d6466172e3b9c"
2371
},
2372
Activation: {
2373
$date: {
2374
$numberLong: "1743616800000"
2375
}
2376
},
2377
Expiry: {
2378
$date: {
2379
$numberLong: "2000000000000"
2380
}
2381
},
2382
Count: 0,
2383
Goal: 1,
2384
BonusGoal: 2,
2385
Success: 0,
2386
Personal: true,
2387
Bounty: true,
2388
ClampNodeScores: true,
2389
Node: "EventNode29",
2390
ConcurrentMissionKeyNames: ["/Lotus/Types/Keys/WolfTacAlertB"],
2391
ConcurrentNodeReqs: [1],
2392
ConcurrentNodes: ["EventNode28"], // Incompatible with Galleon Of Ghouls, Orphix Venom, Warframe Anniversary
2393
MissionKeyName: "/Lotus/Types/Keys/WolfTacAlertA",
2394
Faction: "FC_GRINEER",
2395
Desc: "/Lotus/Language/Alerts/WolfAlert",
2396
Icon: "/Lotus/Interface/Icons/Npcs/Seasonal/WolfStalker.png",
2397
Tag: "WolfHuntRedux", // unfaithful
2398
Reward: {
2399
countedItems: [{ ItemType: "/Lotus/Types/Items/MiscItems/Alertium", ItemCount: 10 }]
2400
},
2401
BonusReward: {
2402
items: [
2403
"/Lotus/StoreItems/Upgrades/Mods/Randomized/RawRifleRandomMod",
2404
"/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"
2405
]
2379
2406
}
2380
},
2381
Count: 0,
2382
Goal: 3,
2383
InterimGoals: [1, 2],
2384
BonusGoal: 4,
2385
Success: 0,
2386
Personal: true,
2387
Bounty: true,
2388
ClampNodeScores: true,
2389
Node: "EventNode29",
2390
ConcurrentMissionKeyNames: [
2391
"/Lotus/Types/Keys/WolfTacAlertReduxB",
2392
"/Lotus/Types/Keys/WolfTacAlertReduxC",
2393
"/Lotus/Types/Keys/WolfTacAlertReduxD"
2394
],
2395
ConcurrentNodeReqs: [1, 2, 3],
2396
ConcurrentNodes: ["EventNode28", "EventNode39", "EventNode40"], // Incompatible with Galleon Of Ghouls, Orphix Venom, Warframe Anniversary
2397
MissionKeyName: "/Lotus/Types/Keys/WolfTacAlertReduxA",
2398
Faction: "FC_GRINEER",
2399
Desc: "/Lotus/Language/Alerts/WolfAlert",
2400
Icon: "/Lotus/Interface/Icons/Npcs/Seasonal/WolfStalker.png",
2401
Tag: "WolfHuntRedux",
2402
InterimRewards: [
2403
{
2407
});
2408
} else if (config.worldState.wolfHunt == 1) {
2409
worldState.Goals.push({
2410
_id: {
2411
$oid: "67ed7672798d6466172e3b9d"
2412
},
2413
Activation: {
2414
$date: {
2415
$numberLong: "1743616800000"
2416
}
2417
},
2418
Expiry: {
2419
$date: {
2420
$numberLong: "2000000000000"
2421
}
2422
},
2423
Count: 0,
2424
Goal: 3,
2425
InterimGoals: [1, 2],
2426
BonusGoal: 4,
2427
Success: 0,
2428
Personal: true,
2429
Bounty: true,
2430
ClampNodeScores: true,
2431
Node: "EventNode29",
2432
ConcurrentMissionKeyNames: [
2433
"/Lotus/Types/Keys/WolfTacAlertReduxB",
2434
"/Lotus/Types/Keys/WolfTacAlertReduxC",
2435
"/Lotus/Types/Keys/WolfTacAlertReduxD"
2436
],
2437
ConcurrentNodeReqs: [1, 2, 3],
2438
ConcurrentNodes: ["EventNode28", "EventNode39", "EventNode40"], // Incompatible with Galleon Of Ghouls, Orphix Venom, Warframe Anniversary
2439
MissionKeyName: "/Lotus/Types/Keys/WolfTacAlertReduxA",
2440
Faction: "FC_GRINEER",
2441
Desc: "/Lotus/Language/Alerts/WolfAlert",
2442
Icon: "/Lotus/Interface/Icons/Npcs/Seasonal/WolfStalker.png",
2443
Tag: "WolfHuntRedux",
2444
InterimRewards: [
2445
{
2446
credits: 50000,
2447
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerHandle"]
2448
},
2449
{
2450
credits: 50000,
2451
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerHead"]
2452
}
2453
],
2454
Reward: {
2404
2455
credits: 50000,
2405
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerHandle"]
2456
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerMotor"]
2406
2457
},
2407
{
2458
BonusReward: {
2408
2459
credits: 50000,
2409
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerHead"]
2460
items: [
2461
"/Lotus/StoreItems/Types/Recipes/Weapons/ThrowingHammerBlueprint",
2462
"/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst",
2463
"/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"
2464
]
2410
2465
}
2411
],
2412
Reward: {
2413
credits: 50000,
2414
items: ["/Lotus/StoreItems/Types/Recipes/Weapons/WeaponParts/ThrowingHammerMotor"]
2415
},
2416
BonusReward: {
2417
credits: 50000,
2418
items: [
2419
"/Lotus/StoreItems/Types/Recipes/Weapons/ThrowingHammerBlueprint",
2420
"/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst",
2421
"/Lotus/StoreItems/Upgrades/Skins/Clan/BountyHunterBadgeItem"
2422
]
2423
}
2424
});
2466
});
2467
}
2425
2468
}
2426
2469
2427
2470
const tagsForOlderGoals: string[] = [
@@ -2822,7 +2865,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2822
2865
Success: 0,
2823
2866
Personal: true,
2824
2867
Best: true,
2825
Node: "EventNode28", // Incompatible with Galleon Of Ghouls, Wolf Hunt (2025)
2868
Node: "EventNode28", // Incompatible with Galleon Of Ghouls, Wolf Hunt
2826
2869
MissionKeyName: "/Lotus/Types/Keys/MechSurvivalGrineerGalleon",
2827
2870
Faction: "FC_SENTIENT",
2828
2871
Desc: "/Lotus/Language/Events/MechEventMissionTier2",
@@ -1188,11 +1188,6 @@
1188
1188
<label class="form-check-label" for="unfaithfulBugFixes.useAnniversaryTagForOldGoals" data-loc="worldState_useAnniversaryTagForOldGoals"></label>
1189
1189
<abbr data-loc-inc="worldState_anniversary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg></abbr>
1190
1190
</div>
1191
<div class="form-check">
1192
<input class="form-check-input" type="checkbox" id="worldState.wolfHunt" />
1193
<label class="form-check-label" for="worldState.wolfHunt" data-loc="worldState_wolfHunt"></label>
1194
<abbr data-loc-inc="worldState_galleonOfGhouls|worldState_orphixVenom|worldState_anniversary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg></abbr>
1195
</div>
1196
1191
<div class="form-check">
1197
1192
<input class="form-check-input" type="checkbox" id="worldState.orphixVenom" />
1198
1193
<label class="form-check-label" for="worldState.orphixVenom" data-loc="worldState_orphixVenom"></label>
@@ -1212,6 +1207,15 @@
1212
1207
<input class="form-check-input" type="checkbox" id="worldState.qtccAlerts" />
1213
1208
<label class="form-check-label" for="worldState.qtccAlerts" data-loc="worldState_qtccAlerts"></label>
1214
1209
</div>
1210
<div class="form-group mt-2">
1211
<label class="form-label" for="worldState.wolfHunt" data-loc="worldState_wolfHunt"></label>
1212
<abbr data-loc-inc="worldState_galleonOfGhouls|worldState_orphixVenom|worldState_anniversary"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><path d="M320 576C461.4 576 576 461.4 576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 461.4 178.6 576 320 576zM320 200C333.3 200 344 210.7 344 224L344 336C344 349.3 333.3 360 320 360C306.7 360 296 349.3 296 336L296 224C296 210.7 306.7 200 320 200zM293.3 416C292.7 406.1 297.6 396.7 306.1 391.5C314.6 386.4 325.3 386.4 333.8 391.5C342.3 396.7 347.2 406.1 346.6 416C347.2 425.9 342.3 435.3 333.8 440.5C325.3 445.6 314.6 445.6 306.1 440.5C297.6 435.3 292.7 425.9 293.3 416z"/></svg></abbr>
1213
<select class="form-control" id="worldState.wolfHunt" data-default="null">
1214
<option value="null" data-loc="disabled"></option>
1215
<option value="0" data-loc="worldState_from_year" data-loc-replace="2019"></option>
1216
<option value="1" data-loc="worldState_from_year" data-loc-replace="2025"></option>
1217
</select>
1218
</div>
1215
1219
<div class="form-group mt-2 d-flex gap-2">
1216
1220
<div class="flex-fill">
1217
1221
<label class="form-label" for="worldState.hallowedNightmares" data-loc="worldState_hallowedNightmares"></label>
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `Plagenstern`,
285
285
worldState_dogDays: `Hitzefrei`,
286
286
worldState_dogDaysRewards: `[UNTRANSLATED] Dog Days Rewards`,
287
worldState_wolfHunt: `Wolfsjagd (2025)`,
287
worldState_wolfHunt: `Wolfsjagd`,
288
288
worldState_voidCorruption: `Void-Korruption (|VAL|)`,
289
289
worldState_orphixVenom: `Orphix Gift`,
290
290
worldState_longShadow: `Lange Schatten`,
@@ -283,7 +283,7 @@ dict = {
283
283
worldState_plagueStar: `Plague Star`,
284
284
worldState_dogDays: `Dog Days`,
285
285
worldState_dogDaysRewards: `Dog Days Rewards`,
286
worldState_wolfHunt: `Wolf Hunt (2025)`,
286
worldState_wolfHunt: `Wolf Hunt`,
287
287
worldState_voidCorruption: `Void Corruption (|VAL|)`,
288
288
worldState_orphixVenom: `Orphix Venom`,
289
289
worldState_longShadow: `Long Shadow`,
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `Estrella Infestada`,
285
285
worldState_dogDays: `Canícula`,
286
286
worldState_dogDaysRewards: `Recompensas de Canícula`,
287
worldState_wolfHunt: `Cacería del Lobo (2025)`,
287
worldState_wolfHunt: `Cacería del Lobo`,
288
288
worldState_voidCorruption: `Corrupción del Vacío (|VAL|)`,
289
289
worldState_orphixVenom: `Veneno de Orphix`,
290
290
worldState_longShadow: `Sombra Prolongada`,
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `Fléau Céleste`,
285
285
worldState_dogDays: `Bataille d'Eau`,
286
286
worldState_dogDaysRewards: `Récompenses de la Bataille d'Eau`,
287
worldState_wolfHunt: `Chasse au Loup (2025)`,
287
worldState_wolfHunt: `Chasse au Loup`,
288
288
worldState_voidCorruption: `Corruption du Néant (|VAL|)`,
289
289
worldState_orphixVenom: `Venin Orphix`,
290
290
worldState_longShadow: `La Propagation des Ombres`,
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `Чумная звезда`,
285
285
worldState_dogDays: `Знойные дни`,
286
286
worldState_dogDaysRewards: `Награды Знойных дней`,
287
worldState_wolfHunt: `Волчья Охота (2025)`,
287
worldState_wolfHunt: `Волчья Охота`,
288
288
worldState_voidCorruption: `Искажение Бездны (|VAL|)`,
289
289
worldState_orphixVenom: `Яд Орфикса`,
290
290
worldState_longShadow: `Длинная Тень`,
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `Морова зірка`,
285
285
worldState_dogDays: `Спекотні дні`,
286
286
worldState_dogDaysRewards: `Нагороди Спекотних днів`,
287
worldState_wolfHunt: `Полювання на Вовка (2025)`,
287
worldState_wolfHunt: `Полювання на Вовка`,
288
288
worldState_voidCorruption: `Викривлення Порожнечі (|VAL|)`,
289
289
worldState_orphixVenom: `Орфіксова отрута`,
290
290
worldState_longShadow: `Довга тінь`,
@@ -284,7 +284,7 @@ dict = {
284
284
worldState_plagueStar: `瘟疫之星`,
285
285
worldState_dogDays: `三伏天`,
286
286
worldState_dogDaysRewards: `三伏天奖励设置`,
287
worldState_wolfHunt: `恶狼狩猎 (2025)`,
287
worldState_wolfHunt: `恶狼狩猎`,
288
288
worldState_voidCorruption: `虚空堕落 (|VAL|)`,
289
289
worldState_orphixVenom: `奥影之毒`,
290
290
worldState_longShadow: `暗夜长影`,