Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Патчи

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

Патчи Если кто-то хочет выложить не свой готовый патч - не забудьте указать автора и источник.

Если кто-то хочет задать вопрос по патчу - велкам.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.11.2010, 12:51   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch/dev] Earth Shield dispel (рассеивание Щита земли)

Суть проблемы: не реализовано исправление патча 3.2.0a
Цитата:
- Щит земли: эффекты рассеивания теперь снимают заряды «Щита земли», а не саму ауру.
автор: я

исправляем сие недоразумение
Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index eade9ba..bdbb27d 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -4375,7 +4375,10 @@ void Spell::EffectDispel(SpellEffectIndex eff_idx)
                 if (unitTarget->HasAura(50536))
                     continue;
 
-            dispel_list.push_back(std::pair<SpellAuraHolder* ,uint32>(holder, holder->GetStackAmount()));
+            if (holder->GetAuraCharges() > 1)
+                dispel_list.push_back(std::pair<SpellAuraHolder* ,uint32>(holder, holder->GetAuraCharges()));
+            else
+                dispel_list.push_back(std::pair<SpellAuraHolder* ,uint32>(holder, holder->GetStackAmount()));
         }
     }
     // Ok if exist some buffs for dispel try dispel it
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 1a6853f..7459723 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -4600,10 +4600,24 @@ void Unit::RemoveAuraHolderFromStack(uint32 spellId, int32 stackAmount, uint64 c
     {
         if (!casterGUID || iter->second->GetCasterGUID() == casterGUID)
         {
-            if (iter->second->ModStackAmount(-stackAmount))
+            if (iter->second->GetAuraCharges() > 1)
             {
-                RemoveSpellAuraHolder(iter->second, mode);
-                break;
+                while (stackAmount--)
+                {
+                    if (iter->second->DropAuraCharge())
+                    {
+                        RemoveSpellAuraHolder(iter->second, mode);
+                        break;
+                    }
+                }
+            }
+            else
+            {
+                if (iter->second->ModStackAmount(-stackAmount))
+                {
+                    RemoveSpellAuraHolder(iter->second, mode);
+                    break;
+                }
             }
         }
     }
Принимаются все пожелания по оптимизации/реорганизации патча если вы предоставляете хотя бы часть примерного кода, который как вы считаете будет более верным. В текущей версии с патчем проблем не обнаружено
__________________
Если ты видишь это сообщение то ты просто обязан нажать "Спасибо"

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


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10832] Spawn pool at aura 63471 dispel in water. newsbot CMaNGOS Commits 0 07.12.2010 04:51
[SQL patch] Bone Shield (Костяной щит) Insider42 Патчи на рассмотрении 0 26.10.2010 19:12
[SQL patch] Earth Shield (Щит земли) Insider42 Патчи на рассмотрении 0 26.10.2010 19:11
[9977][patch] Improved Water Shield (Улучшенный водный щит) Insider42 Принятые патчи 3 26.05.2010 21:15
[9845] Fix dispel damage for 30108 and ranks newsbot CMaNGOS Commits 0 07.05.2010 16:50


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


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