Ru-MaNGOS

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2010, 13:59   #1
Insider42
Ученый
 
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
Insider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранитаInsider42 Как самоцвет среди гранита
По умолчанию [patch/dev] Heart of the Phoenix (Сердце Феникса)

Суть проблемы:
1) спел кастуется даже если пет живой, такого быть не должно
2) спел не кастуется когда пет мертв
3) спел не вызывает второй эффект, который как раз и должен воскрешать
4) эффект SPELL_EFFECT_SUMMON_DEAD_PET с режимом TARGET_DUELVSPLAYER_COORDINATES имеет проблему с неверной выборкой цели. Возможно её нужно задавать принудительно, где именно пока я не разобрался. Эта проблема не актуальна если всё таки окажеться что верный вариант патча Часть 2 вариант Б.
5) панель мертвого пета полностью заблокирована что препятствует использованию спонобности, я пока не отследил откуда это :/ может быть SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED); так влияет

Часть 1. Реализация необходимого нам флага
Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 5b105ee..a8c8a7a 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -5317,9 +5317,12 @@ SpellCastResult Spell::CheckCast(bool strict)
 
 SpellCastResult Spell::CheckPetCast(Unit* target)
 {
-    if(!m_caster->isAlive())
+    if(!m_caster->isAlive() && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD))
         return SPELL_FAILED_CASTER_DEAD;
 
+    if (m_caster->isAlive() && (m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_DEAD))
+        return SPELL_FAILED_TARGET_NOT_DEAD;
+
     if(m_caster->IsNonMeleeSpellCasted(false))              //prevent spellcast interruption by another spellcast
         return SPELL_FAILED_SPELL_IN_PROGRESS;
     if(m_caster->isInCombat() && IsNonCombatSpell(m_spellInfo))
Часть 2. Реализация эффекта
Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 4ef16e1..d7ddd91 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -6362,6 +6364,14 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
                     unitTarget->CastSpell(unitTarget, 62305, true);
                     return;
                 }
+                case 55709:                                 // Heart of the Phoenix
+                {
+                    if (!unitTarget && unitTarget->isAlive())
+                        return;
+
+                    unitTarget->CastSpell(unitTarget, 54114, true);
+                    return;
+                }
                 default:
                     break;
             }
Как я уже говорил - проблема патча в П4 (пункт 4). Кто поможет?

Возможно это неверная реализация, например я незнаю кто же всё таки должен кастовать способность - хозяин или пет сам на себя? Получается какой-то бред если хозяин, т.к. появляется полоска каста, которую может заменить любой другой кастуемый спел. Зато в этом случае надобность вправлять П4 (пункт 4) отпадает

Часть 2 вариант Б. Колдуем от лица самого охотника
Код:
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 9c8373f..955f8de 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -6395,6 +6395,18 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
                     unitTarget->CastSpell(unitTarget, 62305, true);
                     return;
                 }
+                case 55709:                                 // Heart of the Phoenix
+                {
+                    if (!unitTarget)
+                        return;
+
+                    Unit *owner = unitTarget->GetOwner();
+                    if (!owner)
+                        return;
+
+                    owner->CastSpell(owner, 54114, true);
+                    return;
+                }
                 default:
                     break;
             }
Может есть какой-то флаг скрывающий отображение полоски каста и предотвращающий замену кастуемого заклинания другим?

Последний раз редактировалось Insider42; 28.05.2010 в 14:14.
Insider42 вне форума   Ответить с цитированием
Старый 31.05.2010, 02:47   #2
wk23
Пользователь
 
Регистрация: 11.03.2010
Адрес: Спб
Сообщений: 35
Сказал(а) спасибо: 5
Поблагодарили 10 раз(а) в 8 сообщениях
wk23 На верном пути
По умолчанию



wk23 вне форума   Ответить с цитированием
Старый 26.04.2013, 13:50   #3
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

Полоски каста для спела 54114 не должно быть, в дбц неверное значение. Вспоминая оф сервер, ее там не было и нету.
Den вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[patch/dev]Heart of the Wild virusav Патчи 21 18.07.2010 22:21
Heart of the Wild xmolex Новичкам 14 14.04.2010 20:22
[patch] Реализация бонуса к Death Coil от Sigil of the Vengeful Heart Warlord123 Патчи на рассмотрении 0 15.03.2010 14:01


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


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