Handle how required classes are configured for individual quest steps + gathering
This commit is contained in:
parent
d757250d62
commit
cc8f326d7e
2
LLib
2
LLib
@ -1 +1 @@
|
||||
Subproject commit 912a7b04ce180e337af9beeef2d1393b040c1ba8
|
||||
Subproject commit fde09c705b648f03c287814191a554f0a4b92cc4
|
@ -29,10 +29,6 @@ internal static class GatheredItemExtensions
|
||||
.AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(GatheredItem.Collectability), gatheredItem.Collectability,
|
||||
emptyItem.Collectability)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
Assignment(nameof(GatheredItem.QuestAcceptedAsClass),
|
||||
gatheredItem.QuestAcceptedAsClass,
|
||||
emptyItem.QuestAcceptedAsClass)
|
||||
.AsSyntaxNodeOrToken()))));
|
||||
}
|
||||
}
|
||||
|
@ -120,6 +120,12 @@ internal static class QuestStepExtensions
|
||||
AssignmentList(nameof(QuestStep.RequiredQuestVariables),
|
||||
step.RequiredQuestVariables)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(QuestStep.RequiredCurrentJob),
|
||||
step.RequiredCurrentJob)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(QuestStep.RequiredQuestAcceptedJob),
|
||||
step.RequiredQuestAcceptedJob)
|
||||
.AsSyntaxNodeOrToken(),
|
||||
AssignmentList(nameof(QuestStep.ItemsToGather),
|
||||
step.ItemsToGather),
|
||||
AssignmentList(nameof(QuestStep.CompletionQuestVariablesFlags),
|
||||
|
@ -40,10 +40,88 @@
|
||||
{
|
||||
"Sequence": 255,
|
||||
"Steps": [
|
||||
{
|
||||
"Position": {
|
||||
"X": -12.223117,
|
||||
"Y": -2.0482793,
|
||||
"Z": -145.75566
|
||||
},
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "WalkTo"
|
||||
},
|
||||
{
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "EquipRecommended"
|
||||
},
|
||||
{
|
||||
"DataId": 1001564,
|
||||
"Position": {
|
||||
"X": -9.689575,
|
||||
"Y": -2.0480804,
|
||||
"Z": -145.09808
|
||||
},
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "PurchaseItem",
|
||||
"PurchaseMenu": {
|
||||
"ExcelSheet": "GilShop",
|
||||
"Key": 262186
|
||||
},
|
||||
"ItemId": 2654,
|
||||
"ItemCount": 1,
|
||||
"RequiredCurrentJob": [
|
||||
"DoW"
|
||||
],
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Item": {
|
||||
"NotInInventory": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1001564,
|
||||
"Position": {
|
||||
"X": -9.689575,
|
||||
"Y": -2.0480804,
|
||||
"Z": -145.09808
|
||||
},
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "PurchaseItem",
|
||||
"PurchaseMenu": {
|
||||
"ExcelSheet": "GilShop",
|
||||
"Key": 262186
|
||||
},
|
||||
"ItemId": 2655,
|
||||
"ItemCount": 1,
|
||||
"RequiredCurrentJob": [
|
||||
"DoM"
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "EquipItem",
|
||||
"ItemId": 2654,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Item": {
|
||||
"NotInInventory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "EquipItem",
|
||||
"ItemId": 2655,
|
||||
"SkipConditions": {
|
||||
"StepIf": {
|
||||
"Item": {
|
||||
"NotInInventory": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"DataId": 1001447,
|
||||
"Position": {
|
||||
@ -52,8 +130,7 @@
|
||||
"Z": -148.51611
|
||||
},
|
||||
"TerritoryId": 141,
|
||||
"InteractionType": "CompleteQuest",
|
||||
"Comment": "All starting gear (except the hat) is ilvl 5 already"
|
||||
"InteractionType": "CompleteQuest"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29517,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29543,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29518,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29544,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29519,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29545,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29520,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29546,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29521,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29547,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29522,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29548,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29523,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29549,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29524,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29550,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29525,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29551,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29526,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29552,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29527,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29553,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29528,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29554,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29529,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29555,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29530,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29556,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29531,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29557,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29532,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29558,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29533,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29559,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,25 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29534,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29560,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29535,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29561,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29536,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29562,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -40,14 +40,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29513,
|
||||
"ItemCount": 1
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29539,
|
||||
"ItemCount": 1
|
||||
}
|
||||
|
@ -55,14 +55,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29514,
|
||||
"ItemCount": 1
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29540,
|
||||
"ItemCount": 1
|
||||
}
|
||||
|
@ -38,14 +38,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29515,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29541,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -85,14 +85,24 @@
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 29516,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 817,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 29542,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38281,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38305,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38282,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38306,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -34,14 +34,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38284,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38308,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38283,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38307,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -34,14 +34,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38285,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38309,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,19 +23,28 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38286,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38310,
|
||||
"ItemCount": 3
|
||||
}
|
||||
],
|
||||
"Fly": true
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2013072,
|
||||
|
@ -35,14 +35,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38287,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38311,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -35,14 +35,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38288,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38312,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -49,14 +49,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38289,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38313,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38290,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38314,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -35,14 +35,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38291,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38315,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -34,14 +34,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38292,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38316,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -34,14 +34,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38293,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38317,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38294,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38318,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38295,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38319,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -49,14 +49,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38296,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38320,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -23,14 +23,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38297,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38321,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -24,14 +24,25 @@
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"AetheryteShortcut": "Ultima Thule - Reah Tahra",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38299,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"AetheryteShortcut": "Ultima Thule - Reah Tahra",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38323,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -34,14 +34,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38298,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38322,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -116,14 +116,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38276,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38300,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -172,14 +172,24 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38277,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38301,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -140,19 +140,28 @@
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38278,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 960,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38302,
|
||||
"ItemCount": 3
|
||||
}
|
||||
],
|
||||
"Fly": true
|
||||
]
|
||||
},
|
||||
{
|
||||
"DataId": 2013072,
|
||||
|
@ -92,14 +92,24 @@
|
||||
{
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38279,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 398,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38303,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -157,14 +157,24 @@
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Miner"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Miner",
|
||||
"ItemId": 38280,
|
||||
"ItemCount": 3
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"TerritoryId": 1073,
|
||||
"InteractionType": "Gather",
|
||||
"RequiredQuestAcceptedJob": [
|
||||
"Botanist"
|
||||
],
|
||||
"ItemsToGather": [
|
||||
{
|
||||
"QuestAcceptedAsClass": "Botanist",
|
||||
"ItemId": 38304,
|
||||
"ItemCount": 3
|
||||
}
|
||||
|
@ -422,6 +422,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"RequiredCurrentJob": {
|
||||
"description": "Which class or job you are using whenever this step gets executed",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/ClassJob"
|
||||
}
|
||||
},
|
||||
"RequiredQuestAcceptedJob": {
|
||||
"description": "Which class or job you were using when accepting this quest (e.g. for beast tribes)",
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/ClassJob"
|
||||
}
|
||||
},
|
||||
"DelaySecondsAtStart": {
|
||||
"description": "Time to wait before starting",
|
||||
"type": [
|
||||
@ -1313,13 +1327,6 @@
|
||||
"type": "number",
|
||||
"minimum": 0,
|
||||
"maximum": 1000
|
||||
},
|
||||
"QuestAcceptedAsClass": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Miner",
|
||||
"Botanist"
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
|
@ -1,26 +0,0 @@
|
||||
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();
|
||||
}
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
using System.Collections.Generic;
|
||||
using Questionable.Model.Common.Converter;
|
||||
|
||||
namespace Questionable.Model.Questing.Converter;
|
||||
|
||||
internal sealed class ExtendedClassJobConverter() : EnumConverter<EExtendedClassJob>(Values)
|
||||
{
|
||||
private static readonly Dictionary<EExtendedClassJob, string> Values = new()
|
||||
{
|
||||
{ EExtendedClassJob.Gladiator, "Gladiator" },
|
||||
{ EExtendedClassJob.Pugilist, "Pugilist" },
|
||||
{ EExtendedClassJob.Marauder, "Marauder" },
|
||||
{ EExtendedClassJob.Lancer, "Lancer" },
|
||||
{ EExtendedClassJob.Archer, "Archer" },
|
||||
{ EExtendedClassJob.Conjurer, "Conjurer" },
|
||||
{ EExtendedClassJob.Thaumaturge, "Thaumaturge" },
|
||||
{ EExtendedClassJob.Carpenter, "Carpenter" },
|
||||
{ EExtendedClassJob.Blacksmith, "Blacksmith" },
|
||||
{ EExtendedClassJob.Armorer, "Armorer" },
|
||||
{ EExtendedClassJob.Goldsmith, "Goldsmith" },
|
||||
{ EExtendedClassJob.Leatherworker, "Leatherworker" },
|
||||
{ EExtendedClassJob.Weaver, "Weaver" },
|
||||
{ EExtendedClassJob.Alchemist, "Alchemist" },
|
||||
{ EExtendedClassJob.Culinarian, "Culinarian" },
|
||||
{ EExtendedClassJob.Miner, "Miner" },
|
||||
{ EExtendedClassJob.Botanist, "Botanist" },
|
||||
{ EExtendedClassJob.Fisher, "Fisher" },
|
||||
{ EExtendedClassJob.Paladin, "Paladin" },
|
||||
{ EExtendedClassJob.Monk, "Monk" },
|
||||
{ EExtendedClassJob.Warrior, "Warrior" },
|
||||
{ EExtendedClassJob.Dragoon, "Dragoon" },
|
||||
{ EExtendedClassJob.Bard, "Bard" },
|
||||
{ EExtendedClassJob.WhiteMage, "White Mage" },
|
||||
{ EExtendedClassJob.BlackMage, "Black Mage" },
|
||||
{ EExtendedClassJob.Arcanist, "Arcanist" },
|
||||
{ EExtendedClassJob.Summoner, "Summoner" },
|
||||
{ EExtendedClassJob.Scholar, "Scholar" },
|
||||
{ EExtendedClassJob.Rogue, "Rogue" },
|
||||
{ EExtendedClassJob.Ninja, "Ninja" },
|
||||
{ EExtendedClassJob.Machinist, "Machinist" },
|
||||
{ EExtendedClassJob.DarkKnight, "Dark Knight" },
|
||||
{ EExtendedClassJob.Astrologian, "Astrologian" },
|
||||
{ EExtendedClassJob.Samurai, "Samurai" },
|
||||
{ EExtendedClassJob.RedMage, "Red Mage" },
|
||||
{ EExtendedClassJob.BlueMage, "Blue Mage" },
|
||||
{ EExtendedClassJob.Gunbreaker, "Gunbreaker" },
|
||||
{ EExtendedClassJob.Dancer, "Dancer" },
|
||||
{ EExtendedClassJob.Reaper, "Reaper" },
|
||||
{ EExtendedClassJob.Sage, "Sage" },
|
||||
{ EExtendedClassJob.Viper, "Viper" },
|
||||
{ EExtendedClassJob.Pictomancer, "Pictomancer" },
|
||||
{ EExtendedClassJob.DoW, "DoW" },
|
||||
{ EExtendedClassJob.DoM, "DoM" },
|
||||
{ EExtendedClassJob.DoH, "DoH" },
|
||||
{ EExtendedClassJob.DoL, "DoL" },
|
||||
};
|
||||
}
|
55
Questionable.Model/Questing/EExtendedClassJob.cs
Normal file
55
Questionable.Model/Questing/EExtendedClassJob.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using Questionable.Model.Questing.Converter;
|
||||
|
||||
namespace Questionable.Model.Questing;
|
||||
|
||||
[JsonConverter(typeof(ExtendedClassJobConverter))]
|
||||
public enum EExtendedClassJob
|
||||
{
|
||||
Gladiator,
|
||||
Pugilist,
|
||||
Marauder,
|
||||
Lancer,
|
||||
Archer,
|
||||
Conjurer,
|
||||
Thaumaturge,
|
||||
Carpenter,
|
||||
Blacksmith,
|
||||
Armorer,
|
||||
Goldsmith,
|
||||
Leatherworker,
|
||||
Weaver,
|
||||
Alchemist,
|
||||
Culinarian,
|
||||
Miner,
|
||||
Botanist,
|
||||
Fisher,
|
||||
Paladin,
|
||||
Monk,
|
||||
Warrior,
|
||||
Dragoon,
|
||||
Bard,
|
||||
WhiteMage,
|
||||
BlackMage,
|
||||
Arcanist,
|
||||
Summoner,
|
||||
Scholar,
|
||||
Rogue,
|
||||
Ninja,
|
||||
Machinist,
|
||||
DarkKnight,
|
||||
Astrologian,
|
||||
Samurai,
|
||||
RedMage,
|
||||
BlueMage,
|
||||
Gunbreaker,
|
||||
Dancer,
|
||||
Reaper,
|
||||
Sage,
|
||||
Viper,
|
||||
Pictomancer,
|
||||
DoW,
|
||||
DoM,
|
||||
DoH,
|
||||
DoL,
|
||||
}
|
@ -9,10 +9,4 @@ public sealed class GatheredItem
|
||||
public uint AlternativeItemId { get; set; }
|
||||
public int ItemCount { get; set; }
|
||||
public ushort Collectability { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Either miner or botanist; null if it is irrelevant (prefers current class/job, then any unlocked ones).
|
||||
/// </summary>
|
||||
[JsonConverter(typeof(ClassJobConverter))]
|
||||
public uint? QuestAcceptedAsClass { get; set; }
|
||||
}
|
||||
|
@ -76,6 +76,8 @@ public sealed class QuestStep
|
||||
public SkipConditions? SkipConditions { get; set; }
|
||||
|
||||
public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new();
|
||||
public List<EExtendedClassJob> RequiredCurrentJob { get; set; } = [];
|
||||
public List<EExtendedClassJob> RequiredQuestAcceptedJob { get; set; } = [];
|
||||
public List<GatheredItem> ItemsToGather { get; set; } = [];
|
||||
public List<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = [];
|
||||
public List<DialogueChoice> DialogueChoices { get; set; } = [];
|
||||
|
@ -282,6 +282,57 @@
|
||||
"[Solution Nine] Scanning Port Nine (Heritage Found)"
|
||||
]
|
||||
},
|
||||
"ClassJob": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Gladiator",
|
||||
"Pugilist",
|
||||
"Marauder",
|
||||
"Lancer",
|
||||
"Archer",
|
||||
"Conjurer",
|
||||
"Thaumaturge",
|
||||
"Carpenter",
|
||||
"Blacksmith",
|
||||
"Armorer",
|
||||
"Goldsmith",
|
||||
"Leatherworker",
|
||||
"Weaver",
|
||||
"Alchemist",
|
||||
"Culinarian",
|
||||
"Miner",
|
||||
"Botanist",
|
||||
"Fisher",
|
||||
"Paladin",
|
||||
"Monk",
|
||||
"Warrior",
|
||||
"Dragoon",
|
||||
"Bard",
|
||||
"White Mage",
|
||||
"Black Mage",
|
||||
"Arcanist",
|
||||
"Summoner",
|
||||
"Scholar",
|
||||
"Rogue",
|
||||
"Ninja",
|
||||
"Machinist",
|
||||
"Dark Knight",
|
||||
"Astrologian",
|
||||
"Samurai",
|
||||
"Red Mage",
|
||||
"Blue Mage",
|
||||
"Gunbreaker",
|
||||
"Dancer",
|
||||
"Reaper",
|
||||
"Sage",
|
||||
"Viper",
|
||||
"Pictomancer",
|
||||
"DoW",
|
||||
"DoM",
|
||||
"DoH",
|
||||
"DoL"
|
||||
]
|
||||
},
|
||||
"CompletionFlags": {
|
||||
"type": "array",
|
||||
"description": "Quest Variables that dictate whether or not this step is skipped: null is don't check, positive values need to be set, negative values need to be unset",
|
||||
|
@ -123,12 +123,12 @@ internal sealed class ContextMenuController : IDisposable
|
||||
Prefix = SeIconChar.Hyadelyn,
|
||||
PrefixColor = 52,
|
||||
Name = name,
|
||||
OnClicked = _ => StartGathering(npcId, itemId, quantityToGather, collectability, classJob),
|
||||
OnClicked = _ => StartGathering(npcId, itemId, quantityToGather, collectability),
|
||||
IsEnabled = string.IsNullOrEmpty(lockedReasonn),
|
||||
});
|
||||
}
|
||||
|
||||
private void StartGathering(uint npcId, uint itemId, int quantity, ushort collectability, EClassJob classJob)
|
||||
private void StartGathering(uint npcId, uint itemId, int quantity, ushort collectability)
|
||||
{
|
||||
var info = (SatisfactionSupplyInfo)_questData.GetAllByIssuerDataId(npcId)
|
||||
.Single(x => x is SatisfactionSupplyInfo);
|
||||
@ -142,7 +142,6 @@ internal sealed class ContextMenuController : IDisposable
|
||||
ItemId = itemId,
|
||||
ItemCount = quantity,
|
||||
Collectability = collectability,
|
||||
QuestAcceptedAsClass = (uint)classJob,
|
||||
}
|
||||
];
|
||||
_questController.SetGatheringQuest(quest);
|
||||
|
@ -36,26 +36,13 @@ internal static class Gather
|
||||
foreach (var itemToGather in step.ItemsToGather)
|
||||
{
|
||||
EClassJob currentClassJob = (EClassJob)clientState.LocalPlayer!.ClassJob.Id;
|
||||
EClassJob classJob = currentClassJob;
|
||||
if (itemToGather.QuestAcceptedAsClass != null)
|
||||
{
|
||||
classJob = (EClassJob)itemToGather.QuestAcceptedAsClass.Value;
|
||||
if (!IsClassJobQuestWasAcceptedWith(quest.Id, classJob))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!gatheringData.TryGetGatheringPointId(itemToGather.ItemId, classJob,
|
||||
if (!gatheringData.TryGetGatheringPointId(itemToGather.ItemId, currentClassJob,
|
||||
out GatheringPointId? gatheringPointId))
|
||||
throw new TaskException($"No gathering point found for item {itemToGather.ItemId}");
|
||||
|
||||
if (!gatheringPointRegistry.TryGetGatheringPoint(gatheringPointId, out GatheringRoot? gatheringRoot))
|
||||
throw new TaskException($"No path found for gathering point {gatheringPointId}");
|
||||
|
||||
if (classJob != currentClassJob)
|
||||
{
|
||||
yield return new SwitchClassJob.Task(classJob);
|
||||
}
|
||||
|
||||
if (HasRequiredItems(itemToGather))
|
||||
continue;
|
||||
|
||||
@ -89,18 +76,6 @@ internal static class Gather
|
||||
}
|
||||
}
|
||||
|
||||
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 itemToGather)
|
||||
{
|
||||
InventoryManager* inventoryManager = InventoryManager.Instance();
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using Dalamud.Game.ClientState.Objects.Types;
|
||||
@ -6,8 +7,10 @@ using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.Object;
|
||||
using FFXIVClientStructs.FFXIV.Client.Game.UI;
|
||||
using LLib.GameData;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Questionable.Controller.Utils;
|
||||
using Questionable.Data;
|
||||
using Questionable.Functions;
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.Common;
|
||||
@ -29,7 +32,9 @@ internal static class SkipCondition
|
||||
!QuestWorkUtils.HasCompletionFlags(step.CompletionQuestVariablesFlags) &&
|
||||
step.RequiredQuestVariables.Count == 0 &&
|
||||
step.PickUpQuestId == null &&
|
||||
step.NextQuestId == null)
|
||||
step.NextQuestId == null &&
|
||||
step.RequiredCurrentJob.Count == 0 &&
|
||||
step.RequiredQuestAcceptedJob.Count == 0)
|
||||
return null;
|
||||
|
||||
return new SkipTask(step, skipConditions ?? new(), quest.Id);
|
||||
@ -136,7 +141,8 @@ internal static class SkipCondition
|
||||
GameObject* gameObject = (GameObject*)target.Address;
|
||||
if (!skipConditions.NotNamePlateIconId.Contains(gameObject->NamePlateIconId))
|
||||
{
|
||||
logger.LogInformation("Skipping step, object has icon id {IconId}", gameObject->NamePlateIconId);
|
||||
logger.LogInformation("Skipping step, object has icon id {IconId}",
|
||||
gameObject->NamePlateIconId);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -213,6 +219,34 @@ internal static class SkipCondition
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (step is { RequiredQuestAcceptedJob.Count: > 0 })
|
||||
{
|
||||
List<EClassJob> expectedJobs = step.RequiredQuestAcceptedJob
|
||||
.SelectMany(ClassJobUtils.AsIndividualJobs).ToList();
|
||||
EClassJob questJob = questWork.ClassJob;
|
||||
logger.LogInformation("Checking quest job {QuestJob} against {ExpectedJobs}", questJob,
|
||||
string.Join(",", expectedJobs));
|
||||
if (questJob != EClassJob.Adventurer && !expectedJobs.Contains(questJob))
|
||||
{
|
||||
logger.LogInformation("Skipping step, as quest was accepted on a different job");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (step is { RequiredCurrentJob.Count: > 0 })
|
||||
{
|
||||
List<EClassJob> expectedJobs =
|
||||
step.RequiredCurrentJob.SelectMany(ClassJobUtils.AsIndividualJobs).ToList();
|
||||
EClassJob currentJob = (EClassJob)clientState.LocalPlayer!.ClassJob.Id;
|
||||
logger.LogInformation("Checking current job {CurrentJob} against {ExpectedJobs}", currentJob,
|
||||
string.Join(",", expectedJobs));
|
||||
if (!expectedJobs.Contains(currentJob))
|
||||
{
|
||||
logger.LogInformation("Skipping step, as step requires a different job");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (skipConditions.NearPosition is { } nearPosition &&
|
||||
@ -231,7 +265,8 @@ internal static class SkipCondition
|
||||
var position = clientState.LocalPlayer?.Position;
|
||||
if (position != null &&
|
||||
clientState.TerritoryType != 0 &&
|
||||
MatchesExtraCondition(skipConditions.ExtraCondition.Value, position.Value, clientState.TerritoryType))
|
||||
MatchesExtraCondition(skipConditions.ExtraCondition.Value, position.Value,
|
||||
clientState.TerritoryType))
|
||||
{
|
||||
logger.LogInformation("Skipping step, extra condition {} matches", skipConditions.ExtraCondition);
|
||||
return true;
|
||||
|
66
Questionable/Data/ClassJobUtils.cs
Normal file
66
Questionable/Data/ClassJobUtils.cs
Normal file
@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using LLib.GameData;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Data;
|
||||
|
||||
public static class ClassJobUtils
|
||||
{
|
||||
public static IEnumerable<EClassJob> AsIndividualJobs(EExtendedClassJob classJob)
|
||||
{
|
||||
return classJob switch
|
||||
{
|
||||
EExtendedClassJob.Gladiator => [EClassJob.Gladiator],
|
||||
EExtendedClassJob.Pugilist => [EClassJob.Pugilist],
|
||||
EExtendedClassJob.Marauder => [EClassJob.Marauder],
|
||||
EExtendedClassJob.Lancer => [EClassJob.Lancer],
|
||||
EExtendedClassJob.Archer => [EClassJob.Archer],
|
||||
EExtendedClassJob.Conjurer => [EClassJob.Conjurer],
|
||||
EExtendedClassJob.Thaumaturge => [EClassJob.Thaumaturge],
|
||||
EExtendedClassJob.Carpenter => [EClassJob.Carpenter],
|
||||
EExtendedClassJob.Blacksmith => [EClassJob.Blacksmith],
|
||||
EExtendedClassJob.Armorer => [EClassJob.Armorer],
|
||||
EExtendedClassJob.Goldsmith => [EClassJob.Goldsmith],
|
||||
EExtendedClassJob.Leatherworker => [EClassJob.Leatherworker],
|
||||
EExtendedClassJob.Weaver => [EClassJob.Weaver],
|
||||
EExtendedClassJob.Alchemist => [EClassJob.Alchemist],
|
||||
EExtendedClassJob.Culinarian => [EClassJob.Culinarian],
|
||||
EExtendedClassJob.Miner => [EClassJob.Miner],
|
||||
EExtendedClassJob.Botanist => [EClassJob.Botanist],
|
||||
EExtendedClassJob.Fisher => [EClassJob.Fisher],
|
||||
EExtendedClassJob.Paladin => [EClassJob.Paladin],
|
||||
EExtendedClassJob.Monk => [EClassJob.Monk],
|
||||
EExtendedClassJob.Warrior => [EClassJob.Warrior],
|
||||
EExtendedClassJob.Dragoon => [EClassJob.Dragoon],
|
||||
EExtendedClassJob.Bard => [EClassJob.Bard],
|
||||
EExtendedClassJob.WhiteMage => [EClassJob.WhiteMage],
|
||||
EExtendedClassJob.BlackMage => [EClassJob.BlackMage],
|
||||
EExtendedClassJob.Arcanist => [EClassJob.Arcanist],
|
||||
EExtendedClassJob.Summoner => [EClassJob.Summoner],
|
||||
EExtendedClassJob.Scholar => [EClassJob.Scholar],
|
||||
EExtendedClassJob.Rogue => [EClassJob.Rogue],
|
||||
EExtendedClassJob.Ninja => [EClassJob.Ninja],
|
||||
EExtendedClassJob.Machinist => [EClassJob.Machinist],
|
||||
EExtendedClassJob.DarkKnight => [EClassJob.DarkKnight],
|
||||
EExtendedClassJob.Astrologian => [EClassJob.Astrologian],
|
||||
EExtendedClassJob.Samurai => [EClassJob.Samurai],
|
||||
EExtendedClassJob.RedMage => [EClassJob.RedMage],
|
||||
EExtendedClassJob.BlueMage => [EClassJob.BlueMage],
|
||||
EExtendedClassJob.Gunbreaker => [EClassJob.Gunbreaker],
|
||||
EExtendedClassJob.Dancer => [EClassJob.Dancer],
|
||||
EExtendedClassJob.Reaper => [EClassJob.Reaper],
|
||||
EExtendedClassJob.Sage => [EClassJob.Sage],
|
||||
EExtendedClassJob.Viper => [EClassJob.Viper],
|
||||
EExtendedClassJob.Pictomancer => [EClassJob.Pictomancer],
|
||||
|
||||
EExtendedClassJob.DoW => Enum.GetValues<EClassJob>().Where(x => x.DealsPhysicalDamage()),
|
||||
EExtendedClassJob.DoM => Enum.GetValues<EClassJob>().Where(x => x.DealsMagicDamage()),
|
||||
EExtendedClassJob.DoH => Enum.GetValues<EClassJob>().Where(x => x.IsCrafter()),
|
||||
EExtendedClassJob.DoL => Enum.GetValues<EClassJob>().Where(x => x.IsGatherer()),
|
||||
|
||||
_ => throw new ArgumentOutOfRangeException(nameof(classJob), classJob, null)
|
||||
};
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user