aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/characters/2011_09_28_00_characters_characters.sql9
-rw-r--r--sql/updates/world/2011_09_28_00_world_achievement_reward.sql2
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp6
3 files changed, 16 insertions, 1 deletions
diff --git a/sql/updates/characters/2011_09_28_00_characters_characters.sql b/sql/updates/characters/2011_09_28_00_characters_characters.sql
new file mode 100644
index 00000000000..800afc60622
--- /dev/null
+++ b/sql/updates/characters/2011_09_28_00_characters_characters.sql
@@ -0,0 +1,9 @@
+-- Replaces MATRON with PATRON title on MALE char.
+UPDATE characters SET knownTitles = CONCAT(
+SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 1), ' ', -1), ' ',
+SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 2), ' ', -1), ' ',
+SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 3), ' ', -1), ' ',
+(SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 4), ' ', -1) | 512) &~256, ' ',
+SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 5), ' ', -1), ' ',
+SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 6), ' ', -1))
+WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(knownTitles, ' ', 4), ' ', -1) & 256 AND gender = 0;
diff --git a/sql/updates/world/2011_09_28_00_world_achievement_reward.sql b/sql/updates/world/2011_09_28_00_world_achievement_reward.sql
new file mode 100644
index 00000000000..da170d86672
--- /dev/null
+++ b/sql/updates/world/2011_09_28_00_world_achievement_reward.sql
@@ -0,0 +1,2 @@
+-- Set `title_A` to male variant (Patron)
+UPDATE `achievement_reward` SET `title_A`=138 WHERE `entry`=1793;
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 48b7361f9a5..b16c2223d25 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -2039,7 +2039,11 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
return;
// titles
- if (uint32 titleId = reward->titleId[GetPlayer()->GetTeam() == ALLIANCE ? 0 : 1])
+ //! Currently there's only one achievement that deals with gender-specific titles.
+ //! 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 ? GetPlayer()->getGender() : (GetPlayer()->GetTeam() == ALLIANCE ? 0 : 1)])
if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(titleId))
GetPlayer()->SetTitle(titleEntry);