Ru-MaNGOS

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

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

Патчи на рассмотрении Рассматриваемые к принятию патчи

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.09.2010, 14:59   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch] Crypt Fever & Ebon Plaguebringer

Суть проблемы: полностью отсутствует реализация работы талантов Crypt Fever (Предсмертная лихорадка) и Ebon Plaguebringer (Разносчик черной чумы) у рыцарей смерти.

Таблетка (автор - я)
Код:
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 95df7d0..564eea3 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -2038,6 +2038,11 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
                 // Blood Presence and Blood Presence (triggered)
                 if (spellInfo_1->SpellIconID == 2636 && spellInfo_2->SpellIconID == 2636)
                     return false;
+
+                // Crypt Fever and Ebon Plague
+                if((spellInfo_1->SpellIconID == 264 && spellInfo_2->SpellIconID == 1933) ||
+                   (spellInfo_2->SpellIconID == 264 && spellInfo_1->SpellIconID == 1933))
+                    return true;
             }
             break;
         default:
diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp
index a401316..e409f5c 100644
--- a/src/game/UnitAuraProcHandler.cpp
+++ b/src/game/UnitAuraProcHandler.cpp
@@ -3688,6 +3688,40 @@ SpellAuraProcResult Unit::HandleOverrideClassScriptAuraProc(Unit *pVictim, uint3
             }
             break;
         }
+        case 7282:                                          // Crypt Fever & Ebon Plaguebringer
+        {
+            if (!procSpell || pVictim == this)
+                return SPELL_AURA_PROC_FAILED;
+
+            bool HasEP = false;
+            Unit::AuraList const& scriptAuras = GetAurasByType(SPELL_AURA_OVERRIDE_CLASS_SCRIPTS);
+            for(Unit::AuraList::const_iterator i = scriptAuras.begin(); i != scriptAuras.end(); ++i)
+            {
+                if ((*i)->GetSpellProto()->SpellIconID == 1766)
+                {
+                    HasEP = true;
+                    break;
+                }
+            }
+
+            if (!HasEP)
+                switch(triggeredByAura->GetId())
+                {
+                    case 49032: triggered_spell_id = 50508; break;
+                    case 49631: triggered_spell_id = 50509; break;
+                    case 49632: triggered_spell_id = 50510; break;
+                    default: return SPELL_AURA_PROC_FAILED;
+                }
+            else
+                switch(triggeredByAura->GetId())
+                {
+                    case 51099: triggered_spell_id = 51726; break;
+                    case 51160: triggered_spell_id = 51734; break;
+                    case 51161: triggered_spell_id = 51735; break;
+                    default: return SPELL_AURA_PROC_FAILED;
+                }
+            break;
+        }
     }
 
     // not processed
В базу
Код:
DELETE FROM `spell_proc_event` where `entry` IN (49032,51099);
INSERT INTO `spell_proc_event` VALUES
(49032,0x0,0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000,0.000000,0.000000,0),
(51099,0x0,0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00010000,0x00000000,0.000000,0.000000,0);
Единственное, что мне не понятно - может ли Crypt Fever от одного ДК заменить Ebon Plague от другого ДК, если они кидают их на одну цель, на оффе? В моем патче заменяет, если не должен - один момент вправить.

Последний раз редактировалось Insider42; 28.09.2010 в 15:06.
Insider42 вне форума   Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
Burned (28.09.2010), Den (08.01.2011)
Старый 28.09.2010, 15:17   #2
Lordronn
Умный
 
Регистрация: 17.06.2010
Сообщений: 397
Сказал(а) спасибо: 58
Поблагодарили 55 раз(а) в 38 сообщениях
Lordronn Скоро придёт к известности
По умолчанию

Ну болезни не заменяют болезни наложенные другим ДК, уничтожение не снимает болезни, наложенные не тобой, и урон за них не дает, значит тут также
Lordronn вне форума   Ответить с цитированием
Старый 28.09.2010, 15:50   #3
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от Lordronn Посмотреть сообщение
Ну болезни не заменяют болезни наложенные другим ДК, уничтожение не снимает болезни, наложенные не тобой, и урон за них не дает, значит тут также
это не аргумент, нужны конкретные данные с оффа. То что вы сейчас описали выглядит так:
ДК №1 накладывает одну болезнь
ДК №2 накладывает вторую болезнь
Обе болезни действуют и мы получаем умопомрачительный урон... хотя тут тоже спорно, где-то умопиналось что болезни действуют только на себя. В общем без информации ничего менять не буду.

я выполнял чтобы работало, как написано в описании Разносчика черной чумы дословно

Последний раз редактировалось Insider42; 28.09.2010 в 15:52.
Insider42 вне форума   Ответить с цитированием
Старый 30.09.2010, 01:04   #4
xex
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 47
Сказал(а) спасибо: 45
Поблагодарили 29 раз(а) в 13 сообщениях
xex На верном пути
По умолчанию

Цитата:
Сообщение от Insider42 Посмотреть сообщение
Единственное, что мне не понятно - может ли Crypt Fever от одного ДК заменить Ebon Plague от другого ДК, если они кидают их на одну цель, на оффе? В моем патче заменяет, если не должен - один момент вправить.
У меня так в первой части. Судя по нему - может. Остальное похоже. Код не мой и точно сказать не могу, но никто не жаловался из игроков, что работает неверно:
PHP код:
                // Ebon Plague must replace Crypt Fever.
                
if ((spellInfo_1->Attributes 0x40000) && (spellInfo_1->AttributesEx 0x8) &&
                     (
spellInfo_2->Attributes 0x10) && (spellInfo_2->AttributesEx3 0x40000000))
                    return 
true;

                
// Higher rank Crypt Fever must replace lower.
                
if ((spellInfo_1->Attributes 0x10) && (spellInfo_1->AttributesEx3 0x40000000) &&
                     (
spellInfo_2->Attributes 0x10) && (spellInfo_2->AttributesEx3 0x40000000) &&
                     
spellInfo_1->Id spellInfo_2->Id)
                    return 
true;

                
// Higher rank Ebon Plague must replace lower.
                
if ((spellInfo_1->Attributes 0x40000) && (spellInfo_1->AttributesEx 0x8) &&
                     (
spellInfo_2->Attributes 0x40000) && (spellInfo_2->AttributesEx 0x8) &&
                     
spellInfo_1->Id spellInfo_2->Id)
                    return 
true
xex вне форума   Ответить с цитированием
Старый 30.09.2010, 09:14   #5
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от xex Посмотреть сообщение
У меня так в первой части. Судя по нему - может. Остальное похоже. Код не мой и точно сказать не могу, но никто не жаловался из игроков, что работает неверно:
PHP код:
                // Ebon Plague must replace Crypt Fever.
                
if ((spellInfo_1->Attributes 0x40000) && (spellInfo_1->AttributesEx 0x8) &&
                     (
spellInfo_2->Attributes 0x10) && (spellInfo_2->AttributesEx3 0x40000000))
                    return 
true;

                
// Higher rank Crypt Fever must replace lower.
                
if ((spellInfo_1->Attributes 0x10) && (spellInfo_1->AttributesEx3 0x40000000) &&
                     (
spellInfo_2->Attributes 0x10) && (spellInfo_2->AttributesEx3 0x40000000) &&
                     
spellInfo_1->Id spellInfo_2->Id)
                    return 
true;

                
// Higher rank Ebon Plague must replace lower.
                
if ((spellInfo_1->Attributes 0x40000) && (spellInfo_1->AttributesEx 0x8) &&
                     (
spellInfo_2->Attributes 0x40000) && (spellInfo_2->AttributesEx 0x8) &&
                     
spellInfo_1->Id spellInfo_2->Id)
                    return 
true
Это видимо из древнейшего патча от Astellar, он был вроде аж для 3.2.2 патча и врятли оно актуально или вообще правильно.
Insider42 вне форума   Ответить с цитированием
Старый 16.10.2010, 01:24   #6
Johonson
Гость
 
Сообщений: n/a
По умолчанию

когда то писал подобный патч, только заменял я crypt fever на plaguebringer не через стаки, а в оверайдах. от каждого дк была своя болезнь, но из за того что была система стаков эффектов давала эффект только одна болезнь. Сейчас вроде бы есть проверка эффектов, но недавно выплыл баг с ней, так что твой вариант с одной болезнью на цели наверно более приемлем чем мой.

Из за перехода на 3.3.5 часть комитов поехала и куда то потерялась.. То что осталось http://github.com/narma/mangos/commi...fbab51fa831d1a

З.Ы. Обидно что мой фикс появился раньше но не был замечен так как скаляция болезний

Последний раз редактировалось Johonson; 16.10.2010 в 01:30.
  Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[patch]Mind Sear & Curse of the Plaguebringer Viste Патчи на рассмотрении 2 15.03.2010 19:58


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


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