diff options
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); |