diff options
| author | sucofog <4pdcvicente@gmail.com> | 2017-11-14 22:50:25 +0100 |
|---|---|---|
| committer | sucofog <4pdcvicente@gmail.com> | 2017-11-14 22:50:25 +0100 |
| commit | 3b73e99ec8c511707cb096e2607a18f1ef95b8fe (patch) | |
| tree | 7b85a379832ca68ba3d2a0d18e6e16e8caa7a179 /src/game/Handlers/MovementHandler.cpp | |
| parent | 1ea009e255dc371e5d0d3b98a0b33867a0927cb8 (diff) | |
| parent | e772b08c6808bae29db96ed2f51ee5b34d768da4 (diff) | |
Merge branch 'master' of https://github.com/azerothcore/azerothcore-wotlk
Diffstat (limited to 'src/game/Handlers/MovementHandler.cpp')
| -rw-r--r-- | src/game/Handlers/MovementHandler.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/game/Handlers/MovementHandler.cpp b/src/game/Handlers/MovementHandler.cpp index 1feb9ac65e..11a574b354 100644 --- a/src/game/Handlers/MovementHandler.cpp +++ b/src/game/Handlers/MovementHandler.cpp @@ -474,16 +474,26 @@ void WorldSession::HandleMovementOpcodes(WorldPacket & recvData) plrMover->UpdateFallInformationIfNeed(movementInfo, opcode); - if (movementInfo.pos.GetPositionZ() < -500.0f) + if (movementInfo.pos.GetPositionZ() < plrMover->GetMap()->GetMinHeight(movementInfo.pos.GetPositionX(), movementInfo.pos.GetPositionY())) if (!plrMover->GetBattleground() || !plrMover->GetBattleground()->HandlePlayerUnderMap(_player)) { if (plrMover->IsAlive()) { + plrMover->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_IS_OUT_OF_BOUNDS); plrMover->EnvironmentalDamage(DAMAGE_FALL_TO_VOID, GetPlayer()->GetMaxHealth()); // player can be alive if GM if (plrMover->IsAlive()) plrMover->KillPlayer(); } + else if (!plrMover->HasFlag(PLAYER_FLAGS, PLAYER_FLAGS_IS_OUT_OF_BOUNDS)) + { + WorldSafeLocsEntry const* grave = sObjectMgr->GetClosestGraveyard(plrMover->GetPositionX(), plrMover->GetPositionY(), plrMover->GetPositionZ(), plrMover->GetMapId(), plrMover->GetTeamId()); + + if ( grave) + plrMover->TeleportTo(grave->map_id, grave->x, grave->y, grave->z, plrMover->GetOrientation()); + plrMover->Relocate(grave->x, grave->y, grave->z, plrMover->GetOrientation()); + } + plrMover->StopMovingOnCurrentPos(); // pussywizard: moving corpse can't release spirit } } |
