23 case TypeID::TYPEID_UNIT:
24 m_messageType = MAIL_CREATURE;
25 m_senderId = sender->GetEntry();
27 case TypeID::TYPEID_GAMEOBJECT:
28 m_messageType = MAIL_GAMEOBJECT;
29 m_senderId = sender->GetEntry();
35 case TypeID::TYPEID_PLAYER:
36 m_messageType = MAIL_NORMAL;
37 m_senderId = sender->GetGUIDLow();
40 m_messageType = MAIL_NORMAL;
42 SF_LOG_ERROR(
"misc",
"MailSender::MailSender - Mail have unexpected sender typeid (%u)", uint8(sender->GetTypeId()));
94 item->SaveToDB(trans);
103 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
105 Item* item = mailItemIter->second;
128 if (!receiver && !rc_account)
135 bool needItemDelay =
false;
140 needItemDelay = sender_acc != rc_account;
143 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
145 Item* item = mailItemIter->second;
172 time_t deliver_time = time(NULL) + deliver_delay;
186 expire_delay = 3 *
DAY;
190 time_t expire_time = deliver_time + expire_delay;
211 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
213 Item* pItem = mailItemIter->second;
236 for (MailItemMap::const_iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
238 Item* item = mailItemIter->second;
255 for (MailItemMap::iterator mailItemIter =
m_items.begin(); mailItemIter !=
m_items.end(); ++mailItemIter)
256 pReceiver->
AddMItem(mailItemIter->second);
LootStore LootTemplates_Mail("mail_loot_template", "mail template id", false)
@ MAIL_CHECK_MASK_RETURNED
@ MAIL_STATIONERY_DEFAULT
@ MAIL_STATIONERY_AUCTION
uint64 MAKE_NEW_GUID(uint32 l, uint32 e, uint32 h)
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
virtual void SaveToDB(SQLTransaction &trans)
static Item * CreateItem(uint32 itemEntry, uint32 count, Player const *player=NULL)
std::string const & GetSubject() const
void deleteIncludedItems(SQLTransaction &trans, bool inDB=false)
MailDraft(uint16 mailTemplateId, bool need_items=true)
void SendReturnToSender(uint32 sender_acc, uint32 sender_guid, uint32 receiver_guid, SQLTransaction &trans)
void SendMailTo(SQLTransaction &trans, MailReceiver const &receiver, MailSender const &sender, MailCheckMask checked=MAIL_CHECK_MASK_NONE, uint32 deliver_delay=0)
bool m_mailTemplateItemsNeed
uint16 GetMailTemplateId() const
void prepareItems(Player *receiver, SQLTransaction &trans)
MailDraft & AddItem(Item *item)
std::string const & GetBody() const
Player * GetPlayer() const
MailReceiver(uint32 receiver_lowguid)
uint32 GetPlayerGUIDLow() const
uint32 m_receiver_lowguid
uint32 GetSenderId() const
MailSender(MailMessageType messageType, uint32 sender_guidlow_or_entry, MailStationery stationery=MAIL_STATIONERY_DEFAULT)
MailStationery m_stationery
MailMessageType m_messageType
MailMessageType GetMailMessageType() const
MailStationery GetStationery() const
static Player * FindPlayer(uint64)
uint32 GetGUIDLow() const
void AddNewMailDeliverTime(time_t deliver_time)
bool IsMailsLoaded() const
bool IsGameMaster() const
void setBool(const uint8 index, const bool value)
void setString(const uint8 index, const std::string &value)
void setUInt16(const uint8 index, const uint16 value)
void setUInt64(const uint8 index, const uint64 value)
void setInt8(const uint8 index, const int8 value)
void setUInt32(const uint8 index, const uint32 value)
void setUInt8(const uint8 index, const uint8 value)
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ CONFIG_MAIL_DELIVERY_DELAY
uint32 GetMaxSlotInLootFor(Player *player) const
bool FillLoot(uint32 lootId, LootStore const &store, Player *lootOwner, bool personal, bool noEmptyError=false, uint16 lootMode=LOOT_MODE_DEFAULT)
LootItem * LootItemInSlot(uint32 lootslot, Player *player, QuestItem **qitem=NULL, QuestItem **ffaitem=NULL, QuestItem **conditem=NULL)
void AddItem(uint32 itemGuidLow, uint32 item_template)