Skip to content

Commit f88a296

Browse files
committed
Add 2.4.3 SMSG_ATTACKER_STATE_UPDATE handler
1 parent 49910dc commit f88a296

2 files changed

Lines changed: 84 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System;
2+
using System.Diagnostics.CodeAnalysis;
3+
4+
namespace WowPacketParserModule.V2_4_3_8606.Enums
5+
{
6+
[Flags]
7+
[SuppressMessage("ReSharper", "InconsistentNaming")]
8+
public enum SpellHitInfo243
9+
{
10+
HITINFO_DEBUG = 0x00000001, // unused - debug flag, probably debugging visuals, no effect in non-ptr client
11+
HITINFO_AFFECTS_VICTIM = 0x00000002,
12+
HITINFO_OFFHAND = 0x00000004,
13+
HITINFO_UNK3 = 0x00000008, // unused (3.3.5a)
14+
HITINFO_MISS = 0x00000010,
15+
HITINFO_ABSORB = 0x00000020,
16+
HITINFO_RESIST = 0x00000040,
17+
HITINFO_CRITICALHIT = 0x00000080,
18+
HITINFO_UNK8 = 0x00000100,
19+
HITINFO_UNK9 = 0x00000200,
20+
HITINFO_UNK10 = 0x00000400,
21+
HITINFO_BLOCK = 0x00000800,
22+
HITINFO_UNK12 = 0x00001000,
23+
HITINFO_UNK13 = 0x00002000,
24+
HITINFO_GLANCING = 0x00004000,
25+
HITINFO_CRUSHING = 0x00008000,
26+
HITINFO_NOACTION = 0x00010000,
27+
HITINFO_UNK17 = 0x00020000,
28+
HITINFO_UNK18 = 0x00040000,
29+
HITINFO_SWINGNOHITSOUND = 0x00080000,
30+
};
31+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
using WowPacketParser.Enums;
2+
using WowPacketParser.Misc;
3+
using WowPacketParser.Parsing;
4+
using WowPacketParserModule.V2_4_3_8606.Enums;
5+
6+
namespace WowPacketParserModule.V2_4_3_8606.Parsers
7+
{
8+
public static class CombatHandler
9+
{
10+
[Parser(Opcode.SMSG_ATTACKER_STATE_UPDATE, ClientVersionBuild.V2_3_0_7561, ClientVersionBuild.V3_0_2_9056)]
11+
public static void HandleAttackerStateUpdate(Packet packet)
12+
{
13+
var hitInfo = packet.ReadInt32E<SpellHitInfo243>("HitInfo");
14+
packet.ReadPackedGuid("AttackerGUID");
15+
packet.ReadPackedGuid("TargetGUID");
16+
packet.ReadInt32("Damage");
17+
18+
var subDmgCount = packet.ReadByte();
19+
for (var i = 0; i < subDmgCount; ++i)
20+
{
21+
packet.ReadInt32("SchoolMask", i);
22+
packet.ReadSingle("Float Damage", i);
23+
packet.ReadInt32("Int Damage", i);
24+
packet.ReadInt32("Damage Absorbed", i);
25+
packet.ReadInt32("Damage Resisted", i);
26+
}
27+
28+
packet.ReadInt32E<VictimStates>("VictimState");
29+
packet.ReadInt32("AttackerState");
30+
packet.ReadInt32<SpellId>("Melee Spell ID ");
31+
packet.ReadInt32("Block Amount");
32+
33+
if (hitInfo.HasAnyFlag(SpellHitInfo243.HITINFO_DEBUG))
34+
{
35+
packet.ReadInt32("Armor");
36+
packet.ReadSingle("CritRollNeeded");
37+
packet.ReadSingle("CombatRoll");
38+
packet.ReadSingle("MissChance");
39+
packet.ReadSingle("DodgeChance");
40+
packet.ReadSingle("ParryChance");
41+
packet.ReadSingle("BlockChance");
42+
packet.ReadSingle("GlanceChance");
43+
packet.ReadSingle("CrushChance");
44+
for (var i = 0; i < 5; ++i)
45+
{
46+
packet.ReadSingle("MinDamage", i);
47+
packet.ReadSingle("MaxDamage", i);
48+
}
49+
packet.ReadInt32("SinceLastSwing");
50+
}
51+
}
52+
}
53+
}

0 commit comments

Comments
 (0)