|
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
04.05.2010, 13:44 | #1 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
[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) Я совершенно не в курсе, нужно ли учитывать различные "штрафы" от ранга способности... если нужно то меняем Код:
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. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[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 |