diff --git a/Directory.Build.targets b/Directory.Build.targets index e37cfa8e..6759af62 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,5 +1,5 @@ - 4.6 + 4.8 diff --git a/QuestPaths/7.x - Dawntrail/Allied Societies/Pelupelu/Story/5198_Partners in Pel.json b/QuestPaths/7.x - Dawntrail/Allied Societies/Pelupelu/Story/5198_Partners in Pel.json new file mode 100644 index 00000000..7ae61b74 --- /dev/null +++ b/QuestPaths/7.x - Dawntrail/Allied Societies/Pelupelu/Story/5198_Partners in Pel.json @@ -0,0 +1,67 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "Position": { + "X": 809.655, + "Y": 17.004526, + "Z": -257.89868 + }, + "TerritoryId": 1188, + "InteractionType": "WalkTo", + "AetheryteShortcut": "Kozama'uka - Dock Poga", + "Fly": true, + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + }, + { + "DataId": 1051710, + "Position": { + "X": 822.629, + "Y": 17.102613, + "Z": -263.20288 + }, + "TerritoryId": 1188, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051746, + "Position": { + "X": 824.6128, + "Y": 13.979889, + "Z": -227.16113 + }, + "TerritoryId": 1188, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1051710, + "Position": { + "X": 822.629, + "Y": 17.102613, + "Z": -263.20288 + }, + "TerritoryId": 1188, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5227_Reach for the Stalls.json b/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5227_Reach for the Stalls.json new file mode 100644 index 00000000..2243eb08 --- /dev/null +++ b/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5227_Reach for the Stalls.json @@ -0,0 +1,153 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "Starr", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1051801, + "Position": { + "X": -49.485046, + "Y": 6.499997, + "Z": -90.348694 + }, + "TerritoryId": 133, + "InteractionType": "AcceptQuest", + "AetheryteShortcut": "Gridania", + "AethernetShortcut": [ + "[Gridania] Aetheryte Plaza", + "[Gridania] Mih Khetto's Amphitheatre" + ] + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051808, + "Position": { + "X": -53.60504, + "Y": 5.772882, + "Z": -99.931335 + }, + "TerritoryId": 133, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "YesNo", + "Prompt": "TEXT_FESXMX001_05227_SYSTEM_000_025", + "Yes": true + } + ] + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1051803, + "Position": { + "X": 33.951294, + "Y": -0.36796698, + "Z": 24.185547 + }, + "TerritoryId": 1247, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1051816, + "Position": { + "X": 18.142944, + "Y": 0.0028544795, + "Z": -0.289917 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1052469, + "Position": { + "X": -15.640564, + "Y": 0.0026466753, + "Z": 18.142944 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1051813, + "Position": { + "X": -5.1118164, + "Y": 1.21852545E-05, + "Z": -31.99823 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1051804, + "Position": { + "X": -3.4943848, + "Y": 0.0028544795, + "Z": -18.417664 + }, + "TerritoryId": 1247, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1051819, + "Position": { + "X": -1.6937866, + "Y": 0.0028544795, + "Z": -21.042236 + }, + "TerritoryId": 1247, + "InteractionType": "CompleteQuest", + "NextQuestId": 5228 + } + ] + } + ] +} diff --git a/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5228_Spreading the Warmth and Cheer.json b/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5228_Spreading the Warmth and Cheer.json new file mode 100644 index 00000000..0b3bed7f --- /dev/null +++ b/QuestPaths/7.x - Dawntrail/Seasonal Events/Starlight Celebration (2024)/5228_Spreading the Warmth and Cheer.json @@ -0,0 +1,206 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "Starr", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1051819, + "Position": { + "X": -1.6937866, + "Y": 0.0028544795, + "Z": -21.042236 + }, + "TerritoryId": 1247, + "InteractionType": "AcceptQuest" + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1051822, + "Position": { + "X": 61.478516, + "Y": -7.7123985, + "Z": 98.98523 + }, + "TerritoryId": 132, + "InteractionType": "Interact", + "AetheryteShortcut": "Gridania" + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1051807, + "Position": { + "X": -53.635498, + "Y": 5.793307, + "Z": -99.931335 + }, + "TerritoryId": 133, + "InteractionType": "Interact", + "TargetTerritoryId": 1247, + "AetheryteShortcut": "Gridania", + "AethernetShortcut": [ + "[Gridania] Aetheryte Plaza", + "[Gridania] Mih Khetto's Amphitheatre" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true, + "InTerritory": [ + 132 + ] + } + } + }, + { + "DataId": 1051823, + "Position": { + "X": 34.164917, + "Y": -0.37309912, + "Z": 23.605652 + }, + "TerritoryId": 1247, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1051833, + "Position": { + "X": 35.568726, + "Y": -0.24490167, + "Z": 21.560913 + }, + "TerritoryId": 1247, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 1051816, + "Position": { + "X": 18.142944, + "Y": 0.0028544795, + "Z": -0.289917 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1051809, + "Position": { + "X": -15.823608, + "Y": 0.0028544795, + "Z": 9.84198 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + }, + { + "DataId": 1051813, + "Position": { + "X": -5.1118164, + "Y": 1.21852545E-05, + "Z": -31.99823 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 1051825, + "Position": { + "X": -1.7853394, + "Y": 2.0028546, + "Z": -86.38135 + }, + "TerritoryId": 1247, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 2014535, + "Position": { + "X": 67.88733, + "Y": -0.77819824, + "Z": 51.224487 + }, + "TerritoryId": 1247, + "InteractionType": "Interact", + "TargetTerritoryId": 133 + }, + { + "DataId": 1051802, + "Position": { + "X": -50.06488, + "Y": 6.499999, + "Z": -89.58569 + }, + "TerritoryId": 133, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1051805, + "Position": { + "X": 33.401978, + "Y": -0.31104973, + "Z": 22.079773 + }, + "TerritoryId": 1253, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/Questionable.sln b/Questionable.sln index df898789..5046322f 100644 --- a/Questionable.sln +++ b/Questionable.sln @@ -15,11 +15,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Questionable.Model", "Quest EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuestPathGenerator.Tests", "QuestPathGenerator.Tests\QuestPathGenerator.Tests.csproj", "{4FD6F346-8961-4BD5-BDA2-E5F426DE4FC7}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GatheringPaths", "GatheringPaths\GatheringPaths.csproj", "{8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GatheringPaths", "GatheringPaths\GatheringPaths.csproj", "{8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GatheringPathRenderer", "GatheringPathRenderer\GatheringPathRenderer.csproj", "{F514DA95-9867-4F3F-8062-ACE0C62E8740}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "GatheringPathRenderer", "GatheringPathRenderer\GatheringPathRenderer.csproj", "{F514DA95-9867-4F3F-8062-ACE0C62E8740}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ECommons", "vendor\ECommons\ECommons\ECommons.csproj", "{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ECommons", "vendor\ECommons\ECommons\ECommons.csproj", "{A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BBFFC6EA-15B1-48FC-B4D3-D9491278C27F}" ProjectSection(SolutionItems) = preProject @@ -28,7 +28,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vendor", "vendor", "{8F5EC9D5-4CE7-433B-BB3A-782500E84DDB}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NotificationMasterAPI", "vendor\NotificationMasterAPI\NotificationMasterAPI\NotificationMasterAPI.csproj", "{9BD494ED-22F2-487B-BCE1-435399A8720E}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotificationMasterAPI", "vendor\NotificationMasterAPI\NotificationMasterAPI\NotificationMasterAPI.csproj", "{9BD494ED-22F2-487B-BCE1-435399A8720E}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -36,6 +36,14 @@ Global Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Debug|x64.ActiveCfg = Debug|x64 + {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Debug|x64.Build.0 = Debug|x64 + {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Release|x64.ActiveCfg = Release|x64 + {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Release|x64.Build.0 = Release|x64 + {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Debug|x64.ActiveCfg = Debug|x64 + {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Debug|x64.Build.0 = Debug|x64 + {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Release|x64.ActiveCfg = Release|x64 + {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Release|x64.Build.0 = Release|x64 {7A136F28-8D5C-478D-B993-0F39F1451A47}.Debug|x64.ActiveCfg = Debug|x64 {7A136F28-8D5C-478D-B993-0F39F1451A47}.Debug|x64.Build.0 = Debug|x64 {7A136F28-8D5C-478D-B993-0F39F1451A47}.Release|x64.ActiveCfg = Release|x64 @@ -52,22 +60,14 @@ Global {4FD6F346-8961-4BD5-BDA2-E5F426DE4FC7}.Debug|x64.Build.0 = Debug|x64 {4FD6F346-8961-4BD5-BDA2-E5F426DE4FC7}.Release|x64.ActiveCfg = Release|x64 {4FD6F346-8961-4BD5-BDA2-E5F426DE4FC7}.Release|x64.Build.0 = Release|x64 - {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Debug|x64.ActiveCfg = Debug|x64 - {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Debug|x64.Build.0 = Debug|x64 - {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Release|x64.ActiveCfg = Release|x64 - {EEDE3BBE-E260-445E-8FB3-1264E0CBBE91}.Release|x64.Build.0 = Release|x64 - {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Debug|x64.ActiveCfg = Debug|x64 - {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Debug|x64.Build.0 = Debug|x64 - {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Release|x64.ActiveCfg = Release|x64 - {C91EEF13-A1AC-4A40-B695-DD4E378E5989}.Release|x64.Build.0 = Release|x64 - {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Debug|x64.ActiveCfg = Debug|Any CPU - {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Debug|x64.Build.0 = Debug|Any CPU - {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Release|x64.ActiveCfg = Release|Any CPU - {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Release|x64.Build.0 = Release|Any CPU - {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.ActiveCfg = Debug|Any CPU - {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.Build.0 = Debug|Any CPU - {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.ActiveCfg = Release|Any CPU - {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.Build.0 = Release|Any CPU + {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Debug|x64.ActiveCfg = Debug|x64 + {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Debug|x64.Build.0 = Debug|x64 + {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Release|x64.ActiveCfg = Release|x64 + {8BF98BEF-6F00-4197-91ED-75F8F1C35FFB}.Release|x64.Build.0 = Release|x64 + {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.ActiveCfg = Debug|x64 + {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Debug|x64.Build.0 = Debug|x64 + {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.ActiveCfg = Release|x64 + {F514DA95-9867-4F3F-8062-ACE0C62E8740}.Release|x64.Build.0 = Release|x64 {A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Debug|x64.ActiveCfg = Debug|x64 {A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Debug|x64.Build.0 = Debug|x64 {A12D7B4B-8E6E-4DCF-A41A-12F62E9FF94B}.Release|x64.ActiveCfg = Release|x64 diff --git a/Questionable/Windows/JournalComponents/AlliedSocietyJournalComponent.cs b/Questionable/Windows/JournalComponents/AlliedSocietyJournalComponent.cs index 92cc96b7..c7e50602 100644 --- a/Questionable/Windows/JournalComponents/AlliedSocietyJournalComponent.cs +++ b/Questionable/Windows/JournalComponents/AlliedSocietyJournalComponent.cs @@ -57,16 +57,28 @@ internal sealed class AlliedSocietyJournalComponent if (quests.Count == 0) continue; - bool containsNewQuests = quests.Any(x => !_questFunctions.IsQuestComplete(x.QuestId)); - if (containsNewQuests) - ImGui.PushStyleColor(ImGuiCol.Text, ImGuiColors.DalamudYellow); + string label = $"{alliedSociety}###AlliedSociety{(int)alliedSociety}"; +#if DEBUG + bool isOpen; + if (quests.Any(x => !_questRegistry.IsKnownQuest(x.QuestId))) + { + using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudOrange)) + isOpen = ImGui.CollapsingHeader(label); + } + else if (quests.Any(x => !_questFunctions.IsQuestComplete(x.QuestId))) + { + using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudYellow)) + isOpen = ImGui.CollapsingHeader(label); + } + else + isOpen = ImGui.CollapsingHeader(label); +#else + bool isOpen = ImGui.CollapsingHeader(label); +#endif - if (!ImGui.CollapsingHeader($"{alliedSociety}###AlliedSociety{(int)alliedSociety}")) + if (!isOpen) continue; - if (containsNewQuests) - ImGui.PopStyleColor(); - if (alliedSociety <= EAlliedSociety.Ixal) { for (byte i = 1; i <= 8; ++i) diff --git a/Questionable/Windows/OneTimeSetupWindow.cs b/Questionable/Windows/OneTimeSetupWindow.cs index f1c71552..b94b3fc8 100644 --- a/Questionable/Windows/OneTimeSetupWindow.cs +++ b/Questionable/Windows/OneTimeSetupWindow.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using Dalamud.Interface; using Dalamud.Interface.Colors; using Dalamud.Interface.Components; @@ -19,6 +20,7 @@ internal sealed class OneTimeSetupWindow : LWindow private static readonly IReadOnlyList RequiredPlugins = [ new("vnavmesh", + "vnavmesh", """ vnavmesh handles the navigation within a zone, moving your character to the next quest-related objective. @@ -26,12 +28,14 @@ internal sealed class OneTimeSetupWindow : LWindow new Uri("https://github.com/awgil/ffxiv_navmesh/"), new Uri("https://puni.sh/api/repository/veyn")), new("Lifestream", + "Lifestream", """ Used to travel to aethernet shards in cities. """, new Uri("https://github.com/NightmareXIV/Lifestream"), new Uri("https://github.com/NightmareXIV/MyDalamudPlugins/raw/main/pluginmaster.json")), new("TextAdvance", + "TextAdvance", """ Automatically accepts and turns in quests, skips cutscenes and dialogue. @@ -45,23 +49,22 @@ internal sealed class OneTimeSetupWindow : LWindow private readonly Configuration _configuration; private readonly IDalamudPluginInterface _pluginInterface; private readonly UiUtils _uiUtils; - private readonly DalamudReflector _dalamudReflector; private readonly ILogger _logger; public OneTimeSetupWindow(Configuration configuration, IDalamudPluginInterface pluginInterface, UiUtils uiUtils, - DalamudReflector dalamudReflector, ILogger logger, AutomatonIpc automatonIpc) + ILogger logger, AutomatonIpc automatonIpc) : base("Questionable Setup###QuestionableOneTimeSetup", ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoSavedSettings, true) { _configuration = configuration; _pluginInterface = pluginInterface; _uiUtils = uiUtils; - _dalamudReflector = dalamudReflector; _logger = logger; _recommendedPlugins = [ new("Rotation Solver Reborn", + "RotationSolver", """ Automatically handles most combat interactions you encounter during quests, including being interrupted by mobs. @@ -69,7 +72,8 @@ internal sealed class OneTimeSetupWindow : LWindow new Uri("https://github.com/FFXIV-CombatReborn/RotationSolverReborn"), new Uri( "https://raw.githubusercontent.com/FFXIV-CombatReborn/CombatRebornRepo/main/pluginmaster.json")), - new PluginInfo("Automaton", + new PluginInfo("CBT (formerly known as Automaton)", + "Automaton", """ Automaton is a collection of automation-related tweaks. The 'Sniper no sniping' tweak can complete snipe tasks automatically. @@ -78,6 +82,7 @@ internal sealed class OneTimeSetupWindow : LWindow new Uri("https://puni.sh/api/repository/croizat"), [new PluginDetailInfo("'Sniper no sniping' enabled", () => automatonIpc.IsAutoSnipeEnabled)]), new("NotificationMaster", + "NotificationMaster", """ Sends a configurable out-of-game notification if a quest requires manual actions. @@ -159,7 +164,7 @@ internal sealed class OneTimeSetupWindow : LWindow private bool DrawPlugin(PluginInfo plugin, float checklistPadding) { - bool isInstalled = IsPluginInstalled(plugin.DisplayName); + bool isInstalled = IsPluginInstalled(plugin); using (ImRaii.PushId("plugin_" + plugin.DisplayName)) { _uiUtils.ChecklistItem(plugin.DisplayName, isInstalled); @@ -194,13 +199,14 @@ internal sealed class OneTimeSetupWindow : LWindow return isInstalled; } - private bool IsPluginInstalled(string internalName) + private bool IsPluginInstalled(PluginInfo pluginInfo) { - return _dalamudReflector.TryGetDalamudPlugin(internalName, out _, suppressErrors: true, ignoreCache: true); + return _pluginInterface.InstalledPlugins.Any(x => x.InternalName == pluginInfo.InternalName && x.IsLoaded); } private sealed record PluginInfo( string DisplayName, + string InternalName, string Details, Uri WebsiteUri, Uri? DalamudRepositoryUri, diff --git a/Questionable/Windows/QuestComponents/EventInfoComponent.cs b/Questionable/Windows/QuestComponents/EventInfoComponent.cs index d85e1f70..9325efa2 100644 --- a/Questionable/Windows/QuestComponents/EventInfoComponent.cs +++ b/Questionable/Windows/QuestComponents/EventInfoComponent.cs @@ -22,6 +22,7 @@ internal sealed class EventInfoComponent [SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")] private readonly List _eventQuests = [ + new("Starlight Celebration", [new(5227), new(5228)], AtDailyReset(new(2024, 12, 31))), ]; private readonly QuestData _questData;