aboutsummaryrefslogtreecommitdiff
path: root/src/game/Mail.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Mail.cpp')
-rw-r--r--src/game/Mail.cpp50
1 files changed, 26 insertions, 24 deletions
diff --git a/src/game/Mail.cpp b/src/game/Mail.cpp
index 33ff65e7fe0..64ff1c8e0cb 100644
--- a/src/game/Mail.cpp
+++ b/src/game/Mail.cpp
@@ -772,38 +772,40 @@ void WorldSession::HandleQueryNextMailTime(WorldPacket & /*recv_data*/ )
{
data << (uint32) 0; // float
data << (uint32) 0; // count
+
uint32 count = 0;
+ time_t now = time(NULL);
for(PlayerMails::iterator itr = _player->GetmailBegin(); itr != _player->GetmailEnd(); ++itr)
{
Mail *m = (*itr);
- // not checked yet, already must be delivered
- if((m->checked & MAIL_CHECK_MASK_READ)==0 && (m->deliver_time <= time(NULL)))
- {
- ++count;
+ // must be not checked yet
+ if(m->checked & MAIL_CHECK_MASK_RED)
+ continue;
- if(count > 2)
- {
- count = 2;
- break;
- }
+ // and already delivered
+ if(now < m->deliver_time)
+ continue;
- data << (uint64) m->sender; // sender guid
+ data << (uint64) m->sender; // sender guid
- switch(m->messageType)
- {
- case MAIL_AUCTION:
- data << (uint32) 2;
- data << (uint32) 2;
- data << (uint32) m->stationery;
- break;
- default:
- data << (uint32) 0;
- data << (uint32) 0;
- data << (uint32) m->stationery;
- break;
- }
- data << (uint32) 0xC6000000; // float unk, time or something
+ switch(m->messageType)
+ {
+ case MAIL_AUCTION:
+ data << (uint32) 2;
+ data << (uint32) 2;
+ data << (uint32) m->stationery;
+ break;
+ default:
+ data << (uint32) 0;
+ data << (uint32) 0;
+ data << (uint32) m->stationery;
+ break;
}
+ data << (uint32) 0xC6000000; // float unk, time or something
+
+ ++count;
+ if(count == 2) // do not display more than 2 mails
+ break;
}
data.put<uint32>(4, count);
}