Update CompletionQuestVariablesFlags for skip checking
authorLiza Carvelli <liza@carvel.li>
Thu, 1 Aug 2024 01:22:01 +0000 (03:22 +0200)
committerLiza Carvelli <liza@carvel.li>
Thu, 1 Aug 2024 01:22:01 +0000 (03:22 +0200)
83 files changed:
QuestPathGenerator/RoslynShortcuts.cs
QuestPaths/2.x - A Realm Reborn/Class Quests/GLA/253_Way of the Gladiator.json
QuestPaths/2.x - A Realm Reborn/Class Quests/GLA/256_Kicking the Hornet's Nest.json [new file with mode: 0644]
QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1098_The Last Remnants.json
QuestPaths/2.x - A Realm Reborn/Class Quests/SCH/1101_For Your Fellow Man.json
QuestPaths/2.x - A Realm Reborn/Class Quests/WAR/1052_Looking the Part.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Gridania/377_Don't Look Down.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Limsa/465_Washed Up.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Shared/574_Dressed to Deceive.json
QuestPaths/2.x - A Realm Reborn/MSQ-1/Ul'dah/671_Nothing to See Here.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/A3-South Shroud, Buscarron’s Druthers/738_Sylphish Concerns.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/B6-Coerthas Central Highlands, Camp Dragonhead/889_Three for Three.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/B7-Coerthas Central Highlands, Camp Dragonhead/897_The Talk of Coerthas.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/C2-Western La Noscea, Isles of Umbra/960_It's Probably Not Pirates.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/C6-Mor Dhona/1001_Drowning Out the Voices.json
QuestPaths/2.x - A Realm Reborn/MSQ-2/E3-2.3/1460_Brave New Companions.json
QuestPaths/2.x - A Realm Reborn/Raid Quests/1709_Legacy of Allag.json
QuestPaths/2.x - A Realm Reborn/Tribal/Kobolds/Story/1321_How Low Can You Go.json
QuestPaths/3.x - Heavensward/Aether Currents/The Churning Mists/1828_Hide Your Moogles.json
QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1771_Some Bad News.json
QuestPaths/3.x - Heavensward/Aether Currents/The Dravanian Forelands/1797_The Hunter Becomes the Kweh.json
QuestPaths/3.x - Heavensward/MSQ/A1-Coerthas Western Highlands 1, Sea of Clouds 1/1593_Sense of Urgency.json
QuestPaths/3.x - Heavensward/MSQ/A6-The Dravanian Hinterlands/1662_Hour of Departure.json
QuestPaths/4.x - Stormblood/Tribal/Ananta/Dailies/3064_Thin-skinned.json
QuestPaths/5.x - Shadowbringers/Aether Currents/Lakeland/3380_A Jobb Well Done.json
QuestPaths/5.x - Shadowbringers/Aether Currents/Lakeland/3384_Imperative Repairs.json
QuestPaths/5.x - Shadowbringers/MSQ/B-Il Mheg/3305_The Oracle of Light.json
QuestPaths/5.x - Shadowbringers/MSQ/B-Il Mheg/3307_Sul Uin's Request.json
QuestPaths/5.x - Shadowbringers/MSQ/B-Il Mheg/3315_Spore Sweeper.json
QuestPaths/5.x - Shadowbringers/MSQ/B-Il Mheg/3316_The Lawless Ones.json
QuestPaths/5.x - Shadowbringers/MSQ/C-Rak'tika/3335_Look to the Stars.json
QuestPaths/5.x - Shadowbringers/MSQ/E-Kholusia 2/3633_The Ladder.json
QuestPaths/5.x - Shadowbringers/MSQ/F-Tempest/3645_In His Garden.json
QuestPaths/5.x - Shadowbringers/Tribal/Pixies/Dailies/3689_Where There's Wool, There's a Way.json
QuestPaths/6.x - Endwalker/Aether Currents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json
QuestPaths/6.x - Endwalker/Aether Currents/Thavnair/4203_Alchemist or Dancer.json
QuestPaths/6.x - Endwalker/Aether Currents/Thavnair/4259_Radiant Patrol.json
QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4389_Personae non Gratae.json
QuestPaths/6.x - Endwalker/MSQ/B-Garlemald/4393_Strange Bedfellows.json
QuestPaths/6.x - Endwalker/MSQ/D-Thavnair2/4410_The Blasphemy Unmasked.json
QuestPaths/6.x - Endwalker/MSQ/E-Elpis/4420_Hope Upon a Flower.json
QuestPaths/6.x - Endwalker/MSQ/G-UltimaThule/4456_Roads Paved of Sacrifice.json
QuestPaths/6.x - Endwalker/MSQ/H-6.1/4531_Sharing the Wealth.json
QuestPaths/6.x - Endwalker/Side Quests/Thavnair/4491_Ogul Repays Her Favors.json
QuestPaths/6.x - Endwalker/Side Quests/Thavnair/4495_The Sins We Bear.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4557_Gulal Generosity.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4564_Olfactory Warfare.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4570_Patching Up.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4573_Gathering Moss.json
QuestPaths/6.x - Endwalker/Tribal/Arkasodara/Dailies/4574_Blood from a Stonemason.json
QuestPaths/7.x - Dawntrail/Aether Currents/Urqopacha/5047_An Illuminating Ritual.json
QuestPaths/7.x - Dawntrail/MSQ/B-Kozama'uka2-Urqopacha2/4892_An Echo of Madness.json
QuestPaths/7.x - Dawntrail/MSQ/C-Yak T'el/4907_Mamook Speaks.json
QuestPaths/7.x - Dawntrail/MSQ/D-Shaaloani-HeritageFound1/4927_The Land of Levin.json
QuestPaths/7.x - Dawntrail/MSQ/F-Living Memory/4952_A Knight of Alexandria.json
QuestPaths/7.x - Dawntrail/Side Quests/Heritage Found/5155_History Reforged.json
QuestPaths/7.x - Dawntrail/Side Quests/Kozama'uka/5075_Water Colors.json
QuestPaths/7.x - Dawntrail/Side Quests/Living Memory/5175_The Canals of History.json
QuestPaths/7.x - Dawntrail/Side Quests/Living Memory/5181_Leaving This Place for Good.json
QuestPaths/7.x - Dawntrail/Side Quests/Shaaloani/5121_Taste of the Wilds.json
QuestPaths/7.x - Dawntrail/Side Quests/Shaaloani/5132_Death by Popoto.json
QuestPaths/7.x - Dawntrail/Side Quests/Shaaloani/5142_Back on Stage.json
QuestPaths/7.x - Dawntrail/Side Quests/Shaaloani/5148_Dig for Victory.json
QuestPaths/7.x - Dawntrail/Side Quests/Yak T'el/5097_Sick Day.json
QuestPaths/7.x - Dawntrail/Side Quests/Yak T'el/5098_To Forge in the Forest.json
QuestPaths/7.x - Dawntrail/Side Quests/Yak T'el/5101_Two Hearts Aflutter.json
QuestPaths/AssemblyQuestLoader.cs
QuestPaths/quest-v1.json
Questionable.Model/V1/ComplexCombatData.cs
Questionable.Model/V1/Converter/QuestWorkConfigConverter.cs
Questionable.Model/V1/Converter/QuestWorkModeConverter.cs [new file with mode: 0644]
Questionable.Model/V1/Converter/StringListOrValueConverter.cs
Questionable.Model/V1/EQuestWorkMode.cs [new file with mode: 0644]
Questionable.Model/V1/QuestStep.cs
Questionable.Model/V1/QuestWorkValue.cs
Questionable.Model/V1/SkipStepConditions.cs
Questionable/Controller/CombatController.cs
Questionable/Controller/Steps/Interactions/Combat.cs
Questionable/Controller/Steps/Interactions/UseItem.cs
Questionable/Controller/Steps/Shared/SkipCondition.cs
Questionable/Controller/Steps/Shared/WaitAtEnd.cs
Questionable/Controller/Utils/QuestWorkUtils.cs
Questionable/Validation/Validators/CompletionFlagsValidator.cs

index 63ccdcd63d2df0930c64ba75cd0df67f74fabf4d..2bacaba4fc5724a30e60a3dd73e53cfc3f131e60 100644 (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(),
index 790d56719f248886322f0a03c16dcd839e5722fb..09113bd9ab0eb85a31a023ca2638dab6bc4b4a98 100644 (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,
           ]
         }
       ]
+    },
+    {
+      "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
+        }
+      ]
     }
   ]
 }
diff --git a/QuestPaths/2.x - A Realm Reborn/Class Quests/GLA/256_Kicking the Hornet's Nest.json b/QuestPaths/2.x - A Realm Reborn/Class Quests/GLA/256_Kicking the Hornet's Nest.json
new file mode 100644 (file)
index 0000000..88320c0
--- /dev/null
@@ -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"
+        }
+      ]
+    }
+  ]
+}
index 9ba37d4581d2369aa2ee3ac61fa28251c9c45460..a7116baca83647989166be3f6fc9f563f6fefd2a 100644 (file)
           "SkipConditions": {
             "AetheryteShortcutIf": {
               "NotInSameTerritory": true
+            },
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
             }
-          },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          }
         },
         {
           "DataId": 2002380,
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2002379,
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2002382,
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2002381,
index b52d04ba1a01fe74cc638649bf226db9a967da39..a2b6469035ef6a260ccdb300f0c1a3b8b7036c33 100644 (file)
           "TerritoryId": 139,
           "InteractionType": "WalkTo",
           "Mount": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1007844,
           },
           "TerritoryId": 139,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ],
           "SkipConditions": {
             "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ],
               "Flying": "Unlocked"
             }
           }
index 6dcb2e15ba99bce269a0fc547a7a2d0764efdcc6..5e629673ba606af509e8c09e28e3c367041c138c 100644 (file)
           },
           "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
           "KillEnemyDataIds": [
             1918
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2002308,
           "InteractionType": "UseItem",
           "ItemId": 30362,
           "TargetTerritoryId": 140,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "KillEnemyDataIds": [
             1920
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2002310,
index d4d4a3ebdc91364564186ef5ac9f10b55522680a..e3a5ea4f10952c5c841fef37ea2985f37b00e0db 100644 (file)
           },
           "TerritoryId": 148,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 148,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2000748,
           "TerritoryId": 148,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "TerritoryId": 148,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2000751,
index 51da268c24758ed0f4cfd4fcb8959ba85a49b2de..8a9700f89a7946c1f9f12dfacde88469dfc7d240 100644 (file)
             },
             "StopDistance": 3
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -8
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                8
+              ]
+            }
+          }
         },
         {
           "DataId": 1002639,
index 982e2df40d6989266d52772fe2853ce52cac9c63..75423c9d68aa6f8a3eed81d5a7771cf50628586c 100644 (file)
             },
             "StopDistance": 5
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 1004506,
index 10b55d2215250985371eb401b2a2d6f739fb0588..e9f7f5ad6f5099d6bb178bad63c9d71bea5a2e13 100644 (file)
           "TerritoryId": 141,
           "InteractionType": "WalkTo",
           "DisableNavmesh": false,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1004599,
index d9c687768a16afec59891a8406d228b94b985182..e4b2ae378ed085798262a1d5bce555494adacf04 100644 (file)
             },
             "DelaySeconds": 0.25
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -8
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                8
+              ]
+            }
+          }
         },
         {
           "DataId": 2001953,
             },
             "DelaySeconds": 0.25
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2001951,
           "TerritoryId": 153,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "TerritoryId": 153,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2001952,
index eb2aae1f664c286b1c98277661886c2d4d86ddd5..3ff98b75ba9fdce1cfe15b5bea3be61df4635bc3 100644 (file)
             725,
             726
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2002261,
index 968fd089a9a81064beb73a256994021337e2d53b..8f5426e3c21507fcd2aa5abb654342a2aae127a2 100644 (file)
           "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,
index 6400f289cde687447729d337c645ce6a3a032145..f2be862b5086b916bb842367359268ccf4a7cc49 100644 (file)
           },
           "TerritoryId": 138,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 138,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1006500,
index 805400afac2ecf723b20137729d2d79c138d7248..c9fc5c3a54e87fd374721e51b62ae6e6ad6f708f 100644 (file)
           "TerritoryId": 156,
           "InteractionType": "WalkTo",
           "Comment": "Avoids pit",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "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,
index 0da1b85813a4d7cd5967783715ee36fee99a8b51..e318a55b9afb665926eeb5974cdb718800f60a22 100644 (file)
           "TerritoryId": 351,
           "InteractionType": "Interact",
           "TargetTerritoryId": 156,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -2
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                2
+              ]
+            }
+          }
         },
         {
           "DataId": 1009147,
index f9ed54c6a15a3ef3de2ec6ffb20103dac90ecf77..b0157e38e0efd49e5576094fb2bb73a32f10cbcf 100644 (file)
           "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": {
           "TerritoryId": 139,
           "InteractionType": "WalkTo",
           "TargetTerritoryId": 180,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "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": {
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2000075,
           "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,
index 7f119f73547b4f9a8d6f74bc2d123b6ed84dc77c..b53e459c618fc5fdb416d219297bb6297aea6b2c 100644 (file)
           },
           "TerritoryId": 180,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2003715,
index e152eea9ee98e0b4350dac129c0120e3522b8c91..7d7043cf207f3f476f71c5bcf6833a5f8618eedb 100644 (file)
           },
           "TerritoryId": 400,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 400,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "TerritoryId": 400,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1013424,
           },
           "TerritoryId": 400,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
               "Z": 380.9018
             }
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1013421,
index 4010255c12cab77d32feac9cc57d69e2d2387b36..c584f07b109832fb0eaa7b8c9298f8e3671803c2 100644 (file)
           },
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1011932,
           },
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1011924,
index 1b6676ba77e94a7d5d4c12f0ced2f0a0550532fb..11df6fd8b47d8f66e9a1e5478386d974749d7ee1 100644 (file)
           },
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1011932,
           },
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 398,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1011924,
index 499045dbf38a117334fe8489fa956c51845b568a..4a8d50acbb1b0de3ff3630fabf9509cc266a3305 100644 (file)
           "TerritoryId": 401,
           "InteractionType": "WalkTo",
           "Mount": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 401,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1013498,
index b79ad407363cb2db51d24752727d818b5c0e917a..ddf0e6eaf3ca1f155b80d99a0639bb5249bf1c50 100644 (file)
           },
           "TerritoryId": 418,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 418,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1012251,
index 59c56180e844baa71fcc5f37c8d4722f58f0509c..2e3c84b601751d9b2f06f8935a4ad215fe5e8aca 100644 (file)
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2009361,
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2009360,
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2009359,
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -4
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                4
+              ]
+            }
+          }
         },
         {
           "DataId": 2009364,
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -8
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                8
+              ]
+            }
+          }
         },
         {
           "DataId": 2009363,
             null,
             null
           ],
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2009362,
index 19c4d695edce71c0e5c04437738fa8223f577714..bb74f2781b96e4bd3410690da51f08c9ec0ff946 100644 (file)
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
           "Mount": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1027339,
           },
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1027420,
index b54bc1326c61a27ae8f3a825fc37165f36d13366..4f8715aa4e06cef549fa2d6fcec67ee7962bcd0c 100644 (file)
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
           "Comment": "Tower Bottom",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "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,
index 8c3baec4a3d6e1c5e0c30457efe53e8c8a43e800..5aeffbc0d69cf18872a8bd1abe5612eb17ec9e35 100644 (file)
           },
           "TerritoryId": 813,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1028952,
index b578fa65572738a28828d3deb154efb07ef59a6f..b4801eeda46e9fe62c60ca340e5f9400881ad3ee 100644 (file)
           },
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2009820,
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2009819,
index 93eeea774c9c771a989060c5effb91b508bc505c..9992925579b529fa776bd8c17c66245708b1ac26 100644 (file)
           },
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2009831,
index 9acc6b95babec8501f0aa97fee22f098d40766d6..07967866bb908f4ea2939479aec1900c5bc196cd 100644 (file)
           },
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2009836,
             },
             "DelaySeconds": 0.2
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
             },
             "DelaySeconds": 0.1
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
             },
             "DelaySeconds": 0.1
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
             },
             "DelaySeconds": 0.2
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2009835,
index a005447b9947ebdf2966febf5ae5215a2b5a85fd..668c8fee53c5e4a72778d20c21ee50dcda7d35bc 100644 (file)
             "StopDistance": 2,
             "Type": "RepeatedJumps"
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2009890,
             "StopDistance": 2,
             "Type": "RepeatedJumps"
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2009887,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
           "Mount": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "Position": {
             "StopDistance": 2,
             "Type": "RepeatedJumps"
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2009888,
             "StopDistance": 2,
             "Type": "RepeatedJumps"
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2009889,
index a7c9fd2544e1dc6202c50f7a12a3c7ac45490045..0c46f86d9546b322eb500a0e01b97f478b680442 100644 (file)
           },
           "TerritoryId": 814,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2010088,
           },
           "TerritoryId": 814,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2010089,
index 8972210d746e4183081351e30a8777cf1ac5e677..a2485ea1ed083f839562ac7c35d7be44d501f4ef 100644 (file)
           "TerritoryId": 819,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1027246,
index 51110d7245896b0117fb6a75f953713fcf5a0fbf..6a4cbf23fc1ca5345d7bd616bd8ba6b05060f1a5 100644 (file)
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2010856,
           },
           "TerritoryId": 816,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2010857,
index 720ba8e84ce71cc6c4516a46347b935179e07844..0d7637ca4eab38c0ed700839fa5d6a3156e6104a 100644 (file)
           "StopDistance": 1,
           "TerritoryId": 959,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           },
           "Mount": false,
           "Comment": "Platform 1",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 2",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 3",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 4",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 5",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 6",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 959,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1041789,
           },
           "Mount": false,
           "Comment": "Platform 1",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 2",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 3",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 4",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 5",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "Position": {
             "DelaySeconds": 0.25
           },
           "Comment": "Platform 6",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1041791,
index 6e01fb6fd0418771ac9359957c79bd136b533176..3b15ae0b79e6b5c19da7e4f9258b863b8bc9a701 100644 (file)
           },
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2011914,
index ca5a86522157a77f327897f5ee0e25aaa4626c1a..43425dbe4a50d78d0c539f853c05f75e108cc68e 100644 (file)
@@ -74,7 +74,7 @@
             null,
             null,
             null,
-            -64
+            64
           ],
           "$": "QuestVariables after killing enemy: 17 1 0 0 0 64"
         },
index d76baf9dd9b73e6d22af76ba2ef3b3925402a18e..9bee400fcb3a467d20f27114bbeee871faf87fbf 100644 (file)
           },
           "TerritoryId": 958,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1037715,
index 8dfb9b50976f2fd13ce105dc10942a4843bf2aeb..04342d49e67bc4bb63cf6dc374b1e8248e074d39 100644 (file)
           "InteractionType": "WalkTo",
           "Mount": true,
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2012111,
           },
           "TerritoryId": 958,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ],
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          },
           "Comment": "Avoids combat"
         },
         {
           "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,
index 436856e5fbad0accb19e523bd4360766d1fe2a49..92f13d8351ba8fa767cb07078f2f2686e31ea1cc 100644 (file)
           "TerritoryId": 963,
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ],
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          },
           "Sprint": true
         },
         {
index 905075126b381871cf3d07bff23a5c19db190607..82b13f6e9efd7de92d7fe973f15e35a30c5581fb 100644 (file)
               "Z": -1.1141448
             }
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 2012128,
index 4289281a4611bf7fcf1e70915f349c0859614970..deaef79129709bb337c5b600ee072e307869a199 100644 (file)
           },
           "TerritoryId": 960,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2012354,
index 476a865921ad0aa07324977aa12b311691697ab5..59686b6f4a02693c118e598e664128922301a776 100644 (file)
           "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,
index 4d77d3b3c5803f9c1e2c7ff5ed9613aba830a2e1..f5f66dc4f84fbfa5cd976902ade2fd88f49bab4f 100644 (file)
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1037655,
           },
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1037708,
           },
           "TerritoryId": 957,
           "InteractionType": "Interact",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         }
       ]
     },
index 952be85ec809f83dd13d4d36ac0f1c64ea0cae43..604919843527590a8f9b3f8a85f60d8ee288986c 100644 (file)
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2012455,
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2012457,
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2012456,
index 2250fc9998cf8aba753bc17a6788378f194aec81..2f59883e909f9848e8ab8d0f6c31533c5a95cfec 100644 (file)
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1042372,
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1042371,
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1042373,
index b9fda16a768a93b7e561804a11ecf1a3b51c2aae..b7219f5d87dd7a1caa7b0d227ca0c6260620856d 100644 (file)
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2012887,
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2012888,
           "InteractionType": "WalkTo",
           "Fly": true,
           "Land": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2012889,
             null,
             null,
             null,
-            -32
+            32
           ]
         }
       ]
index 34493e0e8061d3a86a84d3f3cfa7c3e698f6ce08..90e6b009d70d5f668586e3f0b7b3e2552236f58f 100644 (file)
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2012902,
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2012901,
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2012900,
index 57905110f8bc1e3d600d00ed272c7f815f890055..9685dbf86bad58ce0bd3d58ca51b0da72c90ebbc 100644 (file)
           "TerritoryId": 957,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2012907,
index f79b047ce6424e3cdb16f2d890dee74dac78e168..c84aa4ac0e2bba8d49fdba0a3501da68e7bd08ca 100644 (file)
             "[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,
index 119513fb2d64ae6de79f497e1ccc3969ec0d964f..f3436491a5450f422a17b6e5d1588066bc282718 100644 (file)
             },
             "DelaySeconds": 0.25
           },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2014134,
index 355a6b305426394b5e9704f32e63ed7dead7fbc9..f35bf22eebfc5d351670bccb9ed9d08423629837 100644 (file)
           },
           "TerritoryId": 1187,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1046874,
index bdfb619ac94021d3bc2ced591c826e240b8e6e8c..95739833fb912d858aca3f65f6897f25edb62cb6 100644 (file)
           "InteractionType": "WalkTo",
           "DisableNavmesh": true,
           "Mount": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2013653,
           },
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2013655,
index 092ada305e129a5b767dd282e73e9c3acb601f3e..c846a700b40544fda1f926a70c41cb05b2baf3ba 100644 (file)
           },
           "TerritoryId": 1191,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2013819,
index 2791cb5a4c4cb11197cac90d30c9071cf34ba306..9fce91709eeeec7050d970cd5e0a8b07959f269b 100644 (file)
           },
           "TerritoryId": 1192,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -16
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                16
+              ]
+            }
+          }
         },
         {
           "DataId": 1047904,
index 7218094ca1b8e0dc6995954346f996262df83ce7..6d3f5179fcc705999d435fd509e8da4d164c516a 100644 (file)
           "TerritoryId": 1191,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2014091,
           "TerritoryId": 1191,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2014093,
index 4d81d887fad7d8cb43e6c0866cf7f76061bba822..002e4fad6c3ac2f506183756ac9ce13279632a34 100644 (file)
           "Fly": true,
           "SkipConditions": {
             "StepIf": {
-              "Flying": "Locked"
+              "Flying": "Locked",
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
             }
-          },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          }
         },
         {
           "DataId": 2014184,
index 92ac22703bdd98a730a978a8bb068d002f5a6ed1..2a09e97d97c2944db88b52bab0ddf9e5afcefce1 100644 (file)
           "Fly": true,
           "SkipConditions": {
             "StepIf": {
-              "Flying": "Locked"
+              "Flying": "Locked",
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
             }
-          },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          }
         },
         {
           "DataId": 2013901,
index 8062590b3beb0496b502b8275b39c3d29891e71b..a77798f7154e06e19a5c75ebd5188e315f9055df 100644 (file)
           "TerritoryId": 1192,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2013916,
           "TerritoryId": 1192,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2013917,
index 77ee6e04880dde2dc2678b5bc3420dc0158ca2b4..f1414639c16b776dc7a71480a426f01ceef048f8 100644 (file)
           "TerritoryId": 1190,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1049284,
           },
           "TerritoryId": 1190,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1049275,
index c16f3f0d5567a98c404925c4db04ae6fb37c0ba1..0c7e9530c1dc049c7b6bcebd2f36c670b4d71576 100644 (file)
           "Fly": true,
           "SkipConditions": {
             "StepIf": {
-              "Flying": "Locked"
+              "Flying": "Locked",
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
             }
-          },
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          }
         },
         {
           "DataId": 2014051,
index 92cf0facb8df201facadc4e1f9badfc1fcbbacd5..8a873f7a7b0f8b7076862b48c6b22e791e0693ac 100644 (file)
           "TerritoryId": 1190,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ],
           "SkipConditions": {
             "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ],
               "Flying": "Locked"
             }
           }
           "TerritoryId": 1190,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ],
           "SkipConditions": {
             "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ],
               "Flying": "Locked"
             }
           },
           },
           "TerritoryId": 1190,
           "InteractionType": "WalkTo",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ],
           "SkipConditions": {
             "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ],
               "Flying": "Locked"
             }
           },
index d764508dc2220d84d232b4565f7940a97d2fae9e..836fb20f8aeae39702614a60096b6fba9231c612 100644 (file)
           "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"
             }
           },
index f7afd7b5daf5af12d19d9d742926a4e332becd60..5ec0cff12cf06e2269ae6160720b17420669cd71 100644 (file)
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1048995,
index 1995c17891898c5634f3fd209f603bb98e9f0717..007b86872b4f93a48fdae8c781a7a904855a4be2 100644 (file)
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 2014313,
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 2014314,
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 2014315,
index ee0174ba9a526ef130f42b39f7e9edab83746540..bfd9d8fb66fae7ac3594c9613f47d98f82dccbdc 100644 (file)
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "DataId": 1051049,
           "StopDistance": 4,
           "TerritoryId": 1189,
           "InteractionType": "Interact",
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -128
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                128
+              ]
+            }
+          }
         },
         {
           "Position": {
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -32
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                32
+              ]
+            }
+          }
         },
         {
           "DataId": 1051051,
           "TerritoryId": 1189,
           "InteractionType": "WalkTo",
           "Fly": true,
-          "CompletionQuestVariablesFlags": [
-            null,
-            null,
-            null,
-            null,
-            null,
-            -64
-          ]
+          "SkipConditions": {
+            "StepIf": {
+              "CompletionQuestVariablesFlags": [
+                null,
+                null,
+                null,
+                null,
+                null,
+                64
+              ]
+            }
+          }
         },
         {
           "DataId": 1051050,
index afc7ea83e807f0bfd39568a67460e0061a8c134c..90ba89a1a4889513e3bed692eaab30ba44e85ef4 100644 (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;
 }
index 8cda540c8b7aa2e48fbbbd199668dd4f7141950d..751e4730ad4fd7a8f1960f4221f6f0f5f95737fe 100644 (file)
                         "Never": {
                           "type": "boolean"
                         },
+                        "CompletionQuestVariablesFlags": {
+                          "$ref": "#/$defs/CompletionFlags"
+                        },
                         "Flying": {
                           "type": "string",
                           "enum": [
                             "WakingSandsMainArea"
                           ]
                         }
-                      }
+                      },
+                      "additionalProperties": false
                     },
                     "AetheryteShortcutIf": {
                       "type": "object",
                         "InSameTerritory": {
                           "type": "boolean"
                         }
-                      }
+                      },
+                      "additionalProperties": false
                     },
                     "AethernetShortcutIf": {
                       "type": "object",
                         "InSameTerritory": {
                           "type": "boolean"
                         }
-                      }
+                      },
+                      "additionalProperties": false
                     }
                   },
                   "additionalProperties": false
       "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,
index a408a29ffbf145e5a3bf241e7cf9a31e941b5f06..d31de7e26214a1b43697e1bb7f0ecefefc5afd39 100644 (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; }
 }
index 9f6b0e7e8d0784328415834775fdd80bc2b03b09..2b376937711abd6c840c94849f7ee712d684f1f8 100644 (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();
diff --git a/Questionable.Model/V1/Converter/QuestWorkModeConverter.cs b/Questionable.Model/V1/Converter/QuestWorkModeConverter.cs
new file mode 100644 (file)
index 0000000..a3697d6
--- /dev/null
@@ -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" },
+    };
+}
index d3e6ea6fd29947ce3069beb78e1cde2b376a5959..b6da81a274831a60699a0e4d9a2c1b62064c6537 100644 (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()!];
diff --git a/Questionable.Model/V1/EQuestWorkMode.cs b/Questionable.Model/V1/EQuestWorkMode.cs
new file mode 100644 (file)
index 0000000..ef225b2
--- /dev/null
@@ -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,
+}
index 37d4a0d8dc1b8137e318f4557bff4a1db9d2bbe9..accd6623228d409b2ed8b67282fd577eeeced8e3 100644 (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>();
 
index 7321b2be6171a8625d107c69b5d37a0f646cfa05..75c6851103104dddea6f476f4cc3c4647f921800 100644 (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 "-";
+    }
 }
index 316b1cc19e89f18857731569f7238c34ece5166c..9186515db01f7a858baa2c37c848066a8baa3a1d 100644 (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}";
+    }
 }
index d02def761e3328f9d0ceb3a0d92884fbcc9ffc53..f747966ed4d54406698193667df413095ad35a0c 100644 (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);
index 11f5777d078007f33dc17db08e311334cfdd3588..97201b4656f87240150028bde3786682021a0e02 100644 (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;
index bef6fadecf7515301d03c925e2592b68b4b7cc85..3e1212f8a8508eae43b74bd3c3a3447f09396470 100644 (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;
index 6710071c0da951d487b376e5a5b7c9395ad59e64..2f768ecdd74265e3253bc132ba53ee2958b12f2b 100644 (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 (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 (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(Step.RequiredQuestVariables, questWork.Value,
+            if (Step is { RequiredQuestVariables: { } requiredQuestVariables } && questWork != null)
+            {
+                if (!QuestWorkUtils.MatchesRequiredQuestWorkConfig(requiredQuestVariables, questWork.Value,
                         logger))
                 {
                     logger.LogInformation("Skipping step, as required variables do not match");
index 16a5589bf0a24e1947ff183f7ce59f250dbbcc2d..0d44663ce2df4f8487fd0de31e538868c4826b8b 100644 (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
index 33edd498163ba7513bbf27f109d508eaf32c0d41..6bb771806c6250085f1acbd353bee679ad558e91 100644 (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;
index 462e928957d762ba6c32ecd0fe0710e4d58b41fa..1d36c8c4b5cf7a48bc7c856f9e6cc22f3fffdf65 100644 (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)}",
                     };
                 }
             }