diff options
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r-- | src/game/Player.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 9a6ebb558fe..5a342306174 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -4442,8 +4442,27 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) } } +bool Player::FallGround(bool noDeath/* = false*/) +{ + // Let's abort after we called this function one time + if (getDeathState() == DEAD_FALLING && !noDeath) + return false; + + float x, y, z; + GetPosition(x, y, z); + float ground_Z = GetMap()->GetVmapHeight(x, y, z, true); + if (fabs(ground_Z - z) < 0.1f) + return false; + + GetMotionMaster()->MoveFall(ground_Z, EVENT_FALL_GROUND); + if(!noDeath) Unit::setDeathState(DEAD_FALLING); + return true; +} + void Player::KillPlayer() { + if(IsFlying()) FallGround(); + SetMovement(MOVE_ROOT); StopMirrorTimers(); //disable timers(bars) |