From f9a4008564f5d9e971ed4a8dd3103417a2b3737d Mon Sep 17 00:00:00 2001
From: Liza Carvelli <liza@carvel.li>
Date: Sat, 1 Jun 2024 01:49:11 +0200
Subject: [PATCH] Split 'ManualAction' into different contextual elements

---
 Questionable/Controller/QuestController.cs    | 24 ++++++++++++++++++-
 .../V1/Converter/EnemySpawnTypeConverter.cs   |  1 +
 .../V1/Converter/InteractionTypeConverter.cs  |  6 ++++-
 Questionable/Model/V1/EEnemySpawnType.cs      |  1 +
 Questionable/Model/V1/EInteractionType.cs     | 11 ++++++++-
 .../Elpis/4288_You and the Ailouros.json      |  2 +-
 .../4232_Children Are Our Future.json         |  2 +-
 .../4240_True Carrot Crimes.json              |  2 +-
 .../4241_Carrots Its Whats for Dinner.json    |  4 ++--
 .../Ultima Thule/4342_Ending as One.json      |  5 ++--
 .../Ultima Thule/4354_Combat Evolved.json     |  2 +-
 .../4361_A Labyrinthine Descent.json          |  2 +-
 .../4363_Deeper into the Maze.json            |  2 +-
 .../4370_A Fishermans Friend.json             |  6 ++---
 .../4377_In the Dark of the Tower.json        |  4 ++--
 .../B-Garlemald/4383_A Frosty Reception.json  |  4 ++--
 .../B-Garlemald/4384_Tracks in the Snow.json  |  4 ++--
 .../4385_How the Mighty Are Fallen.json       |  2 +-
 .../MSQ/B-Garlemald/4387_A Way Forward.json   |  2 +-
 .../B-Garlemald/4393_Strange Bedfellows.json  | 10 ++++----
 .../B-Garlemald/4394_In from the Cold.json    |  4 ++--
 .../B-Garlemald/4395_Gateway of the Gods.json |  4 ++--
 .../MSQ/B-Garlemald/4397_Sea of Sorrow.json   |  4 ++--
 .../MSQ/B-Garlemald/4398_The Martyr.json      |  4 ++--
 .../4405_Back to Old Tricks.json              |  8 +++----
 .../4406_Settiing Things Straight.json        |  6 ++---
 .../MSQ/D-Thavnair2/4409_Skies Aflame.json    |  4 ++--
 .../4419_Return to the Crystarium.json        |  2 +-
 .../MSQ/E-Elpis/4421_Petalouda Hunt.json      |  2 +-
 .../MSQ/E-Elpis/4426_Aether to Aether.json    |  2 +-
 .../4430_A Past Not Yet Come to Pass.json     |  4 ++--
 .../MSQ/E-Elpis/4432_Worthy of His Back.json  |  4 ++--
 .../E-Elpis/4437_Caging the Messenger.json    |  4 ++--
 .../4439_As the Heavens Burn.json             |  4 ++--
 .../MSQ/F-Labyrinthos2/4443_Wise Guides.json  |  2 +-
 .../MSQ/F-Labyrinthos2/4447_Once Forged.json  |  2 +-
 .../4449_Her Children One and All.json        |  4 ++--
 .../G-UltimaThule/4450_A Bold Decision.json   |  2 +-
 .../Endwalker/MSQ/G-UltimaThule/4460_x.json   |  2 +-
 .../MSQ/G-UltimaThule/4461_Hello World.json   |  2 +-
 .../MSQ/G-UltimaThule/4464_Endwalker.json     | 12 +++++-----
 .../MSQ/H-6.1/4527_Bountiful Ruins.json       |  2 +-
 .../MSQ/H-6.1/4529_Alzadaals Legacy.json      |  4 ++--
 .../MSQ/I-6.2/4592_In Search of Azdaja.json   |  4 ++--
 .../I-6.2/4594_Where Everything Begins.json   |  4 ++--
 .../MSQ/I-6.2/4597_The Wind Rises.json        |  4 ++--
 .../MSQ/J-6.3/4672_Kindled Spirit.json        |  3 ++-
 .../MSQ/J-6.3/4673_An Unforeseen Bargain.json |  4 ++--
 .../MSQ/J-6.3/4674_King of the Mountain.json  |  4 ++--
 .../MSQ/J-6.3/4677_Desires Untold.json        |  4 ++--
 .../Endwalker/MSQ/K-6.4/4736_Going Haam.json  |  4 ++--
 .../MSQ/K-6.4/4742_Abyssal Dark.json          |  4 ++--
 .../MSQ/L-6.5/4746_In Defiance of Fate.json   |  4 ++--
 .../MSQ/L-6.5/4748_Down in the Dark.json      |  8 +++----
 .../MSQ/M-6.55/4752_The Game Is Afoot.json    |  4 ++--
 .../MSQ/F-Tempest/3654_Shadowbringers.json    |  8 +++----
 .../MSQ/G-5.1/3674_A Grand Adventure.json     |  4 ++--
 .../MSQ/G-5.1/3680_Finding Good Help.json     |  4 ++--
 ...3682_Vows of Virtue, Deeds of Cruelty.json |  4 ++--
 .../MSQ/H-5.2/3765_A Sleep Disturbed.json     |  2 +-
 .../MSQ/H-5.2/3769_Beneath the Surface.json   |  4 ++--
 .../MSQ/I-5.3/3775_Faded Memories.json        |  4 ++--
 .../MSQ/I-5.3/3777_The Converging Light.json  |  4 ++--
 .../MSQ/I-5.3/3778_Hope's Confluence.json     |  4 ++--
 .../J-5.4/4011_Like Master, Like Pupil.json   |  4 ++--
 .../J-5.4/4015_The Great Ship Vylbrand.json   |  4 ++--
 .../MSQ/K-5.5/4062_The Flames of War.json     |  4 ++--
 .../MSQ/L-5.55/4066_Death Unto Dawn.json      |  6 ++---
 Questionable/QuestSchema/schema_v1.json       |  9 +++++--
 69 files changed, 172 insertions(+), 128 deletions(-)

diff --git a/Questionable/Controller/QuestController.cs b/Questionable/Controller/QuestController.cs
index fc97bc80..f1f80480 100644
--- a/Questionable/Controller/QuestController.cs
+++ b/Questionable/Controller/QuestController.cs
@@ -347,7 +347,8 @@ internal sealed class QuestController
                         };
                     }
                     else
-                        _movementController.NavigateTo(EMovementType.Quest, (uint)from, _aetheryteData.Locations[from], false,
+                        _movementController.NavigateTo(EMovementType.Quest, (uint)from, _aetheryteData.Locations[from],
+                            false,
                             AetheryteConverter.IsLargeAetheryte(from) ? 10.9f : 6.9f);
 
                     return;
@@ -576,6 +577,27 @@ internal sealed class QuestController
                 IncreaseStepCount();
                 break;
 
+            case EInteractionType.WaitForManualProgress:
+                // something needs to be done manually, the next sequence will be picked up automatically
+                break;
+
+            case EInteractionType.Duty:
+                // TODO open duty finder
+                break;
+
+            case EInteractionType.SinglePlayerDuty:
+                // TODO: Disable YesAlready, interact with NPC to open dialog, restore YesAlready
+                // TODO: also implement check for territory blacklist
+                break;
+
+            case EInteractionType.Jump:
+                // TODO implement somehow??
+                break;
+
+            case EInteractionType.Instruction:
+                // Need to manually forward
+                break;
+
             default:
                 _pluginLog.Warning($"Action '{step.InteractionType}' is not implemented");
                 break;
diff --git a/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs b/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
index a19b97b9..5c5de532 100644
--- a/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
+++ b/Questionable/Model/V1/Converter/EnemySpawnTypeConverter.cs
@@ -9,5 +9,6 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
         { EEnemySpawnType.AfterInteraction, "AfterInteraction" },
         { EEnemySpawnType.AfterItemUse, "AfterItemUse" },
         { EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
+        { EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
     };
 }
diff --git a/Questionable/Model/V1/Converter/InteractionTypeConverter.cs b/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
index 0778b86b..c5aa932c 100644
--- a/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
+++ b/Questionable/Model/V1/Converter/InteractionTypeConverter.cs
@@ -16,6 +16,10 @@ public sealed class InteractionTypeConverter() : EnumConverter<EInteractionType>
         { EInteractionType.Say, "Say" },
         { EInteractionType.Emote, "Emote" },
         { EInteractionType.WaitForObjectAtPosition, "WaitForNpcAtPosition" },
-        { EInteractionType.ManualAction, "ManualAction" }
+        { EInteractionType.WaitForManualProgress, "WaitForManualProgress" },
+        { EInteractionType.Duty, "Duty" },
+        { EInteractionType.SinglePlayerDuty, "SinglePlayerDuty" },
+        { EInteractionType.Jump, "ShouldBeAJump" },
+        { EInteractionType.Instruction, "Instruction" },
     };
 }
diff --git a/Questionable/Model/V1/EEnemySpawnType.cs b/Questionable/Model/V1/EEnemySpawnType.cs
index bc12720b..8465f011 100644
--- a/Questionable/Model/V1/EEnemySpawnType.cs
+++ b/Questionable/Model/V1/EEnemySpawnType.cs
@@ -10,4 +10,5 @@ public enum EEnemySpawnType
     AfterInteraction,
     AfterItemUse,
     AutoOnEnterArea,
+    OverworldEnemies,
 }
diff --git a/Questionable/Model/V1/EInteractionType.cs b/Questionable/Model/V1/EInteractionType.cs
index 5e03db43..9ee2a455 100644
--- a/Questionable/Model/V1/EInteractionType.cs
+++ b/Questionable/Model/V1/EInteractionType.cs
@@ -16,5 +16,14 @@ public enum EInteractionType
     Say,
     Emote,
     WaitForObjectAtPosition,
-    ManualAction
+    WaitForManualProgress,
+    Duty,
+    SinglePlayerDuty,
+
+    Jump,
+
+    /// <summary>
+    /// Needs to be manually continued.
+    /// </summary>
+    Instruction,
 }
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Elpis/4288_You and the Ailouros.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Elpis/4288_You and the Ailouros.json
index a65d79bc..57f31f08 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Elpis/4288_You and the Ailouros.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Elpis/4288_You and the Ailouros.json	
@@ -28,7 +28,7 @@
             "Z": 509.72766
           },
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Follow"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Garlemald/4232_Children Are Our Future.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Garlemald/4232_Children Are Our Future.json
index 52687bda..a1cae574 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Garlemald/4232_Children Are Our Future.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Garlemald/4232_Children Are Our Future.json	
@@ -43,7 +43,7 @@
             "Z": -668.9708
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Follow Azure-haired Boy"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json
index 3b475c42..c61cab8f 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4240_True Carrot Crimes.json	
@@ -46,7 +46,7 @@
             "Z": -807.82135
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "Comment": "Navmesh can't jump (TODO this is super out of the way)"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json
index 1d647dd6..d620cb1c 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Mare Lamentorum/4241_Carrots Its Whats for Dinner.json	
@@ -27,7 +27,7 @@
             "Z": -646.97064
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "Comment": "Navmesh can't jump"
         },
         {
@@ -57,7 +57,7 @@
             "Z": -420.43494
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "Comment": "Navmesh can't jump"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json
index 537f9e4e..83d7f94c 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4342_Ending as One.json	
@@ -27,8 +27,9 @@
             "Z": -523.8633
           },
           "TerritoryId": 960,
-          "InteractionType": "ManualAction",
-          "Comment": "Kill 2 Drifting Ea",
+          "InteractionType": "Combat",
+          "EnemySpawnType": "OverworldEnemies",
+          "Comment": "Kill 2 Drifting Ea, TODO: add data ids",
           "$": "QuestVariables: 0 0-16-32 0 0 0 0"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json
index 68b2a162..563ff11c 100644
--- a/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json	
+++ b/Questionable/QuestPaths/Endwalker/AetherCurrents/Ultima Thule/4354_Combat Evolved.json	
@@ -28,7 +28,7 @@
           },
           "StopDistance": 0.5,
           "TerritoryId": 960,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "EnemySpawnType": "AutoOnEnterArea",
           "KillEnemyDataIds": [
             14044
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4361_A Labyrinthine Descent.json b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4361_A Labyrinthine Descent.json
index ac97e616..4e8a1be2 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4361_A Labyrinthine Descent.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4361_A Labyrinthine Descent.json	
@@ -47,7 +47,7 @@
             "Z": -27.054321
           },
           "TerritoryId": 962,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Follow Alisaie"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4363_Deeper into the Maze.json b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4363_Deeper into the Maze.json
index 5d7676b5..563f3961 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4363_Deeper into the Maze.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4363_Deeper into the Maze.json	
@@ -108,7 +108,7 @@
             "Z": -519.18823
           },
           "TerritoryId": 956,
-          "InteractionType": "ManualAction",
+          "InteractionType": "SinglePlayerDuty",
           "Comment": "Duty - Shoot Large Green Bird"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4370_A Fishermans Friend.json b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4370_A Fishermans Friend.json
index 9301bbcf..b3509be2 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4370_A Fishermans Friend.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4370_A Fishermans Friend.json	
@@ -43,7 +43,7 @@
             "Z": 799.2217
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (2, 2, 1)"
         }
       ]
@@ -59,7 +59,7 @@
             "Z": 681.7273
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (2, 1, 2)"
         }
       ]
@@ -75,7 +75,7 @@
             "Z": 517.72327
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (2, 2, 2)"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4377_In the Dark of the Tower.json b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4377_In the Dark of the Tower.json
index 843ea9be..234cbad9 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4377_In the Dark of the Tower.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/A-Thavnair1-Labyrinthos1/4377_In the Dark of the Tower.json	
@@ -60,8 +60,8 @@
             "Z": -663.81323
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Tower of Zot"
+          "InteractionType": "Duty",
+          "Comment": "The Tower of Zot"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4383_A Frosty Reception.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4383_A Frosty Reception.json
index b13f99aa..0e50c4fc 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4383_A Frosty Reception.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4383_A Frosty Reception.json	
@@ -31,8 +31,8 @@
             "Z": 539.6046
           },
           "TerritoryId": 621,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - A Frosty Reception"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "A Frosty Reception"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4384_Tracks in the Snow.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4384_Tracks in the Snow.json
index ef9f3b51..e301cb5e 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4384_Tracks in the Snow.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4384_Tracks in the Snow.json	
@@ -142,8 +142,8 @@
             "Z": 390.46313
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Follow Girl in Green"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Follow Girl in Green"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4385_How the Mighty Are Fallen.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4385_How the Mighty Are Fallen.json
index de2811fb..f683e526 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4385_How the Mighty Are Fallen.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4385_How the Mighty Are Fallen.json	
@@ -115,7 +115,7 @@
             "Z": 251.71986
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "DisableNavmesh": true,
           "Comment": "Jump on Pipeline and move near the Aether Current"
         },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4387_A Way Forward.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4387_A Way Forward.json
index e3fcaedb..f6fd793a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4387_A Way Forward.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4387_A Way Forward.json	
@@ -77,7 +77,7 @@
             "Z": 365.7129
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Follow Alphinaud and Alisaie"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4393_Strange Bedfellows.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4393_Strange Bedfellows.json
index 1925c06a..5078202d 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4393_Strange Bedfellows.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4393_Strange Bedfellows.json	
@@ -48,7 +48,7 @@
             "Z": -402.64487
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "Comment": "Jump to Aether Current"
         },
         {
@@ -69,7 +69,7 @@
             "Z": -398.82806
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "Comment": "Leave the Aether Current location"
         },
         {
@@ -79,7 +79,7 @@
             "Z": -337.21478
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "Comment": "Jump onto the Highway"
         },
         {
@@ -226,7 +226,7 @@
             "Z": 94.77368
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "EnemySpawnType": "AfterInteraction",
           "KillEnemyDataIds": [
             14079
@@ -258,7 +258,7 @@
             "Z": 396.96338
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "EnemySpawnType": "AfterInteraction",
           "KillEnemyDataIds": [
             14080
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json
index 3414fa1a..ab772586 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4394_In from the Cold.json	
@@ -28,8 +28,8 @@
             "Z": 488.3954
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
-          "Comment": "Start Duty"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "In from the Cold"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4395_Gateway of the Gods.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4395_Gateway of the Gods.json
index f491288f..0307961d 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4395_Gateway of the Gods.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4395_Gateway of the Gods.json	
@@ -105,8 +105,8 @@
             "Z": -676.875
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Tower of Babil"
+          "InteractionType": "Duty",
+          "Comment": "The Tower of Babil"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4397_Sea of Sorrow.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4397_Sea of Sorrow.json
index 071d807b..3a8be09a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4397_Sea of Sorrow.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4397_Sea of Sorrow.json	
@@ -89,7 +89,7 @@
             "Z": 419.7605
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "Comment": "Follow Argos"
         },
         {
@@ -148,7 +148,7 @@
             "Z": 523.5217
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "Instruction",
           "Comment": "Follow Argos"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4398_The Martyr.json b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4398_The Martyr.json
index 1c88a27f..09aca30a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4398_The Martyr.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/B-Garlemald/4398_The Martyr.json	
@@ -46,8 +46,8 @@
             "Z": 103.227295
           },
           "TerritoryId": 1028,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Zodiark"
+          "InteractionType": "Duty",
+          "Comment": "The Dark Inside"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4405_Back to Old Tricks.json b/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4405_Back to Old Tricks.json
index 6ee4f867..3ac64fda 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4405_Back to Old Tricks.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4405_Back to Old Tricks.json	
@@ -45,8 +45,8 @@
             "Z": -269.24548
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Follow Urianger"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Follow Urianger"
         }
       ]
     },
@@ -61,8 +61,8 @@
             "Z": -269.24548
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Follow Urianger (but you failed the first time)"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Follow Urianger (but you failed the first time)"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4406_Settiing Things Straight.json b/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4406_Settiing Things Straight.json
index 8dde8795..031fb381 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4406_Settiing Things Straight.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/C-MareLamentorum/4406_Settiing Things Straight.json	
@@ -136,7 +136,7 @@
             "Z": -558.8681
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "AetheryteShortcut": "Mare Lamentorum - Bestways Burrow",
           "Comment": "Navmesh can't jump"
         },
@@ -184,8 +184,8 @@
             "Z": -654.13904
           },
           "TerritoryId": 959,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Find Runninway"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Find \"Runninway?\""
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/D-Thavnair2/4409_Skies Aflame.json b/Questionable/QuestPaths/Endwalker/MSQ/D-Thavnair2/4409_Skies Aflame.json
index a3dbe9ba..e903c04a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/D-Thavnair2/4409_Skies Aflame.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/D-Thavnair2/4409_Skies Aflame.json	
@@ -70,8 +70,8 @@
             "Z": 761.50134
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Vanaspati"
+          "InteractionType": "Duty",
+          "Comment": "Vanaspati"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4419_Return to the Crystarium.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4419_Return to the Crystarium.json
index 1c5a6d70..c7dfbc99 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4419_Return to the Crystarium.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4419_Return to the Crystarium.json	
@@ -50,7 +50,7 @@
             "Z": -210.52875
           },
           "TerritoryId": 819,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Cutscene Interaction needed",
           "AetheryteShortcut": "Crystarium",
           "AethernetShortcut": [
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4421_Petalouda Hunt.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4421_Petalouda Hunt.json
index 3782a480..080664c6 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4421_Petalouda Hunt.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4421_Petalouda Hunt.json	
@@ -39,7 +39,7 @@
         {
           "DataId": 1039998,
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Capture Mobs with less than 50% HP"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4426_Aether to Aether.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4426_Aether to Aether.json
index 4262112a..d265bac3 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4426_Aether to Aether.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4426_Aether to Aether.json	
@@ -37,7 +37,7 @@
             "Z": 543.8281
           },
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "Comment": "Jump on Ledge"
         },
         {
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4430_A Past Not Yet Come to Pass.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4430_A Past Not Yet Come to Pass.json
index be205917..456d0716 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4430_A Past Not Yet Come to Pass.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4430_A Past Not Yet Come to Pass.json	
@@ -84,7 +84,7 @@
             "Z": -173.75458
           },
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (1, 2, 1)"
         }
       ]
@@ -124,7 +124,7 @@
             "Z": -155.5047
           },
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (2, 2, 1)"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4432_Worthy of His Back.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4432_Worthy of His Back.json
index 05ebba34..e248c409 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4432_Worthy of His Back.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4432_Worthy of His Back.json	
@@ -64,8 +64,8 @@
             "Z": 62.302612
           },
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Venat"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Venat"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4437_Caging the Messenger.json b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4437_Caging the Messenger.json
index a9b5edd7..cf34ff89 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4437_Caging the Messenger.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/E-Elpis/4437_Caging the Messenger.json	
@@ -48,8 +48,8 @@
           },
           "StopDistance": 4,
           "TerritoryId": 961,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Ktisis Hyperborea"
+          "InteractionType": "Duty",
+          "Comment": "Ktisis Hyperborea"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4439_As the Heavens Burn.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4439_As the Heavens Burn.json
index 79b56e00..599486b7 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4439_As the Heavens Burn.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4439_As the Heavens Burn.json	
@@ -28,9 +28,9 @@
             "Z": 501.85388
           },
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
+          "InteractionType": "SinglePlayerDuty",
           "AetheryteShortcut": "Garlemald - Camp Broken Glass",
-          "Comment": "Duty - As the Heavens Burn"
+          "Comment": "As the Heavens Burn"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4443_Wise Guides.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4443_Wise Guides.json
index f129fce7..e324c1ca 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4443_Wise Guides.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4443_Wise Guides.json	
@@ -45,7 +45,7 @@
           },
           "StopDistance": 5,
           "TerritoryId": 956,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Find Points of Interest"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json
index 129aa1ff..55f6c7b8 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4447_Once Forged.json	
@@ -99,7 +99,7 @@
             "Z": 681.35846
           },
           "TerritoryId": 956,
-          "InteractionType": "ManualAction",
+          "InteractionType": "ShouldBeAJump",
           "DisableNavmesh": true,
           "Comment": "Navmesh can't jump"
         },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json
index 53f10dbe..169601d4 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/F-Labyrinthos2/4449_Her Children One and All.json	
@@ -43,8 +43,8 @@
             "Z": 341.29846
           },
           "TerritoryId": 956,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Aitiascope"
+          "InteractionType": "Duty",
+          "Comment": "Aitiascope"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json
index 0dbe3cf1..2acee38e 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4450_A Bold Decision.json	
@@ -82,7 +82,7 @@
             "Z": -62.485718
           },
           "TerritoryId": 962,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (2, 2, 2, N/A, 2)"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
index cb9500ea..58508155 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4460_x.json
@@ -96,7 +96,7 @@
             "Z": 375.50916
           },
           "TerritoryId": 960,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Duty - Find Errant Omicron"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json
index 7fddef99..08595d02 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4461_Hello World.json	
@@ -44,7 +44,7 @@
             "Z": 398.42822
           },
           "TerritoryId": 960,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Identify Anomaly (Elbow/Knee)"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
index dc1a27d2..acf28e3a 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
+++ b/Questionable/QuestPaths/Endwalker/MSQ/G-UltimaThule/4464_Endwalker.json
@@ -31,8 +31,8 @@
             "Z": -9.079163
           },
           "TerritoryId": 960,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Dead Ends"
+          "InteractionType": "Duty",
+          "Comment": "The Dead Ends"
         }
       ]
     },
@@ -48,8 +48,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 1029,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Final Day"
+          "InteractionType": "Duty",
+          "Comment": "The Final Day"
         }
       ]
     },
@@ -64,8 +64,8 @@
             "Z": 89.98242
           },
           "TerritoryId": 1026,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Zenos"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Zenos"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json
index bbcf8a31..4d032d94 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4527_Bountiful Ruins.json	
@@ -48,7 +48,7 @@
             "Z": -225.42157
           },
           "TerritoryId": 963,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Talk (1, 1, 1, 2)"
         }
       ]
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4529_Alzadaals Legacy.json b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4529_Alzadaals Legacy.json
index 0bffc613..953db32d 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4529_Alzadaals Legacy.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/H-6.1/4529_Alzadaals Legacy.json	
@@ -31,8 +31,8 @@
             "Z": 610.65076
           },
           "TerritoryId": 957,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Alzadaal's Legacy"
+          "InteractionType": "Duty",
+          "Comment": "Alzadaal's Legacy"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4592_In Search of Azdaja.json b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4592_In Search of Azdaja.json
index e6de9ae3..7fa88e01 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4592_In Search of Azdaja.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4592_In Search of Azdaja.json	
@@ -75,8 +75,8 @@
             "Z": -89.463684
           },
           "TerritoryId": 1056,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Fell Court of Troia"
+          "InteractionType": "Duty",
+          "Comment": "Fell Court of Troia"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4594_Where Everything Begins.json b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4594_Where Everything Begins.json
index c8d69ae1..aa488d06 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4594_Where Everything Begins.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4594_Where Everything Begins.json	
@@ -69,8 +69,8 @@
             "Z": -150.83551
           },
           "TerritoryId": 1089,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Where Everything Begins"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Where Everything Begins"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4597_The Wind Rises.json b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4597_The Wind Rises.json
index f9559ed4..8079e7eb 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4597_The Wind Rises.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/I-6.2/4597_The Wind Rises.json	
@@ -45,8 +45,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 1092,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Storm's Crown"
+          "InteractionType": "Duty",
+          "Comment": "Storm's Crown"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4672_Kindled Spirit.json b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4672_Kindled Spirit.json
index fb9f9ddb..616e1602 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4672_Kindled Spirit.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4672_Kindled Spirit.json	
@@ -47,7 +47,8 @@
           "InteractionType": "Combat",
           "EnemySpawnType": "AfterInteraction",
           "KillEnemyDataIds": [
-            16028, 16029
+            16028,
+            16029
           ],
           "$.0": "[1]",
           "$.1": "QuestVariables if done first: 16 5(enemy kill count) 0 0 0 64"
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4673_An Unforeseen Bargain.json b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4673_An Unforeseen Bargain.json
index d9c29025..a852f0a7 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4673_An Unforeseen Bargain.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4673_An Unforeseen Bargain.json	
@@ -29,8 +29,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 958,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - An Unforeseen Bargain"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "An Unforeseen Bargain"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4674_King of the Mountain.json b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4674_King of the Mountain.json
index 7e71565c..827a2445 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4674_King of the Mountain.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4674_King of the Mountain.json	
@@ -61,8 +61,8 @@
           },
           "TerritoryId": 958,
           "StopDistance": 5,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Lapis Manalis"
+          "InteractionType": "Duty",
+          "Comment": "Lapis Manalis"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4677_Desires Untold.json b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4677_Desires Untold.json
index c98ba606..f05b314c 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4677_Desires Untold.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/J-6.3/4677_Desires Untold.json	
@@ -58,8 +58,8 @@
             "Z": 45.63965
           },
           "TerritoryId": 1125,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Mount Ordeals"
+          "InteractionType": "Duty",
+          "Comment": "Mount Ordeals"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4736_Going Haam.json b/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4736_Going Haam.json
index 9e55b2b2..8b14d592 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4736_Going Haam.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4736_Going Haam.json	
@@ -139,8 +139,8 @@
             "Z": 238.0937
           },
           "TerritoryId": 962,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Aetherfont"
+          "InteractionType": "Duty",
+          "Comment": "The Aetherfont"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4742_Abyssal Dark.json b/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4742_Abyssal Dark.json
index 4e2186c7..1ec272a4 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4742_Abyssal Dark.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/K-6.4/4742_Abyssal Dark.json	
@@ -43,8 +43,8 @@
             "Z": 101.823364
           },
           "TerritoryId": 1159,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Voidcast Dais"
+          "InteractionType": "Duty",
+          "Comment": "The Voidcast Dais"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4746_In Defiance of Fate.json b/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4746_In Defiance of Fate.json
index e5746060..facb0fdc 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4746_In Defiance of Fate.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4746_In Defiance of Fate.json	
@@ -43,8 +43,8 @@
             "Z": 298.20703
           },
           "TerritoryId": 817,
-          "InteractionType": "ManualAction",
-          "Comment": "/say allin tuta"
+          "InteractionType": "Say",
+          "ChatMessage": "allin tuta"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4748_Down in the Dark.json b/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4748_Down in the Dark.json
index 77bc6a8f..6a6e37e2 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4748_Down in the Dark.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/L-6.5/4748_Down in the Dark.json	
@@ -28,8 +28,8 @@
             "Z": 439.96326
           },
           "TerritoryId": 1162,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Lunar Subterrane"
+          "InteractionType": "Duty",
+          "Comment": "The Lunar Subterrane"
         }
       ]
     },
@@ -59,8 +59,8 @@
             "Z": 106.3549
           },
           "TerritoryId": 1181,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Abyssal Fracture"
+          "InteractionType": "Duty",
+          "Comment": "The Abyssal Fracture"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Endwalker/MSQ/M-6.55/4752_The Game Is Afoot.json b/Questionable/QuestPaths/Endwalker/MSQ/M-6.55/4752_The Game Is Afoot.json
index 45fc2edb..5a4f2355 100644
--- a/Questionable/QuestPaths/Endwalker/MSQ/M-6.55/4752_The Game Is Afoot.json	
+++ b/Questionable/QuestPaths/Endwalker/MSQ/M-6.55/4752_The Game Is Afoot.json	
@@ -28,8 +28,8 @@
             "Z": 243.42712
           },
           "TerritoryId": 962,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Game Is Afoot",
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "The Game Is Afoot",
           "AethernetShortcut": [
             "[Old Sharlayan] The Studium",
             "[Old Sharlayan] Scholar's Harbor"
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/F-Tempest/3654_Shadowbringers.json b/Questionable/QuestPaths/Shadowbringers/MSQ/F-Tempest/3654_Shadowbringers.json
index 631ddd7e..aff07c45 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/F-Tempest/3654_Shadowbringers.json
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/F-Tempest/3654_Shadowbringers.json
@@ -15,8 +15,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 818,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Amaurot"
+          "InteractionType": "Duty",
+          "Comment": "Amaurot"
         }
       ]
     },
@@ -32,8 +32,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 881,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Dying Gasp"
+          "InteractionType": "Duty",
+          "Comment": "The Dying Gasp"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3674_A Grand Adventure.json b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3674_A Grand Adventure.json
index 79c21e06..ec57c56e 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3674_A Grand Adventure.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3674_A Grand Adventure.json	
@@ -54,8 +54,8 @@
             "Z": 647.6997
           },
           "TerritoryId": 813,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Grand Cosmos"
+          "InteractionType": "Duty",
+          "Comment": "Grand Cosmos"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3680_Finding Good Help.json b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3680_Finding Good Help.json
index 48585392..928906c3 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3680_Finding Good Help.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3680_Finding Good Help.json	
@@ -44,8 +44,8 @@
             "Z": -161.45575
           },
           "TerritoryId": 814,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Help Master Chai dodge enemies"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Help Master Chai dodge enemies"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3682_Vows of Virtue, Deeds of Cruelty.json b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3682_Vows of Virtue, Deeds of Cruelty.json
index 0e428deb..01c99d97 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3682_Vows of Virtue, Deeds of Cruelty.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/G-5.1/3682_Vows of Virtue, Deeds of Cruelty.json	
@@ -69,8 +69,8 @@
             "Z": -9.10968
           },
           "TerritoryId": 351,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Estinien vs. Arch Ultima"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Estinien vs. Arch Ultima"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3765_A Sleep Disturbed.json b/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3765_A Sleep Disturbed.json
index b29dbabc..02e6902e 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3765_A Sleep Disturbed.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3765_A Sleep Disturbed.json	
@@ -45,7 +45,7 @@
             "Z": -387.10614
           },
           "TerritoryId": 817,
-          "InteractionType": "ManualAction",
+          "InteractionType": "SinglePlayerDuty",
           "Fly": true,
           "Comment": "Duty - A Sleep Disturbed (Opo-Opo, Wolf, Serpent)"
         }
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3769_Beneath the Surface.json b/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3769_Beneath the Surface.json
index c3c26085..4965aee3 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3769_Beneath the Surface.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/H-5.2/3769_Beneath the Surface.json	
@@ -46,8 +46,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 814,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Anamnesis Anyder"
+          "InteractionType": "Duty",
+          "Comment": "Anamnesis Anyder"
         }
       ]
     }
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3775_Faded Memories.json b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3775_Faded Memories.json
index d3700703..2f217bcb 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3775_Faded Memories.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3775_Faded Memories.json	
@@ -54,8 +54,8 @@
             "Z": -448.3325
           },
           "TerritoryId": 918,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Fight NPCs, then Elidibus"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Fight NPCs, then Elidibus"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3777_The Converging Light.json b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3777_The Converging Light.json
index 78b3699b..566d98b3 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3777_The Converging Light.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3777_The Converging Light.json	
@@ -59,8 +59,8 @@
             "Z": 1.940211
           },
           "TerritoryId": 820,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - The Heroes' Gauntlet"
+          "InteractionType": "Duty",
+          "Comment": "The Heroes' Gauntlet"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3778_Hope's Confluence.json b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3778_Hope's Confluence.json
index a9c4e9fa..67efa3eb 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3778_Hope's Confluence.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/I-5.3/3778_Hope's Confluence.json	
@@ -29,8 +29,8 @@
           },
           "StopDistance": 5,
           "TerritoryId": 931,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty -  The Seat of Sacrifice"
+          "InteractionType": "Duty",
+          "Comment": "The Seat of Sacrifice"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4011_Like Master, Like Pupil.json b/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4011_Like Master, Like Pupil.json
index 6d639be9..192c5504 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4011_Like Master, Like Pupil.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4011_Like Master, Like Pupil.json	
@@ -87,8 +87,8 @@
             "Z": -218.00574
           },
           "TerritoryId": 399,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Matoya's Relict"
+          "InteractionType": "Duty",
+          "Comment": "Matoya's Relict"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4015_The Great Ship Vylbrand.json b/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4015_The Great Ship Vylbrand.json
index 6499138b..c42b21e6 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4015_The Great Ship Vylbrand.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/J-5.4/4015_The Great Ship Vylbrand.json	
@@ -63,8 +63,8 @@
             "Z": -634.54645
           },
           "TerritoryId": 180,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Great Ship Vylbrand"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Great Ship Vylbrand"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/K-5.5/4062_The Flames of War.json b/Questionable/QuestPaths/Shadowbringers/MSQ/K-5.5/4062_The Flames of War.json
index fd0c1f14..5d8ceac1 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/K-5.5/4062_The Flames of War.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/K-5.5/4062_The Flames of War.json	
@@ -64,8 +64,8 @@
             "Z": 12.893799
           },
           "TerritoryId": 130,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Paglth'an"
+          "InteractionType": "Duty",
+          "Comment": "Paglth'an"
         }
       ]
     },
diff --git a/Questionable/QuestPaths/Shadowbringers/MSQ/L-5.55/4066_Death Unto Dawn.json b/Questionable/QuestPaths/Shadowbringers/MSQ/L-5.55/4066_Death Unto Dawn.json
index e8d33055..97898850 100644
--- a/Questionable/QuestPaths/Shadowbringers/MSQ/L-5.55/4066_Death Unto Dawn.json	
+++ b/Questionable/QuestPaths/Shadowbringers/MSQ/L-5.55/4066_Death Unto Dawn.json	
@@ -45,8 +45,8 @@
           },
           "StopDistance": 7,
           "TerritoryId": 132,
-          "InteractionType": "ManualAction",
-          "Comment": "Duty - Death Unto Dawn"
+          "InteractionType": "SinglePlayerDuty",
+          "Comment": "Death Unto Dawn"
         }
       ]
     },
@@ -55,7 +55,7 @@
       "Steps": [
         {
           "TerritoryId": 351,
-          "InteractionType": "ManualAction",
+          "InteractionType": "WaitForManualProgress",
           "Comment": "Credits"
         }
       ]
diff --git a/Questionable/QuestSchema/schema_v1.json b/Questionable/QuestSchema/schema_v1.json
index 7bdcdf7c..27d30856 100644
--- a/Questionable/QuestSchema/schema_v1.json
+++ b/Questionable/QuestSchema/schema_v1.json
@@ -102,7 +102,11 @@
                     "Say",
                     "Emote",
                     "WaitForNpcAtPosition",
-                    "ManualAction"
+                    "WaitForManualProgress",
+                    "Duty",
+                    "SinglePlayerDuty",
+                    "ShouldBeAJump",
+                    "Instruction"
                   ]
                 },
                 "Disabled": {
@@ -337,7 +341,8 @@
                   "enum": [
                     "AutoOnEnterArea",
                     "AfterInteraction",
-                    "AfterItemUse"
+                    "AfterItemUse",
+                    "OverworldEnemies"
                   ]
                 },
                 "KillEnemyDataIds": {