aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Unit.cpp')
-rw-r--r--src/game/Unit.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 392cb3ec3f9..99d01f983d8 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -311,14 +311,25 @@ void Unit::SendMonsterMoveWithSpeed(float x, float y, float z, uint32 transitTim
SendMonsterMove(x, y, z, transitTime, player);
}
-void Unit::SendMonsterStop()
+void Unit::SendMonsterStop(bool on_death)
{
WorldPacket data(SMSG_MONSTER_MOVE, (17 + GetPackGUID().size()));
data.append(GetPackGUID());
data << uint8(0); // new in 3.1
data << GetPositionX() << GetPositionY() << GetPositionZ();
data << getMSTime();
- data << uint8(1);
+
+ if (on_death == true)
+ {
+ data << uint8(1);
+ data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK);
+ data << uint32(0); // Time in between points
+ data << uint32(1); // 1 single waypoint
+ data << GetPositionX() << GetPositionY() << GetPositionZ();
+ }
+ else
+ data << uint8(0);
+
SendMessageToSet(&data, true);
clearUnitState(UNIT_STAT_MOVE);
@@ -12002,7 +12013,7 @@ void Unit::setDeathState(DeathState s)
GetMotionMaster()->MoveIdle();
if (m_vehicleKit)
m_vehicleKit->Die();
- StopMoving();
+ SendMonsterStop(true);
//without this when removing IncreaseMaxHealth aura player may stuck with 1 hp
//do not why since in IncreaseMaxHealth currenthealth is checked
SetHealth(0);