Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2010, 13:44   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [9872][patch] Life Tap (Жизнеотвод)

Решил реализовать фичу последних патчей, формулы взяты с вовхеда, опрашивал игроков с оффа.
Как рассказал один из игроков с оффа:
Получаем базовый урон+урон зависящий от духа
Получаем базовую ману+ману зависящую от силы заклинаний

Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index f8fcfea..65d4f06 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -1851,30 +1851,19 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx)
             // Life Tap
             if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000040000))
             {
+                int32 damagebase = damage;
                 // In 303 exist spirit depend
                 uint32 spirit = uint32(m_caster->GetStat(STAT_SPIRIT));
-                switch (m_spellInfo->Id)
-                {
-                    case  1454: damage+=spirit; break;
-                    case  1455: damage+=spirit*15/10; break;
-                    case  1456: damage+=spirit*2; break;
-                    case 11687: damage+=spirit*25/10; break;
-                    case 11688:
-                    case 11689:
-                    case 27222:
-                    case 57946: damage+=spirit*3; break;
-                    default:
-                        sLog.outError("Spell::EffectDummy: %u Life Tap need set spirit multipler", m_spellInfo->Id);
-                        return;
-                }
-//              Think its not need (also need remove Life Tap from SpellDamageBonus or add new value)
-//              damage = m_caster->SpellDamageBonus(m_caster, m_spellInfo,uint32(damage > 0 ? damage : 0), SPELL_DIRECT_DAMAGE);
+                damage+= spirit*15/10;
+
                 if (unitTarget && (int32(unitTarget->GetHealth()) > damage))
                 {
                     // Shouldn't Appear in Combat Log
                     unitTarget->ModifyHealth(-damage);
 
-                    int32 mana = damage;
+                    int32 spell_power = m_caster->SpellBaseDamageBonusDone(GetSpellSchoolMask(m_spellInfo));
+                    int32 mana = damagebase + (spell_power * 5/10);
+
                     // Improved Life Tap mod
                     Unit::AuraList const& auraDummy = m_caster->GetAurasByType(SPELL_AURA_DUMMY);
                     for(Unit::AuraList::const_iterator itr = auraDummy.begin(); itr != auraDummy.end(); ++itr)
также можно взять тут http://paste2.org/p/809556

Я совершенно не в курсе, нужно ли учитывать различные "штрафы" от ранга способности... если нужно то меняем
Код:
int32 mana = damagebase + (spell_power * 5/10);
на
Код:
int32 mana = damagebase + (spell_power * 5/10 * m_caster->CalculateLevelPenalty(m_spellInfo));
а весь
Код:
switch (m_spellInfo->Id)
оставляем какой был

ЗЫ: патч не тестировался!

Последний раз редактировалось Insider42; 04.05.2010 в 14:02.
Insider42 вне форума  
5 пользователя(ей) сказали cпасибо:
KiriX (04.05.2010), LordJZ (04.05.2010), Vladimir (11.05.2010), xex (05.05.2010)
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[9872] Update damage/energize calculation for 1454 and ranks. newsbot CMaNGOS Commits 0 11.05.2010 14:10
[9720] Implement Glyph of Siphon Life and fix Siphon Life proc newsbot CMaNGOS Commits 0 10.04.2010 10:10


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


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