Add EnemySpawnType: AfterEmote
authorLiza Carvelli <liza@carvel.li>
Mon, 23 Sep 2024 14:25:23 +0000 (16:25 +0200)
committerLiza Carvelli <liza@carvel.li>
Mon, 23 Sep 2024 14:25:23 +0000 (16:25 +0200)
QuestPaths/quest-v1.json
Questionable.Model/Questing/Converter/EnemySpawnTypeConverter.cs
Questionable.Model/Questing/EEnemySpawnType.cs
Questionable/Controller/Steps/Interactions/Combat.cs

index 9502f77ae7df2116319aeb5d3bd6db193539ac9f..e5d946bd5dcd3516f418f6b5845010d5453fc932 100644 (file)
                   "AfterInteraction",
                   "AfterItemUse",
                   "AfterAction",
+                  "AfterEmote",
                   "OverworldEnemies",
                   "FateEnemies"
                 ]
index 4abc273950fc97ed0e2f3d0d8464ce06b9614260..1b43eaf43ae6592a706896dcf44df546f5523f4c 100644 (file)
@@ -10,6 +10,7 @@ public sealed class EnemySpawnTypeConverter() : EnumConverter<EEnemySpawnType>(V
         { EEnemySpawnType.AfterInteraction, "AfterInteraction" },
         { EEnemySpawnType.AfterItemUse, "AfterItemUse" },
         { EEnemySpawnType.AfterAction, "AfterAction" },
+        { EEnemySpawnType.AfterEmote, "AfterEmote" },
         { EEnemySpawnType.AutoOnEnterArea, "AutoOnEnterArea" },
         { EEnemySpawnType.OverworldEnemies, "OverworldEnemies" },
         { EEnemySpawnType.FateEnemies, "FateEnemies" },
index b7e5332e2473f9070110795746b4c4d8f005b201..e4f49433f43ccec1757425cc1a9ce00e50d6983e 100644 (file)
@@ -10,6 +10,7 @@ public enum EEnemySpawnType
     AfterInteraction,
     AfterItemUse,
     AfterAction,
+    AfterEmote,
     AutoOnEnterArea,
     OverworldEnemies,
     FateEnemies,
index 514f157529a8ba4fd8e3d9f8a650379b56f3017f..12a41d605bedd1a795de5fdaedf6a24859314a75 100644 (file)
@@ -33,17 +33,14 @@ internal static class Combat
             switch (step.EnemySpawnType)
             {
                 case EEnemySpawnType.AfterInteraction:
-                {
                     ArgumentNullException.ThrowIfNull(step.DataId);
 
                     yield return new Interact.Task(step.DataId.Value, quest, EInteractionType.None, true);
                     yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
                     yield return CreateTask(quest, sequence, step);
                     break;
-                }
 
                 case EEnemySpawnType.AfterItemUse:
-                {
                     ArgumentNullException.ThrowIfNull(step.DataId);
                     ArgumentNullException.ThrowIfNull(step.ItemId);
 
@@ -52,10 +49,8 @@ internal static class Combat
                     yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
                     yield return CreateTask(quest, sequence, step);
                     break;
-                }
 
                 case EEnemySpawnType.AfterAction:
-                {
                     ArgumentNullException.ThrowIfNull(step.DataId);
                     ArgumentNullException.ThrowIfNull(step.Action);
 
@@ -65,7 +60,18 @@ internal static class Combat
                     yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
                     yield return CreateTask(quest, sequence, step);
                     break;
-                }
+
+                case EEnemySpawnType.AfterEmote:
+                    ArgumentNullException.ThrowIfNull(step.Emote);
+
+                    yield return new Mount.UnmountTask();
+                    if (step.DataId != null)
+                        yield return new Emote.UseOnObject(step.Emote.Value, step.DataId.Value);
+                    else
+                        yield return new Emote.UseOnSelf(step.Emote.Value);
+                    yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
+                    yield return CreateTask(quest, sequence, step);
+                    break;
 
                 case EEnemySpawnType.AutoOnEnterArea:
                     if (step.CombatDelaySecondsAtStart == null)