Compare commits

...

20 Commits

Author SHA1 Message Date
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
kaiser
a96cdc99f6 feat: add Carrotlight, Carrot Bright quest. 2024-09-22 18:49:52 +10:00
48 changed files with 2106 additions and 133 deletions

View File

@ -1,5 +1,5 @@
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<Version>3.6</Version> <Version>3.7</Version>
</PropertyGroup> </PropertyGroup>
</Project> </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(), skipStepConditions.QuestsAccepted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.QuestsCompleted), AssignmentList(nameof(SkipStepConditions.QuestsCompleted),
skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(), skipStepConditions.QuestsCompleted).AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.NotNamePlateIconId),
skipStepConditions.NotNamePlateIconId).AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.AetheryteLocked), Assignment(nameof(SkipStepConditions.AetheryteLocked),
skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked) skipStepConditions.AetheryteLocked, emptyStep.AetheryteLocked)
.AsSyntaxNodeOrToken(), .AsSyntaxNodeOrToken(),

View File

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

View File

@ -57,13 +57,12 @@
}, },
{ {
"Position": { "Position": {
"X": 49.65071, "X": 40.596844,
"Y": -8.046952, "Y": -8,
"Z": 102.32186 "Z": 103.85207
}, },
"TerritoryId": 132, "TerritoryId": 132,
"InteractionType": "WalkTo", "InteractionType": "WalkTo"
"$": "New Gridania Navmesh workaround"
}, },
{ {
"DataId": 1000460, "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, "Sequence": 255,
"Steps": [ "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, "DataId": 1016091,
"Position": { "Position": {
@ -122,6 +111,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -78,17 +78,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016090,
"Position": { "Position": {
@ -98,6 +87,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -81,17 +81,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016090,
"Position": { "Position": {
@ -101,6 +90,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -101,17 +101,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016092,
"Position": { "Position": {
@ -121,6 +110,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -67,17 +67,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016092,
"Position": { "Position": {
@ -87,6 +76,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -73,17 +73,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016092,
"Position": { "Position": {
@ -93,6 +82,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "Fly": true
} }
] ]

View File

@ -84,26 +84,6 @@
{ {
"Sequence": 255, "Sequence": 255,
"Steps": [ "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, "DataId": 1016092,
"Position": { "Position": {
@ -113,6 +93,7 @@
}, },
"TerritoryId": 401, "TerritoryId": 401,
"InteractionType": "CompleteQuest", "InteractionType": "CompleteQuest",
"AetheryteShortcut": "The Sea of Clouds - Ok' Zundu",
"Fly": true "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

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

View File

@ -22,14 +22,13 @@
"Sequence": 1, "Sequence": 1,
"Steps": [ "Steps": [
{ {
"DataId": 2009333,
"Position": { "Position": {
"X": 180.4989, "X": 178.82968,
"Y": 45.609253, "Y": 45.361248,
"Z": 452.78088 "Z": 453.55005
}, },
"TerritoryId": 612, "TerritoryId": 612,
"InteractionType": "Interact", "InteractionType": "WalkTo",
"Fly": true, "Fly": true,
"RequiredQuestVariables": [ "RequiredQuestVariables": [
null, null,
@ -48,6 +47,54 @@
null, null,
null, 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", "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza", "Author": "liza",
"Disabled": true,
"QuestSequence": [ "QuestSequence": [
{ {
"Sequence": 0, "Sequence": 0,

View File

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

View File

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

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": { "AetheryteLocked": {
"$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte" "$ref": "https://git.carvel.li/liza/Questionable/raw/branch/master/Questionable.Model/common-schema.json#/$defs/Aetheryte"
}, },
@ -573,6 +579,7 @@
"AfterInteraction", "AfterInteraction",
"AfterItemUse", "AfterItemUse",
"AfterAction", "AfterAction",
"AfterEmote",
"OverworldEnemies", "OverworldEnemies",
"FateEnemies" "FateEnemies"
] ]
@ -801,7 +808,8 @@
"comfort", "comfort",
"battlestance", "battlestance",
"doze", "doze",
"box" "box",
"sundropdance"
] ]
} }
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -13,15 +13,17 @@ public sealed class SkipStepConditions
public ELockedSkipCondition? Flying { get; set; } public ELockedSkipCondition? Flying { get; set; }
public ELockedSkipCondition? Chocobo { get; set; } public ELockedSkipCondition? Chocobo { get; set; }
public bool NotTargetable { get; set; } public bool NotTargetable { get; set; }
public List<ushort> InTerritory { get; set; } = new(); public List<ushort> InTerritory { get; set; } = [];
public List<ushort> NotInTerritory { get; set; } = new(); public List<ushort> NotInTerritory { get; set; } = [];
public SkipItemConditions? Item { get; set; } public SkipItemConditions? Item { get; set; }
[JsonConverter(typeof(ElementIdListConverter))] [JsonConverter(typeof(ElementIdListConverter))]
public List<ElementId> QuestsAccepted { get; set; } = new(); public List<ElementId> QuestsAccepted { get; set; } = [];
[JsonConverter(typeof(ElementIdListConverter))] [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? AetheryteLocked { get; set; }
public EAetheryteLocation? AetheryteUnlocked { get; set; } public EAetheryteLocation? AetheryteUnlocked { get; set; }
@ -41,6 +43,7 @@ public sealed class SkipStepConditions
Item != null || Item != null ||
QuestsAccepted.Count > 0 || QuestsAccepted.Count > 0 ||
QuestsCompleted.Count > 0 || QuestsCompleted.Count > 0 ||
NotNamePlateIconId.Count > 0 ||
AetheryteLocked != null || AetheryteLocked != null ||
AetheryteUnlocked != null || AetheryteUnlocked != null ||
NearPosition != null || NearPosition != null ||
@ -50,6 +53,6 @@ public sealed class SkipStepConditions
public override string ToString() public override string ToString()
{ {
return 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 FFXIVClientStructs.FFXIV.Component.GUI;
using LLib.GameUI; using LLib.GameUI;
using LLib.Shop; using LLib.Shop;
using LLib.Shop.Model;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Model.Questing; using Questionable.Model.Questing;
using Workshoppa.GameData.Shops;
using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType; using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType;
namespace Questionable.Controller.GameUi; namespace Questionable.Controller.GameUi;

View File

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

View File

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

View File

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

View File

@ -3,6 +3,7 @@ using System.Numerics;
using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game; using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.Game.Object;
using FFXIVClientStructs.FFXIV.Client.Game.UI; using FFXIVClientStructs.FFXIV.Client.Game.UI;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Questionable.Controller.Utils; 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 }) if (skipConditions.Item is { NotInInventory: true } && step is { ItemId: not null })
{ {
InventoryManager* inventoryManager = InventoryManager.Instance(); InventoryManager* inventoryManager = InventoryManager.Instance();