diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-03-08 19:22:34 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-03-08 19:22:34 +0100 |
commit | 9d34739d690056522a3cde4f50e31c3b8b94fab7 (patch) | |
tree | 886b9eeba4917da62ba25289c8137c4b6af9a5f1 | |
parent | ac041afef5f4d3a157cde0f74bbdca602c26c846 (diff) |
Core/PacketIO: Fixed wrong opcode being sent for stunned creatures
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 177f48ffc3b..c8ec43db194 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11188,6 +11188,9 @@ void Unit::SetStunned(bool apply) { if (apply) { + if (m_rootTimes > 0) // blizzard internal check? + m_rootTimes++; + SetTarget(ObjectGuid::Empty); SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); @@ -11201,10 +11204,19 @@ void Unit::SetStunned(bool apply) if (GetTypeId() == TYPEID_PLAYER) SetStandState(UNIT_STAND_STATE_STAND); - WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8); - data << GetPackGUID(); - data << uint32(0); - SendMessageToSet(&data, true); + if (GetTypeId() == TYPEID_PLAYER) + { + WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10); + data << GetPackGUID(); + data << m_rootTimes; + SendMessageToSet(&data, true); + } + else + { + WorldPacket data(SMSG_SPLINE_MOVE_ROOT, 8); + data << GetPackGUID(); + SendMessageToSet(&data, true); + } CastStop(); } @@ -11220,10 +11232,19 @@ void Unit::SetStunned(bool apply) if (!HasUnitState(UNIT_STATE_ROOT)) // prevent moving if it also has root effect { - WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 8+4); - data << GetPackGUID(); - data << uint32(0); - SendMessageToSet(&data, true); + if (GetTypeId() == TYPEID_PLAYER) + { + WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 10); + data << GetPackGUID(); + data << ++m_rootTimes; + SendMessageToSet(&data, true); + } + else + { + WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8); + data << GetPackGUID(); + SendMessageToSet(&data, true); + } RemoveUnitMovementFlag(MOVEMENTFLAG_ROOT); } |