mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-24 06:06:23 +00:00
feat(Core/Hooks): added collection of hooks to extends AC (#3047)
This collection of hooks comes from the Maelstrom project. It allows to release modules such as : - 3v3-soloqueue - 1v1 arena - pvestats and many others
This commit is contained in:
@@ -828,6 +828,8 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||
if (!achievementCriteriaList)
|
||||
return;
|
||||
|
||||
sScriptMgr->OnBeforeCheckCriteria(this, achievementCriteriaList);
|
||||
|
||||
for (AchievementCriteriaEntryList::const_iterator i = achievementCriteriaList->begin(); i != achievementCriteriaList->end(); ++i)
|
||||
{
|
||||
AchievementCriteriaEntry const* achievementCriteria = (*i);
|
||||
@@ -838,6 +840,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||
if (!CanUpdateCriteria(achievementCriteria, achievement))
|
||||
continue;
|
||||
|
||||
if (!sScriptMgr->CanCheckCriteria(this, achievementCriteria))
|
||||
continue;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
// std. case: increment at 1
|
||||
@@ -1762,6 +1767,9 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
||||
if (!progress)
|
||||
return false;
|
||||
|
||||
if (!sScriptMgr->IsCompletedCriteria(this, achievementCriteria, achievement, progress))
|
||||
return false;
|
||||
|
||||
switch (achievementCriteria->requiredType)
|
||||
{
|
||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_BG:
|
||||
@@ -2394,6 +2402,9 @@ bool AchievementGlobalMgr::IsRealmCompleted(AchievementEntry const* achievement)
|
||||
if (itr->second == std::chrono::system_clock::time_point::min())
|
||||
return false;
|
||||
|
||||
if (!sScriptMgr->IsRealmCompleted(this, achievement, itr->second))
|
||||
return false;
|
||||
|
||||
if (itr->second == std::chrono::system_clock::time_point::max())
|
||||
return true;
|
||||
|
||||
@@ -2403,6 +2414,8 @@ bool AchievementGlobalMgr::IsRealmCompleted(AchievementEntry const* achievement)
|
||||
if (achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL)
|
||||
return (std::chrono::system_clock::now() - itr->second) > std::chrono::minutes(1);
|
||||
|
||||
sScriptMgr->SetRealmCompleted(achievement);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user