|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Принятые патчи Иногда выкладывают патчи, которые потом в итоге все-таки принимают в ядро.
Повод для гордости. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
01.07.2012, 22:05 | #1 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
[patch] Fix talent Scent of Blood
Талант у дк, должен снимать по одному стаку после попадания по противнику в ближнем бою, у нас не снимались стаки вообще.
Код:
diff --git a/src/game/UnitAuraProcHandler.cpp b/src/game/UnitAuraProcHandler.cpp index 342508e..bfc1171 100644 --- a/src/game/UnitAuraProcHandler.cpp +++ b/src/game/UnitAuraProcHandler.cpp @@ -3026,31 +3026,31 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d } break; case SPELLFAMILY_WARRIOR: + { // Deep Wounds (replace triggered spells to directly apply DoT), dot spell have familyflags - if (auraSpellInfo->SpellFamilyFlags == UI64LIT(0x0) && auraSpellInfo->SpellIconID == 243) + if (auraSpellInfo->IsFitToFamilyMask(UI64LIT(0x0000000000000000)) && auraSpellInfo->SpellIconID == 243) { - float weaponDamage; - // DW should benefit of attack power, damage percent mods etc. - // TODO: check if using offhand damage is correct and if it should be divided by 2 + float weaponDamage = 0.0f; + // Deep Wounds should benefit of attack power, damage percent mods etc. if (haveOffhandWeapon() && getAttackTimer(BASE_ATTACK) > getAttackTimer(OFF_ATTACK)) - weaponDamage = (GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE) + GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE))/2; + weaponDamage = (GetFloatValue(UNIT_FIELD_MINOFFHANDDAMAGE) + GetFloatValue(UNIT_FIELD_MAXOFFHANDDAMAGE)) / 2; else - weaponDamage = (GetFloatValue(UNIT_FIELD_MINDAMAGE) + GetFloatValue(UNIT_FIELD_MAXDAMAGE))/2; + weaponDamage = (GetFloatValue(UNIT_FIELD_MINDAMAGE) + GetFloatValue(UNIT_FIELD_MAXDAMAGE)) / 2; switch (auraSpellInfo->Id) { - case 12834: basepoints[0] = int32(weaponDamage * 16 / 100); break; - case 12849: basepoints[0] = int32(weaponDamage * 32 / 100); break; - case 12867: basepoints[0] = int32(weaponDamage * 48 / 100); break; - // Impossible case + case 12834: basepoints[EFFECT_INDEX_0] = static_cast<int32>(weaponDamage * 16 / 100); break; + case 12849: basepoints[EFFECT_INDEX_0] = static_cast<int32>(weaponDamage * 32 / 100); break; + case 12867: basepoints[EFFECT_INDEX_0] = static_cast<int32>(weaponDamage * 48 / 100); break; default: - sLog.outError("Unit::HandleProcTriggerSpellAuraProc: DW unknown spell rank %u",auraSpellInfo->Id); + { + sLog.outError("Unit::HandleProcTriggerSpellAuraProc: Deep Wounds unknown spell rank %u", auraSpellInfo->Id); return SPELL_AURA_PROC_FAILED; + } } // 1 tick/sec * 6 sec = 6 ticks - basepoints[0] /= 6; - + basepoints[EFFECT_INDEX_0] /= 6; trigger_spell_id = 12721; break; } @@ -3061,8 +3061,17 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d return SPELL_AURA_PROC_FAILED; } else if (auraSpellInfo->Id == 50421) // Scent of Blood + { + if (!(procFlags & PROC_FLAG_SUCCESSFUL_MELEE_HIT)) + return SPELL_AURA_PROC_FAILED; + + RemoveAuraHolderFromStack(50421); trigger_spell_id = 50422; + target = this; + break; + } break; + } case SPELLFAMILY_WARLOCK: { // Drain Soul @@ -3070,7 +3079,7 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d { // search for "Improved Drain Soul" dummy aura Unit::AuraList const& mDummyAura = GetAurasByType(SPELL_AURA_DUMMY); - for(Unit::AuraList::const_iterator i = mDummyAura.begin(); i != mDummyAura.end(); ++i) + for (Unit::AuraList::const_iterator i = mDummyAura.begin(); i != mDummyAura.end(); ++i) { if ((*i)->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && (*i)->GetSpellProto()->SpellIconID == 113) { @@ -3096,16 +3105,16 @@ SpellAuraProcResult Unit::HandleProcTriggerSpellAuraProc(Unit *pVictim, uint32 d { if (!procSpell) return SPELL_AURA_PROC_FAILED; - switch(GetFirstSchoolInMask(GetSpellSchoolMask(procSpell))) + + switch (GetFirstSchoolInMask(GetSpellSchoolMask(procSpell))) { - case SPELL_SCHOOL_NORMAL: - return SPELL_AURA_PROC_FAILED; // ignore case SPELL_SCHOOL_HOLY: trigger_spell_id = 54370; break; case SPELL_SCHOOL_FIRE: trigger_spell_id = 54371; break; case SPELL_SCHOOL_NATURE: trigger_spell_id = 54375; break; case SPELL_SCHOOL_FROST: trigger_spell_id = 54372; break; case SPELL_SCHOOL_SHADOW: trigger_spell_id = 54374; break; case SPELL_SCHOOL_ARCANE: trigger_spell_id = 54373; break; + case SPELL_SCHOOL_NORMAL: default: return SPELL_AURA_PROC_FAILED; } Последний раз редактировалось Den; 01.07.2012 в 22:39. |
01.07.2012, 23:03 | #2 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Код:
if (auraSpellInfo->IsFitToFamilyMask(UI64LIT(0x0000000000000000))
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
Пользователь сказал cпасибо: | Den (01.07.2012) |
01.07.2012, 23:10 | #3 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
А ведь из SPELLFAMILY_WARRIOR, только Deep Wounds имеет SpellIconID == 264
Может тогда, это сравнение нулевой маски вообще не нужно? А проверять только SpellIconID |
01.07.2012, 23:11 | #4 |
MaNGOS Dev
Регистрация: 09.02.2010
Сообщений: 594
Сказал(а) спасибо: 315
Поблагодарили 438 раз(а) в 181 сообщениях
|
Ну может быть - но лучше перепроверить по dbc - или она была нужна ранее с другим dbc, или всетаки есть какой-то спелл неудобный... лишние проверки странно если добавлялись
__________________
Так как устал объяснять знайте ICQ не пользуюсь |
20.05.2013, 18:15 | #5 |
MaNGOS Dev
Регистрация: 17.11.2011
Сообщений: 99
Сказал(а) спасибо: 35
Поблагодарили 80 раз(а) в 26 сообщениях
|
In [12506]. Thank you
Последний раз редактировалось schmoozerd; 20.05.2013 в 23:39. |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10832][patch][spell=46221]Animal Blood | virusav | Принятые патчи | 1 | 07.12.2010 06:16 |
[10035][patch] Blood-Caked Blade (Закаленный в крови клинок) | Insider42 | Принятые патчи | 2 | 06.06.2010 17:11 |
[SPELL=50141]Blood Oath | virusav | Баг-репорты | 8 | 26.04.2010 22:43 |
[patch] Blood Fury - debuf healing effects | Den | Отвергнутые патчи | 1 | 12.04.2010 14:25 |
[9661] Implement dual talent specializations in talent switch part. | newsbot | CMaNGOS Commits | 1 | 03.04.2010 06:39 |