Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Устаревшие темы и разработки > MaNGOS 0.12 (2.4.3)

Важная информация

MaNGOS 0.12 (2.4.3) Любителям олд-скула =) Всё для клиента 2.4.3

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.04.2010, 22:15   #1
Chipleo
Пользователь
 
Аватар для Chipleo
 
Регистрация: 05.04.2010
Сообщений: 53
Сказал(а) спасибо: 4
Поблагодарили 24 раз(а) в 15 сообщениях
Chipleo На верном пути
По умолчанию [fix bug] прерывание канального каста при мисе или при уроне

Код:
------------------------------ src/game/Spell.cpp ------------------------------
index 9ea4124..c0a59dc 100644
@@ -925,7 +925,13 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
     {
         if (target->reflectResult == SPELL_MISS_NONE)       // If reflected spell hit caster -> do all effect on him
             DoSpellHitOnUnit(m_caster, mask);
-    }
+    } else 
+	{
+		m_caster->FinishSpell(CURRENT_CHANNELED_SPELL, false);
+		doTriggers(missInfo);
+		return;
+	}
+	
 
     // Do triggers only on miss/resist/parry/dodge
     if (missInfo!=SPELL_MISS_NONE)

------------------------------ src/game/Unit.cpp ------------------------------
index a6e6379..43c802f 100644
@@ -1090,7 +1090,9 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
                 }
                 if (remove)
                 {
-                    pVictim->RemoveAurasDueToSpell(i->second->GetId());
+      				if (IsChanneledSpell(se))
+						i->second->GetCaster()->FinishSpell(CURRENT_CHANNELED_SPELL, false);
+					else pVictim->RemoveAurasDueToSpell(i->second->GetId());
                     // FIXME: this may cause the auras with proc chance to be rerolled several times
                     next = vAuras.begin();
                 }
@@ -1101,7 +1103,9 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
                 float chance = float(damage) / max_dmg * 100.0f;
                 if (roll_chance_f(chance))
                 {
-                    pVictim->RemoveAurasDueToSpell(i->second->GetId());
+					if (IsChanneledSpell(se))
+						i->second->GetCaster()->FinishSpell(CURRENT_CHANNELED_SPELL, false);
+					else pVictim->RemoveAurasDueToSpell(i->second->GetId());
                     next = vAuras.begin();
                 }
             }
Например, пет варлока - сукуб, продолжал кастовать канальный каст Seduction при непопадании по таргету, а также при прерывании каста уроном по таргету.
Chipleo вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка возможности каста virusav Новичкам 17 11.11.2010 23:39
[patch] Прерывание channeled-спеллов при выходе из игры zergtmn Отвергнутые патчи 7 20.06.2010 20:04


Текущее время: 10:45. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot