fix(Core/Achievement): Implement ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID (#17316)
This commit is contained in:
@@ -1154,6 +1154,21 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
|||||||
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
|
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID:
|
||||||
|
{
|
||||||
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
|
if (!miscValue1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Map const* map = GetPlayer()->IsInWorld() ? GetPlayer()->GetMap() : sMapMgr->FindMap(GetPlayer()->GetMapId(), GetPlayer()->GetInstanceId());
|
||||||
|
if (!map || !map->IsDungeon())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (map->ToInstanceMap()->GetMaxPlayers() != achievementCriteria->complete_raid.groupSize)
|
||||||
|
continue;
|
||||||
|
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
||||||
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
// AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case
|
||||||
if (!miscValue1)
|
if (!miscValue1)
|
||||||
@@ -1758,7 +1773,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
|||||||
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING:
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_RATING:
|
||||||
break;
|
break;
|
||||||
// FIXME: not triggered in code as result, need to implement
|
// FIXME: not triggered in code as result, need to implement
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
|
case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
|
||||||
break; // Not implemented yet :(
|
break; // Not implemented yet :(
|
||||||
}
|
}
|
||||||
@@ -1930,6 +1944,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
|||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATH:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATH:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_IN_DUNGEON:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_CREATURE:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
case ACHIEVEMENT_CRITERIA_TYPE_KILLED_BY_PLAYER:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATHS_FROM:
|
||||||
|
|||||||
@@ -675,6 +675,8 @@ InstancePlayerBind* InstanceSaveMgr::PlayerBindToInstance(ObjectGuid guid, Insta
|
|||||||
stmt->SetData(1, save->GetInstanceId());
|
stmt->SetData(1, save->GetInstanceId());
|
||||||
stmt->SetData(2, permanent);
|
stmt->SetData(2, permanent);
|
||||||
CharacterDatabase.Execute(stmt);
|
CharacterDatabase.Execute(stmt);
|
||||||
|
|
||||||
|
player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bind.save != save)
|
if (bind.save != save)
|
||||||
|
|||||||
Reference in New Issue
Block a user