fix(Core/Achievement): Implement ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK (#17180)

* fix(Core): Implement ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK

* fix(Core): LoadAchievementCriteriaData(): Add ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK

- fixes minor oversight of ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK implementation
- this enables DB achievement_criteria_data check for ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK
This commit is contained in:
Ludwig
2023-09-14 22:27:39 +02:00
committed by GitHub
parent 1fc8029e30
commit 8ba8f0fe9e
3 changed files with 47 additions and 1 deletions

View File

@@ -0,0 +1,31 @@
-- ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK
DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (707, 708, 709, 710, 711, 712, 713, 714, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740);
INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES
(707, 23, 14, 0, ''),
(708, 23, 13, 0, ''),
(709, 23, 12, 0, ''),
(710, 23, 11, 0, ''),
(711, 23, 10, 0, ''),
(712, 23, 9, 0, ''),
(713, 23, 8, 0, ''),
(714, 23, 7, 0, ''),
(721, 23, 6, 0, ''),
(722, 23, 5, 0, ''),
(723, 23, 4, 0, ''),
(724, 23, 3, 0, ''),
(725, 23, 2, 0, ''),
(726, 23, 1, 0, ''),
(727, 23, 28, 0, ''),
(728, 23, 27, 0, ''),
(729, 23, 26, 0, ''),
(730, 23, 25, 0, ''),
(731, 23, 24, 0, ''),
(732, 23, 23, 0, ''),
(733, 23, 22, 0, ''),
(734, 23, 21, 0, ''),
(735, 23, 20, 0, ''),
(736, 23, 19, 0, ''),
(737, 23, 18, 0, ''),
(738, 23, 17, 0, ''),
(739, 23, 16, 0, ''),
(740, 23, 15, 0, '');

View File

@@ -82,6 +82,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
case ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN:
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM:
case ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
break;
default:
if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT)
@@ -1732,6 +1733,16 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
break;
}
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
{
// those requirements couldn't be found in the dbc
AchievementCriteriaDataSet const* data = sAchievementMgr->GetCriteriaDataSet(achievementCriteria);
if (!data || !data->Meets(GetPlayer(), nullptr))
continue;
SetCriteriaProgress(achievementCriteria, 1);
break;
}
// std case: not exist in DBC, not triggered in code as result
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_HEALTH:
case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_SPELLPOWER:
@@ -1742,7 +1753,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
break;
// FIXME: not triggered in code as result, need to implement
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_RAID:
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
break; // Not implemented yet :(
}
@@ -1907,6 +1917,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
return true;
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
return achievementCriteria->win_arena.count && progress->counter >= achievementCriteria->win_arena.count;
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
return true;
// handle all statistic-only criteria here
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
@@ -2724,6 +2736,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE:
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM:
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:

View File

@@ -13272,6 +13272,8 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost)
data << uint32(title->bit_index);
data << uint32(lost ? 0 : 1); // 1 - earned, 0 - lost
GetSession()->SendPacket(&data);
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK);
}
uint32 Player::GetRuneBaseCooldown(uint8 index, bool skipGrace)