[9707] Fixed typo added by Vladimir to patch in [9704].

Signed-off-by: VladimirMangos <vladimir@getmangos.com>

Also add check to prevent have NONE gender with some other for same entry
in `achievement_reward` and `locales_achievement_reward`.
This commit is contained in:
crackm 2010-04-09 16:00:05 +04:00 committed by VladimirMangos
parent f0af98568e
commit 77c930249d
3 changed files with 37 additions and 3 deletions

View file

@ -2169,6 +2169,23 @@ void AchievementGlobalMgr::LoadRewards()
if (reward.gender >= MAX_GENDER)
sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has wrong gender %u.", entry, reward.gender);
// GENDER_NONE must be single (so or already in and none must be attempt added new data or just adding and none in)
// other duplicate cases prevented by DB primary key
bool dup = false;
AchievementRewards::const_iterator iter_low = m_achievementRewards.lower_bound(entry);
AchievementRewards::const_iterator iter_up = m_achievementRewards.upper_bound(entry);
for (AchievementRewards::const_iterator iter = iter_low; iter != iter_up; ++iter)
{
if (iter->second.gender == GENDER_NONE || reward.gender == GENDER_NONE)
{
dup = true;
sLog.outErrorDb( "Table `achievement_reward` must have single GENDER_NONE (%u) case (Entry: %u), ignore duplicate case", GENDER_NONE, entry);
break;
}
}
if (dup)
continue;
if ((reward.titleId[0]==0)!=(reward.titleId[1]==0))
sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has title (A: %u H: %u) only for one from teams.", entry, reward.titleId[0], reward.titleId[1]);
@ -2279,6 +2296,23 @@ void AchievementGlobalMgr::LoadRewardLocales()
if (data.gender >= MAX_GENDER)
sLog.outErrorDb( "Table `locales_achievement_reward` (Entry: %u) has wrong gender %u.", entry, data.gender);
// GENDER_NONE must be single (so or already in and none must be attempt added new data or just adding and none in)
// other duplicate cases prevented by DB primary key
bool dup = false;
AchievementRewardLocales::const_iterator iter_low = m_achievementRewardLocales.lower_bound(entry);
AchievementRewardLocales::const_iterator iter_up = m_achievementRewardLocales.upper_bound(entry);
for (AchievementRewardLocales::const_iterator iter = iter_low; iter != iter_up; ++iter)
{
if (iter->second.gender == GENDER_NONE || data.gender == GENDER_NONE)
{
dup = true;
sLog.outErrorDb( "Table `locales_achievement_reward` must have single GENDER_NONE (%u) case (Entry: %u), ignore duplicate case", GENDER_NONE, entry);
break;
}
}
if (dup)
continue;
for(int i = 1; i < MAX_LOCALE; ++i)
{
std::string str = fields[2+2*(i-1)].GetCppString();

View file

@ -290,7 +290,7 @@ class AchievementGlobalMgr
{
AchievementRewards::const_iterator iter_low = m_achievementRewards.lower_bound(achievement->ID);
AchievementRewards::const_iterator iter_up = m_achievementRewards.upper_bound(achievement->ID);
for (AchievementRewards::const_iterator iter = iter_low; iter != iter_low; ++iter)
for (AchievementRewards::const_iterator iter = iter_low; iter != iter_up; ++iter)
if(iter->second.gender == GENDER_NONE || uint8(iter->second.gender) == gender)
return &iter->second;
@ -301,7 +301,7 @@ class AchievementGlobalMgr
{
AchievementRewardLocales::const_iterator iter_low = m_achievementRewardLocales.lower_bound(achievement->ID);
AchievementRewardLocales::const_iterator iter_up = m_achievementRewardLocales.upper_bound(achievement->ID);
for (AchievementRewardLocales::const_iterator iter = iter_low; iter != iter_low; ++iter)
for (AchievementRewardLocales::const_iterator iter = iter_low; iter != iter_up; ++iter)
if(iter->second.gender == GENDER_NONE || uint8(iter->second.gender) == gender)
return &iter->second;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "9706"
#define REVISION_NR "9707"
#endif // __REVISION_NR_H__