diff --git a/src/WeekendBonus.cpp b/src/WeekendBonus.cpp index 921cc72..84cad8b 100644 --- a/src/WeekendBonus.cpp +++ b/src/WeekendBonus.cpp @@ -3,6 +3,9 @@ #include "Player.h" #include "ScriptMgr.h" +uint32 multiplierExperience; +uint32 multiplierReputation; + class WeekendBonus : public PlayerScript { public: @@ -13,7 +16,8 @@ class WeekendBonus : public PlayerScript time_t t = time(NULL); if (localtime(&t)->tm_wday == 5 /*Friday*/ || localtime(&t)->tm_wday == 6 /*Saturday*/ || localtime(&t)->tm_wday == 0 /*Sunday*/) - amount *= sConfigMgr->GetIntDefault("Multiplier.Experience", 1); + if (multiplierExperience > 1) + amount *= multiplierExperience; } void OnReputationChange(Player* player, uint32 /*factionId*/, int32& standing, bool /*incremental*/) override @@ -21,7 +25,8 @@ class WeekendBonus : public PlayerScript time_t t = time(NULL); if (localtime(&t)->tm_wday == 5 /*Friday*/ || localtime(&t)->tm_wday == 6 /*Saturday*/ || localtime(&t)->tm_wday == 0 /*Sunday*/) - standing *= sConfigMgr->GetIntDefault("Multiplier.Reputation", 1); + if (multiplierReputation > 1) + standing *= multiplierReputation; } void OnLogin(Player* player) override @@ -29,11 +34,37 @@ class WeekendBonus : public PlayerScript time_t t = time(NULL); if (localtime(&t)->tm_wday == 5 /*Friday*/ || localtime(&t)->tm_wday == 6 /*Saturday*/ || localtime(&t)->tm_wday == 0 /*Sunday*/) - ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, increasing the experience and reputation received!"); + { + if (multiplierExperience > 1 && multiplierReputation > 1) + { + ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, increasing the experience and reputation received!"); + } + else if (multiplierExperience > 1) + { + ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, increasing the experience received!"); + } + else if (multiplierReputation > 1) + { + ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, increasing the reputation received!"); + } + } + } +}; + +class WeekendBonusConfig : WorldScript +{ + public: + WeekendBonusConfig() : WorldScript("WeekendBonusConfig") {} + + void OnAfterConfigLoad(bool /*reload*/) override + { + multiplierExperience = sConfigMgr->GetIntDefault("Multiplier.Experience", 1); + multiplierReputation = sConfigMgr->GetIntDefault("Multiplier.reputation", 1); } }; void AddWeekendBonusScripts() { new WeekendBonus(); + new WeekendBonusConfig(); }