Skip to content

Commit df20d93

Browse files
authored
Merge pull request #1352 from Haselnussbomber/some-agent-fixes
Fix AgentTelepotTown, fix Exp fields in AgentHUD
2 parents 6f69744 + 7897b58 commit df20d93

File tree

4 files changed

+23
-9
lines changed

4 files changed

+23
-9
lines changed

FFXIVClientStructs/FFXIV/Client/Game/UI/PlayerState.cs

+2
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,8 @@ public float GetDesynthesisLevel(uint classJobId)
214214
/// | 3 | Eureka | Is Elemental Level Synced |
215215
/// | 4 | Eureka | Current Elemental Level |
216216
/// | 5 | Bozja | Current Resistance Rank |
217+
/// | 6 | TerritoryIntendedUse 61 | Unknown |
218+
/// | 7 | TerritoryIntendedUse 61 | Unknown |
217219
/// |-----|-------------|------------------------------|
218220
/// </code>
219221
/// </summary>

FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentHUD.cs

+16-4
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,11 @@ public unsafe partial struct AgentHUD {
5050
[FieldOffset(0x3564)] public uint ExpClassJobId;
5151
[FieldOffset(0x3568)] public ushort ExpLevel;
5252
[FieldOffset(0x356A)] public ushort ExpContentLevel; // level in eureka and bozja for example
53-
[FieldOffset(0x356C)] public bool ExpIsLevelSynced;
54-
[FieldOffset(0x356D)] public bool ExpUnkBool2;
55-
[FieldOffset(0x356E)] public bool ExpIsMaxLevel;
56-
[FieldOffset(0x356F)] public bool ExpIsInEureka;
53+
[FieldOffset(0x356C), Obsolete("Use ExpFlags.HasFlag(AgentHudExpFlag.Synced)", true)] public bool ExpIsLevelSynced;
54+
[FieldOffset(0x356D), Obsolete("Use ExpFlags.HasFlag(AgentHudExpFlag.Unk2)", true)] public bool ExpUnkBool2;
55+
[FieldOffset(0x356E), Obsolete("Use ExpFlags.HasFlag(AgentHudExpFlag.MaxLevel)", true)] public bool ExpIsMaxLevel;
56+
[FieldOffset(0x356F), Obsolete("Use ExpFlags.HasFlag(AgentHudExpFlag.InEureka)", true)] public bool ExpIsInEureka;
57+
[FieldOffset(0x356C)] public AgentHudExpFlag ExpFlags;
5758

5859
[FieldOffset(0x3578), FixedSizeArray] internal FixedSizeArray16<HudQueuedBattleTalk> _queuedBattleTalks;
5960

@@ -160,3 +161,14 @@ public unsafe struct DisplayStatus {
160161
[MemberFunction("E8 ?? ?? ?? ?? 4D 8B CF 4C 8B C5 49 8B D6 48 8B CF")]
161162
public partial void Update(NumberArrayData* numberArray, StringArrayData* stringArray);
162163
}
164+
165+
[Flags]
166+
public enum AgentHudExpFlag : byte {
167+
None = 0,
168+
Unk1 = 1 << 0,
169+
Synced = 1 << 1,
170+
Unk2 = 1 << 2,
171+
MaxLevel = 1 << 3,
172+
InEureka = 1 << 4,
173+
Unk5 = 1 << 5, // In TerritoryIntendedUse 61?
174+
}

FFXIVClientStructs/FFXIV/Client/UI/Agent/AgentTelepotTown.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@ namespace FFXIVClientStructs.FFXIV.Client.UI.Agent;
1010
public unsafe partial struct AgentTelepotTown {
1111
[FieldOffset(0x28)] public AgentTelepotTownData* Data;
1212

13-
[MemberFunction("48 89 5C 24 ?? 57 48 83 EC 50 0F B6 FA")]
13+
[MemberFunction("E9 ?? ?? ?? ?? 83 F9 01 0F 85 ?? ?? ?? ?? 48 8B 4B 28")]
1414
public partial void TeleportToAetheryte(byte index);
1515
}
1616

17-
[StructLayout(LayoutKind.Explicit, Size = 0xD168)]
17+
[StructLayout(LayoutKind.Explicit, Size = 0xDE20)]
1818
public struct AgentTelepotTownData {
1919
[FieldOffset(0x4)] public byte CurrentAetheryte; // the one you're standing at
2020

21-
[FieldOffset(0x70A)] public byte SelectedAetheryte;
21+
[FieldOffset(0x70E)] public byte SelectedAetheryte;
2222

23-
[FieldOffset(0x70C)] public byte Flags;
23+
[FieldOffset(0x710)] public byte Flags;
2424
}

ida/data.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -10049,7 +10049,7 @@ classes:
1004910049
base: Client::UI::Agent::AgentInterface
1005010050
funcs:
1005110051
0x140AC4360: ctor
10052-
#fail 0x140AA33F0: TeleportToAetheryte
10052+
0x140AC6830: TeleportToAetheryte
1005310053
Client::UI::Agent::AgentSocial:
1005410054
vtbls:
1005510055
- ea: 0x142005BB0

0 commit comments

Comments
 (0)