Ru-MaNGOS

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

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

Патчи на рассмотрении Рассматриваемые к принятию патчи

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.09.2010, 17:11   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch] Improved Icy Touch

Суть проблемы: Талант "Улучшенное ледяное прикосновение" не увеличивает урон наносимый способностью "Ледяное прикосновение"

Таблетка
Код:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 4d52b88..daa9fd0 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -6407,6 +6407,21 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u
                         break;
                     }
                 }
+
+                // Icy Touch
+                if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000002))
+                {
+                    // Improved Icy Touch
+                    Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
+                    for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i)
+                    {
+                        if ((*i)->GetSpellProto()->SpellIconID == 2721)
+                        {
+                            DoneTotalMod *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f;
+                            break;
+                        }
+                    }
+                }
             }
             // Death Coil (bonus from Item - Death Knight T8 DPS Relic)
             else if (spellProto->SpellFamilyFlags & UI64LIT(0x00002000))
Патч бегло протестирован, то, что от него требуется он выполняет.
Insider42 вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Den (30.09.2010), partizanes (27.09.2010), Warlord123 (21.10.2010)
Старый 30.09.2010, 01:21   #2
xex
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 47
Сказал(а) спасибо: 45
Поблагодарили 29 раз(а) в 13 сообщениях
xex На верном пути
По умолчанию

А так не правильнее?
Код:
            // Icy Touch and Howling Blast
            if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000200000002))
            {
                // search disease
                bool found = false;
                Unit::AuraMap const& auras = pVictim->GetAuras();
                for(Unit::AuraMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
                {
                    if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE)
                    {
                        found = true;
                        break;
                    }
                }
                if(!found)
                    break;

                // search for Glacier Rot dummy aura
                Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
                for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i)
                {
                    if ((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244)
                    {
                        DoneTotalMod *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f;
                        break;
                    }
                }
            }

Последний раз редактировалось xex; 30.09.2010 в 01:28.
xex вне форума   Ответить с цитированием
Старый 30.09.2010, 09:12   #3
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от xex Посмотреть сообщение
А так не правильнее?
Код:
            // Icy Touch and Howling Blast
            if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000200000002))
            {
                // search disease
                bool found = false;
                Unit::AuraMap const& auras = pVictim->GetAuras();
                for(Unit::AuraMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
                {
                    if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE)
                    {
                        found = true;
                        break;
                    }
                }
                if(!found)
                    break;

                // search for Glacier Rot dummy aura
                Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
                for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i)
                {
                    if ((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244)
                    {
                        DoneTotalMod *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f;
                        break;
                    }
                }
            }
невижу разницы со стандартным кодом мангоса в том, что вы запостили
Insider42 вне форума   Ответить с цитированием
Старый 21.10.2010, 21:57   #4
Warlord123
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
Warlord123 Скоро придёт к известности
По умолчанию

У xex , похоже, была идея совместить просмотр dummy аур. Что-то в этом роде...
Код:
------------------------------ src/game/Unit.cpp ------------------------------
index 2614123..c0137d2 100644
@@ -6369,23 +6369,22 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u
                     if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE)
                     {
                         found = true;
                         break;
                     }
                 }
-                if(!found)
-                    break;
 
-                // search for Glacier Rot dummy aura
+                // search for Glacier Rot dummy aura & Improved Icy Touch
                 Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
                 for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i)
                 {
-                    if ((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244)
+                    if (((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244 && found ) //Glacier Rot
+                        ||((*i)->GetSpellProto()->SpellIconID == 2721 && spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000002)) //Improved Icy Touch
+                        )
                     {
                         DoneTotalMod *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f;
-                        break;
                     }
                 }
             }
             // Death Coil (bonus from Item - Death Knight T8 DPS Relic)
             else if (spellProto->SpellFamilyFlags & UI64LIT(0x00002000))
             {

Последний раз редактировалось Warlord123; 21.10.2010 в 22:00.
Warlord123 вне форума   Ответить с цитированием
Старый 25.10.2010, 13:03   #5
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Warlord123 Посмотреть сообщение
У xex , похоже, была идея совместить просмотр dummy аур. Что-то в этом роде...
Код:
------------------------------ src/game/Unit.cpp ------------------------------
index 2614123..c0137d2 100644
@@ -6369,23 +6369,22 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u
                     if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE)
                     {
                         found = true;
                         break;
                     }
                 }
-                if(!found)
-                    break;
 
-                // search for Glacier Rot dummy aura
+                // search for Glacier Rot dummy aura & Improved Icy Touch
                 Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY);
                 for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i)
                 {
-                    if ((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244)
+                    if (((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244 && found ) //Glacier Rot
+                        ||((*i)->GetSpellProto()->SpellIconID == 2721 && spellProto->SpellFamilyFlags & UI64LIT(0x0000000000000002)) //Improved Icy Touch
+                        )
                     {
                         DoneTotalMod *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f;
-                        break;
                     }
                 }
             }
             // Death Coil (bonus from Item - Death Knight T8 DPS Relic)
             else if (spellProto->SpellFamilyFlags & UI64LIT(0x00002000))
             {
Тогда будет накладываться только один бонус Ведь мы всего 1 раз проходим это место для нанесения урона, а там у вас стоит "или", если хотите чтобы такой работал то нужно цикл на 2 раза мутить или break сносить...
Insider42 вне форума   Ответить с цитированием
Старый 25.10.2010, 13:22   #6
Warlord123
Пользователь
 
Регистрация: 09.03.2010
Сообщений: 37
Сказал(а) спасибо: 4
Поблагодарили 63 раз(а) в 21 сообщениях
Warlord123 Скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Тогда будет накладываться только один бонус Ведь мы всего 1 раз проходим это место для нанесения урона, а там у вас стоит "или", если хотите чтобы такой работал то нужно цикл на 2 раза мутить или break сносить...
В патчике как раз стоит -break; в 2 местах. Цикл чуть длиннее, но наверняка быстрее чем 2-х кратный поиск dummy аур и 2 цикла.

Последний раз редактировалось Warlord123; 25.10.2010 в 13:24.
Warlord123 вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[SQL patch] Improved Stormstrike (Сокрушительный удар бури) Insider42 Патчи на рассмотрении 1 26.08.2011 20:10
[10924][patch] Timer system improved Ambal Принятые патчи 26 27.12.2010 11:27
[patch] Necrotic Touch(71875,71877) Warlord123 Патчи на рассмотрении 0 08.12.2010 14:06
[9977][patch] Improved Water Shield (Улучшенный водный щит) Insider42 Принятые патчи 3 26.05.2010 21:15
[hack] Improved Counterspell Chipleo MaNGOS 0.12 (2.4.3) 5 29.04.2010 00:48


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


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