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

XFESpaceNinjaServer

A simple server for a small space ninja game

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

XFEstudio/XFESpaceNinjaServer

feat: warframe anniversary goals (#2640)

Also adds `useAnniversaryTagForOldGoals` to display old Goals in GUI Re #1103 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2640 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>

b885d776
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

13 个文件 +495 -54
Modified config-vanilla.json +3 -1
@@ -59,7 +59,8 @@
59 59 "nightwaveStandingMultiplier": 1,
60 60 "unfaithfulBugFixes": {
61 61 "ignore1999LastRegionPlayed": false,
62 "fixXtraCheeseTimer": false
62 "fixXtraCheeseTimer": false,
63 "useAnniversaryTagForOldGoals": true
63 64 },
64 65 "worldState": {
65 66 "creditBoost": false,
@@ -70,6 +71,7 @@
70 71 "orphixVenom": false,
71 72 "longShadow": false,
72 73 "hallowedFlame": false,
74 "anniversary": null,
73 75 "hallowedNightmares": false,
74 76 "hallowedNightmaresRewardsOverride": 0,
75 77 "proxyRebellion": false,
Modified src/services/configService.ts +2 -0
@@ -71,6 +71,7 @@ export interface IConfig {
71 71 unfaithfulBugFixes?: {
72 72 ignore1999LastRegionPlayed?: boolean;
73 73 fixXtraCheeseTimer?: boolean;
74 useAnniversaryTagForOldGoals?: boolean;
74 75 };
75 76 worldState?: {
76 77 creditBoost?: boolean;
@@ -82,6 +83,7 @@ export interface IConfig {
82 83 orphixVenom?: boolean;
83 84 longShadow?: boolean;
84 85 hallowedFlame?: boolean;
86 anniversary?: number;
85 87 hallowedNightmares?: boolean;
86 88 hallowedNightmaresRewardsOverride?: number;
87 89 proxyRebellion?: boolean;
Modified src/services/missionInventoryUpdateService.ts +163 -5
@@ -712,6 +712,20 @@ export const addMissionInventoryUpdates = async (
712 712 if (reward.credits) {
713 713 message.RegularCredits = reward.credits;
714 714 }
715 if (info.arg) {
716 const args: Record<string, string | number> = {
717 PLAYER_NAME: account.DisplayName,
718 CREDIT_REWARD: reward.credits ?? 0
719 };
720
721 info.arg.forEach(key => {
722 const value = args[key];
723 if (value) {
724 message.arg ??= [];
725 message.arg.push({ Key: key, Tag: value });
726 }
727 });
728 }
715 729
716 730 await createMessage(inventory.accountOwnerId, [message]);
717 731 }
@@ -2271,7 +2285,7 @@ const getHexBounties = (seed: number): { nodes: string[]; buddies: string[] } =>
2271 2285 return { nodes, buddies };
2272 2286 };*/
2273 2287
2274 const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string; icon: string }> = {
2288 const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string; icon: string; arg?: string[] }> = {
2275 2289 "/Lotus/Types/Keys/GalleonRobberyAlert": {
2276 2290 sndr: "/Lotus/Language/Bosses/BossCouncilorVayHek",
2277 2291 msg: "/Lotus/Language/Messages/GalleonRobbery2025RewardMsgA",
@@ -2384,19 +2398,22 @@ const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string
2384 2398 sndr: "/Lotus/Language/Bosses/Lotus",
2385 2399 msg: "/Lotus/Language/G1Quests/RazorbackArmadaRewardBody",
2386 2400 sub: "/Lotus/Language/G1Quests/GenericTacAlertSmallRewardMsgTitle",
2387 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png"
2401 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2402 arg: ["CREDIT_REWARD"]
2388 2403 },
2389 2404 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionTwo": {
2390 2405 sndr: "/Lotus/Language/Bosses/Lotus",
2391 2406 msg: "/Lotus/Language/G1Quests/RazorbackArmadaRewardBody",
2392 2407 sub: "/Lotus/Language/G1Quests/GenericTacAlertSmallRewardMsgTitle",
2393 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png"
2408 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2409 arg: ["CREDIT_REWARD"]
2394 2410 },
2395 2411 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionThree": {
2396 2412 sndr: "/Lotus/Language/Bosses/Lotus",
2397 2413 msg: "/Lotus/Language/G1Quests/RazorbackArmadaRewardBody",
2398 2414 sub: "/Lotus/Language/G1Quests/GenericTacAlertSmallRewardMsgTitle",
2399 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png"
2415 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2416 arg: ["CREDIT_REWARD"]
2400 2417 },
2401 2418 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionFour": {
2402 2419 sndr: "/Lotus/Language/Bosses/Lotus",
@@ -2408,7 +2425,8 @@ const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string
2408 2425 sndr: "/Lotus/Language/Bosses/Lotus",
2409 2426 msg: "/Lotus/Language/G1Quests/ProjectNightwatchRewardMsgA",
2410 2427 sub: "/Lotus/Language/G1Quests/ProjectNightwatchTacAlertMissionOneTitle",
2411 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png"
2428 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2429 arg: ["CREDIT_REWARD"]
2412 2430 },
2413 2431 "/Lotus/Types/Keys/TacAlertKeyProjectNightwatch": {
2414 2432 sndr: "/Lotus/Language/Bosses/Lotus",
@@ -2457,5 +2475,145 @@ const goalMessagesByKey: Record<string, { sndr: string; msg: string; sub: string
2457 2475 msg: "/Lotus/Language/Inbox/MechEvent2020Tier3CompleteDesc",
2458 2476 sub: "/Lotus/Language/Inbox/MechEvent2020Tier3CompleteTitle",
2459 2477 icon: "/Lotus/Interface/Icons/Npcs/Entrati/Father.png"
2478 },
2479 "/Lotus/Types/Keys/TacAlertKeyAnniversary2019E": {
2480 sndr: "/Lotus/Language/Bosses/Lotus",
2481 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgB",
2482 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleB",
2483 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2484 arg: ["PLAYER_NAME"]
2485 },
2486 "/Lotus/Types/Keys/TacAlertKeyAnniversary2020F": {
2487 sndr: "/Lotus/Language/Bosses/Lotus",
2488 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgC",
2489 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleB",
2490 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2491 arg: ["PLAYER_NAME"]
2492 },
2493 "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeA": {
2494 sndr: "/Lotus/Language/Bosses/Lotus",
2495 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgD",
2496 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleD",
2497 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2498 arg: ["PLAYER_NAME"]
2499 },
2500 "/Lotus/Types/Keys/TacAlertKeyAnniversary2017C": {
2501 sndr: "/Lotus/Language/Bosses/Lotus",
2502 msg: "/Lotus/Language/Messages/Anniversary2019RewardMsgC",
2503 sub: "/Lotus/Language/Messages/Anniversary2019MissionTitleC",
2504 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2505 arg: ["PLAYER_NAME"]
2506 },
2507 "/Lotus/Types/Keys/TacAlertKeyAnniversary2020H": {
2508 sndr: "/Lotus/Language/Bosses/Lotus",
2509 msg: "/Lotus/Language/Messages/Anniversary2020RewardMsgH",
2510 sub: "/Lotus/Language/Messages/Anniversary2020MissionTitleH",
2511 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2512 arg: ["PLAYER_NAME"]
2513 },
2514 "/Lotus/Types/Keys/TacAlertKeyAnniversary2022J": {
2515 sndr: "/Lotus/Language/Bosses/Lotus",
2516 msg: "/Lotus/Language/Messages/Anniversary2022RewardMsgJ",
2517 sub: "/Lotus/Language/Messages/Anniversary2022MissionTitleJ",
2518 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2519 arg: ["PLAYER_NAME"]
2520 },
2521 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025D": {
2522 sndr: "/Lotus/Language/Bosses/Lotus",
2523 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgB",
2524 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleB",
2525 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2526 arg: ["PLAYER_NAME"]
2527 },
2528 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025ChallengeModeA": {
2529 sndr: "/Lotus/Language/Bosses/Lotus",
2530 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgC",
2531 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleC",
2532 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2533 arg: ["PLAYER_NAME"]
2534 },
2535 "/Lotus/Types/Keys/TacAlertKeyAnniversary2020G": {
2536 sndr: "/Lotus/Language/Bosses/Lotus",
2537 msg: "/Lotus/Language/Messages/Anniversary2020RewardMsgG",
2538 sub: "/Lotus/Language/Messages/Anniversary2020MissionTitleG",
2539 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2540 arg: ["PLAYER_NAME"]
2541 },
2542 "/Lotus/Types/Keys/TacAlertKeyAnniversary2017B": {
2543 sndr: "/Lotus/Language/Bosses/Lotus",
2544 msg: "/Lotus/Language/Messages/Anniversary2019RewardMsgB",
2545 sub: "/Lotus/Language/Messages/Anniversary2019MissionTitleB",
2546 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2547 arg: ["PLAYER_NAME"]
2548 },
2549 "/Lotus/Types/Keys/TacAlertKeyAnniversary2017A": {
2550 sndr: "/Lotus/Language/Bosses/Lotus",
2551 msg: "/Lotus/Language/Messages/Anniversary2019RewardMsgA",
2552 sub: "/Lotus/Language/Messages/Anniversary2019MissionTitleA",
2553 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2554 arg: ["PLAYER_NAME"]
2555 },
2556 "/Lotus/Types/Keys/TacAlertKeyAnniversary2023K": {
2557 sndr: "/Lotus/Language/Bosses/Lotus",
2558 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgG",
2559 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleG",
2560 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2561 arg: ["PLAYER_NAME"]
2562 },
2563 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025ChallengeModeB": {
2564 sndr: "/Lotus/Language/Bosses/Lotus",
2565 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgD",
2566 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleD",
2567 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2568 arg: ["PLAYER_NAME"]
2569 },
2570 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025A": {
2571 sndr: "/Lotus/Language/Bosses/Lotus",
2572 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgA",
2573 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleA",
2574 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2575 arg: ["PLAYER_NAME"]
2576 },
2577 "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D": {
2578 sndr: "/Lotus/Language/Bosses/Lotus",
2579 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgG",
2580 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleG",
2581 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2582 arg: ["PLAYER_NAME"]
2583 },
2584 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025C": {
2585 sndr: "/Lotus/Language/Bosses/Lotus",
2586 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgF",
2587 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleF",
2588 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2589 arg: ["PLAYER_NAME"]
2590 },
2591 "/Lotus/Types/Keys/TacAlertKeyAnniversary2024L": {
2592 sndr: "/Lotus/Language/Bosses/Lotus",
2593 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgA",
2594 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleA",
2595 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2596 arg: ["PLAYER_NAME"]
2597 },
2598 "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeB": {
2599 sndr: "/Lotus/Language/Bosses/Lotus",
2600 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgE",
2601 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleE",
2602 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2603 arg: ["PLAYER_NAME"]
2604 },
2605 "/Lotus/Types/Keys/TacAlertKeyAnniversary2021I": {
2606 sndr: "/Lotus/Language/Bosses/Lotus",
2607 msg: "/Lotus/Language/Messages/Anniversary2024RewardMsgH",
2608 sub: "/Lotus/Language/Messages/Anniversary2024MissionTitleH",
2609 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2610 arg: ["PLAYER_NAME"]
2611 },
2612 "/Lotus/Types/Keys/TacAlertKeyAnniversary2025B": {
2613 sndr: "/Lotus/Language/Bosses/Lotus",
2614 msg: "/Lotus/Language/Messages/Anniversary2025RewardMsgE",
2615 sub: "/Lotus/Language/Messages/Anniversary2025MissionTitleE",
2616 icon: "/Lotus/Interface/Icons/Npcs/Lotus_d.png",
2617 arg: ["PLAYER_NAME"]
2460 2618 }
2461 2619 };
Modified src/services/worldStateService.ts +252 -15
@@ -18,6 +18,7 @@ import {
18 18 ICalendarDay,
19 19 ICalendarEvent,
20 20 ICalendarSeason,
21 IGoal,
21 22 IInvasion,
22 23 ILiteSortie,
23 24 IPrimeVaultTrader,
@@ -1538,7 +1539,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1538 1539 Personal: true,
1539 1540 Bounty: true,
1540 1541 ClampNodeScores: true,
1541 Node: "EventNode28", // Incompatible with Wolf Hunt (2025), Orphix Venom
1542 Node: "EventNode28", // Incompatible with Wolf Hunt (2025), Orphix Venom, Warframe Anniversary
1542 1543 MissionKeyName: "/Lotus/Types/Keys/GalleonRobberyAlertB",
1543 1544 Desc: "/Lotus/Language/Events/GalleonRobberyEventMissionTitle",
1544 1545 Icon: "/Lotus/Interface/Icons/Player/GalleonRobberiesEvent.png",
@@ -1819,14 +1820,14 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1819 1820 Personal: true,
1820 1821 Bounty: true,
1821 1822 ClampNodeScores: true,
1822 Node: "EventNode25", // Incompatible with Hallowed Flame, Hallowed Nightmares
1823 Node: "EventNode25", // Incompatible with Hallowed Flame, Hallowed Nightmares, Warframe Anniversary
1823 1824 ConcurrentMissionKeyNames: [
1824 1825 "/Lotus/Types/Keys/TacAlertKeyWaterFightB",
1825 1826 "/Lotus/Types/Keys/TacAlertKeyWaterFightC",
1826 1827 "/Lotus/Types/Keys/TacAlertKeyWaterFightD"
1827 1828 ],
1828 1829 ConcurrentNodeReqs: [25, 50, 100],
1829 ConcurrentNodes: ["EventNode24", "EventNode34", "EventNode35"], // Incompatible with Hallowed Flame, Hallowed Nightmares
1830 ConcurrentNodes: ["EventNode24", "EventNode34", "EventNode35"], // Incompatible with Hallowed Flame, Hallowed Nightmares, Warframe Anniversary
1830 1831 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyWaterFightA",
1831 1832 Faction: "FC_CORPUS",
1832 1833 Desc: "/Lotus/Language/Alerts/TacAlertWaterFight",
@@ -1934,6 +1935,226 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1934 1935 }
1935 1936 }
1936 1937
1938 if (config.worldState?.anniversary != undefined) {
1939 // 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
1940 const goalsByWeek: Partial<IGoal>[][] = [
1941 [
1942 {
1943 Node: "EventNode28",
1944 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2019E",
1945 Tag: "Anniversary2019TacAlert",
1946 Reward: {
1947 items: ["/Lotus/StoreItems/Upgrades/Skins/Excalibur/ExcaliburDexSkin"]
1948 }
1949 },
1950 {
1951 Node: "EventNode26",
1952 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2020F",
1953 Tag: "Anniversary2020TacAlert",
1954 Reward: {
1955 items: ["/Lotus/StoreItems/Types/Items/ShipDecos/ExcaliburDexBobbleHead"]
1956 }
1957 },
1958 {
1959 Node: "EventNode19",
1960 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeA",
1961 Tag: "Anniversary2024TacAlertCMA",
1962 Reward: {
1963 items: ["/Lotus/StoreItems/Types/Items/MiscItems/WeaponUtilityUnlocker"]
1964 }
1965 }
1966 ],
1967 [
1968 {
1969 Node: "EventNode24",
1970 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2017C",
1971 Tag: "Anniversary2018TacAlert",
1972 Reward: {
1973 items: ["/Lotus/StoreItems/Weapons/Tenno/LongGuns/DexTheThird/DexTheThird"]
1974 }
1975 },
1976 {
1977 Node: "EventNode18",
1978 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2020H",
1979 Tag: "Anniversary2020TacAlert",
1980 Reward: {
1981 items: ["/Lotus/StoreItems/Types/StoreItems/AvatarImages/ImageDexAnniversary"]
1982 }
1983 }
1984 ],
1985 [
1986 {
1987 Node: "EventNode18",
1988 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2022J",
1989 Tag: "Anniversary2022TacAlert",
1990 Reward: {
1991 items: ["/Lotus/StoreItems/Upgrades/Skins/Rhino/RhinoDexSkin"]
1992 }
1993 },
1994 {
1995 Node: "EventNode38",
1996 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025D",
1997 Tag: "Anniversary2020TacAlert",
1998 Reward: {
1999 items: ["/Lotus/StoreItems/Types/Items/ShipDecos/RhinoDexBobbleHead"]
2000 }
2001 },
2002 {
2003 Node: "EventNode27",
2004 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025ChallengeModeA",
2005 Tag: "Anniversary2024TacAlertCMA",
2006 Reward: {
2007 items: ["/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst"]
2008 }
2009 }
2010 ],
2011 [
2012 {
2013 Node: "EventNode2",
2014 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2020G",
2015 Tag: "Anniversary2020TacAlert",
2016 Reward: {
2017 items: ["/Lotus/StoreItems/Upgrades/Skins/Liset/DexLisetSkin"]
2018 }
2019 },
2020 {
2021 Node: "EventNode17",
2022 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2017B",
2023 Tag: "Anniversary2018TacAlert",
2024 Reward: {
2025 items: ["/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/DexTheSecond/DexTheSecond"]
2026 }
2027 }
2028 ],
2029 [
2030 {
2031 Node: "EventNode18",
2032 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2017A",
2033 Tag: "Anniversary2018TacAlert",
2034 Reward: {
2035 items: ["/Lotus/StoreItems/Weapons/Tenno/Pistols/DexFuris/DexFuris"]
2036 }
2037 },
2038 {
2039 Node: "EventNode26",
2040 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2023K",
2041 Tag: "Anniversary2025TacAlert",
2042 Reward: {
2043 items: ["/Lotus/StoreItems/Types/StoreItems/AvatarImages/AvatarImageCommunityClemComic"]
2044 }
2045 },
2046 {
2047 Node: "EventNode12",
2048 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025ChallengeModeB",
2049 Tag: "Anniversary2025TacAlertCMB",
2050 Reward: {
2051 items: ["/Lotus/StoreItems/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker"]
2052 }
2053 }
2054 ],
2055 [
2056 {
2057 Node: "EventNode17",
2058 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025A",
2059 Tag: "Anniversary2025TacAlert",
2060 Reward: {
2061 items: [
2062 "/Lotus/StoreItems/Weapons/Tenno/Melee/Swords/KatanaAndWakizashi/Dex2023Nikana/Dex2023Nikana"
2063 ]
2064 }
2065 },
2066 {
2067 Node: "EventNode27",
2068 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2018D",
2069 Tag: "Anniversary2018TacAlert",
2070 Reward: {
2071 items: ["/Lotus/StoreItems/Upgrades/Skins/Scarves/DexScarf"]
2072 }
2073 }
2074 ],
2075 [
2076 {
2077 Node: "EventNode38",
2078 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025C",
2079 Tag: "Anniversary2018TacAlert",
2080 Reward: {
2081 items: ["/Lotus/StoreItems/Upgrades/Skins/Wisp/DexWispSkin"]
2082 }
2083 },
2084 {
2085 Node: "EventNode12",
2086 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2024L",
2087 Tag: "Anniversary2024TacAlert",
2088 Reward: {
2089 items: ["/Lotus/Types/StoreItems/Packages/OperatorDrifterDexBundle"]
2090 }
2091 },
2092 {
2093 Node: "EventNode26",
2094 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2024ChallengeModeB",
2095 Tag: "Anniversary2024TacAlertCMB",
2096 Reward: {
2097 items: ["/Lotus/StoreItems/Types/Recipes/Components/UmbraFormaBlueprint"]
2098 }
2099 }
2100 ],
2101 [
2102 {
2103 Node: "EventNode37",
2104 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2021I",
2105 Tag: "Anniversary2021TacAlert",
2106 Reward: {
2107 items: [
2108 "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorAArmor",
2109 "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorCArmor",
2110 "/Lotus/StoreItems/Upgrades/Skins/Armor/Dex2020Armor/Dex2020ArmorLArmor",
2111 "/Lotus/StoreItems/Types/Game/CatbrowPet/CatbrowGeneticSignature"
2112 ],
2113 countedItems: [
2114 {
2115 ItemType: "/Lotus/Types/Game/CatbrowPet/CatbrowGeneticSignature",
2116 ItemCount: 10
2117 }
2118 ]
2119 }
2120 },
2121 {
2122 Node: "EventNode9",
2123 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyAnniversary2025B",
2124 Tag: "Anniversary2025TacAlert",
2125 Reward: {
2126 items: ["/Lotus/StoreItems/Types/StoreItems/SuitCustomizations/ColourPickerAnniversaryEleven"]
2127 }
2128 }
2129 ]
2130 ];
2131 goalsByWeek[config.worldState.anniversary].forEach((goal, i) => {
2132 worldState.Goals.push({
2133 _id: {
2134 $oid:
2135 "67c6d8e725b23feb" +
2136 config.worldState?.anniversary!.toString(16).padStart(4, "0") +
2137 i.toString(16).padStart(4, "0")
2138 },
2139 Activation: { $date: { $numberLong: "1745593200000" } },
2140 Expiry: { $date: { $numberLong: "2000000000000" } },
2141 Count: 0,
2142 Goal: 1,
2143 Success: 0,
2144 Personal: true,
2145 ClampNodeScores: true,
2146 Node: goal.Node,
2147 MissionKeyName: goal.MissionKeyName,
2148 Desc: goal.Tag!.endsWith("CMB")
2149 ? "/Lotus/Language/Events/Anniversary2024ChallengeMode"
2150 : "/Lotus/Language/G1Quests/Anniversary2017MissionTitle",
2151 Icon: "/Lotus/Interface/Icons/Player/GlyphLotus12Anniversary.png",
2152 Tag: goal.Tag!,
2153 Reward: goal.Reward
2154 });
2155 });
2156 }
2157
1937 2158 if (config.worldState?.wolfHunt) {
1938 2159 worldState.Goals.push({
1939 2160 _id: {
@@ -1964,7 +2185,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1964 2185 "/Lotus/Types/Keys/WolfTacAlertReduxD"
1965 2186 ],
1966 2187 ConcurrentNodeReqs: [1, 2, 3],
1967 ConcurrentNodes: ["EventNode28", "EventNode39", "EventNode40"], // Incompatible with Galleon Of Ghouls, Orphix Venom
2188 ConcurrentNodes: ["EventNode28", "EventNode39", "EventNode40"], // Incompatible with Galleon Of Ghouls, Orphix Venom, Warframe Anniversary
1968 2189 MissionKeyName: "/Lotus/Types/Keys/WolfTacAlertReduxA",
1969 2190 Faction: "FC_GRINEER",
1970 2191 Desc: "/Lotus/Language/Alerts/WolfAlert",
@@ -1995,6 +2216,18 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
1995 2216 });
1996 2217 }
1997 2218
2219 const tagsForOlderGoals: string[] = [
2220 "Anniversary2018TacAlert",
2221 "Anniversary2019TacAlert",
2222 "Anniversary2020TacAlert",
2223 "Anniversary2021TacAlert",
2224 "Anniversary2022TacAlert",
2225 "Anniversary2024TacAlert",
2226 "Anniversary2024TacAlertCMA",
2227 "Anniversary2025TacAlert",
2228 "Anniversary2025TacAlertCMB"
2229 ];
2230
1998 2231 if (config.worldState?.hallowedFlame) {
1999 2232 worldState.Goals.push(
2000 2233 {
@@ -2019,7 +2252,7 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2019 2252 Faction: "FC_INFESTATION",
2020 2253 Desc: "/Lotus/Language/Events/TacAlertHalloweenLantern",
2021 2254 Icon: "/Lotus/Interface/Icons/JackOLanternColour.png",
2022 Tag: "Halloween19",
2255 Tag: config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[0] : "Halloween19",
2023 2256 InterimRewards: [
2024 2257 { items: ["/Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst"] },
2025 2258 { items: ["/Lotus/StoreItems/Types/Items/MiscItems/Forma"] }
@@ -2045,7 +2278,9 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2045 2278 Desc: "/Lotus/Language/Events/TacAlertHalloweenLanternEndless",
2046 2279 Icon: "/Lotus/Interface/Icons/JackOLanternColour.png",
2047 2280 Tag: "Halloween19Endless",
2048 PrereqGoalTags: ["Halloween19"],
2281 PrereqGoalTags: [
2282 config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[0] : "Halloween19"
2283 ],
2049 2284 Reward: {
2050 2285 items: [
2051 2286 "/Lotus/StoreItems/Upgrades/Skins/Effects/BatsEphemera",
@@ -2109,17 +2344,17 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2109 2344 Success: 0,
2110 2345 Personal: true,
2111 2346 Bounty: true,
2112 Tag: "Halloween",
2347 Tag: config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[0] : "Halloween",
2113 2348 Faction: "FC_INFESTATION",
2114 2349 Desc: "/Lotus/Language/G1Quests/TacAlertHalloweenTitle",
2115 2350 ToolTip: "/Lotus/Language/G1Quests/TacAlertHalloweenToolTip",
2116 2351 Icon: "/Lotus/Interface/Icons/JackOLanternColour.png",
2117 2352 ClampNodeScores: true,
2118 Node: "EventNode2",
2353 Node: "EventNode2", // Incompatible with Warframe Anniversary
2119 2354 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyHalloween",
2120 2355 ConcurrentMissionKeyNames: ["/Lotus/Types/Keys/TacAlertKeyHalloweenBonus"],
2121 2356 ConcurrentNodeReqs: [1],
2122 ConcurrentNodes: ["EventNode24"], // Incompatible with Hallowed Flame, Dog Days
2357 ConcurrentNodes: ["EventNode24"], // Incompatible with Hallowed Flame, Dog Days, Warframe Anniversary
2123 2358 InterimRewards: [rewards[year][0]],
2124 2359 Reward: rewards[year][1]
2125 2360 });
@@ -2135,7 +2370,9 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2135 2370 Bounty: true,
2136 2371 Best: true,
2137 2372 Tag: "Halloween",
2138 PrereqGoalTags: ["Halloween"],
2373 PrereqGoalTags: [
2374 config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[0] : "Halloween"
2375 ],
2139 2376 Faction: "FC_INFESTATION",
2140 2377 Desc: "Hallowed Nightmares - Time Attack",
2141 2378 ToolTip: "/Lotus/Language/G1Quests/TacAlertHalloweenToolTip",
@@ -2209,19 +2446,19 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2209 2446 Personal: true,
2210 2447 Bounty: true,
2211 2448 ClampNodeScores: true,
2212 Node: "EventNode18",
2449 Node: "EventNode18", // Incompatible with Warframe Anniversary
2213 2450 ConcurrentMissionKeyNames: [
2214 2451 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionTwo",
2215 2452 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionThree",
2216 2453 "/Lotus/Types/Keys/TacAlertKeyProxyRebellionFour"
2217 2454 ],
2218 2455 ConcurrentNodeReqs: [1, 2, 3],
2219 ConcurrentNodes: ["EventNode7", "EventNode4", "EventNode17"], // Incompatible with Orphix venom
2456 ConcurrentNodes: ["EventNode7", "EventNode4", "EventNode17"], // Incompatible with Orphix venom, Warframe Anniversary
2220 2457 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyProxyRebellionOne",
2221 2458 Faction: "FC_CORPUS",
2222 2459 Desc: "/Lotus/Language/Alerts/TacAlertProxyRebellion",
2223 2460 Icon: "/Lotus/Materials/Emblems/BountyBadge_e.png",
2224 Tag: "ProxyRebellion",
2461 Tag: config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[1] : "ProxyRebellion",
2225 2462 InterimRewards: rewards[year].slice(0, 2),
2226 2463 Reward: rewards[year][2],
2227 2464 BonusReward: rewards[year][3]
@@ -2240,12 +2477,12 @@ export const getWorldState = (buildLabel?: string): IWorldState => {
2240 2477 Success: 0,
2241 2478 Personal: true,
2242 2479 Bounty: true,
2243 Tag: "NightwatchTacAlert",
2480 Tag: config.unfaithfulBugFixes?.useAnniversaryTagForOldGoals ? tagsForOlderGoals[2] : "NightwatchTacAlert",
2244 2481 Faction: "FC_GRINEER",
2245 2482 Desc: "/Lotus/Language/G1Quests/ProjectNightwatchTacAlertTitle",
2246 2483 Icon: "/Lotus/Materials/Emblems/BountyBadge_e.png",
2247 2484 ClampNodeScores: true,
2248 Node: "EventNode9",
2485 Node: "EventNode9", // Incompatible with Warframe Anniversary
2249 2486 MissionKeyName: "/Lotus/Types/Keys/TacAlertKeyProjectNightwatchEasy",
2250 2487 ConcurrentMissionKeyNames: [
2251 2488 "/Lotus/Types/Keys/TacAlertKeyProjectNightwatch",
Modified static/webui/index.html +37 -16
@@ -937,29 +937,35 @@
937 937 <input class="form-check-input" type="checkbox" id="worldState.varziaFullyStocked" />
938 938 <label class="form-check-label" for="worldState.varziaFullyStocked" data-loc="worldState_varziaFullyStocked"></label>
939 939 </div>
940 <div class="form-check">
941 <input class="form-check-input" type="checkbox" id="unfaithfulBugFixes.useAnniversaryTagForOldGoals" />
942 <label class="form-check-label" for="unfaithfulBugFixes.useAnniversaryTagForOldGoals" data-loc="worldState_useAnniversaryTagForOldGoals"></label>
943 <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>
944 </div>
940 945 <div class="form-check">
941 946 <input class="form-check-input" type="checkbox" id="worldState.wolfHunt" />
942 947 <label class="form-check-label" for="worldState.wolfHunt" data-loc="worldState_wolfHunt"></label>
943 <abbr data-loc-inc="worldState_galleonOfGhouls|worldState_orphixVenom"><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>
948 <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>
944 949 </div>
945 950 <div class="form-check">
946 951 <input class="form-check-input" type="checkbox" id="worldState.orphixVenom" />
947 952 <label class="form-check-label" for="worldState.orphixVenom" data-loc="worldState_orphixVenom"></label>
948 <abbr data-loc-inc="worldState_galleonOfGhouls|worldState_wolfHunt|worldState_proxyRebellion"><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>
953 <abbr data-loc-inc="worldState_galleonOfGhouls|worldState_wolfHunt|worldState_proxyRebellion|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>
949 954 </div>
950 955 <div class="form-check">
951 956 <input class="form-check-input" type="checkbox" id="worldState.longShadow" />
952 957 <label class="form-check-label" for="worldState.longShadow" data-loc="worldState_longShadow"></label>
958 <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>
953 959 </div>
954 960 <div class="form-check">
955 961 <input class="form-check-input" type="checkbox" id="worldState.hallowedFlame" />
956 962 <label class="form-check-label" for="worldState.hallowedFlame" data-loc="worldState_hallowedFlame"></label>
957 <abbr data-loc-inc="worldState_hallowedNightmares|worldState_dogDays"><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>
963 <abbr data-loc-inc="worldState_hallowedNightmares|worldState_dogDays|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>
958 964 </div>
959 965 <div class="form-group mt-2 d-flex gap-2">
960 966 <div class="flex-fill">
961 967 <label class="form-label" for="worldState.hallowedNightmares" data-loc="worldState_hallowedNightmares"></label>
962 <abbr data-loc-inc="worldState_hallowedFlame|worldState_dogDays"><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>
968 <abbr data-loc-inc="worldState_hallowedFlame|worldState_dogDays|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>
963 969 <select class="form-control" id="worldState.hallowedNightmares" data-default="false">
964 970 <option value="true" data-loc="enabled"></option>
965 971 <option value="false" data-loc="disabled"></option>
@@ -968,16 +974,16 @@
968 974 <div class="flex-fill">
969 975 <label class="form-label" for="worldState.hallowedNightmaresRewardsOverride" data-loc="worldState_hallowedNightmaresRewards"></label>
970 976 <select class="form-control" id="worldState.hallowedNightmaresRewardsOverride" data-default="0">
971 <option value="0" data-loc="worldState_from_year" data-loc-year="2018"></option>
972 <option value="1" data-loc="worldState_from_year" data-loc-year="2016"></option>
973 <option value="2" data-loc="worldState_from_year" data-loc-year="2015"></option>
977 <option value="0" data-loc="worldState_from_year" data-loc-replace="2018"></option>
978 <option value="1" data-loc="worldState_from_year" data-loc-replace="2016"></option>
979 <option value="2" data-loc="worldState_from_year" data-loc-replace="2015"></option>
974 980 </select>
975 981 </div>
976 982 </div>
977 983 <div class="form-group mt-2 d-flex gap-2">
978 984 <div class="flex-fill">
979 985 <label class="form-label" for="worldState.proxyRebellion" data-loc="worldState_proxyRebellion"></label>
980 <abbr data-loc-inc="worldState_orphixVenom"><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>
986 <abbr data-loc-inc="worldState_anniversary|worldState_orphixVenom"><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>
981 987 <select class="form-control" id="worldState.proxyRebellion" data-default="false">
982 988 <option value="true" data-loc="enabled"></option>
983 989 <option value="false" data-loc="disabled"></option>
@@ -986,14 +992,14 @@
986 992 <div class="flex-fill">
987 993 <label class="form-label" for="worldState.proxyRebellionRewardsOverride" data-loc="worldState_proxyRebellionRewards"></label>
988 994 <select class="form-control" id="worldState.proxyRebellionRewardsOverride" data-default="0">
989 <option value="0" data-loc="worldState_from_year" data-loc-year="2019"></option>
990 <option value="1" data-loc="worldState_from_year" data-loc-year="2018"></option>
995 <option value="0" data-loc="worldState_from_year" data-loc-replace="2019"></option>
996 <option value="1" data-loc="worldState_from_year" data-loc-replace="2018"></option>
991 997 </select>
992 998 </div>
993 999 </div>
994 1000 <div class="form-group mt-2">
995 1001 <label class="form-label" for="worldState.galleonOfGhouls" data-loc="worldState_galleonOfGhouls"></label>
996 <abbr data-loc-inc="worldState_wolfHunt"><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>
1002 <abbr data-loc-inc="worldState_wolfHunt|worldState_anniversary|worldState_orphixVenom"><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>
997 1003 <select class="form-control" id="worldState.galleonOfGhouls" data-default="0">
998 1004 <option value="0" data-loc="disabled"></option>
999 1005 <option value="1" data-loc="worldState_we1"></option>
@@ -1001,6 +1007,21 @@
1001 1007 <option value="3" data-loc="worldState_we3"></option>
1002 1008 </select>
1003 1009 </div>
1010 <div class="form-group mt-2">
1011 <label class="form-label" for="worldState.anniversary" data-loc="worldState_anniversary"></label>
1012 <abbr data-loc-inc="worldState_useAnniversaryTagForOldGoals|worldState_wolfHunt|worldState_galleonOfGhouls|worldState_hallowedNightmares|worldState_hallowedFlame|worldState_dogDays|worldState_proxyRebellion|worldState_longShadow|worldState_orphixVenom"><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>
1013 <select class="form-control" id="worldState.anniversary" data-default="null">
1014 <option value="null" data-loc="disabled"></option>
1015 <option value="0" data-loc="worldState_week" data-loc-replace="1"></option>
1016 <option value="1" data-loc="worldState_week" data-loc-replace="2"></option>
1017 <option value="2" data-loc="worldState_week" data-loc-replace="3"></option>
1018 <option value="3" data-loc="worldState_week" data-loc-replace="4"></option>
1019 <option value="4" data-loc="worldState_week" data-loc-replace="5"></option>
1020 <option value="5" data-loc="worldState_week" data-loc-replace="6"></option>
1021 <option value="6" data-loc="worldState_week" data-loc-replace="7"></option>
1022 <option value="7" data-loc="worldState_week" data-loc-replace="8"></option>
1023 </select>
1024 </div>
1004 1025 <div class="form-group mt-2">
1005 1026 <label class="form-label" for="worldState.ghoulEmergenceOverride" data-loc="worldState_ghoulEmergence"></label>
1006 1027 <select class="form-control" id="worldState.ghoulEmergenceOverride" data-default="null">
@@ -1028,7 +1049,7 @@
1028 1049 <div class="form-group mt-2 d-flex gap-2">
1029 1050 <div class="flex-fill">
1030 1051 <label class="form-label" for="worldState.dogDaysOverride" data-loc="worldState_dogDays"></label>
1031 <abbr data-loc-inc="worldState_hallowedFlame|worldState_hallowedNightmares"><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>
1052 <abbr data-loc-inc="worldState_hallowedFlame|worldState_hallowedNightmares|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>
1032 1053 <select class="form-control" id="worldState.dogDaysOverride" data-default="null">
1033 1054 <option value="null" data-loc="normal"></option>
1034 1055 <option value="true" data-loc="enabled"></option>
@@ -1039,10 +1060,10 @@
1039 1060 <label class="form-label" for="worldState.dogDaysRewardsOverride" data-loc="worldState_dogDaysRewards"></label>
1040 1061 <select class="form-control" id="worldState.dogDaysRewardsOverride" data-default="null">
1041 1062 <option value="null" data-loc="normal"></option>
1042 <option value="3" data-loc="worldState_from_year" data-loc-year="2025"></option>
1043 <option value="2" data-loc="worldState_from_year" data-loc-year="2024"></option>
1044 <option value="1" data-loc="worldState_from_year" data-loc-year="2023"></option>
1045 <option value="0" data-loc="worldState_pre_year" data-loc-year="2023"></option>
1063 <option value="3" data-loc="worldState_from_year" data-loc-replace="2025"></option>
1064 <option value="2" data-loc="worldState_from_year" data-loc-replace="2024"></option>
1065 <option value="1" data-loc="worldState_from_year" data-loc-replace="2023"></option>
1066 <option value="0" data-loc="worldState_pre_year" data-loc-replace="2023"></option>
1046 1067 </select>
1047 1068 </div>
1048 1069 </div>
Modified static/webui/script.js +3 -3
@@ -206,12 +206,12 @@ function updateLocElements() {
206 206 const incWith = elm
207 207 .getAttribute("data-loc-inc")
208 208 .split("|")
209 .map(key => loc(key))
209 .map(key => loc(key).replace(/<[^>]+>/g, ""))
210 210 .join(", ");
211 211 elm.title = `${loc("worldState_incompatibleWith")} ${incWith}`;
212 212 });
213 document.querySelectorAll("[data-loc-year]").forEach(elm => {
214 elm.innerHTML = elm.innerHTML.replace("|YEAR|", elm.getAttribute("data-loc-year"));
213 document.querySelectorAll("[data-loc-replace]").forEach(elm => {
214 elm.innerHTML = elm.innerHTML.replace("|VAL|", elm.getAttribute("data-loc-replace"));
215 215 });
216 216 }
217 217
Modified static/webui/translations/de.js +5 -2
@@ -246,6 +246,8 @@ dict = {
246 246 worldState_baroTennoConRelay: `Baros TennoCon Relais`,
247 247 worldState_starDays: `Sternen-Tage`,
248 248 worldState_galleonOfGhouls: `Galeone der Ghule`,
249 worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`,
250 worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use <code>Tag</code> from Warframe Anniversary for old Events`,
249 251 worldState_ghoulEmergence: `Ghul Ausrottung`,
250 252 worldState_plagueStar: `Plagenstern`,
251 253 worldState_dogDays: `Hitzefrei`,
@@ -262,8 +264,9 @@ dict = {
262 264 worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
263 265 worldState_eightClaw: `Acht Klauen`,
264 266 worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
265 worldState_from_year: `[UNTRANSLATED] from |YEAR|`,
266 worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`,
267 worldState_from_year: `[UNTRANSLATED] from |VAL|`,
268 worldState_pre_year: `[UNTRANSLATED] pre |VAL|`,
269 worldState_week: `[UNTRANSLATED] Week |VAL|`,
267 270 worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
268 271 enabled: `Aktiviert`,
269 272 disabled: `Deaktiviert`,
Modified static/webui/translations/en.js +5 -2
@@ -245,6 +245,8 @@ dict = {
245 245 worldState_baroTennoConRelay: `Baro's TennoCon Relay`,
246 246 worldState_starDays: `Star Days`,
247 247 worldState_galleonOfGhouls: `Galleon of Ghouls`,
248 worldState_anniversary: `Warframe Anniversary`,
249 worldState_useAnniversaryTagForOldGoals: `Use <code>Tag</code> from Warframe Anniversary for old Events`,
248 250 worldState_ghoulEmergence: `Ghoul Purge`,
249 251 worldState_plagueStar: `Plague Star`,
250 252 worldState_dogDays: `Dog Days`,
@@ -261,8 +263,9 @@ dict = {
261 263 worldState_bellyOfTheBeastProgressOverride: `Belly of the Beast Progress`,
262 264 worldState_eightClaw: `Eight Claw`,
263 265 worldState_eightClawProgressOverride: `Eight Claw Progress`,
264 worldState_from_year: `from |YEAR|`,
265 worldState_pre_year: `pre |YEAR|`,
266 worldState_from_year: `from |VAL|`,
267 worldState_pre_year: `pre |VAL|`,
268 worldState_week: `Week |VAL|`,
266 269 worldState_incompatibleWith: `Incompatible with:`,
267 270 enabled: `Enabled`,
268 271 disabled: `Disabled`,
Modified static/webui/translations/es.js +5 -2
@@ -246,6 +246,8 @@ dict = {
246 246 worldState_baroTennoConRelay: `Repetidor de Baro de la TennoCon`,
247 247 worldState_starDays: `Días estelares`,
248 248 worldState_galleonOfGhouls: `Galeón de Gules`,
249 worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`,
250 worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use <code>Tag</code> from Warframe Anniversary for old Events`,
249 251 worldState_ghoulEmergence: `Purga de Gules`,
250 252 worldState_plagueStar: `Estrella Infestada`,
251 253 worldState_dogDays: `Canícula`,
@@ -262,8 +264,9 @@ dict = {
262 264 worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
263 265 worldState_eightClaw: `Octava Garra`,
264 266 worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
265 worldState_from_year: `de |YEAR|`,
266 worldState_pre_year: `antes de |YEAR|`,
267 worldState_from_year: `de |VAL|`,
268 worldState_pre_year: `antes de |VAL|`,
269 worldState_week: `[UNTRANSLATED] Week |VAL|`,
267 270 worldState_incompatibleWith: `No compatible con:`,
268 271 enabled: `Activado`,
269 272 disabled: `Desactivado`,
Modified static/webui/translations/fr.js +5 -2
@@ -246,6 +246,8 @@ dict = {
246 246 worldState_baroTennoConRelay: `Relais Baro TennoCon`,
247 247 worldState_starDays: `Jours Stellaires`,
248 248 worldState_galleonOfGhouls: `Galion des Goules`,
249 worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`,
250 worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use <code>Tag</code> from Warframe Anniversary for old Events`,
249 251 worldState_ghoulEmergence: `Purge des Goules`,
250 252 worldState_plagueStar: `Fléau Céleste`,
251 253 worldState_dogDays: `Bataille d'Eau`,
@@ -262,8 +264,9 @@ dict = {
262 264 worldState_bellyOfTheBeastProgressOverride: `[UNTRANSLATED] Belly of the Beast Progress`,
263 265 worldState_eightClaw: `Huitième Griffe`,
264 266 worldState_eightClawProgressOverride: `[UNTRANSLATED] Eight Claw Progress`,
265 worldState_from_year: `[UNTRANSLATED] from |YEAR|`,
266 worldState_pre_year: `[UNTRANSLATED] pre |YEAR|`,
267 worldState_from_year: `[UNTRANSLATED] from |VAL|`,
268 worldState_pre_year: `[UNTRANSLATED] pre |VAL|`,
269 worldState_week: `[UNTRANSLATED] Week |VAL|`,
267 270 worldState_incompatibleWith: `[UNTRANSLATED] Incompatible with:`,
268 271 enabled: `Activé`,
269 272 disabled: `Désactivé`,
Modified static/webui/translations/ru.js +5 -2
@@ -246,6 +246,8 @@ dict = {
246 246 worldState_baroTennoConRelay: `Реле Баро TennoCon`,
247 247 worldState_starDays: `Звёздные дни`,
248 248 worldState_galleonOfGhouls: `Галеон Гулей`,
249 worldState_anniversary: `Годовщина Warframe`,
250 worldState_useAnniversaryTagForOldGoals: `Использовать <code>Tag</code> из Годовщины Warframe для старых событий`,
249 251 worldState_ghoulEmergence: `Избавление от гулей`,
250 252 worldState_plagueStar: `Чумная звезда`,
251 253 worldState_dogDays: `Знойные дни`,
@@ -262,8 +264,9 @@ dict = {
262 264 worldState_bellyOfTheBeastProgressOverride: `Прогресс Чрева зверя`,
263 265 worldState_eightClaw: `Восемь когтей`,
264 266 worldState_eightClawProgressOverride: `Прогресс Восьми когтей`,
265 worldState_from_year: `из |YEAR|`,
266 worldState_pre_year: `до |YEAR|`,
267 worldState_from_year: `из |VAL|`,
268 worldState_pre_year: `до |VAL|`,
269 worldState_week: `Неделя |VAL|`,
267 270 worldState_incompatibleWith: `Несовместимо с:`,
268 271 enabled: `Включено`,
269 272 disabled: `Отключено`,
Modified static/webui/translations/uk.js +5 -2
@@ -246,6 +246,8 @@ dict = {
246 246 worldState_baroTennoConRelay: `Реле Баро TennoCon`,
247 247 worldState_starDays: `Зоряні дні`,
248 248 worldState_galleonOfGhouls: `Гульський галеон`,
249 worldState_anniversary: `[UNTRANSLATED] Warframe Anniversary`,
250 worldState_useAnniversaryTagForOldGoals: `[UNTRANSLATED] Use <code>Tag</code> from Warframe Anniversary for old Events`,
249 251 worldState_ghoulEmergence: `Зачищення від гулів`,
250 252 worldState_plagueStar: `Морова зірка`,
251 253 worldState_dogDays: `Спекотні дні`,
@@ -262,8 +264,9 @@ dict = {
262 264 worldState_bellyOfTheBeastProgressOverride: `Прогрес У лігві звіра`,
263 265 worldState_eightClaw: `Вісім кігтів`,
264 266 worldState_eightClawProgressOverride: `Прогрес Восьми кігтів`,
265 worldState_from_year: `з |YEAR|`,
266 worldState_pre_year: `до |YEAR|`,
267 worldState_from_year: `з |VAL|`,
268 worldState_pre_year: `до |VAL|`,
269 worldState_week: `[UNTRANSLATED] Week |VAL|`,
267 270 worldState_incompatibleWith: `Несумісне з:`,
268 271 enabled: `Увімкнено`,
269 272 disabled: `Вимкнено`,
Modified static/webui/translations/zh.js +5 -2