Update CompletionQuestVariablesFlags for skip checking

This commit is contained in:
Liza 2024-08-01 03:22:01 +02:00
parent becfac28ad
commit d64cd9d5fc
Signed by: liza
GPG Key ID: 7199F8D727D55F67
83 changed files with 2510 additions and 1340 deletions

View File

@ -213,7 +213,9 @@ public static class RoslynShortcuts
{
Argument(LiteralValue(qwv.High)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Low))
Argument(LiteralValue(qwv.Low)),
Token(SyntaxKind.CommaToken),
Argument(LiteralValue(qwv.Mode))
})));
}
else if (value is List<QuestWorkValue> list)
@ -255,6 +257,9 @@ public static class RoslynShortcuts
Assignment(nameof(SkipStepConditions.Never), skipStepConditions.Never,
emptyStep.Never)
.AsSyntaxNodeOrToken(),
AssignmentList(nameof(SkipStepConditions.CompletionQuestVariablesFlags),
skipStepConditions.CompletionQuestVariablesFlags)
.AsSyntaxNodeOrToken(),
Assignment(nameof(SkipStepConditions.Flying), skipStepConditions.Flying,
emptyStep.Flying)
.AsSyntaxNodeOrToken(),

View File

@ -1,7 +1,6 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"Disabled": true,
"QuestSequence": [
{
"Sequence": 0,
@ -24,6 +23,183 @@
]
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1001739,
"Position": {
"X": -94.529724,
"Y": 6.4999976,
"Z": 39.81079
},
"TerritoryId": 131,
"InteractionType": "Interact",
"DialogueChoices": [
{
"Type": "YesNo",
"Prompt": "TEXT_CLSGLA020_00253_Q2_000_1",
"Yes": true
}
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"Position": {
"X": 45.13088,
"Y": 3.889354,
"Z": -166.51999
},
"TerritoryId": 130,
"InteractionType": "WalkTo",
"AethernetShortcut": [
"[Ul'dah] Gladiators' Guild",
"[Ul'dah] Adventurers' Guild"
],
"SkipConditions": {
"StepIf": {
"InTerritory": [
141
]
}
}
},
{
"Position": {
"X": -116.10664,
"Y": 10.801613,
"Z": 276.979
},
"TerritoryId": 141,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 351,
"MinimumKillCount": 3,
"CompletionQuestVariablesFlags": [
{
"Low": 3,
"Mode": "Exact"
},
null,
null,
null,
null,
null
]
},
{
"DataId": 141,
"MinimumKillCount": 3,
"CompletionQuestVariablesFlags": [
null,
{
"High": 3,
"Mode": "Exact"
},
null,
null,
null,
null
]
}
],
"CompletionQuestVariablesFlags": [
{
"Low": 3,
"Mode": "Exact"
},
{
"High": 3,
"Mode": "Exact"
},
null,
null,
null,
null
]
},
{
"Position": {
"X": 39.635372,
"Y": 3.2401803,
"Z": 273.41232
},
"TerritoryId": 141,
"InteractionType": "Combat",
"EnemySpawnType": "OverworldEnemies",
"ComplexCombatData": [
{
"DataId": 205,
"MinimumKillCount": 3,
"CompletionQuestVariablesFlags": [
null,
{
"Low": 3,
"Mode": "Exact"
},
null,
null,
null,
null
]
}
],
"CompletionQuestVariablesFlags": [
null,
{
"Low": 3,
"Mode": "Exact"
},
null,
null,
null,
null
]
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": -118.17538,
"Y": 18.35357,
"Z": 341.3039
},
"TerritoryId": 141,
"InteractionType": "WalkTo",
"SkipConditions": {
"StepIf": {
"NotInTerritory": [
141
]
}
}
},
{
"DataId": 1001739,
"Position": {
"X": -94.529724,
"Y": 6.4999976,
"Z": 39.81079
},
"TerritoryId": 131,
"InteractionType": "CompleteQuest",
"AethernetShortcut": [
"[Ul'dah] Adventurers' Guild",
"[Ul'dah] Gladiators' Guild"
],
"NextQuestId": 256
}
]
}
]
}

View File

@ -0,0 +1,286 @@
{
"$schema": "https://git.carvel.li/liza/Questionable/raw/branch/master/QuestPaths/quest-v1.json",
"Author": "liza",
"QuestSequence": [
{
"Sequence": 0,
"Steps": [
{
"DataId": 1001739,
"Position": {
"X": -94.529724,
"Y": 6.4999976,
"Z": 39.81079
},
"TerritoryId": 131,
"InteractionType": "AcceptQuest"
}
]
},
{
"Sequence": 1,
"Steps": [
{
"DataId": 1003990,
"Position": {
"X": 77.25635,
"Y": 4.0999947,
"Z": -138.62823
},
"TerritoryId": 130,
"InteractionType": "Emote",
"Emote": "me",
"AethernetShortcut": [
"[Ul'dah] Gladiators' Guild",
"[Ul'dah] Adventurers' Guild"
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
},
{
"DataId": 1003984,
"Position": {
"X": 45.029297,
"Y": 3.9999998,
"Z": -128.16058
},
"TerritoryId": 130,
"InteractionType": "Emote",
"Emote": "me",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 1003992,
"Position": {
"X": 12.191956,
"Y": 4.0999947,
"Z": -155.53528
},
"TerritoryId": 130,
"InteractionType": "Emote",
"Emote": "me",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
},
{
"DataId": 1003994,
"Position": {
"X": 15.976135,
"Y": 7.9999995,
"Z": -124.071106
},
"TerritoryId": 130,
"InteractionType": "Emote",
"Emote": "me",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
]
},
{
"Sequence": 2,
"Steps": [
{
"DataId": 1004222,
"Position": {
"X": 21.927185,
"Y": 7.1999974,
"Z": -97.39838
},
"TerritoryId": 130,
"InteractionType": "Emote",
"Emote": "me"
}
]
},
{
"Sequence": 3,
"Steps": [
{
"DataId": 1001353,
"Position": {
"X": 21.072632,
"Y": 7.45,
"Z": -78.78235
},
"TerritoryId": 130,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 4,
"Steps": [
{
"DataId": 1001739,
"Position": {
"X": -94.529724,
"Y": 6.4999976,
"Z": 39.81079
},
"TerritoryId": 131,
"InteractionType": "Interact",
"AethernetShortcut": [
"[Ul'dah] Adventurers' Guild",
"[Ul'dah] Gladiators' Guild"
]
}
]
},
{
"Sequence": 5,
"Steps": [
{
"Position": {
"X": -112.70276,
"Y": 7.7544775,
"Z": 9.123527
},
"TerritoryId": 131,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -183.00035,
"Y": 13.958975,
"Z": -13.998203
},
"TerritoryId": 130,
"InteractionType": "WalkTo"
},
{
"DataId": 1003985,
"Position": {
"X": 201.52588,
"Y": 52.038116,
"Z": 149.40112
},
"TerritoryId": 140,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 6,
"Steps": [
{
"DataId": 2001408,
"Position": {
"X": 154.37549,
"Y": 52.536743,
"Z": 200.91553
},
"TerritoryId": 140,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
1246
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
},
{
"DataId": 2001409,
"Position": {
"X": 141.83252,
"Y": 52.994507,
"Z": 221.54565
},
"TerritoryId": 140,
"InteractionType": "Combat",
"EnemySpawnType": "AfterInteraction",
"KillEnemyDataIds": [
1390
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
]
},
{
"Sequence": 7,
"Steps": [
{
"DataId": 1003985,
"Position": {
"X": 201.52588,
"Y": 52.038116,
"Z": 149.40112
},
"TerritoryId": 140,
"InteractionType": "Interact"
}
]
},
{
"Sequence": 255,
"Steps": [
{
"Position": {
"X": 473.74796,
"Y": 96.62057,
"Z": 159.993
},
"TerritoryId": 140,
"InteractionType": "WalkTo"
},
{
"Position": {
"X": -117.06801,
"Y": 9.195247,
"Z": 9.181297
},
"TerritoryId": 130,
"InteractionType": "WalkTo"
},
{
"DataId": 1001739,
"Position": {
"X": -94.529724,
"Y": 6.4999976,
"Z": 39.81079
},
"TerritoryId": 131,
"InteractionType": "CompleteQuest"
}
]
}
]
}

View File

@ -37,16 +37,18 @@
"SkipConditions": {
"AetheryteShortcutIf": {
"NotInSameTerritory": true
},
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
}
},
{
"DataId": 2002380,
@ -76,14 +78,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2002379,
@ -112,14 +118,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2002382,
@ -148,14 +158,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2002381,

View File

@ -65,14 +65,18 @@
"TerritoryId": 139,
"InteractionType": "WalkTo",
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1007844,
@ -120,16 +124,16 @@
},
"TerritoryId": 139,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
],
"Flying": "Unlocked"
}
}

View File

@ -28,18 +28,20 @@
},
"TerritoryId": 155,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
],
"AetheryteShortcut": "Coerthas Central Highlands - Camp Dragonhead",
"SkipConditions": {
"AetheryteShortcutIf": {
"NotInSameTerritory": true
},
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
},
"Fly": true
@ -56,14 +58,18 @@
"KillEnemyDataIds": [
1918
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2002308,
@ -127,14 +133,18 @@
"InteractionType": "UseItem",
"ItemId": 30362,
"TargetTerritoryId": 140,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -148,14 +158,18 @@
"KillEnemyDataIds": [
1920
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2002310,

View File

@ -65,14 +65,18 @@
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -83,14 +87,18 @@
"TerritoryId": 148,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2000748,
@ -120,14 +128,18 @@
"TerritoryId": 148,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"Position": {
@ -137,14 +149,18 @@
},
"TerritoryId": 148,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2000751,

View File

@ -36,14 +36,18 @@
},
"StopDistance": 3
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-8
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}
}
},
{
"DataId": 1002639,

View File

@ -64,14 +64,18 @@
},
"StopDistance": 5
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 1004506,

View File

@ -65,14 +65,18 @@
"TerritoryId": 141,
"InteractionType": "WalkTo",
"DisableNavmesh": false,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1004599,

View File

@ -63,14 +63,18 @@
},
"DelaySeconds": 0.25
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-8
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}
}
},
{
"DataId": 2001953,
@ -109,14 +113,18 @@
},
"DelaySeconds": 0.25
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2001951,
@ -146,14 +154,18 @@
"TerritoryId": 153,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"Position": {
@ -163,14 +175,18 @@
},
"TerritoryId": 153,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2001952,

View File

@ -71,14 +71,18 @@
725,
726
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2002261,

View File

@ -64,14 +64,18 @@
"InteractionType": "WalkTo",
"$": "NW Skyfire Locks door (inside)",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1006396,

View File

@ -34,14 +34,18 @@
},
"TerritoryId": 138,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -52,14 +56,18 @@
"TerritoryId": 138,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1006500,

View File

@ -94,14 +94,18 @@
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Comment": "Avoids pit",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -112,14 +116,18 @@
"TerritoryId": 156,
"InteractionType": "WalkTo",
"Comment": "Move into LOS",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2002230,

View File

@ -68,14 +68,18 @@
"TerritoryId": 351,
"InteractionType": "Interact",
"TargetTerritoryId": 156,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-2
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
2
]
}
}
},
{
"DataId": 1009147,

View File

@ -76,14 +76,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"AetheryteShortcut": "Upper La Noscea - Camp Bronze Lake",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -94,14 +98,18 @@
"TerritoryId": 139,
"InteractionType": "WalkTo",
"TargetTerritoryId": 180,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -112,27 +120,35 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"TerritoryId": 180,
"InteractionType": "AttuneAetheryte",
"Aetheryte": "Outer La Noscea - Camp Overlook",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -143,14 +159,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -161,14 +181,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -179,14 +203,18 @@
"TerritoryId": 180,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2000075,
@ -221,14 +249,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"AetheryteShortcut": "Western La Noscea - Aleport",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2000076,

View File

@ -28,14 +28,18 @@
},
"TerritoryId": 180,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2003715,

View File

@ -28,14 +28,18 @@
},
"TerritoryId": 400,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -46,14 +50,18 @@
"TerritoryId": 400,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -63,14 +71,18 @@
},
"TerritoryId": 400,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1013424,
@ -118,14 +130,18 @@
},
"TerritoryId": 400,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -144,14 +160,18 @@
"Z": 380.9018
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1013421,

View File

@ -28,14 +28,18 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -46,14 +50,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -64,14 +72,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1011932,
@ -99,14 +111,18 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -117,14 +133,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1011924,

View File

@ -34,14 +34,18 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -52,14 +56,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -70,14 +78,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1011932,
@ -106,14 +118,18 @@
},
"TerritoryId": 398,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -124,14 +140,18 @@
"TerritoryId": 398,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1011924,

View File

@ -29,14 +29,18 @@
"TerritoryId": 401,
"InteractionType": "WalkTo",
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -47,14 +51,18 @@
"TerritoryId": 401,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1013498,

View File

@ -86,14 +86,18 @@
},
"TerritoryId": 418,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -104,14 +108,18 @@
"TerritoryId": 418,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1012251,

View File

@ -64,14 +64,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2009361,
@ -160,14 +164,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2009360,
@ -253,14 +261,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2009359,
@ -346,14 +358,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-4
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
4
]
}
}
},
{
"DataId": 2009364,
@ -436,14 +452,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-8
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
8
]
}
}
},
{
"DataId": 2009363,
@ -529,14 +549,18 @@
null,
null
],
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2009362,

View File

@ -63,14 +63,18 @@
"TerritoryId": 813,
"InteractionType": "WalkTo",
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -81,14 +85,18 @@
"TerritoryId": 813,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1027339,
@ -116,14 +124,18 @@
},
"TerritoryId": 813,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -133,14 +145,18 @@
},
"TerritoryId": 813,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -150,14 +166,18 @@
},
"TerritoryId": 813,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1027420,

View File

@ -29,14 +29,18 @@
"TerritoryId": 813,
"InteractionType": "WalkTo",
"Comment": "Tower Bottom",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -48,14 +52,18 @@
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Comment": "Tower Bottom Platform 1",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2010618,

View File

@ -74,14 +74,18 @@
},
"TerritoryId": 813,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1028952,

View File

@ -28,14 +28,18 @@
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2009820,
@ -66,14 +70,18 @@
"TerritoryId": 816,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2009819,

View File

@ -46,14 +46,18 @@
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -64,14 +68,18 @@
"TerritoryId": 816,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2009831,

View File

@ -150,14 +150,18 @@
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -168,14 +172,18 @@
"TerritoryId": 816,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2009836,
@ -214,14 +222,18 @@
},
"DelaySeconds": 0.2
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -241,14 +253,18 @@
},
"DelaySeconds": 0.1
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -268,14 +284,18 @@
},
"DelaySeconds": 0.1
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -295,14 +315,18 @@
},
"DelaySeconds": 0.2
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2009835,

View File

@ -79,14 +79,18 @@
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2009890,
@ -128,14 +132,18 @@
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2009887,
@ -166,14 +174,18 @@
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"Position": {
@ -196,14 +208,18 @@
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2009888,
@ -245,14 +261,18 @@
"StopDistance": 2,
"Type": "RepeatedJumps"
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2009889,

View File

@ -60,14 +60,18 @@
},
"TerritoryId": 814,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2010088,
@ -114,14 +118,18 @@
},
"TerritoryId": 814,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2010089,

View File

@ -48,14 +48,18 @@
"TerritoryId": 819,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1027246,

View File

@ -29,14 +29,18 @@
"TerritoryId": 816,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2010856,
@ -83,14 +87,18 @@
},
"TerritoryId": 816,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2010857,

View File

@ -29,14 +29,18 @@
"StopDistance": 1,
"TerritoryId": 959,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -56,14 +60,18 @@
},
"Mount": false,
"Comment": "Platform 1",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -82,14 +90,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 2",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -108,14 +120,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 3",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -134,14 +150,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 4",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -160,14 +180,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 5",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -186,14 +210,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 6",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -204,14 +232,18 @@
"TerritoryId": 959,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1041789,
@ -287,14 +319,18 @@
},
"Mount": false,
"Comment": "Platform 1",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -314,14 +350,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 2",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -341,14 +381,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 3",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -368,14 +412,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 4",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -395,14 +443,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 5",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"Position": {
@ -422,14 +474,18 @@
"DelaySeconds": 0.25
},
"Comment": "Platform 6",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1041791,

View File

@ -61,14 +61,18 @@
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2011914,

View File

@ -74,7 +74,7 @@
null,
null,
null,
-64
64
],
"$": "QuestVariables after killing enemy: 17 1 0 0 0 64"
},

View File

@ -66,14 +66,18 @@
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1037715,

View File

@ -112,14 +112,18 @@
"InteractionType": "WalkTo",
"Mount": true,
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2012111,
@ -180,14 +184,18 @@
},
"TerritoryId": 958,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
},
"Comment": "Avoids combat"
},
{
@ -219,14 +227,18 @@
"TerritoryId": 958,
"InteractionType": "WalkTo",
"Comment": "Avoids combat",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2012110,

View File

@ -60,14 +60,18 @@
"TerritoryId": 963,
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
},
"Sprint": true
},
{

View File

@ -71,14 +71,18 @@
"Z": -1.1141448
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 2012128,

View File

@ -109,14 +109,18 @@
},
"TerritoryId": 960,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2012354,

View File

@ -51,14 +51,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"AetheryteShortcut": "Thavnair - Yedlihmad",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1037631,

View File

@ -97,14 +97,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1037655,
@ -151,14 +155,18 @@
},
"TerritoryId": 957,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1037708,
@ -169,14 +177,18 @@
},
"TerritoryId": 957,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
}
]
},

View File

@ -68,14 +68,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2012455,
@ -105,14 +109,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2012457,
@ -141,14 +149,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2012456,

View File

@ -45,14 +45,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1042372,
@ -84,14 +88,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1042371,
@ -123,14 +131,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1042373,

View File

@ -45,14 +45,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2012887,
@ -84,14 +88,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2012888,
@ -123,14 +131,18 @@
"InteractionType": "WalkTo",
"Fly": true,
"Land": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2012889,
@ -149,7 +161,7 @@
null,
null,
null,
-32
32
]
}
]

View File

@ -29,14 +29,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2012902,
@ -66,14 +70,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2012901,
@ -103,14 +111,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2012900,

View File

@ -30,14 +30,18 @@
"TerritoryId": 957,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2012907,

View File

@ -34,14 +34,18 @@
"[Radz-at-Han] The Gate of First Sight (Thavnair)"
],
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1042462,

View File

@ -111,14 +111,18 @@
},
"DelaySeconds": 0.25
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2014134,

View File

@ -47,14 +47,18 @@
},
"TerritoryId": 1187,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1046874,

View File

@ -142,14 +142,18 @@
"InteractionType": "WalkTo",
"DisableNavmesh": true,
"Mount": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2013653,
@ -177,14 +181,18 @@
},
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2013655,

View File

@ -113,14 +113,18 @@
},
"TerritoryId": 1191,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2013819,

View File

@ -131,14 +131,18 @@
},
"TerritoryId": 1192,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-16
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
16
]
}
}
},
{
"DataId": 1047904,

View File

@ -29,14 +29,18 @@
"TerritoryId": 1191,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2014091,
@ -85,14 +89,18 @@
"TerritoryId": 1191,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2014093,

View File

@ -31,17 +31,17 @@
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
"Flying": "Locked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
}
},
{
"DataId": 2014184,

View File

@ -31,17 +31,17 @@
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
"Flying": "Locked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
}
},
{
"DataId": 2013901,

View File

@ -49,14 +49,18 @@
"TerritoryId": 1192,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2013916,
@ -86,14 +90,18 @@
"TerritoryId": 1192,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2013917,

View File

@ -29,14 +29,18 @@
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1049284,
@ -64,14 +68,18 @@
},
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1049275,

View File

@ -31,17 +31,17 @@
"Fly": true,
"SkipConditions": {
"StepIf": {
"Flying": "Locked"
"Flying": "Locked",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
},
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
}
},
{
"DataId": 2014051,

View File

@ -46,16 +46,16 @@
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
],
"Flying": "Locked"
}
}
@ -89,16 +89,16 @@
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
],
"Flying": "Locked"
}
},
@ -131,16 +131,16 @@
},
"TerritoryId": 1190,
"InteractionType": "WalkTo",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
],
"Flying": "Locked"
}
},

View File

@ -126,16 +126,16 @@
"InteractionType": "WalkTo",
"AetheryteShortcut": "Shaaloani - Hhusatahwi",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
],
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
],
"Flying": "Locked"
}
},

View File

@ -49,14 +49,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1048995,

View File

@ -45,14 +45,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 2014313,
@ -82,14 +86,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 2014314,
@ -119,14 +127,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 2014315,

View File

@ -29,14 +29,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"DataId": 1051049,
@ -48,14 +52,18 @@
"StopDistance": 4,
"TerritoryId": 1189,
"InteractionType": "Interact",
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-128
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
128
]
}
}
},
{
"Position": {
@ -66,14 +74,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-32
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
32
]
}
}
},
{
"DataId": 1051051,
@ -102,14 +114,18 @@
"TerritoryId": 1189,
"InteractionType": "WalkTo",
"Fly": true,
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
-64
]
"SkipConditions": {
"StepIf": {
"CompletionQuestVariablesFlags": [
null,
null,
null,
null,
null,
64
]
}
}
},
{
"DataId": 1051050,

View File

@ -28,5 +28,6 @@ public static partial class AssemblyQuestLoader
public static Stream QuestSchema =>
typeof(AssemblyQuestLoader).Assembly.GetManifestResourceStream("Questionable.QuestPaths.QuestSchema")!;
[SuppressMessage("ReSharper", "UnusedMember.Local")]
private static void AddQuest(ushort questId, QuestRoot root) => _quests![questId] = root;
}

View File

@ -182,6 +182,9 @@
"Never": {
"type": "boolean"
},
"CompletionQuestVariablesFlags": {
"$ref": "#/$defs/CompletionFlags"
},
"Flying": {
"type": "string",
"enum": [
@ -237,7 +240,8 @@
"WakingSandsMainArea"
]
}
}
},
"additionalProperties": false
},
"AetheryteShortcutIf": {
"type": "object",
@ -248,7 +252,8 @@
"InSameTerritory": {
"type": "boolean"
}
}
},
"additionalProperties": false
},
"AethernetShortcutIf": {
"type": "object",
@ -259,7 +264,8 @@
"InSameTerritory": {
"type": "boolean"
}
}
},
"additionalProperties": false
}
},
"additionalProperties": false
@ -1309,28 +1315,54 @@
"type": "array",
"description": "Quest Variables that dictate whether or not this step is skipped: null is don't check, positive values need to be set, negative values need to be unset",
"items": {
"type": [
"integer",
"null"
],
"enum": [
null,
1,
2,
4,
8,
16,
32,
64,
128,
-1,
-2,
-4,
-8,
-16,
-32,
-64,
-128
"oneOf": [
{
"type": "object",
"properties": {
"High": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 15
},
"Low": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 15
},
"Negative": {
"type": "boolean"
},
"Mode": {
"type": "string",
"enum": [
"Bitwise",
"Exact"
]
}
}
},
{
"type": "number",
"enum": [
1,
2,
4,
8,
16,
32,
64,
128
]
},
{
"type": "null"
}
]
},
"minItems": 6,

View File

@ -14,6 +14,6 @@ public sealed class ComplexCombatData
/// </summary>
public uint? RewardItemId { get; set; }
public int? RewardItemCount { get; set; }
public IList<short?> CompletionQuestVariablesFlags { get; set; } = new List<short?>();
public IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = new List<QuestWorkValue?>();
public bool IgnoreQuestMarker { get; set; }
}

View File

@ -15,6 +15,7 @@ public sealed class QuestWorkConfigConverter : JsonConverter<QuestWorkValue>
throw new JsonException();
byte? high = null, low = null;
EQuestWorkMode mode = EQuestWorkMode.Bitwise;
while (reader.Read())
{
switch (reader.TokenType)
@ -34,6 +35,10 @@ public sealed class QuestWorkConfigConverter : JsonConverter<QuestWorkValue>
low = reader.GetByte();
break;
case nameof(QuestWorkValue.Mode):
mode = new QuestWorkModeConverter().Read(ref reader, typeof(EQuestWorkMode), options);
break;
default:
throw new JsonException();
}
@ -41,7 +46,7 @@ public sealed class QuestWorkConfigConverter : JsonConverter<QuestWorkValue>
break;
case JsonTokenType.EndObject:
return new QuestWorkValue(high, low);
return new QuestWorkValue(high, low, mode);
default:
throw new JsonException();

View File

@ -0,0 +1,12 @@
using System.Collections.Generic;
namespace Questionable.Model.V1.Converter;
public sealed class QuestWorkModeConverter() : EnumConverter<EQuestWorkMode>(Values)
{
private static readonly Dictionary<EQuestWorkMode, string> Values = new()
{
{ EQuestWorkMode.Bitwise, "Bitwise" },
{ EQuestWorkMode.Exact, "Exact" },
};
}

View File

@ -7,7 +7,7 @@ namespace Questionable.Model.V1.Converter;
public sealed class StringListOrValueConverter : JsonConverter<List<string>>
{
public override List<string>? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
public override List<string> Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
if (reader.TokenType == JsonTokenType.String)
return [reader.GetString()!];

View File

@ -0,0 +1,11 @@
using System.Text.Json.Serialization;
using Questionable.Model.V1.Converter;
namespace Questionable.Model.V1;
[JsonConverter(typeof(QuestWorkModeConverter))]
public enum EQuestWorkMode
{
Bitwise,
Exact,
}

View File

@ -64,7 +64,7 @@ public sealed class QuestStep
public SkipConditions? SkipConditions { get; set; }
public List<List<QuestWorkValue>?> RequiredQuestVariables { get; set; } = new();
public IList<short?> CompletionQuestVariablesFlags { get; set; } = new List<short?>();
public IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = new List<QuestWorkValue?>();
public IList<DialogueChoice> DialogueChoices { get; set; } = new List<DialogueChoice>();
public IList<uint> PointMenuChoices { get; set; } = new List<uint>();

View File

@ -1,16 +1,30 @@
using System.Text.Json.Serialization;
using System;
using System.Text.Json.Serialization;
using Questionable.Model.V1.Converter;
namespace Questionable.Model.V1;
[JsonConverter(typeof(QuestWorkConfigConverter))]
public sealed class QuestWorkValue(byte? high, byte? low)
public sealed class QuestWorkValue(byte? high, byte? low, EQuestWorkMode mode)
{
public QuestWorkValue(byte value)
: this((byte)(value >> 4), (byte)(value & 0xF))
: this((byte)(value >> 4), (byte)(value & 0xF), EQuestWorkMode.Bitwise)
{
}
public byte? High { get; set; } = high;
public byte? Low { get; set; } = low;
public EQuestWorkMode Mode { get; set; } = mode;
public override string ToString()
{
if (High != null && Low != null)
return ((byte)(High << 4) + Low).ToString();
else if (High != null)
return High + "H";
else if (Low != null)
return Low + "L";
else
return "-";
}
}

View File

@ -1,10 +1,12 @@
using System.Collections.Generic;
using System.Linq;
namespace Questionable.Model.V1;
public sealed class SkipStepConditions
{
public bool Never { get; set; }
public IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = new List<QuestWorkValue?>();
public ELockedSkipCondition? Flying { get; set; }
public ELockedSkipCondition? Chocobo { get; set; }
public bool NotTargetable { get; set; }
@ -19,7 +21,8 @@ public sealed class SkipStepConditions
{
if (Never)
return false;
return Flying != null ||
return (CompletionQuestVariablesFlags.Count > 6 && CompletionQuestVariablesFlags.Any(x => x != null)) ||
Flying != null ||
Chocobo != null ||
InTerritory.Count > 0 ||
NotInTerritory.Count > 0 ||
@ -27,4 +30,10 @@ public sealed class SkipStepConditions
QuestsAccepted.Count > 0 ||
QuestsCompleted.Count > 0;
}
public override string ToString()
{
return
$"{nameof(Never)}: {Never}, {nameof(CompletionQuestVariablesFlags)}: {CompletionQuestVariablesFlags}, {nameof(Flying)}: {Flying}, {nameof(Chocobo)}: {Chocobo}, {nameof(NotTargetable)}: {NotTargetable}, {nameof(InTerritory)}: {string.Join(" ", InTerritory)}, {nameof(NotInTerritory)}: {string.Join(" ", NotInTerritory)}, {nameof(Item)}: {Item}, {nameof(QuestsAccepted)}: {string.Join(" ", QuestsAccepted)}, {nameof(QuestsCompleted)}: {string.Join(" ", QuestsCompleted)}, {nameof(ExtraCondition)}: {ExtraCondition}";
}
}

View File

@ -172,7 +172,7 @@ internal sealed class CombatController : IDisposable
{
var questWork = _gameFunctions.GetQuestEx(_currentFight.Data.QuestId);
if (questWork != null && QuestWorkUtils.MatchesQuestWork(condition.CompletionQuestVariablesFlags,
questWork.Value, false))
questWork.Value))
{
_logger.LogInformation("Complex combat condition fulfilled: QuestWork matches");
_currentFight.Data.CompletedComplexDatas.Add(i);

View File

@ -82,10 +82,10 @@ internal static class Combat
{
private bool _isLastStep;
private CombatController.CombatData _combatData = null!;
private IList<short?> _completionQuestVariableFlags = null!;
private IList<QuestWorkValue?> _completionQuestVariableFlags = null!;
public ITask With(ushort questId, bool isLastStep, EEnemySpawnType enemySpawnType, IList<uint> killEnemyDataIds,
IList<short?> completionQuestVariablesFlags, IList<ComplexCombatData> complexCombatData)
IList<QuestWorkValue?> completionQuestVariablesFlags, IList<ComplexCombatData> complexCombatData)
{
_isLastStep = isLastStep;
_combatData = new CombatController.CombatData
@ -113,7 +113,7 @@ internal static class Combat
if (questWork == null)
return ETaskResult.StillRunning;
if (QuestWorkUtils.MatchesQuestWork(_completionQuestVariableFlags, questWork.Value, false))
if (QuestWorkUtils.MatchesQuestWork(_completionQuestVariableFlags, questWork.Value))
return ETaskResult.TaskComplete;
else
return ETaskResult.StillRunning;

View File

@ -119,7 +119,7 @@ internal static class UseItem
public ushort? QuestId { get; set; }
public uint ItemId { get; set; }
public IList<short?> CompletionQuestVariablesFlags { get; set; } = new List<short?>();
public IList<QuestWorkValue?> CompletionQuestVariablesFlags { get; set; } = new List<QuestWorkValue?>();
public bool StartingCombat { get; set; }
protected abstract bool UseItem();
@ -145,7 +145,7 @@ internal static class UseItem
{
QuestWork? questWork = gameFunctions.GetQuestEx(QuestId.Value);
if (questWork != null &&
QuestWorkUtils.MatchesQuestWork(CompletionQuestVariablesFlags, questWork.Value, false))
QuestWorkUtils.MatchesQuestWork(CompletionQuestVariablesFlags, questWork.Value))
return ETaskResult.TaskComplete;
}
@ -202,7 +202,7 @@ internal static class UseItem
public uint DataId { get; set; }
public ITask With(ushort? questId, uint dataId, uint itemId, IList<short?> completionQuestVariablesFlags)
public ITask With(ushort? questId, uint dataId, uint itemId, IList<QuestWorkValue?> completionQuestVariablesFlags)
{
QuestId = questId;
DataId = dataId;
@ -226,7 +226,7 @@ internal static class UseItem
public Vector3 Position { get; set; }
public ITask With(ushort? questId, Vector3 position, uint itemId, IList<short?> completionQuestVariablesFlags)
public ITask With(ushort? questId, Vector3 position, uint itemId, IList<QuestWorkValue?> completionQuestVariablesFlags)
{
QuestId = questId;
Position = position;
@ -248,7 +248,7 @@ internal static class UseItem
public uint DataId { get; set; }
public ITask With(ushort? questId, uint dataId, uint itemId, IList<short?> completionQuestVariablesFlags,
public ITask With(ushort? questId, uint dataId, uint itemId, IList<QuestWorkValue?> completionQuestVariablesFlags,
bool startingCombat = false)
{
QuestId = questId;
@ -269,7 +269,7 @@ internal static class UseItem
{
private readonly GameFunctions _gameFunctions = gameFunctions;
public ITask With(ushort? questId, uint itemId, IList<short?> completionQuestVariablesFlags)
public ITask With(ushort? questId, uint itemId, IList<QuestWorkValue?> completionQuestVariablesFlags)
{
QuestId = questId;
ItemId = itemId;

View File

@ -156,15 +156,27 @@ internal static class SkipCondition
}
QuestWork? questWork = gameFunctions.GetQuestEx(QuestId);
if (questWork != null)
if (QuestWorkUtils.HasCompletionFlags(Step.CompletionQuestVariablesFlags) && questWork != null)
{
if (QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, true))
if (QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value))
{
logger.LogInformation("Skipping step, as quest variables match");
logger.LogInformation("Skipping step, as quest variables match (step is complete)");
return true;
}
}
if (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(Step.RequiredQuestVariables, questWork.Value,
if (Step is { SkipConditions.StepIf: { } conditions } && questWork != null)
{
if (QuestWorkUtils.MatchesQuestWork(conditions.CompletionQuestVariablesFlags, questWork.Value))
{
logger.LogInformation("Skipping step, as quest variables match (step can be skipped)");
return true;
}
}
if (Step is { RequiredQuestVariables: { } requiredQuestVariables } && questWork != null)
{
if (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(requiredQuestVariables, questWork.Value,
logger))
{
logger.LogInformation("Skipping step, as required variables do not match");

View File

@ -27,7 +27,7 @@ internal static class WaitAtEnd
{
public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
{
if (step.CompletionQuestVariablesFlags.Count == 6 && step.CompletionQuestVariablesFlags.Any(x => x is > 0))
if (step.CompletionQuestVariablesFlags.Count == 6 && QuestWorkUtils.HasCompletionFlags(step.CompletionQuestVariablesFlags))
{
var task = serviceProvider.GetRequiredService<WaitForCompletionFlags>()
.With(quest, step);
@ -164,7 +164,7 @@ internal static class WaitAtEnd
{
public Quest Quest { get; set; } = null!;
public QuestStep Step { get; set; } = null!;
public IList<short?> Flags { get; set; } = null!;
public IList<QuestWorkValue?> Flags { get; set; } = null!;
public ITask With(Quest quest, QuestStep step)
{
@ -180,13 +180,13 @@ internal static class WaitAtEnd
{
QuestWork? questWork = gameFunctions.GetQuestEx(Quest.QuestId);
return questWork != null &&
QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value, false)
QuestWorkUtils.MatchesQuestWork(Step.CompletionQuestVariablesFlags, questWork.Value)
? ETaskResult.TaskComplete
: ETaskResult.StillRunning;
}
public override string ToString() =>
$"Wait(QW: {string.Join(", ", Flags.Select(x => x?.ToString(CultureInfo.InvariantCulture) ?? "-"))})";
$"Wait(QW: {string.Join(", ", Flags.Select(x => x?.ToString() ?? "-"))})";
}
internal sealed class WaitObjectAtPosition(GameFunctions gameFunctions) : ITask

View File

@ -10,40 +10,50 @@ namespace Questionable.Controller.Utils;
internal static class QuestWorkUtils
{
public static bool HasCompletionFlags(IList<short?> completionQuestVariablesFlags)
public static bool HasCompletionFlags(IList<QuestWorkValue?> completionQuestVariablesFlags)
{
return completionQuestVariablesFlags.Count == 6 && completionQuestVariablesFlags.Any(x => x != null);
return completionQuestVariablesFlags.Count == 6 && completionQuestVariablesFlags.Any(x => x != null && (x.High != 0 || x.Low != 0));
}
/// <summary>
/// Positive values: Must be set to this value; will wait for the step to have these set.
/// Negative values: Will skip if set to this value, won't wait for this to be set.
/// </summary>
public static bool MatchesQuestWork(IList<short?> completionQuestVariablesFlags, QuestWork questWork, bool forSkip)
public static bool MatchesQuestWork(IList<QuestWorkValue?> completionQuestVariablesFlags, QuestWork questWork)
{
if (!HasCompletionFlags(completionQuestVariablesFlags))
return false;
for (int i = 0; i < 6; ++i)
{
short? check = completionQuestVariablesFlags[i];
QuestWorkValue? check = completionQuestVariablesFlags[i];
if (check == null)
continue;
byte actualValue = questWork.Variables[i];
byte checkByte = check > 0 ? (byte)check : (byte)-check;
if (forSkip)
EQuestWorkMode mode = check.Mode;
byte actualHigh = (byte)(questWork.Variables[i] >> 4);
byte actualLow = (byte)(questWork.Variables[i] & 0xF);
byte? checkHigh = check.High;
byte? checkLow = check.Low;
byte expectedHigh = checkHigh.GetValueOrDefault();
byte expectedLow = checkLow.GetValueOrDefault();
if (mode == EQuestWorkMode.Exact)
{
byte expectedValue = (byte)Math.Abs(check.Value);
if ((actualValue & checkByte) != expectedValue)
if (checkHigh != null && actualHigh != expectedHigh)
return false;
if (checkLow != null && actualLow != expectedLow)
return false;
}
else if (!forSkip && check > 0)
else if (mode == EQuestWorkMode.Bitwise)
{
byte expectedValue = check > 0 ? (byte)check : (byte)0;
if ((actualValue & checkByte) != expectedValue)
if (checkHigh != null && (actualHigh & checkHigh) != expectedHigh)
return false;
if (checkLow != null && (actualLow & checkLow) != expectedLow)
return false;
}
else
throw new InvalidOperationException($"Unknown qw mode {mode}");
}
return true;
@ -54,7 +64,7 @@ internal static class QuestWorkUtils
{
if (requiredQuestVariables.Count != 6 || requiredQuestVariables.All(x => x == null || x.Count == 0))
{
logger.LogInformation("No RQW defined");
logger.LogDebug("No RQW defined");
return true;
}
@ -71,7 +81,7 @@ internal static class QuestWorkUtils
foreach (QuestWorkValue expectedValue in requiredQuestVariables[i]!)
{
logger.LogInformation("H: {ExpectedHigh} - {ActualHigh}, L: {ExpectedLow} - {ActualLow}",
logger.LogDebug("H: {ExpectedHigh} - {ActualHigh}, L: {ExpectedLow} - {ActualLow}",
expectedValue.High, high, expectedValue.Low, low);
if (expectedValue.High != null && expectedValue.High != high)
continue;

View File

@ -3,6 +3,7 @@ using System.Linq;
using System.Numerics;
using Questionable.Controller.Utils;
using Questionable.Model;
using Questionable.Model.V1;
namespace Questionable.Validation.Validators;
@ -19,10 +20,13 @@ internal sealed class CompletionFlagsValidator : IQuestValidator
{
return Enumerable.Range(0, 6).Select(y =>
{
short? value = x.CompletionQuestVariablesFlags[y];
if (value == null || value.Value < 0)
QuestWorkValue? value = x.CompletionQuestVariablesFlags[y];
if (value == null)
return 0;
return (long)BitOperations.RotateLeft((ulong)value.Value, 8 * y);
// this isn't perfect, as it assumes {High: 1, Low: null} == {High: 1, Low: 0}
return (long)BitOperations.RotateLeft(
(ulong)(value.High.GetValueOrDefault() * 16 + value.Low.GetValueOrDefault()), 8 * y);
})
.Sum();
}
@ -46,7 +50,8 @@ internal sealed class CompletionFlagsValidator : IQuestValidator
Step = i,
Type = EIssueType.DuplicateCompletionFlags,
Severity = EIssueSeverity.Error,
Description = $"Duplicate completion flags: {string.Join(", ", sequence.Steps[i].CompletionQuestVariablesFlags)}",
Description =
$"Duplicate completion flags: {string.Join(", ", sequence.Steps[i].CompletionQuestVariablesFlags)}",
};
}
}