aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/AchievementMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 64dd27d18e0..10a6a4d9693 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -512,9 +512,20 @@ void PlayerAchievementMgr::CompletedAchievement(AchievementEntry const* achievem
//! Since no common attributes were found, (not even in titleRewardFlags field)
//! we explicitly check by ID. Maybe in the future we could move the achievement_reward
//! condition fields to the condition system.
- if (uint32 titleId = reward->TitleId[achievement->ID == 1793 ? _owner->GetNativeGender() : (_owner->GetTeam() == ALLIANCE ? 0 : 1)])
- if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(titleId))
- _owner->SetTitle(titleEntry);
+ int32 titleId = [&]
+ {
+ if (achievement->ID == 1793)
+ return reward->TitleId[_owner->GetNativeGender()];
+ switch (_owner->GetTeam())
+ {
+ case ALLIANCE: return reward->TitleId[0];
+ case HORDE: return reward->TitleId[1];
+ default: break;
+ }
+ return 0u;
+ }();
+ if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(titleId))
+ _owner->SetTitle(titleEntry);
// mail
if (reward->SenderCreatureId)