SMSG_SPELL_START

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_spell_start.wowm:1.

smsg SMSG_SPELL_START = 0x0131 {
    PackedGuid cast_item;
    PackedGuid caster;
    Spell spell;
    CastFlags flags;
    u32 timer;
    SpellCastTargets targets;
    if (flags & AMMO) {
        u32 ammo_display_id;
        u32 ammo_inventory_type;
    }
}

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x022 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x04- / -PackedGuidcast_itemcmangos/vmangos/mangoszero: if cast item is used, set this to guid of cast item, otherwise set it to same as caster.
-- / -PackedGuidcaster
-4 / LittleSpellspell
-2 / -CastFlagsflags
-4 / Littleu32timer
-- / -SpellCastTargetstargets

If flags contains AMMO:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32ammo_display_id
-4 / Littleu32ammo_inventory_type

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_spell_start.wowm:17.

smsg SMSG_SPELL_START = 0x0131 {
    PackedGuid cast_item;
    PackedGuid caster;
    Spell spell;
    u8 cast_count;
    CastFlags flags;
    u32 timer;
    SpellCastTargets targets;
    if (flags & AMMO) {
        u32 ammo_display_id;
        u32 ammo_inventory_type;
    }
}

Header

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 / Biguint16sizeSize of the rest of the message including the opcode field but not including the size field.
0x022 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
0x04- / -PackedGuidcast_itemcmangos/vmangos/mangoszero: if cast item is used, set this to guid of cast item, otherwise set it to same as caster.
-- / -PackedGuidcaster
-4 / LittleSpellspell
-1 / -u8cast_count
-2 / -CastFlagsflags
-4 / Littleu32timer
-- / -SpellCastTargetstargets

If flags contains AMMO:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32ammo_display_id
-4 / Littleu32ammo_inventory_type

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/spell/smsg_spell_start.wowm:34.

smsg SMSG_SPELL_START = 0x0131 {
    PackedGuid cast_item;
    PackedGuid caster;
    u8 cast_count;
    Spell spell;
    CastFlags flags;
    u32 timer;
    SpellCastTargets targets;
    if (flags & POWER_LEFT_SELF) {
        (u32)Power power;
    }
    if (flags & AMMO) {
        u32 ammo_display_id;
        u32 ammo_inventory_type;
    }
    if (flags & UNKNOWN_23) {
        u32 unknown1;
        u32 unknown2;
    }
}

Header

SMSG have a header of 4 bytes.

SMSG Header

OffsetSize / EndiannessTypeNameDescription
0x002 OR 3 / Biguint16 OR uint16+uint8sizeSize of the rest of the message including the opcode field but not including the size field. Wrath server messages can be 3 bytes. If the first (most significant) size byte has 0x80 set, the header will be 3 bytes, otherwise it is 2.
-2 / Littleuint16opcodeOpcode that determines which fields the message contains.

Body

OffsetSize / EndiannessTypeNameComment
-- / -PackedGuidcast_itemcmangos/vmangos/mangoszero: if cast item is used, set this to guid of cast item, otherwise set it to same as caster.
-- / -PackedGuidcaster
-1 / -u8cast_count
-4 / LittleSpellspell
-4 / -CastFlagsflags
-4 / Littleu32timer
-- / -SpellCastTargetstargets

If flags contains POWER_LEFT_SELF:

OffsetSize / EndiannessTypeNameComment
-4 / -Powerpower

If flags contains AMMO:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32ammo_display_id
-4 / Littleu32ammo_inventory_type

If flags contains UNKNOWN_23:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown1
-4 / Littleu32unknown2