From 5ee22c58f6ddd132bd5a85616a0eb7f18fbe21ba Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Wed, 11 Oct 2023 03:17:14 +0200 Subject: [PATCH] Core/Achievements: renamed ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 to ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET --- .../game/Achievements/AchievementMgr.cpp | 26 ++++++++----------- src/server/game/DataStores/DBCEnums.h | 2 +- src/server/game/Spells/Spell.cpp | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index c761636d1d..5729239cc5 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -69,7 +69,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria) case ACHIEVEMENT_CRITERIA_TYPE_SPECIAL_PVP_KILL: case ACHIEVEMENT_CRITERIA_TYPE_WIN_DUEL: case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: case ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM: @@ -1197,7 +1197,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA: case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: case ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED_ON_LOOT: @@ -1547,7 +1547,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achi case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BG_OBJECTIVE_CAPTURE: case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL: @@ -1779,6 +1779,8 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entr Seconds timeElapsed = Seconds::zero(); + AchievementEntry const* achievement = sAchievementMgr->GetAchievement(entry->AchievementID); + bool criteriaComplete = IsCompletedCriteria(entry, achievement); if (entry->TimerTime) { auto startedItr = _startedCriteria.find(entry->ID); @@ -1787,15 +1789,13 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entr // Client expects this in packet timeElapsed = duration_cast(Seconds(entry->TimerTime) - startedItr->second); - AchievementEntry const* achievement = sAchievementMgr->GetAchievement(entry->AchievementID); - bool criteriaComplete = IsCompletedCriteria(entry, achievement); // Remove the timer, we wont need it anymore if (criteriaComplete) _startedCriteria.erase(startedItr); } } - SendCriteriaUpdate(entry, progress, timeElapsed.count(), true); + SendCriteriaUpdate(entry, progress, timeElapsed.count(), criteriaComplete); } template @@ -2584,11 +2584,11 @@ bool AchievementMgr::RequirementsSatisfied(AchievementCriteriaEntry const* ac } case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2: + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: if (!miscValue1 || miscValue1 != achievementCriteria->Asset.SpellID) return false; break; case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL: - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: if (!miscValue1 || miscValue1 != achievementCriteria->Asset.SpellID) return false; break; @@ -3200,8 +3200,8 @@ char const* AchievementGlobalMgr::GetCriteriaTypeString(AchievementCriteriaTypes return "FLIGHT_PATHS_TAKEN"; case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: return "LOOT_TYPE"; - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: - return "CAST_SPELL2"; + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: + return "LAND_TARGETED_SPELL_ON_SPELL_TARGET"; case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE: return "LEARN_SKILL_LINE"; case ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL: @@ -3286,7 +3286,7 @@ inline bool IsAchievementCriteriaTypeStoredByMiscValue(AchievementCriteriaTypes case ACHIEVEMENT_CRITERIA_TYPE_FISH_IN_GAMEOBJECT: case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILLLINE_SPELLS: case ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE: - case ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2: + case ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET: case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE: return true; default: @@ -3388,12 +3388,8 @@ void AchievementGlobalMgr::LoadAchievementCriteriaList() uint32 criterias = 0; uint32 guildCriterias = 0; - for (uint32 entryId = 0; entryId < sAchievementCriteriaStore.GetNumRows(); ++entryId) + for (AchievementCriteriaEntry const* criteria : sAchievementCriteriaStore) { - AchievementCriteriaEntry const* criteria = sAchievementMgr->GetAchievementCriteria(entryId); - if (!criteria) - continue; - ASSERT(criteria->Type < ACHIEVEMENT_CRITERIA_TYPE_TOTAL, "ACHIEVEMENT_CRITERIA_TYPE_TOTAL must be greater than or equal to %u but is currently equal to %u", criteria->Type + 1, ACHIEVEMENT_CRITERIA_TYPE_TOTAL); diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h index 6f8f6344e0..bcde40339f 100644 --- a/src/server/game/DataStores/DBCEnums.h +++ b/src/server/game/DataStores/DBCEnums.h @@ -330,7 +330,7 @@ enum AchievementCriteriaTypes : uint8 ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED = 107, ACHIEVEMENT_CRITERIA_TYPE_FLIGHT_PATHS_TAKEN = 108, ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE = 109, - ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2 = 110, /// @todo target entry is missing + ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET = 110, // UNUSED = 111, // unused in DBC 4.3.4.15595 name state TBC Classic ACHIEVEMENT_CRITERIA_TYPE_LEARN_SKILL_LINE = 112, ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL = 113, diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 86aea2bcdd..534df9f50e 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2937,7 +2937,7 @@ SpellMissInfo Spell::PreprocessSpellHit(Unit* unit, bool scaleAura, TargetInfo& } if (Player* player = m_caster->ToPlayer()) - player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, 0, unit); + player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LAND_TARGETED_SPELL_ON_SPELL_TARGET, m_spellInfo->Id, 0, 0, unit); if (m_caster != unit) {