XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

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
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

12 个文件 +130 -71
Modified config-vanilla.json +1 -1
@@ -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,
Modified src/services/configService.ts +1 -1
@@ -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;
Modified src/services/missionInventoryUpdateService.ts +12 -0
@@ -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",
Modified src/services/worldStateService.ts +100 -57
@@ -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",
Modified static/webui/index.html +9 -5
@@ -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>
Modified static/webui/translations/de.js +1 -1
@@ -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`,
Modified static/webui/translations/en.js +1 -1
@@ -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`,
Modified static/webui/translations/es.js +1 -1
@@ -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`,
Modified static/webui/translations/fr.js +1 -1
@@ -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`,
Modified static/webui/translations/ru.js +1 -1
@@ -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: `Длинная Тень`,
Modified static/webui/translations/uk.js +1 -1
@@ -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: `Довга тінь`,
Modified static/webui/translations/zh.js +1 -1
@@ -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: `暗夜长影`,