diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs index 6a67162b1..5c903a5c5 100644 --- a/Dalamud/Game/Internal/Gui/ChatGui.cs +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -19,6 +19,8 @@ namespace Dalamud.Game.Internal.Gui { public delegate void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); public delegate void OnMessageRawDelegate(XivChatType type, uint senderId, ref StdString sender, ref StdString message, ref bool isHandled); public delegate void OnCheckMessageHandledDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled); + public delegate void OnMessageHandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); + public delegate void OnMessageUnhandledDelegate(XivChatType type, uint senderId, SeString sender, SeString message); /// /// Event that allows you to stop messages from appearing in chat by setting the isHandled parameter to true. @@ -30,6 +32,16 @@ namespace Dalamud.Game.Internal.Gui { /// public event OnMessageDelegate OnChatMessage; + /// + /// Event that will be fired when a chat message is handled by Dalamud or a Plugin. + /// + public event OnMessageHandledDelegate OnChatMessageHandled; + + /// + /// Event that will be fired when a chat message is not handled by Dalamud or a Plugin. + /// + public event OnMessageUnhandledDelegate OnChatMessageUnhandled; + /// /// Event that will be fired when a chat message is sent by the game, containing raw, unparsed data. /// @@ -167,8 +179,15 @@ namespace Dalamud.Game.Internal.Gui { } // Print the original chat if it's handled. - if (!isHandled) + if (isHandled) + { + OnChatMessageHandled?.Invoke(chattype, senderid, parsedSender, parsedMessage); + } + else + { retVal = this.printMessageHook.Original(manager, chattype, pSenderName, messagePtr, senderid, parameter); + OnChatMessageUnhandled?.Invoke(chattype, senderid, parsedSender, parsedMessage); + } if (this.baseAddress == IntPtr.Zero) this.baseAddress = manager;