From d0167d0d6d1cb2aa2e0460d376e8b11f606721d0 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 6 Dec 2021 18:48:46 +0100 Subject: [PATCH] fix(Core/Corpses): Reset corpse location data if player already resurrected in different dungeon map. (#9429) Fixes #9210 --- src/server/game/Entities/Player/Player.cpp | 2 ++ src/server/game/Handlers/MovementHandler.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 820e4b346..5fc2df447 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4514,6 +4514,8 @@ void Player::RemoveCorpse() CharacterDatabaseTransaction trans = CharacterDatabase.BeginTransaction(); Corpse::DeleteFromDB(GetGUID(), trans); CharacterDatabase.CommitTransaction(trans); + + _corpseLocation.WorldRelocate(); } void Player::SpawnCorpseBones(bool triggerSave /*= true*/) diff --git a/src/server/game/Handlers/MovementHandler.cpp b/src/server/game/Handlers/MovementHandler.cpp index b1a5fd732..11d5a7ed7 100644 --- a/src/server/game/Handlers/MovementHandler.cpp +++ b/src/server/game/Handlers/MovementHandler.cpp @@ -193,7 +193,7 @@ void WorldSession::HandleMoveWorldportAck() { if (mEntry->IsDungeon()) { - GetPlayer()->ResurrectPlayer(0.5f, false); + GetPlayer()->ResurrectPlayer(0.5f); GetPlayer()->SpawnCorpseBones(); } } @@ -203,7 +203,7 @@ void WorldSession::HandleMoveWorldportAck() // resurrect character upon entering instance when the corpse is not available anymore if (GetPlayer()->GetCorpseLocation().GetMapId() == mEntry->MapID) { - GetPlayer()->ResurrectPlayer(0.5f, false); + GetPlayer()->ResurrectPlayer(0.5f); GetPlayer()->RemoveCorpse(); } }