Add Kai-Shirr/Ameliance unlock quests
This commit is contained in:
parent
b07625c18f
commit
5375ec25bc
@ -5,17 +5,6 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
|
||||||
"Position": {
|
|
||||||
"X": 344.12048,
|
|
||||||
"Y": -120.3312,
|
|
||||||
"Z": -303.85397
|
|
||||||
},
|
|
||||||
"TerritoryId": 613,
|
|
||||||
"InteractionType": "WalkTo",
|
|
||||||
"AetheryteShortcut": "Ruby Sea - Tamamizu",
|
|
||||||
"RequiredGatheredItems": []
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"DataId": 1025878,
|
"DataId": 1025878,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -25,6 +14,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 613,
|
"TerritoryId": 613,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"RequiredGatheredItems": [],
|
||||||
|
"AetheryteShortcut": "Ruby Sea - Tamamizu",
|
||||||
"DialogueChoices": [
|
"DialogueChoices": [
|
||||||
{
|
{
|
||||||
"Type": "List",
|
"Type": "List",
|
||||||
|
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1031781,
|
||||||
|
"Position": {
|
||||||
|
"X": 24.246582,
|
||||||
|
"Y": 82.78206,
|
||||||
|
"Z": 25.77246
|
||||||
|
},
|
||||||
|
"TerritoryId": 820,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Eulmore",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "List",
|
||||||
|
"Prompt": "TEXT_SUBCTS640_03729_Q1_000_000",
|
||||||
|
"Answer": "TEXT_SUBCTS640_03729_A1_000_002"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2010842,
|
||||||
|
"Position": {
|
||||||
|
"X": 27.450928,
|
||||||
|
"Y": 82.6886,
|
||||||
|
"Z": -45.456665
|
||||||
|
},
|
||||||
|
"TerritoryId": 820,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1031801,
|
||||||
|
"Position": {
|
||||||
|
"X": 52.8114,
|
||||||
|
"Y": 83.001076,
|
||||||
|
"Z": -65.38495
|
||||||
|
},
|
||||||
|
"TerritoryId": 820,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042242,
|
||||||
|
"Position": {
|
||||||
|
"X": 72.43445,
|
||||||
|
"Y": 5.1,
|
||||||
|
"Z": -75.30328
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012872,
|
||||||
|
"Position": {
|
||||||
|
"X": -86.930725,
|
||||||
|
"Y": -12.985474,
|
||||||
|
"Z": 140.30664
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
|
"[Old Sharlayan] Scholar's Harbor"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042427,
|
||||||
|
"Position": {
|
||||||
|
"X": -84.06195,
|
||||||
|
"Y": -13.777,
|
||||||
|
"Z": 140.12354
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1042428,
|
||||||
|
"Position": {
|
||||||
|
"X": 222.85791,
|
||||||
|
"Y": 24.942732,
|
||||||
|
"Z": -197.71118
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Scholar's Harbor",
|
||||||
|
"[Old Sharlayan] The Leveilleur Estate"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1041303,
|
||||||
|
"Position": {
|
||||||
|
"X": 209.55212,
|
||||||
|
"Y": 19.316555,
|
||||||
|
"Z": -110.70422
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Old Sharlayan",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
|
"[Old Sharlayan] The Leveilleur Estate"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "List",
|
||||||
|
"Prompt": "TEXT_AKTKZI003_04318_Q1_000_000",
|
||||||
|
"Answer": "TEXT_AKTKZI003_04318_A1_000_001"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012440,
|
||||||
|
"Position": {
|
||||||
|
"X": 213.9773,
|
||||||
|
"Y": 8.224609,
|
||||||
|
"Z": -33.737732
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2012441,
|
||||||
|
"Position": {
|
||||||
|
"X": 168.0476,
|
||||||
|
"Y": 1.296936,
|
||||||
|
"Z": 53.94055
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1041303,
|
||||||
|
"Position": {
|
||||||
|
"X": 209.55212,
|
||||||
|
"Y": 19.316555,
|
||||||
|
"Z": -110.70422
|
||||||
|
},
|
||||||
|
"TerritoryId": 962,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Old Sharlayan] Journey's End",
|
||||||
|
"[Old Sharlayan] The Leveilleur Estate"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -70,6 +70,7 @@ internal static class Move
|
|||||||
TerritoryData territoryData,
|
TerritoryData territoryData,
|
||||||
AetheryteData aetheryteData)
|
AetheryteData aetheryteData)
|
||||||
{
|
{
|
||||||
|
public ElementId QuestId { get; set; } = null!;
|
||||||
public QuestStep Step { get; set; } = null!;
|
public QuestStep Step { get; set; } = null!;
|
||||||
public Vector3 Destination { get; set; }
|
public Vector3 Destination { get; set; }
|
||||||
|
|
||||||
@ -90,9 +91,9 @@ internal static class Move
|
|||||||
yield return new WaitConditionTask(() => movementController.IsNavmeshReady,
|
yield return new WaitConditionTask(() => movementController.IsNavmeshReady,
|
||||||
"Wait(navmesh ready)");
|
"Wait(navmesh ready)");
|
||||||
|
|
||||||
float distance = Step.CalculateActualStopDistance();
|
float stopDistance = Step.CalculateActualStopDistance();
|
||||||
var position = clientState.LocalPlayer?.Position ?? new Vector3();
|
Vector3? position = clientState.LocalPlayer?.Position;
|
||||||
float actualDistance = (position - Destination).Length();
|
float actualDistance = position == null ? float.MaxValue : Vector3.Distance(position.Value, Destination);
|
||||||
|
|
||||||
// if we teleport to a different zone, assume we always need to move; this is primarily relevant for cases
|
// if we teleport to a different zone, assume we always need to move; this is primarily relevant for cases
|
||||||
// where you're e.g. in Lakeland, and the step navigates via Crystarium → Tesselation back into the same
|
// where you're e.g. in Lakeland, and the step navigates via Crystarium → Tesselation back into the same
|
||||||
@ -101,8 +102,19 @@ internal static class Move
|
|||||||
// Side effects of this check being broken include:
|
// Side effects of this check being broken include:
|
||||||
// - mounting when near the target npc (if you spawn close enough for the next step)
|
// - mounting when near the target npc (if you spawn close enough for the next step)
|
||||||
// - trying to fly when near the target npc (if close enough where no movement is required)
|
// - trying to fly when near the target npc (if close enough where no movement is required)
|
||||||
if (Step.AetheryteShortcut != null && aetheryteData.TerritoryIds[Step.AetheryteShortcut.Value] != Step.TerritoryId)
|
if (Step.AetheryteShortcut != null &&
|
||||||
|
aetheryteData.TerritoryIds[Step.AetheryteShortcut.Value] != Step.TerritoryId)
|
||||||
|
{
|
||||||
|
logger.LogDebug("Aetheryte: Changing distance to max, previous distance: {Distance}", actualDistance);
|
||||||
actualDistance = float.MaxValue;
|
actualDistance = float.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (QuestId is SatisfactionSupplyNpcId)
|
||||||
|
{
|
||||||
|
logger.LogDebug("SatisfactionSupply: Changing distance to max, previous distance: {Distance}",
|
||||||
|
actualDistance);
|
||||||
|
actualDistance = float.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
if (Step.Mount == true)
|
if (Step.Mount == true)
|
||||||
yield return serviceProvider.GetRequiredService<MountTask>()
|
yield return serviceProvider.GetRequiredService<MountTask>()
|
||||||
@ -115,7 +127,7 @@ internal static class Move
|
|||||||
if (Step.Mount == null)
|
if (Step.Mount == null)
|
||||||
{
|
{
|
||||||
MountTask.EMountIf mountIf =
|
MountTask.EMountIf mountIf =
|
||||||
actualDistance > distance && Step.Fly == true &&
|
actualDistance > stopDistance && Step.Fly == true &&
|
||||||
gameFunctions.IsFlyingUnlocked(Step.TerritoryId)
|
gameFunctions.IsFlyingUnlocked(Step.TerritoryId)
|
||||||
? MountTask.EMountIf.Always
|
? MountTask.EMountIf.Always
|
||||||
: MountTask.EMountIf.AwayFromPosition;
|
: MountTask.EMountIf.AwayFromPosition;
|
||||||
@ -123,20 +135,26 @@ internal static class Move
|
|||||||
.With(Step.TerritoryId, mountIf, Destination);
|
.With(Step.TerritoryId, mountIf, Destination);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actualDistance > distance)
|
if (actualDistance > stopDistance)
|
||||||
{
|
{
|
||||||
yield return serviceProvider.GetRequiredService<MoveInternal>()
|
yield return serviceProvider.GetRequiredService<MoveInternal>()
|
||||||
.With(Step, Destination);
|
.With(Step, Destination);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
logger.LogInformation("Skipping move task, distance: {ActualDistance} < {StopDistance}",
|
||||||
|
actualDistance, stopDistance);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// navmesh won't move close enough
|
// navmesh won't move close enough
|
||||||
if (actualDistance > distance)
|
if (actualDistance > stopDistance)
|
||||||
{
|
{
|
||||||
yield return serviceProvider.GetRequiredService<MoveInternal>()
|
yield return serviceProvider.GetRequiredService<MoveInternal>()
|
||||||
.With(Step, Destination);
|
.With(Step, Destination);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
logger.LogInformation("Skipping move task, distance: {ActualDistance} < {StopDistance}",
|
||||||
|
actualDistance, stopDistance);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Step.Fly == true && Step.Land == true)
|
if (Step.Fly == true && Step.Land == true)
|
||||||
|
Loading…
Reference in New Issue
Block a user