|
Новичкам Информация для всех новичков, новичкам рекомендуется задавать свои вопросы здесь |
|
Опции темы | Поиск в этой теме | Опции просмотра |
29.10.2010, 18:43 | #1 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
|
SpellStack rules
Доброе времени суток RMDC.
Не знал где создать тему и решил в разделе для новичков. Необходима помощь(возможно после решения проблемы будет и коммит в мангосе). Имеются спелы http://thottbot.com/?e=Apply%20Aura%...%20Power%20%25 на оффе они не стакаются. Просмотрев каждый спелл через spellwork обратил внимание на схожие Атрибуты у них, а именно Код:
AttributesExG: 0x10000000 (SPELL_ATTR_EXG_UNK28) В спелах есть параметры: Код:
Aura Id 167 (SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT), Код:
Aura Id 166 (SPELL_AURA_MOD_ATTACK_POWER_PCT), Есть вариант создания самого правила по атрибутам и вписать в SpellMgr::IsNoStackSpellDueToSpell по SpellIconID Код:
if (spellInfo_1->AttributesExG & SPELL_ATTR_EXG_UNK28 && spellInfo_2->AttributesExG & SPELL_ATTR_EXG_UNK28) { // Высвобожденная ярость & Сила поганища if( spellInfo_1->SpellIconID == 2729 && spellInfo_2->SpellIconID == 2021 || spellInfo_2->SpellIconID == 2021 && spellInfo_1->SpellIconID == 2729 ) return true; // Аура меткого выстрела & Сила поганища if( spellInfo_1->SpellIconID == 128 && spellInfo_2->SpellIconID == 2021 || spellInfo_2->SpellIconID == 2021 && spellInfo_1->SpellIconID == 128 ) return true; // Аура меткого выстрела & Высвобожденная ярость if( spellInfo_1->SpellIconID == 128 && spellInfo_2->SpellIconID == 2729 || spellInfo_2->SpellIconID == 2729 && spellInfo_1->SpellIconID == 128 ) return true; } У Высвобожденная ярость Код:
Effect 0: Id 6 (SPELL_EFFECT_APPLY_AURA) BasePoints = 9 Targets (1, 0) (TARGET_SELF, NO_TARGET) Aura Id 240 (SPELL_AURA_MOD_EXPERTISE) Код:
Effect 1: Id 6 (SPELL_EFFECT_APPLY_AURA) BasePoints = 2 Targets (1, 0) (TARGET_SELF, NO_TARGET) Aura Id 137 (SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE), Надеюсь на вашу помочь... Ах да чуть не забыл: Core: 10654 (not clean) DB: YTDB 569 SD: ...... Последний раз редактировалось selector; 29.10.2010 в 18:45. |
30.10.2010, 22:13 | #2 | |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Цитата:
Должно быть так Код:
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 список всех спеллов которые должны также стакаться, хоть список и для катаклизма, но мало что изменилось, по ним можно удостовериться реально ли этот флаг правильный для определения стакаться или нет Последний раз редактировалось Insider42; 31.10.2010 в 08:25. |
|
30.10.2010, 22:57 | #3 | |
Пользователь
Регистрация: 12.03.2010
Сообщений: 64
Сказал(а) спасибо: 23
Поблагодарили 10 раз(а) в 5 сообщениях
|
Цитата:
P.S. о Твоем варианте решения проблемы, я даже и не подумал...плохо еще разбираюсь в коде)) |
|
30.10.2010, 22:58 | #4 | |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Цитата:
Ауры должны висеть в бафах, но только одна из них должна реально давать бонус силы атаки. Проверяте чем хотите, я лишь сделал набросок. Там менять осталось то всего по строчке в обоих функциях Последний раз редактировалось Insider42; 30.10.2010 в 23:00. |
|
31.10.2010, 09:55 | #5 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
Почему никто не сказал что тут неожиданно закрался баг? Всё таки нужно проверять ауры как при наложении, так и при снятии - т.е. убрать if (apply) проверку. Иначе АП может уйти в минус :/
ЗЫ: Такое ощущение что форум вымирает
__________________
Если ты видишь это сообщение то ты просто обязан нажать "Спасибо" Последний раз редактировалось Insider42; 31.10.2010 в 10:05. |
31.10.2010, 10:39 | #6 |
Ученый
Регистрация: 07.03.2010
Сообщений: 138
Сказал(а) спасибо: 200
Поблагодарили 143 раз(а) в 49 сообщениях
|
|
31.10.2010, 12:05 | #7 |
Администратор
|
Авторам в первую очередь надо самим проверять свои патчи, т.к. у других на это может не быть времени, да и другие могут не до конца вникнуть в проблему.
|
31.10.2010, 15:07 | #8 |
Ученый
Регистрация: 15.03.2010
Сообщений: 261
Сказал(а) спасибо: 84
Поблагодарили 257 раз(а) в 96 сообщениях
|
я их обычно кидаю на растерзание критикам, ибо не всегда пишу "правильные" патчи. В данный момент занимаюсь написанием более полного патча на подобное дело... есть некоторые трудности и скорее всего он скоро появится в разделе ядро с припиской patch/dev
__________________
Если ты видишь это сообщение то ты просто обязан нажать "Спасибо" |