Code:
[StructLayout(LayoutKind.Sequential)]
internal struct Flag96
{
public uint DwA;
public uint DwB;
public uint DwC;
public override string ToString()
{
return string.Format("DwA: {0} - DwB: {1} - DwC: {2}", DwA, DwB, DwC);
}
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
internal struct SpellEntry
{
public uint Id;
public uint Category;
public uint Dispel;
public uint Mechanic;
public uint Attributes;
public uint AttributesEx;
public uint AttributesEx2;
public uint AttributesEx3;
public uint AttributesEx4;
public uint AttributesEx5;
public uint AttributesEx6;
public uint AttributesEx7;
public uint Stances;
public uint unk_320_2;
public uint StancesNot;
public uint unk_320_3;
public uint Targets;
public uint TargetCreatureType;
public uint RequiresSpellFocus;
public uint FacingCasterFlags;
public uint CasterAuraState;
public uint TargetAuraState;
public uint CasterAuraStateNot;
public uint TargetAuraStateNot;
public uint casterAuraSpell;
public uint targetAuraSpell;
public uint excludeCasterAuraSpell;
public uint excludeTargetAuraSpell;
public uint CastingTimeIndex;
public uint RecoveryTime;
public uint CategoryRecoveryTime;
public uint InterruptFlags;
public uint AuraInterruptFlags;
public uint ChannelInterruptFlags;
public uint procFlags;
public uint procChance;
public uint procCharges;
public uint maxLevel;
public uint baseLevel;
public uint spellLevel;
public uint DurationIndex;
public uint powerType;
public uint manaCost;
public uint manaCostPerlevel;
public uint manaPerSecond;
public uint manaPerSecondPerLevel;
public uint rangeIndex;
public float speed;
public uint modalNextSpell;
public uint StackAmount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
public uint[] Totem;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.I4)]
public int[] Reagent;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8, ArraySubType = UnmanagedType.U4)]
public uint[] ReagentCount;
public int EquippedItemClass;
public int EquippedItemSubClassMask;
public int EquippedItemInventoryTypeMask;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] Effect;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] EffectDieSides;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] EffectBaseDice;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] EffectDicePerLevel;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] EffectRealPointsPerLevel;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] EffectBasePoints;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectMechanic;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectImplicitTargetA;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectImplicitTargetB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectRadiusIndex;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectApplyAuraName;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectAmplitude;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] EffectMultipleValue;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectChainTarget;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectItemType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] EffectMiscValue;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.I4)]
public int[] EffectMiscValueB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public uint[] EffectTriggerSpell;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] EffectPointsPerComboPoint;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.Struct)]
public Flag96[] EffectSpellClassMask;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
public uint[] SpellVisual;
public uint SpellIconID;
public uint activeIconID;
public uint spellPriority;
[MarshalAs(UnmanagedType.LPStr)]
public string SpellName;
[MarshalAs(UnmanagedType.LPStr)]
public string Rank;
[MarshalAs(UnmanagedType.LPStr)]
public string Description;
[MarshalAs(UnmanagedType.LPStr)]
public string ToolTip;
public uint ManaCostPercentage;
public uint StartRecoveryCategory;
public uint StartRecoveryTime;
public uint MaxTargetLevel;
public uint SpellFamilyName;
public Flag96 SpellFamilyFlags;
public uint MaxAffectedTargets;
public uint DmgClass;
public uint PreventionType;
public uint StanceBarOrder;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] DmgMultiplier;
public uint MinFactionId;
public uint MinReputation;
public uint RequiredAuraVision;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2, ArraySubType = UnmanagedType.U4)]
public uint[] TotemCategory;
public int AreaGroupId;
public int SchoolMask;
public uint runeCostID;
public uint spellMissileID;
public uint PowerDisplayId;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R4)]
public float[] unk_320_4;
public uint spellDescriptionVariableID;
public override string ToString()
{
return
string.Format(
"ID: {0}, Category: {1}, Dispel: {2}, Mechanic: {3}, Attributes: {4}, AttributesEx: {5}, AttributesEx2: {6}, AttributesEx3: {7}, AttributesEx4: {8}, AttributesEx5: {9}, AttributesEx6: {10}, AttributesEx7: {11}, Stances: {12}, Unk3202: {13}, StancesNot: {14}, Unk3203: {15}, Targets: {16}, TargetCreatureType: {17}, RequiresSpellFocus: {18}, FacingCasterFlags: {19}, CasterAuraState: {20}, TargetAuraState: {21}, CasterAuraStateNot: {22}, TargetAuraStateNot: {23}, CasterAuraSpell: {24}, TargetAuraSpell: {25}, ExcludeCasterAuraSpell: {26}, ExcludeTargetAuraSpell: {27}, CastingTimeIndex: {28}, RecoveryTime: {29}, CategoryRecoveryTime: {30}, InterruptFlags: {31}, AuraInterruptFlags: {32}, ChannelInterruptFlags: {33}, ProcFlags: {34}, ProcChance: {35}, ProcCharges: {36}, MaxLevel: {37}, BaseLevel: {38}, SpellLevel: {39}, DurationIndex: {40}, PowerType: {41}, ManaCost: {42}, ManaCostPerlevel: {43}, ManaPerSecond: {44}, ManaPerSecondPerLevel: {45}, RangeIndex: {46}, Speed: {47}, ModalNextSpell: {48}, StackAmount: {49}, Totem: {50}, Reagent: {51}, ReagentCount: {52}, EquippedItemClass: {53}, EquippedItemSubClassMask: {54}, EquippedItemInventoryTypeMask: {55}, Effect: {56}, EffectDieSides: {57}, EffectBaseDice: {58}, EffectDicePerLevel: {59}, EffectRealPointsPerLevel: {60}, EffectBasePoints: {61}, EffectMechanic: {62}, EffectImplicitTargetA: {63}, EffectImplicitTargetB: {64}, EffectRadiusIndex: {65}, EffectApplyAuraName: {66}, EffectAmplitude: {67}, EffectMultipleValue: {68}, EffectChainTarget: {69}, EffectItemType: {70}, EffectMiscValue: {71}, EffectMiscValueB: {72}, EffectTriggerSpell: {73}, EffectPointsPerComboPoint: {74}, EffectSpellClassMask: {75}, SpellVisual: {76}, SpellIconID: {77}, ActiveIconID: {78}, SpellPriority: {79}, SpellName: {80}, Rank: {81}, Description: {82}, ToolTip: {83}, ManaCostPercentage: {84}, StartRecoveryCategory: {85}, StartRecoveryTime: {86}, MaxTargetLevel: {87}, SpellFamilyName: {88}, SpellFamilyFlags: {89}, MaxAffectedTargets: {90}, DmgClass: {91}, PreventionType: {92}, StanceBarOrder: {93}, DmgMultiplier: {94}, MinFactionID: {95}, MinReputation: {96}, RequiredAuraVision: {97}, TotemCategory: {98}, AreaGroupID: {99}, SchoolMask: {100}, RuneCostID: {101}, SpellMissileID: {102}, PowerDisplayID: {103}, Unk3204: {104}, SpellDescriptionVariableID: {105}",
Id, Category, Dispel, Mechanic, Attributes, AttributesEx, AttributesEx2, AttributesEx3, AttributesEx4,
AttributesEx5, AttributesEx6, AttributesEx7, Stances, unk_320_2, StancesNot, unk_320_3, Targets, TargetCreatureType,
RequiresSpellFocus, FacingCasterFlags, CasterAuraState, TargetAuraState, CasterAuraStateNot, TargetAuraStateNot,
casterAuraSpell, targetAuraSpell, excludeCasterAuraSpell, excludeTargetAuraSpell, CastingTimeIndex, RecoveryTime,
CategoryRecoveryTime, InterruptFlags, AuraInterruptFlags, ChannelInterruptFlags, procFlags, procChance, procCharges,
maxLevel, baseLevel, spellLevel, DurationIndex, powerType, manaCost, manaCostPerlevel, manaPerSecond,
manaPerSecondPerLevel, rangeIndex, speed, modalNextSpell, StackAmount, Totem.ToRealString(), Reagent.ToRealString(), ReagentCount.ToRealString(),
EquippedItemClass, EquippedItemSubClassMask, EquippedItemInventoryTypeMask, Effect.ToRealString(), EffectDieSides.ToRealString(), EffectBaseDice.ToRealString(),
EffectDicePerLevel.ToRealString(), EffectRealPointsPerLevel.ToRealString(), EffectBasePoints.ToRealString(), EffectMechanic.ToRealString(), EffectImplicitTargetA.ToRealString(),
EffectImplicitTargetB.ToRealString(), EffectRadiusIndex.ToRealString(), EffectApplyAuraName.ToRealString(), EffectAmplitude.ToRealString(), EffectMultipleValue.ToRealString(),
EffectChainTarget.ToRealString(), EffectItemType.ToRealString(), EffectMiscValue.ToRealString(), EffectMiscValueB.ToRealString(), EffectTriggerSpell.ToRealString(), EffectPointsPerComboPoint.ToRealString(),
EffectSpellClassMask.ToRealString(), SpellVisual.ToRealString(), SpellIconID, activeIconID, spellPriority, SpellName, Rank, Description, ToolTip,
ManaCostPercentage, StartRecoveryCategory, StartRecoveryTime, MaxTargetLevel, SpellFamilyName, SpellFamilyFlags,
MaxAffectedTargets, DmgClass, PreventionType, StanceBarOrder, DmgMultiplier.ToRealString(), MinFactionId, MinReputation,
RequiredAuraVision, TotemCategory.ToRealString(), AreaGroupId, SchoolMask, runeCostID, spellMissileID, PowerDisplayId, unk_320_4.ToRealString(),
spellDescriptionVariableID);
}
}
That should help ya.