1
0
forked from liza/Questionable

Minor cleanup for ARR part 3

This commit is contained in:
Liza 2024-07-19 21:16:40 +02:00
parent a6e8aa1ced
commit 4ce89b7693
Signed by: liza
GPG Key ID: 7199F8D727D55F67
53 changed files with 1297 additions and 199 deletions

View File

@ -368,7 +368,7 @@ public class QuestSourceGenerator : ISourceGenerator
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.PickupQuestId), step.PickupQuestId, emptyStep.PickupQuestId)
Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId, emptyStep.PickUpQuestId)
.AsSyntaxNodeOrToken(),
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId, emptyStep.TurnInQuestId)
.AsSyntaxNodeOrToken(),

View File

@ -0,0 +1,83 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000927,
"Position": {
"X": -1.2055054,
"Y": 44.999886,
"Z": -255.8786
},
"TerritoryId": 128,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1006761,
"Position": {
"X": 520.2562,
"Y": 17.62488,
"Z": 470.51184
},
"TerritoryId": 137,
"InteractionType": "Interact",
"AetheryteShortcut": "Eastern La Noscea - Costa Del Sol"
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1006763,
"Position": {
"X": 494.9568,
"Y": 11.450662,
"Z": 329.76257
},
"TerritoryId": 137,
"InteractionType": "SinglePlayerDuty"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1006762,
"Position": {
"X": 494.16345,
"Y": 12.305895,
"Z": 337.27014
},
"TerritoryId": 137,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006746,
"Position": {
"X": 460.65454,
"Y": 8.309061,
"Z": 74.47925
},
"TerritoryId": 137,
"InteractionType": "CompleteQuest",
"NextQuestId": 1050
}
]
}
]
}

View File

@ -0,0 +1,123 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"TerritoryId": 137,
"InteractionType": "EquipItem",
"ItemId": 4544
},
{
"DataId": 1006746,
"Position": {
"X": 460.65454,
"Y": 8.309061,
"Z": 74.47925
},
"TerritoryId": 137,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1004962,
"Position": {
"X": -300.1908,
"Y": 7.2785034,
"Z": 410.94055
},
"TerritoryId": 146,
"InteractionType": "Interact",
"AetheryteShortcut": "Southern Thanalan - Forgotten Springs",
"SkipIf": [
"AetheryteShortcutIfInSameTerritory"
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1006735,
"Position": {
"X": -316.1822,
"Y": 8.844355,
"Z": 433.82922
},
"TerritoryId": 146,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1006288,
"Position": {
"X": -361.40997,
"Y": 8.46532,
"Z": 426.13855
},
"TerritoryId": 146,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 156.89783,
"Y": 4.3410587,
"Z": 831.42926
},
"TerritoryId": 146,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",
"KillEnemyDataIds": [
1917
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1006746,
"Position": {
"X": 460.65454,
"Y": 8.309061,
"Z": 74.47925
},
"TerritoryId": 137,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Eastern La Noscea - Costa Del Sol"
}
]
}
]
}

View File

@ -0,0 +1,198 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000927,
"Position": {
"X": -1.2055054,
"Y": 44.999886,
"Z": -255.8786
},
"TerritoryId": 128,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1002682,
"Position": {
"X": -86.930725,
"Y": 40.999992,
"Z": -153.91785
},
"TerritoryId": 128,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Limsa Lominsa] Marauders' Guild",
"[Limsa Lominsa] Culinarians' Guild"
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1002112,
"Position": {
"X": 561.6693,
"Y": 89.783,
"Z": -81.52899
},
"TerritoryId": 135,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Limsa Lominsa] Culinarians' Guild",
"[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
],
"Fly": true
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1002683,
"Position": {
"X": 559.6245,
"Y": 89.783,
"Z": -80.1557
},
"TerritoryId": 135,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1002113,
"Position": {
"X": 312.45886,
"Y": -24.483091,
"Z": 212.84802
},
"TerritoryId": 138,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 5,
"Steps": [
{
"DataId": 2000289,
"Position": {
"X": 348.34814,
"Y": -18.60083,
"Z": 168.3833
},
"TerritoryId": 138,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"Position": {
"X": 297.38306,
"Y": -14.2977295,
"Z": 148.85168
},
"TerritoryId": 138,
"InteractionType": "WalkTo"
},
{
"DataId": 2000290,
"Position": {
"X": 297.38306,
"Y": -14.2977295,
"Z": 148.85168
},
"TerritoryId": 138,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
],
"DelaySecondsAtStart": 5
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 1002684,
"Position": {
"X": 299.1836,
"Y": 0.7139131,
"Z": 86.10657
},
"TerritoryId": 138,
"InteractionType": "SinglePlayerDuty"
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 1002112,
"Position": {
"X": 561.6693,
"Y": 89.783,
"Z": -81.52899
},
"TerritoryId": 135,
"InteractionType": "Interact",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
],
"Fly": true
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000927,
"Position": {
"X": -1.2055054,
"Y": 44.999886,
"Z": -255.8786
},
"TerritoryId": 128,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
],
"NextQuestId": 318
}
]
}
]
}

View File

@ -48,6 +48,7 @@
},
"TerritoryId": 135,
"InteractionType": "SinglePlayerDuty",
"AetheryteShortcut": "Lower La Noscea - Moraby Drydocks",
"Fly": true
}
]
@ -68,7 +69,8 @@
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
]
],
"NextQuestId": 319
}
]
}

View File

@ -0,0 +1,237 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1000927,
"Position": {
"X": -1.2055054,
"Y": 44.999886,
"Z": -255.8786
},
"TerritoryId": 128,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1002115,
"Position": {
"X": 562.3406,
"Y": 89.86035,
"Z": -80.216736
},
"TerritoryId": 135,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Limsa Lominsa] Marauders' Guild",
"[Limsa Lominsa] Tempest Gate (Lower La Noscea)"
],
"Fly": true
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1002713,
"Position": {
"X": 554.4059,
"Y": 89.783,
"Z": -67.979004
},
"TerritoryId": 135,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1002686,
"Position": {
"X": 554.2838,
"Y": 89.78309,
"Z": -72.43463
},
"TerritoryId": 135,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 2000296,
"Position": {
"X": 565.1482,
"Y": 66.666626,
"Z": -215.2591
},
"TerritoryId": 135,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 2000297,
"Position": {
"X": 590.8141,
"Y": 72.40405,
"Z": -272.08368
},
"StopDistance": 1,
"TerritoryId": 135,
"InteractionType": "Interact",
"Mount": false
}
]
},
{
"Sequence": 5,
"Steps": [
{
"Position": {
"X": 565.94104,
"Y": 85.81174,
"Z": -322.61465
},
"TerritoryId": 135,
"InteractionType": "WalkTo",
"Mount": false
},
{
"DataId": 2000298,
"Position": {
"X": 566.8268,
"Y": 85.52673,
"Z": -320.82092
},
"TerritoryId": 135,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 2000299,
"Position": {
"X": 574.0901,
"Y": 90.440186,
"Z": -429.06842
},
"TerritoryId": 135,
"InteractionType": "SinglePlayerDuty",
"Mount": false
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 1002689,
"Position": {
"X": 569.6345,
"Y": 86.253204,
"Z": -363.94293
},
"TerritoryId": 135,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1002714,
"Position": {
"X": 572.5946,
"Y": 86.366455,
"Z": -365.3468
},
"StopDistance": 5,
"TerritoryId": 135,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1002715,
"Position": {
"X": 566.4302,
"Y": 86.2767,
"Z": -364.95007
},
"StopDistance": 5,
"TerritoryId": 135,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000927,
"Position": {
"X": -1.2055054,
"Y": 44.999886,
"Z": -255.8786
},
"TerritoryId": 128,
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Limsa Lominsa",
"AethernetShortcut": [
"[Limsa Lominsa] Aetheryte Plaza",
"[Limsa Lominsa] Marauders' Guild"
],
"NextQuestId": 1049
}
]
}
]
}

View File

@ -71,7 +71,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -110,7 +110,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -149,7 +149,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -193,7 +193,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -33,7 +33,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -34,7 +34,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -28,7 +28,8 @@
"Z": -0.015319824
},
"TerritoryId": 212,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 1007417,

View File

@ -21,21 +21,25 @@
"Sequence": 1,
"Steps": [
{
"DataId": 7,
"Position": {
"X": -41.58087,
"Y": -38.55963,
"Z": 233.7528
},
"TerritoryId": 154,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5
"StopDistance": 5,
"Aetheryte": "North Shroud - Fallgourd Float"
},
{
"Position": {
"X": -220.29037,
"Y": -28.43536,
"Z": 283.79355
"X": -214.10292,
"Y": -56.837837,
"Z": 295.99493
},
"TerritoryId": 154,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -276.81464,
"Y": -56.335888,
"Z": 302.93182
},
"TerritoryId": 154,
"InteractionType": "Combat",

View File

@ -74,16 +74,22 @@
"Sequence": 255,
"Steps": [
{
"DataId": 20,
"DataId": 1004596,
"Position": {
"X": -326.6194,
"Y": 10.696533,
"Z": 406.63757
"X": -471.27496,
"Y": -2.650424,
"Z": 95.628296
},
"TerritoryId": 146,
"InteractionType": "Interact",
"TargetTerritoryId": 146,
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
},
{
"TerritoryId": 146,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5,
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
"Aetheryte": "Southern Thanalan - Forgotten Springs"
},
{
"DataId": 1004917,

View File

@ -57,7 +57,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -34,7 +34,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -53,7 +53,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -37,7 +37,8 @@
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,

View File

@ -32,7 +32,15 @@
"Z": -58.854065
},
"TerritoryId": 145,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1006204,
@ -42,7 +50,15 @@
"Z": -7.5532227
},
"TerritoryId": 145,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1006205,
@ -52,7 +68,15 @@
"Z": 7.4310913
},
"TerritoryId": 145,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},

View File

@ -24,6 +24,15 @@
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": 318.09802,
"Y": 20.949646,
"Z": -263.94977
},
"TerritoryId": 145,
"InteractionType": "WalkTo"
},
{
"DataId": 2001965,
"Position": {
@ -37,7 +46,8 @@
"ItemId": 2000604,
"KillEnemyDataIds": [
363
]
],
"DisableNavmesh": true
}
]
},

View File

@ -35,15 +35,10 @@
"TargetTerritoryId": 146
},
{
"DataId": 19,
"Position": {
"X": -159.3805,
"Y": 30.105957,
"Z": -415.45746
},
"TerritoryId": 146,
"InteractionType": "AttuneAetheryte",
"StopDistance": 7
"StopDistance": 7,
"Aetheryte": "Southern Thanalan - Little Ala Mhigo"
},
{
"DataId": 1006211,

View File

@ -32,7 +32,15 @@
"Z": -247.82184
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1006704,
@ -42,7 +50,15 @@
"Z": -165.45361
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1006703,
@ -52,7 +68,15 @@
"Z": -133.22656
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
@ -67,7 +91,8 @@
"Z": -402.02948
},
"TerritoryId": 146,
"InteractionType": "CompleteQuest"
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
}
]
}

View File

@ -29,6 +29,16 @@
"InteractionType": "UseItem",
"ItemId": 30362
},
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Position": {
@ -37,7 +47,8 @@
"Z": -386.862
},
"TerritoryId": 140,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 2001715,
@ -47,7 +58,8 @@
"Z": -0.015319824
},
"TerritoryId": 212,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 1006688,

View File

@ -28,7 +28,8 @@
"Z": -0.015319824
},
"TerritoryId": 212,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 1007418,

View File

@ -26,15 +26,26 @@
"Steps": [
{
"Position": {
"X": 260.3064,
"Y": 3.8526046,
"Z": 15.633602
"X": 262.89966,
"Y": 11.363011,
"Z": -143.02156
},
"TerritoryId": 153,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"KillEnemyDataIds": [
4
"ComplexCombatData": [
{
"DataId": 4,
"MinimumKillCount": 4,
"CompletionQuestVariablesFlags": [
null,
64,
null,
null,
null,
null
]
}
]
}
]
@ -80,7 +91,8 @@
"Z": -39.932922
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest"
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Quarrymill"
}
]
}

View File

@ -32,7 +32,15 @@
"Z": -337.789
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1006222,
@ -42,7 +50,16 @@
"Z": -331.34973
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1006223,
@ -52,7 +69,15 @@
"Z": -348.50085
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1006224,
@ -62,7 +87,15 @@
"Z": -325.42914
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
]
},

View File

@ -67,7 +67,8 @@
"Z": -352.98694
},
"TerritoryId": 146,
"InteractionType": "CompleteQuest"
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "Southern Thanalan - Little Ala Mhigo"
}
]
}

View File

@ -32,7 +32,15 @@
"Z": -318.5016
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"DataId": 1006225,
@ -42,7 +50,15 @@
"Z": -333.69952
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1007617,
@ -52,7 +68,15 @@
"Z": -339.71167
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2001981,
@ -62,7 +86,15 @@
"Z": -350.08777
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
},
{
"DataId": 1007616,
@ -72,7 +104,15 @@
"Z": -341.3291
},
"TerritoryId": 146,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},

View File

@ -29,6 +29,16 @@
"InteractionType": "UseItem",
"ItemId": 30362
},
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Position": {
@ -37,7 +47,8 @@
"Z": -386.862
},
"TerritoryId": 140,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 2001715,
@ -47,7 +58,8 @@
"Z": -0.015319824
},
"TerritoryId": 212,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 1006688,

View File

@ -12,6 +12,7 @@
"Y": -44.865616,
"Z": 264.54565
},
"StopDistance": 7,
"TerritoryId": 154,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float",

View File

@ -24,6 +24,15 @@
{
"Sequence": 1,
"Steps": [
{
"Position": {
"X": -195.16211,
"Y": -63.65229,
"Z": 370.28903
},
"TerritoryId": 154,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -222.67735,
@ -31,8 +40,9 @@
"Z": 396.86935
},
"TerritoryId": 154,
"InteractionType": "WaitForManualProgress",
"Comment": "Use Firesand Stick on glowing spot"
"InteractionType": "UseItem",
"ItemId": 2000616,
"GroundTarget": true
}
]
},
@ -47,7 +57,15 @@
"Z": 389.9137
},
"TerritoryId": 154,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
},
{
"DataId": 2001986,
@ -57,7 +75,15 @@
"Z": 383.3523
},
"TerritoryId": 154,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2001987,
@ -67,7 +93,15 @@
"Z": 376.3026
},
"TerritoryId": 154,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
},
{
"DataId": 2001985,
@ -77,7 +111,15 @@
"Z": 378.95776
},
"TerritoryId": 154,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2001984,
@ -87,7 +129,15 @@
"Z": 388.93713
},
"TerritoryId": 154,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},

View File

@ -12,6 +12,7 @@
"Y": -44.86571,
"Z": 262.65344
},
"StopDistance": 7,
"TerritoryId": 154,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "North Shroud - Fallgourd Float",

View File

@ -20,6 +20,29 @@
{
"Sequence": 1,
"Steps": [
{
"DataId": 1006259,
"Position": {
"X": 43.808594,
"Y": 2.5499606,
"Z": 21.683044
},
"TerritoryId": 132,
"InteractionType": "AcceptQuest",
"PickUpQuestId": 802,
"AetheryteShortcut": "Gridania"
},
{
"DataId": 1000171,
"Position": {
"X": -114.366455,
"Y": -7.351947,
"Z": 94.52954
},
"TerritoryId": 132,
"InteractionType": "Interact",
"TargetTerritoryId": 148
},
{
"DataId": 2001999,
"Position": {
@ -28,8 +51,7 @@
"Z": 69.41321
},
"TerritoryId": 148,
"InteractionType": "Interact",
"AetheryteShortcut": "Central Shroud - Bentbranch Meadows"
"InteractionType": "Interact"
}
]
},
@ -37,18 +59,27 @@
"Sequence": 2,
"Steps": [
{
"DataId": 2002701,
"Position": {
"X": -574.4259,
"Y": 67.00232,
"Z": 71.39697
},
"TerritoryId": 148,
"InteractionType": "Duty",
"ContentFinderConditionId": 6
}
]
},
{
"Sequence": 3,
"Steps": [
{
"Position": {
"X": 0,
"Y": 0,
"Z": 0
},
"TerritoryId": 1,
"InteractionType": "WalkTo",
"Comment": "Filler"
}
]
},
{
"Sequence": 4,
"Steps": [
@ -77,6 +108,16 @@
"InteractionType": "UseItem",
"ItemId": 30362
},
{
"Position": {
"X": -492.96475,
"Y": 20.999884,
"Z": -380.82272
},
"TerritoryId": 140,
"InteractionType": "WalkTo",
"$": "Avoid walking around Waking Sands table"
},
{
"DataId": 2001711,
"Position": {
@ -85,7 +126,8 @@
"Z": -386.862
},
"TerritoryId": 140,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 2001715,
@ -95,7 +137,8 @@
"Z": -0.015319824
},
"TerritoryId": 212,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 212
},
{
"DataId": 1006688,

View File

@ -27,6 +27,7 @@
"Y": 64.37781,
"Z": -205.24915
},
"StopDistance": 0.25,
"TerritoryId": 135,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",

View File

@ -46,15 +46,20 @@
"TargetTerritoryId": 137
},
{
"DataId": 11,
"Position": {
"X": 489.15845,
"Y": 20.828491,
"Z": 468.80298
"X": 378.54834,
"Y": 21.81276,
"Z": 478.4722
},
"TerritoryId": 137,
"InteractionType": "WalkTo",
"$": "Avoids the beach due to rocks, doesn't even look like a faster path"
},
{
"TerritoryId": 137,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5
"StopDistance": 5,
"Aetheryte": "Eastern La Noscea - Costa Del Sol"
},
{
"DataId": 1006266,

View File

@ -24,18 +24,6 @@
{
"Sequence": 255,
"Steps": [
{
"DataId": 6,
"Position": {
"X": -230.0603,
"Y": 22.62909,
"Z": 355.45886
},
"TerritoryId": 153,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5,
"AetheryteShortcut": "South Shroud - Quarrymill"
},
{
"DataId": 1006279,
"Position": {
@ -44,7 +32,8 @@
"Z": 339.49792
},
"TerritoryId": 153,
"InteractionType": "CompleteQuest"
"InteractionType": "CompleteQuest",
"AetheryteShortcut": "South Shroud - Camp Tranquil"
}
]
}

View File

@ -1,6 +1,9 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester",
"TerritoryBlacklist": [
1041
],
"QuestSequence": [
{
"Sequence": 0,
@ -47,18 +50,23 @@
"Z": 89.37195
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"TargetTerritoryId": 137
},
{
"DataId": 12,
"Position": {
"X": -18.387146,
"Y": 72.67859,
"Z": 3.829956
},
"TerritoryId": 137,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5
"StopDistance": 5,
"Aetheryte": "Eastern La Noscea - Wineport"
},
{
"Position": {
"X": -272.5533,
"Y": 59.7689,
"Z": 176.81541
},
"TerritoryId": 137,
"InteractionType": "WalkTo"
},
{
"DataId": 1006268,
@ -76,12 +84,6 @@
"Sequence": 3,
"Steps": [
{
"DataId": 2002702,
"Position": {
"X": -338.61298,
"Y": 69.01648,
"Z": 159.65515
},
"TerritoryId": 137,
"InteractionType": "Duty",
"ContentFinderConditionId": 8

View File

@ -32,7 +32,15 @@
"Z": 299.39722
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 2002059,
@ -42,7 +50,15 @@
"Z": 308.24744
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2002060,
@ -52,7 +68,15 @@
"Z": 276.53918
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},

View File

@ -62,7 +62,15 @@
"Z": 454.5509
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
8,
null
]
},
{
"DataId": 1006318,
@ -72,7 +80,15 @@
"Z": 451.0719
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
16,
null
]
},
{
"DataId": 1006317,
@ -82,7 +98,15 @@
"Z": 450.43103
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
64,
null
]
},
{
"DataId": 1006316,
@ -92,7 +116,15 @@
"Z": 457.02295
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
32,
null
]
},
{
"DataId": 1006266,
@ -102,7 +134,15 @@
"Z": 455.89368
},
"TerritoryId": 137,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
128,
null
]
}
]
},
@ -116,6 +156,7 @@
"Y": 20.706482,
"Z": 451.13293
},
"StopDistance": 7,
"TerritoryId": 137,
"InteractionType": "CompleteQuest"
}

View File

@ -36,15 +36,28 @@
"AetheryteShortcut": "Eastern La Noscea - Wineport"
},
{
"DataId": 15,
"DataId": 2002085,
"Position": {
"X": 437.4303,
"Y": 5.508484,
"Z": 94.590576
"X": 404.86768,
"Y": 4.3182373,
"Z": 88.45642
},
"TerritoryId": 139,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"TerritoryId": 139,
"InteractionType": "AttuneAetheryte",
"StopDistance": 5
"StopDistance": 5,
"Aetheryte": "Upper La Noscea - Camp Bronze Lake"
},
{
"DataId": 2002084,
@ -54,17 +67,15 @@
"Z": 133.04333
},
"TerritoryId": 139,
"InteractionType": "Interact"
},
{
"DataId": 2002085,
"Position": {
"X": 404.86768,
"Y": 4.3182373,
"Z": 88.45642
},
"TerritoryId": 139,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 2002083,
@ -74,7 +85,15 @@
"Z": 47.196045
},
"TerritoryId": 139,
"InteractionType": "Interact"
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
]
},
@ -88,6 +107,7 @@
"Y": 16.258692,
"Z": 128.37415
},
"StopDistance": 7,
"TerritoryId": 139,
"InteractionType": "CompleteQuest"
}

View File

@ -1,6 +1,9 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "JerryWester",
"TerritoryBlacklist": [
1046
],
"QuestSequence": [
{
"Sequence": 0,
@ -12,6 +15,7 @@
"Y": 16.258692,
"Z": 128.37415
},
"StopDistance": 7,
"TerritoryId": 139,
"InteractionType": "AcceptQuest",
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
@ -40,15 +44,9 @@
"Sequence": 2,
"Steps": [
{
"DataId": 2002690,
"Position": {
"X": 381.39917,
"Y": 23.727722,
"Z": -140.79504
},
"TerritoryId": 139,
"InteractionType": "Duty",
"ContentFinderConditionId": 20002
"ContentFinderConditionId": 57
}
]
},

View File

@ -21,12 +21,12 @@
"Sequence": 1,
"Steps": [
{
"DataId": 1006731,
"Position": {
"X": 52.231567,
"Y": 235.30933,
"Z": 347.85986
"X": 48.65701,
"Y": 234.78163,
"Z": 348.13953
},
"StopDistance": 1,
"TerritoryId": 155,
"InteractionType": "Combat",
"EnemySpawnType": "AutoOnEnterArea",

View File

@ -0,0 +1,36 @@
{
"$schema": "https://carvel.li/questionable/quest-1.0",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1006259,
"Position": {
"X": 43.808594,
"Y": 2.5499606,
"Z": 21.683044
},
"TerritoryId": 132,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"DataId": 1000171,
"Position": {
"X": -114.366455,
"Y": -7.351947,
"Z": 94.52954
},
"TerritoryId": 132,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -69,7 +69,7 @@ public sealed class QuestStep
public IList<uint> PointMenuChoices { get; set; } = new List<uint>();
// TODO: Not implemented
public ushort? PickupQuestId { get; set; }
public ushort? PickUpQuestId { get; set; }
public ushort? TurnInQuestId { get; set; }
public ushort? NextQuestId { get; set; }

View File

@ -157,21 +157,21 @@ internal sealed class CombatController
private unsafe bool IsEnemyToKill(IGameObject gameObject)
{
if (gameObject is IBattleChara battleChara)
if (gameObject is IBattleNpc battleNpc)
{
// TODO this works as somewhat of a delay between killing enemies if certain items/flags are checked
// but also delays killing the next enemy a little
if (_currentFight == null || _currentFight.Data.SpawnType != EEnemySpawnType.OverworldEnemies ||
_currentFight.Data.ComplexCombatDatas.Count == 0)
{
if (battleChara.IsDead)
if (battleNpc.IsDead)
return false;
}
if (!battleChara.IsTargetable)
if (!battleNpc.IsTargetable)
return false;
if (battleChara.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
if (battleNpc.TargetObjectId == _clientState.LocalPlayer?.GameObjectId)
return true;
if (_currentFight != null)
@ -184,18 +184,18 @@ internal sealed class CombatController
if (_currentFight.Data.CompletedComplexDatas.Contains(i))
continue;
if (complexCombatData[i].DataId == battleChara.DataId)
if (complexCombatData[i].DataId == battleNpc.DataId)
return true;
}
}
else
{
if (_currentFight.Data.KillEnemyDataIds.Contains(battleChara.DataId))
if (_currentFight.Data.KillEnemyDataIds.Contains(battleNpc.DataId))
return true;
}
}
if (battleChara.StatusFlags.HasFlag(StatusFlags.Hostile))
if (battleNpc.BattleNpcKind is BattleNpcSubKind.BattleNpcPart or BattleNpcSubKind.Enemy)
{
var gameObjectStruct = (GameObject*)gameObject.Address;
return gameObjectStruct->NamePlateIconId != 0;

View File

@ -16,6 +16,13 @@ internal sealed class MovementOverrideController
new BlacklistedPoint(128, new(2f, 40.25f, 36.5f), new(0.25f, 40.25f, 36.5f)),
new BlacklistedPoint(132, new(45.5f, -8f, 101f), new(50.53978f, -8.046954f, 101.06045f)),
// eastern thanalan
new BlacklistedPoint(145, new(-139.75f, -32.25f, 75.25f), new(-139.57748f, -33.785175f, 77.87906f)),
// southern thanalan
new BlacklistedPoint(146, new(-201.75f, 10.5f, -265.5f), new(-203.75235f, 10.130764f, -265.15314f)),
new BlacklistedPoint(1189, new(574f, -142.25f, 504.25f), new(574.44183f, -142.12766f, 507.60065f)),
// heritage found: yyupye's halo (farm, npc: Mahuwsa)

View File

@ -44,6 +44,8 @@ internal static class EquipItem
InventoryType.ArmoryWrist,
InventoryType.ArmoryRings,
InventoryType.ArmorySoulCrystal,
InventoryType.Inventory1,
InventoryType.Inventory2,
InventoryType.Inventory3,
@ -81,9 +83,12 @@ internal static class EquipItem
if (inventoryManager == null)
return ETaskResult.StillRunning;
if (_targetSlots.Any(x =>
inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == _itemId))
return ETaskResult.TaskComplete;
foreach (ushort x in _targetSlots)
{
var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x);
if (itemSlot != null && itemSlot->ItemId == _itemId)
return ETaskResult.TaskComplete;
}
Equip();
_continueAt = DateTime.Now.AddSeconds(1);
@ -100,10 +105,14 @@ internal static class EquipItem
if (equippedContainer == null)
return;
if (_targetSlots.Any(slot => equippedContainer->GetInventorySlot(slot)->ItemId == _itemId))
foreach (ushort slot in _targetSlots)
{
logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString());
return;
var itemSlot = equippedContainer->GetInventorySlot(slot);
if (itemSlot != null && itemSlot->ItemId == _itemId)
{
logger.LogInformation("Already equipped {Item}, skipping step", _item.Name?.ToString());
return;
}
}
foreach (InventoryType sourceInventoryType in SourceInventoryTypes)
@ -124,7 +133,11 @@ internal static class EquipItem
// Move the item to the first available slot
ushort targetSlot = _targetSlots
.Where(x => inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x)->ItemId == 0)
.Where(x =>
{
var itemSlot = inventoryManager->GetInventorySlot(InventoryType.EquippedItems, x);
return itemSlot == null || itemSlot->ItemId == 0;
})
.Concat(_targetSlots).First();
logger.LogInformation(
@ -146,7 +159,7 @@ internal static class EquipItem
>= 1 and <= 11 => [(ushort)(item.EquipSlotCategory.Row - 1)],
12 => [11, 12], // rings
13 => [0],
17 => [14], // soul crystal
17 => [13], // soul crystal
_ => null
};
}

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Numerics;
using FFXIVClientStructs.FFXIV.Client.Game;
using Microsoft.Extensions.DependencyInjection;
@ -38,10 +39,17 @@ internal static class UseItem
var unmount = serviceProvider.GetRequiredService<UnmountTask>();
if (step.GroundTarget == true)
{
ArgumentNullException.ThrowIfNull(step.DataId);
ITask task;
if (step.DataId != null)
task = serviceProvider.GetRequiredService<UseOnGround>()
.With(step.DataId.Value, step.ItemId.Value);
else
{
ArgumentNullException.ThrowIfNull(step.Position);
task = serviceProvider.GetRequiredService<UseOnPosition>()
.With(step.Position.Value, step.ItemId.Value);
}
var task = serviceProvider.GetRequiredService<UseOnGround>()
.With(step.DataId.Value, step.ItemId.Value);
return [unmount, task];
}
else if (step.DataId != null)
@ -161,6 +169,24 @@ internal static class UseItem
public override string ToString() => $"UseItem({ItemId} on ground at {DataId})";
}
internal sealed class UseOnPosition(GameFunctions gameFunctions, ILogger<UseOnPosition> logger)
: UseItemBase(logger)
{
public Vector3 Position { get; set; }
public ITask With(Vector3 position, uint itemId)
{
Position = position;
ItemId = itemId;
return this;
}
protected override bool UseItem() => gameFunctions.UseItemOnPosition(Position, ItemId);
public override string ToString() =>
$"UseItem({ItemId} on ground at {Position.ToString("G", CultureInfo.InvariantCulture)})";
}
internal sealed class UseOnObject(GameFunctions gameFunctions, ILogger<UseOnObject> logger) : UseItemBase(logger)
{
public uint DataId { get; set; }

View File

@ -111,7 +111,7 @@ internal static class WaitAtEnd
return
[
serviceProvider.GetRequiredService<WaitQuestAccepted>()
.With(step.PickupQuestId ?? quest.QuestId),
.With(step.PickUpQuestId ?? quest.QuestId),
serviceProvider.GetRequiredService<WaitDelay>()
];

View File

@ -128,6 +128,13 @@ internal sealed unsafe class GameFunctions
if (chocoboQuest != 0 && !QuestManager.IsQuestComplete(chocoboQuest))
return (chocoboQuest, QuestManager.GetQuestSequence(chocoboQuest));
}
else if (currentQuest == 801)
{
// skeletons in her closet, finish 'broadening horizons' to unlock the white wolf gate
ushort broadeningHorizons = 802;
if (questManager->IsQuestAccepted(broadeningHorizons))
return (broadeningHorizons, QuestManager.GetQuestSequence(broadeningHorizons));
}
return (currentQuest, sequence);
}
@ -443,6 +450,11 @@ internal sealed unsafe class GameFunctions
return false;
}
public bool UseItemOnPosition(Vector3 position, uint itemId)
{
return ActionManager.Instance()->UseActionLocation(ActionType.KeyItem, itemId, location: &position);
}
public bool UseAction(EAction action)
{
if (ActionManager.Instance()->GetActionStatus(ActionType.Action, (uint)action) == 0)

View File

@ -121,7 +121,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin
serviceCollection.AddTaskWithFactory<Interact.Factory, Interact.DoInteract>();
serviceCollection.AddTaskWithFactory<Jump.Factory, Jump.DoJump>();
serviceCollection.AddTaskWithFactory<Say.Factory, Say.UseChat>();
serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use>();
serviceCollection.AddTaskWithFactory<UseItem.Factory, UseItem.UseOnGround, UseItem.UseOnObject, UseItem.Use, UseItem.UseOnPosition>();
serviceCollection.AddTaskWithFactory<EquipItem.Factory, EquipItem.DoEquip>();
serviceCollection
.AddTaskWithFactory<SinglePlayerDuty.Factory, SinglePlayerDuty.DisableYesAlready,

View File

@ -10,7 +10,7 @@ internal sealed class UniqueStartStopValidator : IQuestValidator
public IEnumerable<ValidationIssue> Validate(Quest quest)
{
var questAccepts = FindQuestStepsWithInteractionType(quest, EInteractionType.AcceptQuest)
.Where(x => x.Step.PickupQuestId == null)
.Where(x => x.Step.PickUpQuestId == null)
.ToList();
foreach (var accept in questAccepts)
{