aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-09-25 00:53:56 +0200
committerShauren <shauren.trinity@gmail.com>2023-09-25 00:53:56 +0200
commit41a20b1e4008d450d075847ef1fe367f0e3a240f (patch)
tree4e202edb0d037a4a406926e6cacd686c7afcbca1 /src/server/game/Spells/Spell.cpp
parente1f345756ba34ccf4d4dd07b90c254097a240b51 (diff)
Core/Achievements: Fixed achievement criteria StartEvent and FailEvent
* Criteria using StartEvent cannot be updated without that event triggering first (not only for timed achievements) * Implemented most StartEvent and FailEvent types * Fixed saving criteria removed by RemoveCriteriaProgress
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 19a68fa341d..4ba4c975c6e 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3087,16 +3087,13 @@ SpellMissInfo Spell::PreprocessSpellHit(Unit* unit, TargetInfo& hitInfo)
if (Player* player = unit->ToPlayer())
{
- player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, m_spellInfo->Id);
+ player->FailCriteria(CriteriaFailEvent::BeSpellTarget, m_spellInfo->Id);
+ player->StartCriteria(CriteriaStartEvent::BeSpellTarget, m_spellInfo->Id);
player->UpdateCriteria(CriteriaType::BeSpellTarget, m_spellInfo->Id, 0, 0, m_caster);
- player->UpdateCriteria(CriteriaType::GainAura, m_spellInfo->Id);
}
if (Player* player = m_caster->ToPlayer())
- {
- player->StartCriteriaTimer(CriteriaStartEvent::CastSpell, m_spellInfo->Id);
player->UpdateCriteria(CriteriaType::LandTargetedSpellOnTarget, m_spellInfo->Id, 0, 0, unit);
- }
if (m_caster != unit)
{
@@ -3791,10 +3788,12 @@ void Spell::_cast(bool skipCheck)
{
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_ITEM) && m_CastItem)
{
- player->StartCriteriaTimer(CriteriaStartEvent::UseItem, m_CastItem->GetEntry());
+ player->StartCriteria(CriteriaStartEvent::UseItem, m_CastItem->GetEntry());
player->UpdateCriteria(CriteriaType::UseItem, m_CastItem->GetEntry());
}
+ player->FailCriteria(CriteriaFailEvent::CastSpell, m_spellInfo->Id);
+ player->StartCriteria(CriteriaStartEvent::CastSpell, m_spellInfo->Id);
player->UpdateCriteria(CriteriaType::CastSpell, m_spellInfo->Id);
}