"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
"Author": "liza",
"Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073,
+ "SkipConditions": {
+ "StepIf": {
+ "InTerritory": [
+ 1073
+ ]
+ }
+ }
+ },
{
"TerritoryId": 1073,
"InteractionType": "None"
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
+ "Author": "liza",
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea"
+ }
+ ],
+ "Groups": [
+ {
+ "Nodes": [
+ {
+ "DataId": 34369,
+ "Locations": [
+ {
+ "Position": {
+ "X": -381.6697,
+ "Y": 246.9727,
+ "Z": -221.478
+ },
+ "MinimumAngle": 0,
+ "MaximumAngle": 225
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34367,
+ "Locations": [
+ {
+ "Position": {
+ "X": -384.7752,
+ "Y": 246.2142,
+ "Z": -220.8562
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34368,
+ "Locations": [
+ {
+ "Position": {
+ "X": -396.0184,
+ "Y": 245.9229,
+ "Z": -236.488
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/GatheringPaths/gatheringlocation-v1.json",
+ "Author": "liza",
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "AetheryteShortcut": "Ultima Thule - Abode of the Ea"
+ }
+ ],
+ "Groups": [
+ {
+ "Nodes": [
+ {
+ "DataId": 34375,
+ "Locations": [
+ {
+ "Position": {
+ "X": -408.5904,
+ "Y": 259.0197,
+ "Z": -361.8408
+ },
+ "MinimumAngle": -120,
+ "MaximumAngle": 60
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34374,
+ "Locations": [
+ {
+ "Position": {
+ "X": -410.1218,
+ "Y": 261.0269,
+ "Z": -364.9317
+ },
+ "MinimumAngle": -120,
+ "MaximumAngle": 35
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Nodes": [
+ {
+ "DataId": 34373,
+ "Locations": [
+ {
+ "Position": {
+ "X": -421.3381,
+ "Y": 263.4496,
+ "Z": -366.897
+ },
+ "MinimumAngle": -105,
+ "MaximumAngle": 50
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
Assignment(nameof(GatheredItem.Collectability), gatheredItem.Collectability,
emptyItem.Collectability)
.AsSyntaxNodeOrToken(),
- Assignment(nameof(GatheredItem.ClassJob), gatheredItem.ClassJob,
- emptyItem.ClassJob)
+ Assignment(nameof(GatheredItem.QuestAcceptedAsClass), gatheredItem.QuestAcceptedAsClass,
+ emptyItem.QuestAcceptedAsClass)
.AsSyntaxNodeOrToken()))));
}
else if (value is GatheringNodeGroup nodeGroup)
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "TerritoryId": 960,
+ "InteractionType": "None",
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38281,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38305,
+ "ItemCount": 3
+ }
+ ]
+ },
+ {
+ "DataId": 1044042,
+ "Position": {
+ "X": 507.0725,
+ "Y": 436.99997,
+ "Z": 340.07776
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960
+ },
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 2013074,
+ "Position": {
+ "X": 304.3412,
+ "Y": 483.48206,
+ "Z": 143.11438
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 1073
+ },
+ {
+ "DataId": 1044043,
+ "Position": {
+ "X": -7.1260376,
+ "Y": 498.9474,
+ "Z": -5.416992
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Say",
+ "ChatMessage": {
+ "Key": "TEXT_BANOMI102_04608_SAYTODO_000_050"
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 128
+ ]
+ },
+ {
+ "DataId": 1044044,
+ "Position": {
+ "X": 11.215393,
+ "Y": 499.7763,
+ "Z": -23.239563
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Say",
+ "ChatMessage": {
+ "Key": "TEXT_BANOMI102_04608_SAYTODO_000_050"
+ },
+ "CompletionQuestVariablesFlags": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ 64
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043421,
+ "Position": {
+ "X": 2.4261475,
+ "Y": 499.87805,
+ "Z": 46.036377
+ },
+ "TerritoryId": 1073,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960
+ },
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 2013072,
+ "Position": {
+ "X": 456.65674,
+ "Y": 438.04077,
+ "Z": 310.2312
+ },
+ "TerritoryId": 960,
+ "InteractionType": "Interact",
+ "TargetTerritoryId": 960,
+ "RequiredGatheredItems": [
+ {
+ "QuestAcceptedAsClass": "Miner",
+ "ItemId": 38282,
+ "ItemCount": 3
+ },
+ {
+ "QuestAcceptedAsClass": "Botanist",
+ "ItemId": 38306,
+ "ItemCount": 3
+ }
+ ],
+ "AetheryteShortcut": "Ultima Thule - Base Omicron"
+ },
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "Disabled": true,
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1043417,
+ "Position": {
+ "X": 314.9004,
+ "Y": 481.99442,
+ "Z": 148.11926
+ },
+ "TerritoryId": 960,
+ "InteractionType": "CompleteQuest"
+ }
+ ]
+ }
+ ]
+}
"type": "number",
"minimum": 0,
"maximum": 1000
+ },
+ "QuestAcceptedAsClass": {
+ "type": "string",
+ "enum": [
+ "Miner",
+ "Botanist"
+ ]
}
},
"required": [
--- /dev/null
+using System;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+namespace Questionable.Model.Questing.Converter;
+
+internal sealed class ClassJobConverter : JsonConverter<uint>
+{
+ public override uint Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
+ {
+ if (reader.TokenType != JsonTokenType.String)
+ throw new JsonException();
+
+ return reader.GetString() switch
+ {
+ "Miner" => 16,
+ "Botanist" => 17,
+ _ => throw new JsonException("Unsupported value for classjob"),
+ };
+ }
+
+ public override void Write(Utf8JsonWriter writer, uint value, JsonSerializerOptions options)
+ {
+ throw new NotImplementedException();
+ }
+}
-namespace Questionable.Model.Questing;
+using System.Text.Json.Serialization;
+using Questionable.Model.Questing.Converter;
+
+namespace Questionable.Model.Questing;
public sealed class GatheredItem
{
/// <summary>
/// Either miner or botanist; null if it is irrelevant (prefers current class/job, then any unlocked ones).
/// </summary>
- public uint? ClassJob { get; set; }
+ [JsonConverter(typeof(ClassJobConverter))]
+ public uint? QuestAcceptedAsClass { get; set; }
}
ItemId = itemId,
ItemCount = quantity,
Collectability = collectability,
- ClassJob = (uint)classJob,
+ QuestAcceptedAsClass = (uint)classJob,
}
];
_questController.SetGatheringQuest(quest);
using FFXIVClientStructs.FFXIV.Client.UI.Agent;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib;
+using LLib.GameData;
using LLib.GameUI;
using Lumina.Excel.GeneratedSheets;
using Microsoft.Extensions.Logging;
using Questionable.Functions;
using Questionable.Model;
using Questionable.Model.Common;
+using Questionable.Model.Gathering;
using Questionable.Model.Questing;
using AethernetShortcut = Questionable.Controller.Steps.Shared.AethernetShortcut;
using Quest = Questionable.Model.Quest;
private readonly AetheryteFunctions _aetheryteFunctions;
private readonly ExcelFunctions _excelFunctions;
private readonly QuestController _questController;
+ private readonly GatheringData _gatheringData;
+ private readonly GatheringPointRegistry _gatheringPointRegistry;
private readonly QuestRegistry _questRegistry;
private readonly QuestData _questData;
private readonly IGameGui _gameGui;
private readonly ITargetManager _targetManager;
private readonly IFramework _framework;
+ private readonly IClientState _clientState;
private readonly ILogger<GameUiController> _logger;
private readonly Regex _returnRegex;
AetheryteFunctions aetheryteFunctions,
ExcelFunctions excelFunctions,
QuestController questController,
+ GatheringData gatheringData,
+ GatheringPointRegistry gatheringPointRegistry,
QuestRegistry questRegistry,
QuestData questData,
IGameGui gameGui,
ITargetManager targetManager,
IFramework framework,
IPluginLog pluginLog,
+ IClientState clientState,
ILogger<GameUiController> logger)
{
_addonLifecycle = addonLifecycle;
_aetheryteFunctions = aetheryteFunctions;
_excelFunctions = excelFunctions;
_questController = questController;
+ _gatheringData = gatheringData;
+ _gatheringPointRegistry = gatheringPointRegistry;
_questRegistry = questRegistry;
_questData = questData;
_gameGui = gameGui;
_targetManager = targetManager;
_framework = framework;
+ _clientState = clientState;
_logger = logger;
_returnRegex = _dataManager.GetExcelSheet<Addon>()!.GetRow(196)!.GetRegex(addon => addon.Text, pluginLog)!;
private unsafe bool HandleTravelYesNo(AddonSelectYesno* addonSelectYesno,
QuestController.QuestProgress currentQuest, string actualPrompt)
{
+ _logger.LogInformation("TravelYesNo");
if (_aetheryteFunctions.ReturnRequestedAt >= DateTime.Now.AddSeconds(-2) && _returnRegex.IsMatch(actualPrompt))
{
_logger.LogInformation("Automatically confirming return...");
step.TerritoryId,
step.TargetTerritoryId);
+ if (step != null && (step.TerritoryId != _clientState.TerritoryType || step.TargetTerritoryId == null) &&
+ step.RequiredGatheredItems.Count > 0)
+ {
+ if (_gatheringData.TryGetGatheringPointId(step.RequiredGatheredItems[0].ItemId,
+ (EClassJob?)_clientState.LocalPlayer?.ClassJob.Id ?? EClassJob.Adventurer,
+ out GatheringPointId? gatheringPointId) &&
+ _gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? root))
+ {
+ foreach (var gatheringStep in root.Steps)
+ {
+ if (gatheringStep.TerritoryId == _clientState.TerritoryType &&
+ gatheringStep.TargetTerritoryId != null)
+ {
+ _logger.LogTrace(
+ "FindTargetTerritoryFromQuestStep (gathering): {CurrentTerritory}, {TargetTerritory}",
+ gatheringStep.TerritoryId,
+ gatheringStep.TargetTerritoryId);
+ return gatheringStep.TargetTerritoryId;
+ }
+ }
+ }
+ }
+
if (step == null || step.TargetTerritoryId == null)
{
_logger.LogTrace("FindTargetTerritoryFromQuestStep: Checking previous step...");
}
}
- private sealed class CurrentRequest
+ internal sealed class CurrentRequest
{
public required GatheringRequest Data { get; init; }
public required GatheringRoot Root { get; init; }
using System.Linq;
using Dalamud.Game.Text;
using Dalamud.Plugin.Services;
+using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
using FFXIVClientStructs.FFXIV.Client.Game;
using LLib.GameData;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Common;
using Questionable.Data;
+using Questionable.Functions;
using Questionable.Model;
using Questionable.Model.Gathering;
using Questionable.Model.Questing;
{
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.Id;
EClassJob classJob = currentClassJob;
- if (requiredGatheredItems.ClassJob != null)
- classJob = (EClassJob)requiredGatheredItems.ClassJob.Value;
+ if (requiredGatheredItems.QuestAcceptedAsClass != null)
+ {
+ classJob = (EClassJob)requiredGatheredItems.QuestAcceptedAsClass.Value;
+ if (!IsClassJobQuestWasAcceptedWith(quest.Id, classJob))
+ continue;
+ }
if (!gatheringData.TryGetGatheringPointId(requiredGatheredItems.ItemId, classJob,
out GatheringPointId? gatheringPointId))
}
}
+ private unsafe bool IsClassJobQuestWasAcceptedWith(ElementId questId, EClassJob expectedClassJob)
+ {
+ if (questId is not QuestId)
+ return true;
+
+ QuestWork* questWork = QuestManager.Instance()->GetQuestById(questId.Value);
+ if (questWork->AcceptClassJob != 0)
+ return (EClassJob)questWork->AcceptClassJob == expectedClassJob;
+
+ return true;
+ }
+
private unsafe bool HasRequiredItems(GatheredItem requiredGatheredItems)
{
InventoryManager* inventoryManager = InventoryManager.Instance();
// Last enemy → increase sequence, reset variable to 0
// The order in which enemies are killed doesn't seem to matter.
// If multiple waves spawn, this continues to count up (e.g. 1 enemy from wave 1, 2 enemies from wave 2, 1 from wave 3) would count to 3 then 0
- _asString = $"QW: {vars.Trim()}";
+ _asString = $"QW: {vars.Trim()}, {(EClassJob)questWork.AcceptClassJob}";
}
public QuestProgressInfo(LeveWork leveWork)