rendered paste bodyIndex: game/Spell.cpp
===================================================================
--- game/Spell.cpp (revision 5317)
+++ game/Spell.cpp (working copy)
@@ -3542,9 +3542,7 @@
if (m_rangedShoot)
return SPELL_FAILED_UNIT_NOT_INFRONT;
- uint32 original_casttime = GetSpellCastTime(sCastTimesStore.LookupEntry(m_spellInfo->CastingTimeIndex));
-
- if (original_casttime!= 0 && !IsPositiveSpell(m_spellInfo->Id) && !IsSingleTargetSpell(m_spellInfo->Id))
+ if (!IsPositiveSpell(m_spellInfo->Id) && IsDirectDamageSpell(m_spellInfo->Id))
return SPELL_FAILED_UNIT_NOT_INFRONT;
}
}
Index: game/SpellMgr.cpp
===================================================================
--- game/SpellMgr.cpp (revision 5317)
+++ game/SpellMgr.cpp (working copy)
@@ -417,7 +417,37 @@
return false;
return true;
}
+bool IsDirectDamageSpell(uint32 spellId)
+{
+ SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
+ if (!spellInfo)
+ return false;
+ for (uint32 i=0; i<3; i++)
+ {
+ switch(spellInfo->Effect[i])
+ {
+ // Plain Damage
+ case SPELL_EFFECT_SCHOOL_DAMAGE:
+ case SPELL_EFFECT_ENVIRONMENTAL_DAMAGE:
+ // Weapon Based Damage
+ case SPELL_EFFECT_WEAPON:
+ case SPELL_EFFECT_WEAPON_DAMAGE:
+ case SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL:
+ case SPELL_EFFECT_WEAPON_PERCENT_DAMAGE:
+ case SPELL_EFFECT_NORMALIZED_WEAPON_DMG:
+ // Special Damage
+ case SPELL_EFFECT_MANA_DRAIN:
+ case SPELL_EFFECT_HEALTH_LEECH:
+ case SPELL_EFFECT_POWER_BURN:
+ return true;
+ default:
+ break;
+ }
+ }
+
+ return false;
+}
bool IsSingleTargetSpell(uint32 spellId)
{
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
Index: game/SpellMgr.h
===================================================================
--- game/SpellMgr.h (revision 5317)
+++ game/SpellMgr.h (working copy)
@@ -100,6 +100,8 @@
bool IsPositiveEffect(uint32 spellId, uint32 effIndex);
bool IsPositiveTarget(uint32 targetA, uint32 targetB);
+bool IsDirectDamageSpell(uint32 spellId);
+
bool IsSingleTargetSpell(uint32 spellId);
bool IsSingleTargetSpells(SpellEntry const *spellInfo1, SpellEntry const *spellInfo2);