aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrazom62 <none@none>2010-03-11 23:25:04 +0100
committerTrazom62 <none@none>2010-03-11 23:25:04 +0100
commit8210a97e738af3ccf36fa2860f87e3b1cbe8013e (patch)
tree143b76ccd64d94b0f43aca097530980db197461f /src
parent856d41a7b549e447b08d262eed8d8601bb01cabb (diff)
Fix achievement title check at startup.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/AchievementMgr.cpp15
-rw-r--r--src/game/DBCEnums.h7
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