`win
17.12.2009, 09:51
Суть патча - если игрок имеет эффекты тотал иммунитета, он не может использовать спеллы с эффектом 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
Автор - я
Поидее, можно убрать проверку на иммуны из 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
Автор - я