diff --git a/src/game/Mail.cpp b/src/game/Mail.cpp index fda9b7714..024633635 100644 --- a/src/game/Mail.cpp +++ b/src/game/Mail.cpp @@ -513,10 +513,6 @@ void WorldSession::HandleGetMailList(WorldPacket & recv_data ) if (!GetPlayer()->GetGameObjectIfCanInteractWith(mailbox, GAMEOBJECT_TYPE_MAILBOX)) return; - // load players mails, and mailed items - if(!_player->m_mailsLoaded) - _player->_LoadMail(); - // client can't work with packets > max int16 value const uint32 maxPacketSize = 32767; @@ -728,9 +724,6 @@ void WorldSession::HandleQueryNextMailTime(WorldPacket & /*recv_data*/ ) { WorldPacket data(MSG_QUERY_NEXT_MAIL_TIME, 8); - if(!_player->m_mailsLoaded) - _player->_LoadMail(); - if( _player->unReadMails > 0 ) { data << uint32(0); // float @@ -957,41 +950,36 @@ void MailDraft::SendMailTo(MailReceiver const& receiver, MailSender const& sende { pReceiver->AddNewMailDeliverTime(deliver_time); - if (pReceiver->IsMailsLoaded()) + Mail *m = new Mail; + m->messageID = mailId; + m->mailTemplateId = GetMailTemplateId(); + m->subject = GetSubject(); + m->itemTextId = GetBodyId(); + m->money = GetMoney(); + m->COD = GetCOD(); + + for(MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) { - Mail *m = new Mail; - m->messageID = mailId; - m->mailTemplateId = GetMailTemplateId(); - m->subject = GetSubject(); - m->itemTextId = GetBodyId(); - m->money = GetMoney(); - m->COD = GetCOD(); - - for(MailItemMap::const_iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) - { - Item* item = mailItemIter->second; - m->AddItem(item->GetGUIDLow(), item->GetEntry()); - } - - m->messageType = sender.GetMailMessageType(); - m->stationery = sender.GetStationery(); - m->sender = sender.GetSenderId(); - m->receiver = receiver.GetPlayerGUIDLow(); - m->expire_time = expire_time; - m->deliver_time = deliver_time; - m->checked = checked; - m->state = MAIL_STATE_UNCHANGED; - - pReceiver->AddMail(m); // to insert new mail to beginning of maillist - - if (!m_items.empty()) - { - for(MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) - pReceiver->AddMItem(mailItemIter->second); - } + Item* item = mailItemIter->second; + m->AddItem(item->GetGUIDLow(), item->GetEntry()); + } + + m->messageType = sender.GetMailMessageType(); + m->stationery = sender.GetStationery(); + m->sender = sender.GetSenderId(); + m->receiver = receiver.GetPlayerGUIDLow(); + m->expire_time = expire_time; + m->deliver_time = deliver_time; + m->checked = checked; + m->state = MAIL_STATE_UNCHANGED; + + pReceiver->AddMail(m); // to insert new mail to beginning of maillist + + if (!m_items.empty()) + { + for(MailItemMap::iterator mailItemIter = m_items.begin(); mailItemIter != m_items.end(); ++mailItemIter) + pReceiver->AddMItem(mailItemIter->second); } - else if (!m_items.empty()) - deleteIncludedItems(); } else if (!m_items.empty()) deleteIncludedItems(); diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index 213168c84..428bea4f1 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -4810,7 +4810,7 @@ void ObjectMgr::ReturnOrDeleteOldMails(bool serverUp) Player *pl = 0; if (serverUp) pl = GetPlayer((uint64)m->receiver); - if (pl && pl->m_mailsLoaded) + if (pl) { //this code will run very improbably (the time is between 4 and 5 am, in game is online a player, who has old mail //his in mailbox and he has already listed his mails ) delete m; diff --git a/src/game/Player.cpp b/src/game/Player.cpp index f2d482524..5ed43ea45 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -412,7 +412,6 @@ Player::Player (WorldSession *session): Unit(), m_achievementMgr(this), m_reputa rest_type=REST_TYPE_NO; ////////////////////Rest System///////////////////// - m_mailsLoaded = false; m_mailsUpdated = false; unReadMails = 0; m_nextMailDelivereTime = 0; @@ -14891,8 +14890,8 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) // apply original stats mods before spell loading or item equipment that call before equip _RemoveStatsMods() - //mails are loaded only when needed ;-) - when player in game click on mailbox. - //_LoadMail(); + // Mail + _LoadMail(); _LoadAuras(holder->GetResult(PLAYER_LOGIN_QUERY_LOADAURAS), time_diff); _LoadGlyphAuras(); @@ -15514,7 +15513,6 @@ void Player::_LoadMail() } while( result->NextRow() ); delete result; } - m_mailsLoaded = true; } void Player::LoadPet() @@ -16333,9 +16331,6 @@ void Player::_SaveInventory() void Player::_SaveMail() { - if (!m_mailsLoaded) - return; - for (PlayerMails::iterator itr = m_mail.begin(); itr != m_mail.end(); ++itr) { Mail *m = (*itr); diff --git a/src/game/Player.h b/src/game/Player.h index 7b3d09e3b..edeb2bd69 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1455,7 +1455,6 @@ class MANGOS_DLL_SPEC Player : public Unit static void Customize(uint64 guid, uint8 gender, uint8 skin, uint8 face, uint8 hairStyle, uint8 hairColor, uint8 facialHair); static void SavePositionInDB(uint32 mapid, float x,float y,float z,float o,uint32 zone,uint64 guid); - bool m_mailsLoaded; bool m_mailsUpdated; void SendPetTameFailure(PetTameFailureReason reason); @@ -1506,7 +1505,6 @@ class MANGOS_DLL_SPEC Player : public Unit void SendNewMail(); void UpdateNextMailTimeAndUnreads(); void AddNewMailDeliverTime(time_t deliver_time); - bool IsMailsLoaded() const { return m_mailsLoaded; } void RemoveMail(uint32 id);