diff options
author | silver1ce <none@none> | 2010-03-07 18:17:37 +0200 |
---|---|---|
committer | silver1ce <none@none> | 2010-03-07 18:17:37 +0200 |
commit | 9a8f10fa3067ca65c2e69ac610d8950c3b384125 (patch) | |
tree | 32469e8f7ef525eb43ad7c8088d2aa695566b1c1 /src/game/Unit.cpp | |
parent | 91b8ee104eac7446f9b8cbea7ed9dce641740c8e (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.cpp | 17 |
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); |