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