Ru-MaNGOS

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

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

Патчи Если кто-то хочет выложить не свой готовый патч - не забудьте указать автора и источник.

Если кто-то хочет задать вопрос по патчу - велкам.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2010, 22:08   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch/dev] Anti-Magic zone (Зона антимагии)

Суть проблемы:
Не учитывался бонус силы атаки для заклинания.

Предположительный фикс
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 5668769..13ea8b9 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -7410,6 +7410,12 @@ void Aura::HandleSchoolAbsorb(bool apply, bool Real)
                         DoneActualBenefit = caster->SpellBaseHealingBonusDone(GetSpellSchoolMask(spellProto)) * 0.75f;
                     }
                     break;
+                case SPELLFAMILY_DEATHKNIGHT:
+                    // Anti-magic shield
+                    if (spellProto->Id == 50461)
+                        if (Unit *owner = caster->GetOwner())
+                            DoneActualBenefit += caster->GetOwner()->GetTotalAttackPowerValue(BASE_ATTACK) * 2;
+                    break;
                 default:
                     break;
             }
У меня смутное сомнение что код должен быть чуть ниже, т.к. мы считаем для него LevelPenalty, что по-моему неверно для спеллов берущих бонус АП

Возможно также потребуется проверка на то, игрок ли caster

Патч вообще не тестировался, жду комментариев

Последний раз редактировалось Insider42; 22.06.2010 в 22:10.
Insider42 вне форума   Ответить с цитированием
Старый 22.06.2010, 23:40   #2
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Код:
+                    // Anti-magic shield
+                    if (spellProto->Id == 50461)
+                        if (Unit *owner = caster->GetOwner())
+                            DoneActualBenefit += caster->GetOwner()->GetTotalAttackPowerValue(BASE_ATTACK) * 2;
На вовхеде формула: 10000 + 2 * AP. Базовые 10000 абсорба тоже надо учесть. Причем они хранятся как basepoints у спелла http://ru.wowhead.com/spell=51052
zergtmn вне форума   Ответить с цитированием
Старый 23.06.2010, 11:02   #3
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

всё там учитывается, между прочим там += стоит. Гляньте ниже по коду и поймёте о чем я. Как я уже говорил, вопрос в том, должен ли быть LevelPenalty для него?
Insider42 вне форума   Ответить с цитированием
Старый 23.06.2010, 11:09   #4
zergtmn
MaNGOS Dev
 
Аватар для zergtmn
 
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
zergtmn Обладатель прекрасной аурыzergtmn Обладатель прекрасной ауры
По умолчанию

Не нашел, где вычисляется базовый абсорб.
Идет:
Код:
float DoneActualBenefit = 0.0f;
потом свич по spellfamily, например:
Код:
                case SPELLFAMILY_WARLOCK:
                    // Shadow Ward
                    if (spellProto->SpellFamilyFlags2 & 0x00000040)
                        //+30% from +spell bonus
                        DoneActualBenefit = caster->SpellBaseDamageBonusDone(GetSpellSchoolMask(spellProto)) * 0.30f;
                    break;
И в конце:
Код:
m_modifier.m_amount += (int32)DoneActualBenefit;
Откуда возьмется в m_modifier.m_amount 10000, если спеллы разные? Или я что-то не понимаю?
10000 в данном случае хранится в спелле суммона.
zergtmn вне форума   Ответить с цитированием
Старый 23.06.2010, 11:15   #5
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Вообще это дело нада в игре теститЬ, чего я сейчас сделать не могу. Игроки говорят что он абсорбит сейчас (без патча), но не учитывает АП. Т.е. сумма абсорба сейчас статична.
Insider42 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Lightunit (23.06.2010)
Старый 23.06.2010, 14:40   #6
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Кто-нибудь уже протестил?
Insider42 вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зона ДК Gen1us2k Скрипты 2 31.01.2011 15:23
[patch] Magic Rooster Egg (Яйцо волшебного петуха) xex Патчи 7 05.10.2010 05:49
[Mod] Anti-Farming (разработка) Hantet Запросы 37 08.09.2010 08:57
[10210] Do unmount at expire restricted flight zone debuf if still in restricted zone/etc. newsbot CMaNGOS Commits 0 17.07.2010 20:50
[patch] Magic Broom (Волшебная метла) Insider42 Патчи на рассмотрении 6 17.05.2010 18:00


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


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