forked from liza/Questionable
Add missing THM quests
This commit is contained in:
parent
8462b86544
commit
920d2f0724
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -14,7 +13,17 @@
|
|||||||
"Z": 59.952637
|
"Z": 59.952637
|
||||||
},
|
},
|
||||||
"TerritoryId": 130,
|
"TerritoryId": 130,
|
||||||
"InteractionType": "AcceptQuest"
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Aetheryte Plaza",
|
||||||
|
"[Ul'dah] Thaumaturges' Guild"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -40,6 +49,126 @@
|
|||||||
"NextQuestId": 351
|
"NextQuestId": 351
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -71.92632,
|
||||||
|
"Y": 9.839797,
|
||||||
|
"Z": 283.98495
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 351,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"$": "Slay star marmots as a thaumaturge",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
{
|
||||||
|
"Low": 3
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 385,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"$": "Slay huge hornets as a thaumaturge",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Thaumaturges' Guild",
|
||||||
|
"[Ul'dah] Gate of Nald (Central Thanalan)"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true,
|
||||||
|
"InTerritory": [
|
||||||
|
141
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
{
|
||||||
|
"Low": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"High": 3
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 39.449,
|
||||||
|
"Y": 3.082914,
|
||||||
|
"Z": 272.46896
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 205,
|
||||||
|
"MinimumKillCount": 3,
|
||||||
|
"$": "Slay snapping shrews as a thaumaturge"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
{
|
||||||
|
"Low": 3
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001708,
|
||||||
|
"Position": {
|
||||||
|
"X": -250.3548,
|
||||||
|
"Y": 18,
|
||||||
|
"Z": 80.88806
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Aetheryte Plaza",
|
||||||
|
"[Ul'dah] Thaumaturges' Guild"
|
||||||
|
],
|
||||||
|
"NextQuestId": 351
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,231 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": ["liza", "pot0to"],
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001708,
|
||||||
|
"Position": {
|
||||||
|
"X": -250.3548,
|
||||||
|
"Y": 18,
|
||||||
|
"Z": 80.88806
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Aetheryte Plaza",
|
||||||
|
"[Ul'dah] Thaumaturges' Guild"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001710,
|
||||||
|
"Position": {
|
||||||
|
"X": -240.2533,
|
||||||
|
"Y": 18.8,
|
||||||
|
"Z": 86.900024
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "None",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Thaumaturges' Guild",
|
||||||
|
"[Ul'dah] Gate of Nald (Central Thanalan)"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true,
|
||||||
|
"InTerritory": [
|
||||||
|
141
|
||||||
|
],
|
||||||
|
"AetheryteUnlocked": "Central Thanalan - Black Brush Station"
|
||||||
|
},
|
||||||
|
"AethernetShortcutIf": {
|
||||||
|
"AetheryteUnlocked": "Central Thanalan - Black Brush Station"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -62.183617,
|
||||||
|
"Y": -3.6582246,
|
||||||
|
"Z": 145.88391
|
||||||
|
},
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"Flying": "Unlocked",
|
||||||
|
"AetheryteUnlocked": "Central Thanalan - Black Brush Station"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 149.07747,
|
||||||
|
"Y": -2,
|
||||||
|
"Z": -225.21188
|
||||||
|
},
|
||||||
|
"TerritoryId": 141,
|
||||||
|
"AetheryteShortcut": "Central Thanalan - Black Brush Station",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Fly": true,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 160,
|
||||||
|
"MinimumKillCount": 8,
|
||||||
|
"$": "Slay efts",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
{
|
||||||
|
"Low": 8
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001710,
|
||||||
|
"Position": {
|
||||||
|
"X": -240.2533,
|
||||||
|
"Y": 18.8,
|
||||||
|
"Z": 86.900024
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Aetheryte Plaza",
|
||||||
|
"[Ul'dah] Thaumaturges' Guild"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "List",
|
||||||
|
"Prompt": "TEXT_CLSTHM100_00348_Q_000_1",
|
||||||
|
"Answer": "TEXT_CLSTHM100_00348_A_000_3"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2001511,
|
||||||
|
"Position": {
|
||||||
|
"X": -366.29285,
|
||||||
|
"Y": -34.989014,
|
||||||
|
"Z": 293.56824
|
||||||
|
},
|
||||||
|
"TerritoryId": 145,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
166,
|
||||||
|
1238
|
||||||
|
],
|
||||||
|
"Fly": true,
|
||||||
|
"AetheryteShortcut": "Eastern Thanalan - Camp Drybone",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2001498,
|
||||||
|
"Position": {
|
||||||
|
"X": -366.29285,
|
||||||
|
"Y": -34.989014,
|
||||||
|
"Z": 293.56824
|
||||||
|
},
|
||||||
|
"TerritoryId": 145,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 6,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001710,
|
||||||
|
"Position": {
|
||||||
|
"X": -240.2533,
|
||||||
|
"Y": 18.8,
|
||||||
|
"Z": 86.900024
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Ul'dah",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ul'dah] Aetheryte Plaza",
|
||||||
|
"[Ul'dah] Thaumaturges' Guild"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1001708,
|
||||||
|
"Position": {
|
||||||
|
"X": -250.3548,
|
||||||
|
"Y": 18,
|
||||||
|
"Z": 80.88806
|
||||||
|
},
|
||||||
|
"TerritoryId": 130,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 350
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -163,7 +163,8 @@
|
|||||||
"InteractionType": "Combat",
|
"InteractionType": "Combat",
|
||||||
"EnemySpawnType": "AfterInteraction",
|
"EnemySpawnType": "AfterInteraction",
|
||||||
"KillEnemyDataIds": [
|
"KillEnemyDataIds": [
|
||||||
166
|
166,
|
||||||
|
1238
|
||||||
],
|
],
|
||||||
"Fly": true,
|
"Fly": true,
|
||||||
"AetheryteShortcut": "Eastern Thanalan - Camp Drybone",
|
"AetheryteShortcut": "Eastern Thanalan - Camp Drybone",
|
||||||
|
@ -762,7 +762,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
|
|||||||
if (!IsInterruptible() || _nextQuest != null || _gatheringQuest != null || _simulatedQuest != null)
|
if (!IsInterruptible() || _nextQuest != null || _gatheringQuest != null || _simulatedQuest != null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ElementId? priorityQuestId = _questFunctions.GetNextPriorityQuestThatCanBeAccepted();
|
ElementId? priorityQuestId = _questFunctions.GetNextPriorityQuestsThatCanBeAccepted().FirstOrDefault();
|
||||||
if (priorityQuestId == null)
|
if (priorityQuestId == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ internal sealed unsafe class QuestFunctions
|
|||||||
return (firstTrackedQuest, firstTrackedSequence);
|
return (firstTrackedQuest, firstTrackedSequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
ElementId? priorityQuest = GetNextPriorityQuestThatCanBeAccepted();
|
ElementId? priorityQuest = GetNextPriorityQuestsThatCanBeAccepted().FirstOrDefault();
|
||||||
if (priorityQuest != null)
|
if (priorityQuest != null)
|
||||||
{
|
{
|
||||||
// if we have an accepted msq quest, and know of no quest of those currently in the to-do list...
|
// if we have an accepted msq quest, and know of no quest of those currently in the to-do list...
|
||||||
@ -336,12 +336,12 @@ internal sealed unsafe class QuestFunctions
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ElementId? GetNextPriorityQuestThatCanBeAccepted()
|
public List<ElementId> GetNextPriorityQuestsThatCanBeAccepted()
|
||||||
{
|
{
|
||||||
// all priority quests assume we're able to teleport to the beginning (and for e.g. class quests, the end)
|
// all priority quests assume we're able to teleport to the beginning (and for e.g. class quests, the end)
|
||||||
// ideally without having to wait 15m for Return.
|
// ideally without having to wait 15m for Return.
|
||||||
if (!_aetheryteFunctions.IsTeleportUnlocked())
|
if (!_aetheryteFunctions.IsTeleportUnlocked())
|
||||||
return null;
|
return [];
|
||||||
|
|
||||||
// ideally, we'd also be able to afford *some* teleports
|
// ideally, we'd also be able to afford *some* teleports
|
||||||
// this implicitly makes sure we're not starting one of the lv1 class quests if we can't afford to teleport back
|
// this implicitly makes sure we're not starting one of the lv1 class quests if we can't afford to teleport back
|
||||||
@ -363,7 +363,7 @@ internal sealed unsafe class QuestFunctions
|
|||||||
|
|
||||||
return firstStep.IsTeleportableForPriorityQuests();
|
return firstStep.IsTeleportableForPriorityQuests();
|
||||||
})
|
})
|
||||||
.FirstOrDefault(x =>
|
.Where(x =>
|
||||||
{
|
{
|
||||||
if (!_questRegistry.TryGetQuest(x, out Quest? quest))
|
if (!_questRegistry.TryGetQuest(x, out Quest? quest))
|
||||||
return false;
|
return false;
|
||||||
@ -390,7 +390,8 @@ internal sealed unsafe class QuestFunctions
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
});
|
})
|
||||||
|
.ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int EstimateTeleportCosts(Quest quest)
|
private static int EstimateTeleportCosts(Quest quest)
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
@ -167,8 +168,29 @@ internal sealed partial class ActiveQuestComponent
|
|||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(ImGuiColors.DalamudYellow, SeIconChar.Hyadelyn.ToIconString());
|
ImGui.TextColored(ImGuiColors.DalamudYellow, SeIconChar.Hyadelyn.ToIconString());
|
||||||
if (ImGui.IsItemHovered())
|
if (ImGui.IsItemHovered())
|
||||||
ImGui.SetTooltip(
|
{
|
||||||
"This quest sequence starts with a teleport to an Aetheryte.\nCertain priority quest (e.g. class quests) may be started/completed by the plugin prior to continuing with this quest.");
|
using var tooltip = ImRaii.Tooltip();
|
||||||
|
if (tooltip)
|
||||||
|
{
|
||||||
|
ImGui.Text("This quest sequence starts with a teleport to an Aetheryte.");
|
||||||
|
ImGui.Text(
|
||||||
|
"Certain priority quest (e.g. class quests) may be started/completed by the plugin prior to continuing with this quest.");
|
||||||
|
ImGui.Separator();
|
||||||
|
ImGui.Text("Available priority quests:");
|
||||||
|
|
||||||
|
List<ElementId> priorityQuests = _questFunctions.GetNextPriorityQuestsThatCanBeAccepted();
|
||||||
|
if (priorityQuests.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var questId in priorityQuests)
|
||||||
|
{
|
||||||
|
if (_questRegistry.TryGetQuest(questId, out var quest))
|
||||||
|
ImGui.BulletText($"{quest.Info.Name} ({questId})");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ImGui.BulletText("(none)");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user