Ru-MaNGOS

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

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

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

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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.04.2012, 20:11   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию Check cast Mend Pet

Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index a389f3c..388b02e 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -4814,6 +4814,20 @@ SpellCastResult Spell::CheckCast(bool strict)
                 return SPELL_FAILED_MOVING;
         }
 
+        // Prevent cast Mend Pet on dead pet
+        if (Unit* target = m_targets.getUnitTarget())
+        {
+            if (Pet* pet = target->GetPet())
+            {
+                if (!pet->isAlive())
+                {
+                    // Mend Pet
+                    if (m_spellInfo->IsFitToFamily(SPELLFAMILY_HUNTER, UI64LIT(0x0000000000800000)))
+                        return SPELL_FAILED_TARGETS_DEAD;
+                }
+            }
+        }
+
         if (!m_IsTriggeredSpell && NeedsComboPoints(m_spellInfo) && !m_caster->IsIgnoreUnitState(m_spellInfo, IGNORE_UNIT_TARGET_STATE) &&
             (!m_targets.getUnitTarget() || m_targets.getUnitTarget()->GetObjectGuid() != ((Player*)m_caster)->GetComboTargetGuid()))
             // warrior not have real combo-points at client side but use this way for mark allow Overpower use
Den вне форума  
Старый 23.04.2012, 20:57   #2
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

эта проверка есть и в чистом мангосе немного ниже, туда просто надо добавить проверку isAlive()
Код:
// check pet presents
        for(int j = 0; j < MAX_EFFECT_INDEX; ++j)
        {
            if(m_spellInfo->EffectImplicitTargetA[j] == TARGET_PET)
            {
                if(!m_caster->GetPet())
                {
                    if(m_triggeredByAuraSpell)              // not report pet not existence for t
                        return SPELL_FAILED_DONT_REPORT;
                    else
                        return SPELL_FAILED_NO_PET;
                }
                break;
            }
        }
rsa вне форума  
Пользователь сказал cпасибо:
KiriX (25.04.2012)
Старый 25.04.2012, 00:22   #3
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

I think rsa points to
Код:
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index a389f3c..f820164 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -4924,13 +4924,16 @@ SpellCastResult Spell::CheckCast(bool strict)
         {
             if(m_spellInfo->EffectImplicitTargetA[j] == TARGET_PET)
             {
-                if(!m_caster->GetPet())
+                Pet* pet = m_caster->GetPet();
+                if(!pet)
                 {
                     if(m_triggeredByAuraSpell)              // not report pet not existence for triggered spells
                         return SPELL_FAILED_DONT_REPORT;
                     else
                         return SPELL_FAILED_NO_PET;
                 }
+                else if (!pet->isAlive()) // Edit: Actually uses an exception for (at least) 2641
+                    return SPELL_FAILED_TARGETS_DEAD;
                 break;
             }
         }
Any further comments?

Последний раз редактировалось schmoozerd; 25.04.2012 в 00:50.
schmoozerd вне форума  
Старый 25.04.2012, 07:01   #4
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Код:
       // check pet presents
        for(int j = 0; j < MAX_EFFECT_INDEX; ++j)
        {
            if (m_spellInfo->EffectImplicitTargetA[j] == TARGET_PET)
            {
                Pet *pet = m_caster->GetPet();
                if (!pet || (!pet->isAlive() && !IsSpellAllowDeadTarget(m_spellInfo)))
                {
                    if (m_triggeredByAuraSpell)              // not report pet not existence for triggered spells
                        return SPELL_FAILED_DONT_REPORT;
                    else if (!pet)
                        return SPELL_FAILED_NO_PET;
                    else
                        return SPELL_FAILED_TARGETS_DEAD;
                }
                break;
            }
        }
rsa вне форума  
Старый 25.04.2012, 11:57   #5
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

this will just not work

From your code:
Цитата:
inline bool IsSpellAllowDeadTarget(SpellEntry const* spellInfo)
{
return spellInfo ? spellInfo->AttributesEx2 & SPELL_ATTR2_ALLOW_DEAD_TARGET : false;
}
schmoozerd вне форума  
Старый 25.04.2012, 12:05   #6
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию

It is worth to remember also about talent http://www.wowhead.com/spell=55709
Den вне форума  
Старый 25.04.2012, 12:25   #7
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от schmoozerd Посмотреть сообщение
this will just not work

From your code:
for me work fine. over a year...

Цитата:
Сообщение от Den Посмотреть сообщение
It is worth to remember also about talent http://www.wowhead.com/spell=55709
ID - 55709 Heart of the Phoenix
AttributesEx2: 0x00000001 (SPELL_ATTR2_ALLOW_DEAD_TARGET)
rsa вне форума  
Старый 25.04.2012, 12:30   #8
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

Spell 2641 doesn't have this attribute.
schmoozerd вне форума  
Старый 25.04.2012, 12:37   #9
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от schmoozerd Посмотреть сообщение
Spell 2641 doesn't have this attribute.
currently work of 2641 - partially hack. dead pet must be dismissed by 47531 (absent in DBC) - his must have this attr.
PS may be effect 1 of 2641 also must work on dead pet?
rsa вне форума  
Старый 25.04.2012, 12:49   #10
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

as I said - would not work correctly..
schmoozerd вне форума  
Старый 25.04.2012, 13:01   #11
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

Цитата:
Сообщение от schmoozerd Посмотреть сообщение
as I said - would not work correctly..
not work correctly with badly hacks? yes, i agree.

PS i'm cannot fit code to hacks. if spell absent in DBC, but must work - his require reconstruction, but not hacks like 11970 and some other...
rsa вне форума  
Старый 25.04.2012, 13:10   #12
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

well, i don't know what the missing spell related to 2641 is for.
But it cannot be used to dismiss the pet.
THat is just stupid for two reasons:
1) effect1 has the dismiss pet effect, so it would be redundant
2) the non-existent spell was not used in classic times, and I am farily sure that even in classic times a hunter was able to dismiss a pet...
schmoozerd вне форума  
Старый 25.04.2012, 13:35   #13
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

in classic _any_ spell be castable on dead target, if your not remember... not requre special addons like this.
in DBC big bunch of spells, reworked on 2.xx and next time reworked on 3.xx (4.xx, 5.xx).
rsa вне форума  
Старый 26.04.2012, 20:49   #14
schmoozerd
MaNGOS Dev
 
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
schmoozerd Скоро придёт к известности
По умолчанию

In some minimal form in [11981].
Thank you
schmoozerd вне форума  
 


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[11478] Prevent overwrite main target at spell cast check for TARGET_PET newsbot CMaNGOS Commits 0 12.05.2011 21:10
[11152] Clarify check code for SPELL_ATTR_EX5_USABLE_WHILE_STUNNED cast allowed newsbot CMaNGOS Commits 0 12.02.2011 20:50
[11085] Also disable related cast check when vmap.enableIndoorCheck disabled. newsbot CMaNGOS Commits 0 31.01.2011 02:41
[10636] Implement server side check combo points req. for spell cast. newsbot CMaNGOS Commits 11 22.10.2010 08:33
Force Cast timmit Запросы 2 14.08.2010 09:26


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


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