diff options
author | megamage <none@none> | 2008-12-30 16:03:36 -0600 |
---|---|---|
committer | megamage <none@none> | 2008-12-30 16:03:36 -0600 |
commit | 3d1d45405546062357c019f0164f8529552fd060 (patch) | |
tree | abd14ea0c0b4cc497facbd8b4382ad5f154f3306 /src/game/Spell.cpp | |
parent | 5a5274d21fbe19713e8e2c473082627299633a99 (diff) |
*Update to Mangos 6989.
--HG--
branch : trunk
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r-- | src/game/Spell.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 83d304ccbe4..f188ab46465 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1037,14 +1037,15 @@ void Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask) if( m_caster != unit ) { - if (unit->GetCharmerOrOwnerGUID() != m_caster->GetGUID()) + // Recheck UNIT_FLAG_NON_ATTACKABLE for delayed spells + if (m_spellInfo->speed > 0.0f && + unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE) && + unit->GetCharmerOrOwnerGUID() != m_caster->GetGUID()) { - if (unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE)) - { - m_caster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_EVADE); - return; - } + m_caster->SendSpellMiss(unit, m_spellInfo->Id, SPELL_MISS_EVADE); + return; } + if( !m_caster->IsFriendlyTo(unit) ) { // for delayed spells ignore not visible explicit target @@ -4249,9 +4250,6 @@ uint8 Spell::CanCast(bool strict) if (m_caster->GetTypeId()==TYPEID_PLAYER && !sMapStore.LookupEntry(m_caster->GetMapId())->IsMountAllowed() && !m_IsTriggeredSpell && !m_spellInfo->AreaId) return SPELL_FAILED_NO_MOUNTS_ALLOWED; - if (m_caster->GetAreaId()==35) - return SPELL_FAILED_NO_MOUNTS_ALLOWED; - ShapeshiftForm form = m_caster->m_form; if( form == FORM_CAT || form == FORM_TREE || form == FORM_TRAVEL || form == FORM_AQUA || form == FORM_BEAR || form == FORM_DIREBEAR || |