Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2010, 23:45   #1
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию [dev]SPELL_AURA_MOD_HEALING_DONE

Есть спеллы, у которых есть эффект ауры 135 (SPELL_AURA_MOD_HEALING_DONE), но изменение доп. хила не наблюдается визуально в статах игрока, при касте спеллов на лечение бонус также не ощущается.

Просмотрел все спеллы с аурой 135, у которых должна быть подобная ситуация (разбирал на примере 67684):
Код:
26276
37436
55637
60565
60566
60567
60568
60569
60570
63283
67684
70244
В Unit.cpp в int32 Unit::SpellBaseHealingBonusDone(SpellSchoolMask schoolMask) есть условие:
Код:
if(((*i)->GetModifier()->m_miscvalue & schoolMask) != 0)
но для этих спеллов:
(*i)->GetModifier()->m_miscvalue = 0
schoolMask = SPELL_SCHOOL_MASK_ALL // 127

В итоге 0 & 127 = 0, поэтому по условию бонус не рассчитывается.

Как мне кажется, надо изменить условие, чтобы бонусы подобных спеллов отрабатывали.

Варианты (на вскидку):
Код:
if(((*i)->GetModifier()->m_miscvalue & schoolMask) != 0 || (*i)->GetModifier()->m_miscvalue == 0)
Код:
if(((*i)->GetModifier()->m_miscvalue & schoolMask) != 0 || schoolMask == SPELL_SCHOOL_MASK_ALL)
У себя для тестов поставил
Код:
if(((*i)->GetModifier()->m_miscvalue & schoolMask) != 0 || ((*i)->GetModifier()->m_miscvalue == 0 && schoolMask == SPELL_SCHOOL_MASK_ALL))
С таким условием все указанные выше спеллы визуально дают бонус в статах игрока, который также ощущается при касте спеллов на лечение.

Проверил некоторые спеллы на выбор с аурой 135 не из этого списка - бонусы не изменились, т.к. в цикл заходит по старому условию.

Сегодня уже нет времени проверять дальше.
Какие будут отзывы и предложения?
virusav вне форума  
Пользователь сказал cпасибо:
Laise (07.06.2010)
Старый 02.06.2010, 22:02   #2
virusav
Администратор
 
Аватар для virusav
 
Регистрация: 19.02.2010
Сообщений: 492
Сказал(а) спасибо: 55
Поблагодарили 341 раз(а) в 154 сообщениях
virusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человекvirusav Реально хороший человек
Отправить сообщение для virusav с помощью ICQ
По умолчанию

Просмотрел все, откуда идет заход в SpellBaseHealingBonusDone, но нигде не нашел захода в блок с условием, которое менял, т.е. измененное условие не нарушает работу других спеллов.

Кроме того, перед циклом идет
Код:
AuraList const& mHealingDone = GetAurasByType(SPELL_AURA_MOD_HEALING_DONE);
Т.е. выбираются все с данным типом аур, т.е. другие сюда даже попасть не могут.
virusav вне форума  
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[10049] Fix SPELL_AURA_MOD_HEALING_DONE healing bonus with 0 misc value newsbot CMaNGOS Commits 0 10.06.2010 12:20


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


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