Skip to content

Commit

Permalink
Update InstanceContentDirector, PublicContentDirector (#1266)
Browse files Browse the repository at this point in the history
* Update InstanceContentDirector

* Update PublicContentDirector
  • Loading branch information
Haselnussbomber authored Dec 29, 2024
1 parent f26035a commit be771eb
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,77 @@ namespace FFXIVClientStructs.FFXIV.Client.Game.InstanceContent;
public unsafe partial struct InstanceContentDirector {
//[FieldOffset(0x730), FixedSizeArray] internal FixedSizeArray168<byte> _instanceContentExcelRow;

// fields from InstanceContent sheet
[FieldOffset(0xD80 + 0x00)] public uint NewPlayerBonusGil;
[FieldOffset(0xD80 + 0x04)] public uint NewPlayerBonusExp;
[FieldOffset(0xD80 + 0x08)] public uint FinalBossExp;
[FieldOffset(0xD80 + 0x0C)] public uint Unknown0;
[FieldOffset(0xD80 + 0x10)] public uint BossExp0;
[FieldOffset(0xD80 + 0x14)] public uint BossExp1;
[FieldOffset(0xD80 + 0x18)] public uint BossExp2;
[FieldOffset(0xD80 + 0x1C)] public uint BossExp3;
[FieldOffset(0xD80 + 0x20)] public uint BossExp4;
[FieldOffset(0xD80 + 0x24)] public uint InstanceClearExp;
[FieldOffset(0xD80 + 0x28)] public uint InstanceClearGil;
[FieldOffset(0xD80 + 0x2C)] public uint InstanceContentRewardItem;
[FieldOffset(0xD80 + 0x30)] public ushort NewPlayerBonusA;
[FieldOffset(0xD80 + 0x32)] public ushort NewPlayerBonusB;
[FieldOffset(0xD80 + 0x34)] public ushort FinalBossCurrencyA;
[FieldOffset(0xD80 + 0x36)] public ushort FinalBossCurrencyB;
[FieldOffset(0xD80 + 0x38)] public ushort FinalBossCurrencyC;
[FieldOffset(0xD80 + 0x3A)] public ushort BossCurrencyA0;
[FieldOffset(0xD80 + 0x3C)] public ushort BossCurrencyA1;
[FieldOffset(0xD80 + 0x3E)] public ushort BossCurrencyA2;
[FieldOffset(0xD80 + 0x40)] public ushort BossCurrencyA3;
[FieldOffset(0xD80 + 0x42)] public ushort BossCurrencyA4;
[FieldOffset(0xD80 + 0x44)] public ushort BossCurrencyB0;
[FieldOffset(0xD80 + 0x46)] public ushort BossCurrencyB1;
[FieldOffset(0xD80 + 0x48)] public ushort BossCurrencyB2;
[FieldOffset(0xD80 + 0x4A)] public ushort BossCurrencyB3;
[FieldOffset(0xD80 + 0x4C)] public ushort BossCurrencyB4;
[FieldOffset(0xD80 + 0x4E)] public ushort BossCurrencyC0;
[FieldOffset(0xD80 + 0x50)] public ushort BossCurrencyC1;
[FieldOffset(0xD80 + 0x52)] public ushort BossCurrencyC2;
[FieldOffset(0xD80 + 0x54)] public ushort BossCurrencyC3;
[FieldOffset(0xD80 + 0x56)] public ushort BossCurrencyC4;
[FieldOffset(0xD80 + 0x58)] public ushort Unknown1;
[FieldOffset(0xD80 + 0x5A)] public byte Unknown20;
[FieldOffset(0xD80 + 0x5C)] public uint Cutscene;
[FieldOffset(0xD80 + 0x60)] public uint LGBEventRange;
[FieldOffset(0xD80 + 0x64)] public uint InstanceContentTextDataBossStart;
[FieldOffset(0xD80 + 0x68)] public uint InstanceContentTextDataBossEnd;
[FieldOffset(0xD80 + 0x6C)] public uint BNpcBaseBoss;
[FieldOffset(0xD80 + 0x70)] public uint InstanceContentTextDataObjectiveStart;
[FieldOffset(0xD80 + 0x74)] public uint InstanceContentTextDataObjectiveEnd;
[FieldOffset(0xD80 + 0x78)] public uint Unknown2;
[FieldOffset(0xD80 + 0x7C)] public uint ReqInstance;
[FieldOffset(0xD80 + 0x80)] public int InstanceContentBuff;
/// <summary>
/// This field is stored in minutes
/// </summary>
[FieldOffset(0xE04)] public ushort ContentTimeMax;

[FieldOffset(0xE1E)] public InstanceContentType InstanceContentType;
[FieldOffset(0xD80 + 0x84)] public ushort ContentTimeMax; // TimeLimitmin
[FieldOffset(0xD80 + 0x86)] public ushort BGM;
[FieldOffset(0xD80 + 0x88)] public ushort WinBGM;
[FieldOffset(0xD80 + 0x8A)] public ushort Order;
[FieldOffset(0xD80 + 0x8C)] public ushort SortKey;
[FieldOffset(0xD80 + 0x8E)] public ushort Unknown3;
[FieldOffset(0xD80 + 0x90)] public ushort Unknown4;
[FieldOffset(0xD80 + 0x92)] public ushort Unknown5;
[FieldOffset(0xD80 + 0x94)] public ushort Unknown6;
[FieldOffset(0xD80 + 0x96)] public ushort Unknown7;
[FieldOffset(0xD80 + 0x98)] public ushort Unknown8;
[FieldOffset(0xD80 + 0x9A)] public ushort Unknown_70;
[FieldOffset(0xD80 + 0x9C)] public short PartyCondition;
[FieldOffset(0xD80 + 0x9E)] public InstanceContentType InstanceContentType;
[FieldOffset(0xD80 + 0x9F)] public byte WeekRestriction;
[FieldOffset(0xD80 + 0xA0)] public byte Colosseum;
[FieldOffset(0xD80 + 0xA1)] public byte Unknown9;
[FieldOffset(0xD80 + 0xA2)] public byte Unknown10;
[FieldOffset(0xD80 + 0xA3)] public byte Unknown11;
[FieldOffset(0xD80 + 0xA4)] public byte Unknown12;
[FieldOffset(0xD80 + 0xA5)] public byte Unknown19;
[FieldOffset(0xD80 + 0xA6)] public byte Unknown13;
[FieldOffset(0xD80 + 0xA7)] public byte Unknown14_Unknown15_Unknown16_Unknown17_Unknown18;
}

public enum InstanceContentType : byte {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,24 @@ namespace FFXIVClientStructs.FFXIV.Client.Game.InstanceContent;
[StructLayout(LayoutKind.Explicit, Size = 0x11D0)]
public unsafe partial struct PublicContentDirector {
// fields from PublicContent sheet
[FieldOffset(0xD80)] public uint NameOffset; // quite useless here
[FieldOffset(0xD84)] public uint MapIcon;
[FieldOffset(0xD88)] public uint TextDataStart;
[FieldOffset(0xD8C)] public uint TextDataEnd;
[FieldOffset(0xD90)] public uint StartCutscene;
[FieldOffset(0xD94)] public uint LGBEventRange;
[FieldOffset(0xD98)] public uint LGBPopRange;
[FieldOffset(0xD9C)] public uint EndCutscene;
[FieldOffset(0xDA0)] public ushort Timelimit;
[FieldOffset(0xDA2)] public ushort ContentFinderCondition;
[FieldOffset(0xDA4)] public ushort AdditionalData;
[FieldOffset(0xDA6)] public ushort Unknown0;
[FieldOffset(0xDA8)] public ushort Unknown1;
[FieldOffset(0xDAA)] public ushort Unknown2;
[FieldOffset(0xDAC)] public ushort Unknown3;
[FieldOffset(0xDB0)] public ushort Unknown5;
[FieldOffset(0xDB2)] public PublicContentDirectorType Type;
[FieldOffset(0xDB3)] public byte Unknown4;
[FieldOffset(0xD80 + 0x00)] public uint NameOffset;
[FieldOffset(0xD80 + 0x04)] public uint MapIcon;
[FieldOffset(0xD80 + 0x08)] public uint TextDataStart;
[FieldOffset(0xD80 + 0x0C)] public uint TextDataEnd;
[FieldOffset(0xD80 + 0x10)] public uint StartCutscene;
[FieldOffset(0xD80 + 0x14)] public uint LGBEventRange;
[FieldOffset(0xD80 + 0x18)] public uint LGBPopRange;
[FieldOffset(0xD80 + 0x1C)] public uint EndCutscene;
[FieldOffset(0xD80 + 0x20)] public ushort Timelimit;
[FieldOffset(0xD80 + 0x22)] public ushort ContentFinderCondition;
[FieldOffset(0xD80 + 0x24)] public ushort AdditionalData;
[FieldOffset(0xD80 + 0x26)] public ushort Unknown0;
[FieldOffset(0xD80 + 0x28)] public ushort Unknown1;
[FieldOffset(0xD80 + 0x2A)] public ushort Unknown2;
[FieldOffset(0xD80 + 0x2C)] public ushort Unknown3;
[FieldOffset(0xD80 + 0x2E)] public ushort Unknown5;
[FieldOffset(0xD80 + 0x30)] public PublicContentDirectorType Type;
[FieldOffset(0xD80 + 0x31)] public byte Unknown4;

[MemberFunction("40 53 57 48 83 EC 78 48 8B D9 48 8D 0D")]
public static partial nint HandleEnterContentInfoPacket(EnterContentInfoPacket* packet);
Expand Down

0 comments on commit be771eb

Please sign in to comment.