|
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
23.04.2012, 20:11 | #1 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
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 |
23.04.2012, 20:57 | #2 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
эта проверка есть и в чистом мангосе немного ниже, туда просто надо добавить проверку 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; } } |
Пользователь сказал cпасибо: | KiriX (25.04.2012) |
25.04.2012, 00:22 | #3 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
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; } } Последний раз редактировалось schmoozerd; 25.04.2012 в 00:50. |
25.04.2012, 07:01 | #4 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
Код:
// 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; } } |
25.04.2012, 11:57 | #5 | |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
this will just not work
From your code: Цитата:
|
|
25.04.2012, 12:05 | #6 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
It is worth to remember also about talent http://www.wowhead.com/spell=55709
|
25.04.2012, 12:25 | #7 | |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
for me work fine. over a year...
Цитата:
AttributesEx2: 0x00000001 (SPELL_ATTR2_ALLOW_DEAD_TARGET) |
|
25.04.2012, 12:30 | #8 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
Spell 2641 doesn't have this attribute.
|
25.04.2012, 12:49 | #10 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
as I said - would not work correctly..
|
25.04.2012, 13:10 | #12 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
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... |
25.04.2012, 13:35 | #13 |
Почетный флудер
Старожил
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
|
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). |
26.04.2012, 20:49 | #14 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
In some minimal form in [11981].
Thank you |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[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 |