aboutsummaryrefslogtreecommitdiff
path: root/src/game/Unit.cpp
diff options
context:
space:
mode:
authorsilver1ce <none@none>2010-03-07 18:17:37 +0200
committersilver1ce <none@none>2010-03-07 18:17:37 +0200
commit9a8f10fa3067ca65c2e69ac610d8950c3b384125 (patch)
tree32469e8f7ef525eb43ad7c8088d2aa695566b1c1 /src/game/Unit.cpp
parent91b8ee104eac7446f9b8cbea7ed9dce641740c8e (diff)
avoid send movement packet at death twice, cleanup
--HG-- branch : trunk
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);