Показать сообщение отдельно
Старый 28.12.2013, 19:44   #5
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Очень хорошо для проверки нужных спелов подходит атрибут SPELL_ATTR_EX_UNK27

Код:
@@ -4420,11 +4420,19 @@ SpellCastResult Spell::CheckCast(bool strict)
         }
 
         // check if target is in combat
         if (non_caster_target && m_spellInfo->HasAttribute(SPELL_ATTR_EX_NOT_IN_COMBAT_TARGET) && target->isInCombat())
             return SPELL_FAILED_TARGET_AFFECTING_COMBAT;
+
+        // check melee spell that the target was in front caster
+        if (m_spellInfo->HasAttribute(SPELL_ATTR_EX_UNK9) || m_spellInfo->HasAttribute(SPELL_ATTR_EX_UNK27))
+        {
+            if (!m_caster->HasInArc(M_PI_F, target))
+                return SPELL_FAILED_UNIT_NOT_INFRONT;
+        }
     }
+
     // zone check
     uint32 zone, area;
     m_caster->GetZoneAndAreaId(zone, area);
 
     SpellCastResult locRes = sSpellMgr.GetSpellAllowedInLocationError(m_spellInfo, m_caster->GetMapId(), zone, area,

Последний раз редактировалось Den; 28.12.2013 в 20:09.
Den вне форума   Ответить с цитированием