diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 11 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 40c269fb920..a51188804b3 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -122,6 +122,8 @@ m_vehicleKit(NULL), m_unitTypeMask(UNIT_MASK_NONE), m_HostileRefManager(this) m_extraAttacks = 0; m_canDualWield = false; + m_rootTimes = 0; + m_state = 0; m_form = FORM_NONE; m_deathState = ALIVE; @@ -15354,11 +15356,14 @@ void Unit::SetRooted(bool apply) { if (apply) { + if (m_rootTimes > 0) //blizzard internal check? + m_rootTimes++; + // AddUnitMovementFlag(MOVEMENTFLAG_ROOT); WorldPacket data(SMSG_FORCE_MOVE_ROOT, 10); data.append(GetPackGUID()); - data << (uint32)2; + data << m_rootTimes; SendMessageToSet(&data,true); if (GetTypeId() != TYPEID_PLAYER) @@ -15368,9 +15373,11 @@ void Unit::SetRooted(bool apply) { if (!hasUnitState(UNIT_STAT_STUNNED)) // prevent allow move if have also stun effect { + m_rootTimes++; //blizzard internal check? + WorldPacket data(SMSG_FORCE_MOVE_UNROOT, 10); data.append(GetPackGUID()); - data << (uint32)2; + data << m_rootTimes; SendMessageToSet(&data,true); // RemoveUnitMovementFlag(MOVEMENTFLAG_ROOT); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index cb61f498c8b..32774833246 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2092,6 +2092,8 @@ class Unit : public WorldObject void SetStunned(bool apply); void SetRooted(bool apply); + uint32 m_rootTimes; + uint32 m_state; // Even derived shouldn't modify uint32 m_CombatTimer; uint32 m_lastManaUse; // msecs |