From 50287c05f0e3ac4d8f006543eb916d53efa15f5f Mon Sep 17 00:00:00 2001 From: AsunaFrostwyrm Date: Fri, 10 Apr 2020 22:31:39 +0200 Subject: [PATCH] fix(CORE/locale): achievement_reward_locale should now work (#2811) Closes #2810 --- .../game/Achievements/AchievementMgr.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index a331c6185..7277dec23 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2219,8 +2219,23 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement) MailDraft draft(reward->mailTemplate); if (!reward->mailTemplate) - draft = MailDraft(reward->subject, reward->text); - + { + std::string subject = reward->subject; + std::string text = reward->text; + + LocaleConstant localeConstant = GetPlayer()->GetSession()->GetSessionDbLocaleIndex(); + if (localeConstant != LOCALE_enUS) + { + if(AchievementRewardLocale const* loc = sAchievementMgr->GetAchievementRewardLocale(achievement)) + { + ObjectMgr::GetLocaleString(loc->Subject, localeConstant, subject); + ObjectMgr::GetLocaleString(loc->Text, localeConstant, text); + } + } + + draft = MailDraft(subject, text); + } + SQLTransaction trans = CharacterDatabase.BeginTransaction(); Item* item = reward->itemId ? Item::CreateItem(reward->itemId, 1, GetPlayer()) : NULL;