Показать сообщение отдельно
Старый 17.12.2009, 09:51   #1
`win
Патчеписатель
 
Регистрация: 24.11.2009
Адрес: Барнаул
Сообщений: 57
Сказал(а) спасибо: 3
Поблагодарили 69 раз(а) в 32 сообщениях
`win Скоро придёт к известности
По умолчанию [patch] EffectOpenLock + иммунитеты

Суть патча - если игрок имеет эффекты тотал иммунитета, он не может использовать спеллы с эффектом OpenLock (это эффект открытия руды, травы, открытие сундуков, захвата флага на БГ) и реализует оффлайк сообщение "вы сейчас не можете сделать это". Проверка на полный иммунитет выполняет на основе IsTotalImunne, которую я писал когда то для БГ

Поидее, можно убрать проверку на иммуны из Player::CanUseBattleGroundObject, если она будет выполняться из CheckCast.

Код:
===================================================================
--- Spell.cpp	(revision 859)
+++ Spell.cpp	(working copy)
@@ -4108,6 +4108,15 @@
             return SPELL_FAILED_MOVING;
     }
 
+    // check for Effect::OpenLock
+	if( m_caster->GetTypeId()==TYPEID_PLAYER && ((Player*)m_caster)->isTotalImmune())
+		if (m_spellInfo->Effect[0] == SPELL_EFFECT_OPEN_LOCK)
+		{
+			return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
+		}
+
     if(Unit *target = m_targets.getUnitTarget())
     {
         // target state requirements (not allowed state), apply to self also
Автор - я

Последний раз редактировалось `win; 17.12.2009 в 10:20.
`win вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
ANTOMA (18.12.2009), Hummer (17.12.2009), zhanhang02 (17.12.2009)