From 31221ac8f66dc5337dabad63ac72af72aeb3b7b7 Mon Sep 17 00:00:00 2001 From: nebel <9887+nebel@users.noreply.github.com> Date: Thu, 2 May 2024 00:05:53 +0900 Subject: [PATCH] Merge pull request #35 * Handle event items by checking item kind --- ChatTwo/GameFunctions/GameFunctions.cs | 5 +++-- ChatTwo/PayloadHandler.cs | 5 ++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ChatTwo/GameFunctions/GameFunctions.cs b/ChatTwo/GameFunctions/GameFunctions.cs index 75c87e1..7bf0ab2 100755 --- a/ChatTwo/GameFunctions/GameFunctions.cs +++ b/ChatTwo/GameFunctions/GameFunctions.cs @@ -1,4 +1,5 @@ using System.Runtime.InteropServices; +using Dalamud.Game.Text.SeStringHandling.Payloads; using Dalamud.Hooking; using Dalamud.Memory; using Dalamud.Utility.Signatures; @@ -151,7 +152,7 @@ internal unsafe class GameFunctions : IDisposable return (*flags & (1 << 22)) == 0; } - internal static void OpenItemTooltip(uint id) + internal static void OpenItemTooltip(uint id, ItemPayload.ItemKind itemKind) { var atkStage = AtkStage.GetSingleton(); var agent = Framework.Instance()->GetUiModule()->GetAgentModule()->GetAgentByInternalId(AgentId.ItemDetail); @@ -169,7 +170,7 @@ internal unsafe class GameFunctions : IDisposable // A54B19: sets some shit *(uint*) (agentPtr + 0x20) = 22; // A55218: switch goes down to default, which is what we want - *(byte*) (agentPtr + 0x118) = 1; + *(byte*) (agentPtr + 0x118) = itemKind == ItemPayload.ItemKind.EventItem ? (byte)8 : (byte)1; // A54BE0: item id when hovering over item in chat *(uint*) (agentPtr + 0x11C) = id; // A54BCC: always 0 when hovering over item in chat diff --git a/ChatTwo/PayloadHandler.cs b/ChatTwo/PayloadHandler.cs index ed14c76..a1c824b 100755 --- a/ChatTwo/PayloadHandler.cs +++ b/ChatTwo/PayloadHandler.cs @@ -230,11 +230,10 @@ public sealed class PayloadHandler { DoHover(() => HoverStatus(status), hoverSize); break; case ItemPayload item: - // Event Item do weird things with the client, so we stop vanilla tooltips for now - if (LogWindow.Plugin.Config.NativeItemTooltips && item.Kind != ItemPayload.ItemKind.EventItem) + if (LogWindow.Plugin.Config.NativeItemTooltips) { if (!_handleTooltips) - GameFunctions.GameFunctions.OpenItemTooltip(item.RawItemId); + GameFunctions.GameFunctions.OpenItemTooltip(item.RawItemId, item.Kind); _handleTooltips = true; if (_hoveredItem != item.RawItemId)