mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 16:37:00 +00:00
Removed wrong assumed flag, use achievement points to differ between achievements and counters
This commit is contained in:
parent
1167c55bd9
commit
5364fc2847
2 changed files with 8 additions and 5 deletions
|
|
@ -116,6 +116,11 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i)
|
for(AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList.begin(); i!=achievementCriteriaList.end(); ++i)
|
||||||
{
|
{
|
||||||
AchievementCriteriaEntry const *achievementCriteria = (*i);
|
AchievementCriteriaEntry const *achievementCriteria = (*i);
|
||||||
|
|
||||||
|
// don't update already completed criteria
|
||||||
|
if(IsCompletedCriteria(achievementCriteria))
|
||||||
|
continue;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL:
|
||||||
|
|
@ -138,7 +143,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
||||||
if(!achievement)
|
if(!achievement)
|
||||||
return false;
|
return false;
|
||||||
// counter can never complete
|
// counter can never complete
|
||||||
if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER)
|
if(achievement->points == 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
switch(achievementCriteria->requiredType)
|
switch(achievementCriteria->requiredType)
|
||||||
|
|
@ -158,7 +163,7 @@ void AchievementMgr::CompletedCriteria(AchievementCriteriaEntry const* criteria)
|
||||||
if(!achievement)
|
if(!achievement)
|
||||||
return;
|
return;
|
||||||
// counter can never complete
|
// counter can never complete
|
||||||
if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER)
|
if(achievement->points ==0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(criteria->completionFlag & ACHIEVEMENT_CRITERIA_COMPLETE_FLAG_ALL || IsCompletedAchievement(achievement))
|
if(criteria->completionFlag & ACHIEVEMENT_CRITERIA_COMPLETE_FLAG_ALL || IsCompletedAchievement(achievement))
|
||||||
|
|
@ -196,7 +201,7 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry,
|
||||||
void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
||||||
{
|
{
|
||||||
sLog.outString("AchievementMgr::CompletedAchievement(%u)", achievement->ID);
|
sLog.outString("AchievementMgr::CompletedAchievement(%u)", achievement->ID);
|
||||||
if(achievement->flags & ACHIEVEMENT_FLAG_COUNTER || m_completedAchievements.find(achievement->ID)!=m_completedAchievements.end())
|
if(achievement->points==0 || m_completedAchievements.find(achievement->ID)!=m_completedAchievements.end())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SendAchievementEarned(achievement->ID);
|
SendAchievementEarned(achievement->ID);
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,6 @@ enum AchievementFactionFlags
|
||||||
|
|
||||||
enum AchievementFlags
|
enum AchievementFlags
|
||||||
{
|
{
|
||||||
// This achievement is a counter and can never be "fulfilled"
|
|
||||||
ACHIEVEMENT_FLAG_COUNTER = 0x00000001,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AchievementCriteriaCompletionFlags
|
enum AchievementCriteriaCompletionFlags
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue