diff --git a/FFXIVClientStructs/FFXIV/Client/Game/UI/WeaponState.cs b/FFXIVClientStructs/FFXIV/Client/Game/UI/WeaponState.cs index c60178fce..696294f94 100644 --- a/FFXIVClientStructs/FFXIV/Client/Game/UI/WeaponState.cs +++ b/FFXIVClientStructs/FFXIV/Client/Game/UI/WeaponState.cs @@ -7,5 +7,15 @@ public struct WeaponState { [FieldOffset(0x04)] public float SheatheCooldown; [FieldOffset(0x08)] public float AutoSheathTimer; [FieldOffset(0x0C)] public bool AutoSheatheState; - [FieldOffset(0x10)] public bool IsAutoAttacking; + [FieldOffset(0x10)] public AutoAttackState AutoAttackState; // note: not sure whether this is actually a part of this structure or next field of a parent + [FieldOffset(0x10), Obsolete("Use AutoAttackState.IsAutoAttacking")] public bool IsAutoAttacking; +} + +[GenerateInterop] +[StructLayout(LayoutKind.Explicit, Size = 1)] +public partial struct AutoAttackState { + [FieldOffset(0)] public bool IsAutoAttacking; + + [MemberFunction("E8 ?? ?? ?? ?? EB 15 41 B0 01")] + public partial bool SetImpl(bool value, bool sendPacket, bool isInstant); } diff --git a/ida/data.yml b/ida/data.yml index 67b7cf706..84d718884 100644 --- a/ida/data.yml +++ b/ida/data.yml @@ -2017,6 +2017,19 @@ classes: instances: - ea: 0x1427F7240 pointer: False + funcs: + 0x14096E620: CanAutoSheathe + 0x14096E660: ExtendAutoSheatheTimer + 0x14096E6C0: OnActorControlWeaponDrawn + 0x14096E770: Tick + 0x14096E9A0: SetUnsheathed + 0x14096EA60: SetUnsheathed2 + Client::Game::UI::AutoAttackState: + funcs: + 0x14096EBC0: Get + 0x14096EC10: OnActorControl + 0x14096EC80: SetImpl + 0x14096EDC0: Set Client::Game::UI::PlayerState: instances: - ea: 0x1427F7258