diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index e2aed2c74..d59b37b9b 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -2528,7 +2528,18 @@ void Spell::finish(bool ok) // Clear combo at finish state if(m_caster->GetTypeId() == TYPEID_PLAYER && NeedsComboPoints(m_spellInfo)) - ((Player*)m_caster)->ClearComboPoints(); + { + // Not drop combopoints if any miss exist + bool needDrop = true; + for(std::list::iterator ihit= m_UniqueTargetInfo.begin();ihit != m_UniqueTargetInfo.end();++ihit) + if (ihit->missCondition != SPELL_MISS_NONE) + { + 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())