DB/SpellChainEffects: Difference between revisions
Jump to navigation
Jump to search
(New page: ==Header Info == Records....................30 Fields......................8 Record Size................32 String Block Size.........552 ==Structure== '''Column Field Type Notes'...) |
Barncastle (talk | contribs) |
||
(14 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
== | ==0.5.3.3368, 1.12.1.5875== | ||
struct SpellChainEffectsRec { | |||
uint32_t m_ID; | |||
float m_AvgSegLen; | |||
float m_Width; | |||
float m_NoiseScale; | |||
float m_TexCoordScale; | |||
uint32_t m_SegDuration; | |||
uint32_t m_SegDelay; | |||
{{Template:Type|stringref}} m_Texture; | |||
}; | |||
==3.3.5a.12340, 4.3.4.15595== | |||
struct SpellChainEffectsEntry // sizeof(0xB4) | |||
{ | |||
m_ID; // +0x0, size 0x4, type 0 | |||
m_AvgSegLen; // +0x4, size 0x4, type 3 | |||
m_Width; // +0x8, size 0x4, type 3 | |||
m_NoiseScale; // +0xC, size 0x4, type 3 | |||
m_TexCoordScale; // +0x10, size 0x4, type 3 | |||
m_SegDuration; // +0x14, size 0x4, type 0 | |||
m_SegDelay; // +0x18, size 0x4, type 0 | |||
m_Texture; // +0x1C, size 0x4, type 2 | |||
m_Flags; // +0x20, size 0x4, type 0 | |||
m_JointCount; // +0x24, size 0x4, type 0 | |||
m_JointOffsetRadius; // +0x28, size 0x4, type 3 | |||
m_JointsPerMinorJoint; // +0x2C, size 0x4, type 0 | |||
m_MinorJointsPerMajorJoint; // +0x30, size 0x4, type 0 | |||
m_MinorJointScale; // +0x34, size 0x4, type 3 | |||
m_MajorJointScale; // +0x38, size 0x4, type 3 | |||
m_JointMoveSpeed; // +0x3C, size 0x4, type 3 | |||
m_JointSmoothness; // +0x40, size 0x4, type 3 | |||
m_MinDurationBetweenJointJumps; // +0x44, size 0x4, type 3 | |||
m_MaxDurationBetweenJointJumps; // +0x48, size 0x4, type 3 | |||
m_WaveHeight; // +0x4C, size 0x4, type 3 | |||
m_WaveFreq; // +0x50, size 0x4, type 3 | |||
m_WaveSpeed; // +0x54, size 0x4, type 3 | |||
m_MinWaveAngle; // +0x58, size 0x4, type 3 | |||
m_MaxWaveAngle; // +0x5C, size 0x4, type 3 | |||
m_MinWaveSpin; // +0x60, size 0x4, type 3 | |||
m_MaxWaveSpin; // +0x64, size 0x4, type 3 | |||
m_ArcHeight; // +0x68, size 0x4, type 3 | |||
m_MinArcAngle; // +0x6C, size 0x4, type 3 | |||
m_MaxArcAngle; // +0x70, size 0x4, type 3 | |||
m_MinArcSpin; // +0x74, size 0x4, type 3 | |||
m_MaxArcSpin; // +0x78, size 0x4, type 3 | |||
m_DelayBetweenEffects; // +0x7C, size 0x4, type 3 | |||
m_MinFlickerOnDuration; // +0x80, size 0x4, type 3 | |||
m_MaxFlickerOnDuration; // +0x84, size 0x4, type 3 | |||
m_MinFlickerOffDuration; // +0x88, size 0x4, type 3 | |||
m_MaxFlickerOffDuration; // +0x8C, size 0x4, type 3 | |||
m_PulseSpeed; // +0x90, size 0x4, type 3 | |||
m_PulseOnLength; // +0x94, size 0x4, type 3 | |||
m_PulseFadeLength; // +0x98, size 0x4, type 3 | |||
m_Alpha; // +0x9C, size 0x1, type 0 | |||
m_Red; // +0x9D, size 0x1, type 0 | |||
m_Green; // +0x9E, size 0x1, type 0 | |||
m_Blue; // +0x9F, size 0x1, type 0 | |||
m_BlendMode; // +0xA0, size 0x1, type 0 | |||
m_Combo; // +0xA4, size 0x4, type 2 | |||
m_RenderLayer; // +0xA8, size 0x4, type 0 | |||
m_TextureLength; // +0xAC, size 0x4, type 3 | |||
m_WavePhase; // +0xB0, size 0x4, type 3 | |||
}; | |||
== | ===m_Combo=== | ||
<code>m_Combo</code> is an encoded uint32_t array containing {{Template:DBField|table=SpellChainEffects|column=ID}}s, it is the predecessor of <code>m_SpellChainEffectID</code>. This is stored in the DB as the byte representation of this array converted to a string. | |||
The client parses this data by reading, decoding (<code>CLightning::DecodeChainEffectsID</code>) and validating each uint32_t one at a time. Reading will cease if one of the following conditions occurs: | |||
#All field data is read | |||
#An invalid {{Template:DBField|table=SpellChainEffects|column=ID}} is found | |||
#12 {{Template:DBField|table=SpellChainEffects|column=ID}}s have been read (additional data is simply ignored) | |||
Note: It appears any referenced records without a valid and accessible <code>m_Texture</code> will be skipped | |||
uint32_t CLightning::DecodeChainEffectsID(uint32_t value) { | |||
return ( | |||
( value & 0xFEFEFEFE) | | |||
((value & 0x08000000) >> 04) | | |||
((value & 0x04000000) >> 11) | | |||
((value & 0x40000000) >> 14) | | |||
((value & 0x02000000) >> 18) | | |||
((value & 0x20000000) >> 21) | | |||
((value & 0x10000000) >> 28) | |||
) & 0xFFFFFF; | |||
} | |||
==6.0.1.18179== | |||
struct SpellChainEffectsRec { | |||
uint32_t m_ID; | |||
float m_AvgSegLen; | |||
float m_Width; | |||
float m_NoiseScale; | |||
float m_TexCoordScale; | |||
uint32_t m_SegDuration; | |||
uint32_t m_SegDelay; | |||
uint32_t m_Flags; // &0x20: CHAINFXFLAG_PULSING_ENABLED | |||
uint32_t m_JointCount; | |||
float m_JointOffsetRadius; | |||
uint32_t m_JointsPerMinorJoint; | |||
uint32_t m_MinorJointsPerMajorJoint; | |||
float m_MinorJointScale; | |||
float m_MajorJointScale; | |||
float m_JointMoveSpeed; | |||
float m_JointSmoothness; | |||
float m_MinDurationBetweenJointJumps; | |||
float m_MaxDurationBetweenJointJumps; | |||
float m_WaveHeight; | |||
float m_WaveFreq; | |||
float m_WaveSpeed; | |||
float m_MinWaveAngle; | |||
float m_MaxWaveAngle; | |||
float m_MinWaveSpin; | |||
float m_MaxWaveSpin; | |||
float m_ArcHeight; | |||
float m_MinArcAngle; | |||
float m_MaxArcAngle; | |||
float m_MinArcSpin; | |||
float m_MaxArcSpin; | |||
float m_DelayBetweenEffects; | |||
float m_MinFlickerOnDuration; | |||
float m_MaxFlickerOnDuration; | |||
float m_MinFlickerOffDuration; | |||
float m_MaxFlickerOffDuration; | |||
float m_PulseSpeed; | |||
float m_PulseOnLength; | |||
float m_PulseFadeLength; | |||
uint8_t m_Alpha; | |||
uint8_t m_Red; | |||
uint8_t m_Green; | |||
uint8_t m_Blue; | |||
uint8_t m_BlendMode; | |||
uint8_t padding_0[3]; | |||
uint32_t m_RenderLayer; | |||
float m_TextureLength; | |||
float m_WavePhase; | |||
uint32_t m_SpellChainEffectID[11]; | |||
{{Template:Type|stringref}} m_Texture; | |||
}; | |||
[[Category:DBC]] | [[Category:DBC]] | ||
[[Category:DBC_Alpha]] | |||
[[Category:DBC_Vanilla]] | |||
[[Category:DBC_WotLK]] | |||
[[Category:DBC_WoD]][[Category:6.0.1.18179]] |
Revision as of 14:59, 15 July 2018
0.5.3.3368, 1.12.1.5875
struct SpellChainEffectsRec { uint32_t m_ID; float m_AvgSegLen; float m_Width; float m_NoiseScale; float m_TexCoordScale; uint32_t m_SegDuration; uint32_t m_SegDelay; stringrefⁱ m_Texture; };
3.3.5a.12340, 4.3.4.15595
struct SpellChainEffectsEntry // sizeof(0xB4) { m_ID; // +0x0, size 0x4, type 0 m_AvgSegLen; // +0x4, size 0x4, type 3 m_Width; // +0x8, size 0x4, type 3 m_NoiseScale; // +0xC, size 0x4, type 3 m_TexCoordScale; // +0x10, size 0x4, type 3 m_SegDuration; // +0x14, size 0x4, type 0 m_SegDelay; // +0x18, size 0x4, type 0 m_Texture; // +0x1C, size 0x4, type 2 m_Flags; // +0x20, size 0x4, type 0 m_JointCount; // +0x24, size 0x4, type 0 m_JointOffsetRadius; // +0x28, size 0x4, type 3 m_JointsPerMinorJoint; // +0x2C, size 0x4, type 0 m_MinorJointsPerMajorJoint; // +0x30, size 0x4, type 0 m_MinorJointScale; // +0x34, size 0x4, type 3 m_MajorJointScale; // +0x38, size 0x4, type 3 m_JointMoveSpeed; // +0x3C, size 0x4, type 3 m_JointSmoothness; // +0x40, size 0x4, type 3 m_MinDurationBetweenJointJumps; // +0x44, size 0x4, type 3 m_MaxDurationBetweenJointJumps; // +0x48, size 0x4, type 3 m_WaveHeight; // +0x4C, size 0x4, type 3 m_WaveFreq; // +0x50, size 0x4, type 3 m_WaveSpeed; // +0x54, size 0x4, type 3 m_MinWaveAngle; // +0x58, size 0x4, type 3 m_MaxWaveAngle; // +0x5C, size 0x4, type 3 m_MinWaveSpin; // +0x60, size 0x4, type 3 m_MaxWaveSpin; // +0x64, size 0x4, type 3 m_ArcHeight; // +0x68, size 0x4, type 3 m_MinArcAngle; // +0x6C, size 0x4, type 3 m_MaxArcAngle; // +0x70, size 0x4, type 3 m_MinArcSpin; // +0x74, size 0x4, type 3 m_MaxArcSpin; // +0x78, size 0x4, type 3 m_DelayBetweenEffects; // +0x7C, size 0x4, type 3 m_MinFlickerOnDuration; // +0x80, size 0x4, type 3 m_MaxFlickerOnDuration; // +0x84, size 0x4, type 3 m_MinFlickerOffDuration; // +0x88, size 0x4, type 3 m_MaxFlickerOffDuration; // +0x8C, size 0x4, type 3 m_PulseSpeed; // +0x90, size 0x4, type 3 m_PulseOnLength; // +0x94, size 0x4, type 3 m_PulseFadeLength; // +0x98, size 0x4, type 3 m_Alpha; // +0x9C, size 0x1, type 0 m_Red; // +0x9D, size 0x1, type 0 m_Green; // +0x9E, size 0x1, type 0 m_Blue; // +0x9F, size 0x1, type 0 m_BlendMode; // +0xA0, size 0x1, type 0 m_Combo; // +0xA4, size 0x4, type 2 m_RenderLayer; // +0xA8, size 0x4, type 0 m_TextureLength; // +0xAC, size 0x4, type 3 m_WavePhase; // +0xB0, size 0x4, type 3 };
m_Combo
m_Combo
is an encoded uint32_t array containing SpellChainEffectsRec::IDs, it is the predecessor of m_SpellChainEffectID
. This is stored in the DB as the byte representation of this array converted to a string.
The client parses this data by reading, decoding (CLightning::DecodeChainEffectsID
) and validating each uint32_t one at a time. Reading will cease if one of the following conditions occurs:
- All field data is read
- An invalid SpellChainEffectsRec::ID is found
- 12 SpellChainEffectsRec::IDs have been read (additional data is simply ignored)
Note: It appears any referenced records without a valid and accessible m_Texture
will be skipped
uint32_t CLightning::DecodeChainEffectsID(uint32_t value) { return ( ( value & 0xFEFEFEFE) | ((value & 0x08000000) >> 04) | ((value & 0x04000000) >> 11) | ((value & 0x40000000) >> 14) | ((value & 0x02000000) >> 18) | ((value & 0x20000000) >> 21) | ((value & 0x10000000) >> 28) ) & 0xFFFFFF; }
6.0.1.18179
struct SpellChainEffectsRec { uint32_t m_ID; float m_AvgSegLen; float m_Width; float m_NoiseScale; float m_TexCoordScale; uint32_t m_SegDuration; uint32_t m_SegDelay; uint32_t m_Flags; // &0x20: CHAINFXFLAG_PULSING_ENABLED uint32_t m_JointCount; float m_JointOffsetRadius; uint32_t m_JointsPerMinorJoint; uint32_t m_MinorJointsPerMajorJoint; float m_MinorJointScale; float m_MajorJointScale; float m_JointMoveSpeed; float m_JointSmoothness; float m_MinDurationBetweenJointJumps; float m_MaxDurationBetweenJointJumps; float m_WaveHeight; float m_WaveFreq; float m_WaveSpeed; float m_MinWaveAngle; float m_MaxWaveAngle; float m_MinWaveSpin; float m_MaxWaveSpin; float m_ArcHeight; float m_MinArcAngle; float m_MaxArcAngle; float m_MinArcSpin; float m_MaxArcSpin; float m_DelayBetweenEffects; float m_MinFlickerOnDuration; float m_MaxFlickerOnDuration; float m_MinFlickerOffDuration; float m_MaxFlickerOffDuration; float m_PulseSpeed; float m_PulseOnLength; float m_PulseFadeLength; uint8_t m_Alpha; uint8_t m_Red; uint8_t m_Green; uint8_t m_Blue; uint8_t m_BlendMode; uint8_t padding_0[3]; uint32_t m_RenderLayer; float m_TextureLength; float m_WavePhase; uint32_t m_SpellChainEffectID[11]; stringrefⁱ m_Texture; };