diff options
author | Trazom62 <none@none> | 2010-03-11 23:25:04 +0100 |
---|---|---|
committer | Trazom62 <none@none> | 2010-03-11 23:25:04 +0100 |
commit | 8210a97e738af3ccf36fa2860f87e3b1cbe8013e (patch) | |
tree | 143b76ccd64d94b0f43aca097530980db197461f /src | |
parent | 856d41a7b549e447b08d262eed8d8601bb01cabb (diff) |
Fix achievement title check at startup.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/AchievementMgr.cpp | 15 | ||||
-rw-r--r-- | src/game/DBCEnums.h | 7 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index 89272192e7d..278166f68e0 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -701,8 +701,8 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui if (!achievement) continue; - if ((achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_HORDE && GetPlayer()->GetTeam() != HORDE) || - (achievement->factionFlag == ACHIEVEMENT_FACTION_FLAG_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE)) + if ((achievement->factionFlag == ACHIEVEMENT_FACTION_HORDE && GetPlayer()->GetTeam() != HORDE) || + (achievement->factionFlag == ACHIEVEMENT_FACTION_ALLIANCE && GetPlayer()->GetTeam() != ALLIANCE)) continue; // don't update already completed criteria @@ -2146,7 +2146,8 @@ void AchievementGlobalMgr::LoadRewards() Field *fields = result->Fetch(); 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); continue; @@ -2160,9 +2161,6 @@ void AchievementGlobalMgr::LoadRewards() reward.subject = fields[5].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 if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender) { @@ -2170,6 +2168,9 @@ void AchievementGlobalMgr::LoadRewards() 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]) { CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[0]); @@ -2185,7 +2186,7 @@ void AchievementGlobalMgr::LoadRewards() CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[1]); 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; } } diff --git a/src/game/DBCEnums.h b/src/game/DBCEnums.h index 73bf8a2bf9a..e6525f3df12 100644 --- a/src/game/DBCEnums.h +++ b/src/game/DBCEnums.h @@ -48,10 +48,11 @@ enum AreaTeams AREATEAM_HORDE = 4 }; -enum AchievementFactionFlags +enum AchievementFaction { - ACHIEVEMENT_FACTION_FLAG_HORDE = 0x00000000, - ACHIEVEMENT_FACTION_FLAG_ALLIANCE = 0x00000001, + ACHIEVEMENT_FACTION_HORDE = 0, + ACHIEVEMENT_FACTION_ALLIANCE = 1, + ACHIEVEMENT_FACTION_ANY = -1, }; enum AchievementFlags |