Ru-MaNGOS

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

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

Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.

Повод для гордости.

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.06.2011, 08:38   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию [11594][fix] Glyph of Salvation

Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index a08c2e8..ca6c3d1 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -137,7 +137,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS]=
     &Aura::HandleModRegen,                                  // 84 SPELL_AURA_MOD_REGEN
     &Aura::HandleModPowerRegen,                             // 85 SPELL_AURA_MOD_POWER_REGEN
     &Aura::HandleChannelDeathItem,                          // 86 SPELL_AURA_CHANNEL_DEATH_ITEM
-    &Aura::HandleNoImmediateEffect,                         // 87 SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN implemented in Unit::MeleeDamageBonusTaken and Unit::SpellDamageBonusTaken
+    &Aura::HandleDamagePercentTaken,                        // 87 SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN implemented in Unit::MeleeDamageBonusTaken and Unit::SpellDamageBonusTaken
     &Aura::HandleNoImmediateEffect,                         // 88 SPELL_AURA_MOD_HEALTH_REGEN_PERCENT implemented in Player::RegenerateHealth
     &Aura::HandlePeriodicDamagePCT,                         // 89 SPELL_AURA_PERIODIC_DAMAGE_PERCENT
     &Aura::HandleUnused,                                    // 90 unused (3.0.8a-3.2.2a) old SPELL_AURA_MOD_RESIST_CHANCE
@@ -5255,6 +5255,29 @@ void Aura::HandlePeriodicHeal(bool apply, bool /*Real*/)
     }
 }
 
+void Aura::HandleDamagePercentTaken(bool apply, bool Real)
+{
+    m_isPeriodic = apply;
+
+    Unit* target = GetTarget();
+    Unit* caster = GetCaster();
+
+    if (!Real)
+        return;
+
+    if (apply)
+    {
+        // Hand of Salvation
+        if (GetSpellProto()->SpellFamilyName == SPELLFAMILY_PALADIN && GetSpellProto()->SpellFamilyFlags & UI64LIT(0x0000000000000100))
+        {
+            // Glyph of Salvation
+            if (caster == target)
+                if (Aura* aur = caster->GetAura(63225, EFFECT_INDEX_0))
+                    m_modifier.m_amount = -aur->GetModifier()->m_amount;
+        }
+    }
+}
+
 void Aura::HandlePeriodicDamage(bool apply, bool Real)
 {
     // spells required only Real aura add/remove
diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h
index 3713e4c..acb36d7 100644
--- a/src/game/SpellAuras.h
+++ b/src/game/SpellAuras.h
@@ -302,6 +302,7 @@ class MANGOS_DLL_SPEC Aura
         void HandleModPowerRegen(bool Apply, bool Real);
         void HandleModPowerRegenPCT(bool Apply, bool Real);
         void HandleChannelDeathItem(bool Apply, bool Real);
+        void HandleDamagePercentTaken(bool Apply, bool Real);
         void HandlePeriodicDamagePCT(bool Apply, bool Real);
         void HandleAuraModAttackPower(bool Apply, bool Real);
         void HandleAuraTransform(bool Apply, bool Real);
diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp
Den вне форума  
Пользователь сказал cпасибо:
Vladimir (04.06.2011)
Старый 04.06.2011, 12:28   #2
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Требуется всегда защита от двойного применения при загрузке ауры при логине
(да я заменитил что вы явно присваиваете значение и накрутки не будет,
но мне кажется что более правильно изменять значение - вдруго будет еще какой эффект влияющий на данное значение
кроме глифа).

Также рекомендую использовать spellEntry->IsFitFamily/IsFitFamilyMask вместо явных обращения к полям - это
сокращает проблемы при мерже в 400

Для проверкт if (caster == target) совсем не требуется получать указатель кастера по таблице играковб проще сравнить guid-ы

[added]В [11594] c этими измнениями, спасибо.
__________________
Так как устал объяснять знайте ICQ не пользуюсь

Последний раз редактировалось Vladimir; 04.06.2011 в 13:21.
Vladimir вне форума  
Пользователь сказал cпасибо:
Den (04.06.2011)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[11676][fix] Glyph of Icy Veins Den Принятые патчи 1 26.06.2011 01:20
[11673][fix] Glyph of Raptor Strike Den Принятые патчи 1 25.06.2011 05:32
[11605][fix] Glyph of Desperation Den Принятые патчи 1 05.06.2011 18:42
[fix] Glyph of Rejuvenation Den Отвергнутые патчи 11 05.06.2011 17:47
Glyph of Chains of Ice VENOM Баг-репорты 3 19.12.2010 01:17


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


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