feat(Core/Hook): A few new hooks (#2671)

This commit is contained in:
Stoabrogga
2020-02-27 22:45:38 +01:00
committed by GitHub
parent 0749a861aa
commit 9adba482c2
6 changed files with 167 additions and 39 deletions

View File

@@ -15,6 +15,7 @@
#include "Item.h"
#include "AuctionHouseMgr.h"
#include "CalendarMgr.h"
#include "ScriptMgr.h"
MailSender::MailSender(Object* sender, MailStationery stationery) : m_stationery(stationery)
{
@@ -165,8 +166,16 @@ void MailDraft::SendReturnToSender(uint32 /*sender_acc*/, uint32 sender_guid, u
SendMailTo(trans, MailReceiver(receiver, receiver_guid), MailSender(MAIL_NORMAL, sender_guid), MAIL_CHECK_MASK_RETURNED, 0);
}
void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay, uint32 custom_expiration)
void MailDraft::SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked, uint32 deliver_delay, uint32 custom_expiration, bool deleteMailItemsFromDB, bool sendMail)
{
sScriptMgr->OnBeforeMailDraftSendMailTo(this, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail);
if (deleteMailItemsFromDB) // can be changed in the hook
deleteIncludedItems(trans, true);
if (!sendMail) // can be changed in the hook
return;
Player* pReceiver = receiver.GetPlayer(); // can be NULL
Player* pSender = ObjectAccessor::FindPlayerInOrOutOfWorld(MAKE_NEW_GUID(sender.GetSenderId(), 0, HIGHGUID_PLAYER));

View File

@@ -126,7 +126,7 @@ class MailDraft
public: // finishers
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, uint32 custom_expiration = 0);
void SendMailTo(SQLTransaction& trans, MailReceiver const& receiver, MailSender const& sender, MailCheckMask checked = MAIL_CHECK_MASK_NONE, uint32 deliver_delay = 0, uint32 custom_expiration = 0, bool deleteMailItemsFromDB = false, bool sendMail = true);
private:
void deleteIncludedItems(SQLTransaction& trans, bool inDB = false);