diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs index 78e82291a..d8bad2c0b 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/ItemPayload.cs @@ -50,8 +50,6 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads // unk bytes.AddRange(new byte[] { 0x02, 0x01, END_BYTE }); - - return bytes.ToArray(); } diff --git a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs index 62ab70a40..161cd82db 100644 --- a/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs +++ b/Dalamud/Game/Chat/SeStringHandling/Payloads/TextPayload.cs @@ -11,7 +11,24 @@ namespace Dalamud.Game.Chat.SeStringHandling.Payloads { public override PayloadType Type => PayloadType.RawText; - public string Text { get; set; } + private string textConverted = null; + + /// + /// The Text of this text payload as an UTF-8 converted string. + /// Don't rely on this for accurate representation of SE payload data, please check RawData instead. + /// + public string Text { + get { return this.textConverted ??= Encoding.UTF8.GetString(RawData); } + set { + this.textConverted = value; + RawData = Encoding.UTF8.GetBytes(value); + } + } + + /// + /// The raw unconverted data of this text payload. + /// + public byte[] RawData { get; set; } public TextPayload() { } diff --git a/Dalamud/Game/Internal/Gui/ChatGui.cs b/Dalamud/Game/Internal/Gui/ChatGui.cs index 6ef458cb9..c9eb128c9 100644 --- a/Dalamud/Game/Internal/Gui/ChatGui.cs +++ b/Dalamud/Game/Internal/Gui/ChatGui.cs @@ -113,6 +113,7 @@ namespace Dalamud.Game.Internal.Gui { Log.Verbose("SeString was edited, taking precedence over StdString edit."); message.RawData = newEdited; } + Log.Debug($"\nOLD: {BitConverter.ToString(originalMessageData)}\nNEW: {BitConverter.ToString(newEdited)}"); var messagePtr = pMessage; OwnedStdString allocatedString = null;