Core/Spells: proc spells after damage apply, not before.
This commit is contained in:
@@ -585,11 +585,11 @@ namespace Game.Entities
|
|||||||
DealDamageMods(victim, ref damageInfo.damage, ref damageInfo.absorb);
|
DealDamageMods(victim, ref damageInfo.damage, ref damageInfo.absorb);
|
||||||
SendAttackStateUpdate(damageInfo);
|
SendAttackStateUpdate(damageInfo);
|
||||||
|
|
||||||
|
DealMeleeDamage(damageInfo, true);
|
||||||
|
|
||||||
DamageInfo dmgInfo = new DamageInfo(damageInfo);
|
DamageInfo dmgInfo = new DamageInfo(damageInfo);
|
||||||
ProcSkillsAndAuras(damageInfo.target, damageInfo.procAttacker, damageInfo.procVictim, ProcFlagsSpellType.None, ProcFlagsSpellPhase.None, dmgInfo.GetHitMask(), null, dmgInfo, null);
|
ProcSkillsAndAuras(damageInfo.target, damageInfo.procAttacker, damageInfo.procVictim, ProcFlagsSpellType.None, ProcFlagsSpellPhase.None, dmgInfo.GetHitMask(), null, dmgInfo, null);
|
||||||
|
|
||||||
DealMeleeDamage(damageInfo, true);
|
|
||||||
|
|
||||||
if (IsTypeId(TypeId.Player))
|
if (IsTypeId(TypeId.Player))
|
||||||
Log.outDebug(LogFilter.Unit, "AttackerStateUpdate: (Player) {0} attacked {1} (TypeId: {2}) for {3} dmg, absorbed {4}, blocked {5}, resisted {6}.",
|
Log.outDebug(LogFilter.Unit, "AttackerStateUpdate: (Player) {0} attacked {1} (TypeId: {2}) for {3} dmg, absorbed {4}, blocked {5}, resisted {6}.",
|
||||||
GetGUID().ToString(), victim.GetGUID().ToString(), victim.GetTypeId(), damageInfo.damage, damageInfo.absorb, damageInfo.blocked_amount, damageInfo.resist);
|
GetGUID().ToString(), victim.GetGUID().ToString(), victim.GetTypeId(), damageInfo.damage, damageInfo.absorb, damageInfo.blocked_amount, damageInfo.resist);
|
||||||
|
|||||||
@@ -5362,9 +5362,9 @@ namespace Game.Spells
|
|||||||
|
|
||||||
SpellPeriodicAuraLogInfo pInfo = new SpellPeriodicAuraLogInfo(this, damage, overkill, absorb, resist, 0.0f, crit);
|
SpellPeriodicAuraLogInfo pInfo = new SpellPeriodicAuraLogInfo(this, damage, overkill, absorb, resist, 0.0f, crit);
|
||||||
|
|
||||||
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, ProcFlagsSpellType.Damage, ProcFlagsSpellPhase.None, hitMask, null, damageInfo, null);
|
|
||||||
|
|
||||||
caster.DealDamage(target, damage, cleanDamage, DamageEffectType.DOT, GetSpellInfo().GetSchoolMask(), GetSpellInfo(), true);
|
caster.DealDamage(target, damage, cleanDamage, DamageEffectType.DOT, GetSpellInfo().GetSchoolMask(), GetSpellInfo(), true);
|
||||||
|
|
||||||
|
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, ProcFlagsSpellType.Damage, ProcFlagsSpellPhase.None, hitMask, null, damageInfo, null);
|
||||||
target.SendPeriodicAuraLog(pInfo);
|
target.SendPeriodicAuraLog(pInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5451,12 +5451,11 @@ namespace Game.Spells
|
|||||||
procVictim |= ProcFlags.TakenDamage;
|
procVictim |= ProcFlags.TakenDamage;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (caster.IsAlive())
|
|
||||||
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, ProcFlagsSpellType.Damage, ProcFlagsSpellPhase.None, hitMask, null, damageInfo, null);
|
|
||||||
|
|
||||||
int new_damage = (int)caster.DealDamage(target, damage, cleanDamage, DamageEffectType.DOT, GetSpellInfo().GetSchoolMask(), GetSpellInfo(), false);
|
int new_damage = (int)caster.DealDamage(target, damage, cleanDamage, DamageEffectType.DOT, GetSpellInfo().GetSchoolMask(), GetSpellInfo(), false);
|
||||||
if (caster.IsAlive())
|
if (caster.IsAlive())
|
||||||
{
|
{
|
||||||
|
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, ProcFlagsSpellType.Damage, ProcFlagsSpellPhase.None, hitMask, null, damageInfo, null);
|
||||||
|
|
||||||
float gainMultiplier = GetSpellEffectInfo().CalcValueMultiplier(caster);
|
float gainMultiplier = GetSpellEffectInfo().CalcValueMultiplier(caster);
|
||||||
|
|
||||||
uint heal = (caster.SpellHealingBonusDone(caster, GetSpellInfo(), (uint)(new_damage * gainMultiplier), DamageEffectType.DOT, GetSpellEffectInfo(), GetBase().GetStackAmount()));
|
uint heal = (caster.SpellHealingBonusDone(caster, GetSpellInfo(), (uint)(new_damage * gainMultiplier), DamageEffectType.DOT, GetSpellEffectInfo(), GetBase().GetStackAmount()));
|
||||||
@@ -5750,10 +5749,11 @@ namespace Game.Spells
|
|||||||
spellTypeMask |= ProcFlagsSpellType.Damage;
|
spellTypeMask |= ProcFlagsSpellType.Damage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
caster.DealSpellDamage(damageInfo, true);
|
||||||
|
|
||||||
DamageInfo dotDamageInfo = new DamageInfo(damageInfo, DamageEffectType.DOT, WeaponAttackType.BaseAttack, hitMask);
|
DamageInfo dotDamageInfo = new DamageInfo(damageInfo, DamageEffectType.DOT, WeaponAttackType.BaseAttack, hitMask);
|
||||||
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, spellTypeMask, ProcFlagsSpellPhase.None, hitMask, null, dotDamageInfo, null);
|
caster.ProcSkillsAndAuras(target, procAttacker, procVictim, spellTypeMask, ProcFlagsSpellPhase.None, hitMask, null, dotDamageInfo, null);
|
||||||
|
|
||||||
caster.DealSpellDamage(damageInfo, true);
|
|
||||||
caster.SendSpellNonMeleeDamageLog(damageInfo);
|
caster.SendSpellNonMeleeDamageLog(damageInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user