{
"Sequence": 1,
"Steps": [
-
+ {
+ "Position": {
+ "X": -246.48618,
+ "Y": 54.663364,
+ "Z": 605.60834
+ },
+ "TerritoryId": 816,
+ "InteractionType": "WalkTo",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ -128
+ ]
+ },
+ {
+ "DataId": 2010856,
+ "Position": {
+ "X": -271.29016,
+ "Y": 52.96399,
+ "Z": 605.9204
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 2010858,
+ "Position": {
+ "X": -250.62946,
+ "Y": 50.94983,
+ "Z": 597.7416
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "Position": {
+ "X": -261.1694,
+ "Y": 50.977943,
+ "Z": 589.3572
+ },
+ "TerritoryId": 816,
+ "InteractionType": "WalkTo",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ -64
+ ]
+ },
+ {
+ "DataId": 2010857,
+ "Position": {
+ "X": -261.1277,
+ "Y": 50.94983,
+ "Z": 585.2903
+ },
+ "StopDistance": 4.5,
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
]
},
{
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
{
"Sequence": 1,
"Steps": [
- {
- "Position": {
- "X": -466.72015,
- "Y": 44.63006,
- "Z": -310.0618
- },
- "TerritoryId": 816,
- "InteractionType": "WalkTo",
- "Fly": true
- },
{
"DataId": 1032140,
"Position": {
"ChatMessage": {
"Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
},
- "SkipIf": [
- "NotTargetable"
+ "$": "QW: 0 0 0 1 0 0",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [
+ 1
+ ],
+ null,
+ null
]
},
{
"ChatMessage": {
"Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
},
- "SkipIf": [
- "NotTargetable"
+ "$": "QW: 0 0 0 3 0 0",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [
+ 3
+ ],
+ null,
+ null
]
},
{
"Y": 50.10258,
"Z": -328.26733
},
+ "$": "QW: 0 0 0 2 0 0",
"TerritoryId": 816,
"InteractionType": "Say",
"ChatMessage": {
"Key": "TEXT_BANPIX103_03691_SAYTODO_000_030"
},
- "SkipIf": [
- "NotTargetable"
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [
+ 2
+ ],
+ null,
+ null
]
}
]
QuestWork:
```
0 0 0 x 0 0
+ 1 → 1032140
2 → 1032142
3 → 1032141
-
-unknown
- ? → 1032140
```
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
},
{
"Sequence": 1,
- "Comment": "TODO Has multiple possible targets, unsure if QW works",
"Steps": [
{
"Position": {
- "X": -342.05676,
- "Y": 37.5036,
- "Z": 434.53723
+ "X": -344.05838,
+ "Y": 45.450672,
+ "Z": 456.10266
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
- "Fly": true
+ "Fly": true,
+ "SkipIf": [
+ "FlyingLocked"
+ ]
},
{
"DataId": 2010860,
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 1
+ },
+ {
+ "Low": 2
+ },
+ {
+ "Low": 3
+ }
+ ],
+ null,
+ null,
+ null,
+ null
]
},
{
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 3
+ },
+ {
+ "Low": 4
+ },
+ {
+ "Low": 5
+ }
+ ],
+ null,
+ null,
+ null,
+ null
]
},
{
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 1
+ },
+ {
+ "Low": 4
+ },
+ {
+ "Low": 6
+ }
+ ],
+ null,
+ null,
+ null,
+ null
],
"IgnoreDistanceToObject": true
},
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 2
+ },
+ {
+ "Low": 5
+ },
+ {
+ "Low": 6
+ }
+ ],
+ null,
+ null,
+ null,
+ null
],
"IgnoreDistanceToObject": true
}
QuestWork:
```
-0 x 0 0 0 0
- 4 → 2010861, 2010863
- 5 → 2010861, 2010862
+0 x 0 0 0 0 | QW after first
+ 1 → 2010860 2010863 | 1 18 0 0 0 128
+ 2 → 2010860 2010862 | 1 18 0 0 0 128
+ 3 → 2010860 2010861 | 1 19 0 0 0 128
+ 4 → 2010861 2010863 |
+ 5 → 2010861 2010862 |
+ 6 → 2010862 2010863 | 1 22 0 0 0 128
```
"Fly": true,
"DisableNavmesh": true
},
+ {
+ "DataId": 2010865,
+ "Position": {
+ "X": -335.59174,
+ "Y": -53.75763,
+ "Z": -277.9126
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [1],
+ null,
+ null
+ ]
+ },
{
"DataId": 2010866,
"Position": {
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "Fly": true
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [2],
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2010867,
+ "Position": {
+ "X": -351.64417,
+ "Y": -53.635498,
+ "Z": -295.73517
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ null,
+ [3],
+ null,
+ null
+ ]
}
]
},
--- /dev/null
+## I Dream of Shinies
+
+QuestWork:
+
+```
+0 0 0 x 0 0
+ 1 → 2010865
+ 2 → 2010866
+ 3 → 2010867
+```
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 1031811,
+ "Position": {
+ "X": -442.46588,
+ "Y": 70.686165,
+ "Z": 573.69336
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 2010891,
+ "Position": {
+ "X": -852.0485,
+ "Y": 37.67456,
+ "Z": 298.11548
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Action",
+ "Action": "Siphon Snout",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ {
+ "High": 1
+ },
+ {
+ "High": 2
+ }
+ ],
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2010892,
+ "Position": {
+ "X": -774.44116,
+ "Y": 54.520386,
+ "Z": 102.61682
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Action",
+ "Action": "Siphon Snout",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ {
+ "High": 1
+ },
+ {
+ "High": 3
+ }
+ ],
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2010893,
+ "Position": {
+ "X": -802.30414,
+ "Y": 27.115234,
+ "Z": -108.44586
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Action",
+ "Action": "Siphon Snout",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ {
+ "High": 2
+ },
+ {
+ "High": 3
+ }
+ ],
+ null,
+ null,
+ null
+ ]
+ }
]
},
{
},
"TerritoryId": 816,
"InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Il Mheg - Lydha Lran",
"Fly": true
}
]
--- /dev/null
+## Sharing is Caring
+
+QuestWork:
+```
+0 0 xx 0 0 0
+ 16 → 2010891 2010892
+ 32 → 2010891 2010893 | unverified
+ 48 → 2010892 2010893
+```
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
"TerritoryId": 816,
"InteractionType": "Interact",
"Fly": true,
- "SkipIf": [
- "NotTargetable"
- ],
- "$": "Only if QW: 0 48 0 0 0 0"
+ "RequiredQuestVariables": [
+ null,
+ [
+ 48
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
},
{
"DataId": 1032168,
"TerritoryId": 816,
"InteractionType": "Interact",
"Fly": true,
- "SkipIf": [
- "NotTargetable"
- ],
- "$": "Only if QW: 0 32 0 0 0 0"
+ "RequiredQuestVariables": [
+ null,
+ [
+ 32
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
},
{
"DataId": 1032167,
"TerritoryId": 816,
"InteractionType": "Interact",
"Fly": true,
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ [
+ 16
+ ],
+ null,
+ null,
+ null,
+ null
]
}
]
QuestWork:
```
0 x 0 0 0 0
- 32 → 1032168
+ 16 → Tall Fuath (1032167)
+ 32 → Trembling Scavenger (1032168)
48 → Elegant Eulmoran (1032169)
- ?? → 1032167
```
"TerritoryId": 816,
"InteractionType": "Interact",
"Fly": true,
- "$": "Only if QW: 0 0 ??? 0 0 0",
+ "$": "Only if QW: 0 0 3 0 0 0",
"SkipIf": ["NotTargetable"]
},
{
},
"TerritoryId": 816,
"InteractionType": "Interact",
- "$": "Only if QW: 0 0 1 0 0 0 → if complete, 0 16 0 0 0 0",
+ "$": "Only if QW: 0 0 1 0 0 0",
"SkipIf": ["NotTargetable"]
}
]
"TerritoryId": 816,
"InteractionType": "Interact",
"DisableNavmesh": true,
- "$": "QW: 0 2 0 0 0 0"
+ "$": "QW: 0 2 0 0 0 0",
+ "SkipIf": [
+ "NotTargetable"
+ ]
+ },
+ {
+ "DataId": 2010904,
+ "Position": {
+ "X": -164.93481,
+ "Y": -50.919373,
+ "Z": 71.15283
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "$": "QW: 0 3 0 0 0 0",
+ "SkipIf": [
+ "NotTargetable"
+ ]
+ },
+ {
+ "DataId": 2010910,
+ "Position": {
+ "X": -189.86804,
+ "Y": -66.941345,
+ "Z": 13.046387
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "DisableNavmesh": true,
+ "$": "QW: 0 1 0 0 0 0",
+ "SkipIf": [
+ "NotTargetable"
+ ]
}
]
},
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 1032204,
+ "Position": {
+ "X": -81.864685,
+ "Y": 88.12085,
+ "Z": -175.06683
+ },
+ "TerritoryId": 816,
+ "InteractionType": "UseItem",
+ "ItemId": 2002945,
+ "$": "QW 0 32 0 0 0 0",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1032205,
+ "Position": {
+ "X": -114.21387,
+ "Y": 112.903015,
+ "Z": -350.57605
+ },
+ "TerritoryId": 816,
+ "InteractionType": "UseItem",
+ "ItemId": 2002945,
+ "$": "QW 0 17 0 0 0 0",
+ "Fly": true
+ }
]
},
{
},
"TerritoryId": 816,
"InteractionType": "CompleteQuest",
- "Fly": true
+ "AetheryteShortcut": "Il Mheg - Lydha Lran",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANPIX122_03710_Q1_000_000",
+ "Answer": "TEXT_BANPIX122_03710_A1_000_002"
+ }
+ ]
}
]
}
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1031806,
+ "Position": {
+ "X": -464.59143,
+ "Y": 71.76874,
+ "Z": 573.8766
+ },
+ "TerritoryId": 816,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1031891,
+ "Position": {
+ "X": -461.53967,
+ "Y": 72.51729,
+ "Z": 586.48047
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 890
+ },
+ {
+ "DataId": 1031853,
+ "Position": {
+ "X": 60.471436,
+ "Y": -1.6051313,
+ "Z": 53.543823
+ },
+ "TerritoryId": 890,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1031852,
+ "Position": {
+ "X": 59.03711,
+ "Y": -1.7997739,
+ "Z": 56.565186
+ },
+ "TerritoryId": 890,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1031855,
+ "Position": {
+ "X": 74.784424,
+ "Y": 98.85967,
+ "Z": -820.88965
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Il Mheg - Pia Enni",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1031858,
+ "Position": {
+ "X": -211.35272,
+ "Y": 16.63259,
+ "Z": 427.32886
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Kholusia - Wright",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1031860,
+ "Position": {
+ "X": -217.45636,
+ "Y": 21.481304,
+ "Z": 356.9237
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "Position": {
+ "X": -137.7369,
+ "Y": 11.939666,
+ "Z": 336.4078
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 11438
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1031861,
+ "Position": {
+ "X": -149.85895,
+ "Y": 13.084818,
+ "Z": 341.1764
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 8,
+ "Steps": [
+ {
+ "DataId": 1031860,
+ "Position": {
+ "X": -217.45636,
+ "Y": 21.481304,
+ "Z": 356.9237
+ },
+ "TerritoryId": 814,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 9,
+ "Steps": [
+ {
+ "DataId": 1031891,
+ "Position": {
+ "X": -461.53967,
+ "Y": 72.51729,
+ "Z": 586.48047
+ },
+ "TerritoryId": 816,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Il Mheg - Lydha Lran",
+ "Fly": true,
+ "TargetTerritoryId": 890
+ },
+ {
+ "DataId": 1031863,
+ "Position": {
+ "X": 60.379883,
+ "Y": 31.0353,
+ "Z": -110.76526
+ },
+ "TerritoryId": 890,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 10,
+ "Steps": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0,
+ "Z": 0
+ },
+ "TerritoryId": 1,
+ "InteractionType": "WalkTo",
+ "Comment": "Filler"
+ }
+ ]
+ },
+ {
+ "Sequence": 11,
+ "Steps": [
+ {
+ "DataId": 1032350,
+ "Position": {
+ "X": 63.797974,
+ "Y": 30.266184,
+ "Z": -103.4715
+ },
+ "TerritoryId": 891,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1031806,
+ "Position": {
+ "X": -464.59143,
+ "Y": 71.76874,
+ "Z": 573.8766
+ },
+ "TerritoryId": 816,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Il Mheg - Lydha Lran",
+ "Fly": true
+ }
+ ]
+ }
+ ]
+}
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
{
"Sequence": 1,
"Steps": [
-
+ {
+ "DataId": 1042363,
+ "Position": {
+ "X": 227.58826,
+ "Y": 4.933288,
+ "Z": 644.4037
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1042364,
+ "Position": {
+ "X": 198.93188,
+ "Y": 1.7699993,
+ "Z": 707.1183
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1042365,
+ "Position": {
+ "X": 177.66077,
+ "Y": 5.331657,
+ "Z": 651.27026
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ }
]
},
{
},
{
"Sequence": 1,
- "Comment": "There are more NPC/dialogue choices",
"Steps": [
+ {
+ "DataId": 1042368,
+ "Position": {
+ "X": -485.771,
+ "Y": 39.62969,
+ "Z": 114.213745
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Great Work",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANARK106_04556_Q1_000_000",
+ "Answer": "TEXT_BANARK106_04556_A1_000_001"
+ }
+ ],
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ 48
+ ],
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 1042369,
+ "Position": {
+ "X": -561.2726,
+ "Y": 11.802609,
+ "Z": 128.95398
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_BANARK106_04556_Q2_000_000",
+ "Answer": "TEXT_BANARK106_04556_A2_000_001"
+ }
+ ],
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ 16
+ ],
+ null,
+ null,
+ null
+ ]
+ },
{
"DataId": 1042370,
"Position": {
"Answer": "TEXT_BANARK106_04556_A3_000_001"
}
],
- "SkipIf": [
- "NotTargetable"
+ "RequiredQuestVariables": [
+ null,
+ null,
+ [
+ 32
+ ],
+ null,
+ null,
+ null
]
}
]
--- /dev/null
+## Bloomin' Ocean
+
+```
+0 0 ?? 0 0 0
+ 16 → 1042369
+ 32 → 1042370
+ 48 → 1042368
+```
},
"TerritoryId": 957,
"InteractionType": "Interact",
- "AetheryteShortcut": "Thavnair - Palaka's Stand",
+ "AetheryteShortcut": "Radz-at-Han",
+ "AethernetShortcut": [
+ "[Radz-at-Han] Aetheryte Plaza",
+ "[Radz-at-Han] The Gate of First Sight (Thavnair)"
+ ],
"Fly": true
}
]
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
14676
- ]
+ ],
+ "Fly": true,
+ "AetheryteShortcut": "Thavnair - Great Work"
}
]
},
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
{
"Sequence": 1,
"Steps": [
-
+ {
+ "Position": {
+ "X": -611.4443,
+ "Y": 4.030203,
+ "Z": 520.76807
+ },
+ "TerritoryId": 957,
+ "InteractionType": "WalkTo",
+ "Fly": true
+ },
+ {
+ "DataId": 2012880,
+ "Position": {
+ "X": -669.4896,
+ "Y": -36.42328,
+ "Z": 522.6367
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DisableNavmesh": true,
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 1
+ },
+ {
+ "Low": 4
+ }
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2012881,
+ "Position": {
+ "X": -652.4605,
+ "Y": -31.784546,
+ "Z": 554.46704
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DisableNavmesh": true,
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 2
+ },
+ {
+ "Low": 3
+ }
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2012882,
+ "Position": {
+ "X": -729.9458,
+ "Y": -38.864807,
+ "Z": 600.5187
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 1
+ },
+ {
+ "Low": 3
+ }
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "DataId": 2012883,
+ "Position": {
+ "X": -746.0593,
+ "Y": -38.92578,
+ "Z": 597.0397
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "RequiredQuestVariables": [
+ null,
+ [
+ {
+ "Low": 2
+ },
+ {
+ "Low": 4
+ }
+ ],
+ null,
+ null,
+ null,
+ null
+ ]
+ }
]
},
{
},
"TerritoryId": 957,
"InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
"Fly": true
}
]
--- /dev/null
+## Bloomin' Ocean
+
+```
+0 ? 0 0 0 0
+ 1 → 2012880 2012882
+ 2 → 2012881 2012883
+ 3 → 2012881 2012882
+ 4 → 2012880 2012883
+```
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
- "Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
+++ /dev/null
-## Seedy Affair
-
-First NPC:
-```
-0 ?? 0 0 0 0
- 32 → 1042390
-```
-
-Second NPC:
-```
-1 16 0 0 0 64 → 1042389
-```
--- /dev/null
+{
+ "$schema": "https://carvel.li/questionable/quest-1.0",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1042300,
+ "Position": {
+ "X": -76.82922,
+ "Y": 39.986862,
+ "Z": 309.98706
+ },
+ "TerritoryId": 957,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2012919,
+ "Position": {
+ "X": -464.22522,
+ "Y": 5.3864136,
+ "Z": 22.445984
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Great Work"
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "Position": {
+ "X": -363.06543,
+ "Y": 55.300343,
+ "Z": -108.32965
+ },
+ "StopDistance": 0.25,
+ "TerritoryId": 957,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AutoOnEnterArea",
+ "KillEnemyDataIds": [
+ 14681
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "DataId": 1042318,
+ "Position": {
+ "X": -360.49445,
+ "Y": 54.680054,
+ "Z": -102.9527
+ },
+ "StopDistance": 7,
+ "TerritoryId": 957,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 1042321,
+ "Position": {
+ "X": -522.9725,
+ "Y": 11.61713,
+ "Z": 88.97534
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Great Work"
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1042322,
+ "Position": {
+ "X": -523.36926,
+ "Y": 10.9199,
+ "Z": 85.34363
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 6,
+ "Steps": [
+ {
+ "DataId": 1042324,
+ "Position": {
+ "X": -558.0072,
+ "Y": 11.802552,
+ "Z": 114.03064
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ },
+ {
+ "DataId": 1042325,
+ "Position": {
+ "X": -552.75806,
+ "Y": 1.120665,
+ "Z": 23.392029
+ },
+ "StopDistance": 0.5,
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 32
+ ]
+ },
+ {
+ "DataId": 1042323,
+ "Position": {
+ "X": -480.33875,
+ "Y": 1.9096844,
+ "Z": -13.53479
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 7,
+ "Steps": [
+ {
+ "DataId": 1042321,
+ "Position": {
+ "X": -522.9725,
+ "Y": 11.61713,
+ "Z": 88.97534
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 8,
+ "Steps": [
+ {
+ "DataId": 1041397,
+ "Position": {
+ "X": 402.30408,
+ "Y": 3.0506973,
+ "Z": -212.35986
+ },
+ "TerritoryId": 957,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Thavnair - Palaka's Stand"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1042300,
+ "Position": {
+ "X": -76.82922,
+ "Y": 39.986862,
+ "Z": 309.98706
+ },
+ "TerritoryId": 957,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Thavnair - Yedlihmad",
+ "Fly": true
+ }
+ ]
+ }
+ ]
+}
"CompletionQuestVariablesFlags": {
"$ref": "#/$defs/CompletionFlags"
},
+ "RequiredQuestVariables": {
+ "type": "array",
+ "description": "Certain quests (primarily beast tribes/allied societies) have a RNG element to spawning targets, and the step should be skipped in its entirety if none of the sets below match",
+ "minItems": 6,
+ "maxItems": 6,
+ "items": {
+ "type": ["array", "null"],
+ "items": {
+ "type": [
+ "number",
+ "object"
+ ],
+ "properties": {
+ "High": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0,
+ "maximum": 15
+ },
+ "Low": {
+ "type": [
+ "number",
+ "null"
+ ],
+ "minimum": 0,
+ "maximum": 15
+ }
+ },
+ "minimum": 0,
+ "maximum": 255
+ }
+ }
+ },
"DelaySecondsAtStart": {
"description": "Time to wait before starting",
"type": [
"description": "The action to use",
"enum": [
"Esuna",
+ "Siphon Snout",
"Red Gulal",
"Yellow Gulal",
"Blue Gulal"
private static readonly Dictionary<EAction, string> Values = new()
{
{ EAction.Esuna, "Esuna" },
+ { EAction.SiphonSnout, "Siphon Snout" },
{ EAction.RedGulal, "Red Gulal" },
{ EAction.YellowGulal, "Yellow Gulal" },
{ EAction.BlueGulal, "Blue Gulal" },
--- /dev/null
+using System;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Questionable.Model.V1.Converter;
+
+public sealed class QuestWorkConfigConverter : JsonConverter<QuestWorkValue>
+{
+ public override QuestWorkValue Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType == JsonTokenType.Number)
+ return new QuestWorkValue(reader.GetByte());
+
+ if (reader.TokenType != JsonTokenType.StartObject)
+ throw new JsonException();
+
+ byte? high = null, low = null;
+ while (reader.Read())
+ {
+ switch (reader.TokenType)
+ {
+ case JsonTokenType.PropertyName:
+ string? propertyName = reader.GetString();
+ if (propertyName == null || !reader.Read())
+ throw new JsonException();
+
+ switch (propertyName)
+ {
+ case nameof(QuestWorkValue.High):
+ high = reader.GetByte();
+ break;
+
+ case nameof(QuestWorkValue.Low):
+ low = reader.GetByte();
+ break;
+
+ default:
+ throw new JsonException();
+ }
+
+ break;
+
+ case JsonTokenType.EndObject:
+ return new QuestWorkValue(high, low);
+
+ default:
+ throw new JsonException();
+ }
+ }
+
+ throw new JsonException();
+ }
+
+ public override void Write(Utf8JsonWriter writer, QuestWorkValue value, JsonSerializerOptions options)
+ {
+ throw new NotImplementedException();
+ }
+}
public enum EAction
{
Esuna = 7568,
+ SiphonSnout = 18187,
RedGulal = 29382,
YellowGulal = 29383,
BlueGulal = 29384,
{
public static bool RequiresMount(this EAction action)
{
- return action is EAction.RedGulal or EAction.YellowGulal or EAction.BlueGulal;
+ return action is EAction.SiphonSnout or EAction.RedGulal or EAction.YellowGulal or EAction.BlueGulal;
}
}
public uint? ContentFinderConditionId { get; set; }
public IList<ESkipCondition> SkipIf { get; set; } = new List<ESkipCondition>();
+ public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new();
public IList<short?> CompletionQuestVariablesFlags { get; set; } = new List<short?>();
public IList<DialogueChoice> DialogueChoices { get; set; } = new List<DialogueChoice>();
public IList<uint> PointMenuChoices { get; set; } = new List<uint>();
--- /dev/null
+using System.Text.Json.Serialization;
+using Questionable.Model.V1.Converter;
+
+namespace Questionable.Model.V1;
+
+[JsonConverter(typeof(QuestWorkConfigConverter))]
+public sealed class QuestWorkValue(byte? high, byte? low)
+{
+ public QuestWorkValue(byte value)
+ : this((byte)(value >> 4), (byte)(value & 0xF))
+ {
+ }
+
+ public byte? High { get; set; } = high;
+ public byte? Low { get; set; } = low;
+}
var relevantConditions =
step.SkipIf.Where(x => x != ESkipCondition.AetheryteShortcutIfInSameTerritory).ToList();
- if (relevantConditions.Count == 0 && step.CompletionQuestVariablesFlags.Count == 0)
+ if (relevantConditions.Count == 0 &&
+ step.CompletionQuestVariablesFlags.Count == 0 &&
+ step.RequiredQuestVariables.Count == 0)
return null;
return serviceProvider.GetRequiredService<CheckTask>()
InventoryManager* inventoryManager = InventoryManager.Instance();
if (inventoryManager->GetInventoryItemCount(Step.ItemId.Value) == 0)
{
- logger.LogInformation("Skipping step, no item with itemId {ItemId} in inventory", Step.ItemId.Value);
+ logger.LogInformation("Skipping step, no item with itemId {ItemId} in inventory",
+ Step.ItemId.Value);
return true;
}
}
}
QuestWork? questWork = gameFunctions.GetQuestEx(QuestId);
- if (questWork != null &&
- QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, true))
+ if (questWork != null)
{
- logger.LogInformation("Skipping step, as quest variables match");
- return true;
+ if (QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, true))
+ {
+ logger.LogInformation("Skipping step, as quest variables match");
+ return true;
+ }
+
+ if (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(Step.RequiredQuestVariables, questWork.Value,
+ logger))
+ {
+ logger.LogInformation("Skipping step, as required variables do not match");
+ return true;
+ }
}
return false;
using System.Collections.Generic;
using System.Linq;
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
+using Microsoft.Extensions.Logging;
+using Questionable.Controller.Steps.Shared;
+using Questionable.Model.V1;
namespace Questionable.Controller.Utils;
return true;
}
+
+ public static bool MatchesRequiredQuestWorkConfig(List<List<QuestWorkValue>?> requiredQuestVariables,
+ QuestWork questWork, ILogger<SkipCondition.CheckTask> logger)
+ {
+ if (requiredQuestVariables.Count != 6 || requiredQuestVariables.All(x => x == null || x.Count == 0))
+ {
+ logger.LogInformation("No RQW defined");
+ return true;
+ }
+
+ for (int i = 0; i < 6; ++i)
+ {
+ if (requiredQuestVariables[i] == null)
+ {
+ logger.LogInformation("No RQW {Index} defined", i);
+ continue;
+ }
+
+ byte high = (byte)(questWork.Variables[i] >> 4);
+ byte low = (byte)(questWork.Variables[i] & 0xF);
+
+ foreach (QuestWorkValue expectedValue in requiredQuestVariables[i]!)
+ {
+ logger.LogInformation("H: {ExpectedHigh} - {ActualHigh}, L: {ExpectedLow} - {ActualLow}",
+ expectedValue.High, high, expectedValue.Low, low);
+ if (expectedValue.High != null && expectedValue.High != high)
+ continue;
+
+ if (expectedValue.Low != null && expectedValue.Low != low)
+ continue;
+
+ return true;
+ }
+ }
+
+ logger.LogInformation("Should execute step");
+ return false;
+ }
}