@@ -6,7 +6,7 @@ namespace FFXIVClientStructs.FFXIV.Client.Game.UI;
66// Client::Game::UI::PlayerState
77// ctor "E8 ?? ?? ?? ?? 33 D2 45 33 E4"
88[ GenerateInterop ]
9- [ StructLayout ( LayoutKind . Explicit , Size = 0x8B0 ) ]
9+ [ StructLayout ( LayoutKind . Explicit , Size = 0x8C0 ) ]
1010public unsafe partial struct PlayerState {
1111 [ StaticAddress ( "48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 84 C0 75 06 F6 43 18 02" , 3 ) ]
1212 public static partial PlayerState * Instance ( ) ;
@@ -79,54 +79,54 @@ public unsafe partial struct PlayerState {
7979
8080 // Size: (MountSheet.Max(row => row.Order) + 7) / 8
8181 /// <remarks> Use <see cref="IsMountUnlocked"/> </remarks>
82- [ FieldOffset ( 0x2DD ) , FixedSizeArray ] internal FixedSizeArray38 < byte > _unlockedMountsBitmask ;
82+ [ FieldOffset ( 0x2DD ) , FixedSizeArray ] internal FixedSizeArray39 < byte > _unlockedMountsBitmask ;
8383 // Size: (OrnamentSheet.RowCount + 7) / 8
8484 /// <remarks> Use <see cref="IsOrnamentUnlocked"/> </remarks>
85- [ FieldOffset ( 0x303 ) , FixedSizeArray ] internal FixedSizeArray7 < byte > _unlockedOrnamentsBitmask ;
85+ [ FieldOffset ( 0x304 ) , FixedSizeArray ] internal FixedSizeArray7 < byte > _unlockedOrnamentsBitmask ;
8686 // Size: (GlassesStylesSheet.RowCount + 7) / 8
8787 /// <remarks> Use <see cref="IsGlassesUnlocked"/> </remarks>
88- [ FieldOffset ( 0x30A ) , FixedSizeArray ] internal FixedSizeArray4 < byte > _unlockedGlassesStylesBitmask ;
89- [ FieldOffset ( 0x310 ) ] public ushort NumOwnedMounts ;
88+ [ FieldOffset ( 0x30B ) , FixedSizeArray ] internal FixedSizeArray5 < byte > _unlockedGlassesStylesBitmask ;
89+ [ FieldOffset ( 0x312 ) ] public ushort NumOwnedMounts ;
9090
9191 // Ref: "48 89 5C 24 ?? 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ?? 48 81 EC ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 30 48 8B 81 ?? ?? ?? ?? 49 8B D8"
9292 // Size: (SpearfishingNotebookSheet.RowCount + 7) / 8
93- [ FieldOffset ( 0x3C2 ) , FixedSizeArray ] internal FixedSizeArray8 < byte > _unlockedSpearfishingNotebookBitmask ;
93+ [ FieldOffset ( 0x3C6 ) , FixedSizeArray ] internal FixedSizeArray8 < byte > _unlockedSpearfishingNotebookBitmask ;
9494
9595 // Size: (FishParameterSheet.Count(row => row.IsInLog) + 7) / 8
9696 /// <remarks> Use <see cref="IsFishCaught(uint)"/> </remarks>
97- [ FieldOffset ( 0x3EC ) , FixedSizeArray ] internal FixedSizeArray180 < byte > _caughtFishBitmask ;
98- [ FieldOffset ( 0x4A0 ) ] public uint NumFishCaught ;
99- [ FieldOffset ( 0x4A4 ) ] public uint FishingBait ;
97+ [ FieldOffset ( 0x3F0 ) , FixedSizeArray ] internal FixedSizeArray180 < byte > _caughtFishBitmask ;
98+ [ FieldOffset ( 0x4A8 ) ] public uint NumFishCaught ;
99+ [ FieldOffset ( 0x4AC ) ] public uint FishingBait ;
100100 // Ref: "40 53 55 57 48 83 EC 50 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 4C 8B 12"
101101 // Size: (SpearfishingItemSheet.RowCount + 7) / 8
102102 /// <remarks> Use <see cref="IsSpearfishCaught(uint)"/> </remarks>
103- [ FieldOffset ( 0x4B1 ) , FixedSizeArray ] internal FixedSizeArray39 < byte > _caughtSpearfishBitmask ;
104- [ FieldOffset ( 0x4D8 ) ] public uint NumSpearfishCaught ;
105- [ FieldOffset ( 0x4DC ) ] internal int UnknownUnixTimestamp ; // could be an array of size 1?!
103+ [ FieldOffset ( 0x4B9 ) , FixedSizeArray ] internal FixedSizeArray39 < byte > _caughtSpearfishBitmask ;
104+ [ FieldOffset ( 0x4E0 ) ] public uint NumSpearfishCaught ;
105+ [ FieldOffset ( 0x4E4 ) ] internal int UnknownUnixTimestamp ; // could be an array of size 1?!
106106 /// <remarks>
107107 /// Index is column 27 of ContentRoulette sheet.<br/>
108108 /// See also: <see cref="InstanceContent.IsRouletteComplete" />
109109 /// </remarks>
110- [ FieldOffset ( 0x4E0 ) , FixedSizeArray ] internal FixedSizeArray12 < byte > _contentRouletteCompletion ;
111- [ FieldOffset ( 0x4EC ) ] public short PlayerCommendations ;
112-
113- [ FieldOffset ( 0x4EE ) , FixedSizeArray ] internal FixedSizeArray7 < byte > _selectedPoses ;
114- [ FieldOffset ( 0x4F5 ) , FixedSizeArray ] internal FixedSizeArray3 < byte > _playerStateFlags ;
115- [ FieldOffset ( 0x4F5 ) , Obsolete ( "Use PlayerStateFlags[0]" , true ) ] public byte PlayerStateFlags1 ;
116- [ FieldOffset ( 0x4F6 ) , Obsolete ( "Use PlayerStateFlags[1]" , true ) ] public byte PlayerStateFlags2 ;
117- [ FieldOffset ( 0x4F7 ) , Obsolete ( "Use PlayerStateFlags[2]" , true ) ] public byte PlayerStateFlags3 ;
118-
119- [ FieldOffset ( 0x522 ) ] public byte SightseeingLogUnlockState ; // 0 = Not Unlocked, 1 = ARR Part 1, 2 = ARR Part 2
120- [ FieldOffset ( 0x523 ) ] public byte SightseeingLogUnlockStateEx ; // 3 = Quest "Sights of the North" completed (= AdventureExPhase unlocked?)
121- [ FieldOffset ( 0x524 ) , FixedSizeArray ] internal FixedSizeArray44 < byte > _unlockedAdventureBitmask ; // maybe?
110+ [ FieldOffset ( 0x4E8 ) , FixedSizeArray ] internal FixedSizeArray12 < byte > _contentRouletteCompletion ;
111+ [ FieldOffset ( 0x4F4 ) ] public short PlayerCommendations ;
112+
113+ [ FieldOffset ( 0x4F6 ) , FixedSizeArray ] internal FixedSizeArray7 < byte > _selectedPoses ;
114+ [ FieldOffset ( 0x4FD ) , FixedSizeArray ] internal FixedSizeArray3 < byte > _playerStateFlags ;
115+ [ FieldOffset ( 0x4FD ) , Obsolete ( "Use PlayerStateFlags[0]" , true ) ] public byte PlayerStateFlags1 ;
116+ [ FieldOffset ( 0x4FE ) , Obsolete ( "Use PlayerStateFlags[1]" , true ) ] public byte PlayerStateFlags2 ;
117+ [ FieldOffset ( 0x4FF ) , Obsolete ( "Use PlayerStateFlags[2]" , true ) ] public byte PlayerStateFlags3 ;
118+
119+ [ FieldOffset ( 0x52A ) ] public byte SightseeingLogUnlockState ; // 0 = Not Unlocked, 1 = ARR Part 1, 2 = ARR Part 2
120+ [ FieldOffset ( 0x52B ) ] public byte SightseeingLogUnlockStateEx ; // 3 = Quest "Sights of the North" completed (= AdventureExPhase unlocked?)
121+ [ FieldOffset ( 0x52C ) , FixedSizeArray ] internal FixedSizeArray44 < byte > _unlockedAdventureBitmask ; // maybe?
122122 // Ref: PlayerState.IsAdventureComplete
123123 /// <remarks> Use <see cref="IsAdventureComplete"/> </remarks>
124- [ FieldOffset ( 0x550 ) , FixedSizeArray ] internal FixedSizeArray44 < byte > _completedAdventureBitmask ;
124+ [ FieldOffset ( 0x558 ) , FixedSizeArray ] internal FixedSizeArray44 < byte > _completedAdventureBitmask ;
125125
126- [ FieldOffset ( 0x581 ) , FixedSizeArray ] internal FixedSizeArray56 < byte > _unlockFlags ;
126+ [ FieldOffset ( 0x589 ) , FixedSizeArray ] internal FixedSizeArray56 < byte > _unlockFlags ;
127127
128128 /// <summary>Carrier Level of Delivery Moogle Quests</summary>
129- [ FieldOffset ( 0x5BD ) ] public byte DeliveryLevel ;
129+ [ FieldOffset ( 0x5C5 ) ] public byte DeliveryLevel ;
130130 // [FieldOffset(0x5BE)] public byte UnkWeddingPlanFlag; // see lua function "GetWeddingPlan"
131131 /// <summary>
132132 /// Flag containing information about which DoH job the player is specialized in.
@@ -137,63 +137,63 @@ public unsafe partial struct PlayerState {
137137 /// <see cref="IsMeisterFlagMaxCount" /><br/>
138138 /// <see cref="IsMeisterFlagAndHasSoulStoneEquipped" />
139139 /// </remarks>
140- [ FieldOffset ( 0x5BF ) ] public byte MeisterFlag ;
141- [ FieldOffset ( 0x5C0 ) ] internal byte WeeklyLockoutInfo ; // unsure how exactly it's processed
140+ [ FieldOffset ( 0x5C7 ) ] public byte MeisterFlag ;
141+ [ FieldOffset ( 0x5C8 ) ] internal byte WeeklyLockoutInfo ; // unsure how exactly it's processed
142142
143- [ FieldOffset ( 0x5C4 ) ] public int SquadronMissionCompletionTimestamp ;
144- [ FieldOffset ( 0x5C8 ) ] public int SquadronTrainingCompletionTimestamp ;
145- [ FieldOffset ( 0x5CC ) ] public ushort ActiveGcArmyExpedition ;
146- [ FieldOffset ( 0x5CE ) ] public ushort ActiveGcArmyTraining ;
147- [ FieldOffset ( 0x5D0 ) ] public bool HasNewGcArmyCandidate ; // see lua function "GcArmyIsNewCandidate"
148- // [FieldOffset(0x5D1 )] public bool UnkGcPvpMountActionCheck; // see "80 3D ?? ?? ?? ?? ?? 75 3C"
143+ [ FieldOffset ( 0x5CC ) ] public int SquadronMissionCompletionTimestamp ;
144+ [ FieldOffset ( 0x5D0 ) ] public int SquadronTrainingCompletionTimestamp ;
145+ [ FieldOffset ( 0x5D4 ) ] public ushort ActiveGcArmyExpedition ;
146+ [ FieldOffset ( 0x5D6 ) ] public ushort ActiveGcArmyTraining ;
147+ [ FieldOffset ( 0x5D8 ) ] public bool HasNewGcArmyCandidate ; // see lua function "GcArmyIsNewCandidate"
148+ // [FieldOffset(0x5D9 )] public bool UnkGcPvpMountActionCheck; // see "80 3D ?? ?? ?? ?? ?? 75 3C"
149149
150- [ FieldOffset ( 0x5D2 ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedMinerFolkloreTomeBitmask ;
151- [ FieldOffset ( 0x5D4 ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedBotanistFolkloreTomeBitmask ;
152- [ FieldOffset ( 0x5D6 ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedFishingFolkloreTomeBitmask ;
153- [ FieldOffset ( 0x5D8 ) , FixedSizeArray ] internal FixedSizeArray92 < byte > _unlockedOrchestrionRollBitmask ;
150+ [ FieldOffset ( 0x5DA ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedMinerFolkloreTomeBitmask ;
151+ [ FieldOffset ( 0x5DC ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedBotanistFolkloreTomeBitmask ;
152+ [ FieldOffset ( 0x5DE ) , FixedSizeArray ] internal FixedSizeArray2 < byte > _unlockedFishingFolkloreTomeBitmask ;
153+ [ FieldOffset ( 0x5E0 ) , FixedSizeArray ] internal FixedSizeArray92 < byte > _unlockedOrchestrionRollBitmask ;
154154
155155 #region Weekly Bonus/Weekly Bingo/Wondrous Tails Fields (packet reader in "48 83 EC 28 48 8B D1 48 8D 0D ?? ?? ?? ?? E8 ?? ?? ?? ?? 48 8B 0D ?? ?? ?? ??")
156156
157157 /// <summary>RowIds of WeeklyBingoOrderData sheet</summary>
158- [ FieldOffset ( 0x6E8 ) , FixedSizeArray ] internal FixedSizeArray16 < byte > _weeklyBingoOrderData ;
158+ [ FieldOffset ( 0x6F4 ) , FixedSizeArray ] internal FixedSizeArray16 < byte > _weeklyBingoOrderData ;
159159 /// <summary>RowIds of WeeklyBingoRewardData sheet</summary>
160- [ FieldOffset ( 0x6F8 ) , FixedSizeArray ] internal FixedSizeArray4 < byte > _weeklyBingoRewardData ;
160+ [ FieldOffset ( 0x704 ) , FixedSizeArray ] internal FixedSizeArray4 < byte > _weeklyBingoRewardData ;
161161 /// <summary>Bitflags of placed stickers.</summary>
162162 /// <remarks>Use IsWeeklyBingoStickerPlaced(index) and WeeklyBingoNumPlacedStickers instead.</remarks>
163- [ FieldOffset ( 0x6FC ) ] private ushort _weeklyBingoStickers ;
163+ [ FieldOffset ( 0x708 ) ] private ushort _weeklyBingoStickers ;
164164
165165 /// <remarks>Use GetWeeklyBingoExpireUnixTimestamp(), WeeklyBingoNumSecondChancePoints and HasWeeklyBingoJournal instead</remarks>
166- [ FieldOffset ( 0x700 ) ] private uint _weeklyBingoFlags ;
167- [ FieldOffset ( 0x704 ) , FixedSizeArray ] internal FixedSizeArray4 < byte > __weeklyBingoTaskStatus ;
168- [ FieldOffset ( 0x708 ) ] public byte WeeklyBingoRequestOpenBingoNo ;
166+ [ FieldOffset ( 0x70C ) ] private uint _weeklyBingoFlags ;
167+ [ FieldOffset ( 0x710 ) , FixedSizeArray ] internal FixedSizeArray4 < byte > __weeklyBingoTaskStatus ;
168+ [ FieldOffset ( 0x714 ) ] public byte WeeklyBingoRequestOpenBingoNo ;
169169
170- [ FieldOffset ( 0x744 ) ] public byte WeeklyBingoExpMultiplier ;
171- [ FieldOffset ( 0x745 ) ] public bool WeeklyBingoUnk63 ;
170+ [ FieldOffset ( 0x750 ) ] public byte WeeklyBingoExpMultiplier ;
171+ [ FieldOffset ( 0x751 ) ] public bool WeeklyBingoUnk63 ;
172172
173173 #endregion
174174
175175 /// <remarks> For easier access, use <see cref="GetContentValue"/>. </remarks>
176- [ FieldOffset ( 0x74C ) , FixedSizeArray ] internal FixedSizeArray3 < StdPair < uint , uint > > _contentKeyValueData ;
176+ [ FieldOffset ( 0x758 ) , FixedSizeArray ] internal FixedSizeArray3 < StdPair < uint , uint > > _contentKeyValueData ;
177177
178178 /// <remarks>
179179 /// 1 = Shadowbringers
180180 /// 2 = Endwalker
181181 /// 3 = Dawntrail
182182 /// </remarks>
183- [ FieldOffset ( 0x7DC ) ] public byte MentorVersion ;
183+ [ FieldOffset ( 0x7E8 ) ] public byte MentorVersion ;
184184
185185 /// <remarks> Index is DohDolJobIndex from the ClassJob sheet. </remarks>
186- [ FieldOffset ( 0x7E0 ) , FixedSizeArray ] internal FixedSizeArray8 < uint > _desynthesisLevels ;
187- // 0x800 (int): some Faux Hollows timestamp?
188- // 0x804 (int): some Faux Hollows state?
186+ [ FieldOffset ( 0x7EC ) , FixedSizeArray ] internal FixedSizeArray8 < uint > _desynthesisLevels ;
187+ // 0x80C (int): some Faux Hollows timestamp?
188+ // 0x810 (int): some Faux Hollows state?
189189
190- [ FieldOffset ( 0x830 ) , FixedSizeArray ] internal FixedSizeArray26 < byte > _unlockedFramersKitsBitmask ;
190+ [ FieldOffset ( 0x83C ) , FixedSizeArray ] internal FixedSizeArray26 < byte > _unlockedFramersKitsBitmask ;
191191
192- [ FieldOffset ( 0x868 ) ] public StdMap < uint , bool > TrackedStatuses ;
193- [ FieldOffset ( 0x878 ) ] public StdMap < uint , bool > TrackedActionUnlocks ;
194- [ FieldOffset ( 0x888 ) ] public StdMap < uint , bool > TrackedTraitUnlocks ;
195- [ FieldOffset ( 0x898 ) ] public bool TrackedTraitUnlocksDirty ;
196- [ FieldOffset ( 0x899 ) ] public bool TrackedActionUnlocksDirty ;
192+ [ FieldOffset ( 0x874 ) ] public StdMap < uint , bool > TrackedStatuses ;
193+ [ FieldOffset ( 0x884 ) ] public StdMap < uint , bool > TrackedActionUnlocks ;
194+ [ FieldOffset ( 0x894 ) ] public StdMap < uint , bool > TrackedTraitUnlocks ;
195+ [ FieldOffset ( 0x8A4 ) ] public bool TrackedTraitUnlocksDirty ;
196+ [ FieldOffset ( 0x8A5 ) ] public bool TrackedActionUnlocksDirty ;
197197
198198 public bool IsLegacy => ( QuestSpecialFlags & 1 ) != 0 ;
199199 public bool IsWarriorOfLight => ( QuestSpecialFlags & 2 ) != 0 ;
0 commit comments