forked from liza/Questionable
Compare commits
21 Commits
13d1aff8f6
...
2503d1897f
Author | SHA1 | Date | |
---|---|---|---|
|
2503d1897f | ||
459b832ef2 | |||
25130dcb7c | |||
ee1d6ce15b | |||
35649e8663 | |||
715ec340e0 | |||
c03afdefe7 | |||
be3f22230b | |||
e73d04ce2d | |||
dbc31f429f | |||
da425f551e | |||
341c751f0c | |||
9aa07afff8 | |||
6a29273c79 | |||
53374bf907 | |||
0a35ea3eaa | |||
58185d418c | |||
7023a1ac5f | |||
c0c2e324bb | |||
86964dd6f9 | |||
c722abb6df |
@ -1,5 +1,5 @@
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Version>4.11</Version>
|
<Version>4.13</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
2
LLib
2
LLib
@ -1 +1 @@
|
|||||||
Subproject commit 783fea977a2524dd63e717367fc026c52efe6c23
|
Subproject commit b1059871154b84401020c0072fd089fcc022fb77
|
@ -28,7 +28,15 @@
|
|||||||
"Z": 436.94202
|
"Z": 436.94202
|
||||||
},
|
},
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006600,
|
"DataId": 1006600,
|
||||||
@ -38,7 +46,15 @@
|
|||||||
"Z": 423.14795
|
"Z": 423.14795
|
||||||
},
|
},
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006599,
|
"DataId": 1006599,
|
||||||
@ -48,7 +64,15 @@
|
|||||||
"Z": 373.37292
|
"Z": 373.37292
|
||||||
},
|
},
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1006601,
|
"DataId": 1006601,
|
||||||
@ -58,7 +82,15 @@
|
|||||||
"Z": 354.63477
|
"Z": 354.63477
|
||||||
},
|
},
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -13,7 +13,8 @@
|
|||||||
"Z": 972.5642
|
"Z": 972.5642
|
||||||
},
|
},
|
||||||
"TerritoryId": 146,
|
"TerritoryId": 146,
|
||||||
"InteractionType": "AcceptQuest"
|
"InteractionType": "AcceptQuest",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "liza",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 132,
|
||||||
|
"InteractionType": "UseItem",
|
||||||
|
"ItemId": 30362,
|
||||||
|
"TargetTerritoryId": 140,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
140,
|
||||||
|
212
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -492.96475,
|
||||||
|
"Y": 20.999884,
|
||||||
|
"Z": -380.82272
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"$": "Avoid walking around Waking Sands table",
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
212
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2001711,
|
||||||
|
"Position": {
|
||||||
|
"X": -480.9181,
|
||||||
|
"Y": 18.00103,
|
||||||
|
"Z": -386.862
|
||||||
|
},
|
||||||
|
"TerritoryId": 140,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"TargetTerritoryId": 212,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
212
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1011618,
|
||||||
|
"Position": {
|
||||||
|
"X": 10.330261,
|
||||||
|
"Y": -3.0000017,
|
||||||
|
"Z": -54.8562
|
||||||
|
},
|
||||||
|
"TerritoryId": 212,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1004917,
|
||||||
|
"Position": {
|
||||||
|
"X": -358.6328,
|
||||||
|
"Y": 8.469424,
|
||||||
|
"Z": 422.4154
|
||||||
|
},
|
||||||
|
"TerritoryId": 146,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Southern Thanalan - Forgotten Springs",
|
||||||
|
"NextQuestId": 1021
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011145,
|
||||||
|
"Position": {
|
||||||
|
"X": -65.38495,
|
||||||
|
"Y": 0.06979119,
|
||||||
|
"Z": 0.8086548
|
||||||
|
},
|
||||||
|
"TerritoryId": 144,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Gold Saucer",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1025176,
|
||||||
|
"Position": {
|
||||||
|
"X": 57.99951,
|
||||||
|
"Y": 3.9997258,
|
||||||
|
"Z": 64.774536
|
||||||
|
},
|
||||||
|
"TerritoryId": 144,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011145,
|
||||||
|
"Position": {
|
||||||
|
"X": -65.38495,
|
||||||
|
"Y": 0.06979119,
|
||||||
|
"Z": 0.8086548
|
||||||
|
},
|
||||||
|
"TerritoryId": 144,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Gold Saucer",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1016307,
|
||||||
|
"Position": {
|
||||||
|
"X": 57.14502,
|
||||||
|
"Y": 20.99973,
|
||||||
|
"Z": 83.57361
|
||||||
|
},
|
||||||
|
"TerritoryId": 144,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Gold Saucer] Aetheryte Plaza",
|
||||||
|
"[Gold Saucer] Wonder Square East"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1010464,
|
||||||
|
"Position": {
|
||||||
|
"X": -0.015319824,
|
||||||
|
"Y": -1.8903663E-06,
|
||||||
|
"Z": -65.61273
|
||||||
|
},
|
||||||
|
"TerritoryId": 388,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Gold Saucer",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Gold Saucer] Aetheryte Plaza",
|
||||||
|
"[Gold Saucer] Chocobo Square"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true,
|
||||||
|
"InTerritory": [
|
||||||
|
144
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1010472,
|
||||||
|
"Position": {
|
||||||
|
"X": -53.26935,
|
||||||
|
"Y": 0.3093315,
|
||||||
|
"Z": 69.41321
|
||||||
|
},
|
||||||
|
"TerritoryId": 148,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Fly": true,
|
||||||
|
"NextQuestId": 565
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011060,
|
||||||
|
"Position": {
|
||||||
|
"X": -96.87958,
|
||||||
|
"Y": -0.86297023,
|
||||||
|
"Z": 67.826294
|
||||||
|
},
|
||||||
|
"TerritoryId": 144,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Gold Saucer",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Type": "YesNo",
|
||||||
|
"Yes": true,
|
||||||
|
"Prompt": "TEXT_SUBGSC102_00437_Q1_000_000"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1010472,
|
||||||
|
"Position": {
|
||||||
|
"X": -53.26935,
|
||||||
|
"Y": 0.3093315,
|
||||||
|
"Z": 69.41321
|
||||||
|
},
|
||||||
|
"TerritoryId": 148,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InSameTerritory": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1010464,
|
||||||
|
"Position": {
|
||||||
|
"X": -0.015319824,
|
||||||
|
"Y": -1.8903663E-06,
|
||||||
|
"Z": -65.61273
|
||||||
|
},
|
||||||
|
"TerritoryId": 388,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AetheryteShortcut": "Gold Saucer",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Gold Saucer] Aetheryte Plaza",
|
||||||
|
"[Gold Saucer] Chocobo Square"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
388,
|
||||||
|
144
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -18,6 +17,125 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017351,
|
||||||
|
"Position": {
|
||||||
|
"X": -74.87604,
|
||||||
|
"Y": -8.172172,
|
||||||
|
"Z": 158.70898
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 15725,
|
||||||
|
"ItemCount": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017352,
|
||||||
|
"Position": {
|
||||||
|
"X": -56.809387,
|
||||||
|
"Y": -8.866012,
|
||||||
|
"Z": 161.8219
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017353,
|
||||||
|
"Position": {
|
||||||
|
"X": -33.554626,
|
||||||
|
"Y": -8.866012,
|
||||||
|
"Z": 163.43933
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -104.788086,
|
||||||
|
"Y": -8.655561,
|
||||||
|
"Z": 194.60593
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017354,
|
||||||
|
"Position": {
|
||||||
|
"X": -104.41754,
|
||||||
|
"Y": -8.6555605,
|
||||||
|
"Z": 193.16394
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017355,
|
||||||
|
"Position": {
|
||||||
|
"X": -110.97894,
|
||||||
|
"Y": -8.866015,
|
||||||
|
"Z": 247.94385
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
@ -30,21 +148,7 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 400,
|
"TerritoryId": 400,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest",
|
||||||
"AetheryteShortcut": "The Churning Mists - Zenith",
|
"Fly": true
|
||||||
"Fly": true,
|
|
||||||
"SkipConditions": {
|
|
||||||
"AetheryteShortcutIf": {
|
|
||||||
"NearPosition": {
|
|
||||||
"Position": {
|
|
||||||
"X": -335.56116,
|
|
||||||
"Y": 59.003433,
|
|
||||||
"Z": 313.98486
|
|
||||||
},
|
|
||||||
"TerritoryId": 400,
|
|
||||||
"MaximumDistance": 50
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -18,6 +17,59 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017406,
|
||||||
|
"Position": {
|
||||||
|
"X": -95.04846,
|
||||||
|
"Y": 79.8345,
|
||||||
|
"Z": -301.80823
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017407,
|
||||||
|
"Position": {
|
||||||
|
"X": -128.34369,
|
||||||
|
"Y": 125.92322,
|
||||||
|
"Z": -314.6258
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 15736,
|
||||||
|
"ItemCount": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017408,
|
||||||
|
"Position": {
|
||||||
|
"X": -108.59851,
|
||||||
|
"Y": 122.442116,
|
||||||
|
"Z": -318.31848
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -18,6 +17,177 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017471,
|
||||||
|
"Position": {
|
||||||
|
"X": -391.0735,
|
||||||
|
"Y": 59.9946,
|
||||||
|
"Z": 303.1814
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -255.2606,
|
||||||
|
"Y": -24.29513,
|
||||||
|
"Z": 737.67456
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017409,
|
||||||
|
"Position": {
|
||||||
|
"X": -254.71893,
|
||||||
|
"Y": -24.295156,
|
||||||
|
"Z": 738.5519
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2007244,
|
||||||
|
"Position": {
|
||||||
|
"X": -658.9609,
|
||||||
|
"Y": 94.25488,
|
||||||
|
"Z": -417.07483
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "The Churning Mists - Zenith",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -673.58887,
|
||||||
|
"Y": 93.64293,
|
||||||
|
"Z": -506.5746
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true,
|
||||||
|
"SkipConditions": {
|
||||||
|
"StepIf": {
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2007245,
|
||||||
|
"Position": {
|
||||||
|
"X": -671.1376,
|
||||||
|
"Y": 93.91919,
|
||||||
|
"Z": -507.49982
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2007246,
|
||||||
|
"Position": {
|
||||||
|
"X": -813.1685,
|
||||||
|
"Y": 94.865234,
|
||||||
|
"Z": -457.3282
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"Fly": true,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -255.2606,
|
||||||
|
"Y": -24.29513,
|
||||||
|
"Z": 737.67456
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"AetheryteShortcut": "The Churning Mists - Zenith",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017409,
|
||||||
|
"Position": {
|
||||||
|
"X": -254.71893,
|
||||||
|
"Y": -24.295156,
|
||||||
|
"Z": 738.5519
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Craft",
|
||||||
|
"ItemId": 15737,
|
||||||
|
"ItemCount": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1017410,
|
||||||
|
"Position": {
|
||||||
|
"X": -246.2044,
|
||||||
|
"Y": -24.295149,
|
||||||
|
"Z": 760.7384
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
"Author": "liza",
|
"Author": "liza",
|
||||||
"Disabled": true,
|
|
||||||
"QuestSequence": [
|
"QuestSequence": [
|
||||||
{
|
{
|
||||||
"Sequence": 0,
|
"Sequence": 0,
|
||||||
@ -18,6 +17,72 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1017470,
|
||||||
|
"Position": {
|
||||||
|
"X": -353.53632,
|
||||||
|
"Y": 60.896175,
|
||||||
|
"Z": 299.61084
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2007264,
|
||||||
|
"Position": {
|
||||||
|
"X": 508.32373,
|
||||||
|
"Y": -0.77819824,
|
||||||
|
"Z": -360.49445
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Roar",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2007265,
|
||||||
|
"Position": {
|
||||||
|
"X": 613.39734,
|
||||||
|
"Y": -11.917358,
|
||||||
|
"Z": -335.6222
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Roar",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2007266,
|
||||||
|
"Position": {
|
||||||
|
"X": 554.0398,
|
||||||
|
"Y": 50.644653,
|
||||||
|
"Z": -393.72858
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Action",
|
||||||
|
"Action": "Roar",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"Sequence": 255,
|
"Sequence": 255,
|
||||||
"Steps": [
|
"Steps": [
|
||||||
|
@ -0,0 +1,125 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014133,
|
||||||
|
"Position": {
|
||||||
|
"X": -259.84595,
|
||||||
|
"Y": 126.44779,
|
||||||
|
"Z": 1.9073486
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006005,
|
||||||
|
"Position": {
|
||||||
|
"X": -157.70203,
|
||||||
|
"Y": 110.73462,
|
||||||
|
"Z": -52.414795
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2006006,
|
||||||
|
"Position": {
|
||||||
|
"X": -228.25977,
|
||||||
|
"Y": 112.47424,
|
||||||
|
"Z": -127.55017
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2006007,
|
||||||
|
"Position": {
|
||||||
|
"X": -348.10413,
|
||||||
|
"Y": 116.50256,
|
||||||
|
"Z": -91.93567
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014133,
|
||||||
|
"Position": {
|
||||||
|
"X": -259.84595,
|
||||||
|
"Y": 126.44779,
|
||||||
|
"Z": 1.9073486
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014134,
|
||||||
|
"Position": {
|
||||||
|
"X": -293.23267,
|
||||||
|
"Y": 126.85495,
|
||||||
|
"Z": 5.2643433
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014136,
|
||||||
|
"Position": {
|
||||||
|
"X": 292.74426,
|
||||||
|
"Y": 132.44626,
|
||||||
|
"Z": -244.73944
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": 289.0053,
|
||||||
|
"Y": 132.30807,
|
||||||
|
"Z": -233.57523
|
||||||
|
},
|
||||||
|
"DataId": 4041,
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
4041
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014136,
|
||||||
|
"Position": {
|
||||||
|
"X": 292.74426,
|
||||||
|
"Y": 132.44626,
|
||||||
|
"Z": -244.73944
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1765
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,97 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014138,
|
||||||
|
"Position": {
|
||||||
|
"X": -219.19586,
|
||||||
|
"Y": 112.21238,
|
||||||
|
"Z": -244.1596
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 4470,
|
||||||
|
"Position": {
|
||||||
|
"X": -468.44992,
|
||||||
|
"Y": 93.85853,
|
||||||
|
"Z": -506.40417
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AutoOnEnterArea",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
4470
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -219.1624,
|
||||||
|
"Y": 112.29031,
|
||||||
|
"Z": -239.88861
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "WalkTo",
|
||||||
|
"Fly": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1014138,
|
||||||
|
"Position": {
|
||||||
|
"X": -219.19586,
|
||||||
|
"Y": 112.21238,
|
||||||
|
"Z": -244.1596
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1766
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,103 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014138,
|
||||||
|
"Position": {
|
||||||
|
"X": -219.19586,
|
||||||
|
"Y": 112.21238,
|
||||||
|
"Z": -244.1596
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014140,
|
||||||
|
"Position": {
|
||||||
|
"X": -472.19043,
|
||||||
|
"Y": 93.87282,
|
||||||
|
"Z": -503.7156
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 4468,
|
||||||
|
"Position": {
|
||||||
|
"X": -696.8278,
|
||||||
|
"Y": 100.08534,
|
||||||
|
"Z": -603.926
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
4468
|
||||||
|
],
|
||||||
|
"EnemySpawnType": "AutoOnEnterArea"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014140,
|
||||||
|
"Position": {
|
||||||
|
"X": -472.19043,
|
||||||
|
"Y": 93.87282,
|
||||||
|
"Z": -503.7156
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1769
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,185 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014142,
|
||||||
|
"Position": {
|
||||||
|
"X": -290.33344,
|
||||||
|
"Y": 76.98337,
|
||||||
|
"Z": -259.93744
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006013,
|
||||||
|
"Position": {
|
||||||
|
"X": -287.76996,
|
||||||
|
"Y": 77.74463,
|
||||||
|
"Z": -278.00415
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014142,
|
||||||
|
"Position": {
|
||||||
|
"X": -290.33344,
|
||||||
|
"Y": 76.98337,
|
||||||
|
"Z": -259.93744
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006014,
|
||||||
|
"Position": {
|
||||||
|
"X": -291.8593,
|
||||||
|
"Y": 76.98169,
|
||||||
|
"Z": -261.0056
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 4037,
|
||||||
|
"Position": {
|
||||||
|
"X": -285.1214,
|
||||||
|
"Y": 76.98337,
|
||||||
|
"Z": -275.5287
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"KillEnemyDataIds": [4037],
|
||||||
|
"EnemySpawnType": "AfterInteraction"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014142,
|
||||||
|
"Position": {
|
||||||
|
"X": -290.33344,
|
||||||
|
"Y": 76.98337,
|
||||||
|
"Z": -259.93744
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 6,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 7,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014144,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.16742,
|
||||||
|
"Y": 126.98671,
|
||||||
|
"Z": 12.77179
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 8,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006015,
|
||||||
|
"Position": {
|
||||||
|
"X": -252.33844,
|
||||||
|
"Y": 127.00073,
|
||||||
|
"Z": 11.093262
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 9,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014144,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.16742,
|
||||||
|
"Y": 126.98671,
|
||||||
|
"Z": 12.77179
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014147,
|
||||||
|
"Position": {
|
||||||
|
"X": -256.97723,
|
||||||
|
"Y": 126.99508,
|
||||||
|
"Z": 13.168518
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"Position": {
|
||||||
|
"X": -298.8484,
|
||||||
|
"Y": 221.68138,
|
||||||
|
"Z": 548.0529
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Land": true,
|
||||||
|
"DataId": 1014149,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.5144,
|
||||||
|
"Y": 221.58685,
|
||||||
|
"Z": 545.922
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006017,
|
||||||
|
"Position": {
|
||||||
|
"X": -253.34558,
|
||||||
|
"Y": 221.36255,
|
||||||
|
"Z": 528.92346
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 4076,
|
||||||
|
"Position": {
|
||||||
|
"X": -257.5558,
|
||||||
|
"Y": 221.35532,
|
||||||
|
"Z": 520.9053
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"KillEnemyDataIds": [4076],
|
||||||
|
"EnemySpawnType": "AfterInteraction"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014149,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.5144,
|
||||||
|
"Y": 221.58685,
|
||||||
|
"Z": 545.922
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1890
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,75 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -297.49585,
|
||||||
|
"Y": 219.87524,
|
||||||
|
"Z": 281.65045
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "OverworldEnemies",
|
||||||
|
"ComplexCombatData": [
|
||||||
|
{
|
||||||
|
"DataId": 3992,
|
||||||
|
"MinimumKillCount": 5
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014150,
|
||||||
|
"Position": {
|
||||||
|
"X": 507.13354,
|
||||||
|
"Y": 217.95148,
|
||||||
|
"Z": 791.37854
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1891
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014151,
|
||||||
|
"Position": {
|
||||||
|
"X": -156.08453,
|
||||||
|
"Y": 219.14235,
|
||||||
|
"Z": 669.7031
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 732,
|
||||||
|
"Position": {
|
||||||
|
"X": -151.29321,
|
||||||
|
"Y": 218.95082,
|
||||||
|
"Z": 669.4895
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
732
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014151,
|
||||||
|
"Position": {
|
||||||
|
"X": -156.08453,
|
||||||
|
"Y": 219.14235,
|
||||||
|
"Z": 669.7031
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014151,
|
||||||
|
"Position": {
|
||||||
|
"X": -156.08453,
|
||||||
|
"Y": 219.14235,
|
||||||
|
"Z": 669.7031
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1892
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,83 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 2006019,
|
||||||
|
"Position": {
|
||||||
|
"X": -152.42242,
|
||||||
|
"Y": 219.62305,
|
||||||
|
"Z": 669.94727
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 4782,
|
||||||
|
"Position": {
|
||||||
|
"X": -158.97404,
|
||||||
|
"Y": 219.45131,
|
||||||
|
"Z": 672.79553
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
4782
|
||||||
|
],
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006181,
|
||||||
|
"Position": {
|
||||||
|
"X": -152.42242,
|
||||||
|
"Y": 219.62305,
|
||||||
|
"Z": 669.94727
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"NextQuestId": 1983
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014146,
|
||||||
|
"Position": {
|
||||||
|
"X": -258.74725,
|
||||||
|
"Y": 126.98546,
|
||||||
|
"Z": 12.649658
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011907,
|
||||||
|
"Position": {
|
||||||
|
"X": -288.8686,
|
||||||
|
"Y": 127.06639,
|
||||||
|
"Z": 13.199036
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1011910,
|
||||||
|
"Position": {
|
||||||
|
"X": -298.26813,
|
||||||
|
"Y": 126.67049,
|
||||||
|
"Z": -1.4191895
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1014133,
|
||||||
|
"Position": {
|
||||||
|
"X": -259.84595,
|
||||||
|
"Y": 126.44779,
|
||||||
|
"Z": 1.9073486
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014152,
|
||||||
|
"Position": {
|
||||||
|
"X": 496.1776,
|
||||||
|
"Y": 133.93082,
|
||||||
|
"Z": -862.2416
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014153,
|
||||||
|
"Position": {
|
||||||
|
"X": -295.82666,
|
||||||
|
"Y": 126.83744,
|
||||||
|
"Z": 3.829956
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,229 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014153,
|
||||||
|
"Position": {
|
||||||
|
"X": -295.82666,
|
||||||
|
"Y": 126.83744,
|
||||||
|
"Z": 3.829956
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1014154,
|
||||||
|
"Position": {
|
||||||
|
"X": -519.1577,
|
||||||
|
"Y": 119.39417,
|
||||||
|
"Z": -161.24213
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014155,
|
||||||
|
"Position": {
|
||||||
|
"X": -527.245,
|
||||||
|
"Y": 118.94699,
|
||||||
|
"Z": -163.13422
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 5,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006026,
|
||||||
|
"Position": {
|
||||||
|
"X": -525.7191,
|
||||||
|
"Y": 119.06604,
|
||||||
|
"Z": -165.72827
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 6,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 7,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"Position": {
|
||||||
|
"X": -92.57648,
|
||||||
|
"Y": 96.33008,
|
||||||
|
"Z": -645.1057
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2006027,
|
||||||
|
"Position": {
|
||||||
|
"X": -92.57648,
|
||||||
|
"Y": 96.33008,
|
||||||
|
"Z": -645.1057
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "UseItem",
|
||||||
|
"ItemId": 2001751
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 8,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006028,
|
||||||
|
"Position": {
|
||||||
|
"X": -92.5155,
|
||||||
|
"Y": 93.52246,
|
||||||
|
"Z": -623.621
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 4621,
|
||||||
|
"Position": {
|
||||||
|
"X": -92.37683,
|
||||||
|
"Y": 95.76039,
|
||||||
|
"Z": -640.7043
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Combat",
|
||||||
|
"EnemySpawnType": "AfterInteraction",
|
||||||
|
"KillEnemyDataIds": [
|
||||||
|
4621
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 9,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006460,
|
||||||
|
"Position": {
|
||||||
|
"X": -92.57648,
|
||||||
|
"Y": 96.33008,
|
||||||
|
"Z": -645.1057
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 10,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 11,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014147,
|
||||||
|
"Position": {
|
||||||
|
"X": -256.97723,
|
||||||
|
"Y": 126.99508,
|
||||||
|
"Z": 13.168518
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1013710,
|
||||||
|
"Position": {
|
||||||
|
"X": -294.6975,
|
||||||
|
"Y": 126.84874,
|
||||||
|
"Z": 4.5318604
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,140 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012170,
|
||||||
|
"Position": {
|
||||||
|
"X": 102.92212,
|
||||||
|
"Y": 3.6299734,
|
||||||
|
"Z": 65.56799
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012162,
|
||||||
|
"Position": {
|
||||||
|
"X": 135.97314,
|
||||||
|
"Y": 24.376427,
|
||||||
|
"Z": 12.619202
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012170,
|
||||||
|
"Position": {
|
||||||
|
"X": 102.92212,
|
||||||
|
"Y": 3.6299734,
|
||||||
|
"Z": 65.56799
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014711,
|
||||||
|
"Position": {
|
||||||
|
"X": 58.03003,
|
||||||
|
"Y": -7.146736,
|
||||||
|
"Z": 82.41394
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1014712,
|
||||||
|
"Position": {
|
||||||
|
"X": 93.91919,
|
||||||
|
"Y": -19.941168,
|
||||||
|
"Z": 78.20239
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 1014713,
|
||||||
|
"Position": {
|
||||||
|
"X": 131.9447,
|
||||||
|
"Y": -20.000105,
|
||||||
|
"Z": 62.027832
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014714,
|
||||||
|
"Position": {
|
||||||
|
"X": 23.178406,
|
||||||
|
"Y": -12.020877,
|
||||||
|
"Z": 35.294067
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012170,
|
||||||
|
"Position": {
|
||||||
|
"X": 102.92212,
|
||||||
|
"Y": 3.6299734,
|
||||||
|
"Z": 65.56799
|
||||||
|
},
|
||||||
|
"TerritoryId": 418,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,149 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012180,
|
||||||
|
"Position": {
|
||||||
|
"X": -174.18176,
|
||||||
|
"Y": -12.555469,
|
||||||
|
"Z": -21.561035
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006246,
|
||||||
|
"Position": {
|
||||||
|
"X": -218.40247,
|
||||||
|
"Y": -16.037292,
|
||||||
|
"Z": -34.683777
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2006247,
|
||||||
|
"Position": {
|
||||||
|
"X": -229.23633,
|
||||||
|
"Y": -20.035156,
|
||||||
|
"Z": -83.05487
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2006248,
|
||||||
|
"Position": {
|
||||||
|
"X": -252.1554,
|
||||||
|
"Y": -20.035156,
|
||||||
|
"Z": -57.66388
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012180,
|
||||||
|
"Position": {
|
||||||
|
"X": -174.18176,
|
||||||
|
"Y": -12.555469,
|
||||||
|
"Z": -21.561035
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014721,
|
||||||
|
"Position": {
|
||||||
|
"X": 119.31018,
|
||||||
|
"Y": -12.634913,
|
||||||
|
"Z": -13.626343
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ishgard] The Jeweled Crozier",
|
||||||
|
"[Ishgard] Athenaeum Astrologicum"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 4,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 2006330,
|
||||||
|
"Position": {
|
||||||
|
"X": 118.791504,
|
||||||
|
"Y": -11.6427,
|
||||||
|
"Z": -13.351685
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012180,
|
||||||
|
"Position": {
|
||||||
|
"X": -174.18176,
|
||||||
|
"Y": -12.555469,
|
||||||
|
"Z": -21.561035
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Ishgard] Athenaeum Astrologicum",
|
||||||
|
"[Ishgard] The Jeweled Crozier"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014718,
|
||||||
|
"Position": {
|
||||||
|
"X": -29.526245,
|
||||||
|
"Y": 11.965078,
|
||||||
|
"Z": 48.355713
|
||||||
|
},
|
||||||
|
"TerritoryId": 419,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1011231,
|
||||||
|
"Position": {
|
||||||
|
"X": 503.1051,
|
||||||
|
"Y": 217.95148,
|
||||||
|
"Z": 790.2189
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Coerthas Western Highlands - Falcon's Nest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1014719,
|
||||||
|
"Position": {
|
||||||
|
"X": -293.6294,
|
||||||
|
"Y": 125.4389,
|
||||||
|
"Z": -19.058533
|
||||||
|
},
|
||||||
|
"TerritoryId": 397,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"Fly": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Thaksin",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1012085,
|
||||||
|
"Position": {
|
||||||
|
"X": 286.88477,
|
||||||
|
"Y": 14.36517,
|
||||||
|
"Z": 645.1666
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "AcceptQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 2005720,
|
||||||
|
"Position": {
|
||||||
|
"X": 565.9419,
|
||||||
|
"Y": -9.445435,
|
||||||
|
"Z": -14.328308
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
16
|
||||||
|
],
|
||||||
|
"InteractionType": "Interact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2005718,
|
||||||
|
"Position": {
|
||||||
|
"X": 664.39294,
|
||||||
|
"Y": -0.4730835,
|
||||||
|
"Z": -3.2807007
|
||||||
|
},
|
||||||
|
"Fly": true,
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2005721,
|
||||||
|
"Position": {
|
||||||
|
"X": 653.83374,
|
||||||
|
"Y": -0.7172241,
|
||||||
|
"Z": -70.02368
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"Fly": true,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null, null,
|
||||||
|
null, null,
|
||||||
|
null, 8
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2005717,
|
||||||
|
"Position": {
|
||||||
|
"X": 639.00195,
|
||||||
|
"Y": 46.463623,
|
||||||
|
"Z": -113.05414
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2005719,
|
||||||
|
"Position": {
|
||||||
|
"X": 527.0923,
|
||||||
|
"Y": -4.287842,
|
||||||
|
"Z": -84.916504
|
||||||
|
},
|
||||||
|
"Fly": true,
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"CompletionQuestVariablesFlags": [
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
32
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"Fly": true,
|
||||||
|
"DataId": 1012085,
|
||||||
|
"Position": {
|
||||||
|
"X": 286.88477,
|
||||||
|
"Y": 14.36517,
|
||||||
|
"Z": 645.1666
|
||||||
|
},
|
||||||
|
"TerritoryId": 400,
|
||||||
|
"InteractionType": "CompleteQuest"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -13,7 +13,8 @@
|
|||||||
"Z": -135.91211
|
"Z": -135.91211
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "AcceptQuest"
|
"InteractionType": "AcceptQuest",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -27,12 +28,16 @@
|
|||||||
"Y": -99.931335,
|
"Y": -99.931335,
|
||||||
"Z": 644.4646
|
"Z": 644.4646
|
||||||
},
|
},
|
||||||
|
"StopDistance": 0.5,
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null, null,
|
null,
|
||||||
null, null,
|
null,
|
||||||
null, 128
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
128
|
||||||
],
|
],
|
||||||
"Fly": true
|
"Fly": true
|
||||||
},
|
},
|
||||||
@ -43,13 +48,18 @@
|
|||||||
"Y": -94.10242,
|
"Y": -94.10242,
|
||||||
"Z": 597.9553
|
"Z": 597.9553
|
||||||
},
|
},
|
||||||
|
"StopDistance": 0.5,
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "Interact",
|
"InteractionType": "Interact",
|
||||||
"CompletionQuestVariablesFlags": [
|
"CompletionQuestVariablesFlags": [
|
||||||
null, null,
|
null,
|
||||||
null, null,
|
null,
|
||||||
null, 64
|
null,
|
||||||
]
|
null,
|
||||||
|
null,
|
||||||
|
64
|
||||||
|
],
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -65,7 +75,8 @@
|
|||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "CompleteQuest",
|
"InteractionType": "CompleteQuest",
|
||||||
"Fly": true
|
"Fly": true,
|
||||||
|
"NextQuestId": 1793
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,8 @@
|
|||||||
"Z": -135.91211
|
"Z": -135.91211
|
||||||
},
|
},
|
||||||
"TerritoryId": 398,
|
"TerritoryId": 398,
|
||||||
"InteractionType": "AcceptQuest"
|
"InteractionType": "AcceptQuest",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@ -55,8 +56,8 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
32
|
32
|
||||||
]
|
],
|
||||||
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2005633,
|
"DataId": 2005633,
|
||||||
@ -74,7 +75,8 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
128
|
128
|
||||||
]
|
],
|
||||||
|
"Fly": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2005634,
|
"DataId": 2005634,
|
||||||
@ -92,7 +94,8 @@
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
64
|
64
|
||||||
]
|
],
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},{
|
},{
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
"Z": -186.4195
|
"Z": -186.4195
|
||||||
},
|
},
|
||||||
"TerritoryId": 399,
|
"TerritoryId": 399,
|
||||||
"InteractionType": "AcceptQuest"
|
"InteractionType": "AcceptQuest",
|
||||||
|
"Fly": true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -61,8 +61,7 @@
|
|||||||
{
|
{
|
||||||
"TerritoryId": 399,
|
"TerritoryId": 399,
|
||||||
"InteractionType": "Duty",
|
"InteractionType": "Duty",
|
||||||
"AutoDutyEnabled": true,
|
"ContentFinderConditionId": 584
|
||||||
"ContentFinderConditionId": 62
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
@ -94,23 +94,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"DataId": 2013938,
|
|
||||||
"Position": {
|
|
||||||
"X": 516.80774,
|
|
||||||
"Y": 17.959839,
|
|
||||||
"Z": -348.0431
|
|
||||||
},
|
|
||||||
"TerritoryId": 1188,
|
|
||||||
"InteractionType": "AttuneAetherCurrent",
|
|
||||||
"AetherCurrentId": 2818425,
|
|
||||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
|
||||||
"SkipConditions": {
|
|
||||||
"AetheryteShortcutIf": {
|
|
||||||
"AetheryteLocked": "Kozama'uka - Dock Poga"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"DataId": 1048826,
|
"DataId": 1048826,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -119,7 +102,13 @@
|
|||||||
"Z": -527.36707
|
"Z": -527.36707
|
||||||
},
|
},
|
||||||
"TerritoryId": 1188,
|
"TerritoryId": 1188,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"AetheryteLocked": "Kozama'uka - Dock Poga"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -84,6 +84,17 @@
|
|||||||
"DisableNavmesh": true,
|
"DisableNavmesh": true,
|
||||||
"Mount": true
|
"Mount": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"DataId": 2013938,
|
||||||
|
"Position": {
|
||||||
|
"X": 516.80774,
|
||||||
|
"Y": 17.959839,
|
||||||
|
"Z": -348.0431
|
||||||
|
},
|
||||||
|
"TerritoryId": 1188,
|
||||||
|
"InteractionType": "AttuneAetherCurrent",
|
||||||
|
"AetherCurrentId": 2818425
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 2013632,
|
"DataId": 2013632,
|
||||||
"Position": {
|
"Position": {
|
||||||
|
@ -88,6 +88,15 @@
|
|||||||
"InteractionType": "AttuneAethernetShard",
|
"InteractionType": "AttuneAethernetShard",
|
||||||
"AethernetShard": "[Solution Nine] Nexus Arcade"
|
"AethernetShard": "[Solution Nine] Nexus Arcade"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"Position": {
|
||||||
|
"X": -320.34818,
|
||||||
|
"Y": 9.519508,
|
||||||
|
"Z": -6.9244547
|
||||||
|
},
|
||||||
|
"TerritoryId": 1186,
|
||||||
|
"InteractionType": "WalkTo"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"DataId": 1048065,
|
"DataId": 1048065,
|
||||||
"Position": {
|
"Position": {
|
||||||
@ -97,7 +106,8 @@
|
|||||||
},
|
},
|
||||||
"StopDistance": 0.25,
|
"StopDistance": 0.25,
|
||||||
"TerritoryId": 1186,
|
"TerritoryId": 1186,
|
||||||
"InteractionType": "Interact"
|
"InteractionType": "Interact",
|
||||||
|
"DelaySecondsAtStart": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -0,0 +1,118 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||||
|
"Author": "Starr",
|
||||||
|
"QuestSequence": [
|
||||||
|
{
|
||||||
|
"Sequence": 0,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1050356,
|
||||||
|
"Position": {
|
||||||
|
"X": 17.288391,
|
||||||
|
"Y": 45.656,
|
||||||
|
"Z": 133.95886
|
||||||
|
},
|
||||||
|
"TerritoryId": 128,
|
||||||
|
"InteractionType": "AcceptQuest",
|
||||||
|
"AetheryteShortcut": "Limsa Lominsa",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Limsa Lominsa] Aetheryte Plaza",
|
||||||
|
"[Limsa Lominsa] The Aftcastle"
|
||||||
|
],
|
||||||
|
"SkipConditions": {
|
||||||
|
"AetheryteShortcutIf": {
|
||||||
|
"InTerritory": [
|
||||||
|
128
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 1,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1050357,
|
||||||
|
"Position": {
|
||||||
|
"X": -4.6845703,
|
||||||
|
"Y": 40.000004,
|
||||||
|
"Z": 73.3501
|
||||||
|
},
|
||||||
|
"TerritoryId": 128,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Prompt": "TEXT_FESNYX101_05186_Q1_000_000",
|
||||||
|
"Answer": "TEXT_FESNYX101_05186_A1_000_000",
|
||||||
|
"Type": "List"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 2,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1050358,
|
||||||
|
"Position": {
|
||||||
|
"X": -18.143005,
|
||||||
|
"Y": 44,
|
||||||
|
"Z": -33.49359
|
||||||
|
},
|
||||||
|
"TerritoryId": 128,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Prompt": "TEXT_FESNYX101_05186_Q2_000_000",
|
||||||
|
"Answer": "TEXT_FESNYX101_05186_A2_000_001",
|
||||||
|
"Type": "List"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 3,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1050359,
|
||||||
|
"Position": {
|
||||||
|
"X": -44.235962,
|
||||||
|
"Y": 39.473606,
|
||||||
|
"Z": -163.77509
|
||||||
|
},
|
||||||
|
"TerritoryId": 128,
|
||||||
|
"InteractionType": "Interact",
|
||||||
|
"DialogueChoices": [
|
||||||
|
{
|
||||||
|
"Prompt": "TEXT_FESNYX101_05186_Q3_000_000",
|
||||||
|
"Answer": "TEXT_FESNYX101_05186_A3_000_000",
|
||||||
|
"Type": "List"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Sequence": 255,
|
||||||
|
"Steps": [
|
||||||
|
{
|
||||||
|
"DataId": 1050356,
|
||||||
|
"Position": {
|
||||||
|
"X": 17.288391,
|
||||||
|
"Y": 45.656,
|
||||||
|
"Z": 133.95886
|
||||||
|
},
|
||||||
|
"TerritoryId": 128,
|
||||||
|
"InteractionType": "CompleteQuest",
|
||||||
|
"AethernetShortcut": [
|
||||||
|
"[Limsa Lominsa] Culinarians' Guild",
|
||||||
|
"[Limsa Lominsa] The Aftcastle"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -48,7 +48,7 @@ public enum EAction
|
|||||||
Katon = 2266,
|
Katon = 2266,
|
||||||
Raiton = 2267,
|
Raiton = 2267,
|
||||||
RabbitMedium = 2272,
|
RabbitMedium = 2272,
|
||||||
SlugShot = 7412,
|
SlugShot = 2868,
|
||||||
BosomBrook = 37173,
|
BosomBrook = 37173,
|
||||||
Souleater = 3632,
|
Souleater = 3632,
|
||||||
Fire3 = 152,
|
Fire3 = 152,
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=mnemo/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=mnemo/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=nightsoil/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=nightsoil/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ondo/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=ondo/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=orchestrion/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=ostall/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=ostall/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=palaka_0027s/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=palaka_0027s/@EntryIndexedValue">True</s:Boolean>
|
||||||
<s:Boolean x:Key="/Default/UserDictionary/Words/=rostra/@EntryIndexedValue">True</s:Boolean>
|
<s:Boolean x:Key="/Default/UserDictionary/Words/=rostra/@EntryIndexedValue">True</s:Boolean>
|
||||||
|
@ -14,16 +14,16 @@ namespace Questionable.Controller.CombatModules;
|
|||||||
internal sealed class RotationSolverRebornModule : ICombatModule, IDisposable
|
internal sealed class RotationSolverRebornModule : ICombatModule, IDisposable
|
||||||
{
|
{
|
||||||
private readonly ILogger<RotationSolverRebornModule> _logger;
|
private readonly ILogger<RotationSolverRebornModule> _logger;
|
||||||
private readonly IClientState _clientState;
|
|
||||||
private readonly Configuration _configuration;
|
private readonly Configuration _configuration;
|
||||||
private readonly ICallGateSubscriber<string, object> _test;
|
private readonly ICallGateSubscriber<string, object> _test;
|
||||||
private readonly ICallGateSubscriber<StateCommandType, object> _changeOperationMode;
|
private readonly ICallGateSubscriber<StateCommandType, object> _changeOperationMode;
|
||||||
|
|
||||||
public RotationSolverRebornModule(ILogger<RotationSolverRebornModule> logger, MovementController movementController,
|
public RotationSolverRebornModule(
|
||||||
IClientState clientState, IDalamudPluginInterface pluginInterface, Configuration configuration)
|
ILogger<RotationSolverRebornModule> logger,
|
||||||
|
IDalamudPluginInterface pluginInterface,
|
||||||
|
Configuration configuration)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_clientState = clientState;
|
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
_test = pluginInterface.GetIpcSubscriber<string, object>("RotationSolverReborn.Test");
|
_test = pluginInterface.GetIpcSubscriber<string, object>("RotationSolverReborn.Test");
|
||||||
_changeOperationMode =
|
_changeOperationMode =
|
||||||
|
@ -146,6 +146,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
|
|||||||
|
|
||||||
public string? DebugState { get; private set; }
|
public string? DebugState { get; private set; }
|
||||||
|
|
||||||
|
public Func<bool> IsQuestWindowOpen { private get; set; } = () => true;
|
||||||
|
|
||||||
public void Reload()
|
public void Reload()
|
||||||
{
|
{
|
||||||
lock (_progressLock)
|
lock (_progressLock)
|
||||||
@ -181,6 +183,9 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AutomationType == EAutomationType.Manual && !IsRunning && !IsQuestWindowOpen())
|
||||||
|
return;
|
||||||
|
|
||||||
UpdateCurrentQuest();
|
UpdateCurrentQuest();
|
||||||
|
|
||||||
if (!_clientState.IsLoggedIn || _condition[ConditionFlag.Unconscious])
|
if (!_clientState.IsLoggedIn || _condition[ConditionFlag.Unconscious])
|
||||||
|
@ -24,7 +24,7 @@ internal static class SendNotification
|
|||||||
new Task(step.InteractionType, step.Comment),
|
new Task(step.InteractionType, step.Comment),
|
||||||
EInteractionType.Duty when !autoDutyIpc.IsConfiguredToRunContent(step.ContentFinderConditionId, step.AutoDutyEnabled) =>
|
EInteractionType.Duty when !autoDutyIpc.IsConfiguredToRunContent(step.ContentFinderConditionId, step.AutoDutyEnabled) =>
|
||||||
new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
|
new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
|
||||||
? territoryData.GetContentFinderConditionName(step.ContentFinderConditionId.Value)
|
? territoryData.GetContentFinderCondition(step.ContentFinderConditionId.Value)?.Name
|
||||||
: step.Comment),
|
: step.Comment),
|
||||||
EInteractionType.SinglePlayerDuty => new Task(step.InteractionType, quest.Info.Name),
|
EInteractionType.SinglePlayerDuty => new Task(step.InteractionType, quest.Info.Name),
|
||||||
_ => null,
|
_ => null,
|
||||||
|
@ -2,6 +2,9 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Dalamud.Game.ClientState.Conditions;
|
using Dalamud.Game.ClientState.Conditions;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
|
using LLib.Gear;
|
||||||
|
using Questionable.Controller.Steps.Common;
|
||||||
using Questionable.Controller.Steps.Shared;
|
using Questionable.Controller.Steps.Shared;
|
||||||
using Questionable.Data;
|
using Questionable.Data;
|
||||||
using Questionable.External;
|
using Questionable.External;
|
||||||
@ -41,23 +44,54 @@ internal static class Duty
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal sealed class StartAutoDutyExecutor(
|
internal sealed class StartAutoDutyExecutor(
|
||||||
|
GearStatsCalculator gearStatsCalculator,
|
||||||
AutoDutyIpc autoDutyIpc,
|
AutoDutyIpc autoDutyIpc,
|
||||||
TerritoryData territoryData,
|
TerritoryData territoryData,
|
||||||
IClientState clientState) : TaskExecutor<StartAutoDutyTask>
|
IClientState clientState,
|
||||||
|
IChatGui chatGui,
|
||||||
|
SendNotification.Executor sendNotificationExecutor) : TaskExecutor<StartAutoDutyTask>
|
||||||
{
|
{
|
||||||
protected override bool Start()
|
protected override bool Start()
|
||||||
{
|
{
|
||||||
|
if (!territoryData.TryGetContentFinderCondition(Task.ContentFinderConditionId,
|
||||||
|
out var cfcData))
|
||||||
|
throw new TaskException("Failed to get territory ID for content finder condition");
|
||||||
|
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
InventoryManager* inventoryManager = InventoryManager.Instance();
|
||||||
|
if (inventoryManager == null)
|
||||||
|
throw new TaskException("Inventory unavailable");
|
||||||
|
|
||||||
|
var equippedItems = inventoryManager->GetInventoryContainer(InventoryType.EquippedItems);
|
||||||
|
if (equippedItems == null)
|
||||||
|
throw new TaskException("Equipped items unavailable");
|
||||||
|
|
||||||
|
var currentItemLevel = gearStatsCalculator.CalculateAverageItemLevel(equippedItems);
|
||||||
|
if (cfcData.RequiredItemLevel > currentItemLevel)
|
||||||
|
{
|
||||||
|
string errorText =
|
||||||
|
$"Could not use AutoDuty to queue for {cfcData.Name}, required item level: {cfcData.RequiredItemLevel}, current item level: {currentItemLevel}.";
|
||||||
|
if (!sendNotificationExecutor.Start(new SendNotification.Task(EInteractionType.Duty, errorText)))
|
||||||
|
chatGui.PrintError(errorText, CommandHandler.MessageTag, CommandHandler.TagColor);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
autoDutyIpc.StartInstance(Task.ContentFinderConditionId);
|
autoDutyIpc.StartInstance(Task.ContentFinderConditionId);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override ETaskResult Update()
|
public override ETaskResult Update()
|
||||||
{
|
{
|
||||||
if (!territoryData.TryGetTerritoryIdForContentFinderCondition(Task.ContentFinderConditionId,
|
if (!territoryData.TryGetContentFinderCondition(Task.ContentFinderConditionId,
|
||||||
out uint territoryId))
|
out var cfcData))
|
||||||
throw new TaskException("Failed to get territory ID for content finder condition");
|
throw new TaskException("Failed to get territory ID for content finder condition");
|
||||||
|
|
||||||
return clientState.TerritoryType == territoryId ? ETaskResult.TaskComplete : ETaskResult.StillRunning;
|
return clientState.TerritoryType == cfcData.TerritoryId
|
||||||
|
? ETaskResult.TaskComplete
|
||||||
|
: ETaskResult.StillRunning;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,11 +109,11 @@ internal static class Duty
|
|||||||
|
|
||||||
public override ETaskResult Update()
|
public override ETaskResult Update()
|
||||||
{
|
{
|
||||||
if (!territoryData.TryGetTerritoryIdForContentFinderCondition(Task.ContentFinderConditionId,
|
if (!territoryData.TryGetContentFinderCondition(Task.ContentFinderConditionId,
|
||||||
out uint territoryId))
|
out var cfcData))
|
||||||
throw new TaskException("Failed to get territory ID for content finder condition");
|
throw new TaskException("Failed to get territory ID for content finder condition");
|
||||||
|
|
||||||
return clientState.TerritoryType != territoryId && autoDutyIpc.IsStopped()
|
return clientState.TerritoryType != cfcData.TerritoryId && autoDutyIpc.IsStopped()
|
||||||
? ETaskResult.TaskComplete
|
? ETaskResult.TaskComplete
|
||||||
: ETaskResult.StillRunning;
|
: ETaskResult.StillRunning;
|
||||||
}
|
}
|
||||||
|
78
Questionable/Controller/Steps/Shared/RedeemRewardItems.cs
Normal file
78
Questionable/Controller/Steps/Shared/RedeemRewardItems.cs
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Dalamud.Game.ClientState.Conditions;
|
||||||
|
using Dalamud.Plugin.Services;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
|
using Questionable.Data;
|
||||||
|
using Questionable.Functions;
|
||||||
|
using Questionable.Model;
|
||||||
|
using Questionable.Model.Questing;
|
||||||
|
|
||||||
|
namespace Questionable.Controller.Steps.Shared;
|
||||||
|
|
||||||
|
internal static class RedeemRewardItems
|
||||||
|
{
|
||||||
|
internal sealed class Factory(QuestData questData) : ITaskFactory
|
||||||
|
{
|
||||||
|
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
|
||||||
|
{
|
||||||
|
if (step.InteractionType != EInteractionType.AcceptQuest)
|
||||||
|
return [];
|
||||||
|
|
||||||
|
List<ITask> tasks = [];
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
InventoryManager* inventoryManager = InventoryManager.Instance();
|
||||||
|
if (inventoryManager == null)
|
||||||
|
return tasks;
|
||||||
|
|
||||||
|
foreach (var itemReward in questData.RedeemableItems)
|
||||||
|
{
|
||||||
|
if (inventoryManager->GetInventoryItemCount(itemReward.ItemId) > 0 &&
|
||||||
|
!itemReward.IsUnlocked())
|
||||||
|
{
|
||||||
|
tasks.Add(new Task(itemReward));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return tasks;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed record Task(ItemReward ItemReward) : ITask
|
||||||
|
{
|
||||||
|
public override string ToString() => $"TryRedeem({ItemReward.Name})";
|
||||||
|
}
|
||||||
|
|
||||||
|
internal sealed class Executor(
|
||||||
|
GameFunctions gameFunctions,
|
||||||
|
ICondition condition) : TaskExecutor<Task>
|
||||||
|
{
|
||||||
|
private static readonly TimeSpan MinimumCastTime = TimeSpan.FromSeconds(4);
|
||||||
|
private DateTime _continueAt;
|
||||||
|
|
||||||
|
protected override bool Start()
|
||||||
|
{
|
||||||
|
if (condition[ConditionFlag.Mounted])
|
||||||
|
return false;
|
||||||
|
|
||||||
|
TimeSpan castTime = Task.ItemReward.CastTime;
|
||||||
|
if (castTime < MinimumCastTime)
|
||||||
|
castTime = MinimumCastTime;
|
||||||
|
|
||||||
|
_continueAt = DateTime.Now
|
||||||
|
.Add(castTime)
|
||||||
|
.AddSeconds(3);
|
||||||
|
return gameFunctions.UseItem(Task.ItemReward.ItemId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override ETaskResult Update()
|
||||||
|
{
|
||||||
|
if (condition[ConditionFlag.Casting])
|
||||||
|
return ETaskResult.StillRunning;
|
||||||
|
|
||||||
|
return DateTime.Now <= _continueAt ? ETaskResult.StillRunning : ETaskResult.TaskComplete;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -53,7 +53,7 @@ internal sealed class AlliedSocietyData
|
|||||||
else if (alliedSociety == EAlliedSociety.Moogles)
|
else if (alliedSociety == EAlliedSociety.Moogles)
|
||||||
{
|
{
|
||||||
normalNpcs = [];
|
normalNpcs = [];
|
||||||
mountNpcs = [1017322, 1017470];
|
mountNpcs = [1017322, 1017470, 1017471];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Immutable;
|
||||||
using System.Diagnostics.CodeAnalysis;
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
@ -218,8 +219,15 @@ internal sealed class QuestData
|
|||||||
quest.JournalGenre = 82;
|
quest.JournalGenre = 82;
|
||||||
quest.SortKey = 0;
|
quest.SortKey = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RedeemableItems = quests.Where(x => x is QuestInfo)
|
||||||
|
.Cast<QuestInfo>()
|
||||||
|
.SelectMany(x => x.ItemRewards)
|
||||||
|
.ToImmutableHashSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ImmutableHashSet<ItemReward> RedeemableItems { get; }
|
||||||
|
|
||||||
private void AddPreviousQuest(QuestId questToUpdate, QuestId requiredQuestId)
|
private void AddPreviousQuest(QuestId questToUpdate, QuestId requiredQuestId)
|
||||||
{
|
{
|
||||||
QuestInfo quest = (QuestInfo)_quests[questToUpdate];
|
QuestInfo quest = (QuestInfo)_quests[questToUpdate];
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Dalamud.Game;
|
using Dalamud.Game;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using Dalamud.Utility;
|
using Dalamud.Utility;
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game.Character;
|
|
||||||
using Lumina.Excel.Sheets;
|
using Lumina.Excel.Sheets;
|
||||||
|
|
||||||
namespace Questionable.Data;
|
namespace Questionable.Data;
|
||||||
@ -17,8 +16,7 @@ internal sealed class TerritoryData
|
|||||||
private readonly ImmutableHashSet<ushort> _territoriesWithMount;
|
private readonly ImmutableHashSet<ushort> _territoriesWithMount;
|
||||||
private readonly ImmutableDictionary<ushort, uint> _dutyTerritories;
|
private readonly ImmutableDictionary<ushort, uint> _dutyTerritories;
|
||||||
private readonly ImmutableDictionary<uint, string> _instanceNames;
|
private readonly ImmutableDictionary<uint, string> _instanceNames;
|
||||||
private readonly ImmutableDictionary<uint, string> _contentFinderConditionNames;
|
private readonly ImmutableDictionary<uint, ContentFinderConditionData> _contentFinderConditions;
|
||||||
private readonly ImmutableDictionary<uint, uint> _contentFinderConditionIds;
|
|
||||||
|
|
||||||
public TerritoryData(IDataManager dataManager)
|
public TerritoryData(IDataManager dataManager)
|
||||||
{
|
{
|
||||||
@ -46,12 +44,10 @@ internal sealed class TerritoryData
|
|||||||
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
||||||
.ToImmutableDictionary(x => x.Content.RowId, x => x.Name.ToDalamudString().ToString());
|
.ToImmutableDictionary(x => x.Content.RowId, x => x.Name.ToDalamudString().ToString());
|
||||||
|
|
||||||
_contentFinderConditionNames = dataManager.GetExcelSheet<ContentFinderCondition>()
|
_contentFinderConditions = dataManager.GetExcelSheet<ContentFinderCondition>()
|
||||||
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
||||||
.ToImmutableDictionary(x => x.RowId, x => FixName(x.Name.ToDalamudString().ToString(), dataManager.Language));
|
.Select(x => new ContentFinderConditionData(x, dataManager.Language))
|
||||||
_contentFinderConditionIds = dataManager.GetExcelSheet<ContentFinderCondition>()
|
.ToImmutableDictionary(x => x.ContentFinderConditionId, x => x);
|
||||||
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
|
||||||
.ToImmutableDictionary(x => x.RowId, x => x.TerritoryType.RowId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string? GetName(ushort territoryId) => _territoryNames.GetValueOrDefault(territoryId);
|
public string? GetName(ushort territoryId) => _territoryNames.GetValueOrDefault(territoryId);
|
||||||
@ -74,10 +70,12 @@ internal sealed class TerritoryData
|
|||||||
|
|
||||||
public string? GetInstanceName(ushort instanceId) => _instanceNames.GetValueOrDefault(instanceId);
|
public string? GetInstanceName(ushort instanceId) => _instanceNames.GetValueOrDefault(instanceId);
|
||||||
|
|
||||||
public string? GetContentFinderConditionName(uint cfcId) => _contentFinderConditionNames.GetValueOrDefault(cfcId);
|
public ContentFinderConditionData? GetContentFinderCondition(uint cfcId) =>
|
||||||
|
_contentFinderConditions.GetValueOrDefault(cfcId);
|
||||||
|
|
||||||
public bool TryGetTerritoryIdForContentFinderCondition(uint cfcId, out uint territoryId) =>
|
public bool TryGetContentFinderCondition(uint cfcId,
|
||||||
_contentFinderConditionIds.TryGetValue(cfcId, out territoryId);
|
[NotNullWhen(true)] out ContentFinderConditionData? contentFinderConditionData) =>
|
||||||
|
_contentFinderConditions.TryGetValue(cfcId, out contentFinderConditionData);
|
||||||
|
|
||||||
private static string FixName(string name, ClientLanguage language)
|
private static string FixName(string name, ClientLanguage language)
|
||||||
{
|
{
|
||||||
@ -86,4 +84,17 @@ internal sealed class TerritoryData
|
|||||||
|
|
||||||
return string.Concat(name[0].ToString().ToUpper(CultureInfo.InvariantCulture), name.AsSpan(1));
|
return string.Concat(name[0].ToString().ToUpper(CultureInfo.InvariantCulture), name.AsSpan(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public sealed record ContentFinderConditionData(
|
||||||
|
uint ContentFinderConditionId,
|
||||||
|
string Name,
|
||||||
|
uint TerritoryId,
|
||||||
|
ushort RequiredItemLevel)
|
||||||
|
{
|
||||||
|
public ContentFinderConditionData(ContentFinderCondition condition, ClientLanguage clientLanguage)
|
||||||
|
: this(condition.RowId, FixName(condition.Name.ToDalamudString().ToString(), clientLanguage),
|
||||||
|
condition.TerritoryType.RowId, condition.ItemLevelRequired)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
12
Questionable/External/AutoDutyIpc.cs
vendored
12
Questionable/External/AutoDutyIpc.cs
vendored
@ -38,7 +38,7 @@ internal sealed class AutoDutyIpc
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (_configuration.Duties.WhitelistedDutyCfcIds.Contains(cfcId.Value) &&
|
if (_configuration.Duties.WhitelistedDutyCfcIds.Contains(cfcId.Value) &&
|
||||||
_territoryData.TryGetTerritoryIdForContentFinderCondition(cfcId.Value, out _))
|
_territoryData.TryGetContentFinderCondition(cfcId.Value, out _))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return autoDutyEnabled && HasPath(cfcId.Value);
|
return autoDutyEnabled && HasPath(cfcId.Value);
|
||||||
@ -46,28 +46,28 @@ internal sealed class AutoDutyIpc
|
|||||||
|
|
||||||
public bool HasPath(uint cfcId)
|
public bool HasPath(uint cfcId)
|
||||||
{
|
{
|
||||||
if (!_territoryData.TryGetTerritoryIdForContentFinderCondition(cfcId, out uint territoryType))
|
if (!_territoryData.TryGetContentFinderCondition(cfcId, out var cfcData))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return _contentHasPath.InvokeFunc(territoryType);
|
return _contentHasPath.InvokeFunc(cfcData.TerritoryId);
|
||||||
}
|
}
|
||||||
catch (IpcError e)
|
catch (IpcError e)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Unable to query AutoDuty for path in territory {TerritoryType}: {Message}", territoryType, e.Message);
|
_logger.LogWarning("Unable to query AutoDuty for path in territory {TerritoryType}: {Message}", cfcData.TerritoryId, e.Message);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartInstance(uint cfcId)
|
public void StartInstance(uint cfcId)
|
||||||
{
|
{
|
||||||
if (!_territoryData.TryGetTerritoryIdForContentFinderCondition(cfcId, out uint territoryType))
|
if (!_territoryData.TryGetContentFinderCondition(cfcId, out var cfcData))
|
||||||
throw new TaskException($"Unknown ContentFinderConditionId {cfcId}");
|
throw new TaskException($"Unknown ContentFinderConditionId {cfcId}");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_run.InvokeAction(territoryType, 0, true);
|
_run.InvokeAction(cfcData.TerritoryId, 0, true);
|
||||||
}
|
}
|
||||||
catch (IpcError e)
|
catch (IpcError e)
|
||||||
{
|
{
|
||||||
|
@ -206,10 +206,12 @@ internal sealed unsafe class GameFunctions
|
|||||||
|
|
||||||
public bool UseAction(EAction action)
|
public bool UseAction(EAction action)
|
||||||
{
|
{
|
||||||
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0)
|
uint actionId = ActionManager.Instance()->GetAdjustedActionId((uint)action);
|
||||||
|
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, actionId) == 0)
|
||||||
{
|
{
|
||||||
bool result = ActionManager.Instance()->UseAction(ActionType.Action, (uint)action);
|
bool result = ActionManager.Instance()->UseAction(ActionType.Action, actionId);
|
||||||
_logger.LogInformation("UseAction {Action} result: {Result}", action, result);
|
_logger.LogInformation("UseAction {Action} (adjusted: {AdjustedActionId}) result: {Result}", action,
|
||||||
|
actionId, result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -219,31 +221,34 @@ internal sealed unsafe class GameFunctions
|
|||||||
|
|
||||||
public bool UseAction(IGameObject gameObject, EAction action, bool checkCanUse = true)
|
public bool UseAction(IGameObject gameObject, EAction action, bool checkCanUse = true)
|
||||||
{
|
{
|
||||||
var actionRow = _dataManager.GetExcelSheet<Action>().GetRow((uint)action);
|
uint actionId = ActionManager.Instance()->GetAdjustedActionId((uint)action);
|
||||||
if (checkCanUse && !ActionManager.CanUseActionOnTarget((uint)action, (GameObject*)gameObject.Address))
|
var actionRow = _dataManager.GetExcelSheet<Action>().GetRow(actionId);
|
||||||
|
if (checkCanUse && !ActionManager.CanUseActionOnTarget(actionId, (GameObject*)gameObject.Address))
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Can not use action {Action} on target {Target}", action, gameObject);
|
_logger.LogWarning("Can not use action {Action} (adjusted: {AdjustedActionId}) on target {Target}", action,
|
||||||
|
actionId, gameObject);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
_targetManager.Target = gameObject;
|
_targetManager.Target = gameObject;
|
||||||
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action, gameObject.GameObjectId) == 0)
|
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, actionId, gameObject.GameObjectId) == 0)
|
||||||
{
|
{
|
||||||
bool result;
|
bool result;
|
||||||
if (actionRow.TargetArea)
|
if (actionRow.TargetArea)
|
||||||
{
|
{
|
||||||
Vector3 position = gameObject.Position;
|
Vector3 position = gameObject.Position;
|
||||||
result = ActionManager.Instance()->UseActionLocation(ActionType.Action, (uint)action,
|
result = ActionManager.Instance()->UseActionLocation(ActionType.Action, actionId,
|
||||||
location: &position);
|
location: &position);
|
||||||
_logger.LogInformation("UseAction {Action} on target area {Target} result: {Result}", action,
|
_logger.LogInformation(
|
||||||
gameObject,
|
"UseAction {Action} (adjusted: {AdjustedActionId}) on target area {Target} result: {Result}",
|
||||||
result);
|
action, actionId, gameObject, result);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = ActionManager.Instance()->UseAction(ActionType.Action, (uint)action, gameObject.GameObjectId);
|
result = ActionManager.Instance()->UseAction(ActionType.Action, actionId, gameObject.GameObjectId);
|
||||||
_logger.LogInformation("UseAction {Action} on target {Target} result: {Result}", action, gameObject,
|
_logger.LogInformation(
|
||||||
result);
|
"UseAction {Action} (adjusted: {AdjustedActionId}) on target {Target} result: {Result}", action,
|
||||||
|
actionId, gameObject, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -452,7 +457,8 @@ internal sealed unsafe class GameFunctions
|
|||||||
|
|
||||||
public bool IsLoadingScreenVisible()
|
public bool IsLoadingScreenVisible()
|
||||||
{
|
{
|
||||||
if (_gameGui.TryGetAddonByName("FadeMiddle", out AtkUnitBase* fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
|
if (_gameGui.TryGetAddonByName("FadeMiddle", out AtkUnitBase* fade) && LAddon.IsAddonReady(fade) &&
|
||||||
|
fade->IsVisible)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (_gameGui.TryGetAddonByName("FadeBack", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
|
if (_gameGui.TryGetAddonByName("FadeBack", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
|
||||||
|
@ -450,15 +450,20 @@ internal sealed unsafe class QuestFunctions
|
|||||||
if (IsQuestAccepted(questId))
|
if (IsQuestAccepted(questId))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (quest.Info.AlliedSociety != EAlliedSociety.None)
|
if (questId is QuestId qId && IsDailyAlliedSocietyQuest(qId))
|
||||||
{
|
{
|
||||||
if (QuestManager.Instance()->IsDailyQuestCompleted(questId.Value))
|
if (QuestManager.Instance()->IsDailyQuestCompleted(questId.Value))
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
|
if (!IsDailyAlliedSocietyQuestAndAvailableToday(qId))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (IsQuestComplete(questId))
|
if (IsQuestComplete(questId))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (IsQuestAcceptedOrComplete(questId))
|
if (IsQuestAcceptedOrComplete(questId))
|
||||||
|
99
Questionable/Model/ItemReward.cs
Normal file
99
Questionable/Model/ItemReward.cs
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using Dalamud.Utility;
|
||||||
|
using FFXIVClientStructs.FFXIV.Client.Game.UI;
|
||||||
|
using Lumina.Excel.Sheets;
|
||||||
|
using Questionable.Model.Questing;
|
||||||
|
|
||||||
|
namespace Questionable.Model;
|
||||||
|
|
||||||
|
public enum EItemRewardType
|
||||||
|
{
|
||||||
|
Mount,
|
||||||
|
Minion,
|
||||||
|
OrchestrionRoll,
|
||||||
|
TripleTriadCard,
|
||||||
|
FashionAccessory,
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed class ItemRewardDetails(Item item, ElementId elementId)
|
||||||
|
{
|
||||||
|
public uint ItemId { get; } = item.RowId;
|
||||||
|
public string Name { get; } = item.Name.ToDalamudString().ToString();
|
||||||
|
public TimeSpan CastTime { get; } = TimeSpan.FromSeconds(item.CastTimeSeconds);
|
||||||
|
public ElementId ElementId { get; } = elementId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract record ItemReward(ItemRewardDetails Item)
|
||||||
|
{
|
||||||
|
internal static ItemReward? CreateFromItem(Item item, ElementId elementId)
|
||||||
|
{
|
||||||
|
if (item.ItemAction.ValueNullable?.Type is 1322)
|
||||||
|
return new MountReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]);
|
||||||
|
|
||||||
|
if (item.ItemAction.ValueNullable?.Type is 853)
|
||||||
|
return new MinionReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]);
|
||||||
|
|
||||||
|
if (item.AdditionalData.GetValueOrDefault<Orchestrion>() is { } orchestrionRoll)
|
||||||
|
return new OrchestrionRollReward(new ItemRewardDetails(item, elementId), orchestrionRoll.RowId);
|
||||||
|
|
||||||
|
if (item.AdditionalData.GetValueOrDefault<TripleTriadCard>() is { } tripleTriadCard)
|
||||||
|
return new TripleTriadCardReward(new ItemRewardDetails(item, elementId), (ushort)tripleTriadCard.RowId);
|
||||||
|
|
||||||
|
if (item.ItemAction.ValueNullable?.Type is 20086)
|
||||||
|
return new FashionAccessoryReward(new ItemRewardDetails(item, elementId), item.ItemAction.Value.Data[0]);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint ItemId => Item.ItemId;
|
||||||
|
public string Name => Item.Name;
|
||||||
|
public ElementId ElementId => Item.ElementId;
|
||||||
|
public TimeSpan CastTime => Item.CastTime;
|
||||||
|
public abstract EItemRewardType Type { get; }
|
||||||
|
public abstract bool IsUnlocked();
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record MountReward(ItemRewardDetails Item, uint MountId)
|
||||||
|
: ItemReward(Item)
|
||||||
|
{
|
||||||
|
public override EItemRewardType Type => EItemRewardType.Mount;
|
||||||
|
|
||||||
|
public override unsafe bool IsUnlocked()
|
||||||
|
=> PlayerState.Instance()->IsMountUnlocked(MountId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record MinionReward(ItemRewardDetails Item, uint MinionId)
|
||||||
|
: ItemReward(Item)
|
||||||
|
{
|
||||||
|
public override EItemRewardType Type => EItemRewardType.Minion;
|
||||||
|
|
||||||
|
public override unsafe bool IsUnlocked()
|
||||||
|
=> UIState.Instance()->IsCompanionUnlocked(MinionId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record OrchestrionRollReward(ItemRewardDetails Item, uint OrchestrionRollId)
|
||||||
|
: ItemReward(Item)
|
||||||
|
{
|
||||||
|
public override EItemRewardType Type => EItemRewardType.OrchestrionRoll;
|
||||||
|
|
||||||
|
public override unsafe bool IsUnlocked() =>
|
||||||
|
PlayerState.Instance()->IsOrchestrionRollUnlocked(OrchestrionRollId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record TripleTriadCardReward(ItemRewardDetails Item, ushort TripleTriadCardId)
|
||||||
|
: ItemReward(Item)
|
||||||
|
{
|
||||||
|
public override EItemRewardType Type => EItemRewardType.TripleTriadCard;
|
||||||
|
|
||||||
|
public override unsafe bool IsUnlocked() =>
|
||||||
|
UIState.Instance()->IsTripleTriadCardUnlocked(TripleTriadCardId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public sealed record FashionAccessoryReward(ItemRewardDetails Item, uint AccessoryId)
|
||||||
|
: ItemReward(Item)
|
||||||
|
{
|
||||||
|
public override EItemRewardType Type => EItemRewardType.FashionAccessory;
|
||||||
|
|
||||||
|
public override unsafe bool IsUnlocked() =>
|
||||||
|
PlayerState.Instance()->IsOrnamentUnlocked(AccessoryId);
|
||||||
|
}
|
@ -2,10 +2,11 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Immutable;
|
using System.Collections.Immutable;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
|
|
||||||
using LLib.GameData;
|
using LLib.GameData;
|
||||||
|
using Lumina.Excel.Sheets;
|
||||||
using Questionable.Model.Questing;
|
using Questionable.Model.Questing;
|
||||||
using ExcelQuest = Lumina.Excel.Sheets.Quest;
|
using ExcelQuest = Lumina.Excel.Sheets.Quest;
|
||||||
|
using GrandCompany = FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany;
|
||||||
|
|
||||||
namespace Questionable.Model;
|
namespace Questionable.Model;
|
||||||
|
|
||||||
@ -54,7 +55,8 @@ internal sealed class QuestInfo : IQuestInfo
|
|||||||
QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
|
QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
|
||||||
JournalGenre = quest.JournalGenre.ValueNullable?.RowId;
|
JournalGenre = quest.JournalGenre.ValueNullable?.RowId;
|
||||||
SortKey = quest.SortKey;
|
SortKey = quest.SortKey;
|
||||||
IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.JournalCategory.ValueNullable?.JournalSection.ValueNullable?.RowId is 0 or 1;
|
IsMainScenarioQuest = quest.JournalGenre.ValueNullable?.JournalCategory.ValueNullable?.JournalSection
|
||||||
|
.ValueNullable?.RowId is 0 or 1;
|
||||||
CompletesInstantly = quest.TodoParams[0].ToDoCompleteSeq == 0;
|
CompletesInstantly = quest.TodoParams[0].ToDoCompleteSeq == 0;
|
||||||
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.RowId).Where(x => x != 0).ToList();
|
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.RowId).Where(x => x != 0).ToList();
|
||||||
PreviousInstanceContentJoin = (EQuestJoin)quest.InstanceContentJoin;
|
PreviousInstanceContentJoin = (EQuestJoin)quest.InstanceContentJoin;
|
||||||
@ -67,6 +69,15 @@ internal sealed class QuestInfo : IQuestInfo
|
|||||||
NewGamePlusChapter = newGamePlusChapter;
|
NewGamePlusChapter = newGamePlusChapter;
|
||||||
StartingCity = startingCity;
|
StartingCity = startingCity;
|
||||||
MoogleDeliveryLevel = (byte)quest.DeliveryQuest.RowId;
|
MoogleDeliveryLevel = (byte)quest.DeliveryQuest.RowId;
|
||||||
|
ItemRewards = quest.Reward.Where(x => x.RowId > 0 && x.Is<Item>())
|
||||||
|
.Select(x => x.GetValueOrDefault<Item>())
|
||||||
|
.Where(x => x != null)
|
||||||
|
.Cast<Item>()
|
||||||
|
.Where(x => x.IsUntradable)
|
||||||
|
.Select(x => ItemReward.CreateFromItem(x, QuestId))
|
||||||
|
.Where(x => x != null)
|
||||||
|
.Cast<ItemReward>()
|
||||||
|
.ToList();
|
||||||
Expansion = (EExpansionVersion)quest.Expansion.RowId;
|
Expansion = (EExpansionVersion)quest.Expansion.RowId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,7 +90,6 @@ internal sealed class QuestInfo : IQuestInfo
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ElementId QuestId { get; }
|
public ElementId QuestId { get; }
|
||||||
public string Name { get; }
|
public string Name { get; }
|
||||||
public ushort Level { get; }
|
public ushort Level { get; }
|
||||||
@ -105,6 +115,7 @@ internal sealed class QuestInfo : IQuestInfo
|
|||||||
public byte StartingCity { get; set; }
|
public byte StartingCity { get; set; }
|
||||||
public byte MoogleDeliveryLevel { get; }
|
public byte MoogleDeliveryLevel { get; }
|
||||||
public bool IsMoogleDeliveryQuest => JournalGenre == 87;
|
public bool IsMoogleDeliveryQuest => JournalGenre == 87;
|
||||||
|
public IReadOnlyList<ItemReward> ItemRewards { get; }
|
||||||
public EExpansionVersion Expansion { get; }
|
public EExpansionVersion Expansion { get; }
|
||||||
|
|
||||||
public void AddPreviousQuest(PreviousQuestInfo questId)
|
public void AddPreviousQuest(PreviousQuestInfo questId)
|
||||||
|
@ -7,6 +7,7 @@ using Dalamud.Interface.Windowing;
|
|||||||
using Dalamud.Plugin;
|
using Dalamud.Plugin;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using LLib;
|
using LLib;
|
||||||
|
using LLib.Gear;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Questionable.Controller;
|
using Questionable.Controller;
|
||||||
@ -130,6 +131,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
serviceCollection.AddSingleton<NotificationMasterIpc>();
|
serviceCollection.AddSingleton<NotificationMasterIpc>();
|
||||||
serviceCollection.AddSingleton<AutomatonIpc>();
|
serviceCollection.AddSingleton<AutomatonIpc>();
|
||||||
serviceCollection.AddSingleton<AutoDutyIpc>();
|
serviceCollection.AddSingleton<AutoDutyIpc>();
|
||||||
|
|
||||||
|
serviceCollection.AddSingleton<GearStatsCalculator>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
||||||
@ -138,6 +141,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
serviceCollection.AddTaskFactory<QuestCleanUp.CheckAlliedSocietyMount>();
|
serviceCollection.AddTaskFactory<QuestCleanUp.CheckAlliedSocietyMount>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskExecutor<MoveToLandingLocation.Task, MoveToLandingLocation.MoveToLandingLocationExecutor>();
|
.AddTaskExecutor<MoveToLandingLocation.Task, MoveToLandingLocation.MoveToLandingLocationExecutor>();
|
||||||
|
serviceCollection
|
||||||
|
.AddTaskFactoryAndExecutor<RedeemRewardItems.Task, RedeemRewardItems.Factory, RedeemRewardItems.Executor>();
|
||||||
serviceCollection.AddTaskExecutor<DoGather.Task, DoGather.GatherExecutor>();
|
serviceCollection.AddTaskExecutor<DoGather.Task, DoGather.GatherExecutor>();
|
||||||
serviceCollection.AddTaskExecutor<DoGatherCollectable.Task, DoGatherCollectable.GatherCollectableExecutor>();
|
serviceCollection.AddTaskExecutor<DoGatherCollectable.Task, DoGatherCollectable.GatherCollectableExecutor>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<SwitchClassJob.Task, SwitchClassJob.Factory,
|
serviceCollection.AddTaskFactoryAndExecutor<SwitchClassJob.Task, SwitchClassJob.Factory,
|
||||||
@ -155,7 +160,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
||||||
AetheryteShortcut.UseAetheryteShortcut>();
|
AetheryteShortcut.UseAetheryteShortcut>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte,
|
||||||
|
AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||||
serviceCollection
|
serviceCollection
|
||||||
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||||
@ -179,7 +185,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
.AddTaskFactoryAndExecutor<AethernetShard.Attune, AethernetShard.Factory, AethernetShard.DoAttune>();
|
.AddTaskFactoryAndExecutor<AethernetShard.Attune, AethernetShard.Factory, AethernetShard.DoAttune>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<Aetheryte.Attune, Aetheryte.Factory, Aetheryte.DoAttune>();
|
serviceCollection.AddTaskFactoryAndExecutor<Aetheryte.Attune, Aetheryte.Factory, Aetheryte.DoAttune>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<Combat.Task, Combat.Factory, Combat.HandleCombat>();
|
serviceCollection.AddTaskFactoryAndExecutor<Combat.Task, Combat.Factory, Combat.HandleCombat>();
|
||||||
serviceCollection.AddTaskFactoryAndExecutor<Duty.OpenDutyFinderTask, Duty.Factory, Duty.OpenDutyFinderExecutor>();
|
serviceCollection
|
||||||
|
.AddTaskFactoryAndExecutor<Duty.OpenDutyFinderTask, Duty.Factory, Duty.OpenDutyFinderExecutor>();
|
||||||
serviceCollection.AddTaskExecutor<Duty.StartAutoDutyTask, Duty.StartAutoDutyExecutor>();
|
serviceCollection.AddTaskExecutor<Duty.StartAutoDutyTask, Duty.StartAutoDutyExecutor>();
|
||||||
serviceCollection.AddTaskExecutor<Duty.WaitAutoDutyTask, Duty.WaitAutoDutyExecutor>();
|
serviceCollection.AddTaskExecutor<Duty.WaitAutoDutyTask, Duty.WaitAutoDutyExecutor>();
|
||||||
serviceCollection.AddTaskFactory<Emote.Factory>();
|
serviceCollection.AddTaskFactory<Emote.Factory>();
|
||||||
@ -269,6 +276,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
|||||||
|
|
||||||
serviceCollection.AddSingleton<QuestJournalUtils>();
|
serviceCollection.AddSingleton<QuestJournalUtils>();
|
||||||
serviceCollection.AddSingleton<QuestJournalComponent>();
|
serviceCollection.AddSingleton<QuestJournalComponent>();
|
||||||
|
serviceCollection.AddSingleton<QuestRewardComponent>();
|
||||||
serviceCollection.AddSingleton<GatheringJournalComponent>();
|
serviceCollection.AddSingleton<GatheringJournalComponent>();
|
||||||
serviceCollection.AddSingleton<AlliedSocietyJournalComponent>();
|
serviceCollection.AddSingleton<AlliedSocietyJournalComponent>();
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ internal sealed class ConfigWindow : LWindow, IPersistableWindowConfig
|
|||||||
{
|
{
|
||||||
Expansion = (EExpansionVersion)x.TerritoryType.Value.ExVersion.RowId,
|
Expansion = (EExpansionVersion)x.TerritoryType.Value.ExVersion.RowId,
|
||||||
CfcId = x.RowId,
|
CfcId = x.RowId,
|
||||||
Name = territoryData.GetContentFinderConditionName(x.RowId) ?? "?",
|
Name = territoryData.GetContentFinderCondition(x.RowId)?.Name ?? "?",
|
||||||
TerritoryId = x.TerritoryType.RowId,
|
TerritoryId = x.TerritoryType.RowId,
|
||||||
ContentType = x.ContentType.RowId,
|
ContentType = x.ContentType.RowId,
|
||||||
Level = x.ClassJobLevelRequired,
|
Level = x.ClassJobLevelRequired,
|
||||||
|
@ -17,7 +17,9 @@ internal sealed class AlliedSocietyJournalComponent
|
|||||||
private static readonly string[] RankNames =
|
private static readonly string[] RankNames =
|
||||||
["Neutral", "Recognized", "Friendly", "Trusted", "Respected", "Honored", "Sworn", "Allied"];
|
["Neutral", "Recognized", "Friendly", "Trusted", "Respected", "Honored", "Sworn", "Allied"];
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
private readonly QuestFunctions _questFunctions;
|
private readonly QuestFunctions _questFunctions;
|
||||||
|
#endif
|
||||||
private readonly AlliedSocietyQuestFunctions _alliedSocietyQuestFunctions;
|
private readonly AlliedSocietyQuestFunctions _alliedSocietyQuestFunctions;
|
||||||
private readonly QuestData _questData;
|
private readonly QuestData _questData;
|
||||||
private readonly QuestRegistry _questRegistry;
|
private readonly QuestRegistry _questRegistry;
|
||||||
@ -26,7 +28,9 @@ internal sealed class AlliedSocietyJournalComponent
|
|||||||
private readonly UiUtils _uiUtils;
|
private readonly UiUtils _uiUtils;
|
||||||
|
|
||||||
public AlliedSocietyJournalComponent(
|
public AlliedSocietyJournalComponent(
|
||||||
|
#if DEBUG
|
||||||
QuestFunctions questFunctions,
|
QuestFunctions questFunctions,
|
||||||
|
#endif
|
||||||
AlliedSocietyQuestFunctions alliedSocietyQuestFunctions,
|
AlliedSocietyQuestFunctions alliedSocietyQuestFunctions,
|
||||||
QuestData questData,
|
QuestData questData,
|
||||||
QuestRegistry questRegistry,
|
QuestRegistry questRegistry,
|
||||||
@ -34,7 +38,9 @@ internal sealed class AlliedSocietyJournalComponent
|
|||||||
QuestTooltipComponent questTooltipComponent,
|
QuestTooltipComponent questTooltipComponent,
|
||||||
UiUtils uiUtils)
|
UiUtils uiUtils)
|
||||||
{
|
{
|
||||||
|
#if DEBUG
|
||||||
_questFunctions = questFunctions;
|
_questFunctions = questFunctions;
|
||||||
|
#endif
|
||||||
_alliedSocietyQuestFunctions = alliedSocietyQuestFunctions;
|
_alliedSocietyQuestFunctions = alliedSocietyQuestFunctions;
|
||||||
_questData = questData;
|
_questData = questData;
|
||||||
_questRegistry = questRegistry;
|
_questRegistry = questRegistry;
|
||||||
|
@ -0,0 +1,93 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using Dalamud.Game.Text;
|
||||||
|
using Dalamud.Interface;
|
||||||
|
using Dalamud.Interface.Colors;
|
||||||
|
using Dalamud.Interface.Utility.Raii;
|
||||||
|
using ImGuiNET;
|
||||||
|
using Questionable.Controller;
|
||||||
|
using Questionable.Data;
|
||||||
|
using Questionable.Model;
|
||||||
|
using Questionable.Windows.QuestComponents;
|
||||||
|
|
||||||
|
namespace Questionable.Windows.JournalComponents;
|
||||||
|
|
||||||
|
internal sealed class QuestRewardComponent
|
||||||
|
{
|
||||||
|
private readonly QuestRegistry _questRegistry;
|
||||||
|
private readonly QuestData _questData;
|
||||||
|
private readonly QuestTooltipComponent _questTooltipComponent;
|
||||||
|
private readonly UiUtils _uiUtils;
|
||||||
|
|
||||||
|
private bool _showEventRewards;
|
||||||
|
|
||||||
|
public QuestRewardComponent(
|
||||||
|
QuestRegistry questRegistry,
|
||||||
|
QuestData questData,
|
||||||
|
QuestTooltipComponent questTooltipComponent,
|
||||||
|
UiUtils uiUtils)
|
||||||
|
{
|
||||||
|
_questRegistry = questRegistry;
|
||||||
|
_questData = questData;
|
||||||
|
_questTooltipComponent = questTooltipComponent;
|
||||||
|
_uiUtils = uiUtils;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawItemRewards()
|
||||||
|
{
|
||||||
|
using var tab = ImRaii.TabItem("Item Rewards");
|
||||||
|
if (!tab)
|
||||||
|
return;
|
||||||
|
|
||||||
|
ImGui.Checkbox("Show rewards from seasonal event quests", ref _showEventRewards);
|
||||||
|
ImGui.Spacing();
|
||||||
|
|
||||||
|
ImGui.BulletText(
|
||||||
|
"Only untradeable items are listed (e.g. the Wind-up Airship can be sold on the market board).");
|
||||||
|
|
||||||
|
DrawGroup("Mounts", EItemRewardType.Mount);
|
||||||
|
DrawGroup("Minions", EItemRewardType.Minion);
|
||||||
|
DrawGroup("Orchestrion Rolls", EItemRewardType.OrchestrionRoll);
|
||||||
|
DrawGroup("Triple Triad Cards", EItemRewardType.TripleTriadCard);
|
||||||
|
DrawGroup("Fashion Accessories", EItemRewardType.FashionAccessory);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawGroup(string label, EItemRewardType type)
|
||||||
|
{
|
||||||
|
if (!ImGui.CollapsingHeader($"{label}###Reward{type}"))
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach (var item in _questData.RedeemableItems.Where(x => x.Type == type)
|
||||||
|
.OrderBy(x => x.Name, StringComparer.CurrentCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
if (_questData.TryGetQuestInfo(item.ElementId, out var questInfo))
|
||||||
|
{
|
||||||
|
bool isEventQuest = questInfo is QuestInfo { IsSeasonalEvent: true };
|
||||||
|
if (!_showEventRewards && isEventQuest)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
string name = item.Name;
|
||||||
|
if (isEventQuest)
|
||||||
|
name += $" {SeIconChar.Clock.ToIconString()}";
|
||||||
|
|
||||||
|
bool complete = item.IsUnlocked();
|
||||||
|
var color = !_questRegistry.IsKnownQuest(item.ElementId)
|
||||||
|
? ImGuiColors.DalamudGrey
|
||||||
|
: complete
|
||||||
|
? ImGuiColors.ParsedGreen
|
||||||
|
: ImGuiColors.DalamudRed;
|
||||||
|
var icon = complete ? FontAwesomeIcon.Check : FontAwesomeIcon.Times;
|
||||||
|
if (_uiUtils.ChecklistItem(name, color, icon))
|
||||||
|
{
|
||||||
|
using var tooltip = ImRaii.Tooltip();
|
||||||
|
if (!tooltip)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
ImGui.Text($"Obtained from: {questInfo.Name}");
|
||||||
|
using (ImRaii.PushIndent())
|
||||||
|
_questTooltipComponent.DrawInner(questInfo, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -12,12 +12,14 @@ internal sealed class JournalProgressWindow : LWindow, IDisposable
|
|||||||
{
|
{
|
||||||
private readonly QuestJournalComponent _questJournalComponent;
|
private readonly QuestJournalComponent _questJournalComponent;
|
||||||
private readonly AlliedSocietyJournalComponent _alliedSocietyJournalComponent;
|
private readonly AlliedSocietyJournalComponent _alliedSocietyJournalComponent;
|
||||||
|
private readonly QuestRewardComponent _questRewardComponent;
|
||||||
private readonly GatheringJournalComponent _gatheringJournalComponent;
|
private readonly GatheringJournalComponent _gatheringJournalComponent;
|
||||||
private readonly QuestRegistry _questRegistry;
|
private readonly QuestRegistry _questRegistry;
|
||||||
private readonly IClientState _clientState;
|
private readonly IClientState _clientState;
|
||||||
|
|
||||||
public JournalProgressWindow(
|
public JournalProgressWindow(
|
||||||
QuestJournalComponent questJournalComponent,
|
QuestJournalComponent questJournalComponent,
|
||||||
|
QuestRewardComponent questRewardComponent,
|
||||||
AlliedSocietyJournalComponent alliedSocietyJournalComponent,
|
AlliedSocietyJournalComponent alliedSocietyJournalComponent,
|
||||||
GatheringJournalComponent gatheringJournalComponent,
|
GatheringJournalComponent gatheringJournalComponent,
|
||||||
QuestRegistry questRegistry,
|
QuestRegistry questRegistry,
|
||||||
@ -26,6 +28,7 @@ internal sealed class JournalProgressWindow : LWindow, IDisposable
|
|||||||
{
|
{
|
||||||
_questJournalComponent = questJournalComponent;
|
_questJournalComponent = questJournalComponent;
|
||||||
_alliedSocietyJournalComponent = alliedSocietyJournalComponent;
|
_alliedSocietyJournalComponent = alliedSocietyJournalComponent;
|
||||||
|
_questRewardComponent = questRewardComponent;
|
||||||
_gatheringJournalComponent = gatheringJournalComponent;
|
_gatheringJournalComponent = gatheringJournalComponent;
|
||||||
_questRegistry = questRegistry;
|
_questRegistry = questRegistry;
|
||||||
_clientState = clientState;
|
_clientState = clientState;
|
||||||
@ -64,6 +67,7 @@ internal sealed class JournalProgressWindow : LWindow, IDisposable
|
|||||||
|
|
||||||
_questJournalComponent.DrawQuests();
|
_questJournalComponent.DrawQuests();
|
||||||
_alliedSocietyJournalComponent.DrawAlliedSocietyQuests();
|
_alliedSocietyJournalComponent.DrawAlliedSocietyQuests();
|
||||||
|
_questRewardComponent.DrawItemRewards();
|
||||||
_gatheringJournalComponent.DrawGatheringItems();
|
_gatheringJournalComponent.DrawGatheringItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ internal sealed class EventInfoComponent
|
|||||||
[SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")]
|
[SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")]
|
||||||
private readonly List<EventQuest> _eventQuests =
|
private readonly List<EventQuest> _eventQuests =
|
||||||
[
|
[
|
||||||
new("Starlight Celebration", [new(5227), new(5228)], AtDailyReset(new(2024, 12, 31))),
|
new("Heavensturn", [new(5186)], AtDailyReset(new(2025, 1, 16))),
|
||||||
];
|
];
|
||||||
|
|
||||||
private readonly QuestData _questData;
|
private readonly QuestData _questData;
|
||||||
|
@ -40,12 +40,23 @@ internal sealed class QuestTooltipComponent
|
|||||||
{
|
{
|
||||||
using var tooltip = ImRaii.Tooltip();
|
using var tooltip = ImRaii.Tooltip();
|
||||||
if (tooltip)
|
if (tooltip)
|
||||||
|
DrawInner(questInfo, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DrawInner(IQuestInfo questInfo, bool showItemRewards)
|
||||||
{
|
{
|
||||||
ImGui.Text($"{SeIconChar.LevelEn.ToIconString()}{questInfo.Level}");
|
ImGui.Text($"{SeIconChar.LevelEn.ToIconString()}{questInfo.Level}");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
|
|
||||||
var (color, _, tooltipText) = _uiUtils.GetQuestStyle(questInfo.QuestId);
|
var (color, _, tooltipText) = _uiUtils.GetQuestStyle(questInfo.QuestId);
|
||||||
ImGui.TextColored(color, tooltipText);
|
ImGui.TextColored(color, tooltipText);
|
||||||
|
|
||||||
|
if (questInfo is QuestInfo { IsSeasonalEvent: true })
|
||||||
|
{
|
||||||
|
ImGui.SameLine();
|
||||||
|
ImGui.TextUnformatted("Event");
|
||||||
|
}
|
||||||
|
|
||||||
if (questInfo.IsRepeatable)
|
if (questInfo.IsRepeatable)
|
||||||
{
|
{
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
@ -77,11 +88,10 @@ internal sealed class QuestTooltipComponent
|
|||||||
ImGui.TextColored(ImGuiColors.DalamudRed, "NoQuestPath");
|
ImGui.TextColored(ImGuiColors.DalamudRed, "NoQuestPath");
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawQuestUnlocks(questInfo, 0);
|
DrawQuestUnlocks(questInfo, 0, showItemRewards);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawQuestUnlocks(IQuestInfo questInfo, int counter)
|
private void DrawQuestUnlocks(IQuestInfo questInfo, int counter, bool showItemRewards)
|
||||||
{
|
{
|
||||||
if (counter >= 10)
|
if (counter >= 10)
|
||||||
return;
|
return;
|
||||||
@ -118,12 +128,13 @@ internal sealed class QuestTooltipComponent
|
|||||||
_questFunctions.IsQuestComplete(q.QuestId) ? byte.MinValue : q.Sequence), iconColor, icon);
|
_questFunctions.IsQuestComplete(q.QuestId) ? byte.MinValue : q.Sequence), iconColor, icon);
|
||||||
|
|
||||||
if (qInfo is QuestInfo qstInfo && (counter <= 2 || icon != FontAwesomeIcon.Check))
|
if (qInfo is QuestInfo qstInfo && (counter <= 2 || icon != FontAwesomeIcon.Check))
|
||||||
DrawQuestUnlocks(qstInfo, counter + 1);
|
DrawQuestUnlocks(qstInfo, counter + 1, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
using var _ = ImRaii.Disabled();
|
using var _ = ImRaii.Disabled();
|
||||||
_uiUtils.ChecklistItem($"Unknown Quest ({q.QuestId})", ImGuiColors.DalamudGrey, FontAwesomeIcon.Question);
|
_uiUtils.ChecklistItem($"Unknown Quest ({q.QuestId})", ImGuiColors.DalamudGrey,
|
||||||
|
FontAwesomeIcon.Question);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -193,6 +204,16 @@ internal sealed class QuestTooltipComponent
|
|||||||
GrandCompany currentGrandCompany = _questFunctions.GetGrandCompany();
|
GrandCompany currentGrandCompany = _questFunctions.GetGrandCompany();
|
||||||
_uiUtils.ChecklistItem($"Grand Company: {gcName}", actualQuestInfo.GrandCompany == currentGrandCompany);
|
_uiUtils.ChecklistItem($"Grand Company: {gcName}", actualQuestInfo.GrandCompany == currentGrandCompany);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (showItemRewards && actualQuestInfo.ItemRewards.Count > 0)
|
||||||
|
{
|
||||||
|
ImGui.Separator();
|
||||||
|
ImGui.Text("Item Rewards:");
|
||||||
|
foreach (var reward in actualQuestInfo.ItemRewards)
|
||||||
|
{
|
||||||
|
ImGui.BulletText(reward.Name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (counter > 0)
|
if (counter > 0)
|
||||||
|
@ -104,6 +104,7 @@ internal sealed class QuestWindow : LWindow, IPersistableWindowConfig
|
|||||||
|
|
||||||
_activeQuestComponent.Reload += OnReload;
|
_activeQuestComponent.Reload += OnReload;
|
||||||
_quickAccessButtonsComponent.Reload += OnReload;
|
_quickAccessButtonsComponent.Reload += OnReload;
|
||||||
|
_questController.IsQuestWindowOpen = () => IsOpen;
|
||||||
}
|
}
|
||||||
|
|
||||||
public WindowConfig WindowConfig => _configuration.DebugWindowConfig;
|
public WindowConfig WindowConfig => _configuration.DebugWindowConfig;
|
||||||
|
Loading…
Reference in New Issue
Block a user