mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-29 13:22:48 +01:00
Core/Achievements: Achievement title rewards will be readded when loading achievements (fixes cases like player completing achievement X and not getting reward because it was misssing from database at that time)
This commit is contained in:
@@ -574,17 +574,25 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
|
||||
do
|
||||
{
|
||||
Field* fields = achievementResult->Fetch();
|
||||
uint32 achievement_id = fields[0].GetUInt16();
|
||||
uint32 achievementid = fields[0].GetUInt16();
|
||||
|
||||
// don't must happen: cleanup at server startup in sAchievementMgr->LoadCompletedAchievements()
|
||||
if (!sAchievementStore.LookupEntry(achievement_id))
|
||||
AchievementEntry const* achievement = sAchievementStore.LookupEntry(achievementid);
|
||||
if (!achievement)
|
||||
continue;
|
||||
|
||||
CompletedAchievementData& ca = m_completedAchievements[achievement_id];
|
||||
CompletedAchievementData& ca = m_completedAchievements[achievementid];
|
||||
ca.date = time_t(fields[1].GetUInt32());
|
||||
ca.changed = false;
|
||||
}
|
||||
while (achievementResult->NextRow());
|
||||
|
||||
// title achievement rewards are retroactive
|
||||
if (AchievementReward const* reward = sAchievementMgr->GetAchievementReward(achievement))
|
||||
if (uint32 titleId = reward->titleId[GetPlayer()->GetTeam() == ALLIANCE ? 0 : 1])
|
||||
if (CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(titleId))
|
||||
if (!GetPlayer()->HasTitle(titleEntry))
|
||||
GetPlayer()->SetTitle(titleEntry);
|
||||
|
||||
} while (achievementResult->NextRow());
|
||||
}
|
||||
|
||||
if (criteriaResult)
|
||||
@@ -612,8 +620,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
|
||||
progress.counter = counter;
|
||||
progress.date = date;
|
||||
progress.changed = false;
|
||||
}
|
||||
while (criteriaResult->NextRow());
|
||||
} while (criteriaResult->NextRow());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user