The struct of the TCD kinda looks like the following. Atleast my framework eats it.
Code:
public class TSkillContainer
{
[DynamicPropertyCount(PropertyCount.UInt16)]
public TSkillEntity[] TSkill { get; set; }
}
[DebuggerDisplay("{m_strNAME}")]
public class TSkillEntity
{
public string m_strNAME { get; set; }
public ushort m_wSkillID { get; set; }
public ushort m_wActSkillID { get; set; }
public ushort m_wNeedItemID { get; set; }
public uint m_dwClassID { get; set; }
public ushort m_wDefSkillID { get; set; }
public byte m_bKind { get; set; }
public byte m_bPositive { get; set; }
public byte m_bLevel { get; set; }
public byte m_bLevelInc { get; set; }
public byte m_bMaxLevel { get; set; }
public float m_fPrice { get; set; }
public byte m_bDuraSlot { get; set; }
public uint m_dwWeaponID { get; set; }
public ushort m_wUseHP { get; set; }
public uint dwNIU { get; set; }
public ushort m_wUseMP { get; set; }
public byte m_bHitInit { get; set; }
public byte m_bHitInc { get; set; }
public uint m_dwSpellTick { get; set; }
public byte m_bIsRide { get; set; }
public uint m_dwDelay { get; set; }
public int m_nDelayInc { get; set; }
public uint m_dwGroupTick { get; set; }
public uint m_dwInterval { get; set; }
public byte m_bDelayType { get; set; }
public ushort m_wModeID { get; set; }
public uint dwNIU1 { get; set; }
public byte m_bTargetType { get; set; }
public byte m_bRangeType { get; set; }
public float m_fMinRange { get; set; }
public float m_fMaxRange { get; set; }
public float m_fAtkRange { get; set; }
public uint dwNIU2 { get; set; }
public float m_fBufRange { get; set; }
public uint m_dwDuration { get; set; }
public uint m_dwDurationInc { get; set; }
public byte m_bCanCancel { get; set; }
public byte m_bContinue { get; set; }
public uint dwNIU3 { get; set; }
public ushort m_wIconID { get; set; }
[StaticPropertyCount(2)]
public ushort[] m_wItemID { get; set; } //2
public byte m_bActive { get; set; }
public byte m_bLoop { get; set; }
[StaticPropertyCount(4)]
public byte[] m_bActionID { get; set; } //4
public uint m_dwInfoID { get; set; }
public uint dwNIU4 { get; set; }
[StaticPropertyCount(7)]
public uint[] m_dwSFX { get; set; } //7
public byte m_bShowIcon { get; set; }
public byte m_bShowTime { get; set; }
public byte m_bShowCritical { get; set; }
public byte m_bUseInHold { get; set; }
public byte m_bStaticWhenDie { get; set; }
public float m_fMoveDist { get; set; }
[StaticPropertyCount(9)]
public byte[] dwNIU5 { get; set; } //4*2+1 = 9
// public byte m_bPursuit { get; set; }
}