diff --git a/src/server/game/Scripting/ScriptDefines/MailScript.cpp b/src/server/game/Scripting/ScriptDefines/MailScript.cpp index ac1ca35dc..0f867fb08 100644 --- a/src/server/game/Scripting/ScriptDefines/MailScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/MailScript.cpp @@ -21,16 +21,18 @@ void ScriptMgr::OnBeforeMailDraftSendMailTo(MailDraft* mailDraft, MailReceiver const& receiver, MailSender const& sender, MailCheckMask& checked, uint32& deliver_delay, uint32& custom_expiration, bool& deleteMailItemsFromDB, bool& sendMail) { - ExecuteScript([&](MailScript* script) - { - script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail);\ - }); + CALL_ENABLED_HOOKS(MailScript, MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO, script->OnBeforeMailDraftSendMailTo(mailDraft, receiver, sender, checked, deliver_delay, custom_expiration, deleteMailItemsFromDB, sendMail)); } -MailScript::MailScript(const char* name) - : ScriptObject(name) +MailScript::MailScript(const char* name, std::vector enabledHooks) + : ScriptObject(name, MAILHOOK_END) { - ScriptRegistry::AddScript(this); + // If empty - enable all available hooks. + if (enabledHooks.empty()) + for (uint16 i = 0; i < MAILHOOK_END; ++i) + enabledHooks.emplace_back(i); + + ScriptRegistry::AddScript(this, std::move(enabledHooks)); } template class AC_GAME_API ScriptRegistry; diff --git a/src/server/game/Scripting/ScriptDefines/MailScript.h b/src/server/game/Scripting/ScriptDefines/MailScript.h index bd3647e42..4591168a5 100644 --- a/src/server/game/Scripting/ScriptDefines/MailScript.h +++ b/src/server/game/Scripting/ScriptDefines/MailScript.h @@ -19,11 +19,18 @@ #define SCRIPT_OBJECT_MAIL_SCRIPT_H_ #include "ScriptObject.h" +#include + +enum MailHook +{ + MAILHOOK_ON_BEFORE_MAIL_DRAFT_SEND_MAIL_TO, + MAILHOOK_END +}; class MailScript : public ScriptObject { protected: - MailScript(const char* name); + MailScript(const char* name, std::vector enabledHooks = std::vector()); public: // Called before mail is sent