Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Патчи на рассмотрении (http://mangos.ytdb.ru/forumdisplay.php?f=49)
-   -   [patch] Restore work Paladin 5 tier Protected 2p bonus. (http://mangos.ytdb.ru/showthread.php?t=7747)

Den 30.10.2013 21:24

[patch] Restore work Paladin 5 tier Protected 2p bonus.
 
Код:

diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 4ceb337..254f628 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -68,7 +68,7 @@ pAuraHandler AuraHandler[TOTAL_AURAS] =
    &Aura::HandleAuraModStun,                              // 12 SPELL_AURA_MOD_STUN
    &Aura::HandleModDamageDone,                            // 13 SPELL_AURA_MOD_DAMAGE_DONE
    &Aura::HandleNoImmediateEffect,                        // 14 SPELL_AURA_MOD_DAMAGE_TAKEN  implemented in Unit::MeleeDamageBonusTaken and Unit::SpellBaseDamageBonusTaken
-    &Aura::HandleNoImmediateEffect,                        // 15 SPELL_AURA_DAMAGE_SHIELD      implemented in Unit::DealMeleeDamage
+    &Aura::HandleAuraDamageShield,                          // 15 SPELL_AURA_DAMAGE_SHIELD      implemented in Unit::DealMeleeDamage
    &Aura::HandleModStealth,                                // 16 SPELL_AURA_MOD_STEALTH
    &Aura::HandleNoImmediateEffect,                        // 17 SPELL_AURA_MOD_STEALTH_DETECT implemented in Unit::isVisibleForOrDetect
    &Aura::HandleInvisibility,                              // 18 SPELL_AURA_MOD_INVISIBILITY
@@ -4606,6 +4606,25 @@ void Aura::HandleAuraModStun(bool apply, bool Real)
    }
 }
 
+void Aura::HandleAuraDamageShield(bool apply, bool Real)
+{
+    if (!Real)
+        return;
+
+    Unit* caster = GetCaster();
+
+    if (apply)
+    {
+        // Retribution Aura
+        if (GetSpellProto()->IsFitToFamily(SPELLFAMILY_PALADIN, UI64LIT(0x0000000000000008), 0x00000020))
+        {
+            // Increased Retribution Aura (Paladin 5 tier Protected 2p bonus)
+            if (Aura* aura = caster->GetAura(37190, EFFECT_INDEX_0))
+                m_modifier.m_amount += aura->GetModifier()->m_amount;
+        }
+    }
+}
+
 void Aura::HandleModStealth(bool apply, bool Real)
 {
    Unit* target = GetTarget();
diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h
index c185419..fbd8e9b 100644
--- a/src/game/SpellAuras.h
+++ b/src/game/SpellAuras.h
@@ -259,6 +259,7 @@ class MANGOS_DLL_SPEC Aura
        void HandleAuraModResistanceExclusive(bool Apply, bool Real);
        void HandleAuraSafeFall(bool Apply, bool Real);
        void HandleAuraModPetTalentsPoints(bool Apply, bool Real);
+        void HandleAuraDamageShield(bool Apply, bool Real);
        void HandleModStealth(bool Apply, bool Real);
        void HandleInvisibility(bool Apply, bool Real);
        void HandleInvisibilityDetect(bool Apply, bool Real);

PS Истинный ценитель тиров )))

MaS0n 30.10.2013 21:38

Во-первых, если уж фиксить, то не надо имхо запиливать отдельный хандлер в SpellAuras.cpp, а делать как написано
Цитата:

implemented in Unit::DealMeleeDamage
Найти там цикл перебора аур типа damage shield и туда дописать нужный код

Во-вторых аура этого бонуса содержит такие данные

Код:

Id: 6 (SPELL_EFFECT_APPLY_AURA)
BasePoints = 15
Targets (1, 0) (TARGET_SELF, NO_TARGET)
Aura Id 107 (SPELL_AURA_ADD_FLAT_MODIFIER), value = 15, misc = 0 (SPELLMOD_DAMAGE), miscB = 0, periodic = 0
SpellClassMask = 00000000 00000000 00000008
+ 7294 - Retribution Aura (Rank 1)
+ 10298 - Retribution Aura (Rank 2)
+ 10299 - Retribution Aura (Rank 3)
+ 10300 - Retribution Aura (Rank 4)
+ 10301 - Retribution Aura (Rank 5)
+ 27150 - Retribution Aura (Rank 6)
- 41106 - Battle Aura
+ 54043 - Retribution Aura (Rank 7)
- 63531 - Sanctified Retribution

И должна работать без дополнительных заморочек, по факту

Den 31.10.2013 18:48

Я отталкиваюсь от опыта проекта мангос. И исходя из этого, таких отдельных хандлеров в SpellAuras.cpp хватает. )))

Да, и теоретические домыслы на подобии "должно работать" - по факту оказываются неработоспособными. ))

Хотя я и не пробовал вашего решения, но все же если реализуете, то это пойдет тоглько на пользу сообществу форума и проекту мангос.


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

ru-mangos.ru - Русское сообщество MaNGOS