mirror of
https://github.com/mangosfour/server.git
synced 2025-12-18 10:37:01 +00:00
[10666] Implement ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_*_RATING
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
3ada9f635f
commit
e78887e964
5 changed files with 33 additions and 6 deletions
|
|
@ -1593,6 +1593,27 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
change = GetPlayer()->GetMoney();
|
change = GetPlayer()->GetMoney();
|
||||||
progressType = PROGRESS_HIGHEST;
|
progressType = PROGRESS_HIGHEST;
|
||||||
break;
|
break;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING:
|
||||||
|
{
|
||||||
|
if(!miscvalue1 || achievementCriteria->highest_team_rating.teamtype != miscvalue1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
change = miscvalue2;
|
||||||
|
progressType = PROGRESS_HIGHEST;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING:
|
||||||
|
{
|
||||||
|
if(!miscvalue1 || achievementCriteria->highest_personal_rating.teamtype != miscvalue1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(achievementCriteria->highest_personal_rating.teamrating != 0 && achievementCriteria->highest_personal_rating.teamrating > miscvalue2)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
change = miscvalue2;
|
||||||
|
progressType = PROGRESS_HIGHEST;
|
||||||
|
break;
|
||||||
|
}
|
||||||
// std case: not exist in DBC, not triggered in code as result
|
// std case: not exist in DBC, not triggered in code as result
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH:
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER:
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER:
|
||||||
|
|
@ -1609,8 +1630,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
|
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA:
|
case ACHIEVEMENT_CRITERIA_TYPE_PLAY_ARENA:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
|
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
|
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
|
case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE:
|
case ACHIEVEMENT_CRITERIA_TYPE_EARNED_PVP_TITLE:
|
||||||
|
|
@ -1712,6 +1731,8 @@ uint32 AchievementMgr::GetCriteriaProgressMaxCounter(AchievementCriteriaEntry co
|
||||||
return achievementCriteria->learn_skill_line.spellCount;
|
return achievementCriteria->learn_skill_line.spellCount;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL:
|
case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL:
|
||||||
return achievementCriteria->honorable_kill.killCount;
|
return achievementCriteria->honorable_kill.killCount;
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING:
|
||||||
|
return achievementCriteria->highest_personal_rating.teamrating;
|
||||||
|
|
||||||
// handle all statistic-only criteria here
|
// handle all statistic-only criteria here
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
||||||
|
|
|
||||||
|
|
@ -784,6 +784,12 @@ void BattleGround::EndBattleGround(uint32 winner)
|
||||||
plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, member->personal_rating);
|
plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA, member->personal_rating);
|
||||||
|
|
||||||
winner_arena_team->MemberWon(plr,loser_rating);
|
winner_arena_team->MemberWon(plr,loser_rating);
|
||||||
|
|
||||||
|
if (member)
|
||||||
|
{
|
||||||
|
plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING, GetArenaType(), member->personal_rating);
|
||||||
|
plr->GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING, GetArenaType(), winner_arena_team->GetStats().rating);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,7 @@ enum AchievementCriteriaTypes
|
||||||
// TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
|
// TODO: the archievements 1162 and 1163 requires a special rating which can't be found in the dbc
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37,
|
ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA = 37,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
|
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING = 38,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39,
|
ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING = 39,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
|
ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
|
ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM = 41,
|
||||||
ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM= 42,
|
ACHIEVEMENT_CRITERIA_TYPE_LOOT_ITEM= 42,
|
||||||
|
|
|
||||||
|
|
@ -253,12 +253,12 @@ struct AchievementCriteriaEntry
|
||||||
uint32 teamtype; // 3 {2,3,5}
|
uint32 teamtype; // 3 {2,3,5}
|
||||||
} highest_team_rating;
|
} highest_team_rating;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_REACH_TEAM_RATING = 39
|
// ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_PERSONAL_RATING= 39
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32 teamtype; // 3 {2,3,5}
|
uint32 teamtype; // 3 {2,3,5}
|
||||||
uint32 teamrating; // 4
|
uint32 teamrating; // 4
|
||||||
} reach_team_rating;
|
} highest_personal_rating;
|
||||||
|
|
||||||
// ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
|
// ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LEVEL = 40
|
||||||
struct
|
struct
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10665"
|
#define REVISION_NR "10666"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue