Fix achievement title check at startup.

--HG--
branch : trunk
This commit is contained in:
Trazom62
2010-03-11 23:25:04 +01:00
parent 856d41a7b5
commit 8210a97e73
2 changed files with 12 additions and 10 deletions
+8 -7
View File
@@ -701,8 +701,8 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
if (!achievement) if (!achievement)
continue; continue;
if ((achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_HORDE && GetPlayer()->GetTeam() != HORDE) || if ((achievement->factionFlag == ACHIEVEMENT_FACTION_HORDE && GetPlayer()->GetTeam() != HORDE) ||
(achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE)) (achievement->factionFlag == ACHIEVEMENT_FACTION_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE))
continue; continue;
// don't update already completed criteria // don't update already completed criteria
@@ -2146,7 +2146,8 @@ void AchievementGlobalMgr::LoadRewards()
Field *fields = result->Fetch(); Field *fields = result->Fetch();
uint32 entry = fields[0].GetUInt32(); uint32 entry = fields[0].GetUInt32();
if (!sAchievementStore.LookupEntry(entry)) const AchievementEntry* pAchievement = sAchievementStore.LookupEntry(entry);
if (!pAchievement)
{ {
sLog.outErrorDb( "Table `achievement_reward` has wrong achievement (Entry: %u), ignore", entry); sLog.outErrorDb( "Table `achievement_reward` has wrong achievement (Entry: %u), ignore", entry);
continue; continue;
@@ -2160,9 +2161,6 @@ void AchievementGlobalMgr::LoadRewards()
reward.subject = fields[5].GetCppString(); reward.subject = fields[5].GetCppString();
reward.text = fields[6].GetCppString(); reward.text = fields[6].GetCppString();
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]);
// must be title or mail at least // must be title or mail at least
if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender) if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender)
{ {
@@ -2170,6 +2168,9 @@ void AchievementGlobalMgr::LoadRewards()
continue; continue;
} }
if (pAchievement->factionFlag == ACHIEVEMENT_FACTION_ANY && ((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]);
if (reward.titleId[0]) if (reward.titleId[0])
{ {
CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[0]); CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[0]);
@@ -2185,7 +2186,7 @@ void AchievementGlobalMgr::LoadRewards()
CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[1]); CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[1]);
if (!titleEntry) if (!titleEntry)
{ {
sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_A`, set to 0", entry, reward.titleId[1]); sLog.outErrorDb( "Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_H`, set to 0", entry, reward.titleId[1]);
reward.titleId[1] = 0; reward.titleId[1] = 0;
} }
} }
+4 -3
View File
@@ -48,10 +48,11 @@ enum AreaTeams
AREATEAM_HORDE = 4 AREATEAM_HORDE = 4
}; };
enum AchievementFactionFlags enum AchievementFaction
{ {
ACHIEVEMENT_FACTION_FLAG_HORDE = 0x00000000, ACHIEVEMENT_FACTION_HORDE = 0,
ACHIEVEMENT_FACTION_FLAG_ALLIANCE = 0x00000001, ACHIEVEMENT_FACTION_ALLIANCE = 1,
ACHIEVEMENT_FACTION_ANY = -1,
}; };
enum AchievementFlags enum AchievementFlags