Core/PacketIO: Exclude DamageDealt/DamageTaken script hook results from damage sent in SMSG_SPELL_NON_MELEE_DAMAGE_LOG
This commit is contained in:
@@ -1081,29 +1081,29 @@ void Unit::CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 dama
|
||||
damageInfo->damage = damage;
|
||||
}
|
||||
|
||||
uint32 Unit::DealSpellDamage(SpellNonMeleeDamage const* damageInfo, bool durabilityLoss)
|
||||
void Unit::DealSpellDamage(SpellNonMeleeDamage const* damageInfo, bool durabilityLoss)
|
||||
{
|
||||
if (!damageInfo)
|
||||
return 0;
|
||||
return;
|
||||
|
||||
Unit* victim = damageInfo->target;
|
||||
|
||||
if (!victim)
|
||||
return 0;
|
||||
return;
|
||||
|
||||
if (!victim->IsAlive() || victim->HasUnitState(UNIT_STATE_IN_FLIGHT) || (victim->GetTypeId() == TYPEID_UNIT && victim->ToCreature()->IsInEvadeMode()))
|
||||
return 0;
|
||||
return;
|
||||
|
||||
SpellInfo const* spellProto = sSpellMgr->GetSpellInfo(damageInfo->SpellID);
|
||||
if (!spellProto)
|
||||
{
|
||||
TC_LOG_DEBUG("entities.unit", "Unit::DealSpellDamage has wrong damageInfo->SpellID: %u", damageInfo->SpellID);
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Call default DealDamage
|
||||
CleanDamage cleanDamage(damageInfo->cleanDamage, damageInfo->absorb, BASE_ATTACK, MELEE_HIT_NORMAL);
|
||||
return DealDamage(victim, damageInfo->damage, &cleanDamage, SPELL_DIRECT_DAMAGE, SpellSchoolMask(damageInfo->schoolMask), spellProto, durabilityLoss);
|
||||
DealDamage(victim, damageInfo->damage, &cleanDamage, SPELL_DIRECT_DAMAGE, SpellSchoolMask(damageInfo->schoolMask), spellProto, durabilityLoss);
|
||||
}
|
||||
|
||||
/// @todo for melee need create structure as in
|
||||
@@ -1785,7 +1785,8 @@ void Unit::CalcAbsorbResist(Unit* victim, SpellSchoolMask schoolMask, DamageEffe
|
||||
|
||||
SpellNonMeleeDamage log(this, caster, (*itr)->GetSpellInfo()->Id, schoolMask);
|
||||
CleanDamage cleanDamage = CleanDamage(splitDamage, 0, BASE_ATTACK, MELEE_HIT_NORMAL);
|
||||
log.damage = DealDamage(caster, splitDamage, &cleanDamage, DIRECT_DAMAGE, schoolMask, (*itr)->GetSpellInfo(), false);
|
||||
DealDamage(caster, splitDamage, &cleanDamage, DIRECT_DAMAGE, schoolMask, (*itr)->GetSpellInfo(), false);
|
||||
log.damage = splitDamage;
|
||||
log.absorb = split_absorb;
|
||||
SendSpellNonMeleeDamageLog(&log);
|
||||
|
||||
@@ -6116,7 +6117,8 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
|
||||
uint32 procDmg = damage / 2;
|
||||
|
||||
SpellNonMeleeDamage log(pPet, pPet->GetVictim(), procSpell->Id, procSpell->GetSchoolMask());
|
||||
log.damage = pPet->DealDamage(pPet->GetVictim(), procDmg, NULL, SPELL_DIRECT_DAMAGE, procSpell->GetSchoolMask(), procSpell, true);
|
||||
log.damage = procDmg;
|
||||
pPet->DealDamage(pPet->GetVictim(), procDmg, NULL, SPELL_DIRECT_DAMAGE, procSpell->GetSchoolMask(), procSpell, true);
|
||||
pPet->SendSpellNonMeleeDamageLog(&log);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1516,7 +1516,7 @@ class Unit : public WorldObject
|
||||
void HandleProcExtraAttackFor(Unit* victim);
|
||||
|
||||
void CalculateSpellDamageTaken(SpellNonMeleeDamage* damageInfo, int32 damage, SpellInfo const* spellInfo, WeaponAttackType attackType = BASE_ATTACK, bool crit = false);
|
||||
uint32 DealSpellDamage(SpellNonMeleeDamage const* damageInfo, bool durabilityLoss);
|
||||
void DealSpellDamage(SpellNonMeleeDamage const* damageInfo, bool durabilityLoss);
|
||||
|
||||
// player or player's pet resilience (-1%)
|
||||
uint32 GetDamageReduction(uint32 damage) const { return GetCombatRatingDamageReduction(CR_RESILIENCE_PLAYER_DAMAGE_TAKEN, 1.0f, 100.0f, damage); }
|
||||
|
||||
@@ -6200,7 +6200,6 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
|
||||
caster->getHostileRefManager().threatAssist(caster, gain * 0.5f, GetSpellInfo());
|
||||
}
|
||||
|
||||
log.damage = new_damage;
|
||||
caster->SendSpellNonMeleeDamageLog(&log);
|
||||
}
|
||||
|
||||
@@ -6488,7 +6487,7 @@ void AuraEffect::HandlePeriodicPowerBurnAuraTick(Unit* target, Unit* caster) con
|
||||
|
||||
caster->ProcDamageAndSpell(damageInfo.target, procAttacker, procVictim, procEx, damageInfo.damage, BASE_ATTACK, spellProto);
|
||||
|
||||
damageInfo.damage = caster->DealSpellDamage(&damageInfo, true);
|
||||
caster->DealSpellDamage(&damageInfo, true);
|
||||
caster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
}
|
||||
|
||||
@@ -6533,7 +6532,7 @@ void AuraEffect::HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEv
|
||||
target->CalculateSpellDamageTaken(&damageInfo, damage, GetSpellInfo());
|
||||
target->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);
|
||||
TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerDamageAuraProc: Triggering %u spell damage from aura %u proc", damage, GetId());
|
||||
damageInfo.damage = target->DealSpellDamage(&damageInfo, true);
|
||||
target->DealSpellDamage(&damageInfo, true);
|
||||
target->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -2431,7 +2431,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
|
||||
m_damage = damageInfo.damage;
|
||||
|
||||
damageInfo.damage = caster->DealSpellDamage(&damageInfo, true);
|
||||
caster->DealSpellDamage(&damageInfo, true);
|
||||
|
||||
// Send log damage message to client
|
||||
caster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
|
||||
@@ -396,7 +396,7 @@ void Spell::EffectEnvironmentalDMG(SpellEffIndex /*effIndex*/)
|
||||
log.absorb = absorb;
|
||||
log.resist = resist;
|
||||
if (unitTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
log.damage = unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage);
|
||||
unitTarget->ToPlayer()->EnvironmentalDamage(DAMAGE_FIRE, damage);
|
||||
|
||||
m_caster->SendSpellNonMeleeDamageLog(&log);
|
||||
}
|
||||
|
||||
@@ -2308,7 +2308,7 @@ public:
|
||||
SpellNonMeleeDamage damageInfo(handler->GetSession()->GetPlayer(), target, spellid, sSpellMgr->GetSpellInfo(spellid)->SchoolMask);
|
||||
damageInfo.damage = damage;
|
||||
handler->GetSession()->GetPlayer()->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);
|
||||
damageInfo.damage = target->DealSpellDamage(&damageInfo, true);
|
||||
target->DealSpellDamage(&damageInfo, true);
|
||||
target->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1093,7 +1093,7 @@ class spell_sindragosa_s_fury : public SpellScriptLoader
|
||||
|
||||
SpellNonMeleeDamage damageInfo(GetCaster(), GetHitUnit(), GetSpellInfo()->Id, GetSpellInfo()->SchoolMask);
|
||||
damageInfo.damage = damage;
|
||||
damageInfo.damage = GetCaster()->DealSpellDamage(&damageInfo, false);
|
||||
GetCaster()->DealSpellDamage(&damageInfo, false);
|
||||
GetCaster()->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -796,7 +796,7 @@ class spell_warl_health_funnel : public SpellScriptLoader
|
||||
SpellNonMeleeDamage damageInfo(caster, caster, GetSpellInfo()->Id, GetSpellInfo()->SchoolMask);
|
||||
damageInfo.periodicLog = true;
|
||||
damageInfo.damage = damage;
|
||||
damageInfo.damage = caster->DealSpellDamage(&damageInfo, false);
|
||||
caster->DealSpellDamage(&damageInfo, false);
|
||||
caster->SendSpellNonMeleeDamageLog(&damageInfo);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user