Compare commits

...

22 Commits

Author SHA1 Message Date
4f6914d835
Extend error toast handling 2024-09-25 20:07:40 +02:00
4bd0b990b9
Update source gen 2024-09-23 20:32:54 +02:00
01ad85e243
Version Bump 2024-09-23 20:27:07 +02:00
07dd0705e0 Merge pull request '[ShB][Allied Society][Qitari] Added new story quests' (#61) from plogon_enjoyer/Questionable:qitari into master
Reviewed-on: liza/Questionable#61
2024-09-23 18:16:04 +00:00
b72a49ccd5 Merge pull request '[HW][Allied Society][Vanu Vanu] Added a few daily quests' (#58) from plogon_enjoyer/Questionable:vanuvanu into master
Reviewed-on: liza/Questionable#58
2024-09-23 18:14:23 +00:00
da8117848d Merge pull request '[HW][Allied Society][Vath] Added a few daily quests' (#57) from plogon_enjoyer/Questionable:vath into master
Reviewed-on: liza/Questionable#57
2024-09-23 18:13:40 +00:00
6aca596c67 Merge pull request '[EW][Allied Society][Loporrits] Add Carrotlight, Carrot Bright quest.' (#56) from kaiserbh/Questionable:feat/ew-allied-society-loporrits into master
Reviewed-on: liza/Questionable#56
2024-09-23 18:13:17 +00:00
kaiser
878f0b1ad1 chore: review amends.
Remove disabled, and changed author.
2024-09-24 02:51:04 +10:00
Plogon Enjoyer
94e20fdcbf Added the following daily quests:
- Veni, Vundu, Vici
- Pussyfooting About
2024-09-24 00:33:35 +08:00
Plogon Enjoyer
20e9319f32 Cleaned-up sequence 255 for some daily quests 2024-09-24 00:15:11 +08:00
Plogon Enjoyer
61b3abc3cd Added new daily quests:
- Electric Gunduloo
- Wildwort and Sundrop
- Vanish, Vile Vundu
2024-09-24 00:15:11 +08:00
Plogon Enjoyer
367c00c79c Added emote "Sundrop Dance" 2024-09-24 00:15:11 +08:00
Plogon Enjoyer
098a19fec2 Added the following story quests:
- A Chilling Fate
- The Third Stella: A Famine for Fishermen
- The Third Stella: A Feast for Fishermen
2024-09-24 00:01:24 +08:00
4767af7cc5
Add EnemySpawnType: AfterEmote 2024-09-23 16:25:23 +02:00
01c88ecb84
Update pathing for 'A Bit of Home Cooking' 2024-09-23 03:14:04 +02:00
07286839cf
Add Ananta unlock quests 2024-09-23 03:07:25 +02:00
4aa4032cd1
Minor path updates 2024-09-23 02:04:05 +02:00
361a3ff5f8
Add conditions for skipping interacting with firmament npcs after 'Towards the Firmament' 2024-09-23 02:00:32 +02:00
0ac2e36afd
Fix pathing in 'Renewing the Covenant' 2024-09-23 00:48:57 +02:00
26ad97c9e2
Clean up 2024-09-22 23:02:40 +02:00
Plogon Enjoyer
1c4fb29205 Added the following daily quests:
- A Romp around the Foothills
- Neighborhood Squabbles
2024-09-23 00:29:15 +08:00
kaiser
a96cdc99f6 feat: add Carrotlight, Carrot Bright quest. 2024-09-22 18:49:52 +10:00
55 changed files with 2357 additions and 161 deletions

View File

@ -1,5 +1,5 @@
<Project>
<PropertyGroup>
<Version>3.6</Version>
<Version>3.7</Version>
</PropertyGroup>
</Project>

2
LLib

@ -1 +1 @@
Subproject commit e6e3a1f29715e2af4976dd7338ed2f09ae82c99c
Subproject commit 6dfc18ee6a187138036ee2d51ba2257741c1e568

View File

@ -0,0 +1,28 @@
using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Questionable.Model.Questing;
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
using static Questionable.QuestPathGenerator.RoslynShortcuts;
namespace Questionable.QuestPathGenerator.RoslynElements;
internal static class PurchaseMenuExtensions
{
public static ExpressionSyntax ToExpressionSyntax(this PurchaseMenu purchaseMenu)
{
PurchaseMenu emptyMenu = new();
return ObjectCreationExpression(
IdentifierName(nameof(PurchaseMenu)))
.WithInitializer(
InitializerExpression(
SyntaxKind.ObjectInitializerExpression,
SeparatedList<ExpressionSyntax>(
SyntaxNodeList(
Assignment(nameof(PurchaseMenu.ExcelSheet), purchaseMenu.ExcelSheet,
emptyMenu.ExcelSheet)
.AsSyntaxNodeOrToken(),
Assignment(nameof(PurchaseMenu.Key), purchaseMenu.Key,
emptyMenu.Key)
.AsSyntaxNodeOrToken()))));
}
}

View File

@ -65,6 +65,8 @@ internal static class SkipConditionsExtensions
skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.NotNamePlateIconId),
skipStepConditions.NotNamePlateIconId).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteLocked),
skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked)
.AsSyntaxNodeOrToken(),

View File

@ -57,6 +57,7 @@ public static class RoslynShortcuts
DialogueChoice dialogueChoice => dialogueChoice.ToExpressionSyntax(),
JumpDestination jumpDestination => jumpDestination.ToExpressionSyntax(),
ExcelRef excelRef => excelRef.ToExpressionSyntax(),
PurchaseMenu purchaseMenu => purchaseMenu.ToExpressionSyntax(),
ComplexCombatData complexCombatData => complexCombatData.ToExpressionSyntax(),
QuestWorkValue questWorkValue => questWorkValue.ToExpressionSyntax(),
List<QuestWorkValue> list => list.ToExpressionSyntax(), // TODO fix in AssignmentList

View File

@ -57,13 +57,12 @@
},
{
"Position": {
"X": 49.65071,
"Y": -8.046952,
"Z": 102.32186
"X": 40.596844,
"Y": -8,
"Z": 103.85207
},
"TerritoryId": 132,
"InteractionType": "WalkTo",
"$": "New Gridania Navmesh workaround"
"InteractionType": "WalkTo"
},
{
"DataId": 1000460,

View File

@ -0,0 +1,91 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006639,
"Position": {
"X": -270.3136,
"Y": -13.962036,
"Z": -635.2484
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006642,
"Position": {
"X": -245.41089,
"Y": -13.229614,
"Z": -608.2704
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5236],
"Fly": true
},
{
"DataId": 2006640,
"Position": {
"X": -82.230896,
"Y": -10.727112,
"Z": -637.90344
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006641,
"Position": {
"X": -24.765442,
"Y": 5.3253784,
"Z": -657.70966
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5236],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,110 @@
{
"$schema": "https://git.carvel.li/plogon_enjoyer/Questionable/raw/branch/temp/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006645,
"Position": {
"X": -473.10602,
"Y": -56.01587,
"Z": -624.1398
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006644,
"Position": {
"X": -365.92664,
"Y": -57.053528,
"Z": -579.553
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006643,
"Position": {
"X": -381.9486,
"Y": -56.50421,
"Z": -521.8433
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1012056,
"Position": {
"X": -658.89984,
"Y": -127.78361,
"Z": 622.98
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Camp Cloudtop",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "Interact",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -102,17 +102,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016091,
"Position": {
@ -122,6 +111,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -78,17 +78,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016090,
"Position": {
@ -98,6 +87,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -81,17 +81,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016090,
"Position": {
@ -101,6 +90,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -101,17 +101,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -121,6 +110,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -67,17 +67,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -87,6 +76,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -73,17 +73,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -93,6 +82,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -84,26 +84,6 @@
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": 297.20715,
"Y": 106.011185,
"Z": -25.524097
},
"TerritoryId": 401,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -660.26556,
"Y": -49.27812,
"Z": -403.1036
},
"TerritoryId": 401,
"InteractionType": "WalkTo",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
},
{
"DataId": 1016092,
"Position": {
@ -113,6 +93,7 @@
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]

View File

@ -0,0 +1,107 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016241,
"Position": {
"X": -182.94049,
"Y": 213.612,
"Z": 204.57764
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"Position": {
"X": -182.94049,
"Y": 213.612,
"Z": 204.57764
},
"TerritoryId": 401,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [5235],
"CombatDelaySecondsAtStart": 0
},
{
"DataId": 1016239,
"Position": {
"X": -64.683044,
"Y": 212.9267,
"Z": 101.33508
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
},
{
"DataId": 1016240,
"Position": {
"X": 233.23413,
"Y": 240.42369,
"Z": 118.30322
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,103 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2006708,
"Position": {
"X": -198.41309,
"Y": 93.55298,
"Z": -303.88342
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2006695,
"Position": {
"X": 111.46704,
"Y": -84.55023,
"Z": 429.83142
},
"TerritoryId": 401,
"InteractionType": "UseItem",
"ItemId": 2001927,
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2006696,
"Position": {
"X": 111.436646,
"Y": -83.024414,
"Z": 428.85486
},
"TerritoryId": 401,
"InteractionType": "Emote",
"Emote": "sundropdance"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,121 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016089,
"Position": {
"X": -799.46594,
"Y": -133.2695,
"Z": -404.1352
},
"TerritoryId": 401,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016093,
"Position": {
"X": -776.0281,
"Y": -133.35559,
"Z": -414.32825
},
"TerritoryId": 401,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1016242,
"Position": {
"X": 284.19922,
"Y": 28.574171,
"Z": -636.3775
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1016378,
"Position": {
"X": 338.4298,
"Y": 31.483738,
"Z": -562.1882
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1016379,
"Position": {
"X": 501.27405,
"Y": 112.648964,
"Z": -182.97095
},
"TerritoryId": 401,
"InteractionType": "Action",
"Action": "Buffet (Sanuwa)",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016088,
"Position": {
"X": -818.143,
"Y": -129.93259,
"Z": -414.02307
},
"TerritoryId": 401,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,117 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1016875,
"Position": {
"X": -274.09784,
"Y": -22.971008,
"Z": 22.812195
},
"TerritoryId": 398,
"InteractionType": "Interact",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1016876,
"Position": {
"X": 148.48547,
"Y": 65.56322,
"Z": -644.09863
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1016877,
"Position": {
"X": 212.23767,
"Y": 52.205494,
"Z": -777.676
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1016878,
"Position": {
"X": 210.31506,
"Y": 59.655575,
"Z": -919.06616
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1016875,
"Position": {
"X": -274.09784,
"Y": -22.971008,
"Z": 22.812195
},
"TerritoryId": 398,
"InteractionType": "Interact",
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "CompleteQuest",
"Fly": true
}
]
}
]
}

View File

@ -0,0 +1,91 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2006945,
"Position": {
"X": 204.63867,
"Y": -106.43176,
"Z": 360.55542
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
},
{
"DataId": 2006947,
"Position": {
"X": 205.98145,
"Y": -109.544556,
"Z": 389.7306
},
"TerritoryId": 398,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5549],
"Fly": true
},
{
"DataId": 2006948,
"Position": {
"X": 154.43652,
"Y": -112.50476,
"Z": 445.15137
},
"TerritoryId": 398,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [5549],
"Fly": true
},
{
"DataId": 2006946,
"Position": {
"X": 153.0022,
"Y": -86.289795,
"Z": 418.44812
},
"TerritoryId": 398,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1016803,
"Position": {
"X": 57.297607,
"Y": -47.842846,
"Z": -174.63953
},
"TerritoryId": 398,
"InteractionType": "CompleteQuest",
"Fly": true,
"AetheryteShortcut": "The Dravanian Forelands - Anyx Trine"
}
]
}
]
}

View File

@ -5,6 +5,22 @@
{
"Sequence": 0,
"Steps": [
{
"InteractionType": "None",
"TerritoryId": 886,
"AetheryteShortcut": "Ishgard",
"AethernetShortcut": [
"[Ishgard] Aetheryte Plaza",
"[Ishgard] Firmament"
],
"SkipConditions": {
"AetheryteShortcutIf": {
"InTerritory": [
886
]
}
}
},
{
"DataId": 1031681,
"Position": {
@ -13,7 +29,14 @@
"Z": 146.34924
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031677,
@ -23,7 +46,14 @@
"Z": 168.9325
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031692,
@ -34,7 +64,14 @@
},
"StopDistance": 5,
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"Position": {
@ -53,7 +90,14 @@
"Z": 138.47559
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031693,
@ -63,7 +107,14 @@
"Z": 138.93335
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031694,
@ -74,7 +125,14 @@
},
"StopDistance": 7,
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031695,
@ -84,7 +142,14 @@
"Z": 169.9397
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031681,
@ -94,7 +159,14 @@
"Z": 146.34924
},
"TerritoryId": 886,
"InteractionType": "Interact"
"InteractionType": "Interact",
"SkipConditions": {
"StepIf": {
"NotNamePlateIconId": [
60091
]
}
}
},
{
"DataId": 1031992,

View File

@ -22,14 +22,13 @@
"Sequence": 1,
"Steps": [
{
"DataId": 2009333,
"Position": {
"X": 180.4989,
"Y": 45.609253,
"Z": 452.78088
"X": 178.82968,
"Y": 45.361248,
"Z": 453.55005
},
"TerritoryId": 612,
"InteractionType": "Interact",
"InteractionType": "WalkTo",
"Fly": true,
"RequiredQuestVariables": [
null,
@ -48,6 +47,54 @@
null,
null,
null
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2009333,
"Position": {
"X": 180.4989,
"Y": 45.609253,
"Z": 452.78088
},
"TerritoryId": 612,
"InteractionType": "Interact",
"RequiredQuestVariables": [
null,
[
{
"Low": 1
},
{
"Low": 2
},
{
"Low": 4
}
],
null,
null,
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{

View File

@ -0,0 +1,88 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Fringes - Peering Stones",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
}
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1020817,
"Position": {
"X": 327.5348,
"Y": 83.45977,
"Z": -103.07471
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1024894,
"Position": {
"X": 21.744019,
"Y": -0.05840592,
"Z": 13.01593
},
"TerritoryId": 635,
"InteractionType": "Interact",
"AetheryteShortcut": "Rhalgr's Reach"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1024771,
"Position": {
"X": 12.008789,
"Y": 55.97821,
"Z": 237.96448
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Peering Stones",
"Fly": true,
"DialogueChoices": [
{
"Type": "List",
"Prompt": "TEXT_BANANA001_03036_Q2_000_000",
"Answer": "TEXT_BANANA001_03036_A2_000_001"
},
{
"Type": "List",
"Prompt": "TEXT_BANANA001_03036_Q3_000_000",
"Answer": "TEXT_BANANA001_03036_A3_000_001"
}
]
}
]
}
]
}

View File

@ -0,0 +1,120 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1023754,
"Position": {
"X": -429.4652,
"Y": 75.3867,
"Z": -124.712036
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Fringes - Castrum Oriens",
"SkipConditions": {
"AetheryteShortcutIf": {
"InSameTerritory": true
}
},
"Fly": true
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 2008756,
"Position": {
"X": -417.8073,
"Y": 76.8291,
"Z": -98.46649
},
"TerritoryId": 612,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2008758,
"Position": {
"X": -411.88678,
"Y": 71.82422,
"Z": -85.46582
},
"TerritoryId": 612,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2008757,
"Position": {
"X": -423.6057,
"Y": 66.056274,
"Z": -33.463074
},
"TerritoryId": 612,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2008759,
"Position": {
"X": -426.50494,
"Y": 75.028564,
"Z": -121.90442
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Castrum Oriens",
"NextQuestId": 2663
}
]
}
]
}

View File

@ -0,0 +1,102 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1023142,
"Position": {
"X": -642.9083,
"Y": 130.25946,
"Z": -538.29254
},
"StopDistance": 1,
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1023153,
"Position": {
"X": -680.10986,
"Y": 120.11875,
"Z": -241.13837
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1023154,
"Position": {
"X": -736.56824,
"Y": 110.02372,
"Z": -176.13495
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Fly": true,
"NextQuestId": 2664
}
]
}
]
}

View File

@ -0,0 +1,161 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1023144,
"Position": {
"X": -631.7998,
"Y": 130.39117,
"Z": -467.67383
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2008786,
"Position": {
"X": -630.45703,
"Y": 130.3883,
"Z": -466.75824
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1023144,
"Position": {
"X": -631.7998,
"Y": 130.39117,
"Z": -467.67383
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1023157,
"Position": {
"X": -427.26788,
"Y": 74.15582,
"Z": -103.56299
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 5,
"Steps": [
{
"Position": {
"X": -397.5847,
"Y": 73.92399,
"Z": -104.41468
},
"TerritoryId": 612,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 2008761,
"Position": {
"X": -398.30627,
"Y": 74.23511,
"Z": -106.70636
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"Position": {
"X": -391.48306,
"Y": 73.52123,
"Z": -100.069016
},
"TerritoryId": 612,
"InteractionType": "WalkTo",
"Mount": true
},
{
"Position": {
"X": -424.38403,
"Y": 62.880836,
"Z": -28.616083
},
"TerritoryId": 612,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1023158,
"Position": {
"X": -426.71857,
"Y": 63.23476,
"Z": -28.82434
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1019519,
"Position": {
"X": -613.1228,
"Y": 130,
"Z": -529.839
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Castrum Oriens",
"Fly": true,
"NextQuestId": 2824
}
]
}
]
}

View File

@ -0,0 +1,74 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Fringes - Peering Stones"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1023160,
"Position": {
"X": 303.12048,
"Y": 46.087757,
"Z": 493.0647
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2008763,
"Position": {
"X": 465.7511,
"Y": 77.56152,
"Z": 118.08948
},
"TerritoryId": 612,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
7545
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1023161,
"Position": {
"X": 465.62903,
"Y": 77.67306,
"Z": 114.854614
},
"StopDistance": 7,
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"NextQuestId": 2825
}
]
}
]
}

View File

@ -0,0 +1,55 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1023161,
"Position": {
"X": 465.62903,
"Y": 77.67306,
"Z": 114.854614
},
"StopDistance": 7,
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1023162,
"Position": {
"X": 403.8911,
"Y": 114.18445,
"Z": 212.32922
},
"TerritoryId": 612,
"InteractionType": "Interact",
"AetheryteShortcut": "Fringes - Peering Stones"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1023163,
"Position": {
"X": 305.16516,
"Y": 45.654415,
"Z": 491.59985
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"Fly": true,
"NextQuestId": 2826
}
]
}
]
}

View File

@ -0,0 +1,120 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1023163,
"Position": {
"X": 305.16516,
"Y": 45.654415,
"Z": 491.59985
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1019531,
"Position": {
"X": -70.2984,
"Y": 56.0216,
"Z": 210.22351
},
"TerritoryId": 612,
"InteractionType": "Interact",
"TargetTerritoryId": 612,
"SkipConditions": {
"StepIf": {
"Flying": "Unlocked"
}
}
},
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "UseItem",
"ItemId": 2002274,
"GroundTarget": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "UseItem",
"ItemId": 2002274,
"GroundTarget": true
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "UseItem",
"ItemId": 2002274,
"GroundTarget": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"NextQuestId": 2827
}
]
}
]
}

View File

@ -0,0 +1,86 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1023164,
"Position": {
"X": -127.45862,
"Y": 41.197662,
"Z": 7.248047
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "Interact",
"AetheryteShortcut": "Fringes - Peering Stones"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2008764,
"Position": {
"X": 608.1482,
"Y": 48.02002,
"Z": 362.6306
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1023166,
"Position": {
"X": 607.3242,
"Y": 48.087296,
"Z": 364.79736
},
"StopDistance": 5,
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Peering Stones",
"NextQuestId": 2828
}
]
}
]
}

View File

@ -0,0 +1,105 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1019531,
"Position": {
"X": -70.2984,
"Y": 56.0216,
"Z": 210.22351
},
"TerritoryId": 612,
"InteractionType": "Interact",
"TargetTerritoryId": 612,
"SkipConditions": {
"StepIf": {
"Flying": "Unlocked"
}
}
},
{
"Position": {
"X": -641.61725,
"Y": 78.03014,
"Z": 118.72834
},
"StopDistance": 0.5,
"TerritoryId": 612,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
7825,
7826,
7827
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1023409,
"Position": {
"X": -642.7558,
"Y": 77.98847,
"Z": 117.631714
},
"TerritoryId": 612,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2008893,
"Position": {
"X": -648.49316,
"Y": 48.41687,
"Z": 245.89917
},
"TerritoryId": 612,
"InteractionType": "Interact",
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1021565,
"Position": {
"X": 440.11584,
"Y": 114.254425,
"Z": 212.84802
},
"TerritoryId": 612,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Fringes - Peering Stones"
}
]
}
]
}

View File

@ -0,0 +1,84 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032735,
"Position": {
"X": 803.7993,
"Y": -45.924515,
"Z": -217.94464
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"TerritoryId": 817,
"InteractionType": "Gather",
"ItemsToGather": [
{
"QuestAcceptedAsClass": "Miner",
"ItemId": 29515,
"ItemCount": 3
},
{
"QuestAcceptedAsClass": "Botanist",
"ItemId": 29541,
"ItemCount": 3
}
]
},
{
"DataId": 1032862,
"Position": {
"X": 777.06555,
"Y": -45.76794,
"Z": -209.21649
},
"TerritoryId": 817,
"InteractionType": "Interact",
"Fly": true,
"AetheryteShortcut": "Rak'tika - Fanow"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,36 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032660,
"Position": {
"X": 804.4098,
"Y": -45.9255,
"Z": -216.41876
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032660,
"Position": {
"X": 804.4098,
"Y": -45.9255,
"Z": -216.41876
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -0,0 +1,36 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "plogon_enjoyer",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1032659,
"Position": {
"X": 802.79236,
"Y": -45.91779,
"Z": -218.58557
},
"TerritoryId": 817,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"Disabled": true,
"QuestSequence": [
{
"Sequence": 0,

View File

@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"Disabled": true,
"Author": "kaiser",
"QuestSequence": [
{
"Sequence": 0,
@ -30,11 +29,28 @@
{
"Sequence": 1,
"Steps": [
{
"DataId": 1044412,
"Position": {
"X": -181.56714,
"Y": -49.19972,
"Z": -304.76843
},
"StopDistance": 5,
"TerritoryId": 959,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"TerritoryId": 959,
"InteractionType": "Craft",
"ItemId": 38863,
"ItemCount": 3
},
{
"Position": {
"X": -201.42024,

View File

@ -36,6 +36,17 @@
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 10.0736885,
"Y": 27.10196,
"Z": 448.53668
},
"TerritoryId": 959,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
"Fly": true
},
{
"DataId": 1041559,
"Position": {
@ -44,9 +55,7 @@
"Z": 447.74548
},
"TerritoryId": 959,
"InteractionType": "Interact",
"AetheryteShortcut": "Mare Lamentorum - Sinus Lacrimarum",
"Fly": true
"InteractionType": "Interact"
}
]
},
@ -105,6 +114,16 @@
{
"Sequence": 4,
"Steps": [
{
"Position": {
"X": 10.0736885,
"Y": 27.10196,
"Z": 448.53668
},
"TerritoryId": 959,
"InteractionType": "WalkTo",
"Fly": true
},
{
"DataId": 1041559,
"Position": {
@ -113,8 +132,7 @@
"Z": 447.74548
},
"TerritoryId": 959,
"InteractionType": "Interact",
"Fly": true
"InteractionType": "Interact"
}
]
},

View File

@ -0,0 +1,90 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1041155,
"Position": {
"X": -57.51129,
"Y": -2.000002,
"Z": 129.77795
},
"TerritoryId": 963,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1041154,
"Position": {
"X": 112.01648,
"Y": 26.99999,
"Z": 53.81848
},
"TerritoryId": 963,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Radz-at-Han] Alzadaal's Peace",
"[Radz-at-Han] Kama"
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1037354,
"Position": {
"X": 109.33081,
"Y": 1.8631814,
"Z": -100.1145
},
"StopDistance": 7,
"TerritoryId": 963,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Radz-at-Han] Kama",
"[Radz-at-Han] Aetheryte Plaza"
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1041155,
"Position": {
"X": -57.51129,
"Y": -2.000002,
"Z": 129.77795
},
"TerritoryId": 963,
"InteractionType": "CompleteQuest",
"AethernetShortcut": [
"[Radz-at-Han] Aetheryte Plaza",
"[Radz-at-Han] Alzadaal's Peace"
]
}
]
}
]
}

View File

@ -0,0 +1,146 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1041144,
"Position": {
"X": -63.34027,
"Y": 14,
"Z": 125.62744
},
"TerritoryId": 963,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -48.856667,
"Y": 13.068996,
"Z": 118.292465
},
"TerritoryId": 963,
"InteractionType": "WalkTo"
},
{
"DataId": 194,
"Position": {
"X": 6.6071167,
"Y": -2.02948,
"Z": 110.55151
},
"StopDistance": 3,
"TerritoryId": 963,
"InteractionType": "WalkTo",
"DisableNavmesh": true
},
{
"Position": {
"X": -21.53136,
"Y": 1.7999926,
"Z": -182.28082
},
"TerritoryId": 963,
"InteractionType": "WalkTo",
"AethernetShortcut": [
"[Radz-at-Han] Alzadaal's Peace",
"[Radz-at-Han] Mehryde's Meyhane"
]
},
{
"DataId": 1037381,
"Position": {
"X": -23.697266,
"Y": 1.7999947,
"Z": -180.07172
},
"StopDistance": 4,
"TerritoryId": 963,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 2012387,
"Position": {
"X": -58.27423,
"Y": 0.9613037,
"Z": -199.42017
},
"TerritoryId": 963,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2012388,
"Position": {
"X": -65.62909,
"Y": 13.992493,
"Z": 129.1676
},
"TerritoryId": 963,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1041144,
"Position": {
"X": -63.34027,
"Y": 14,
"Z": 125.62744
},
"TerritoryId": 963,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 1037466,
"Position": {
"X": -205.31018,
"Y": 36,
"Z": 135.39331
},
"TerritoryId": 963,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1041145,
"Position": {
"X": -63.34027,
"Y": 14,
"Z": 126.207275
},
"TerritoryId": 963,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -256,6 +256,12 @@
]
}
},
"NotNamePlateIconId": {
"type": "array",
"items": {
"type": "integer"
}
},
"AetheryteLocked": {
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
},
@ -573,6 +579,7 @@
"AfterInteraction",
"AfterItemUse",
"AfterAction",
"AfterEmote",
"OverworldEnemies",
"FateEnemies"
]
@ -801,7 +808,8 @@
"comfort",
"battlestance",
"doze",
"box"
"box",
"sundropdance"
]
}
}

View File

@ -36,5 +36,6 @@ public sealed class EmoteConverter() : EnumConverter<EEmote>(Values)
{ EEmote.BattleStance, "battlestance" },
{ EEmote.Doze, "doze" },
{ EEmote.Box, "box" },
{ EEmote.SundropDance, "sundropdance"}
};
}

View File

@ -10,6 +10,7 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
{ EEnemySpawnType.AfterInteraction, "AfterInteraction" },
{ EEnemySpawnType.AfterItemUse, "AfterItemUse" },
{ EEnemySpawnType.AfterAction, "AfterAction" },
{ EEnemySpawnType.AfterEmote, "AfterEmote" },
{ EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
{ EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
{ EEnemySpawnType.FateEnemies, "FateEnemies" },

View File

@ -37,4 +37,5 @@ public enum EEmote
BattleStance = 121,
Doze = 13,
Box = 166,
SundropDance = 120,
}

View File

@ -10,6 +10,7 @@ public enum EEnemySpawnType
AfterInteraction,
AfterItemUse,
AfterAction,
AfterEmote,
AutoOnEnterArea,
OverworldEnemies,
FateEnemies,

View File

@ -13,15 +13,17 @@ public sealed class SkipStepConditions
public ELockedSkipCondition? Flying { get; set; }
public ELockedSkipCondition? Chocobo { get; set; }
public bool NotTargetable { get; set; }
public List<ushort> InTerritory { get; set; } = new();
public List<ushort> NotInTerritory { get; set; } = new();
public List<ushort> InTerritory { get; set; } = [];
public List<ushort> NotInTerritory { get; set; } = [];
public SkipItemConditions? Item { get; set; }
[JsonConverter(typeof(ElementIdListConverter))]
public List<ElementId> QuestsAccepted { get; set; } = new();
public List<ElementId> QuestsAccepted { get; set; } = [];
[JsonConverter(typeof(ElementIdListConverter))]
public List<ElementId> QuestsCompleted { get; set; } = new();
public List<ElementId> QuestsCompleted { get; set; } = [];
public List<uint> NotNamePlateIconId { get; set; } = [];
public EAetheryteLocation? AetheryteLocked { get; set; }
public EAetheryteLocation? AetheryteUnlocked { get; set; }
@ -41,6 +43,7 @@ public sealed class SkipStepConditions
Item != null ||
QuestsAccepted.Count > 0 ||
QuestsCompleted.Count > 0 ||
NotNamePlateIconId.Count > 0 ||
AetheryteLocked != null ||
AetheryteUnlocked != null ||
NearPosition != null ||
@ -50,6 +53,6 @@ public sealed class SkipStepConditions
public override string ToString()
{
return
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(NearPosition)}: {NearPosition}, {nameof(ExtraCondition)}: {ExtraCondition}";
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(NotNamePlateIconId)}: {string.Join(" ", NotNamePlateIconId)}, {nameof(NearPosition)}: {NearPosition}, {nameof(ExtraCondition)}: {ExtraCondition}";
}
}

View File

@ -5,9 +5,9 @@ using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI;
using LLib.Shop;
using LLib.Shop.Model;
using Microsoft.Extensions.Logging;
using Questionable.Model.Questing;
using Workshoppa.GameData.Shops;
using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType;
namespace Questionable.Controller.GameUi;

View File

@ -51,7 +51,7 @@ internal sealed unsafe class GatheringController : MiniTaskController<GatheringC
IServiceProvider serviceProvider,
IDataManager dataManager,
IPluginLog pluginLog)
: base(chatGui, condition, serviceProvider, logger)
: base(chatGui, condition, serviceProvider, dataManager, logger)
{
_movementController = movementController;
_gatheringPointRegistry = gatheringPointRegistry;

View File

@ -80,8 +80,7 @@ internal sealed class GatheringPointRegistry : IDisposable
{
foreach (var expansionFolder in ExpansionData.ExpansionFolders.Values)
LoadFromDirectory(
new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, expansionFolder)),
LogLevel.Trace);
new DirectoryInfo(Path.Combine(pathProjectDirectory.FullName, expansionFolder)));
}
catch (Exception e)
{
@ -102,7 +101,7 @@ internal sealed class GatheringPointRegistry : IDisposable
_gatheringPoints[gatheringPointId] = JsonSerializer.Deserialize<GatheringRoot>(stream)!;
}
private void LoadFromDirectory(DirectoryInfo directory, LogLevel logLevel = LogLevel.Information)
private void LoadFromDirectory(DirectoryInfo directory)
{
if (!directory.Exists)
{
@ -110,7 +109,6 @@ internal sealed class GatheringPointRegistry : IDisposable
return;
}
//_logger.Log(logLevel, "Loading gathering points from {DirectoryName}", directory);
foreach (FileInfo fileInfo in directory.GetFiles("*.json"))
{
try
@ -125,7 +123,7 @@ internal sealed class GatheringPointRegistry : IDisposable
}
foreach (DirectoryInfo childDirectory in directory.GetDirectories())
LoadFromDirectory(childDirectory, logLevel);
LoadFromDirectory(childDirectory);
}
private static GatheringPointId? ExtractGatheringPointIdFromName(string resourceName)

View File

@ -2,14 +2,18 @@
using System.Collections.Generic;
using System.Linq;
using Dalamud.Game.ClientState.Conditions;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using LLib;
using Lumina.Excel.GeneratedSheets;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps;
using Questionable.Controller.Steps.Common;
using Questionable.Controller.Steps.Interactions;
using Questionable.Controller.Steps.Shared;
using Questionable.Functions;
using Questionable.Model.Questing;
using Mount = Questionable.Controller.Steps.Common.Mount;
namespace Questionable.Controller;
@ -22,13 +26,17 @@ internal abstract class MiniTaskController<T>
private readonly IServiceProvider _serviceProvider;
private readonly ILogger<T> _logger;
private readonly string _actionCanceledText;
protected MiniTaskController(IChatGui chatGui, ICondition condition, IServiceProvider serviceProvider,
ILogger<T> logger)
IDataManager dataManager, ILogger<T> logger)
{
_chatGui = chatGui;
_logger = logger;
_serviceProvider = serviceProvider;
_condition = condition;
_actionCanceledText = dataManager.GetString<LogMessage>(1314, x => x.Text)!;
}
protected virtual void UpdateCurrentTask()
@ -172,4 +180,22 @@ internal abstract class MiniTaskController<T>
foreach (ITask task in _taskQueue.RemainingTasks)
_logger.LogInformation("- {TaskName}", task);
}
public void OnErrorToast(ref SeString message, ref bool isHandled)
{
if (_taskQueue.CurrentTaskExecutor is IToastAware toastAware)
{
if (toastAware.OnErrorToast(message))
{
isHandled = true;
}
}
if (!isHandled)
{
if (GameFunctions.GameStringEquals(_actionCanceledText, message.TextValue) &&
!_condition[ConditionFlag.InFlight])
InterruptQueueWithCombat();
}
}
}

View File

@ -43,8 +43,6 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
private readonly TaskCreator _taskCreator;
private readonly ILogger<QuestController> _logger;
private readonly string _actionCanceledText;
private readonly object _progressLock = new();
private QuestProgress? _startedQuest;
@ -84,7 +82,7 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
TaskCreator taskCreator,
IServiceProvider serviceProvider,
IDataManager dataManager)
: base(chatGui, condition, serviceProvider, logger)
: base(chatGui, condition, serviceProvider, dataManager, logger)
{
_clientState = clientState;
_gameFunctions = gameFunctions;
@ -105,8 +103,6 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
_condition.ConditionChange += OnConditionChange;
_toastGui.Toast += OnNormalToast;
_toastGui.ErrorToast += OnErrorToast;
_actionCanceledText = dataManager.GetString<LogMessage>(1314, x => x.Text)!;
}
public EAutomationType AutomationType
@ -809,24 +805,6 @@ internal sealed class QuestController : MiniTaskController<QuestController>, IDi
_gatheringController.OnNormalToast(message);
}
private void OnErrorToast(ref SeString message, ref bool isHandled)
{
if (_taskQueue.CurrentTaskExecutor is IToastAware toastAware)
{
if (toastAware.OnErrorToast(message))
{
isHandled = true;
}
}
if (!isHandled)
{
if (GameFunctions.GameStringEquals(_actionCanceledText, message.TextValue) &&
!_condition[ConditionFlag.InFlight])
InterruptQueueWithCombat();
}
}
public void Dispose()
{
_toastGui.ErrorToast -= OnErrorToast;

View File

@ -2,6 +2,7 @@
using System.Linq;
using System.Numerics;
using Dalamud.Game.ClientState.Objects.Enums;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Steps.Shared;
@ -26,7 +27,7 @@ internal static class MoveToLandingLocation
MoveTo.MoveExecutor moveExecutor,
GameFunctions gameFunctions,
IObjectTable objectTable,
ILogger<MoveToLandingLocationExecutor> logger) : TaskExecutor<Task>
ILogger<MoveToLandingLocationExecutor> logger) : TaskExecutor<Task>, IToastAware
{
private ITask _moveTask = null!;
@ -57,5 +58,6 @@ internal static class MoveToLandingLocation
}
public override ETaskResult Update() => moveExecutor.Update();
public bool OnErrorToast(SeString message) => moveExecutor.OnErrorToast(message);
}
}

View File

@ -1,6 +1,6 @@
namespace Questionable.Controller.Steps;
internal interface IRevisitAware : ITask
internal interface IRevisitAware
{
void OnRevisit();
}

View File

@ -33,17 +33,14 @@ internal static class Combat
switch (step.EnemySpawnType)
{
case EEnemySpawnType.AfterInteraction:
{
ArgumentNullException.ThrowIfNull(step.DataId);
yield return new Interact.Task(step.DataId.Value, quest, EInteractionType.None, true);
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterItemUse:
{
ArgumentNullException.ThrowIfNull(step.DataId);
ArgumentNullException.ThrowIfNull(step.ItemId);
@ -52,10 +49,8 @@ internal static class Combat
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterAction:
{
ArgumentNullException.ThrowIfNull(step.DataId);
ArgumentNullException.ThrowIfNull(step.Action);
@ -65,7 +60,18 @@ internal static class Combat
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
}
case EEnemySpawnType.AfterEmote:
ArgumentNullException.ThrowIfNull(step.Emote);
yield return new Mount.UnmountTask();
if (step.DataId != null)
yield return new Emote.UseOnObject(step.Emote.Value, step.DataId.Value);
else
yield return new Emote.UseOnSelf(step.Emote.Value);
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
case EEnemySpawnType.AutoOnEnterArea:
if (step.CombatDelaySecondsAtStart == null)

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Application.Network.WorkDefinitions;
using FFXIVClientStructs.FFXIV.Client.Game;
@ -124,7 +125,8 @@ internal static class Gather
}
}
internal sealed class StartGathering(GatheringController gatheringController) : TaskExecutor<GatheringTask>
internal sealed class StartGathering(GatheringController gatheringController) : TaskExecutor<GatheringTask>,
IToastAware
{
protected override bool Start()
{
@ -140,6 +142,13 @@ internal static class Gather
return ETaskResult.StillRunning;
}
public bool OnErrorToast(SeString message)
{
bool isHandled = false;
gatheringController.OnErrorToast(ref message, ref isHandled);
return isHandled;
}
}
/// <summary>

View File

@ -3,6 +3,7 @@ using System.Numerics;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using FFXIVClientStructs.FFXIV.Client.Game.UI;
using Microsoft.Extensions.Logging;
using Questionable.Controller.Utils;
@ -125,6 +126,21 @@ internal static class SkipCondition
}
}
if (skipConditions.NotNamePlateIconId.Count > 0 &&
step is { DataId: not null })
{
IGameObject? target = gameFunctions.FindObjectByDataId(step.DataId.Value);
if (target != null)
{
GameObject* gameObject = (GameObject*)target.Address;
if (!skipConditions.NotNamePlateIconId.Contains(gameObject->NamePlateIconId))
{
logger.LogInformation("Skipping step, object has icon id {IconId}", gameObject->NamePlateIconId);
return true;
}
}
}
if (skipConditions.Item is { NotInInventory: true } && step is { ItemId: not null })
{
InventoryManager* inventoryManager = InventoryManager.Instance();