diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-03-24 14:39:29 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-03-24 17:19:10 +0100 |
commit | 94b78ebc8b0eb09409d0db36bebfde85a1644fe8 (patch) | |
tree | a948fed605007b2fb3c19c883b26da7eb0ef266d /src/server/game/Achievements/AchievementMgr.cpp | |
parent | aac5581bfce1955d5f483521bf77d3d97397d201 (diff) |
Core/Players: Slightly improve neutral player faction support
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) |