Fix achievement title check at startup.
--HG-- branch : trunk
This commit is contained in:
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user