From 2f0c31d024e8a3e82b7cbc12c6c1fc4e6fd0dee0 Mon Sep 17 00:00:00 2001 From: KazWolfe Date: Thu, 13 Mar 2025 12:34:13 -0700 Subject: [PATCH] fix: Use builtin method for target management (#2194) - Properly validate target preconditions --- Dalamud/Game/ClientState/Objects/TargetManager.cs | 12 ++++++------ lib/FFXIVClientStructs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dalamud/Game/ClientState/Objects/TargetManager.cs b/Dalamud/Game/ClientState/Objects/TargetManager.cs index 5d7ae8945..f81154693 100644 --- a/Dalamud/Game/ClientState/Objects/TargetManager.cs +++ b/Dalamud/Game/ClientState/Objects/TargetManager.cs @@ -20,7 +20,7 @@ internal sealed unsafe class TargetManager : IServiceType, ITargetManager { [ServiceManager.ServiceDependency] private readonly ObjectTable objectTable = Service.Get(); - + [ServiceManager.ServiceConstructor] private TargetManager() { @@ -29,8 +29,8 @@ internal sealed unsafe class TargetManager : IServiceType, ITargetManager /// public IGameObject? Target { - get => this.objectTable.CreateObjectReference((IntPtr)Struct->Target); - set => Struct->Target = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address; + get => this.objectTable.CreateObjectReference((IntPtr)Struct->GetHardTarget()); + set => Struct->SetHardTarget((FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address); } /// @@ -57,8 +57,8 @@ internal sealed unsafe class TargetManager : IServiceType, ITargetManager /// public IGameObject? SoftTarget { - get => this.objectTable.CreateObjectReference((IntPtr)Struct->SoftTarget); - set => Struct->SoftTarget = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address; + get => this.objectTable.CreateObjectReference((IntPtr)Struct->GetSoftTarget()); + set => Struct->SetSoftTarget((FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address); } /// @@ -67,7 +67,7 @@ internal sealed unsafe class TargetManager : IServiceType, ITargetManager get => this.objectTable.CreateObjectReference((IntPtr)Struct->GPoseTarget); set => Struct->GPoseTarget = (FFXIVClientStructs.FFXIV.Client.Game.Object.GameObject*)value?.Address; } - + /// public IGameObject? MouseOverNameplateTarget { diff --git a/lib/FFXIVClientStructs b/lib/FFXIVClientStructs index 484b1b588..2c3e84640 160000 --- a/lib/FFXIVClientStructs +++ b/lib/FFXIVClientStructs @@ -1 +1 @@ -Subproject commit 484b1b588be5e685855392f090ec9e3eea7b3a71 +Subproject commit 2c3e84640af5220b78b944a06fdca79c52144075