Показать сообщение отдельно
Старый 15.07.2010, 08:54   #13
xmolex
Пользователь
 
Регистрация: 07.03.2010
Сообщений: 79
Сказал(а) спасибо: 3
Поблагодарили 10 раз(а) в 8 сообщениях
xmolex На верном пути
По умолчанию

Я для себя сделал через похожие спеллы, т.к. модернизируя показатели не достиг нужного результата.
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 970d1d2..c13b014 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -6164,7 +6164,7 @@ void Aura::HandleShapeshiftBoosts(bool apply)
             }
 
             // Heart of the Wild
-            if (HotWSpellId)
+           if (form == FORM_CAT || form == FORM_BEAR || form == FORM_DIREBEAR)
             {
                 Unit::AuraList const& mModTotalStatPct = target->GetAurasByType(SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE);
                 for(Unit::AuraList::const_iterator i = mModTotalStatPct.begin(); i != mModTotalStatPct.end(); ++i)
@@ -6172,10 +6172,26 @@ void Aura::HandleShapeshiftBoosts(bool apply)
                     if ((*i)->GetSpellProto()->SpellIconID == 240 && (*i)->GetModifier()->m_miscvalue == 3)
                     {
                         int32 HotWMod = (*i)->GetModifier()->m_amount;
-                        if(GetModifier()->m_miscvalue == FORM_CAT)
-                            HotWMod /= 2;
-
-                        target->CastCustomSpell(target, HotWSpellId, &HotWMod, NULL, NULL, true, NULL, this);
+                        HotWMod /= 2;
+
+                        if (form == FORM_CAT)
+                          {
+                            if (HotWMod == 2)       {HotWSpellId = 30902;}
+                            else if (HotWMod == 4)  {HotWSpellId = 30903;}
+                            else if (HotWMod == 6)  {HotWSpellId = 30904;}
+                            else if (HotWMod == 8)  {HotWSpellId = 30905;}
+                            else if (HotWMod == 10) {HotWSpellId = 30906;}
+                          }
+                        else
+                          {
+                            if (HotWMod == 2)       {HotWSpellId = 19255;}
+                            else if (HotWMod == 4)  {HotWSpellId = 19256;}
+                            else if (HotWMod == 6)  {HotWSpellId = 19257;}
+                            else if (HotWMod == 8)  {HotWSpellId = 19258;}
+                            else if (HotWMod == 10) {HotWSpellId = 19259;}
+                          }
+
+                        m_target->CastCustomSpell(m_target, HotWSpellId, NULL, NULL, NULL, true, NULL, this);
                         break;
                     }
                 }
@@ -6184,6 +6200,35 @@ void Aura::HandleShapeshiftBoosts(bool apply)
     }
     else
     {
+        // Heart of the Wild (delete aura)
+        if (form == FORM_CAT || form == FORM_BEAR || form == FORM_DIREBEAR)
+        {
+             Unit::AuraList const& mModTotalStatPct = m_target->GetAurasByType(SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE);
+             for(Unit::AuraList::const_iterator i = mModTotalStatPct.begin(); i != mModTotalStatPct.end(); ++i)
+             {
+                 if ((*i)->GetSpellProto()->SpellIconID == 240 && (*i)->GetModifier()->m_miscvalue == 3)
+                 {
+                     int32 HotWMod = (*i)->GetModifier()->m_amount / 2;
+                     if (form == FORM_CAT)
+                     {
+                         if (HotWMod == 2)       {HotWSpellId = 30902;}
+                         else if (HotWMod == 4)  {HotWSpellId = 30903;}
+                         else if (HotWMod == 6)  {HotWSpellId = 30904;}
+                         else if (HotWMod == 8)  {HotWSpellId = 30905;}
+                         else if (HotWMod == 10) {HotWSpellId = 30906;}
+                     }
+                     else
+                     {
+                         if (HotWMod == 2)       {HotWSpellId = 19255;}
+                         else if (HotWMod == 4)  {HotWSpellId = 19256;}
+                         else if (HotWMod == 6)  {HotWSpellId = 19257;}
+                         else if (HotWMod == 8)  {HotWSpellId = 19258;}
+                         else if (HotWMod == 10) {HotWSpellId = 19259;}
+                     }
+                     m_target->RemoveAurasDueToSpell(HotWSpellId);
+                 }
+             }
+        }
         if(spellId1)
             target->RemoveAurasDueToSpell(spellId1);
         if(spellId2)
@@ -8454,4 +8499,4 @@ void Aura::HandleAllowOnlyAbility(bool apply, bool Real)
     target->UpdateDamagePhysical(BASE_ATTACK);
     target->UpdateDamagePhysical(RANGED_ATTACK);
     target->UpdateDamagePhysical(OFF_ATTACK);
-}
\ No newline at end of file
+}
xmolex вне форума   Ответить с цитированием