Achievements/Guilds: Fix guild achievement tracking

- This fix a typo on commit TrinityCore@7ec22c5
- This fix update of criteria progress on login

Thanks to @DDuarte for initial commit and help with pull request
Thanks to @Kiritoo for send me sniffs
This commit is contained in:
Dekadence
2014-09-27 14:28:10 +02:00
parent b48ba56efd
commit 5ac63a43fb
5 changed files with 118 additions and 8 deletions

View File

@@ -1562,10 +1562,29 @@ void Guild::SendGuildRankInfo(WorldSession* session) const
TC_LOG_DEBUG("guild", "SMSG_GUILD_RANK [%s]", session->GetPlayerInfo().c_str());
}
void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32> const& criteriaIds)
void Guild::HandleSetAchievementTracking(WorldSession* session, std::set<uint32> const& achievementIds)
{
if (Member* member = GetMember(session->GetPlayer()->GetGUID()))
Player* player = session->GetPlayer();
if (Member* member = GetMember(player->GetGUID()))
{
std::set<uint32> criteriaIds;
for (std::set<uint32>::iterator achievementId = achievementIds.begin(); achievementId != achievementIds.end(); ++achievementId)
{
if (AchievementCriteriaEntryList const* cList = sAchievementMgr->GetAchievementCriteriaByAchievement(*achievementId))
{
for (AchievementCriteriaEntryList::const_iterator itr = cList->begin(); itr != cList->end(); ++itr)
{
AchievementCriteriaEntry const* criteria = *itr;
criteriaIds.insert(criteria->ID);
}
}
}
member->SetTrackedCriteriaIds(criteriaIds);
m_achievementMgr.SendAllTrackedCriterias(player, member->GetTrackedCriteriaIds());
}
}
void Guild::HandleSetMOTD(WorldSession* session, std::string const& motd)