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>
|
||||
<PropertyGroup>
|
||||
<Version>4.11</Version>
|
||||
<Version>4.13</Version>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
2
LLib
2
LLib
@ -1 +1 @@
|
||||
Subproject commit 783fea977a2524dd63e717367fc026c52efe6c23
|
||||
Subproject commit b1059871154b84401020c0072fd089fcc022fb77
|
@ -28,7 +28,15 @@
|
||||
"Z": 436.94202
|
||||
},
|
||||
"TerritoryId": 146,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
16
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1006600,
|
||||
@ -38,7 +46,15 @@
|
||||
"Z": 423.14795
|
||||
},
|
||||
"TerritoryId": 146,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1006599,
|
||||
@ -48,7 +64,15 @@
|
||||
"Z": 373.37292
|
||||
},
|
||||
"TerritoryId": 146,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 1006601,
|
||||
@ -58,7 +82,15 @@
|
||||
"Z": 354.63477
|
||||
},
|
||||
"TerritoryId": 146,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -78,4 +110,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,8 @@
|
||||
"Z": 972.5642
|
||||
},
|
||||
"TerritoryId": 146,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -166,4 +167,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -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",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
@ -30,21 +148,7 @@
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"AetheryteShortcut": "The Churning Mists - Zenith",
|
||||
"Fly": true,
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"NearPosition": {
|
||||
"Position": {
|
||||
"X": -335.56116,
|
||||
"Y": 59.003433,
|
||||
"Z": 313.98486
|
||||
},
|
||||
"TerritoryId": 400,
|
||||
"MaximumDistance": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"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,
|
||||
"Steps": [
|
||||
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
|
||||
"Author": "liza",
|
||||
"Disabled": true,
|
||||
"QuestSequence": [
|
||||
{
|
||||
"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,
|
||||
"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
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -27,12 +28,16 @@
|
||||
"Y": -99.931335,
|
||||
"Z": 644.4646
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null, null,
|
||||
null, null,
|
||||
null, 128
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
128
|
||||
],
|
||||
"Fly": true
|
||||
},
|
||||
@ -43,13 +48,18 @@
|
||||
"Y": -94.10242,
|
||||
"Z": 597.9553
|
||||
},
|
||||
"StopDistance": 0.5,
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Interact",
|
||||
"CompletionQuestVariablesFlags": [
|
||||
null, null,
|
||||
null, null,
|
||||
null, 64
|
||||
]
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
64
|
||||
],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -65,9 +75,10 @@
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Fly": true
|
||||
"Fly": true,
|
||||
"NextQuestId": 1793
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,8 @@
|
||||
"Z": -135.91211
|
||||
},
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -55,8 +56,8 @@
|
||||
null,
|
||||
null,
|
||||
32
|
||||
]
|
||||
|
||||
],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2005633,
|
||||
@ -74,7 +75,8 @@
|
||||
null,
|
||||
null,
|
||||
128
|
||||
]
|
||||
],
|
||||
"Fly": true
|
||||
},
|
||||
{
|
||||
"DataId": 2005634,
|
||||
@ -92,7 +94,8 @@
|
||||
null,
|
||||
null,
|
||||
64
|
||||
]
|
||||
],
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},{
|
||||
@ -112,4 +115,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,8 @@
|
||||
"Z": -186.4195
|
||||
},
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "AcceptQuest"
|
||||
"InteractionType": "AcceptQuest",
|
||||
"Fly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -59,4 +60,4 @@
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -61,8 +61,7 @@
|
||||
{
|
||||
"TerritoryId": 399,
|
||||
"InteractionType": "Duty",
|
||||
"AutoDutyEnabled": true,
|
||||
"ContentFinderConditionId": 62
|
||||
"ContentFinderConditionId": 584
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -82,4 +81,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -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,
|
||||
"Position": {
|
||||
@ -119,7 +102,13 @@
|
||||
"Z": -527.36707
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "Interact"
|
||||
"InteractionType": "Interact",
|
||||
"AetheryteShortcut": "Kozama'uka - Dock Poga",
|
||||
"SkipConditions": {
|
||||
"AetheryteShortcutIf": {
|
||||
"AetheryteLocked": "Kozama'uka - Dock Poga"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -84,6 +84,17 @@
|
||||
"DisableNavmesh": true,
|
||||
"Mount": true
|
||||
},
|
||||
{
|
||||
"DataId": 2013938,
|
||||
"Position": {
|
||||
"X": 516.80774,
|
||||
"Y": 17.959839,
|
||||
"Z": -348.0431
|
||||
},
|
||||
"TerritoryId": 1188,
|
||||
"InteractionType": "AttuneAetherCurrent",
|
||||
"AetherCurrentId": 2818425
|
||||
},
|
||||
{
|
||||
"DataId": 2013632,
|
||||
"Position": {
|
||||
|
@ -88,6 +88,15 @@
|
||||
"InteractionType": "AttuneAethernetShard",
|
||||
"AethernetShard": "[Solution Nine] Nexus Arcade"
|
||||
},
|
||||
{
|
||||
"Position": {
|
||||
"X": -320.34818,
|
||||
"Y": 9.519508,
|
||||
"Z": -6.9244547
|
||||
},
|
||||
"TerritoryId": 1186,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"DataId": 1048065,
|
||||
"Position": {
|
||||
@ -97,7 +106,8 @@
|
||||
},
|
||||
"StopDistance": 0.25,
|
||||
"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,
|
||||
Raiton = 2267,
|
||||
RabbitMedium = 2272,
|
||||
SlugShot = 7412,
|
||||
SlugShot = 2868,
|
||||
BosomBrook = 37173,
|
||||
Souleater = 3632,
|
||||
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/=nightsoil/@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/=palaka_0027s/@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
|
||||
{
|
||||
private readonly ILogger<RotationSolverRebornModule> _logger;
|
||||
private readonly IClientState _clientState;
|
||||
private readonly Configuration _configuration;
|
||||
private readonly ICallGateSubscriber<string, object> _test;
|
||||
private readonly ICallGateSubscriber<StateCommandType, object> _changeOperationMode;
|
||||
|
||||
public RotationSolverRebornModule(ILogger<RotationSolverRebornModule> logger, MovementController movementController,
|
||||
IClientState clientState, IDalamudPluginInterface pluginInterface, Configuration configuration)
|
||||
public RotationSolverRebornModule(
|
||||
ILogger<RotationSolverRebornModule> logger,
|
||||
IDalamudPluginInterface pluginInterface,
|
||||
Configuration configuration)
|
||||
{
|
||||
_logger = logger;
|
||||
_clientState = clientState;
|
||||
_configuration = configuration;
|
||||
_test = pluginInterface.GetIpcSubscriber<string, object>("RotationSolverReborn.Test");
|
||||
_changeOperationMode =
|
||||
|
@ -146,6 +146,8 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
|
||||
|
||||
public string? DebugState { get; private set; }
|
||||
|
||||
public Func<bool> IsQuestWindowOpen { private get; set; } = () => true;
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
lock (_progressLock)
|
||||
@ -181,6 +183,9 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
|
||||
}
|
||||
}
|
||||
|
||||
if (AutomationType == EAutomationType.Manual && !IsRunning && !IsQuestWindowOpen())
|
||||
return;
|
||||
|
||||
UpdateCurrentQuest();
|
||||
|
||||
if (!_clientState.IsLoggedIn || _condition[ConditionFlag.Unconscious])
|
||||
|
@ -24,7 +24,7 @@ internal static class SendNotification
|
||||
new Task(step.InteractionType, step.Comment),
|
||||
EInteractionType.Duty when !autoDutyIpc.IsConfiguredToRunContent(step.ContentFinderConditionId, step.AutoDutyEnabled) =>
|
||||
new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
|
||||
? territoryData.GetContentFinderConditionName(step.ContentFinderConditionId.Value)
|
||||
? territoryData.GetContentFinderCondition(step.ContentFinderConditionId.Value)?.Name
|
||||
: step.Comment),
|
||||
EInteractionType.SinglePlayerDuty => new Task(step.InteractionType, quest.Info.Name),
|
||||
_ => null,
|
||||
|
@ -2,6 +2,9 @@
|
||||
using System.Collections.Generic;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using LLib.Gear;
|
||||
using Questionable.Controller.Steps.Common;
|
||||
using Questionable.Controller.Steps.Shared;
|
||||
using Questionable.Data;
|
||||
using Questionable.External;
|
||||
@ -41,23 +44,54 @@ internal static class Duty
|
||||
}
|
||||
|
||||
internal sealed class StartAutoDutyExecutor(
|
||||
GearStatsCalculator gearStatsCalculator,
|
||||
AutoDutyIpc autoDutyIpc,
|
||||
TerritoryData territoryData,
|
||||
IClientState clientState) : TaskExecutor<StartAutoDutyTask>
|
||||
IClientState clientState,
|
||||
IChatGui chatGui,
|
||||
SendNotification.Executor sendNotificationExecutor) : TaskExecutor<StartAutoDutyTask>
|
||||
{
|
||||
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);
|
||||
return true;
|
||||
}
|
||||
|
||||
public override ETaskResult Update()
|
||||
{
|
||||
if (!territoryData.TryGetTerritoryIdForContentFinderCondition(Task.ContentFinderConditionId,
|
||||
out uint territoryId))
|
||||
if (!territoryData.TryGetContentFinderCondition(Task.ContentFinderConditionId,
|
||||
out var cfcData))
|
||||
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()
|
||||
{
|
||||
if (!territoryData.TryGetTerritoryIdForContentFinderCondition(Task.ContentFinderConditionId,
|
||||
out uint territoryId))
|
||||
if (!territoryData.TryGetContentFinderCondition(Task.ContentFinderConditionId,
|
||||
out var cfcData))
|
||||
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.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)
|
||||
{
|
||||
normalNpcs = [];
|
||||
mountNpcs = [1017322, 1017470];
|
||||
mountNpcs = [1017322, 1017470, 1017471];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using Dalamud.Plugin.Services;
|
||||
@ -218,8 +219,15 @@ internal sealed class QuestData
|
||||
quest.JournalGenre = 82;
|
||||
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)
|
||||
{
|
||||
QuestInfo quest = (QuestInfo)_quests[questToUpdate];
|
||||
|
@ -1,12 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Dalamud.Game;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Dalamud.Utility;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Character;
|
||||
using Lumina.Excel.Sheets;
|
||||
|
||||
namespace Questionable.Data;
|
||||
@ -17,8 +16,7 @@ internal sealed class TerritoryData
|
||||
private readonly ImmutableHashSet<ushort> _territoriesWithMount;
|
||||
private readonly ImmutableDictionary<ushort, uint> _dutyTerritories;
|
||||
private readonly ImmutableDictionary<uint, string> _instanceNames;
|
||||
private readonly ImmutableDictionary<uint, string> _contentFinderConditionNames;
|
||||
private readonly ImmutableDictionary<uint, uint> _contentFinderConditionIds;
|
||||
private readonly ImmutableDictionary<uint, ContentFinderConditionData> _contentFinderConditions;
|
||||
|
||||
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)
|
||||
.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)
|
||||
.ToImmutableDictionary(x => x.RowId, x => FixName(x.Name.ToDalamudString().ToString(), dataManager.Language));
|
||||
_contentFinderConditionIds = dataManager.GetExcelSheet<ContentFinderCondition>()
|
||||
.Where(x => x.RowId > 0 && x.Content.RowId != 0 && x.ContentLinkType == 1 && x.ContentType.RowId != 6)
|
||||
.ToImmutableDictionary(x => x.RowId, x => x.TerritoryType.RowId);
|
||||
.Select(x => new ContentFinderConditionData(x, dataManager.Language))
|
||||
.ToImmutableDictionary(x => x.ContentFinderConditionId, x => x);
|
||||
}
|
||||
|
||||
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? GetContentFinderConditionName(uint cfcId) => _contentFinderConditionNames.GetValueOrDefault(cfcId);
|
||||
public ContentFinderConditionData? GetContentFinderCondition(uint cfcId) =>
|
||||
_contentFinderConditions.GetValueOrDefault(cfcId);
|
||||
|
||||
public bool TryGetTerritoryIdForContentFinderCondition(uint cfcId, out uint territoryId) =>
|
||||
_contentFinderConditionIds.TryGetValue(cfcId, out territoryId);
|
||||
public bool TryGetContentFinderCondition(uint cfcId,
|
||||
[NotNullWhen(true)] out ContentFinderConditionData? contentFinderConditionData) =>
|
||||
_contentFinderConditions.TryGetValue(cfcId, out contentFinderConditionData);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
if (_configuration.Duties.WhitelistedDutyCfcIds.Contains(cfcId.Value) &&
|
||||
_territoryData.TryGetTerritoryIdForContentFinderCondition(cfcId.Value, out _))
|
||||
_territoryData.TryGetContentFinderCondition(cfcId.Value, out _))
|
||||
return true;
|
||||
|
||||
return autoDutyEnabled && HasPath(cfcId.Value);
|
||||
@ -46,28 +46,28 @@ internal sealed class AutoDutyIpc
|
||||
|
||||
public bool HasPath(uint cfcId)
|
||||
{
|
||||
if (!_territoryData.TryGetTerritoryIdForContentFinderCondition(cfcId, out uint territoryType))
|
||||
if (!_territoryData.TryGetContentFinderCondition(cfcId, out var cfcData))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
return _contentHasPath.InvokeFunc(territoryType);
|
||||
return _contentHasPath.InvokeFunc(cfcData.TerritoryId);
|
||||
}
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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}");
|
||||
|
||||
try
|
||||
{
|
||||
_run.InvokeAction(territoryType, 0, true);
|
||||
_run.InvokeAction(cfcData.TerritoryId, 0, true);
|
||||
}
|
||||
catch (IpcError e)
|
||||
{
|
||||
|
@ -206,10 +206,12 @@ internal sealed unsafe class GameFunctions
|
||||
|
||||
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);
|
||||
_logger.LogInformation("UseAction {Action} result: {Result}", action, result);
|
||||
bool result = ActionManager.Instance()->UseAction(ActionType.Action, actionId);
|
||||
_logger.LogInformation("UseAction {Action} (adjusted: {AdjustedActionId}) result: {Result}", action,
|
||||
actionId, result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -219,31 +221,34 @@ internal sealed unsafe class GameFunctions
|
||||
|
||||
public bool UseAction(IGameObject gameObject, EAction action, bool checkCanUse = true)
|
||||
{
|
||||
var actionRow = _dataManager.GetExcelSheet<Action>().GetRow((uint)action);
|
||||
if (checkCanUse && !ActionManager.CanUseActionOnTarget((uint)action, (GameObject*)gameObject.Address))
|
||||
uint actionId = ActionManager.Instance()->GetAdjustedActionId((uint)action);
|
||||
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;
|
||||
}
|
||||
|
||||
_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;
|
||||
if (actionRow.TargetArea)
|
||||
{
|
||||
Vector3 position = gameObject.Position;
|
||||
result = ActionManager.Instance()->UseActionLocation(ActionType.Action, (uint)action,
|
||||
result = ActionManager.Instance()->UseActionLocation(ActionType.Action, actionId,
|
||||
location: &position);
|
||||
_logger.LogInformation("UseAction {Action} on target area {Target} result: {Result}", action,
|
||||
gameObject,
|
||||
result);
|
||||
_logger.LogInformation(
|
||||
"UseAction {Action} (adjusted: {AdjustedActionId}) on target area {Target} result: {Result}",
|
||||
action, actionId, gameObject, result);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = ActionManager.Instance()->UseAction(ActionType.Action, (uint)action, gameObject.GameObjectId);
|
||||
_logger.LogInformation("UseAction {Action} on target {Target} result: {Result}", action, gameObject,
|
||||
result);
|
||||
result = ActionManager.Instance()->UseAction(ActionType.Action, actionId, gameObject.GameObjectId);
|
||||
_logger.LogInformation(
|
||||
"UseAction {Action} (adjusted: {AdjustedActionId}) on target {Target} result: {Result}", action,
|
||||
actionId, gameObject, result);
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -307,7 +312,7 @@ internal sealed unsafe class GameFunctions
|
||||
StatusManager* statusManager = battleChara->GetStatusManager();
|
||||
return statusManager->HasStatus((uint)statusId);
|
||||
}
|
||||
|
||||
|
||||
public static bool RemoveStatus(EStatus statusId)
|
||||
{
|
||||
return StatusManager.ExecuteStatusOff((uint)statusId);
|
||||
@ -452,7 +457,8 @@ internal sealed unsafe class GameFunctions
|
||||
|
||||
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;
|
||||
|
||||
if (_gameGui.TryGetAddonByName("FadeBack", out fade) && LAddon.IsAddonReady(fade) && fade->IsVisible)
|
||||
|
@ -450,14 +450,19 @@ internal sealed unsafe class QuestFunctions
|
||||
if (IsQuestAccepted(questId))
|
||||
return false;
|
||||
|
||||
if (quest.Info.AlliedSociety != EAlliedSociety.None)
|
||||
if (questId is QuestId qId && IsDailyAlliedSocietyQuest(qId))
|
||||
{
|
||||
if (QuestManager.Instance()->IsDailyQuestCompleted(questId.Value))
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsQuestComplete(questId))
|
||||
return false;
|
||||
if (!IsDailyAlliedSocietyQuestAndAvailableToday(qId))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (IsQuestComplete(questId))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
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.Immutable;
|
||||
using System.Linq;
|
||||
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
|
||||
using LLib.GameData;
|
||||
using Lumina.Excel.Sheets;
|
||||
using Questionable.Model.Questing;
|
||||
using ExcelQuest = Lumina.Excel.Sheets.Quest;
|
||||
using GrandCompany = FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany;
|
||||
|
||||
namespace Questionable.Model;
|
||||
|
||||
@ -54,7 +55,8 @@ internal sealed class QuestInfo : IQuestInfo
|
||||
QuestLockJoin = (EQuestJoin)quest.QuestLockJoin;
|
||||
JournalGenre = quest.JournalGenre.ValueNullable?.RowId;
|
||||
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;
|
||||
PreviousInstanceContent = quest.InstanceContent.Select(x => (ushort)x.RowId).Where(x => x != 0).ToList();
|
||||
PreviousInstanceContentJoin = (EQuestJoin)quest.InstanceContentJoin;
|
||||
@ -67,6 +69,15 @@ internal sealed class QuestInfo : IQuestInfo
|
||||
NewGamePlusChapter = newGamePlusChapter;
|
||||
StartingCity = startingCity;
|
||||
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;
|
||||
}
|
||||
|
||||
@ -79,7 +90,6 @@ internal sealed class QuestInfo : IQuestInfo
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public ElementId QuestId { get; }
|
||||
public string Name { get; }
|
||||
public ushort Level { get; }
|
||||
@ -105,6 +115,7 @@ internal sealed class QuestInfo : IQuestInfo
|
||||
public byte StartingCity { get; set; }
|
||||
public byte MoogleDeliveryLevel { get; }
|
||||
public bool IsMoogleDeliveryQuest => JournalGenre == 87;
|
||||
public IReadOnlyList<ItemReward> ItemRewards { get; }
|
||||
public EExpansionVersion Expansion { get; }
|
||||
|
||||
public void AddPreviousQuest(PreviousQuestInfo questId)
|
||||
|
@ -7,6 +7,7 @@ using Dalamud.Interface.Windowing;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Plugin.Services;
|
||||
using LLib;
|
||||
using LLib.Gear;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller;
|
||||
@ -130,6 +131,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceCollection.AddSingleton<NotificationMasterIpc>();
|
||||
serviceCollection.AddSingleton<AutomatonIpc>();
|
||||
serviceCollection.AddSingleton<AutoDutyIpc>();
|
||||
|
||||
serviceCollection.AddSingleton<GearStatsCalculator>();
|
||||
}
|
||||
|
||||
private static void AddTaskFactories(ServiceCollection serviceCollection)
|
||||
@ -138,6 +141,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
serviceCollection.AddTaskFactory<QuestCleanUp.CheckAlliedSocietyMount>();
|
||||
serviceCollection
|
||||
.AddTaskExecutor<MoveToLandingLocation.Task, MoveToLandingLocation.MoveToLandingLocationExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<RedeemRewardItems.Task, RedeemRewardItems.Factory, RedeemRewardItems.Executor>();
|
||||
serviceCollection.AddTaskExecutor<DoGather.Task, DoGather.GatherExecutor>();
|
||||
serviceCollection.AddTaskExecutor<DoGatherCollectable.Task, DoGatherCollectable.GatherCollectableExecutor>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<SwitchClassJob.Task, SwitchClassJob.Factory,
|
||||
@ -155,7 +160,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
.AddTaskFactoryAndExecutor<AetheryteShortcut.Task, AetheryteShortcut.Factory,
|
||||
AetheryteShortcut.UseAetheryteShortcut>();
|
||||
serviceCollection
|
||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte, AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||
.AddTaskExecutor<AetheryteShortcut.MoveAwayFromAetheryte,
|
||||
AetheryteShortcut.MoveAwayFromAetheryteExecutor>();
|
||||
serviceCollection
|
||||
.AddTaskFactoryAndExecutor<SkipCondition.SkipTask, SkipCondition.Factory, SkipCondition.CheckSkip>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<Gather.GatheringTask, Gather.Factory, Gather.StartGathering>();
|
||||
@ -179,7 +185,8 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
.AddTaskFactoryAndExecutor<AethernetShard.Attune, AethernetShard.Factory, AethernetShard.DoAttune>();
|
||||
serviceCollection.AddTaskFactoryAndExecutor<Aetheryte.Attune, Aetheryte.Factory, Aetheryte.DoAttune>();
|
||||
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.WaitAutoDutyTask, Duty.WaitAutoDutyExecutor>();
|
||||
serviceCollection.AddTaskFactory<Emote.Factory>();
|
||||
@ -269,6 +276,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
|
||||
|
||||
serviceCollection.AddSingleton<QuestJournalUtils>();
|
||||
serviceCollection.AddSingleton<QuestJournalComponent>();
|
||||
serviceCollection.AddSingleton<QuestRewardComponent>();
|
||||
serviceCollection.AddSingleton<GatheringJournalComponent>();
|
||||
serviceCollection.AddSingleton<AlliedSocietyJournalComponent>();
|
||||
|
||||
|
@ -99,7 +99,7 @@ internal sealed class ConfigWindow : LWindow, IPersistableWindowConfig
|
||||
{
|
||||
Expansion = (EExpansionVersion)x.TerritoryType.Value.ExVersion.RowId,
|
||||
CfcId = x.RowId,
|
||||
Name = territoryData.GetContentFinderConditionName(x.RowId) ?? "?",
|
||||
Name = territoryData.GetContentFinderCondition(x.RowId)?.Name ?? "?",
|
||||
TerritoryId = x.TerritoryType.RowId,
|
||||
ContentType = x.ContentType.RowId,
|
||||
Level = x.ClassJobLevelRequired,
|
||||
|
@ -17,7 +17,9 @@ internal sealed class AlliedSocietyJournalComponent
|
||||
private static readonly string[] RankNames =
|
||||
["Neutral", "Recognized", "Friendly", "Trusted", "Respected", "Honored", "Sworn", "Allied"];
|
||||
|
||||
#if DEBUG
|
||||
private readonly QuestFunctions _questFunctions;
|
||||
#endif
|
||||
private readonly AlliedSocietyQuestFunctions _alliedSocietyQuestFunctions;
|
||||
private readonly QuestData _questData;
|
||||
private readonly QuestRegistry _questRegistry;
|
||||
@ -26,7 +28,9 @@ internal sealed class AlliedSocietyJournalComponent
|
||||
private readonly UiUtils _uiUtils;
|
||||
|
||||
public AlliedSocietyJournalComponent(
|
||||
#if DEBUG
|
||||
QuestFunctions questFunctions,
|
||||
#endif
|
||||
AlliedSocietyQuestFunctions alliedSocietyQuestFunctions,
|
||||
QuestData questData,
|
||||
QuestRegistry questRegistry,
|
||||
@ -34,7 +38,9 @@ internal sealed class AlliedSocietyJournalComponent
|
||||
QuestTooltipComponent questTooltipComponent,
|
||||
UiUtils uiUtils)
|
||||
{
|
||||
#if DEBUG
|
||||
_questFunctions = questFunctions;
|
||||
#endif
|
||||
_alliedSocietyQuestFunctions = alliedSocietyQuestFunctions;
|
||||
_questData = questData;
|
||||
_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 AlliedSocietyJournalComponent _alliedSocietyJournalComponent;
|
||||
private readonly QuestRewardComponent _questRewardComponent;
|
||||
private readonly GatheringJournalComponent _gatheringJournalComponent;
|
||||
private readonly QuestRegistry _questRegistry;
|
||||
private readonly IClientState _clientState;
|
||||
|
||||
public JournalProgressWindow(
|
||||
QuestJournalComponent questJournalComponent,
|
||||
QuestRewardComponent questRewardComponent,
|
||||
AlliedSocietyJournalComponent alliedSocietyJournalComponent,
|
||||
GatheringJournalComponent gatheringJournalComponent,
|
||||
QuestRegistry questRegistry,
|
||||
@ -26,6 +28,7 @@ internal sealed class JournalProgressWindow : LWindow, IDisposable
|
||||
{
|
||||
_questJournalComponent = questJournalComponent;
|
||||
_alliedSocietyJournalComponent = alliedSocietyJournalComponent;
|
||||
_questRewardComponent = questRewardComponent;
|
||||
_gatheringJournalComponent = gatheringJournalComponent;
|
||||
_questRegistry = questRegistry;
|
||||
_clientState = clientState;
|
||||
@ -64,6 +67,7 @@ internal sealed class JournalProgressWindow : LWindow, IDisposable
|
||||
|
||||
_questJournalComponent.DrawQuests();
|
||||
_alliedSocietyJournalComponent.DrawAlliedSocietyQuests();
|
||||
_questRewardComponent.DrawItemRewards();
|
||||
_gatheringJournalComponent.DrawGatheringItems();
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ internal sealed class EventInfoComponent
|
||||
[SuppressMessage("ReSharper", "CollectionNeverUpdated.Local")]
|
||||
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;
|
||||
|
@ -40,48 +40,58 @@ internal sealed class QuestTooltipComponent
|
||||
{
|
||||
using var tooltip = ImRaii.Tooltip();
|
||||
if (tooltip)
|
||||
{
|
||||
ImGui.Text($"{SeIconChar.LevelEn.ToIconString()}{questInfo.Level}");
|
||||
ImGui.SameLine();
|
||||
|
||||
var (color, _, tooltipText) = _uiUtils.GetQuestStyle(questInfo.QuestId);
|
||||
ImGui.TextColored(color, tooltipText);
|
||||
if (questInfo.IsRepeatable)
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted("Repeatable");
|
||||
}
|
||||
|
||||
if (questInfo is QuestInfo { CompletesInstantly: true })
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted("Instant");
|
||||
}
|
||||
|
||||
if (_questRegistry.TryGetQuest(questInfo.QuestId, out Quest? quest))
|
||||
{
|
||||
if (quest.Root.Disabled)
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Disabled");
|
||||
}
|
||||
|
||||
if (quest.Root.Author.Count == 1)
|
||||
ImGui.Text($"Author: {quest.Root.Author[0]}");
|
||||
else
|
||||
ImGui.Text($"Authors: {string.Join(", ", quest.Root.Author)}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "NoQuestPath");
|
||||
}
|
||||
|
||||
DrawQuestUnlocks(questInfo, 0);
|
||||
}
|
||||
DrawInner(questInfo, true);
|
||||
}
|
||||
|
||||
private void DrawQuestUnlocks(IQuestInfo questInfo, int counter)
|
||||
public void DrawInner(IQuestInfo questInfo, bool showItemRewards)
|
||||
{
|
||||
ImGui.Text($"{SeIconChar.LevelEn.ToIconString()}{questInfo.Level}");
|
||||
ImGui.SameLine();
|
||||
|
||||
var (color, _, tooltipText) = _uiUtils.GetQuestStyle(questInfo.QuestId);
|
||||
ImGui.TextColored(color, tooltipText);
|
||||
|
||||
if (questInfo is QuestInfo { IsSeasonalEvent: true })
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted("Event");
|
||||
}
|
||||
|
||||
if (questInfo.IsRepeatable)
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted("Repeatable");
|
||||
}
|
||||
|
||||
if (questInfo is QuestInfo { CompletesInstantly: true })
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextUnformatted("Instant");
|
||||
}
|
||||
|
||||
if (_questRegistry.TryGetQuest(questInfo.QuestId, out Quest? quest))
|
||||
{
|
||||
if (quest.Root.Disabled)
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "Disabled");
|
||||
}
|
||||
|
||||
if (quest.Root.Author.Count == 1)
|
||||
ImGui.Text($"Author: {quest.Root.Author[0]}");
|
||||
else
|
||||
ImGui.Text($"Authors: {string.Join(", ", quest.Root.Author)}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ImGui.SameLine();
|
||||
ImGui.TextColored(ImGuiColors.DalamudRed, "NoQuestPath");
|
||||
}
|
||||
|
||||
DrawQuestUnlocks(questInfo, 0, showItemRewards);
|
||||
}
|
||||
|
||||
private void DrawQuestUnlocks(IQuestInfo questInfo, int counter, bool showItemRewards)
|
||||
{
|
||||
if (counter >= 10)
|
||||
return;
|
||||
@ -118,12 +128,13 @@ internal sealed class QuestTooltipComponent
|
||||
_questFunctions.IsQuestComplete(q.QuestId) ? byte.MinValue : q.Sequence), iconColor, icon);
|
||||
|
||||
if (qInfo is QuestInfo qstInfo && (counter <= 2 || icon != FontAwesomeIcon.Check))
|
||||
DrawQuestUnlocks(qstInfo, counter + 1);
|
||||
DrawQuestUnlocks(qstInfo, counter + 1, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
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();
|
||||
_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)
|
||||
|
@ -104,6 +104,7 @@ internal sealed class QuestWindow : LWindow, IPersistableWindowConfig
|
||||
|
||||
_activeQuestComponent.Reload += OnReload;
|
||||
_quickAccessButtonsComponent.Reload += OnReload;
|
||||
_questController.IsQuestWindowOpen = () => IsOpen;
|
||||
}
|
||||
|
||||
public WindowConfig WindowConfig => _configuration.DebugWindowConfig;
|
||||
|
Loading…
Reference in New Issue
Block a user