Ru-MaNGOS

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

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

Отвергнутые патчи Патчи, отвергнутые от приёма в GIT

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.05.2010, 10:15   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch/dev] Lay on Hands (Возложение рук)

С одним из последних патчей спел должен накладывать 25771 (Forbearance) и 61987 (Avenging Wrath Marker) на того, на кого было применено заклинание. Точно также как и остальные "бубли"
Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 8a1c134..cbc04e3 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2817,8 +2817,8 @@ void Spell::cast(bool skipCheck)
                 if (m_targets.getUnitTarget() && m_targets.getUnitTarget()->getVictim() != m_caster)
                     AddPrecastSpell(67485);                 // Hand of Rekoning (no typos in name ;) )
             }
-            // Divine Shield, Divine Protection or Hand of Protection
-            else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000400080))
+            // Divine Shield, Divine Protection, Hand of Protection or Lay on Hands
+            else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000408080))
             {
                 AddPrecastSpell(25771);                     // Forbearance
                 AddPrecastSpell(61987);                     // Avenging Wrath Marker
Осталась одна проблема - как заблокировать использование самой способности если на цели 25771 (Forbearance) висит? Я не нашёл кода (может и плохо глядел) отвечающего за это...
Insider42 вне форума   Ответить с цитированием
Старый 18.05.2010, 13:13   #2
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

По аналогии с Hand of Protection?

upd: что-то не нашел отработки форбиранса вообще. Получается что сейчас это дело не кастится только засчет проверки в клиенте? оО

Последний раз редактировалось Energy; 18.05.2010 в 13:20.
Energy вне форума   Ответить с цитированием
Старый 18.05.2010, 13:16   #3
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Energy Посмотреть сообщение
По аналогии с Hand of Protection?
да, я так и не смог найти кусок кода предотвращающий использование спелов под Forbearance
Insider42 вне форума   Ответить с цитированием
Старый 18.05.2010, 13:51   #4
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Проверка только сервер, на клиенте не работает)
Код:
void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)
{
    uint32 misc  = m_modifier.m_miscvalue;
    // Forbearance
    // in DBC wrong mechanic immune since 3.0.x
    if (GetId() == 25771)
        misc = MECHANIC_IMMUNE_SHIELD;
Это предотвращает использование любых спеллов с щитовой(29) механикой, а для возложения видимо придется писать отдельную проверку
MaS0n вне форума   Ответить с цитированием
Старый 18.05.2010, 14:15   #5
Energy
Пользователь
 
Регистрация: 04.05.2010
Сообщений: 54
Сказал(а) спасибо: 11
Поблагодарили 13 раз(а) в 11 сообщениях
Energy На верном пути
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Проверка только сервер, на клиенте не работает)
Код:
void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)
{
    uint32 misc  = m_modifier.m_miscvalue;
    // Forbearance
    // in DBC wrong mechanic immune since 3.0.x
    if (GetId() == 25771)
        misc = MECHANIC_IMMUNE_SHIELD;
Это предотвращает использование любых спеллов с щитовой(29) механикой, а для возложения видимо придется писать отдельную проверку
Что на самом деле тоже неправильно, ибо форбиранс предотвращает использование _только_ бопа, шилдволла, и дивайн шилда. ну и лоха (если в себя)
Energy вне форума   Ответить с цитированием
Старый 18.05.2010, 16:10   #6
MaS0n
Модератор
 
Регистрация: 09.03.2010
Адрес: dev/null
Сообщений: 126
Сказал(а) спасибо: 44
Поблагодарили 111 раз(а) в 47 сообщениях
MaS0n Скоро придёт к известностиMaS0n Скоро придёт к известности
Отправить сообщение для MaS0n с помощью ICQ
По умолчанию

Это, кстати, официальный код - возможно механику форбиранса нужно переписать более корректно. У меня в мыслях только Spell:CheckCast - там же, где чекаются aurastate, делать что-то вроде custom exclude check для подобных спеллов
Кстати, если не ошибаюсь, Истощение/Пресыщение у шаманов тоже не рабит без вмешательств
MaS0n вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Insider42 (18.05.2010)
Старый 18.05.2010, 16:56   #7
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от MaS0n Посмотреть сообщение
Проверка только сервер, на клиенте не работает)
Код:
void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)
{
    uint32 misc  = m_modifier.m_miscvalue;
    // Forbearance
    // in DBC wrong mechanic immune since 3.0.x
    if (GetId() == 25771)
        misc = MECHANIC_IMMUNE_SHIELD;
Это предотвращает использование любых спеллов с щитовой(29) механикой, а для возложения видимо придется писать отдельную проверку
Вот из-за этого приходится писать хаки на снятие аур по ID для исправления Сокрушающего броска

Рад, что наконец заставил хоть кого-то пошевелится на этом форуме xD
А то только и занят тем, что веду монологи

Последний раз редактировалось Insider42; 18.05.2010 в 17:00.
Insider42 вне форума   Ответить с цитированием
Ответ


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

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



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


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