diff options
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 17 |
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) |