aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Spell.cpp35
1 files changed, 16 insertions, 19 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index c253c6a30b3..6a3b33a8bdc 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2538,6 +2538,22 @@ void Spell::cast(bool skipCheck)
handle_immediate();
}
+ // Clear combo at finish state
+ if(m_caster->GetTypeId() == TYPEID_PLAYER && NeedsComboPoints(m_spellInfo))
+ {
+ // Not drop combopoints if negative spell and if any miss on enemy exist
+ bool needDrop = true;
+ //if (!IsPositiveSpell(m_spellInfo->Id))
+ for(std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin();ihit != m_UniqueTargetInfo.end();++ihit)
+ if (ihit->missCondition != SPELL_MISS_NONE && ihit->missCondition != SPELL_MISS_MISS/* && ihit->targetGUID!=m_caster->GetGUID()*/)
+ {
+ needDrop = false;
+ break;
+ }
+ if (needDrop)
+ ((Player*)m_caster)->ClearComboPoints();
+ }
+
SetExecutedCurrently(false);
}
@@ -2951,25 +2967,6 @@ void Spell::finish(bool ok)
m_caster->resetAttackTimer(RANGED_ATTACK);
}
- //if (IsRangedAttackResetSpell())
- // m_caster->resetAttackTimer(RANGED_ATTACK);
-
- // Clear combo at finish state
- if(m_caster->GetTypeId() == TYPEID_PLAYER && NeedsComboPoints(m_spellInfo))
- {
- // Not drop combopoints if negative spell and if any miss on enemy exist
- bool needDrop = true;
- if (!IsPositiveSpell(m_spellInfo->Id))
- for(std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin();ihit != m_UniqueTargetInfo.end();++ihit)
- if (ihit->missCondition != SPELL_MISS_NONE && ihit->targetGUID!=m_caster->GetGUID())
- {
- needDrop = false;
- break;
- }
- if (needDrop)
- ((Player*)m_caster)->ClearComboPoints();
- }
-
// call triggered spell only at successful cast (after clear combo points -> for add some if need)
if(!m_TriggerSpells.empty())
TriggerSpell();