Fix mount selection, make chat-messages multilingual, various path updates
This commit is contained in:
parent
a5861b1639
commit
51e5faae69
@ -1,4 +1,5 @@
|
|||||||
using System;
|
#if RELEASE
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
|
||||||
@ -23,3 +24,4 @@ public static class AssemblyQuestLoader
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
@ -59,6 +59,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
],
|
||||||
"$.0": "[1]",
|
"$.0": "[1]",
|
||||||
"$.1": "QuestVariables if done first: 17 0 0 0 0 64"
|
"$.1": "QuestVariables if done first: 17 0 0 0 0 64"
|
||||||
},
|
},
|
||||||
@ -71,6 +79,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
],
|
||||||
"$.0": "[2]",
|
"$.0": "[2]",
|
||||||
"$.2": "QuestVariables if done after [1]: 33 16 0 0 0 96",
|
"$.2": "QuestVariables if done after [1]: 33 16 0 0 0 96",
|
||||||
"$.3": "QuestVariables if done after [3]: 32 17 0 0 0 160"
|
"$.3": "QuestVariables if done after [3]: 32 17 0 0 0 160"
|
||||||
@ -84,6 +100,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
],
|
||||||
"$.0": 3,
|
"$.0": 3,
|
||||||
"$.1": "QuestVariables if done first: 16 1 0 0 0 128"
|
"$.1": "QuestVariables if done first: 16 1 0 0 0 128"
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,15 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -588.7367,
|
||||||
|
"Y": 158.76302,
|
||||||
|
"Z": -195.30913
|
||||||
|
},
|
||||||
|
"TerritoryId": 961,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
"X": -318.20203,
|
"X": -318.20203,
|
||||||
|
@ -35,7 +35,9 @@
|
|||||||
"StopDistance": 3,
|
"StopDistance": 3,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "carrot of happiness"
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKZE002_04241_SYSTEM_000_010"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1041790,
|
"DataId": 1041790,
|
||||||
@ -47,7 +49,9 @@
|
|||||||
"StopDistance": 3,
|
"StopDistance": 3,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "carrot of happiness",
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKZE002_04241_SYSTEM_000_010"
|
||||||
|
},
|
||||||
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
|
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -65,7 +69,9 @@
|
|||||||
"StopDistance": 3,
|
"StopDistance": 3,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "carrot of happiness"
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKZE002_04241_SYSTEM_000_010"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -236,7 +236,8 @@
|
|||||||
"Z": 4.5318604
|
"Z": 4.5318604
|
||||||
},
|
},
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038586,
|
"DataId": 1038586,
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": 14.81335
|
"Z": 14.81335
|
||||||
},
|
},
|
||||||
"TerritoryId": 987,
|
"TerritoryId": 987,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 962
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 185,
|
"DataId": 185,
|
||||||
|
@ -99,7 +99,8 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Old Sharlayan] The Leveilleur Estate",
|
"[Old Sharlayan] The Leveilleur Estate",
|
||||||
"[Old Sharlayan] The Baldesion Annex"
|
"[Old Sharlayan] The Baldesion Annex"
|
||||||
]
|
],
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1040291,
|
"DataId": 1040291,
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": 14.785889
|
"Z": 14.785889
|
||||||
},
|
},
|
||||||
"TerritoryId": 987,
|
"TerritoryId": 987,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 962
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038592,
|
"DataId": 1038592,
|
||||||
|
@ -46,15 +46,12 @@
|
|||||||
"InteractionType": "CutsceneSelectString",
|
"InteractionType": "CutsceneSelectString",
|
||||||
"DialogueChoices": [
|
"DialogueChoices": [
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A2_000_088"
|
"Answer": "TEXT_AKTKMA114_04370_A2_000_088"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A3_000_098"
|
"Answer": "TEXT_AKTKMA114_04370_A3_000_098"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A5_000_107"
|
"Answer": "TEXT_AKTKMA114_04370_A5_000_107"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -75,15 +72,12 @@
|
|||||||
"InteractionType": "CutsceneSelectString",
|
"InteractionType": "CutsceneSelectString",
|
||||||
"DialogueChoices": [
|
"DialogueChoices": [
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A6_000_149"
|
"Answer": "TEXT_AKTKMA114_04370_A6_000_149"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A7_000_158"
|
"Answer": "TEXT_AKTKMA114_04370_A7_000_158"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A8_000_164"
|
"Answer": "TEXT_AKTKMA114_04370_A8_000_164"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -104,15 +98,12 @@
|
|||||||
"InteractionType": "CutsceneSelectString",
|
"InteractionType": "CutsceneSelectString",
|
||||||
"DialogueChoices": [
|
"DialogueChoices": [
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A9_000_200"
|
"Answer": "TEXT_AKTKMA114_04370_A9_000_200"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A10_000_209"
|
"Answer": "TEXT_AKTKMA114_04370_A10_000_209"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"ExcelSheet": "quest/043/AktKma114_04370",
|
|
||||||
"Answer": "TEXT_AKTKMA114_04370_A11_000_218"
|
"Answer": "TEXT_AKTKMA114_04370_A11_000_218"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -103,7 +103,8 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Old Sharlayan] Aetheryte Plaza",
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
"[Old Sharlayan] The Baldesion Annex"
|
"[Old Sharlayan] The Baldesion Annex"
|
||||||
]
|
],
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038589,
|
"DataId": 1038589,
|
||||||
|
@ -32,7 +32,8 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Old Sharlayan] The Studium",
|
"[Old Sharlayan] The Studium",
|
||||||
"[Old Sharlayan] The Baldesion Annex"
|
"[Old Sharlayan] The Baldesion Annex"
|
||||||
]
|
],
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1038784,
|
"DataId": 1038784,
|
||||||
|
@ -100,7 +100,8 @@
|
|||||||
"Z": 4.5318604
|
"Z": 4.5318604
|
||||||
},
|
},
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012188,
|
"DataId": 2012188,
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
"Z": 4.55803
|
"Z": 4.55803
|
||||||
},
|
},
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 987
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -37,6 +38,11 @@
|
|||||||
"Sequence": 2,
|
"Sequence": 2,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 0,
|
||||||
|
"Y": 0,
|
||||||
|
"Z": 0
|
||||||
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"AetheryteShortcut": "Thavnair - Yedlihmad",
|
"AetheryteShortcut": "Thavnair - Yedlihmad",
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
|
@ -126,7 +126,9 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "I have a favor to ask"
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKME107_04425_SAYTODO_000_190"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -142,7 +144,9 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 961,
|
"TerritoryId": 961,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "Please, Emet-Selch"
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKME107_04425_SAYTODO_000_210"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -65,7 +65,8 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Old Sharlayan] Aetheryte Plaza",
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
"[Old Sharlayan] The Baldesion Annex"
|
"[Old Sharlayan] The Baldesion Annex"
|
||||||
]
|
],
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1040161,
|
"DataId": 1040161,
|
||||||
|
@ -49,7 +49,8 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Old Sharlayan] Aetheryte Plaza",
|
"[Old Sharlayan] Aetheryte Plaza",
|
||||||
"[Old Sharlayan] The Baldesion Annex"
|
"[Old Sharlayan] The Baldesion Annex"
|
||||||
]
|
],
|
||||||
|
"TargetTerritoryId": 987
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -64,7 +65,8 @@
|
|||||||
"Z": 14.785889
|
"Z": 14.785889
|
||||||
},
|
},
|
||||||
"TerritoryId": 987,
|
"TerritoryId": 987,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 962
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1039683,
|
"DataId": 1039683,
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"DisableNavmesh": true
|
"DisableNavmesh": true,
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1041232,
|
"DataId": 1041232,
|
||||||
@ -39,7 +40,8 @@
|
|||||||
"Z": 27.5
|
"Z": 27.5
|
||||||
},
|
},
|
||||||
"TerritoryId": 351,
|
"TerritoryId": 351,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 156
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1039570,
|
"DataId": 1039570,
|
||||||
|
@ -66,7 +66,15 @@
|
|||||||
},
|
},
|
||||||
"StopDistance": 5,
|
"StopDistance": 5,
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1039606,
|
"DataId": 1039606,
|
||||||
|
@ -107,10 +107,15 @@
|
|||||||
"Y": 1.2090492,
|
"Y": 1.2090492,
|
||||||
"Z": 118.133255
|
"Z": 118.133255
|
||||||
},
|
},
|
||||||
|
"StopDistance": 4,
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "WalkTo",
|
"InteractionType": "WalkTo",
|
||||||
"AetheryteShortcut": "Thavnair - Palaka's Stand",
|
"AetheryteShortcut": "Thavnair - Palaka's Stand",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"SkipIf": [
|
||||||
|
"FlyingLocked"
|
||||||
|
],
|
||||||
|
"Comment": "TODO Verify; there's some weird shenanigans happening with navmesh not moving to coords 'below' it"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2012847,
|
"DataId": 2012847,
|
||||||
@ -120,7 +125,8 @@
|
|||||||
"Z": 119.43237
|
"Z": 119.43237
|
||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Mount": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -30,6 +30,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
],
|
||||||
"$.0": "[1]",
|
"$.0": "[1]",
|
||||||
"$.1": "QuestVariables if done first: 1 0 0 0 0 128"
|
"$.1": "QuestVariables if done first: 1 0 0 0 0 128"
|
||||||
},
|
},
|
||||||
@ -42,6 +50,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
],
|
||||||
"$.0": "[2]",
|
"$.0": "[2]",
|
||||||
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
|
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 192"
|
||||||
},
|
},
|
||||||
@ -54,6 +70,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
],
|
||||||
"$.0": "[3]",
|
"$.0": "[3]",
|
||||||
"$.1": "QuestVariables if done after [1, 2]: 3 0 0 0 0 224"
|
"$.1": "QuestVariables if done after [1, 2]: 3 0 0 0 0 224"
|
||||||
},
|
},
|
||||||
@ -65,7 +89,15 @@
|
|||||||
"Z": -49.45453
|
"Z": -49.45453
|
||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -114,7 +146,7 @@
|
|||||||
"Z": 206.78001
|
"Z": 206.78001
|
||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "WalkTo"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -128,6 +160,7 @@
|
|||||||
"Y": -718.4441,
|
"Y": -718.4441,
|
||||||
"Z": 206.77502
|
"Z": 206.77502
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
"Y": -718.33905,
|
"Y": -718.33905,
|
||||||
"Z": 207.87354
|
"Z": 207.87354
|
||||||
},
|
},
|
||||||
"StopDistance": 5,
|
"StopDistance": 7,
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
],
|
||||||
"$.0": "[1]",
|
"$.0": "[1]",
|
||||||
"$.1": "QuestVariables if done first: 1 0 0 0 0 32"
|
"$.1": "QuestVariables if done first: 1 0 0 0 0 32"
|
||||||
},
|
},
|
||||||
@ -52,6 +60,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
],
|
||||||
"$.0": "[2]",
|
"$.0": "[2]",
|
||||||
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 96"
|
"$.1": "QuestVariables if done after [1]: 2 0 0 0 0 96"
|
||||||
},
|
},
|
||||||
@ -64,6 +80,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 1089,
|
"TerritoryId": 1089,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
],
|
||||||
"$.0": "[3]"
|
"$.0": "[3]"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -39,6 +39,7 @@
|
|||||||
"Y": 1.7999947,
|
"Y": 1.7999947,
|
||||||
"Z": -180.07172
|
"Z": -180.07172
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
|
@ -50,6 +50,14 @@
|
|||||||
16028,
|
16028,
|
||||||
16029
|
16029
|
||||||
],
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
],
|
||||||
"$.0": "[1]",
|
"$.0": "[1]",
|
||||||
"$.1": "QuestVariables if done first: 16 5(enemy kill count) 0 0 0 64"
|
"$.1": "QuestVariables if done first: 16 5(enemy kill count) 0 0 0 64"
|
||||||
},
|
},
|
||||||
@ -62,6 +70,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
],
|
||||||
"$.0": "[2]",
|
"$.0": "[2]",
|
||||||
"$.1": "QuestVariables if done after [1]: 33 5 0 0 0 96"
|
"$.1": "QuestVariables if done after [1]: 33 5 0 0 0 96"
|
||||||
},
|
},
|
||||||
@ -74,6 +90,14 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
],
|
||||||
"$.0": "[3]",
|
"$.0": "[3]",
|
||||||
"$.1": "QuestVariables if done after [1, 2]: 49 21 0 0 0 112"
|
"$.1": "QuestVariables if done after [1, 2]: 49 21 0 0 0 112"
|
||||||
},
|
},
|
||||||
@ -89,7 +113,16 @@
|
|||||||
"EnemySpawnType": "AfterInteraction",
|
"EnemySpawnType": "AfterInteraction",
|
||||||
"KillEnemyDataIds": [
|
"KillEnemyDataIds": [
|
||||||
16030
|
16030
|
||||||
]
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
],
|
||||||
|
"$.2": "QuestVariables if done first: 16 0 16 0 0 128"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": -173,
|
"Y": -173,
|
||||||
"Z": 126.35986
|
"Z": 126.35986
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 1119,
|
"TerritoryId": 1119,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -122,6 +123,7 @@
|
|||||||
"Y": -17.202883,
|
"Y": -17.202883,
|
||||||
"Z": 705.0431
|
"Z": 705.0431
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": -17.44166,
|
"Y": -17.44166,
|
||||||
"Z": 707.3014
|
"Z": 707.3014
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -29,6 +30,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Radz-at-Han",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Radz-at-Han] Aetheryte Plaza",
|
"[Radz-at-Han] Aetheryte Plaza",
|
||||||
"[Radz-at-Han] Meghaduta"
|
"[Radz-at-Han] Meghaduta"
|
||||||
@ -62,7 +64,16 @@
|
|||||||
"Z": -585.1987
|
"Z": -585.1987
|
||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037647,
|
"DataId": 1037647,
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": -616.14404
|
"Z": -616.14404
|
||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -43,12 +44,13 @@
|
|||||||
"Z": -715.44977
|
"Z": -715.44977
|
||||||
},
|
},
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 3,
|
"Sequence": 4,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
{
|
{
|
||||||
"TerritoryId": 1125,
|
"TerritoryId": 1125,
|
||||||
@ -67,9 +69,9 @@
|
|||||||
"Y": 89.42017,
|
"Y": 89.42017,
|
||||||
"Z": -636.86584
|
"Z": -636.86584
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact"
|
||||||
"Comment": "Unsure if this is the right data id"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 89.42017,
|
"Y": 89.42017,
|
||||||
"Z": -636.86584
|
"Z": -636.86584
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 957,
|
"TerritoryId": 957,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -29,6 +30,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Radz-at-Han",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Radz-at-Han] Aetheryte Plaza",
|
"[Radz-at-Han] Aetheryte Plaza",
|
||||||
"[Radz-at-Han] Meghaduta"
|
"[Radz-at-Han] Meghaduta"
|
||||||
|
@ -46,6 +46,7 @@
|
|||||||
"Y": 0.59503174,
|
"Y": 0.59503174,
|
||||||
"Z": -141.71057
|
"Z": -141.71057
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -61,7 +62,8 @@
|
|||||||
"Z": -140.01839
|
"Z": -140.01839
|
||||||
},
|
},
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "UseItem"
|
"InteractionType": "UseItem",
|
||||||
|
"ItemId": 2003461
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -30,8 +30,10 @@
|
|||||||
"Y": 1.2359009,
|
"Y": 1.2359009,
|
||||||
"Z": 5.9662476
|
"Z": 5.9662476
|
||||||
},
|
},
|
||||||
|
"StopDistance": 4,
|
||||||
"TerritoryId": 1161,
|
"TerritoryId": 1161,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 963
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1039602,
|
"DataId": 1039602,
|
||||||
@ -78,6 +80,7 @@
|
|||||||
"Y": 4.357494,
|
"Y": 4.357494,
|
||||||
"Z": 0.7476196
|
"Z": 0.7476196
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -86,6 +89,19 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 4,
|
"Sequence": 4,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 6.0711417,
|
||||||
|
"Y": -28.723347,
|
||||||
|
"Z": -43.467506
|
||||||
|
},
|
||||||
|
"TerritoryId": 956,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "Labyrinthos - Sharlayan Hamlet",
|
||||||
|
"SkipIf": [
|
||||||
|
"FlyingUnlocked"
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045407,
|
"DataId": 1045407,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -94,7 +110,8 @@
|
|||||||
"Z": -125.96332
|
"Z": -125.96332
|
||||||
},
|
},
|
||||||
"TerritoryId": 956,
|
"TerritoryId": 956,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -109,7 +126,8 @@
|
|||||||
"Z": 54.276245
|
"Z": 54.276245
|
||||||
},
|
},
|
||||||
"TerritoryId": 956,
|
"TerritoryId": 956,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -123,6 +141,7 @@
|
|||||||
"Y": -16.146997,
|
"Y": -16.146997,
|
||||||
"Z": 236.22485
|
"Z": 236.22485
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -148,6 +167,7 @@
|
|||||||
"Y": -16.147,
|
"Y": -16.147,
|
||||||
"Z": 235.70605
|
"Z": 235.70605
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": -16.147,
|
"Y": -16.147,
|
||||||
"Z": 235.70605
|
"Z": 235.70605
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -27,8 +28,10 @@
|
|||||||
"Y": 23.803606,
|
"Y": 23.803606,
|
||||||
"Z": 404.9286
|
"Z": 404.9286
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Garlemald - Camp Broken Glass"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -43,7 +46,8 @@
|
|||||||
"Z": -191.48547
|
"Z": -191.48547
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Garlemald - Tertium"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -58,7 +62,15 @@
|
|||||||
"Z": -156.02356
|
"Z": -156.02356
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045491,
|
"DataId": 1045491,
|
||||||
@ -68,7 +80,15 @@
|
|||||||
"Z": -178.27118
|
"Z": -178.27118
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037774,
|
"DataId": 1037774,
|
||||||
@ -78,7 +98,15 @@
|
|||||||
"Z": -212.14618
|
"Z": -212.14618
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045489,
|
"DataId": 1045489,
|
||||||
@ -88,7 +116,15 @@
|
|||||||
"Z": -213.18384
|
"Z": -213.18384
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1037766,
|
"DataId": 1037766,
|
||||||
@ -98,7 +134,16 @@
|
|||||||
"Z": -265.00348
|
"Z": -265.00348
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Comment": "TODO Check flags",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
8
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -113,7 +158,8 @@
|
|||||||
"Z": -637.56775
|
"Z": -637.56775
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 15.5581665,
|
"Y": 15.5581665,
|
||||||
"Z": -638.3002
|
"Z": -638.3002
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -28,7 +29,8 @@
|
|||||||
"Z": -620.08093
|
"Z": -620.08093
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -58,7 +60,16 @@
|
|||||||
"Z": 67.063354
|
"Z": 67.063354
|
||||||
},
|
},
|
||||||
"TerritoryId": 1160,
|
"TerritoryId": 1160,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Comment": "TODO Check Flags",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045493,
|
"DataId": 1045493,
|
||||||
@ -68,7 +79,15 @@
|
|||||||
"Z": 42.435303
|
"Z": 42.435303
|
||||||
},
|
},
|
||||||
"TerritoryId": 1160,
|
"TerritoryId": 1160,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013350,
|
"DataId": 2013350,
|
||||||
@ -78,7 +97,15 @@
|
|||||||
"Z": 26.382812
|
"Z": 26.382812
|
||||||
},
|
},
|
||||||
"TerritoryId": 1160,
|
"TerritoryId": 1160,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045492,
|
"DataId": 1045492,
|
||||||
@ -88,7 +115,15 @@
|
|||||||
"Z": -9.353821
|
"Z": -9.353821
|
||||||
},
|
},
|
||||||
"TerritoryId": 1160,
|
"TerritoryId": 1160,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -117,8 +152,10 @@
|
|||||||
"Y": 23.803606,
|
"Y": 23.803606,
|
||||||
"Z": 406.05774
|
"Z": 406.05774
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Garlemald - Camp Broken Glass"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -133,7 +170,8 @@
|
|||||||
"Z": -202.99078
|
"Z": -202.99078
|
||||||
},
|
},
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Garlemald - Tertium"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": -36.65,
|
"Y": -36.65,
|
||||||
"Z": -206.74457
|
"Z": -206.74457
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -26,11 +27,14 @@
|
|||||||
"Y": 10.8,
|
"Y": 10.8,
|
||||||
"Z": -663.8825
|
"Z": -663.8825
|
||||||
},
|
},
|
||||||
|
"StopDistance": 1,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Combat",
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AutoOnEnterArea",
|
||||||
"KillEnemyDataIds": [
|
"KillEnemyDataIds": [
|
||||||
16332
|
16332
|
||||||
]
|
],
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -44,6 +48,7 @@
|
|||||||
"Y": 10.8,
|
"Y": 10.8,
|
||||||
"Z": -659.75433
|
"Z": -659.75433
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": -36.65,
|
"Y": -36.65,
|
||||||
"Z": -204.97449
|
"Z": -204.97449
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 958,
|
"TerritoryId": 958,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -28,7 +29,9 @@
|
|||||||
"Z": 585.1072
|
"Z": 585.1072
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -43,13 +46,27 @@
|
|||||||
"Z": 407.27856
|
"Z": 407.27856
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 3,
|
"Sequence": 3,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012664,
|
||||||
|
"Position": {
|
||||||
|
"X": -26.901672,
|
||||||
|
"Y": -130.47992,
|
||||||
|
"Z": -580.4685
|
||||||
|
},
|
||||||
|
"TerritoryId": 959,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
|
||||||
|
"SkipIf": ["FlyingUnlocked"],
|
||||||
|
"Comment": "Check if the flying unlocked check is good enough"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1039686,
|
"DataId": 1039686,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -58,7 +75,8 @@
|
|||||||
"Z": -494.31604
|
"Z": -494.31604
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -87,9 +105,18 @@
|
|||||||
"Y": -49.589592,
|
"Y": -49.589592,
|
||||||
"Z": -626.42865
|
"Z": -626.42865
|
||||||
},
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Emote",
|
"InteractionType": "Emote",
|
||||||
"Emote": "rally"
|
"Emote": "rally",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045470,
|
"DataId": 1045470,
|
||||||
@ -98,20 +125,18 @@
|
|||||||
"Y": -49.589596,
|
"Y": -49.589596,
|
||||||
"Z": -622.3087
|
"Z": -622.3087
|
||||||
},
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Emote",
|
"InteractionType": "Emote",
|
||||||
"Emote": "rally"
|
"Emote": "rally",
|
||||||
},
|
"CompletionQuestVariablesFlags": [
|
||||||
{
|
null,
|
||||||
"DataId": 1045473,
|
null,
|
||||||
"Position": {
|
null,
|
||||||
"X": 152.42236,
|
null,
|
||||||
"Y": -49.589592,
|
null,
|
||||||
"Z": -614.8623
|
128
|
||||||
},
|
]
|
||||||
"TerritoryId": 959,
|
|
||||||
"InteractionType": "Emote",
|
|
||||||
"Emote": "rally"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045472,
|
"DataId": 1045472,
|
||||||
@ -120,9 +145,39 @@
|
|||||||
"Y": -49.589596,
|
"Y": -49.589596,
|
||||||
"Z": -621.48474
|
"Z": -621.48474
|
||||||
},
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Emote",
|
"InteractionType": "Emote",
|
||||||
"Emote": "rally"
|
"Emote": "rally",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
],
|
||||||
|
"Comment": "TODO Check Flags"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1045473,
|
||||||
|
"Position": {
|
||||||
|
"X": 152.42236,
|
||||||
|
"Y": -49.589592,
|
||||||
|
"Z": -614.8623
|
||||||
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
|
"TerritoryId": 959,
|
||||||
|
"InteractionType": "Emote",
|
||||||
|
"Emote": "rally",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -136,6 +191,7 @@
|
|||||||
"Y": -49.589592,
|
"Y": -49.589592,
|
||||||
"Z": -619.9894
|
"Z": -619.9894
|
||||||
},
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -4,15 +4,18 @@
|
|||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
"DataId": 1045611,
|
"Steps": [
|
||||||
"Position": {
|
{
|
||||||
"X": 160.87585,
|
"DataId": 1045611,
|
||||||
"Y": -49.589592,
|
"Position": {
|
||||||
"Z": -618.46344
|
"X": 160.87585,
|
||||||
},
|
"Y": -49.589592,
|
||||||
"TerritoryId": 959,
|
"Z": -618.46344
|
||||||
"InteractionType": "Interact",
|
},
|
||||||
"Comment": "Unsure if correct id"
|
"TerritoryId": 959,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
@ -25,7 +28,9 @@
|
|||||||
"Z": 418.69226
|
"Z": 418.69226
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -40,7 +45,16 @@
|
|||||||
"Z": 638.0254
|
"Z": 638.0254
|
||||||
},
|
},
|
||||||
"TerritoryId": 1162,
|
"TerritoryId": 1162,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
],
|
||||||
|
"Comment": "TODO Check Flags"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013355,
|
"DataId": 2013355,
|
||||||
@ -50,7 +64,15 @@
|
|||||||
"Z": 547.6615
|
"Z": 547.6615
|
||||||
},
|
},
|
||||||
"TerritoryId": 1162,
|
"TerritoryId": 1162,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013356,
|
"DataId": 2013356,
|
||||||
@ -60,7 +82,15 @@
|
|||||||
"Z": 472.19043
|
"Z": 472.19043
|
||||||
},
|
},
|
||||||
"TerritoryId": 1162,
|
"TerritoryId": 1162,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 56.573345,
|
"Y": 56.573345,
|
||||||
"Z": 436.0265
|
"Z": 436.0265
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 1162,
|
"TerritoryId": 1162,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 54.977272,
|
"Y": 54.977272,
|
||||||
"Z": 432.02856
|
"Z": 432.02856
|
||||||
},
|
},
|
||||||
|
"StopDistance": 7,
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -20,6 +21,18 @@
|
|||||||
{
|
{
|
||||||
"Sequence": 1,
|
"Sequence": 1,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2012664,
|
||||||
|
"Position": {
|
||||||
|
"X": -26.901672,
|
||||||
|
"Y": -130.47992,
|
||||||
|
"Z": -580.4685
|
||||||
|
},
|
||||||
|
"TerritoryId": 959,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
|
||||||
|
"SkipIf": ["FlyingUnlocked"]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045466,
|
"DataId": 1045466,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -28,7 +41,8 @@
|
|||||||
"Z": -491.99664
|
"Z": -491.99664
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -44,6 +58,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Radz-at-Han",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Radz-at-Han] Aetheryte Plaza",
|
"[Radz-at-Han] Aetheryte Plaza",
|
||||||
"[Radz-at-Han] Meghaduta"
|
"[Radz-at-Han] Meghaduta"
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
"Y": 55,
|
"Y": 55,
|
||||||
"Z": -68.61987
|
"Z": -68.61987
|
||||||
},
|
},
|
||||||
|
"StopDistance": 5,
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
@ -44,6 +45,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 819,
|
"TerritoryId": 819,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Crystarium",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Crystarium] Aetheryte Plaza",
|
"[Crystarium] Aetheryte Plaza",
|
||||||
"[Crystarium] The Cabinet of Curiosity"
|
"[Crystarium] The Cabinet of Curiosity"
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": -8.255188
|
"Z": -8.255188
|
||||||
},
|
},
|
||||||
"TerritoryId": 820,
|
"TerritoryId": 820,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Eulmore"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -58,7 +59,15 @@
|
|||||||
"Z": -61.387024
|
"Z": -61.387024
|
||||||
},
|
},
|
||||||
"TerritoryId": 820,
|
"TerritoryId": 820,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1045633,
|
"DataId": 1045633,
|
||||||
@ -72,6 +81,14 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Eulmore] Aetheryte Plaza",
|
"[Eulmore] Aetheryte Plaza",
|
||||||
"[Eulmore] The Mainstay"
|
"[Eulmore] The Mainstay"
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -86,6 +103,14 @@
|
|||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Eulmore] The Mainstay",
|
"[Eulmore] The Mainstay",
|
||||||
"[Eulmore] Nightsoil Pots"
|
"[Eulmore] Nightsoil Pots"
|
||||||
|
],
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": 298.20703
|
"Z": 298.20703
|
||||||
},
|
},
|
||||||
"TerritoryId": 817,
|
"TerritoryId": 817,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Rak'tika - Slitherbough"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -44,7 +45,9 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 817,
|
"TerritoryId": 817,
|
||||||
"InteractionType": "Say",
|
"InteractionType": "Say",
|
||||||
"ChatMessage": "allin tuta"
|
"ChatMessage": {
|
||||||
|
"Key": "TEXT_AKTKML103_04746_SAYTODO_000_140"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -89,7 +92,8 @@
|
|||||||
"Z": -224.5976
|
"Z": -224.5976
|
||||||
},
|
},
|
||||||
"TerritoryId": 815,
|
"TerritoryId": 815,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Amh Araeng - Twine"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -33,12 +33,7 @@
|
|||||||
"[Crystarium] Aetheryte Plaza",
|
"[Crystarium] Aetheryte Plaza",
|
||||||
"[Crystarium] The Dossal Gate"
|
"[Crystarium] The Dossal Gate"
|
||||||
]
|
]
|
||||||
}
|
},
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Sequence": 2,
|
|
||||||
"Steps": [
|
|
||||||
{
|
{
|
||||||
"DataId": 1033888,
|
"DataId": 1033888,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -48,7 +43,12 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 844,
|
"TerritoryId": 844,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
},
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
{
|
{
|
||||||
"DataId": 1039645,
|
"DataId": 1039645,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -58,6 +58,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 963,
|
"TerritoryId": 963,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Radz-at-Han",
|
||||||
"AethernetShortcut": [
|
"AethernetShortcut": [
|
||||||
"[Radz-at-Han] Aetheryte Plaza",
|
"[Radz-at-Han] Aetheryte Plaza",
|
||||||
"[Radz-at-Han] Meghaduta"
|
"[Radz-at-Han] Meghaduta"
|
||||||
@ -76,7 +77,9 @@
|
|||||||
"Z": 401.26636
|
"Z": 401.26636
|
||||||
},
|
},
|
||||||
"TerritoryId": 959,
|
"TerritoryId": 959,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
"Y": 56.682667,
|
"Y": 56.682667,
|
||||||
"Z": 468.162
|
"Z": 468.162
|
||||||
},
|
},
|
||||||
|
"StopDistance": 6,
|
||||||
"TerritoryId": 1162,
|
"TerritoryId": 1162,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact"
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,8 @@
|
|||||||
"Z": 4.55803
|
"Z": 4.55803
|
||||||
},
|
},
|
||||||
"TerritoryId": 962,
|
"TerritoryId": 962,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 987
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013420,
|
"DataId": 2013420,
|
||||||
|
@ -10,19 +10,19 @@
|
|||||||
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
|
<PathMap Condition="$(SolutionDir) != ''">$(SolutionDir)=X:\</PathMap>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<Target Name="ZipShadowbringers" BeforeTargets="BeforeResGen">
|
<Target Name="ZipShadowbringers" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
|
||||||
<ZipDirectory SourceDirectory="$(ProjectDir)\Shadowbringers"
|
<ZipDirectory SourceDirectory="$(ProjectDir)\Shadowbringers"
|
||||||
DestinationFile="$(TargetDir)\Shadowbringers.zip"
|
DestinationFile="$(TargetDir)\Shadowbringers.zip"
|
||||||
Overwrite="true"/>
|
Overwrite="true"/>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="ZipEndwalker" BeforeTargets="BeforeResGen">
|
<Target Name="ZipEndwalker" BeforeTargets="BeforeResGen" Condition="'$(Configuration)' == 'Release'">
|
||||||
<ZipDirectory SourceDirectory="$(ProjectDir)\Endwalker"
|
<ZipDirectory SourceDirectory="$(ProjectDir)\Endwalker"
|
||||||
DestinationFile="$(TargetDir)\Endwalker.zip"
|
DestinationFile="$(TargetDir)\Endwalker.zip"
|
||||||
Overwrite="true"/>
|
Overwrite="true"/>
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup Condition="'$(Configuration)' == 'Release'">
|
||||||
<EmbeddedResource Include="$(TargetDir)\Shadowbringers.zip"/>
|
<EmbeddedResource Include="$(TargetDir)\Shadowbringers.zip"/>
|
||||||
<EmbeddedResource Include="$(TargetDir)\Endwalker.zip"/>
|
<EmbeddedResource Include="$(TargetDir)\Endwalker.zip"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
@ -50,7 +50,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1031257,
|
"DataId": 1031257,
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": 27.5
|
"Z": 27.5
|
||||||
},
|
},
|
||||||
"TerritoryId": 351,
|
"TerritoryId": 351,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 156
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -73,7 +74,8 @@
|
|||||||
"Z": -631.281
|
"Z": -631.281
|
||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1032081,
|
"DataId": 1032081,
|
||||||
|
@ -59,7 +59,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1032081,
|
"DataId": 1032081,
|
||||||
|
@ -45,7 +45,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1032081,
|
"DataId": 1032081,
|
||||||
|
@ -28,7 +28,8 @@
|
|||||||
"Z": 27.5
|
"Z": 27.5
|
||||||
},
|
},
|
||||||
"TerritoryId": 351,
|
"TerritoryId": 351,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 156
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Position": {
|
"Position": {
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1035355,
|
"DataId": 1035355,
|
||||||
|
@ -62,7 +62,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1032694,
|
"DataId": 1032694,
|
||||||
|
@ -79,7 +79,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 156,
|
"TerritoryId": 156,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"AetheryteShortcut": "Mor Dhona"
|
"AetheryteShortcut": "Mor Dhona",
|
||||||
|
"TargetTerritoryId": 351
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -348,7 +348,9 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": [
|
"enum": [
|
||||||
"Never",
|
"Never",
|
||||||
"FlyingUnlocked"
|
"FlyingLocked",
|
||||||
|
"FlyingUnlocked",
|
||||||
|
"DifferentTerritory"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -563,12 +565,22 @@
|
|||||||
"then": {
|
"then": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"ChatMessage": {
|
"ChatMessage": {
|
||||||
"type": "string",
|
"type": "object",
|
||||||
"description": "The text to use with /say"
|
"description": "The text to use with /say",
|
||||||
|
"properties": {
|
||||||
|
"ExcelSheet": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"Key": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"Key"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"Position",
|
|
||||||
"ChatMessage"
|
"ChatMessage"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -655,7 +667,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"ExcelSheet",
|
|
||||||
"Answer"
|
"Answer"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -167,6 +167,8 @@ internal sealed class MovementController : IDisposable
|
|||||||
public void NavigateTo(EMovementType type, uint? dataId, Vector3 to, bool fly, bool sprint, float? stopDistance = null)
|
public void NavigateTo(EMovementType type, uint? dataId, Vector3 to, bool fly, bool sprint, float? stopDistance = null)
|
||||||
{
|
{
|
||||||
PrepareNavigation(type, dataId, to, fly, sprint, stopDistance);
|
PrepareNavigation(type, dataId, to, fly, sprint, stopDistance);
|
||||||
|
_pluginLog.Information($"Pathfinding to {Destination}");
|
||||||
|
|
||||||
_cancellationTokenSource = new();
|
_cancellationTokenSource = new();
|
||||||
_cancellationTokenSource.CancelAfter(TimeSpan.FromSeconds(10));
|
_cancellationTokenSource.CancelAfter(TimeSpan.FromSeconds(10));
|
||||||
_pathfindTask =
|
_pathfindTask =
|
||||||
@ -176,6 +178,8 @@ internal sealed class MovementController : IDisposable
|
|||||||
public void NavigateTo(EMovementType type, uint? dataId, List<Vector3> to, bool fly, bool sprint, float? stopDistance)
|
public void NavigateTo(EMovementType type, uint? dataId, List<Vector3> to, bool fly, bool sprint, float? stopDistance)
|
||||||
{
|
{
|
||||||
PrepareNavigation(type, dataId, to.Last(), fly, sprint, stopDistance);
|
PrepareNavigation(type, dataId, to.Last(), fly, sprint, stopDistance);
|
||||||
|
|
||||||
|
_pluginLog.Information($"Moving to {Destination}");
|
||||||
_navmeshIpc.MoveTo(to);
|
_navmeshIpc.MoveTo(to);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
|
||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using Dalamud.Game.ClientState.Conditions;
|
using Dalamud.Game.ClientState.Conditions;
|
||||||
@ -14,7 +12,6 @@ using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
|||||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
using FFXIVClientStructs.FFXIV.Client.UI;
|
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||||
using LLib.GameUI;
|
using LLib.GameUI;
|
||||||
using Lumina.Excel.CustomSheets;
|
|
||||||
using Questionable.Data;
|
using Questionable.Data;
|
||||||
using Questionable.External;
|
using Questionable.External;
|
||||||
using Questionable.Model;
|
using Questionable.Model;
|
||||||
@ -251,10 +248,12 @@ internal sealed class QuestController
|
|||||||
public void IncreaseStepCount()
|
public void IncreaseStepCount()
|
||||||
{
|
{
|
||||||
(QuestSequence? seq, QuestStep? step) = GetNextStep();
|
(QuestSequence? seq, QuestStep? step) = GetNextStep();
|
||||||
if (seq == null || step == null)
|
if (CurrentQuest == null || seq == null || step == null)
|
||||||
|
{
|
||||||
|
_pluginLog.Warning("Unable to retrieve next quest step, not increasing step count");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Debug.Assert(CurrentQuest != null, nameof(CurrentQuest) + " != null");
|
|
||||||
if (CurrentQuest.Step + 1 < seq.Steps.Count)
|
if (CurrentQuest.Step + 1 < seq.Steps.Count)
|
||||||
{
|
{
|
||||||
CurrentQuest = CurrentQuest with
|
CurrentQuest = CurrentQuest with
|
||||||
@ -276,10 +275,12 @@ internal sealed class QuestController
|
|||||||
public unsafe void ExecuteNextStep()
|
public unsafe void ExecuteNextStep()
|
||||||
{
|
{
|
||||||
(QuestSequence? seq, QuestStep? step) = GetNextStep();
|
(QuestSequence? seq, QuestStep? step) = GetNextStep();
|
||||||
if (seq == null || step == null)
|
if (CurrentQuest == null || seq == null || step == null)
|
||||||
|
{
|
||||||
|
_pluginLog.Warning("Could not retrieve next quest step, not doing anything");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Debug.Assert(CurrentQuest != null, nameof(CurrentQuest) + " != null");
|
|
||||||
if (step.Disabled)
|
if (step.Disabled)
|
||||||
{
|
{
|
||||||
_pluginLog.Information("Skipping step, as it is disabled");
|
_pluginLog.Information("Skipping step, as it is disabled");
|
||||||
@ -299,12 +300,14 @@ internal sealed class QuestController
|
|||||||
(_aetheryteData.CalculateDistance(pos, territoryType, step.AethernetShortcut.From) < 20 ||
|
(_aetheryteData.CalculateDistance(pos, territoryType, step.AethernetShortcut.From) < 20 ||
|
||||||
_aetheryteData.CalculateDistance(pos, territoryType, step.AethernetShortcut.To) < 20)))
|
_aetheryteData.CalculateDistance(pos, territoryType, step.AethernetShortcut.To) < 20)))
|
||||||
{
|
{
|
||||||
|
_pluginLog.Information("Skipping aetheryte teleport");
|
||||||
skipTeleport = true;
|
skipTeleport = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (skipTeleport)
|
if (skipTeleport)
|
||||||
{
|
{
|
||||||
|
_pluginLog.Information("Marking aetheryte shortcut as used");
|
||||||
CurrentQuest = CurrentQuest with
|
CurrentQuest = CurrentQuest with
|
||||||
{
|
{
|
||||||
StepProgress = CurrentQuest.StepProgress with { AetheryteShortcutUsed = true }
|
StepProgress = CurrentQuest.StepProgress with { AetheryteShortcutUsed = true }
|
||||||
@ -312,20 +315,24 @@ internal sealed class QuestController
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (step.AetheryteShortcut != null)
|
if (!_gameFunctions.IsAetheryteUnlocked(step.AetheryteShortcut.Value))
|
||||||
{
|
{
|
||||||
if (!_gameFunctions.IsAetheryteUnlocked(step.AetheryteShortcut.Value))
|
_pluginLog.Error($"Aetheryte {step.AetheryteShortcut.Value} is not unlocked.");
|
||||||
_chatGui.Print($"[Questionable] Aetheryte {step.AetheryteShortcut.Value} is not unlocked.");
|
_chatGui.Print($"[Questionable] Aetheryte {step.AetheryteShortcut.Value} is not unlocked.");
|
||||||
else if (_gameFunctions.TeleportAetheryte(step.AetheryteShortcut.Value))
|
}
|
||||||
CurrentQuest = CurrentQuest with
|
else if (_gameFunctions.TeleportAetheryte(step.AetheryteShortcut.Value))
|
||||||
{
|
{
|
||||||
StepProgress = CurrentQuest.StepProgress with { AetheryteShortcutUsed = true }
|
_pluginLog.Information("Travelling via aetheryte...");
|
||||||
};
|
CurrentQuest = CurrentQuest with
|
||||||
else
|
{
|
||||||
_chatGui.Print("[Questionable] Unable to teleport to aetheryte.");
|
StepProgress = CurrentQuest.StepProgress with { AetheryteShortcutUsed = true }
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_chatGui.Print("[Questionable] No aetheryte for teleport set.");
|
{
|
||||||
|
_pluginLog.Warning("Unable to teleport to aetheryte");
|
||||||
|
_chatGui.Print("[Questionable] Unable to teleport to aetheryte.");
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -343,6 +350,14 @@ internal sealed class QuestController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (step.SkipIf.Contains(ESkipCondition.FlyingLocked) &&
|
||||||
|
!_gameFunctions.IsFlyingUnlocked(step.TerritoryId))
|
||||||
|
{
|
||||||
|
_pluginLog.Information("Skipping step, as flying is locked");
|
||||||
|
IncreaseStepCount();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (step is
|
if (step is
|
||||||
{
|
{
|
||||||
DataId: not null,
|
DataId: not null,
|
||||||
@ -372,10 +387,9 @@ internal sealed class QuestController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CurrentQuest.StepProgress.AethernetShortcutUsed)
|
if (!CurrentQuest.StepProgress.AethernetShortcutUsed && step.AethernetShortcut != null)
|
||||||
{
|
{
|
||||||
if (step.AethernetShortcut != null &&
|
if (_gameFunctions.IsAetheryteUnlocked(step.AethernetShortcut.From) &&
|
||||||
_gameFunctions.IsAetheryteUnlocked(step.AethernetShortcut.From) &&
|
|
||||||
_gameFunctions.IsAetheryteUnlocked(step.AethernetShortcut.To))
|
_gameFunctions.IsAetheryteUnlocked(step.AethernetShortcut.To))
|
||||||
{
|
{
|
||||||
EAetheryteLocation from = step.AethernetShortcut.From;
|
EAetheryteLocation from = step.AethernetShortcut.From;
|
||||||
@ -389,6 +403,7 @@ internal sealed class QuestController
|
|||||||
{
|
{
|
||||||
if (_aetheryteData.CalculateDistance(playerPosition, territoryType, from) < 11)
|
if (_aetheryteData.CalculateDistance(playerPosition, territoryType, from) < 11)
|
||||||
{
|
{
|
||||||
|
_pluginLog.Information($"Using lifestream to teleport to {to}");
|
||||||
_lifestreamIpc.Teleport(to);
|
_lifestreamIpc.Teleport(to);
|
||||||
CurrentQuest = CurrentQuest with
|
CurrentQuest = CurrentQuest with
|
||||||
{
|
{
|
||||||
@ -396,22 +411,31 @@ internal sealed class QuestController
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
_pluginLog.Information("Moving to aethernet shortcut");
|
||||||
_movementController.NavigateTo(EMovementType.Quest, (uint)from, _aetheryteData.Locations[from],
|
_movementController.NavigateTo(EMovementType.Quest, (uint)from, _aetheryteData.Locations[from],
|
||||||
false, true,
|
false, true,
|
||||||
AetheryteConverter.IsLargeAetheryte(from) ? 10.9f : 6.9f);
|
AetheryteConverter.IsLargeAetheryte(from) ? 10.9f : 6.9f);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
_pluginLog.Warning($"Aethernet shortcut not unlocked (from: {step.AethernetShortcut.From}, to: {step.AethernetShortcut.To}), walking manually");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (step.TargetTerritoryId == _clientState.TerritoryType)
|
if (step.TargetTerritoryId == _clientState.TerritoryType && !step.SkipIf.Contains(ESkipCondition.Never))
|
||||||
{
|
{
|
||||||
_pluginLog.Information("Zone transition, skipping movement");
|
// we assume whatever e.g. interaction, walkto etc. we have will trigger the zone transition
|
||||||
|
_pluginLog.Information("Zone transition, skipping rest of step");
|
||||||
|
IncreaseStepCount();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
else if (step.InteractionType == EInteractionType.Jump && step.JumpDestination != null &&
|
|
||||||
(_clientState.LocalPlayer!.Position - step.JumpDestination.Position).Length() <=
|
if (step.InteractionType == EInteractionType.Jump && step.JumpDestination != null &&
|
||||||
(step.JumpDestination.StopDistance ?? 1f))
|
(_clientState.LocalPlayer!.Position - step.JumpDestination.Position).Length() <=
|
||||||
|
(step.JumpDestination.StopDistance ?? 1f))
|
||||||
{
|
{
|
||||||
_pluginLog.Information("We're at the jump destination, skipping movement");
|
_pluginLog.Information("We're at the jump destination, skipping movement");
|
||||||
}
|
}
|
||||||
@ -433,16 +457,17 @@ internal sealed class QuestController
|
|||||||
|
|
||||||
if (step.Mount == true && !_gameFunctions.HasStatusPreventingSprintOrMount())
|
if (step.Mount == true && !_gameFunctions.HasStatusPreventingSprintOrMount())
|
||||||
{
|
{
|
||||||
|
_pluginLog.Information("Step explicitly wants a mount, trying to mount...");
|
||||||
if (!_condition[ConditionFlag.Mounted] && !_condition[ConditionFlag.InCombat] &&
|
if (!_condition[ConditionFlag.Mounted] && !_condition[ConditionFlag.InCombat] &&
|
||||||
_territoryData.CanUseMount(_clientState.TerritoryType))
|
_territoryData.CanUseMount(_clientState.TerritoryType))
|
||||||
{
|
{
|
||||||
if (ActionManager.Instance()->GetActionStatus(ActionType.Mount, 71) == 0)
|
_gameFunctions.Mount();
|
||||||
ActionManager.Instance()->UseAction(ActionType.Mount, 71);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (step.Mount == false)
|
else if (step.Mount == false)
|
||||||
{
|
{
|
||||||
|
_pluginLog.Information("Step explicitly wants no mount, trying to unmount...");
|
||||||
if (_condition[ConditionFlag.Mounted])
|
if (_condition[ConditionFlag.Mounted])
|
||||||
{
|
{
|
||||||
_gameFunctions.Unmount();
|
_gameFunctions.Unmount();
|
||||||
@ -456,9 +481,7 @@ internal sealed class QuestController
|
|||||||
!_condition[ConditionFlag.InCombat] && _territoryData.CanUseMount(_clientState.TerritoryType) &&
|
!_condition[ConditionFlag.InCombat] && _territoryData.CanUseMount(_clientState.TerritoryType) &&
|
||||||
!_gameFunctions.HasStatusPreventingSprintOrMount())
|
!_gameFunctions.HasStatusPreventingSprintOrMount())
|
||||||
{
|
{
|
||||||
if (ActionManager.Instance()->GetActionStatus(ActionType.Mount, 71) == 0)
|
_gameFunctions.Mount();
|
||||||
ActionManager.Instance()->UseAction(ActionType.Mount, 71);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -495,10 +518,12 @@ internal sealed class QuestController
|
|||||||
if (gameObject == null ||
|
if (gameObject == null ||
|
||||||
(gameObject.Position - _clientState.LocalPlayer!.Position).Length() > step.StopDistance)
|
(gameObject.Position - _clientState.LocalPlayer!.Position).Length() > step.StopDistance)
|
||||||
{
|
{
|
||||||
|
_pluginLog.Warning("Object not found or too far away, no position so we can't move");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_pluginLog.Information($"Running logic for {step.InteractionType}");
|
||||||
switch (step.InteractionType)
|
switch (step.InteractionType)
|
||||||
{
|
{
|
||||||
case EInteractionType.Interact:
|
case EInteractionType.Interact:
|
||||||
@ -506,7 +531,10 @@ internal sealed class QuestController
|
|||||||
{
|
{
|
||||||
GameObject? gameObject = _gameFunctions.FindObjectByDataId(step.DataId.Value);
|
GameObject? gameObject = _gameFunctions.FindObjectByDataId(step.DataId.Value);
|
||||||
if (gameObject == null)
|
if (gameObject == null)
|
||||||
|
{
|
||||||
|
_pluginLog.Warning($"No game object with dataId {step.DataId}");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!gameObject.IsTargetable && _condition[ConditionFlag.Mounted])
|
if (!gameObject.IsTargetable && _condition[ConditionFlag.Mounted])
|
||||||
{
|
{
|
||||||
@ -623,9 +651,14 @@ internal sealed class QuestController
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(step.ChatMessage))
|
if (step.ChatMessage != null)
|
||||||
{
|
{
|
||||||
_gameFunctions.ExecuteCommand($"/say {step.ChatMessage}");
|
string? excelString = _gameFunctions.GetExcelString(CurrentQuest.Quest, step.ChatMessage.ExcelSheet,
|
||||||
|
step.ChatMessage.Key);
|
||||||
|
if (excelString == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_gameFunctions.ExecuteCommand($"/say {excelString}");
|
||||||
IncreaseStepCount();
|
IncreaseStepCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -686,23 +719,10 @@ internal sealed class QuestController
|
|||||||
{
|
{
|
||||||
foreach (DialogueChoice dialogueChoice in step.DialogueChoices)
|
foreach (DialogueChoice dialogueChoice in step.DialogueChoices)
|
||||||
{
|
{
|
||||||
var excelSheet = _dataManager.Excel.GetSheet<QuestDialogueText>(dialogueChoice.ExcelSheet);
|
string? excelString = _gameFunctions.GetExcelString(CurrentQuest.Quest,
|
||||||
if (excelSheet == null)
|
dialogueChoice.ExcelSheet, dialogueChoice.Answer);
|
||||||
{
|
|
||||||
_pluginLog.Error($"Unknown excel sheet '{dialogueChoice.ExcelSheet}'");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
string? excelString = excelSheet
|
|
||||||
.FirstOrDefault(x => x.Key == dialogueChoice.Answer)
|
|
||||||
?.Value
|
|
||||||
?.ToString();
|
|
||||||
if (excelString == null)
|
if (excelString == null)
|
||||||
{
|
|
||||||
_pluginLog.Error(
|
|
||||||
$"Could not extract '{dialogueChoice.Answer}' from sheet '{dialogueChoice.ExcelSheet}'");
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
_pluginLog.Verbose($"Looking for option '{excelString}'");
|
_pluginLog.Verbose($"Looking for option '{excelString}'");
|
||||||
for (int i = 5; i < addon->AtkUnitBase.AtkValuesCount; ++i)
|
for (int i = 5; i < addon->AtkUnitBase.AtkValuesCount; ++i)
|
||||||
|
@ -9,7 +9,6 @@ using System.Text;
|
|||||||
using Dalamud.Game;
|
using Dalamud.Game;
|
||||||
using Dalamud.Game.ClientState.Conditions;
|
using Dalamud.Game.ClientState.Conditions;
|
||||||
using Dalamud.Game.ClientState.Objects;
|
using Dalamud.Game.ClientState.Objects;
|
||||||
using Dalamud.Game.ClientState.Objects.Types;
|
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
@ -20,11 +19,13 @@ using FFXIVClientStructs.FFXIV.Client.System.Framework;
|
|||||||
using FFXIVClientStructs.FFXIV.Client.System.Memory;
|
using FFXIVClientStructs.FFXIV.Client.System.Memory;
|
||||||
using FFXIVClientStructs.FFXIV.Client.System.String;
|
using FFXIVClientStructs.FFXIV.Client.System.String;
|
||||||
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
|
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
|
||||||
|
using Lumina.Excel.CustomSheets;
|
||||||
using Lumina.Excel.GeneratedSheets;
|
using Lumina.Excel.GeneratedSheets;
|
||||||
using Questionable.Controller;
|
using Questionable.Controller;
|
||||||
using Questionable.Model.V1;
|
using Questionable.Model.V1;
|
||||||
using BattleChara = FFXIVClientStructs.FFXIV.Client.Game.Character.BattleChara;
|
using BattleChara = FFXIVClientStructs.FFXIV.Client.Game.Character.BattleChara;
|
||||||
using GameObject = Dalamud.Game.ClientState.Objects.Types.GameObject;
|
using GameObject = Dalamud.Game.ClientState.Objects.Types.GameObject;
|
||||||
|
using Quest = Questionable.Model.Quest;
|
||||||
|
|
||||||
namespace Questionable;
|
namespace Questionable;
|
||||||
|
|
||||||
@ -44,6 +45,7 @@ internal sealed unsafe class GameFunctions
|
|||||||
private readonly ReadOnlyDictionary<EEmote, string> _emoteCommands;
|
private readonly ReadOnlyDictionary<EEmote, string> _emoteCommands;
|
||||||
private readonly ReadOnlyDictionary<uint, ushort> _contentFinderConditionToContentId;
|
private readonly ReadOnlyDictionary<uint, ushort> _contentFinderConditionToContentId;
|
||||||
|
|
||||||
|
private readonly IDataManager _dataManager;
|
||||||
private readonly IObjectTable _objectTable;
|
private readonly IObjectTable _objectTable;
|
||||||
private readonly ITargetManager _targetManager;
|
private readonly ITargetManager _targetManager;
|
||||||
private readonly ICondition _condition;
|
private readonly ICondition _condition;
|
||||||
@ -53,6 +55,7 @@ internal sealed unsafe class GameFunctions
|
|||||||
public GameFunctions(IDataManager dataManager, IObjectTable objectTable, ISigScanner sigScanner,
|
public GameFunctions(IDataManager dataManager, IObjectTable objectTable, ISigScanner sigScanner,
|
||||||
ITargetManager targetManager, ICondition condition, IClientState clientState, IPluginLog pluginLog)
|
ITargetManager targetManager, ICondition condition, IClientState clientState, IPluginLog pluginLog)
|
||||||
{
|
{
|
||||||
|
_dataManager = dataManager;
|
||||||
_objectTable = objectTable;
|
_objectTable = objectTable;
|
||||||
_targetManager = targetManager;
|
_targetManager = targetManager;
|
||||||
_condition = condition;
|
_condition = condition;
|
||||||
@ -399,6 +402,11 @@ internal sealed unsafe class GameFunctions
|
|||||||
if (_condition[ConditionFlag.Swimming] && !IsFlyingUnlocked(_clientState.TerritoryType))
|
if (_condition[ConditionFlag.Swimming] && !IsFlyingUnlocked(_clientState.TerritoryType))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// company chocobo is locked
|
||||||
|
var playerState = PlayerState.Instance();
|
||||||
|
if (playerState != null && !playerState->IsMountUnlocked(1))
|
||||||
|
return true;
|
||||||
|
|
||||||
var gameObject = GameObjectManager.GetGameObjectByIndex(0);
|
var gameObject = GameObjectManager.GetGameObjectByIndex(0);
|
||||||
if (gameObject != null && gameObject->ObjectKind == 1)
|
if (gameObject != null && gameObject->ObjectKind == 1)
|
||||||
{
|
{
|
||||||
@ -410,12 +418,41 @@ internal sealed unsafe class GameFunctions
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Mount()
|
||||||
|
{
|
||||||
|
if (!_condition[ConditionFlag.Mounted])
|
||||||
|
{
|
||||||
|
var playerState = PlayerState.Instance();
|
||||||
|
if (playerState != null && playerState->IsMountUnlocked(71))
|
||||||
|
{
|
||||||
|
if (ActionManager.Instance()->GetActionStatus(ActionType.Mount, 71) == 0)
|
||||||
|
{
|
||||||
|
_pluginLog.Information("Using SDS Fenrir as mount");
|
||||||
|
ActionManager.Instance()->UseAction(ActionType.Mount, 71);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 9) == 0)
|
||||||
|
{
|
||||||
|
_pluginLog.Information("Using mount roulette");
|
||||||
|
ActionManager.Instance()->UseAction(ActionType.GeneralAction, 9);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool Unmount()
|
public bool Unmount()
|
||||||
{
|
{
|
||||||
if (_condition[ConditionFlag.Mounted])
|
if (_condition[ConditionFlag.Mounted])
|
||||||
{
|
{
|
||||||
if (ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 23) == 0)
|
if (ActionManager.Instance()->GetActionStatus(ActionType.GeneralAction, 23) == 0)
|
||||||
|
{
|
||||||
|
_pluginLog.Information("Unmounting...");
|
||||||
ActionManager.Instance()->UseAction(ActionType.GeneralAction, 23);
|
ActionManager.Instance()->UseAction(ActionType.GeneralAction, 23);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_pluginLog.Warning("Can't unmount right now?");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -430,9 +467,38 @@ internal sealed unsafe class GameFunctions
|
|||||||
if (UIState.IsInstanceContentUnlocked(contentId))
|
if (UIState.IsInstanceContentUnlocked(contentId))
|
||||||
AgentContentsFinder.Instance()->OpenRegularDuty(contentFinderConditionId);
|
AgentContentsFinder.Instance()->OpenRegularDuty(contentFinderConditionId);
|
||||||
else
|
else
|
||||||
_pluginLog.Error($"Trying to access a locked duty (cf: {contentFinderConditionId}, content: {contentId})");
|
_pluginLog.Error(
|
||||||
|
$"Trying to access a locked duty (cf: {contentFinderConditionId}, content: {contentId})");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
_pluginLog.Error($"Could not find content for content finder condition (cf: {contentFinderConditionId})");
|
_pluginLog.Error($"Could not find content for content finder condition (cf: {contentFinderConditionId})");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string? GetExcelString(Quest currentQuestQuest, string? excelSheetName, string key)
|
||||||
|
{
|
||||||
|
if (excelSheetName == null)
|
||||||
|
{
|
||||||
|
string questPrefix = $"quest/{(currentQuestQuest.QuestId / 100):000}/";
|
||||||
|
string questSuffix = $"_{currentQuestQuest.QuestId:00000}";
|
||||||
|
excelSheetName = _dataManager.Excel
|
||||||
|
.GetSheetNames()
|
||||||
|
.SingleOrDefault(x =>
|
||||||
|
x.StartsWith(questPrefix, StringComparison.Ordinal) &&
|
||||||
|
x.EndsWith(questSuffix, StringComparison.Ordinal));
|
||||||
|
if (excelSheetName == null)
|
||||||
|
{
|
||||||
|
_pluginLog.Error($"Could not find sheet matching '{questPrefix}*{questSuffix}");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var excelSheet = _dataManager.Excel.GetSheet<QuestDialogueText>(excelSheetName);
|
||||||
|
if (excelSheet == null)
|
||||||
|
{
|
||||||
|
_pluginLog.Error($"Unknown excel sheet '{excelSheetName}'");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return excelSheet.FirstOrDefault(x => x.Key == key)?.Value?.ToString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
7
Questionable/Model/V1/ChatMessage.cs
Normal file
7
Questionable/Model/V1/ChatMessage.cs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
namespace Questionable.Model.V1;
|
||||||
|
|
||||||
|
public sealed class ChatMessage
|
||||||
|
{
|
||||||
|
public string? ExcelSheet { get; set; }
|
||||||
|
public string Key { get; set; } = null!;
|
||||||
|
}
|
@ -7,6 +7,7 @@ public sealed class SkipConditionConverter() : EnumConverter<ESkipCondition>(Val
|
|||||||
private static readonly Dictionary<ESkipCondition, string> Values = new()
|
private static readonly Dictionary<ESkipCondition, string> Values = new()
|
||||||
{
|
{
|
||||||
{ ESkipCondition.Never, "Never" },
|
{ ESkipCondition.Never, "Never" },
|
||||||
|
{ ESkipCondition.FlyingLocked, "FlyingLocked" },
|
||||||
{ ESkipCondition.FlyingUnlocked, "FlyingUnlocked" },
|
{ ESkipCondition.FlyingUnlocked, "FlyingUnlocked" },
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
public sealed class DialogueChoice
|
public sealed class DialogueChoice
|
||||||
{
|
{
|
||||||
public string ExcelSheet { get; set; } = null!;
|
public string? ExcelSheet { get; set; }
|
||||||
public string Answer { get; set; } = null!;
|
public string Answer { get; set; } = null!;
|
||||||
}
|
}
|
||||||
|
@ -8,5 +8,6 @@ public enum ESkipCondition
|
|||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
Never,
|
Never,
|
||||||
|
FlyingLocked,
|
||||||
FlyingUnlocked,
|
FlyingUnlocked,
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ public class QuestStep
|
|||||||
public bool? GroundTarget { get; set; }
|
public bool? GroundTarget { get; set; }
|
||||||
|
|
||||||
public EEmote? Emote { get; set; }
|
public EEmote? Emote { get; set; }
|
||||||
public string? ChatMessage { get; set; }
|
public ChatMessage? ChatMessage { get; set; }
|
||||||
|
|
||||||
public EEnemySpawnType? EnemySpawnType { get; set; }
|
public EEnemySpawnType? EnemySpawnType { get; set; }
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0-windows</TargetFramework>
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
<Version>0.1</Version>
|
<Version>0.2</Version>
|
||||||
<LangVersion>12</LangVersion>
|
<LangVersion>12</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
|
||||||
|
Loading…
Reference in New Issue
Block a user