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:
@@ -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, '');
|
||||||
@@ -82,6 +82,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria)
|
|||||||
case ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN:
|
case ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
case ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
case ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT)
|
if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT)
|
||||||
@@ -1732,6 +1733,16 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
|||||||
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
|
SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE);
|
||||||
break;
|
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
|
// 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:
|
||||||
@@ -1742,7 +1753,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
|
|||||||
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_COMPLETE_RAID:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
|
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
|
case ACHIEVEMENT_CRITERIA_TYPE_TOTAL:
|
||||||
break; // Not implemented yet :(
|
break; // Not implemented yet :(
|
||||||
}
|
}
|
||||||
@@ -1907,6 +1917,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
|
|||||||
return true;
|
return true;
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
|
case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA:
|
||||||
return achievementCriteria->win_arena.count && progress->counter >= achievementCriteria->win_arena.count;
|
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
|
// handle all statistic-only criteria here
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
case ACHIEVEMENT_CRITERIA_TYPE_DEATH_AT_MAP:
|
||||||
@@ -2724,6 +2736,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
|
|||||||
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
|
case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE:
|
case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
|
case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL:
|
||||||
|
case ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT:
|
||||||
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
case ACHIEVEMENT_CRITERIA_TYPE_ROLL_GREED_ON_LOOT:
|
||||||
|
|||||||
@@ -13272,6 +13272,8 @@ void Player::SetTitle(CharTitlesEntry const* title, bool lost)
|
|||||||
data << uint32(title->bit_index);
|
data << uint32(title->bit_index);
|
||||||
data << uint32(lost ? 0 : 1); // 1 - earned, 0 - lost
|
data << uint32(lost ? 0 : 1); // 1 - earned, 0 - lost
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
|
|
||||||
|
UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_OWN_RANK);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32 Player::GetRuneBaseCooldown(uint8 index, bool skipGrace)
|
uint32 Player::GetRuneBaseCooldown(uint8 index, bool skipGrace)
|
||||||
|
|||||||
Reference in New Issue
Block a user