Make Comment field required for manual interactions
authorLiza Carvelli <liza@carvel.li>
Sat, 12 Oct 2024 13:59:21 +0000 (15:59 +0200)
committerLiza Carvelli <liza@carvel.li>
Sat, 12 Oct 2024 13:59:21 +0000 (15:59 +0200)
QuestPaths/4.x - Stormblood/Allied Societies/Kojin/Story/2974_Under Wraps.json
QuestPaths/6.x - Endwalker/Aether Currents/Ultima Thule/4354_Combat Evolved.json
QuestPaths/6.x - Endwalker/Side Quests/Garlemald/4234_Put Your Plasma Where Your Mouth Is.json
QuestPaths/quest-v1.json
Questionable/Controller/QuestRegistry.cs
Questionable/Model/IQuestInfo.cs

index 9da1c6c876e7aa160de3fda1626d9226fd7a291e..dd7b9ed12886e7150907c3d9d7bf6cd34fa06380 100644 (file)
@@ -53,7 +53,8 @@
           },
           "TerritoryId": 614,
           "InteractionType": "Snipe",
-          "Fly": true
+          "Fly": true,
+          "Comment": "Snipe Namazu"
         }
       ]
     },
@@ -69,7 +70,8 @@
           },
           "TerritoryId": 614,
           "InteractionType": "Snipe",
-          "Fly": true
+          "Fly": true,
+          "Comment": "Snipe Namazu"
         }
       ]
     },
index 752ec884e311afa5c91a92199e4df28201f03d93..5b8449c004144bc6fcca1edbe766f310a07cfaca 100644 (file)
@@ -51,7 +51,7 @@
           },
           "StopDistance": 0.5,
           "TerritoryId": 960,
-          "InteractionType": "WaitForManualProgress",
+          "InteractionType": "Combat",
           "EnemySpawnType": "AutoOnEnterArea",
           "KillEnemyDataIds": [
             14044
index 86f4270549579ec35270888a4a19459e0abc4f34..52b9b801cd23a3511863d8942e0065f26c96eb20 100644 (file)
@@ -45,7 +45,8 @@
             "Z": -296.37604
           },
           "TerritoryId": 958,
-          "InteractionType": "Interact"
+          "InteractionType": "Snipe",
+          "Comment": "Snipe Magitek Colossi"
         }
       ]
     },
@@ -60,7 +61,7 @@
             "Z": -299.36682
           },
           "TerritoryId": 958,
-          "InteractionType": "Snipe"
+          "InteractionType": "Interact"
         }
       ]
     },
index 3fe60751fce4f3b1fa90eafa74f37a586cccdd68..aa74871eb6a947b9bdf8e1e6ae45432c4ba80d05 100644 (file)
               "ItemsToGather"
             ]
           }
+        },
+        {
+          "if": {
+            "properties": {
+              "InteractionType": {
+                "anyOf": [
+                  {
+                    "const": "WaitForManualProgress"
+                  },
+                  {
+                    "const": "Instruction"
+                  },
+                  {
+                    "const": "Snipe"
+                  }
+                ]
+              }
+            }
+          },
+          "then": {
+            "required": [
+              "Comment"
+            ]
+          }
         }
       ]
     }
index 724acaf4c0e2b9edccd14ad6e2613cb90f64acb7..c948abe23179e67a2aaa7c4b9fb772cd7a88690e 100644 (file)
@@ -144,7 +144,7 @@ internal sealed class QuestRegistry
 
     private void ValidateQuests()
     {
-        _questValidator.Validate(_quests.Values.Where(x => x.Source != Quest.ESource.Assembly));
+        _questValidator.Validate(_quests.Values.Where(x => x.Source != Quest.ESource.Assembly).ToList());
     }
 
     private void LoadQuestFromStream(string fileName, Stream stream, Quest.ESource source)
index d2c0e3861c80098812a361ab76c2c10c6af20839..143f60461bef073017a4a83a9999c19afbb7c72c 100644 (file)
@@ -25,5 +25,14 @@ internal interface IQuestInfo
 
     public string SimplifiedName => Name
         .Replace(".", "", StringComparison.Ordinal)
+        .Replace("*", "", StringComparison.Ordinal)
+        .Replace("\"", "", StringComparison.Ordinal)
+        .Replace("/", "", StringComparison.Ordinal)
+        .Replace("\\", "", StringComparison.Ordinal)
+        .Replace("<", "", StringComparison.Ordinal)
+        .Replace(">", "", StringComparison.Ordinal)
+        .Replace("|", "", StringComparison.Ordinal)
+        .Replace(":", "", StringComparison.Ordinal)
+        .Replace("?", "", StringComparison.Ordinal)
         .TrimStart(SeIconChar.QuestSync.ToIconChar(), SeIconChar.QuestRepeatable.ToIconChar(), ' ');
 }