From 9d34739d690056522a3cde4f50e31c3b8b94fab7 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 8 Mar 2019 19:22:34 +0100 Subject: Core/PacketIO: Fixed wrong opcode being sent for stunned creatures --- src/server/game/Entities/Unit/Unit.cpp | 37 ++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) (limited to 'src') 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); } -- cgit v1.2.3