diff --git a/src/WeekendBonus.cpp b/src/WeekendBonus.cpp index a97e0c3..a03cce8 100644 --- a/src/WeekendBonus.cpp +++ b/src/WeekendBonus.cpp @@ -16,162 +16,162 @@ enum Day class WeekendBonusPlayer : public PlayerScript { - public: - WeekendBonusPlayer() : PlayerScript("WeekendBonusPlayer") {} +public: + WeekendBonusPlayer() : PlayerScript("WeekendBonusPlayer") {} - void OnLogin(Player* player) override - { - time_t t = time(NULL); + void OnLogin(Player* player) override + { + time_t t = time(NULL); - if (localtime(&t)->tm_wday == Day::FRIDAY || localtime(&t)->tm_wday == Day::SATURDAY || localtime(&t)->tm_wday == Day::SUNDAY) - ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, granting you bonuses!"); - } + if (localtime(&t)->tm_wday == Day::FRIDAY || localtime(&t)->tm_wday == Day::SATURDAY || localtime(&t)->tm_wday == Day::SUNDAY) + ChatHandler(player->GetSession()).SendSysMessage("The weekend bonus is active, granting you bonuses!"); + } }; class WeekendBonusWorld : WorldScript { - public: - WeekendBonusWorld() : WorldScript("WeekendBonusWorld") {} +public: + WeekendBonusWorld() : WorldScript("WeekendBonusWorld") {} - void OnAfterConfigLoad(bool reload) override + void OnAfterConfigLoad(bool reload) override + { + if (!reload) { - if (!reload) - { - rateExperienceKill = sWorld->getRate(RATE_XP_KILL); - rateExperienceBgKill[0] = sWorld->getRate(RATE_XP_BG_KILL_AV); - rateExperienceBgKill[1] = sWorld->getRate(RATE_XP_BG_KILL_WSG); - rateExperienceBgKill[2] = sWorld->getRate(RATE_XP_BG_KILL_AB); - rateExperienceBgKill[3] = sWorld->getRate(RATE_XP_BG_KILL_EOTS); - rateExperienceBgKill[4] = sWorld->getRate(RATE_XP_BG_KILL_SOTA); - rateExperienceBgKill[5] = sWorld->getRate(RATE_XP_BG_KILL_IC); - rateExperienceQuest = sWorld->getRate(RATE_XP_QUEST); - rateExperienceQuestDf = sWorld->getRate(RATE_XP_QUEST_DF); - rateExperienceExplore = sWorld->getRate(RATE_XP_EXPLORE); - rateExperiencePet = sWorld->getRate(RATE_XP_PET); - rateMoney = sWorld->getRate(RATE_DROP_MONEY); - rateProfessionsCrafting = sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING); - rateProfessionsGathering = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING); - rateReputation = sWorld->getRate(RATE_REPUTATION_GAIN); - rateProficienciesDefense = sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE); - rateProficienciesWeapons = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON); - } - - multiplierExperience = sConfigMgr->GetOption("WeekendBonus.Multiplier.Experience", 2.0f); - multiplierMoney = sConfigMgr->GetOption("WeekendBonus.Multiplier.Money", 2.0f); - multiplierProfessions = sConfigMgr->GetOption("WeekendBonus.Multiplier.Professions", 2); - multiplierReputation = sConfigMgr->GetOption("WeekendBonus.Multiplier.Reputation", 2.0f); - multiplierProficiencies = sConfigMgr->GetOption("WeekendBonus.Multiplier.Proficiencies", 2); - - if (reload) - { - if (localtime(&localTime)->tm_wday == Day::FRIDAY || localtime(&localTime)->tm_wday == Day::SATURDAY || localtime(&localTime)->tm_wday == Day::SUNDAY) - SetWorldRates(true); - else - SetWorldRates(false); - } + rateExperienceKill = sWorld->getRate(RATE_XP_KILL); + rateExperienceBgKill[0] = sWorld->getRate(RATE_XP_BG_KILL_AV); + rateExperienceBgKill[1] = sWorld->getRate(RATE_XP_BG_KILL_WSG); + rateExperienceBgKill[2] = sWorld->getRate(RATE_XP_BG_KILL_AB); + rateExperienceBgKill[3] = sWorld->getRate(RATE_XP_BG_KILL_EOTS); + rateExperienceBgKill[4] = sWorld->getRate(RATE_XP_BG_KILL_SOTA); + rateExperienceBgKill[5] = sWorld->getRate(RATE_XP_BG_KILL_IC); + rateExperienceQuest = sWorld->getRate(RATE_XP_QUEST); + rateExperienceQuestDf = sWorld->getRate(RATE_XP_QUEST_DF); + rateExperienceExplore = sWorld->getRate(RATE_XP_EXPLORE); + rateExperiencePet = sWorld->getRate(RATE_XP_PET); + rateMoney = sWorld->getRate(RATE_DROP_MONEY); + rateProfessionsCrafting = sWorld->getIntConfig(CONFIG_SKILL_GAIN_CRAFTING); + rateProfessionsGathering = sWorld->getIntConfig(CONFIG_SKILL_GAIN_GATHERING); + rateReputation = sWorld->getRate(RATE_REPUTATION_GAIN); + rateProficienciesDefense = sWorld->getIntConfig(CONFIG_SKILL_GAIN_DEFENSE); + rateProficienciesWeapons = sWorld->getIntConfig(CONFIG_SKILL_GAIN_WEAPON); } - void OnStartup() override - { - triggered = false; - localTime = time(NULL); + multiplierExperience = sConfigMgr->GetOption("WeekendBonus.Multiplier.Experience", 2.0f); + multiplierMoney = sConfigMgr->GetOption("WeekendBonus.Multiplier.Money", 2.0f); + multiplierProfessions = sConfigMgr->GetOption("WeekendBonus.Multiplier.Professions", 2); + multiplierReputation = sConfigMgr->GetOption("WeekendBonus.Multiplier.Reputation", 2.0f); + multiplierProficiencies = sConfigMgr->GetOption("WeekendBonus.Multiplier.Proficiencies", 2); + if (reload) + { if (localtime(&localTime)->tm_wday == Day::FRIDAY || localtime(&localTime)->tm_wday == Day::SATURDAY || localtime(&localTime)->tm_wday == Day::SUNDAY) SetWorldRates(true); - } - - void OnUpdate(uint32 /*diff*/) override - { - localTime = time(NULL); - - if (localtime(&localTime)->tm_wday == Day::FRIDAY && !triggered) - { - sWorld->SendServerMessage(SERVER_MSG_STRING, "The weekend bonus is now active, granting you bonuses!"); - SetWorldRates(true); - triggered = true; - } - else if (localtime(&localTime)->tm_wday == Day::MONDAY && triggered) - { - sWorld->SendServerMessage(SERVER_MSG_STRING, "The weekend bonus is no longer active."); - SetWorldRates(false); - triggered = false; - } - } - - private: - float rateExperienceKill; - float rateExperienceBgKill[6]; - float rateExperienceQuest; - float rateExperienceQuestDf; - float rateExperienceExplore; - float rateExperiencePet; - float rateMoney; - uint32 rateProfessionsCrafting; - uint32 rateProfessionsGathering; - float rateReputation; - uint32 rateProficienciesDefense; - uint32 rateProficienciesWeapons; - - float multiplierExperience; - float multiplierMoney; - uint32 multiplierProfessions; - float multiplierReputation; - uint32 multiplierProficiencies; - - bool triggered; - time_t localTime; - - void SetWorldRates(bool weekend) - { - if (weekend) - { - sWorld->setRate(RATE_XP_KILL, rateExperienceKill * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_AV, rateExperienceBgKill[0] * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_WSG, rateExperienceBgKill[1] * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_AB, rateExperienceBgKill[2] * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_EOTS, rateExperienceBgKill[3] * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_SOTA, rateExperienceBgKill[4] * multiplierExperience); - sWorld->setRate(RATE_XP_BG_KILL_IC, rateExperienceBgKill[5] * multiplierExperience); - sWorld->setRate(RATE_XP_QUEST, rateExperienceQuest * multiplierExperience); - sWorld->setRate(RATE_XP_QUEST_DF, rateExperienceQuestDf * multiplierExperience); - sWorld->setRate(RATE_XP_EXPLORE, rateExperienceExplore * multiplierExperience); - sWorld->setRate(RATE_XP_PET, rateExperiencePet * multiplierExperience); - - sWorld->setRate(RATE_DROP_MONEY, rateMoney * multiplierMoney); - - sWorld->setIntConfig(CONFIG_SKILL_GAIN_CRAFTING, rateProfessionsCrafting * multiplierProfessions); - sWorld->setIntConfig(CONFIG_SKILL_GAIN_GATHERING, rateProfessionsGathering * multiplierProfessions); - - sWorld->setRate(RATE_REPUTATION_GAIN, rateReputation * multiplierReputation); - - sWorld->setIntConfig(CONFIG_SKILL_GAIN_DEFENSE, rateProficienciesDefense * multiplierProficiencies); - sWorld->setIntConfig(CONFIG_SKILL_GAIN_WEAPON, rateProficienciesWeapons * multiplierProficiencies); - } else - { - sWorld->setRate(RATE_XP_KILL, rateExperienceKill); - sWorld->setRate(RATE_XP_BG_KILL_AV, rateExperienceBgKill[0]); - sWorld->setRate(RATE_XP_BG_KILL_WSG, rateExperienceBgKill[1]); - sWorld->setRate(RATE_XP_BG_KILL_AB, rateExperienceBgKill[2]); - sWorld->setRate(RATE_XP_BG_KILL_EOTS, rateExperienceBgKill[3]); - sWorld->setRate(RATE_XP_BG_KILL_SOTA, rateExperienceBgKill[4]); - sWorld->setRate(RATE_XP_BG_KILL_IC, rateExperienceBgKill[5]); - sWorld->setRate(RATE_XP_QUEST, rateExperienceQuest); - sWorld->setRate(RATE_XP_QUEST_DF, rateExperienceQuestDf); - sWorld->setRate(RATE_XP_EXPLORE, rateExperienceExplore); - sWorld->setRate(RATE_XP_PET, rateExperiencePet); - - sWorld->setRate(RATE_DROP_MONEY, rateMoney); - - sWorld->setIntConfig(CONFIG_SKILL_GAIN_CRAFTING, rateProfessionsCrafting); - sWorld->setIntConfig(CONFIG_SKILL_GAIN_GATHERING, rateProfessionsGathering); - - sWorld->setRate(RATE_REPUTATION_GAIN, rateReputation); - - sWorld->setIntConfig(CONFIG_SKILL_GAIN_DEFENSE, rateProficienciesDefense); - sWorld->setIntConfig(CONFIG_SKILL_GAIN_WEAPON, rateProficienciesWeapons); - } + SetWorldRates(false); } + } + + void OnStartup() override + { + triggered = false; + localTime = time(NULL); + + if (localtime(&localTime)->tm_wday == Day::FRIDAY || localtime(&localTime)->tm_wday == Day::SATURDAY || localtime(&localTime)->tm_wday == Day::SUNDAY) + SetWorldRates(true); + } + + void OnUpdate(uint32 /*diff*/) override + { + localTime = time(NULL); + + if (localtime(&localTime)->tm_wday == Day::FRIDAY && !triggered) + { + sWorld->SendServerMessage(SERVER_MSG_STRING, "The weekend bonus is now active, granting you bonuses!"); + SetWorldRates(true); + triggered = true; + } + else if (localtime(&localTime)->tm_wday == Day::MONDAY && triggered) + { + sWorld->SendServerMessage(SERVER_MSG_STRING, "The weekend bonus is no longer active."); + SetWorldRates(false); + triggered = false; + } + } + +private: + float rateExperienceKill; + float rateExperienceBgKill[6]; + float rateExperienceQuest; + float rateExperienceQuestDf; + float rateExperienceExplore; + float rateExperiencePet; + float rateMoney; + uint32 rateProfessionsCrafting; + uint32 rateProfessionsGathering; + float rateReputation; + uint32 rateProficienciesDefense; + uint32 rateProficienciesWeapons; + + float multiplierExperience; + float multiplierMoney; + uint32 multiplierProfessions; + float multiplierReputation; + uint32 multiplierProficiencies; + + bool triggered; + time_t localTime; + + void SetWorldRates(bool weekend) + { + if (weekend) + { + sWorld->setRate(RATE_XP_KILL, rateExperienceKill * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_AV, rateExperienceBgKill[0] * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_WSG, rateExperienceBgKill[1] * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_AB, rateExperienceBgKill[2] * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_EOTS, rateExperienceBgKill[3] * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_SOTA, rateExperienceBgKill[4] * multiplierExperience); + sWorld->setRate(RATE_XP_BG_KILL_IC, rateExperienceBgKill[5] * multiplierExperience); + sWorld->setRate(RATE_XP_QUEST, rateExperienceQuest * multiplierExperience); + sWorld->setRate(RATE_XP_QUEST_DF, rateExperienceQuestDf * multiplierExperience); + sWorld->setRate(RATE_XP_EXPLORE, rateExperienceExplore * multiplierExperience); + sWorld->setRate(RATE_XP_PET, rateExperiencePet * multiplierExperience); + + sWorld->setRate(RATE_DROP_MONEY, rateMoney * multiplierMoney); + + sWorld->setIntConfig(CONFIG_SKILL_GAIN_CRAFTING, rateProfessionsCrafting * multiplierProfessions); + sWorld->setIntConfig(CONFIG_SKILL_GAIN_GATHERING, rateProfessionsGathering * multiplierProfessions); + + sWorld->setRate(RATE_REPUTATION_GAIN, rateReputation * multiplierReputation); + + sWorld->setIntConfig(CONFIG_SKILL_GAIN_DEFENSE, rateProficienciesDefense * multiplierProficiencies); + sWorld->setIntConfig(CONFIG_SKILL_GAIN_WEAPON, rateProficienciesWeapons * multiplierProficiencies); + } + else + { + sWorld->setRate(RATE_XP_KILL, rateExperienceKill); + sWorld->setRate(RATE_XP_BG_KILL_AV, rateExperienceBgKill[0]); + sWorld->setRate(RATE_XP_BG_KILL_WSG, rateExperienceBgKill[1]); + sWorld->setRate(RATE_XP_BG_KILL_AB, rateExperienceBgKill[2]); + sWorld->setRate(RATE_XP_BG_KILL_EOTS, rateExperienceBgKill[3]); + sWorld->setRate(RATE_XP_BG_KILL_SOTA, rateExperienceBgKill[4]); + sWorld->setRate(RATE_XP_BG_KILL_IC, rateExperienceBgKill[5]); + sWorld->setRate(RATE_XP_QUEST, rateExperienceQuest); + sWorld->setRate(RATE_XP_QUEST_DF, rateExperienceQuestDf); + sWorld->setRate(RATE_XP_EXPLORE, rateExperienceExplore); + sWorld->setRate(RATE_XP_PET, rateExperiencePet); + + sWorld->setRate(RATE_DROP_MONEY, rateMoney); + + sWorld->setIntConfig(CONFIG_SKILL_GAIN_CRAFTING, rateProfessionsCrafting); + sWorld->setIntConfig(CONFIG_SKILL_GAIN_GATHERING, rateProfessionsGathering); + + sWorld->setRate(RATE_REPUTATION_GAIN, rateReputation); + + sWorld->setIntConfig(CONFIG_SKILL_GAIN_DEFENSE, rateProficienciesDefense); + sWorld->setIntConfig(CONFIG_SKILL_GAIN_WEAPON, rateProficienciesWeapons); + } + } }; void AddWeekendBonusScripts()