From 9777295ebb099ca0ae9a1d1f31bb5a103cf29bf2 Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Tue, 20 May 2025 02:29:51 +0200 Subject: [PATCH] Add Make It Rain quest --- Directory.Build.targets | 2 +- .../Gold Saucer/435_World of Wonders.json | 52 ++-- .../5322_Royal Rumblings.json | 287 ++++++++++++++++++ Questionable/Data/QuestData.cs | 2 - .../QuestComponents/EventInfoComponent.cs | 50 +-- 5 files changed, 337 insertions(+), 56 deletions(-) create mode 100644 QuestPaths/7.x - Dawntrail/Seasonal Events/Make It Rain (2025)/5322_Royal Rumblings.json diff --git a/Directory.Build.targets b/Directory.Build.targets index b0347663..278ac3e8 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,5 +1,5 @@ - 5.11 + 5.12 diff --git a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json index f6dce677..277c7e49 100644 --- a/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json +++ b/QuestPaths/2.x - A Realm Reborn/Unlocks/Gold Saucer/435_World of Wonders.json @@ -27,7 +27,8 @@ { "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", - "AethernetShard": "[Gold Saucer] Entrance & Card Squares" + "AethernetShard": "[Gold Saucer] Entrance & Card Squares", + "StopDistance": 7 }, { "DataId": 1010448, @@ -90,12 +91,14 @@ { "TerritoryId": 388, "InteractionType": "AttuneAethernetShard", - "AethernetShard": "[Gold Saucer] Minion Square" + "AethernetShard": "[Gold Saucer] Minion Square", + "StopDistance": 5 }, { "TerritoryId": 388, "InteractionType": "AttuneAethernetShard", - "AethernetShard": "[Gold Saucer] Chocobo Square" + "AethernetShard": "[Gold Saucer] Chocobo Square", + "StopDistance": 7 }, { "TerritoryId": 388, @@ -128,30 +131,25 @@ "Steps": [ { "Position": { - "X": 12.5078335, - "Y": 4.1552944, - "Z": 45.718685 + "X": 46.78062, + "Y": 11.798187, + "Z": 20.328043 }, "TerritoryId": 144, - "InteractionType": "Jump", - "JumpDestination": { - "Position": { - "X": 12.60962, - "Y": 4.2181597, - "Z": 49.651253 - } - } + "InteractionType": "WalkTo" }, { "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", "AethernetShard": "[Gold Saucer] Wonder Square West", + "StopDistance": 7, "DelaySecondsAtStart": 3 }, { "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", - "AethernetShard": "[Gold Saucer] Wonder Square East" + "AethernetShard": "[Gold Saucer] Wonder Square East", + "StopDistance": 7 }, { "TerritoryId": 144, @@ -165,31 +163,24 @@ "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", "AethernetShard": "[Gold Saucer] Event Square", + "StopDistance": 7, "DelaySecondsAtStart": 3 }, { "Position": { - "X": 89.128395, - "Y": -5.000001, - "Z": -66.6124 + "X": 122.973015, + "Y": -0.5100681, + "Z": -50.024624 }, - "StopDistance": 0.5, "TerritoryId": 144, - "InteractionType": "Jump", - "JumpDestination": { - "Position": { - "X": 85.47148, - "Y": -4.7818403, - "Z": -63.892 - }, - "DelaySeconds": 0.1 - } + "InteractionType": "WalkTo", + "DelaySecondsAtStart": 3 }, { "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", "AethernetShard": "[Gold Saucer] Cactpot Board", - "DelaySecondsAtStart": 3 + "StopDistance": 7 }, { "Position": { @@ -252,7 +243,8 @@ { "TerritoryId": 144, "InteractionType": "AttuneAethernetShard", - "AethernetShard": "[Gold Saucer] Round Square" + "AethernetShard": "[Gold Saucer] Round Square", + "StopDistance": 7 }, { "TerritoryId": 144, diff --git a/QuestPaths/7.x - Dawntrail/Seasonal Events/Make It Rain (2025)/5322_Royal Rumblings.json b/QuestPaths/7.x - Dawntrail/Seasonal Events/Make It Rain (2025)/5322_Royal Rumblings.json new file mode 100644 index 00000000..7bc8d9ab --- /dev/null +++ b/QuestPaths/7.x - Dawntrail/Seasonal Events/Make It Rain (2025)/5322_Royal Rumblings.json @@ -0,0 +1,287 @@ +{ + "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json", + "Author": "liza", + "QuestSequence": [ + { + "Sequence": 0, + "Steps": [ + { + "DataId": 1049020, + "Position": { + "X": -86.32031, + "Y": 4, + "Z": -104.35651 + }, + "TerritoryId": 130, + "InteractionType": "AcceptQuest", + "AetheryteShortcut": "Ul'dah", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + } + ] + }, + { + "Sequence": 1, + "Steps": [ + { + "DataId": 1011565, + "Position": { + "X": -78.8739, + "Y": 4, + "Z": -110.429565 + }, + "TerritoryId": 130, + "InteractionType": "AcceptQuest", + "PickUpQuestId": 434 + }, + { + "$": "Airship to Gold Saucer if you haven't unlocked the aetheryte", + "DataId": 1004433, + "Position": { + "X": -23.605713, + "Y": 83.19999, + "Z": -2.3041382 + }, + "TerritoryId": 130, + "InteractionType": "Interact", + "AetheryteShortcut": "Ul'dah", + "AethernetShortcut": [ + "[Ul'dah] Aetheryte Plaza", + "[Ul'dah] Airship Landing" + ], + "TargetTerritoryId": 144, + "SkipConditions": { + "AetheryteShortcutIf": { + "InTerritory": [ + 130, + 144 + ], + "AetheryteUnlocked": "Gold Saucer" + }, + "StepIf": { + "InTerritory": [ + 144 + ], + "AetheryteUnlocked": "Gold Saucer" + } + } + }, + { + "DataId": 1011022, + "Position": { + "X": -38.895264, + "Y": -2.7930364E-06, + "Z": 97.33728 + }, + "StopDistance": 7, + "TerritoryId": 144, + "InteractionType": "AcceptQuest", + "PickUpQuestId": 435, + "AetheryteShortcut": "Gold Saucer", + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + }, + { + "DataId": 1049021, + "Position": { + "X": -80.91864, + "Y": -1.2629791E-05, + "Z": 46.463623 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "AetheryteShortcut": "Gold Saucer", + "AethernetShortcut": [ + "[Gold Saucer] Aetheryte Plaza", + "[Gold Saucer] Entrance & Card Squares" + ], + "SkipConditions": { + "AetheryteShortcutIf": { + "InSameTerritory": true + } + } + } + ] + }, + { + "Sequence": 2, + "Steps": [ + { + "DataId": 1049029, + "Position": { + "X": 10.452393, + "Y": 20.99973, + "Z": 39.597046 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Gold Saucer] Entrance & Card Squares", + "[Gold Saucer] Wonder Square West" + ], + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 32 + ] + }, + { + "DataId": 1049028, + "Position": { + "X": 55.77173, + "Y": 3.9997194, + "Z": 42.313232 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 64 + ] + }, + { + "DataId": 1049027, + "Position": { + "X": 7.003784, + "Y": 3.9997306, + "Z": 78.20239 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "CompletionQuestVariablesFlags": [ + null, + null, + null, + null, + null, + 128 + ] + } + ] + }, + { + "Sequence": 3, + "Steps": [ + { + "DataId": 1049023, + "Position": { + "X": -12.863403, + "Y": -1.1376108E-16, + "Z": -7.9804688 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "DialogueChoices": [ + { + "Type": "List", + "Prompt": "TEXT_FESGSC901_05322_Q1_000_000", + "Answer": "TEXT_FESGSC901_05322_A1_000_002" + } + ] + } + ] + }, + { + "Sequence": 4, + "Steps": [ + { + "DataId": 2014700, + "Position": { + "X": 107.7439, + "Y": 12.985352, + "Z": -45.212524 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Gold Saucer] Aetheryte Plaza", + "[Gold Saucer] Cactpot Board" + ] + } + ] + }, + { + "Sequence": 5, + "Steps": [ + { + "DataId": 2014702, + "Position": { + "X": 94.346436, + "Y": 13.01593, + "Z": -5.935791 + }, + "StopDistance": 4.5, + "TerritoryId": 144, + "InteractionType": "Interact" + } + ] + }, + { + "Sequence": 6, + "Steps": [ + { + "DataId": 1049025, + "Position": { + "X": 33.49353, + "Y": -5, + "Z": -58.54895 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Gold Saucer] Cactpot Board", + "[Gold Saucer] Event Square" + ] + } + ] + }, + { + "Sequence": 7, + "Steps": [ + { + "DataId": 2014703, + "Position": { + "X": -67.00244, + "Y": -0.015319824, + "Z": 39.230957 + }, + "TerritoryId": 144, + "InteractionType": "Interact", + "AethernetShortcut": [ + "[Gold Saucer] Event Square", + "[Gold Saucer] Entrance & Card Squares" + ] + } + ] + }, + { + "Sequence": 255, + "Steps": [ + { + "DataId": 1049026, + "Position": { + "X": -31.937195, + "Y": 0.044279926, + "Z": 18.32605 + }, + "StopDistance": 5, + "TerritoryId": 144, + "InteractionType": "CompleteQuest" + } + ] + } + ] +} diff --git a/Questionable/Data/QuestData.cs b/Questionable/Data/QuestData.cs index 19f457fe..26f0cc53 100644 --- a/Questionable/Data/QuestData.cs +++ b/Questionable/Data/QuestData.cs @@ -1,14 +1,12 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; -using System.Collections.ObjectModel; using System.Diagnostics.CodeAnalysis; using System.Linq; using Dalamud.Plugin.Services; using FFXIVClientStructs.FFXIV.Client.Game.UI; using LLib.GameData; using Lumina.Excel.Sheets; -using Microsoft.Extensions.Logging; using Questionable.Model; using Questionable.Model.Questing; using Quest = Lumina.Excel.Sheets.Quest; diff --git a/Questionable/Windows/QuestComponents/EventInfoComponent.cs b/Questionable/Windows/QuestComponents/EventInfoComponent.cs index b86a7955..79733057 100644 --- a/Questionable/Windows/QuestComponents/EventInfoComponent.cs +++ b/Questionable/Windows/QuestComponents/EventInfoComponent.cs @@ -5,6 +5,7 @@ using System.Globalization; using System.Linq; using Dalamud.Interface; using Dalamud.Interface.Components; +using Dalamud.Interface.Utility.Raii; using Dalamud.Plugin; using Humanizer; using Humanizer.Localisation; @@ -23,6 +24,7 @@ internal sealed class EventInfoComponent private readonly List _eventQuests = [ new EventQuest("Limited Time Items", [new UnlockLinkId(506)], DateTime.MaxValue), + new EventQuest("Make It Rain", [new QuestId(5322)], AtDailyReset(new(2025, 6, 11))) ]; private readonly QuestData _questData; @@ -100,35 +102,37 @@ internal sealed class EventInfoComponent if (_questFunctions.IsQuestComplete(questId)) continue; - string questName = _questData.GetQuestInfo(questId).Name; - if (startableQuests.Contains(questId) && - _questRegistry.TryGetQuest(questId, out Quest? quest)) + using (ImRaii.PushId($"##EventQuestSelection{questId}")) { - ImGuiComponents.IconButton(FontAwesomeIcon.Play); - if (ImGui.IsItemClicked()) + string questName = _questData.GetQuestInfo(questId).Name; + if (startableQuests.Contains(questId) && + _questRegistry.TryGetQuest(questId, out Quest? quest)) { - _questController.SetNextQuest(quest); - _questController.Start("SeasonalEventSelection"); - } + if (ImGuiComponents.IconButton(FontAwesomeIcon.Play)) + { + _questController.SetNextQuest(quest); + _questController.Start("SeasonalEventSelection"); + } - bool hovered = ImGui.IsItemHovered(); + bool hovered = ImGui.IsItemHovered(); - ImGui.SameLine(); - ImGui.AlignTextToFramePadding(); - ImGui.Text(questName); - hovered |= ImGui.IsItemHovered(); + ImGui.SameLine(); + ImGui.AlignTextToFramePadding(); + ImGui.Text(questName); + hovered |= ImGui.IsItemHovered(); - if (hovered) - _questTooltipComponent.Draw(quest.Info); - } - else - { - if (width > 0) - ImGui.SetCursorPosX(ImGui.GetCursorPosX() + width); + if (hovered) + _questTooltipComponent.Draw(quest.Info); + } + else + { + if (width > 0) + ImGui.SetCursorPosX(ImGui.GetCursorPosX() + width); - var style = _uiUtils.GetQuestStyle(questId); - if (_uiUtils.ChecklistItem(questName, style.Color, style.Icon, ImGui.GetStyle().FramePadding.X)) - _questTooltipComponent.Draw(_questData.GetQuestInfo(questId)); + var style = _uiUtils.GetQuestStyle(questId); + if (_uiUtils.ChecklistItem(questName, style.Color, style.Icon, ImGui.GetStyle().FramePadding.X)) + _questTooltipComponent.Draw(_questData.GetQuestInfo(questId)); + } } } } -- 2.30.2