diff --git a/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
index b1c9238a1..818c828a7 100644
--- a/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
+++ b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
@@ -1,4 +1,5 @@
using Dalamud.Game.ClientState.Actors.Resolvers;
+using SharpDX.Text;
namespace Dalamud.Game.ClientState.Actors.Types {
///
@@ -21,5 +22,10 @@ namespace Dalamud.Game.ClientState.Actors.Types {
/// The home world of the character.
///
public World HomeWorld => new World(this.actorStruct.HomeWorld, this.dalamud);
+
+ ///
+ /// The Free Company tag of this player.
+ ///
+ public string CompanyTag => Encoding.UTF8.GetString(this.actorStruct.CompanyTag).Substring(2).Replace("\0", "");
}
}
diff --git a/Dalamud/Game/ClientState/Structs/Actor.cs b/Dalamud/Game/ClientState/Structs/Actor.cs
index b53405006..d3089f8dd 100644
--- a/Dalamud/Game/ClientState/Structs/Actor.cs
+++ b/Dalamud/Game/ClientState/Structs/Actor.cs
@@ -21,8 +21,12 @@ namespace Dalamud.Game.ClientState.Structs
[FieldOffset(141)] public byte SubKind;
[FieldOffset(142)] public bool IsFriendly;
[FieldOffset(160)] public Position3 Position;
- [FieldOffset(6276)] public byte CurrentWorld;
- [FieldOffset(6278)] public byte HomeWorld;
+
+ // This field can't be correctly aligned, so we have to cut it manually.
+ [FieldOffset(0x17d0)] [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public byte[] CompanyTag;
+
+ [FieldOffset(0x1884)] public byte CurrentWorld;
+ [FieldOffset(0x1886)] public byte HomeWorld;
[FieldOffset(6328)] public int CurrentHp;
[FieldOffset(6332)] public int MaxHp;
[FieldOffset(6336)] public int CurrentMp;
diff --git a/Dalamud/Interface/DalamudDataWindow.cs b/Dalamud/Interface/DalamudDataWindow.cs
index a872f2442..b98b4e242 100644
--- a/Dalamud/Interface/DalamudDataWindow.cs
+++ b/Dalamud/Interface/DalamudDataWindow.cs
@@ -95,7 +95,10 @@ namespace Dalamud.Interface
if (actor is Chara chara)
stateString +=
$" Level: {chara.Level} ClassJob: {chara.ClassJob.GameData.Name} CHP: {chara.CurrentHp} MHP: {chara.MaxHp} CMP: {chara.CurrentMp} MMP: {chara.MaxMp}\n";
- ;
+
+ if (actor is PlayerCharacter pc)
+ stateString +=
+ $" HomeWorld: {pc.HomeWorld.GameData.Name} CurrentWorld: {pc.CurrentWorld.GameData.Name} FC: {pc.CompanyTag}\n";
}
}