Добрый день всем.
Недавно обнаружил очень интересную вещь - ретропал в цлк в составе рейда слил ребраду пол хп за несколько секунд. Что удивило, когда попалил одежку пала - тот был фулл одет в мейл на агилу, засокечен на агилу и крит.
Вкоре выяснил - омг дамаг шел от таланта [Righteous Vengeance] (на вовхеде его уже, увы, нет), который вешает на цель дот при критических ударах джагами, крусаком и штормом.
Собственно, я был в курсе, что некоторые доты при повторном накладывании не заменяют ауры, а стакают модифаер, но не думал, что таким образом велечины тиков могут достич показателя в несколько
лямов.
Далее нашел атрибут, отвечающий за стак модифаера дот аур - SPELL_ATTR_EX4_STACK_DOT_MODIFIER, нашел участок кода в Spell:AddSpellAuraHolder, реализующий стак
Код:
// Carry over removed Aura's remaining damage if Aura still has ticks remaining
if (foundHolder->GetSpellProto()->AttributesEx4 & SPELL_ATTR_EX4_STACK_DOT_MODIFIER)
{
for (int32 i = 0; i < MAX_EFFECT_INDEX; ++i)
{
if (Aura *aur = holder->GetAuraByEffectIndex(SpellEffectIndex(i)))
{
// m_auraname can be modified to SPELL_AURA_NONE for area auras, use original
AuraType aurNameReal = AuraType(aurSpellInfo->EffectApplyAuraName[i]);
if (aurNameReal == SPELL_AURA_PERIODIC_DAMAGE && aur->GetAuraDuration() > 0)
{
if (Aura *existing = foundHolder->GetAuraByEffectIndex(SpellEffectIndex(i)))
{
int32 remainingTicks = existing->GetAuraMaxTicks() - existing->GetAuraTicks();
int32 remainingDamage = existing->GetModifier()->m_amount * remainingTicks;
aur->GetModifier()->m_amount += int32(remainingDamage / aur->GetAuraMaxTicks());
}
else
DEBUG_LOG("Holder (spell %u) on target (lowguid: %u) doesn't have aura on effect index %u. skipping.", aurSpellInfo->Id, holder->GetTarget()->GetGUIDLow(), i);
}
}
}
}
сразу смутило - нет никакого ограничения на максимальное значение модифаера.
попалил все спеллы с данным атрибутом
Код:
select id,spellname,spellfamilyname from spellstore where attributesex4 & 0x00000100=0x00000100;
+-------+------------------------------------------------+-----------------+
| id | spellname | spellfamilyname |
+-------+------------------------------------------------+-----------------+
| 12654 | Ignite | 3 |
| 12721 | Deep Wounds | 4 |
| 19752 | Divine Intervention | 10 |
| 28375 | Decimate | 0 |
| 29142 | Eyesore Blaster | 0 |
| 29879 | Frost Blast | 0 |
| 31117 | Unstable Affliction | 5 |
| 34695 | Tornado | 0 |
| 36536 | dd10 | 0 |
| 36586 | dd1 | 0 |
| 37284 | Scalding Water | 0 |
| 39384 | Burning Flames | 0 |
| 41342 | Shared Rule | 0 |
| 41343 | Shared Rule | 0 |
| 41344 | Shared Rule | 0 |
| 42080 | Headless Horseman - Fire onSpawn | 0 |
| 42096 | Headless Horseman - Fire onSpawn, Size | 0 |
| 42273 | Headless Horseman - Fire, non-growing, onSpawn | 0 |
| 44031 | Tackled! | 0 |
| 50536 | Unholy Blight | 15 |
| 51013 | Exsanguinate | 0 |
| 51460 | Necrosis | 15 |
| 58691 | Pandemic | 5 |
| 60239 | Gargoyle Ambusher Strike | 0 |
| 61840 | Righteous Vengeance | 10 |
| 63468 | Piercing Shots | 9 |
| 64595 | Shield-Breaker | 0 |
| 64930 | Electrified | 11 |
| 65309 | dd10 AoE | 0 |
| 65707 | [DND] Warbot Damage Self | 0 |
| 65719 | Shadow Nova | 0 |
| 66240 | Leeching Swarm | 0 |
| 66480 | Shield-Breaker | 0 |
| 66593 | dmg7 arcane | 0 |
| 66594 | dmg7 shadow | 0 |
| 66595 | dmg5 arcane | 0 |
| 66596 | dmg7 shadow | 0 |
| 70374 | Burning Pitch | 0 |
| 70383 | Burning Pitch | 0 |
| 70890 | Scourge Strike | 15 |
| 71023 | Languish | 3 |
| 71824 | Lava Burst | 0 |
| 71879 | Necrotic Touch | 15 |
| 72980 | Shadow Resonance | 0 |
| 75100 | Attack | 0 |
+-------+------------------------------------------------+-----------------+
45 rows in set
Действительно, есть спеллы, которые очевидно стакают дот (синие), а есть непонятные (красные), которые не подходят под смысл атрибута, по моему мнению.
Собственно, назрело сомнение, действительно ли SPELL_ATTR_EX4_STACK_DOT_MODIFIER отвечает за стак дотов, или у него какое-то другое или более расширенное значение? Проверка aurNameReal == SPELL_AURA_PERIODIC_DAMAGE также наводит на эту мысль.
Вопрос второй - действительно ли можно стакать модифаер до бесконечности, или же существует какое-то ограничение? В инете нигде инфы не нашел.
На данный момент, имеются пруфы омг дамага от паловского Righteous Vengeance(1кк+), варовского Deep Wounds (1кк+), дкшного Unholy Blight (5к+), Ignite (лично доводил стак до 70к+ за тик).