Цитата:
Сообщение от selector
но не считаю, что это правильный вариант. Также необходимо учитывать, что у 2 из спелов-аур есть еще по одному EFFECT_INDEX которые дают "бонусы" владельцу.
|
Ну случай интересный, тогда это вообще не в этой функции делаться должно, ведь тут мы заменяем ауру целиком.
Должно быть так
Код:
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 5b95452..a08a67d 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -5758,6 +5758,15 @@ void Aura::HandleAuraModRangedAttackPower(bool apply, bool /*Real*/)
void Aura::HandleAuraModAttackPowerPercent(bool apply, bool /*Real*/)
{
+ if (apply)
+ {
+ Unit::AuraList const& APPauras = GetTarget()->GetAurasByType(SPELL_AURA_MOD_ATTACK_POWER_PCT);
+ for(Unit::AuraList::const_iterator itr = APPauras.begin(); itr != APPauras.end(); ++itr)
+ {
+ if((*itr)->GetSpellProto()->SpellIconID != GetSpellProto()->SpellIconID)
+ return;
+ }
+ }
//UNIT_FIELD_ATTACK_POWER_MULTIPLIER = multiplier - 1
GetTarget()->HandleStatModifier(UNIT_MOD_ATTACK_POWER, TOTAL_PCT, float(m_modifier.m_amount), apply);
}
@@ -5767,6 +5776,16 @@ void Aura::HandleAuraModRangedAttackPowerPercent(bool apply, bool /*Real*/)
if((GetTarget()->getClassMask() & CLASSMASK_WAND_USERS)!=0)
return;
+ if (apply)
+ {
+ Unit::AuraList const& APPauras = GetTarget()->GetAurasByType(SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT);
+ for(Unit::AuraList::const_iterator itr = APPauras.begin(); itr != APPauras.end(); ++itr)
+ {
+ if((*itr)->GetSpellProto()->SpellIconID != GetSpellProto()->SpellIconID)
+ return;
+ }
+ }
+
//UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = multiplier - 1
GetTarget()->HandleStatModifier(UNIT_MOD_ATTACK_POWER_RANGED, TOTAL_PCT, float(m_modifier.m_amount), apply);
}
я его естественно не тестировал
И if (apply) там возможно не нужен, это так... для подстраховки, ну и чтоб цикл по аурам не гонять лишний раз
EDIT:
Также в патч нада бы запихать проверку на наличие этого флага, иначе
http://www.wowhead.com/?spell=53434 и подобные станут тоже заменяться, хотя не должны - это делайте уже сами, или я сделаю за вас, но уже завтра...
Тут
http://www.wowhead.com/?spell=53138#comments список всех спеллов которые должны также стакаться, хоть список и для катаклизма, но мало что изменилось, по ним можно удостовериться реально ли этот флаг правильный для определения стакаться или нет