From b2397efb25075b0b939f5eb5def9cde86b6e971a Mon Sep 17 00:00:00 2001
From: RedworkDE <10944644+RedworkDE@users.noreply.github.com>
Date: Mon, 22 Dec 2025 20:21:07 +0100
Subject: [PATCH] Add Self Test
---
.../SelfTest/Steps/ChatSelfTestStep.cs | 78 +++++++++++++++++--
1 file changed, 72 insertions(+), 6 deletions(-)
diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs b/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs
index 7a2631fbf..16fd3b01e 100644
--- a/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs
+++ b/Dalamud/Interface/Internal/Windows/SelfTest/Steps/ChatSelfTestStep.cs
@@ -1,4 +1,5 @@
using Dalamud.Bindings.ImGui;
+using Dalamud.Game.Chat;
using Dalamud.Game.Gui;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
@@ -12,8 +13,12 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.Steps;
internal class ChatSelfTestStep : ISelfTestStep
{
private int step = 0;
- private bool subscribed = false;
+ private bool subscribedChatMessage = false;
+ private bool subscribedLogMessage = false;
private bool hasPassed = false;
+ private bool hasTeleportGil = false;
+ private bool hasTeleportTicket = false;
+ private int teleportCount = 0;
///
public string Name => "Test Chat";
@@ -34,20 +39,63 @@ internal class ChatSelfTestStep : ISelfTestStep
case 1:
ImGui.Text("Type \"/e DALAMUD\" in chat...");
- if (!this.subscribed)
+ if (!this.subscribedChatMessage)
{
- this.subscribed = true;
+ this.subscribedChatMessage = true;
chatGui.ChatMessage += this.ChatOnOnChatMessage;
}
if (this.hasPassed)
{
chatGui.ChatMessage -= this.ChatOnOnChatMessage;
- this.subscribed = false;
- return SelfTestStepResult.Pass;
+ this.subscribedChatMessage = false;
+ this.step++;
}
break;
+
+ case 2:
+ ImGui.Text("Teleport somewhere...");
+
+ if (!this.subscribedLogMessage)
+ {
+ this.subscribedLogMessage = true;
+ chatGui.LogMessage += this.ChatOnLogMessage;
+ }
+
+ if (this.hasTeleportGil)
+ {
+ ImGui.Text($"You spent {this.teleportCount} gil to teleport.");
+ }
+ if (this.hasTeleportTicket)
+ {
+ ImGui.Text($"You used a ticket to teleport and have {this.teleportCount} remaining.");
+ }
+
+ if (this.hasTeleportGil || this.hasTeleportTicket)
+ {
+ ImGui.Text("Is this correct?");
+
+ if (ImGui.Button("Yes"))
+ {
+ chatGui.LogMessage -= this.ChatOnLogMessage;
+ this.subscribedLogMessage = false;
+ this.step++;
+ }
+
+ ImGui.SameLine();
+ if (ImGui.Button("No"))
+ {
+ chatGui.LogMessage -= this.ChatOnLogMessage;
+ this.subscribedLogMessage = false;
+ return SelfTestStepResult.Fail;
+ }
+ }
+
+ break;
+
+ default:
+ return SelfTestStepResult.Pass;
}
return SelfTestStepResult.Waiting;
@@ -59,7 +107,9 @@ internal class ChatSelfTestStep : ISelfTestStep
var chatGui = Service.Get();
chatGui.ChatMessage -= this.ChatOnOnChatMessage;
- this.subscribed = false;
+ chatGui.LogMessage -= this.ChatOnLogMessage;
+ this.subscribedChatMessage = false;
+ this.subscribedLogMessage = false;
}
private void ChatOnOnChatMessage(
@@ -70,4 +120,20 @@ internal class ChatSelfTestStep : ISelfTestStep
this.hasPassed = true;
}
}
+
+ private void ChatOnLogMessage(ILogMessage message)
+ {
+ if (message.LogMessageId == 4590 && message.TryGetIntParameter(0, out var value))
+ {
+ this.hasTeleportGil = true;
+ this.hasTeleportTicket = false;
+ this.teleportCount = value;
+ }
+ if (message.LogMessageId == 4591 && message.TryGetIntParameter(0, out var item) && item == 7569 && message.TryGetIntParameter(1, out var remaining))
+ {
+ this.hasTeleportGil = false;
+ this.hasTeleportTicket = true;
+ this.teleportCount = remaining;
+ }
+ }
}