{
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
- "Author": "AnimaMachinae",
- "QuestSequence": [
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "AnimaMachinae",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
{
- "Sequence": 0,
- "Steps": [
- {
- "DataId": 1016089,
- "Position": {
- "X": -799.46594,
- "Y": -133.2695,
- "Z": -404.1352
- },
- "TerritoryId": 401,
- "InteractionType": "AcceptQuest"
- }
- ]
+ "DataId": 1016089,
+ "Position": {
+ "X": -799.46594,
+ "Y": -133.2695,
+ "Z": -404.1352
+ },
+ "TerritoryId": 401,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 401
+ }
+ }
+ }
},
{
- "Sequence": 1,
- "Steps": [
- {
- "DataId": 1016093,
- "Position": {
- "X": -776.0281,
- "Y": -133.35559,
- "Z": -414.32825
- },
- "TerritoryId": 401,
- "InteractionType": "Interact"
- }
- ]
+ "DataId": 1016093,
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "TerritoryId": 401,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -544.89056,
+ "Y": 61.602722,
+ "Z": -373.9669
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo",
+ "Fly": true
},
{
- "Sequence": 2,
- "Steps": [
- {
- "Position": {
- "X": -544.89056,
- "Y": 61.602722,
- "Z": -373.9669
- },
- "TerritoryId": 401,
- "InteractionType": "WalkTo",
- "Fly": true
- },
- {
- "DataId": 2006649,
- "Position": {
- "X": -539.0555,
- "Y": 64.22522,
- "Z": -377.0047
- },
- "TerritoryId": 401,
- "InteractionType": "Action",
- "Action": "Buffet (Sanuwa)",
- "StopDistance": 3,
- "$": "0 0 0 0 0 0 --> 1 0 0 0 0 16",
- "CompletionQuestVariablesFlags": [null,null,null,null,null,16]
- },
- {
- "Position": {
- "X": -505.35422,
- "Y": -28.166508,
- "Z": -528.1072
- },
- "TerritoryId": 401,
- "InteractionType": "WalkTo",
- "Fly": true
- },
- {
- "DataId": 2006647,
- "Position": {
- "X": -504.78372,
- "Y": -26.68805,
- "Z": -530.93774
- },
- "TerritoryId": 401,
- "InteractionType": "Action",
- "Action": "Buffet (Sanuwa)",
- "StopDistance": 3,
- "$": "1 0 0 0 0 16 --> 2 0 0 0 0 80",
- "CompletionQuestVariablesFlags": [null,null,null,null,null,64]
- },
- {
- "Position": {
- "X": -478.25208,
- "Y": -31.101946,
- "Z": -663.0455
- },
- "TerritoryId": 401,
- "InteractionType": "WalkTo",
- "Fly": true
- },
- {
- "DataId": 2006648,
- "Position": {
- "X": -477.40906,
- "Y": -28.885437,
- "Z": -668.32996
- },
- "TerritoryId": 401,
- "InteractionType": "Action",
- "Action": "Buffet (Sanuwa)",
- "StopDistance": 3,
- "$": "2 0 0 0 0 80 --> 3 0 0 0 0 112",
- "CompletionQuestVariablesFlags": [null,null,null,null,null,32]
- },
- {
- "Position": {
- "X": -102.45963,
- "Y": -1.2632592,
- "Z": -619.294
- },
- "TerritoryId": 401,
- "InteractionType": "WalkTo",
- "Fly": true
- },
- {
- "DataId": 2006646,
- "Position": {
- "X": -96.20813,
- "Y": 0.32037354,
- "Z": -620.26404
- },
- "TerritoryId": 401,
- "InteractionType": "Action",
- "Action": "Buffet (Sanuwa)",
- "StopDistance": 3,
- "$": "3 0 0 0 0 112 --> 0 0 0 0 0 0"
- }
- ]
+ "DataId": 2006649,
+ "Position": {
+ "X": -539.0555,
+ "Y": 64.22522,
+ "Z": -377.0047
+ },
+ "TerritoryId": 401,
+ "InteractionType": "Action",
+ "Action": "Buffet (Sanuwa)",
+ "StopDistance": 3,
+ "$": "0 0 0 0 0 0 --> 1 0 0 0 0 16",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 16
+ ]
},
{
- "Sequence": 255,
- "Steps": [
- {
- "DataId": 1016089,
- "Position": {
- "X": -799.46594,
- "Y": -133.2695,
- "Z": -404.1352
- },
- "TerritoryId": 401,
- "InteractionType": "CompleteQuest",
- "AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
- "Fly": true
- }
- ]
+ "Position": {
+ "X": -505.35422,
+ "Y": -28.166508,
+ "Z": -528.1072
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 2006647,
+ "Position": {
+ "X": -504.78372,
+ "Y": -26.68805,
+ "Z": -530.93774
+ },
+ "TerritoryId": 401,
+ "InteractionType": "Action",
+ "Action": "Buffet (Sanuwa)",
+ "StopDistance": 3,
+ "$": "1 0 0 0 0 16 --> 2 0 0 0 0 80",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "Position": {
+ "X": -478.25208,
+ "Y": -31.101946,
+ "Z": -663.0455
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 2006648,
+ "Position": {
+ "X": -477.40906,
+ "Y": -28.885437,
+ "Z": -668.32996
+ },
+ "TerritoryId": 401,
+ "InteractionType": "Action",
+ "Action": "Buffet (Sanuwa)",
+ "StopDistance": 3,
+ "$": "2 0 0 0 0 80 --> 3 0 0 0 0 112",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "Position": {
+ "X": -102.45963,
+ "Y": -1.2632592,
+ "Z": -619.294
+ },
+ "TerritoryId": 401,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 2006646,
+ "Position": {
+ "X": -96.20813,
+ "Y": 0.32037354,
+ "Z": -620.26404
+ },
+ "TerritoryId": 401,
+ "InteractionType": "Action",
+ "Action": "Buffet (Sanuwa)",
+ "StopDistance": 3,
+ "$": "3 0 0 0 0 112 --> 0 0 0 0 0 0"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1016089,
+ "Position": {
+ "X": -799.46594,
+ "Y": -133.2695,
+ "Z": -404.1352
+ },
+ "TerritoryId": 401,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
+ "Fly": true
}
- ]
+ ]
+ }
+ ]
}
{\r
- "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
- "Author": "AnimaMachinae",\r
- "QuestSequence": [\r
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",\r
+ "Author": "AnimaMachinae",\r
+ "QuestSequence": [\r
+ {\r
+ "Sequence": 0,\r
+ "Steps": [\r
{\r
- "Sequence": 0,\r
- "Steps": [\r
- {\r
- "DataId": 1016089,\r
- "Position": {\r
- "X": -799.46594,\r
- "Y": -133.2695,\r
- "Z": -404.1352\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "AcceptQuest"\r
- }\r
- ]\r
- },\r
+ "DataId": 1016089,\r
+ "Position": {\r
+ "X": -799.46594,\r
+ "Y": -133.2695,\r
+ "Z": -404.1352\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "AcceptQuest"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 1,\r
+ "Steps": [\r
{\r
- "Sequence": 1,\r
- "Steps": [\r
- {\r
- "DataId": 1016093,\r
- "Position": {\r
- "X": -776.0281,\r
- "Y": -133.35559,\r
- "Z": -414.32825\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "Interact"\r
- }\r
- ]\r
+ "Position": {\r
+ "X": -776.0281,\r
+ "Y": -133.35559,\r
+ "Z": -414.32825\r
+ },\r
+ "StopDistance": 3,\r
+ "TerritoryId": 398,\r
+ "InteractionType": "WalkTo",\r
+ "Fly": true,\r
+ "SkipConditions": {\r
+ "StepIf": {\r
+ "NearPosition": {\r
+ "Position": {\r
+ "X": -776.0281,\r
+ "Y": -133.35559,\r
+ "Z": -414.32825\r
+ },\r
+ "MaximumDistance": 50,\r
+ "TerritoryId": 401\r
+ }\r
+ }\r
+ }\r
},\r
{\r
- "Sequence": 2,\r
- "Steps": [\r
- {\r
- "DataId": 2006655,\r
- "Position": {\r
- "X": -48.325317,\r
- "Y": 17.990356,\r
- "Z": -852.47577\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "Action",\r
- "Fly": true,\r
- "Action": "Buffet (Sanuwa)"\r
- }\r
- ]\r
- },\r
+ "DataId": 1016093,\r
+ "Position": {\r
+ "X": -776.0281,\r
+ "Y": -133.35559,\r
+ "Z": -414.32825\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "Interact"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 2,\r
+ "Steps": [\r
{\r
- "Sequence": 3,\r
- "Steps": [\r
- {\r
- "DataId": 2006656,\r
- "Position": {\r
- "X": 95.23157,\r
- "Y": -11.886841,\r
- "Z": -817.6242\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "Action",\r
- "Fly": true,\r
- "Action": "Buffet (Sanuwa)"\r
- }\r
- ]\r
- },\r
+ "DataId": 2006655,\r
+ "Position": {\r
+ "X": -48.325317,\r
+ "Y": 17.990356,\r
+ "Z": -852.47577\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "Action",\r
+ "Fly": true,\r
+ "Action": "Buffet (Sanuwa)"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 3,\r
+ "Steps": [\r
{\r
- "Sequence": 4,\r
- "Steps": [\r
- {\r
- "DataId": 2006657,\r
- "Position": {\r
- "X": 205.8899,\r
- "Y": -6.9123535,\r
- "Z": -785.70233\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "Action",\r
- "Fly": true,\r
- "Action": "Buffet (Sanuwa)"\r
- }\r
- ]\r
- },\r
+ "DataId": 2006656,\r
+ "Position": {\r
+ "X": 95.23157,\r
+ "Y": -11.886841,\r
+ "Z": -817.6242\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "Action",\r
+ "Fly": true,\r
+ "Action": "Buffet (Sanuwa)"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 4,\r
+ "Steps": [\r
+ {\r
+ "DataId": 2006657,\r
+ "Position": {\r
+ "X": 205.8899,\r
+ "Y": -6.9123535,\r
+ "Z": -785.70233\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "Action",\r
+ "Fly": true,\r
+ "Action": "Buffet (Sanuwa)"\r
+ }\r
+ ]\r
+ },\r
+ {\r
+ "Sequence": 255,\r
+ "Steps": [\r
{\r
- "Sequence": 255,\r
- "Steps": [\r
- {\r
- "DataId": 1016089,\r
- "Position": {\r
- "X": -799.46594,\r
- "Y": -133.2695,\r
- "Z": -404.1352\r
- },\r
- "TerritoryId": 401,\r
- "InteractionType": "CompleteQuest",\r
- "Fly": true,\r
- "AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"\r
- }\r
- ]\r
+ "DataId": 1016089,\r
+ "Position": {\r
+ "X": -799.46594,\r
+ "Y": -133.2695,\r
+ "Z": -404.1352\r
+ },\r
+ "TerritoryId": 401,\r
+ "InteractionType": "CompleteQuest",\r
+ "Fly": true,\r
+ "AetheryteShortcut": "The Sea of Clouds - Ok' Zundu"\r
}\r
- ]\r
+ ]\r
+ }\r
+ ]\r
}\r
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 401
+ }
+ }
+ }
+ },
{
"DataId": 1016093,
"Position": {
{
"Sequence": 2,
"Steps": [
+ {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 401
+ }
+ }
+ }
+ },
{
"DataId": 1016093,
"Position": {
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true,
- "CompletionQuestVariablesFlags": [null,null,null,null,null,32]
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
},
{
"DataId": 1016221,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true,
- "CompletionQuestVariablesFlags": [null,null,null,null,null,64]
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
},
{
"DataId": 1016220,
{
"Sequence": 2,
"Steps": [
+ {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 401
+ }
+ }
+ }
+ },
{
"DataId": 1016093,
"Position": {
{
"Sequence": 2,
"Steps": [
+ {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": -776.0281,
+ "Y": -133.35559,
+ "Z": -414.32825
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 401
+ }
+ }
+ }
+ },
{
"DataId": 1016093,
"Position": {
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 398
+ }
+ }
+ }
+ },
{
"DataId": 1017031,
"Position": {
{\r
"Sequence": 1,\r
"Steps": [\r
+ {\r
+ "Position": {\r
+ "X": 74.20459,\r
+ "Y": -48.533592,\r
+ "Z": -171.12994\r
+ },\r
+ "StopDistance": 3,\r
+ "TerritoryId": 398,\r
+ "InteractionType": "WalkTo",\r
+ "Fly": true,\r
+ "SkipConditions": {\r
+ "StepIf": {\r
+ "NearPosition": {\r
+ "Position": {\r
+ "X": 74.20459,\r
+ "Y": -48.533592,\r
+ "Z": -171.12994\r
+ },\r
+ "MaximumDistance": 50,\r
+ "TerritoryId": 398\r
+ }\r
+ }\r
+ }\r
+ },\r
{\r
"DataId": 1017031,\r
"Position": {\r
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 398
+ }
+ }
+ }
+ },
{
"DataId": 1017031,
"Position": {
{
"Sequence": 1,
"Steps": [
+ {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "StopDistance": 3,
+ "TerritoryId": 398,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "SkipConditions": {
+ "StepIf": {
+ "NearPosition": {
+ "Position": {
+ "X": 74.20459,
+ "Y": -48.533592,
+ "Z": -171.12994
+ },
+ "MaximumDistance": 50,
+ "TerritoryId": 398
+ }
+ }
+ }
+ },
{
"DataId": 1017031,
"Position": {
{
// if we have multiple quests to turn in for an allied society, try and complete all of them
var (firstTrackedQuest, firstTrackedSequence) = trackedQuests.First();
- EAlliedSociety firstTrackedAlliedSociety = _alliedSocietyData.GetCommonAlliedSocietyTurnIn(firstTrackedQuest);
+ EAlliedSociety firstTrackedAlliedSociety =
+ _alliedSocietyData.GetCommonAlliedSocietyTurnIn(firstTrackedQuest);
if (firstTrackedAlliedSociety != EAlliedSociety.None)
{
var alliedQuestsForSameSociety = trackedQuests.Skip(1)
- .Where(quest => _alliedSocietyData.GetCommonAlliedSocietyTurnIn(quest.Quest) == firstTrackedAlliedSociety)
+ .Where(quest =>
+ _alliedSocietyData.GetCommonAlliedSocietyTurnIn(quest.Quest) == firstTrackedAlliedSociety)
.ToList();
if (alliedQuestsForSameSociety.Count > 0)
{
// also include the first quest in the list for those
alliedQuestsForSameSociety.Insert(0, (firstTrackedQuest, firstTrackedSequence));
- _alliedSocietyData.GetCommonAlliedSocietyNpcs(firstTrackedAlliedSociety, out uint[]? normalNpcs,
+ _alliedSocietyData.GetCommonAlliedSocietyNpcs(firstTrackedAlliedSociety,
+ out uint[]? normalNpcs,
out _);
if (normalNpcs.Length > 0)
{
var talkToNormalNpcs = alliedQuestsForSameSociety
.Where(x => x.Sequence < 255)
- .Where(x => IsInteractStep(x.Quest, x.Sequence, normalNpcs))
+ .Where(x => IsInteractSequence(x.Quest, x.Sequence, normalNpcs))
.Cast<(ElementId, byte)?>()
.FirstOrDefault();
if (talkToNormalNpcs != null)
_alliedSocietyData.Mounts.ContainsKey(battleChara->Mount.MountId);
}
- private bool IsInteractStep(ElementId questId, byte sequence, uint[] dataIds)
+ private bool IsInteractSequence(ElementId questId, byte sequenceNo, uint[] dataIds)
{
if (_questRegistry.TryGetQuest(questId, out var quest))
{
- QuestStep? firstStepOfSequence = quest.FindSequence(sequence)?.FindStep(0);
- return firstStepOfSequence is { InteractionType: EInteractionType.Interact, DataId: { } dataId } &&
- dataIds.Contains(dataId);
+ QuestSequence? sequence = quest.FindSequence(sequenceNo);
+ return sequence != null &&
+ sequence.Steps.All(x =>
+ x is { InteractionType: EInteractionType.WalkTo } ||
+ (x is { InteractionType: EInteractionType.Interact, DataId: { } dataId } &&
+ dataIds.Contains(dataId)));
}
return false;