aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/AchievementMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-03-24 14:39:29 +0100
committerfunjoker <funjoker109@gmail.com>2024-03-28 20:23:12 +0100
commit18b7199a47ee1ebc767c631f2c91c8e1f680d39c (patch)
tree8ca9a4621e5f0a8568faa8859b2718f694cf7c0e /src/server/game/Achievements/AchievementMgr.cpp
parent98cb0b4eaf7b66ae797dfb3c92c586adbc3ced6c (diff)
Core/Players: Slightly improve neutral player faction support
(cherry picked from commit 94b78ebc8b0eb09409d0db36bebfde85a1644fe8)
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 048c57c5c84..156d92e1a30 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -505,9 +505,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)