aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2023-09-12 12:52:15 +0200
committerShauren <shauren.trinity@gmail.com>2023-09-26 23:18:02 +0200
commitd11d992df9e15503c321ffcce566f13923f51508 (patch)
tree1b1eef0f9a55fa27e9a0fb6d1d18746c9779e0a8
parenta5217f59b2ed871c8a64f8965951917ac98b0a63 (diff)
Core/Player: return player corpse locations by reference instead of creating copies
-rw-r--r--src/server/game/Entities/Player/Player.cpp3
-rw-r--r--src/server/game/Entities/Player/Player.h2
-rw-r--r--src/server/game/Handlers/NPCHandler.cpp2
3 files changed, 3 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e6a3b4fe127..5543652b36e 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -4512,8 +4512,7 @@ void Player::BuildPlayerRepop()
// there must be SMSG.STOP_MIRROR_TIMER
// the player cannot have a corpse already on current map, only bones which are not returned by GetCorpse
- WorldLocation corpseLocation = GetCorpseLocation();
- if (corpseLocation.GetMapId() == GetMapId())
+ if (GetCorpseLocation().GetMapId() == GetMapId())
{
TC_LOG_ERROR("entities.player", "Player::BuildPlayerRepop: Player '{}' ({}) already has a corpse", GetName(), GetGUID().ToString());
return;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index d67225835a1..2b5b12c6413 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1700,7 +1700,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void KillPlayer();
static void OfflineResurrect(ObjectGuid const& guid, CharacterDatabaseTransaction trans);
bool HasCorpse() const { return _corpseLocation.GetMapId() != MAPID_INVALID; }
- WorldLocation GetCorpseLocation() const { return _corpseLocation; }
+ WorldLocation const& GetCorpseLocation() const { return _corpseLocation; }
uint32 GetResurrectionSpellId();
void ResurrectPlayer(float restore_percent, bool applySickness = false);
void BuildPlayerRepop();
diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp
index 9d9e90b1f69..98f1e1ab29d 100644
--- a/src/server/game/Handlers/NPCHandler.cpp
+++ b/src/server/game/Handlers/NPCHandler.cpp
@@ -218,9 +218,9 @@ void WorldSession::SendSpiritResurrect()
// get corpse nearest graveyard
WorldSafeLocsEntry const* corpseGrave = nullptr;
- WorldLocation corpseLocation = _player->GetCorpseLocation();
if (_player->HasCorpse())
{
+ WorldLocation const& corpseLocation = _player->GetCorpseLocation();
corpseGrave = sObjectMgr->GetClosestGraveyard(corpseLocation.GetPositionX(), corpseLocation.GetPositionY(),
corpseLocation.GetPositionZ(), corpseLocation.GetMapId(), _player->GetTeam());
}