From: Liza Carvelli Date: Sat, 28 Jun 2025 12:18:19 +0000 (+0200) Subject: Fix 'Finding Ulaa' X-Git-Tag: v5.19~2 X-Git-Url: https://git.jacobcasper.com/?a=commitdiff_plain;h=893e4e1ed3f3e3fe9cdbd4863321ae469be674ca;p=Questionable.git Fix 'Finding Ulaa' --- diff --git a/QuestPaths/3.x - Heavensward/Side Stories/Scholasticate Quests/2210_Finding Ulaa.json b/QuestPaths/3.x - Heavensward/Side Stories/Scholasticate Quests/2210_Finding Ulaa.json index 8eeb0ffb..715b280a 100644 --- a/QuestPaths/3.x - Heavensward/Side Stories/Scholasticate Quests/2210_Finding Ulaa.json +++ b/QuestPaths/3.x - Heavensward/Side Stories/Scholasticate Quests/2210_Finding Ulaa.json @@ -113,7 +113,7 @@ "TerritoryId": 155, "InteractionType": "Say", "ChatMessage": { - "Key": "TEXT_CHREND204_02210_SYSTEM_000_023" + "Key": "TEXT_CHREND204_02210_SYSTEM_000_030" } } ] @@ -174,4 +174,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/Questionable/QuestionablePlugin.cs b/Questionable/QuestionablePlugin.cs index df3229d2..e54a500f 100644 --- a/Questionable/QuestionablePlugin.cs +++ b/Questionable/QuestionablePlugin.cs @@ -321,6 +321,7 @@ public sealed class QuestionablePlugin : IDalamudPlugin serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(sp => sp.GetRequiredService()); } diff --git a/Questionable/Validation/EIssueType.cs b/Questionable/Validation/EIssueType.cs index 3f725738..fc75d993 100644 --- a/Questionable/Validation/EIssueType.cs +++ b/Questionable/Validation/EIssueType.cs @@ -20,4 +20,5 @@ public enum EIssueType ClassQuestWithoutAetheryteShortcut, DuplicateSinglePlayerInstance, UnusedSinglePlayerInstance, + InvalidChatMessage, } diff --git a/Questionable/Validation/Validators/SayValidator.cs b/Questionable/Validation/Validators/SayValidator.cs new file mode 100644 index 00000000..94254889 --- /dev/null +++ b/Questionable/Validation/Validators/SayValidator.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using System.Linq; +using Lumina.Text.ReadOnly; +using Questionable.Functions; +using Questionable.Model; +using Questionable.Model.Questing; + +namespace Questionable.Validation.Validators; + +internal sealed class SayValidator : IQuestValidator +{ + private readonly ExcelFunctions _excelFunctions; + + public SayValidator(ExcelFunctions excelFunctions) + { + _excelFunctions = excelFunctions; + } + + public IEnumerable Validate(Quest quest) + { + foreach (var data in quest.AllSteps().Where(x => x.Step.InteractionType == EInteractionType.Say)) + { + var chatMessage = data.Step.ChatMessage; + if (chatMessage == null) + continue; + + ReadOnlySeString? excelString = _excelFunctions + .GetRawDialogueText(quest, chatMessage.ExcelSheet, chatMessage.Key); + if (excelString == null) + continue; + + if (excelString.Value.PayloadCount != 1) + { + yield return new ValidationIssue + { + ElementId = quest.Id, + Sequence = (byte)data.Sequence.Sequence, + Step = data.StepId, + Type = EIssueType.InvalidChatMessage, + Severity = EIssueSeverity.Error, + Description = $"Invalid chat message: {excelString.Value}", + }; + } + } + } +}