aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Player/Player.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index cbd361d2e04..1f0cc2b8911 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -4505,6 +4505,7 @@ void Player::BuildPlayerRepop()
GetMap()->AddToMap(corpse);
// convert player body to ghost
+ setDeathState(DEAD);
SetHealth(1);
SetMovement(MOVE_WATER_WALK);
@@ -17613,6 +17614,10 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder)
GetSpellHistory()->LoadFromDB<Player>(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOAD_SPELL_COOLDOWNS));
+ uint32 savedHealth = fields[55].GetUInt32();
+ if (!savedHealth)
+ m_deathState = CORPSE;
+
// Spell code allow apply any auras to dead character in load time in aura/spell/item loading
// Do now before stats re-calculation cleanup for ghost state unexpected auras
if (!IsAlive())
@@ -17625,7 +17630,6 @@ bool Player::LoadFromDB(ObjectGuid guid, SQLQueryHolder *holder)
UpdateAllStats();
// restore remembered power/health values (but not more max values)
- uint32 savedHealth = fields[55].GetUInt32();
SetHealth(savedHealth);
for (uint8 i = 0; i < MAX_POWERS; ++i)
{
@@ -17902,14 +17906,14 @@ void Player::LoadCorpse(PreparedQueryResult result)
if (!IsAlive())
{
- if (result && !HasAtLoginFlag(AT_LOGIN_RESURRECT))
+ if (HasAtLoginFlag(AT_LOGIN_RESURRECT))
+ ResurrectPlayer(0.5f);
+ else if (result)
{
Field* fields = result->Fetch();
_corpseLocation.WorldRelocate(fields[0].GetUInt16(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat());
ApplyModByteFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTES_OFFSET_FLAGS, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(_corpseLocation.GetMapId())->Instanceable());
}
- else
- ResurrectPlayer(0.5f);
}
RemoveAtLoginFlag(AT_LOGIN_RESURRECT);