mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[10347] Fixed wrong ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION (46) check.
In result wrong check characters complete exalted reputation achievements at create or any reputation change event with negative reputation. Fix prevent new cases but not do anything with already wrongly recieved ahcievements. Also: * Avoid use PROGRESS_SET at normal achievment criteria progress update becase achivement/counter in normal way can't decrease. * At achievment criteria progress loading check that progress counter less or equal max counter value.
This commit is contained in:
parent
3c5da27442
commit
b0d42a6f67
4 changed files with 41 additions and 30 deletions
|
|
@ -1117,7 +1117,7 @@ bool ChatHandler::HandleAchievementAddCommand(char* args)
|
|||
continue;
|
||||
|
||||
uint32 maxValue = AchievementMgr::GetCriteriaProgressMaxCounter(*itr);
|
||||
mgr.SetCriteriaProgress(*itr, achEntry, maxValue);
|
||||
mgr.SetCriteriaProgress(*itr, achEntry, maxValue, AchievementMgr::PROGRESS_SET);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1151,7 +1151,7 @@ bool ChatHandler::HandleAchievementRemoveCommand(char* args)
|
|||
|
||||
if (AchievementCriteriaEntryList const* criteriaList = sAchievementMgr.GetAchievementCriteriaByAchievement(achEntry->ID))
|
||||
for (AchievementCriteriaEntryList::const_iterator itr = criteriaList->begin(); itr != criteriaList->end(); ++itr)
|
||||
mgr.SetCriteriaProgress(*itr, achEntry, 0);
|
||||
mgr.SetCriteriaProgress(*itr, achEntry, 0, AchievementMgr::PROGRESS_SET);
|
||||
|
||||
LocaleConstant loc = GetSessionDbcLocale();
|
||||
CompletedAchievementData const* completed = target ? target->GetAchievementMgr().GetCompleteData(achId) : NULL;
|
||||
|
|
@ -1218,7 +1218,7 @@ bool ChatHandler::HandleAchievementCriteriaAddCommand(char* args)
|
|||
new_val = progress < max_int && max_int - progress > val ? progress + val : max_int;
|
||||
}
|
||||
|
||||
mgr.SetCriteriaProgress(criEntry, achEntry, new_val); // value will move to allowed range into function
|
||||
mgr.SetCriteriaProgress(criEntry, achEntry, new_val, AchievementMgr::PROGRESS_SET);
|
||||
|
||||
ShowAchievementCriteriaListHelper(criEntry, achEntry, loc, target);
|
||||
return true;
|
||||
|
|
@ -1275,7 +1275,7 @@ bool ChatHandler::HandleAchievementCriteriaRemoveCommand(char* args)
|
|||
|
||||
uint32 newval = change < progress ? progress - change : 0;
|
||||
|
||||
mgr.SetCriteriaProgress(criEntry, achEntry, newval); // value will move to allowed range into function
|
||||
mgr.SetCriteriaProgress(criEntry, achEntry, newval, AchievementMgr::PROGRESS_SET);
|
||||
|
||||
ShowAchievementCriteriaListHelper(criEntry, achEntry, loc, target);
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue