diff --git a/FFXIVClientStructs/FFXIV/Client/Game/HousingManager.cs b/FFXIVClientStructs/FFXIV/Client/Game/HousingManager.cs index 043f90810..5304054d0 100644 --- a/FFXIVClientStructs/FFXIV/Client/Game/HousingManager.cs +++ b/FFXIVClientStructs/FFXIV/Client/Game/HousingManager.cs @@ -149,6 +149,9 @@ public unsafe partial struct HousingManager { /// True or False [MemberFunction("E8 ?? ?? ?? ?? 88 45 38")] public static partial bool IsSubmarineExplorationExplored(byte point); + + [MemberFunction("48 83 EC ?? 45 0F B6 C0 45 33 C9 0F B7 D2")] + public static partial void RequestWardInfo(ushort territoryType, byte wardIndex); public HousingTerritoryType GetCurrentHousingTerritoryType() => CurrentTerritory != null ? CurrentTerritory->GetTerritoryType() : HousingTerritoryType.None; diff --git a/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHousingPortal.cs b/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHousingPortal.cs index 98cbc432a..e0ab0ac7f 100644 --- a/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHousingPortal.cs +++ b/FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHousingPortal.cs @@ -1,4 +1,5 @@ using FFXIVClientStructs.FFXIV.Client.Game.Network; +using FFXIVClientStructs.FFXIV.Component.GUI; namespace FFXIVClientStructs.FFXIV.Client.UI.Agent; @@ -10,6 +11,55 @@ namespace FFXIVClientStructs.FFXIV.Client.UI.Agent; [Inherits] [StructLayout(LayoutKind.Explicit, Size = 0xA0)] public unsafe partial struct AgentHousingPortal { + + [FieldOffset(0x30)] public uint ConfirmAddonId; + [FieldOffset(0x34)] public ushort PortalMenuAddonId; + [FieldOffset(0x36)] public ushort WardSelectAddonId; + [FieldOffset(0x38)] public ushort TerritoryType; + + [FieldOffset(0x3C)] public int SelectedWardIndex; + + [FieldOffset(0x44), FixedSizeArray] internal FixedSizeArray60 _plotOccupied; + + /// + /// 0 - Teleport to Personal Estate ward
+ /// 1 - Teleport to Free Company Estate ward
+ /// 2 - Teleport to Apartment Room ward
+ /// 3 - Clear ward selection
+ /// 4 - Unknown
+ /// 5 - Unknown
+ ///
+ [FieldOffset(0x80)] public int SelectedMenuAction; + [FieldOffset(0x84), FixedSizeArray] internal FixedSizeArray6 _menuActions; + [FieldOffset(0x9C)] public uint MenuItemCount; + [MemberFunction("40 55 53 41 54 41 55 41 57 48 8D AC 24 ?? ?? ?? ?? B8")] public partial void ReadPacket(HousingPortalPacket* packet); + + [MemberFunction("E8 ?? ?? ?? ?? EB ?? BA ?? ?? ?? ?? EB ?? BA ?? ?? ?? ?? EB ?? 48 8B CE")] + public partial void SelectWard(int wardIndex); + + /// + /// + /// + [MemberFunction("48 89 6C 24 ?? 48 89 74 24 ?? 48 89 7C 24 ?? 41 56 48 83 EC ?? 8B B1 ?? ?? ?? ?? 48 8B F9 83 FE")] + public partial bool TeleportToOwnEstateWard(); + + [MemberFunction("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 41 56 41 57 48 83 EC ?? 48 8B F9 48 8B F2")] + public partial bool ProcessPortalMenuSelect(AtkValue* values); + + [MemberFunction("48 89 5C 24 ?? 48 89 6C 24 ?? 48 89 74 24 ?? 57 41 56 41 57 48 83 EC ?? 48 8B F1 48 8B DA")] + public partial bool ProcessAction(AtkValue* values); + + [MemberFunction("48 89 5C 24 ?? 57 48 83 EC ?? 48 8B D9 33 FF 89 79 ?? 48 8B CA E8 ?? ?? ?? ?? 83 F8 ?? 0F 84")] + public partial bool ProcessMenuConfirm(AtkValue* values); + + [MemberFunction("40 53 48 83 EC ?? 48 8B D9 C7 41 ?? ?? ?? ?? ?? 48 8B CA E8 ?? ?? ?? ?? 85 C0 75 ?? 44 8B 43")] + public partial bool ConfirmTeleport(AtkValue* values); + + [MemberFunction("E8 ?? ?? ?? ?? 48 8B 74 24 ?? B1 ?? EB")] + public partial void OpenPortalMenu(ushort territoryType, AtkModuleInterface.AtkEventInterface* eventInterface, uint menuAction); + + [MemberFunction("E8 ?? ?? ?? ?? B3 ?? E9 ?? ?? ?? ?? 83 FD")] + public partial void ShowTeleportConfirm(CStringPointer text, uint callbackEventKind, ushort parentAddonId); } diff --git a/ida/data.yml b/ida/data.yml index 434eab8bd..c027df932 100644 --- a/ida/data.yml +++ b/ida/data.yml @@ -2319,6 +2319,7 @@ classes: 0x140E1E0A0: SetTemporaryObject 0x140E1E160: SetTemporaryObjectStain 0x140E1D2B0: DepositItemInStoreroom + 0x140E20400: RequestWardInfo Client::Game::HouseId: funcs: 0x140E24E80: GetWardIndex @@ -13785,6 +13786,14 @@ classes: funcs: 0x14173AA10: ctor 0x14173B3F0: ReadPacket + 0x14173B330: ConfirmTeleport + 0x14173BF00: SelectWard + 0x14173C2C0: TeleportToOwnEstate + 0x14173AD10: ProcessPortalMenuSelect + 0x14173AF00: ProcessAction + 0x14173B1D0: ProcessMenuConfirm + 0x14173B8C0: OpenPortalMenu + 0x14173C170: ShowTeleportConfirm Client::UI::Agent::AgentHousingTravellersNote: vtbls: - ea: 0x1422CEB70