mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +00:00
[9090] Implement tick counting in periodic auras.
This can be used for some tick number dependent aura effects. Also in some cases impossible claculate tickes count pass, for example for infinity duration auras.
This commit is contained in:
parent
9a6c248dec
commit
e5dfeea31e
4 changed files with 18 additions and 12 deletions
|
|
@ -3621,11 +3621,10 @@ bool Unit::AddAura(Aura *Aur)
|
|||
// Carry over removed Aura's remaining damage if Aura still has ticks remaining
|
||||
else if (aur2->GetSpellProto()->AttributesEx4 & SPELL_ATTR_EX4_STACK_DOT_MODIFIER && aurName == SPELL_AURA_PERIODIC_DAMAGE && aur2->GetAuraDuration() > 0)
|
||||
{
|
||||
int32 remainingTicks = 1 + (aur2->GetAuraDuration() / aur2->GetModifier()->periodictime);
|
||||
int32 remainingTicks = aur2->GetAuraMaxTicks() - aur2->GetAuraTicks();
|
||||
int32 remainingDamage = aur2->GetModifier()->m_amount * remainingTicks;
|
||||
|
||||
int32 maxTicks = Aur->GetAuraMaxDuration() / Aur->GetModifier()->periodictime;
|
||||
Aur->GetModifier()->m_amount += int32(remainingDamage / maxTicks);
|
||||
Aur->GetModifier()->m_amount += int32(remainingDamage / Aur->GetAuraMaxTicks());
|
||||
}
|
||||
// can be only single (this check done at _each_ aura add
|
||||
RemoveAura(i2,AURA_REMOVE_BY_STACK);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue