fix(Core/Achievements): new achievement criteria type ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES (#7756)
- Closes #7613
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1630947176293030300');
|
||||
|
||||
UPDATE `achievement_criteria_data` SET `type`=24, `value1`=1600 WHERE `criteria_id` IN (611,1235,1238);
|
||||
UPDATE `achievement_criteria_data` SET `type`=24, `value1`=3 WHERE `criteria_id`=1236;
|
||||
@@ -248,6 +248,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
|
||||
}
|
||||
return true;
|
||||
case ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE:
|
||||
case ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES:
|
||||
return true; // not check correctness node indexes
|
||||
case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM:
|
||||
if (equipped_item.item_quality >= MAX_ITEM_QUALITY)
|
||||
@@ -444,6 +445,24 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un
|
||||
|
||||
return false;
|
||||
}
|
||||
case ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES:
|
||||
{
|
||||
Battleground* bg = source->GetBattleground();
|
||||
if (!bg)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
TeamId winnerTeam = bg->GetWinner();
|
||||
if (winnerTeam == TEAM_NEUTRAL)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
uint32 winnnerScore = bg->GetTeamScore(winnerTeam);
|
||||
uint32 loserScore = bg->GetTeamScore(TeamId(!uint32(winnerTeam)));
|
||||
return source->GetTeamId() == winnerTeam && winnnerScore == teams_scores.winner_score && loserScore == teams_scores.loser_score;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -55,9 +55,10 @@ enum AchievementCriteriaDataType
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20, // map_id 0 player must be on map with id in map_id
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21, // class_id race_id
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22, // N login on day of N-th Birthday
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE = 23 // title_id known (pvp) title, values from dbc
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE = 23, // title_id known (pvp) title, values from dbc
|
||||
ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24, // winner_score loser score player's team win bg and their teams have exact scores
|
||||
};
|
||||
#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 24 // maximum value in AchievementCriteriaDataType enum
|
||||
#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 25 // maximum value in AchievementCriteriaDataType enum
|
||||
|
||||
enum AchievementCommonCategories
|
||||
{
|
||||
@@ -168,16 +169,22 @@ struct AchievementCriteriaData
|
||||
{
|
||||
uint32 mapId;
|
||||
} map_id;
|
||||
// ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 21
|
||||
// ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22
|
||||
struct
|
||||
{
|
||||
uint32 nth_birthday;
|
||||
} birthday_login;
|
||||
// ACHIEVEMENT_CRITERIA_DATA_TYPE_KNOWN_TITLE = 22
|
||||
// ACHIEVEMENT_CRITERIA_DATA_TYPE_KNOWN_TITLE = 23
|
||||
struct
|
||||
{
|
||||
uint32 title_id;
|
||||
} known_title;
|
||||
// ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24
|
||||
struct
|
||||
{
|
||||
uint32 winner_score;
|
||||
uint32 loser_score;
|
||||
} teams_scores;
|
||||
// ...
|
||||
struct
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user