rendered paste bodyIndex: src/game/Spell.cpp
===================================================================
--- src/game/Spell.cpp (revision 5491)
+++ src/game/Spell.cpp (working copy)
@@ -1519,6 +1519,15 @@
return;
}
+ // We cant cast negative spell at Flight Target (even if m_caster == target)
+ Unit *target = targets->getUnitTarget();
+ if(target && target->isInFlight())
+ {
+ SendCastResult(SPELL_FAILED_NOT_ON_TAXI);
+ finish(false);
+ return;
+ }
+
uint8 result = CanCast(true);
if(result != 0)
{
@@ -2695,11 +2704,8 @@
{
if(target != m_caster)
{
- // Not allow casting on flying player
- if (target->isInFlight())
- return SPELL_FAILED_BAD_TARGETS;
- if(VMAP::VMapFactory::checkSpellForLoS(m_spellInfo->Id) && !m_caster->IsWithinLOSInMap(target))
+ if(VMAP::VMapFactory::checkSpellForLoS(m_spellInfo->Id) && !m_caster->IsWithinLOSInMap(target))
return SPELL_FAILED_LINE_OF_SIGHT;
// auto selection spell rank implemented in WorldSession::HandleCastSpellOpcode
@@ -2808,12 +2814,7 @@
// not let players cast spells at mount (and let do it to creatures)
if(m_caster->IsMounted() && m_caster->GetTypeId()==TYPEID_PLAYER && !m_IsTriggeredSpell && !IsPassiveSpell(m_spellInfo->Id) && !(m_spellInfo->Attributes & 0x1000000))
- {
- if(m_caster->isInFlight())
- return SPELL_FAILED_NOT_FLYING;
- else
- return SPELL_FAILED_NOT_MOUNTED;
- }
+ return SPELL_FAILED_NOT_MOUNTED;
// always (except passive spells) check items (focus object can be required for any type casts)
if(!IsPassiveSpell(m_spellInfo->Id))