--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "Position": {
+ "X": 322.1539,
+ "Y": -121.22571,
+ "Z": -314.2446
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ },
+ {
+ "Position": {
+ "X": 22.288645,
+ "Y": -196.2301,
+ "Z": -155.5739
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "$": "Sui-no-Sato, NE outside"
+ },
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1023281,
+ "Position": {
+ "X": -9.597961,
+ "Y": -196.98103,
+ "Z": -82.383545
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "CompleteQuest",
+ "Fly": true,
+ "NextQuestId": 2705
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1023282,
+ "Position": {
+ "X": -32.791687,
+ "Y": 0.5718597,
+ "Z": -554.7723
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ruby Sea - Onokoro",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ309_02705_Q1_100_091",
+ "Answer": "TEXT_STMBDZ309_02705_A1_101_091"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1023285,
+ "Position": {
+ "X": 119.493286,
+ "Y": 5.006782,
+ "Z": -862.6078
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ309_02705_Q2_100_151",
+ "Answer": "TEXT_STMBDZ309_02705_A2_101_151"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": 322.1539,
+ "Y": -121.22571,
+ "Z": -314.2446
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ },
+ {
+ "Position": {
+ "X": 22.288645,
+ "Y": -196.2301,
+ "Z": -155.5739
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "$": "Sui-no-Sato, NE outside"
+ },
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "CompleteQuest",
+ "Fly": true,
+ "NextQuestId": 2706
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1023287,
+ "Position": {
+ "X": 422.11023,
+ "Y": -98.96063,
+ "Z": -223.22424
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ310_02706_Q1_000_100",
+ "Answer": "TEXT_STMBDZ310_02706_A1_000_102"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 2,
+ "Steps": [
+ {
+ "DataId": 1023288,
+ "Position": {
+ "X": 350.515,
+ "Y": -120.581055,
+ "Z": -316.76202
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ310_02706_Q2_000_160",
+ "Answer": "TEXT_STMBDZ310_02706_A2_000_161"
+ },
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ310_02706_Q3_000_200",
+ "Answer": "TEXT_STMBDZ310_02706_A3_000_201"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 3,
+ "Steps": [
+ {
+ "Position": {
+ "X": 322.1539,
+ "Y": -121.22571,
+ "Z": -314.2446
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "Mount": true
+ },
+ {
+ "Position": {
+ "X": 198.4342,
+ "Y": -162.28119,
+ "Z": 115.91883
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "$": "Exile, outside",
+ "Fly": true
+ },
+ {
+ "DataId": 1023290,
+ "Position": {
+ "X": 222.33911,
+ "Y": -165.19557,
+ "Z": 137.89575
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact"
+ }
+ ]
+ },
+ {
+ "Sequence": 4,
+ "Steps": [
+ {
+ "DataId": 2008809,
+ "Position": {
+ "X": 163.43933,
+ "Y": -172.01501,
+ "Z": 262.0736
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Combat",
+ "EnemySpawnType": "AfterItemUse",
+ "ItemId": 2002332,
+ "KillEnemyDataIds": [
+ 7824
+ ],
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 5,
+ "Steps": [
+ {
+ "DataId": 1023290,
+ "Position": {
+ "X": 222.33911,
+ "Y": -165.19557,
+ "Z": 137.89575
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "Position": {
+ "X": 200.64441,
+ "Y": -165.55836,
+ "Z": 116.97804
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "Mount": true
+ },
+ {
+ "Position": {
+ "X": -96.41638,
+ "Y": -199.01863,
+ "Z": -68.85027
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "$": "Sui-no-Sato, SW outside",
+ "Fly": true
+ },
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "CompleteQuest",
+ "NextQuestId": 2707
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1023280,
+ "Position": {
+ "X": -62.790894,
+ "Y": -198.96509,
+ "Z": -64.34735
+ },
+ "TerritoryId": 613,
+ "InteractionType": "AcceptQuest"
+ }
+ ]
+ },
+ {
+ "Sequence": 1,
+ "Steps": [
+ {
+ "DataId": 1023281,
+ "Position": {
+ "X": -9.597961,
+ "Y": -196.98103,
+ "Z": -82.383545
+ },
+ "TerritoryId": 613,
+ "InteractionType": "Interact",
+ "Fly": true
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1023291,
+ "Position": {
+ "X": 8.46875,
+ "Y": -198.34206,
+ "Z": -157.15265
+ },
+ "TerritoryId": 613,
+ "InteractionType": "CompleteQuest",
+ "Fly": true,
+ "DialogueChoices": [
+ {
+ "Type": "List",
+ "Prompt": "TEXT_STMBDZ311_02707_Q1_000_160",
+ "Answer": "TEXT_STMBDZ311_02707_A1_000_162"
+ }
+ ],
+ "NextQuestId": 3139
+ }
+ ]
+ }
+ ]
+}
--- /dev/null
+{
+ "$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
+ "Author": "liza",
+ "QuestSequence": [
+ {
+ "Sequence": 0,
+ "Steps": [
+ {
+ "DataId": 1025965,
+ "Position": {
+ "X": -52.0791,
+ "Y": -2.9,
+ "Z": -64.4389
+ },
+ "TerritoryId": 628,
+ "InteractionType": "AcceptQuest",
+ "AetheryteShortcut": "Kugane",
+ "AethernetShortcut": [
+ "[Kugane] Aetheryte Plaza",
+ "[Kugane] Shiokaze Hostelry"
+ ]
+ }
+ ]
+ },
+ {
+ "Sequence": 255,
+ "Steps": [
+ {
+ "DataId": 1025878,
+ "Position": {
+ "X": 343.984,
+ "Y": -120.32947,
+ "Z": -306.0197
+ },
+ "TerritoryId": 613,
+ "InteractionType": "CompleteQuest",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu"
+ }
+ ]
+ }
+ ]
+}
{
"Sequence": 0,
"Steps": [
+ {
+ "Position": {
+ "X": 344.12048,
+ "Y": -120.3312,
+ "Z": -303.85397
+ },
+ "TerritoryId": 613,
+ "InteractionType": "WalkTo",
+ "AetheryteShortcut": "Ruby Sea - Tamamizu",
+ "RequiredGatheredItems": []
+ },
{
"DataId": 1025878,
"Position": {
},
"TerritoryId": 613,
"InteractionType": "Interact",
- "RequiredGatheredItems": [],
- "AetheryteShortcut": "Ruby Sea - Tamamizu",
"DialogueChoices": [
{
"Type": "List",
{
internal sealed class Factory(
IServiceProvider serviceProvider,
- AetheryteData aetheryteData) : SimpleTaskFactory
+ AetheryteData aetheryteData) : ITaskFactory
{
- public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
+ public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
if (step.AetheryteShortcut == null)
- return null;
+ yield break;
- return serviceProvider.GetRequiredService<UseAetheryteShortcut>()
+ yield return serviceProvider.GetRequiredService<UseAetheryteShortcut>()
.With(step, quest.Id, step.AetheryteShortcut.Value,
aetheryteData.TerritoryIds[step.AetheryteShortcut.Value]);
+ yield return serviceProvider.GetRequiredService<WaitAtEnd.WaitDelay>()
+ .With(TimeSpan.FromSeconds(0.5));
}
}
internal sealed class WaitDelay() : AbstractDelayedTask(TimeSpan.FromSeconds(1))
{
+ public ITask With(TimeSpan delay)
+ {
+ Delay = delay;
+ return this;
+ }
+
protected override bool StartInternal() => true;
public override string ToString() => $"Wait(seconds: {Delay.TotalSeconds})";