aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2019-03-08 19:22:34 +0100
committerShauren <shauren.trinity@gmail.com>2019-03-08 19:22:34 +0100
commit9d34739d690056522a3cde4f50e31c3b8b94fab7 (patch)
tree886b9eeba4917da62ba25289c8137c4b6af9a5f1 /src
parentac041afef5f4d3a157cde0f74bbdca602c26c846 (diff)
Core/PacketIO: Fixed wrong opcode being sent for stunned creatures
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp37
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);
}