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)
Старый 04.05.2010, 21:56   #2
Viste
Новичок
 
Аватар для Viste
 
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 27
Поблагодарили 7 раз(а) в 5 сообщениях
Viste На верном пути
По умолчанию

у меня в
Код:
switch (m_spellInfo->Id)
так
Код:
                    case  1454: damage += int32(0 + 1.5*sp); break;
                    case  1455: damage += int32(6 + 1.5*sp); break;
                    case  1456: damage += int32(24 + 1.5*sp); break;
                    case 11687: damage += int32(37 + 1.5*sp); break;
                    case 11688: damage += int32(42 + 1.5*sp); break;
                    case 11689: damage += int32(500 + 1.5*sp); break;
                    case 27222: damage += int32(710 + 1.5*sp); break;
                    case 57946: damage += int32(1490 + 1.5*sp); break;
sp берется отсуда
Код:
float sp = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo));
__________________
С недавних времен TrinityCore User
Viste вне форума  
Старый 04.05.2010, 22:27   #3
DiffuSer
Ученый
 
Аватар для DiffuSer
 
Регистрация: 07.03.2010
Сообщений: 131
Сказал(а) спасибо: 9
Поблагодарили 10 раз(а) в 10 сообщениях
DiffuSer На верном пути
По умолчанию

При таком решении мана становится бесконечной на начальных уровнях. Он практический не наносит урон, а маны дает значительное количество.
DiffuSer вне форума  
Старый 04.05.2010, 22:41   #4
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Viste Посмотреть сообщение
у меня в
Код:
switch (m_spellInfo->Id)
так
Код:
                    case  1454: damage += int32(0 + 1.5*sp); break;
                    case  1455: damage += int32(6 + 1.5*sp); break;
                    case  1456: damage += int32(24 + 1.5*sp); break;
                    case 11687: damage += int32(37 + 1.5*sp); break;
                    case 11688: damage += int32(42 + 1.5*sp); break;
                    case 11689: damage += int32(500 + 1.5*sp); break;
                    case 27222: damage += int32(710 + 1.5*sp); break;
                    case 57946: damage += int32(1490 + 1.5*sp); break;
sp берется отсуда
Код:
float sp = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo));
А разве базовый задаток damage (первое число у вас в скобке) не получен на более ранней стадии?
Insider42 вне форума  
Старый 06.05.2010, 14:01   #5
Viste
Новичок
 
Аватар для Viste
 
Регистрация: 07.03.2010
Сообщений: 13
Сказал(а) спасибо: 27
Поблагодарили 7 раз(а) в 5 сообщениях
Viste На верном пути
По умолчанию

да вы правы, я что-то затупил
add
можно еще так вместо всего
Код:
switch (m_spellInfo->Id)
просто добавить
Код:
damage+=spirit*15/10;
__________________
С недавних времен TrinityCore User

Последний раз редактировалось Viste; 06.05.2010 в 18:22.
Viste вне форума  
Старый 06.05.2010, 19:42   #6
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Viste Посмотреть сообщение
можно еще так вместо всего
Код:
switch (m_spellInfo->Id)
просто добавить
Код:
damage+=spirit*15/10;
А у меня разве не так?
Insider42 вне форума  
Старый 08.05.2010, 12:46   #7
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Протестировал таки свой патч. C последним рангом способности работает четко. Единственное отличие, скорее даже "фича" мангоса - восстанавливает на 1 маны меньше и отнимает на 1 здоровья меньше

А вот с навыками пониже уровня странность - на способности пишет 701 маны например, но даёт 710. Причем разница на всех кроме последнего ранга составляет всего 9 маны. Врятли это какой-либо penalty для бонуса заклинаний, скорее всего формула для низких рангов чуть чуть иная, либо же косяк на стороне клиента.

Последний раз редактировалось Insider42; 08.05.2010 в 12:57.
Insider42 вне форума  
Старый 08.05.2010, 15:55   #8
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

А ничего, что сами близзы сказали, что на способности неправильно написано?
LordJZ вне форума  
Старый 11.05.2010, 13:25   #9
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Patch 3.3.3: "This spell no longer scales with spirit, and instead scales with spell power."
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
Старый 11.05.2010, 13:41   #10
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Vladimir Посмотреть сообщение
Patch 3.3.3: "This spell no longer scales with spirit, and instead scales with spell power."
близы часто говорят одно а делают другое. У меня даже с подсказками сходится на последнем ранге и на вовхеде формула такая же как в моем патче.

Игроки с оффа тоже подтвердили, что наносимый по игроку урон всё ещё базируется на духе, а мана уже на силе заклинаний.

Цитата:
Converts [0 + SPI * 1.5] health into [0 + SPS * 0.5 * 1] mana. Spell power increases the amount of mana returned.
Цитата:
Преобразование [0 + SPI * 1.5] ед. здоровья в [0 + SPS * 0.5 * 1] ед. маны. Сила заклинаний повышает количество получаемой маны.
http://www.wowhead.com/spell=1454

Последний раз редактировалось Insider42; 11.05.2010 в 13:47.
Insider42 вне форума  
Старый 11.05.2010, 13:49   #11
Vladimir
MaNGOS Dev
 
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
Vladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небесVladimir Как свет с небес
По умолчанию

Я не увидел нигде в комментариях опровержений к изменениям в 3.3.3

Добавлено с удалением спирит-части в [9872]. Спасибо.
__________________
Так как устал объяснять знайте ICQ не пользуюсь
Vladimir вне форума  
 


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

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


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


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