diff options
-rw-r--r-- | src/game/MiscHandler.cpp | 3 | ||||
-rw-r--r-- | src/game/MovementHandler.cpp | 1 | ||||
-rw-r--r-- | src/game/NPCHandler.cpp | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 3 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/game/World.cpp | 3 | ||||
-rw-r--r-- | src/game/WorldSession.cpp | 4 | ||||
-rw-r--r-- | src/game/WorldSession.h | 2 |
8 files changed, 7 insertions, 13 deletions
diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index a3483b8efd9..c51ca063e48 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -748,8 +748,6 @@ void WorldSession::HandleReclaimCorpseOpcode(WorldPacket &recv_data) // spawn bones GetPlayer()->SpawnCorpseBones(); - - GetPlayer()->SaveToDB(); } void WorldSession::HandleResurrectResponseOpcode(WorldPacket & recv_data) @@ -774,7 +772,6 @@ void WorldSession::HandleResurrectResponseOpcode(WorldPacket & recv_data) return; GetPlayer()->ResurectUsingRequestData(); - GetPlayer()->SaveToDB(); } void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index d17ad1b8448..a718d1601a2 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -146,7 +146,6 @@ void WorldSession::HandleMoveWorldportAckOpcode() { GetPlayer()->ResurrectPlayer(0.5f,false); GetPlayer()->SpawnCorpseBones(); - GetPlayer()->SaveToDB(); } } diff --git a/src/game/NPCHandler.cpp b/src/game/NPCHandler.cpp index 57f9391176c..15201f86dd3 100644 --- a/src/game/NPCHandler.cpp +++ b/src/game/NPCHandler.cpp @@ -395,8 +395,6 @@ void WorldSession::SendSpiritResurrect() else //ObjectAccessor::UpdateVisibilityForPlayer(_player); _player->SetToNotify(); - - _player->SaveToDB(); } void WorldSession::HandleBinderActivateOpcode( WorldPacket & recv_data ) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index ae3113044da..5d33d75f92b 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -4567,7 +4567,8 @@ void Player::CreateCorpse() void Player::SpawnCorpseBones() { if(ObjectAccessor::Instance().ConvertCorpseForPlayer(GetGUID())) - SaveToDB(); // prevent loading as ghost without corpse + if (!GetSession()->PlayerLogoutWithSave()) // at logout we will already store the player + SaveToDB(); // prevent loading as ghost without corpse } Corpse* Player::GetCorpse() const diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index cf275693a82..b6bc9aed572 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -6694,8 +6694,6 @@ void Spell::EffectSelfResurrect(uint32 i) plr->SetPower(POWER_ENERGY, plr->GetMaxPower(POWER_ENERGY) ); plr->SpawnCorpseBones(); - - plr->SaveToDB(); } void Spell::EffectSkinning(uint32 /*i*/) diff --git a/src/game/World.cpp b/src/game/World.cpp index 43f2c40026d..a822d202288 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -2393,9 +2393,6 @@ void World::UpdateSessions(uint32 diff) next = itr; ++next; - if (!itr->second) - continue; - ///- and remove not active sessions from the list if (!itr->second->Update(diff)) // As interval = 0 { diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp index ad15c5f3932..bbcf4fcbf70 100644 --- a/src/game/WorldSession.cpp +++ b/src/game/WorldSession.cpp @@ -47,7 +47,7 @@ WorldSession::WorldSession(uint32 id, WorldSocket *sock, AccountTypes sec, uint8 LookingForGroup_auto_join(false), LookingForGroup_auto_add(false), m_muteTime(mute_time), _player(NULL), m_Socket(sock),_security(sec), _accountId(id), m_expansion(expansion), m_sessionDbcLocale(sWorld.GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(objmgr.GetIndexForLocale(locale)), -_logoutTime(0), m_inQueue(false), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), +_logoutTime(0), m_inQueue(false), m_playerLoading(false), m_playerLogout(false), m_playerRecentlyLogout(false), m_playerSave(false), m_latency(0), m_TutorialsChanged(false) { if (sock) @@ -299,6 +299,7 @@ void WorldSession::LogoutPlayer(bool Save) HandleMoveWorldportAckOpcode(); m_playerLogout = true; + m_playerSave = Save; if (_player) { @@ -458,6 +459,7 @@ void WorldSession::LogoutPlayer(bool Save) Script->OnLogout(_player); m_playerLogout = false; + m_playerSave = false; m_playerRecentlyLogout = true; LogoutRequest(0); } diff --git a/src/game/WorldSession.h b/src/game/WorldSession.h index 021a1a49d2b..0e0d5df9480 100644 --- a/src/game/WorldSession.h +++ b/src/game/WorldSession.h @@ -118,6 +118,7 @@ class TRINITY_DLL_SPEC WorldSession bool PlayerLoading() const { return m_playerLoading; } bool PlayerLogout() const { return m_playerLogout; } + bool PlayerLogoutWithSave() const { return m_playerLogout && m_playerSave; } void SizeError(WorldPacket const& packet, uint32 size) const; @@ -763,6 +764,7 @@ class TRINITY_DLL_SPEC WorldSession bool m_playerLoading; // code processed in LoginPlayer bool m_playerLogout; // code processed in LogoutPlayer bool m_playerRecentlyLogout; + bool m_playerSave; LocaleConstant m_sessionDbcLocale; int m_sessionDbLocaleIndex; uint32 m_latency; |