SMSG_SPELL_GO

Client Version 1.12

Wowm Representation

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

smsg SMSG_SPELL_GO = 0x0132 {
    PackedGuid cast_item;
    PackedGuid caster;
    Spell spell;
    CastFlags flags;
    u8 amount_of_hits;
    Guid[amount_of_hits] hits;
    u8 amount_of_misses;
    SpellMiss[amount_of_misses] misses;
    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
-1 / -u8amount_of_hits
-? / -Guid[amount_of_hits]hits
-1 / -u8amount_of_misses
-? / -SpellMiss[amount_of_misses]misses
-- / -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_go.wowm:23.

smsg SMSG_SPELL_GO = 0x0132 {
    PackedGuid cast_item;
    PackedGuid caster;
    Spell spell;
    CastFlags flags;
    u32 timestamp;
    u8 amount_of_hits;
    Guid[amount_of_hits] hits;
    u8 amount_of_misses;
    SpellMiss[amount_of_misses] misses;
    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
-2 / -CastFlagsflags
-4 / Littleu32timestamp
-1 / -u8amount_of_hits
-? / -Guid[amount_of_hits]hits
-1 / -u8amount_of_misses
-? / -SpellMiss[amount_of_misses]misses
-- / -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_go.wowm:47.

smsg SMSG_SPELL_GO = 0x0132 {
    PackedGuid cast_item;
    PackedGuid caster;
    u8 extra_casts;
    Spell spell;
    GameobjectCastFlags flags;
    u32 timestamp;
    u8 amount_of_hits;
    Guid[amount_of_hits] hits;
    u8 amount_of_misses;
    SpellMiss[amount_of_misses] misses;
    SpellCastTargets targets;
    if (flags & POWER_UPDATE) {
        (u32)Power power;
    }
    if (flags & RUNE_UPDATE) {
        u8 rune_mask_initial;
        u8 rune_mask_after_cast;
        u8[6] rune_cooldowns;
    }
    if (flags & ADJUST_MISSILE) {
        f32 elevation;
        u32 delay_trajectory;
    }
    if (flags & AMMO) {
        u32 ammo_display_id;
        u32 ammo_inventory_type;
    }
    if (flags & VISUAL_CHAIN) {
        u32 unknown1;
        u32 unknown2;
    }
    if (flags & DEST_LOCATION) {
        u8 unknown3;
    }
}

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 / -u8extra_casts
-4 / LittleSpellspell
-4 / -GameobjectCastFlagsflags
-4 / Littleu32timestamp
-1 / -u8amount_of_hits
-? / -Guid[amount_of_hits]hits
-1 / -u8amount_of_misses
-? / -SpellMiss[amount_of_misses]misses
-- / -SpellCastTargetstargets

If flags contains POWER_UPDATE:

OffsetSize / EndiannessTypeNameComment
-4 / -Powerpower

If flags contains RUNE_UPDATE:

OffsetSize / EndiannessTypeNameComment
-1 / -u8rune_mask_initial
-1 / -u8rune_mask_after_cast
-6 / -u8[6]rune_cooldowns

If flags contains ADJUST_MISSILE:

OffsetSize / EndiannessTypeNameComment
-4 / Littlef32elevation
-4 / Littleu32delay_trajectory

If flags contains AMMO:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32ammo_display_id
-4 / Littleu32ammo_inventory_type

If flags contains VISUAL_CHAIN:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown1
-4 / Littleu32unknown2

If flags contains DEST_LOCATION:

OffsetSize / EndiannessTypeNameComment
-1 / -u8unknown3