diff --git a/FFXIVClientStructs/FFXIV/Client/Game/Event/EventHandler.cs b/FFXIVClientStructs/FFXIV/Client/Game/Event/EventHandler.cs index 583e65a5d..f4e31aba3 100644 --- a/FFXIVClientStructs/FFXIV/Client/Game/Event/EventHandler.cs +++ b/FFXIVClientStructs/FFXIV/Client/Game/Event/EventHandler.cs @@ -128,6 +128,7 @@ public enum EventHandlerType : ushort { DisposalShop = 0x0035, PreHandler = 0x0036, // checks quest completion before handling something, for example opening the Scrip Exchange TripleTriadCompetition = 0x0037, + HwdDev = 0x0038, // Ishgardian Restoration (Firmament / Heavensward Development?!) Salvage = 0x0039, // Desynthesis (0x390000), Materia Extraction (0x390001), Aetherial Reduction (0x390002) InclusionShop = 0x003A, CollectablesShop = 0x003B, diff --git a/FFXIVClientStructs/FFXIV/Client/Game/Event/HwdDevEventHandler.cs b/FFXIVClientStructs/FFXIV/Client/Game/Event/HwdDevEventHandler.cs new file mode 100644 index 000000000..2841143bf --- /dev/null +++ b/FFXIVClientStructs/FFXIV/Client/Game/Event/HwdDevEventHandler.cs @@ -0,0 +1,21 @@ +using FFXIVClientStructs.FFXIV.Client.System.String; + +namespace FFXIVClientStructs.FFXIV.Client.Game.Event; + +// Client::Game::Event::HwdDevEventHandler +// Client::Game::Event::EventHandler +[GenerateInterop] +[Inherits] +[StructLayout(LayoutKind.Explicit, Size = 0x320)] +public unsafe partial struct HwdDevEventHandler { + [FieldOffset(0x210)] public byte DevelopmentLevel; + + [FieldOffset(0x218)] public int NextTimestamp; + [FieldOffset(0x21C)] public bool IsInProgress; + [FieldOffset(0x21D)] public bool IsComplete; + + [FieldOffset(0x220)] StdVector Objectives; + + [FieldOffset(0x240)] public Utf8String ToDoDescription2; // this is appended to ToDoDescription + [FieldOffset(0x2A8)] public Utf8String ToDoDescription; +} diff --git a/FFXIVClientStructs/FFXIV/Client/Game/HwdManager.cs b/FFXIVClientStructs/FFXIV/Client/Game/HwdManager.cs new file mode 100644 index 000000000..2e3e33289 --- /dev/null +++ b/FFXIVClientStructs/FFXIV/Client/Game/HwdManager.cs @@ -0,0 +1,17 @@ +using FFXIVClientStructs.FFXIV.Client.Game.Event; + +namespace FFXIVClientStructs.FFXIV.Client.Game; + +// Client::Game::HwdManager +// Manager for Firmament (Ishgardian Restoration) +[GenerateInterop] +[StructLayout(LayoutKind.Explicit, Size = 0x68)] +public unsafe partial struct HwdManager { + [StaticAddress("48 8B 05 ?? ?? ?? ?? 48 8B 4C 24 ?? 0F B6 50 11", 3, isPointer: true)] + public static partial MirageManager* Instance(); + + [FieldOffset(0x11)] public byte DevelopmentLevel; + [FieldOffset(0x12)] public ushort TerritoryTypeId; + + [FieldOffset(0x40)] public HwdDevEventHandler* HwdDevEventHandler; +} diff --git a/ida/data.yml b/ida/data.yml index ed53722c0..4a9c8ae37 100644 --- a/ida/data.yml +++ b/ida/data.yml @@ -10832,7 +10832,7 @@ classes: - ea: 0x141F96038 base: Client::UI::Agent::AgentInterface funcs: - 0x1418D4710: ctor + 0x140A321D0: ctor Client::UI::Agent::AgentLeveQuest: vtbls: - ea: 0x141FBEF38 @@ -13601,10 +13601,6 @@ classes: vtbls: - ea: 0x142121CD8 base: Client::Game::Event::EventHandler - Client::Game::Event::ContentEntryEventHandler: # 0x2C - vtbls: - - ea: 0x1421B4ED0 - base: Client::Game::Event::EventHandler Client::Game::Event::VerminionEventHandler: # 0x2D vtbls: - ea: 0x141FB60B8 @@ -13655,6 +13651,12 @@ classes: base: Client::Game::Event::EventHandler funcs: 0x141829090: ctor + Client::Game::Event::HwdDevEventHandler: # 0x38 + vtbls: + - ea: 0x1421B4ED0 + base: Client::Game::Event::EventHandler + funcs: + 0x1418D3A20: ctor Client::Game::Event::SalvageEventHandler: # 0x39 vtbls: - ea: 0x1421A9D50