<Project>
<PropertyGroup Condition="$(MSBuildProjectName) != 'GatheringPathRenderer'">
- <Version>5.11</Version>
+ <Version>5.12</Version>
</PropertyGroup>
</Project>
{
"TerritoryId": 144,
"InteractionType": "AttuneAethernetShard",
- "AethernetShard": "[Gold Saucer] Entrance & Card Squares"
+ "AethernetShard": "[Gold Saucer] Entrance & Card Squares",
+ "StopDistance": 7
},
{
"DataId": 1010448,
{
"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,
"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,
"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": {
{
"TerritoryId": 144,
"InteractionType": "AttuneAethernetShard",
- "AethernetShard": "[Gold Saucer] Round Square"
+ "AethernetShard": "[Gold Saucer] Round Square",
+ "StopDistance": 7
},
{
"TerritoryId": 144,
--- /dev/null
+{
+ "$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"
+ }
+ ]
+ }
+ ]
+}
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;
using System.Linq;
using Dalamud.Interface;
using Dalamud.Interface.Components;
+using Dalamud.Interface.Utility.Raii;
using Dalamud.Plugin;
using Humanizer;
using Humanizer.Localisation;
private readonly List<EventQuest> _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;
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));
+ }
}
}
}