SMSG_ATTACKERSTATEUPDATE

Client Version 1.12

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/combat/smsg_attackerstateupdate.wowm:41.

smsg SMSG_ATTACKERSTATEUPDATE = 0x014A {
    HitInfo hit_info;
    PackedGuid attacker;
    PackedGuid target;
    u32 total_damage;
    u8 amount_of_damages;
    DamageInfo[amount_of_damages] damages;
    u32 damage_state;
    u32 unknown1;
    u32 spell_id;
    u32 blocked_amount;
}

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
0x044 / -HitInfohit_info
0x08- / -PackedGuidattacker
-- / -PackedGuidtarget
-4 / Littleu32total_damage
-1 / -u8amount_of_damages
-? / -DamageInfo[amount_of_damages]damages
-4 / Littleu32damage_state
-4 / Littleu32unknown1
-4 / Littleu32spell_idvmangos: spell id, seen with heroic strike and disarm as examples
-4 / Littleu32blocked_amount

Examples

Example 1

0, 51, // size
74, 1, // opcode (330)
128, 0, 0, 0, // hit_info: HitInfo CRITICAL_HIT (0x00000080)
1, 23, // attacker: PackedGuid
1, 100, // target: PackedGuid
57, 5, 0, 0, // total_damage: u32
1, // amount_of_damages: u8
0, 0, 0, 0, // [0].DamageInfo.spell_school_mask: u32
0, 128, 166, 68, // [0].DamageInfo.damage_float: f32
52, 5, 0, 0, // [0].DamageInfo.damage_uint: u32
0, 0, 0, 0, // [0].DamageInfo.absorb: u32
0, 0, 0, 0, // [0].DamageInfo.resist: u32
// damages: DamageInfo[amount_of_damages]
0, 0, 0, 0, // damage_state: u32
0, 0, 0, 0, // unknown1: u32
0, 0, 0, 0, // spell_id: u32
0, 0, 0, 0, // blocked_amount: u32

Client Version 2.4.3

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/combat/smsg_attackerstateupdate.wowm:41.

smsg SMSG_ATTACKERSTATEUPDATE = 0x014A {
    HitInfo hit_info;
    PackedGuid attacker;
    PackedGuid target;
    u32 total_damage;
    u8 amount_of_damages;
    DamageInfo[amount_of_damages] damages;
    u32 damage_state;
    u32 unknown1;
    u32 spell_id;
    u32 blocked_amount;
}

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
0x044 / -HitInfohit_info
0x08- / -PackedGuidattacker
-- / -PackedGuidtarget
-4 / Littleu32total_damage
-1 / -u8amount_of_damages
-? / -DamageInfo[amount_of_damages]damages
-4 / Littleu32damage_state
-4 / Littleu32unknown1
-4 / Littleu32spell_idvmangos: spell id, seen with heroic strike and disarm as examples
-4 / Littleu32blocked_amount

Client Version 3.3.5

Wowm Representation

Autogenerated from wowm file at wow_message_parser/wowm/world/combat/smsg_attackerstateupdate_3_3_5.wowm:64.

smsg SMSG_ATTACKERSTATEUPDATE = 0x014A {
    HitInfo hit_info;
    PackedGuid attacker;
    PackedGuid target;
    u32 total_damage;
    u32 overkill;
    u8 amount_of_damages;
    DamageInfo[amount_of_damages] damage_infos;
    if (hit_info & ALL_ABSORB) {
        u32 absorb;
    }
    if (hit_info & ALL_RESIST) {
        u32 resist;
    }
    VictimState victim_state;
    u32 unknown1;
    u32 unknown2;
    if (hit_info & BLOCK) {
        u32 blocked_amount;
    }
    if (hit_info & UNK19) {
        u32 unknown3;
    }
    if (hit_info & UNK1) {
        u32 unknown4;
        f32 unknown5;
        f32 unknown6;
        f32 unknown7;
        f32 unknown8;
        f32 unknown9;
        f32 unknown10;
        f32 unknown11;
        f32 unknown12;
        f32 unknown13;
        f32 unknown14;
        u32 unknown15;
    }
}

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
-4 / -HitInfohit_info
-- / -PackedGuidattacker
-- / -PackedGuidtarget
-4 / Littleu32total_damage
-4 / Littleu32overkill
-1 / -u8amount_of_damages
-? / -DamageInfo[amount_of_damages]damage_infos

If hit_info contains ALL_ABSORB:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32absorb

If hit_info contains ALL_RESIST:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32resist
-1 / -VictimStatevictim_state
-4 / Littleu32unknown1arcemu: can be 0,1000 or -1
-4 / Littleu32unknown2

If hit_info contains BLOCK:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32blocked_amount

If hit_info contains UNK19:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown3

If hit_info contains UNK1:

OffsetSize / EndiannessTypeNameComment
-4 / Littleu32unknown4
-4 / Littlef32unknown5
-4 / Littlef32unknown6
-4 / Littlef32unknown7
-4 / Littlef32unknown8
-4 / Littlef32unknown9
-4 / Littlef32unknown10
-4 / Littlef32unknown11
-4 / Littlef32unknown12
-4 / Littlef32unknown13
-4 / Littlef32unknown14
-4 / Littleu32unknown15