|
|
|
|
@@ -1983,7 +1983,7 @@ void AuraEffect::HandleAuraTransform(AuraApplication const* aurApp, uint8 mode,
|
|
|
|
|
if (!ci)
|
|
|
|
|
{
|
|
|
|
|
target->SetDisplayId(16358); // pig pink ^_^
|
|
|
|
|
TC_LOG_ERROR("spells", "Auras: unknown creature id = %d (only need its modelid) From Spell Aura Transform in Spell ID = %d", GetMiscValue(), GetId());
|
|
|
|
|
TC_LOG_ERROR("spells.aura.effect", "Auras: unknown creature id = %d (only need its modelid) From Spell Aura Transform in Spell ID = %d", GetMiscValue(), GetId());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
@@ -3342,7 +3342,7 @@ void AuraEffect::HandleAuraModStat(AuraApplication const* aurApp, uint8 mode, bo
|
|
|
|
|
|
|
|
|
|
if (GetMiscValue() < -2 || GetMiscValue() > 4)
|
|
|
|
|
{
|
|
|
|
|
TC_LOG_ERROR("spells", "WARNING: Spell %u effect %u has an unsupported misc value (%i) for SPELL_AURA_MOD_STAT ", GetId(), GetEffIndex(), GetMiscValue());
|
|
|
|
|
TC_LOG_ERROR("spells.aura.effect", "WARNING: Spell %u effect %u has an unsupported misc value (%i) for SPELL_AURA_MOD_STAT ", GetId(), GetEffIndex(), GetMiscValue());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -3379,7 +3379,7 @@ void AuraEffect::HandleModPercentStat(AuraApplication const* aurApp, uint8 mode,
|
|
|
|
|
|
|
|
|
|
if (GetMiscValue() < -1 || GetMiscValue() > 4)
|
|
|
|
|
{
|
|
|
|
|
TC_LOG_ERROR("spells", "WARNING: Misc Value for SPELL_AURA_MOD_PERCENT_STAT not valid");
|
|
|
|
|
TC_LOG_ERROR("spells.aura.effect", "WARNING: Misc Value for SPELL_AURA_MOD_PERCENT_STAT not valid");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -3472,8 +3472,8 @@ void AuraEffect::HandleModTotalPercentStat(AuraApplication const* aurApp, uint8
|
|
|
|
|
bool zeroHealth = !target->IsAlive();
|
|
|
|
|
|
|
|
|
|
// players in corpse state may mean two different states:
|
|
|
|
|
/// 1. player just died but did not release (in this case health == 0)
|
|
|
|
|
/// 2. player is corpse running (ie ghost) (in this case health == 1)
|
|
|
|
|
/// 1. player just died but did not release (in this case health == 0)
|
|
|
|
|
/// 2. player is corpse running (ie ghost) (in this case health == 1)
|
|
|
|
|
if (target->getDeathState() == CORPSE)
|
|
|
|
|
zeroHealth = (target->GetHealth() == 0);
|
|
|
|
|
|
|
|
|
|
@@ -5108,11 +5108,11 @@ void AuraEffect::HandlePeriodicTriggerSpellAuraTick(Unit* target, Unit* caster)
|
|
|
|
|
if (Unit* triggerCaster = triggeredSpellInfo->NeedsToBeTriggeredByCaster(m_spellInfo) ? caster : target)
|
|
|
|
|
{
|
|
|
|
|
triggerCaster->CastSpell(target, triggerSpellId, this);
|
|
|
|
|
TC_LOG_DEBUG("spells", "AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell %u Trigger %u", GetId(), triggeredSpellInfo->Id);
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell %u Trigger %u", GetId(), triggeredSpellInfo->Id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
TC_LOG_WARN("spells.nospell", "AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell %u has non-existent spell %u in EffectTriggered[%d] and is therefore not triggered.", GetId(), triggerSpellId, GetEffIndex());
|
|
|
|
|
TC_LOG_WARN("spells.aura.effect", "AuraEffect::HandlePeriodicTriggerSpellAuraTick: Spell %u has non-existent spell %u in EffectTriggered[%d] and is therefore not triggered.", GetId(), triggerSpellId, GetEffIndex());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit* caster) const
|
|
|
|
|
@@ -5126,11 +5126,11 @@ void AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick(Unit* target, Unit*
|
|
|
|
|
for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
|
|
|
|
|
args.AddSpellMod(SpellValueMod(SPELLVALUE_BASE_POINT0 + i), GetAmount());
|
|
|
|
|
triggerCaster->CastSpell(target, triggerSpellId, args);
|
|
|
|
|
TC_LOG_DEBUG("spells", "AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell %u Trigger %u", GetId(), triggeredSpellInfo->Id);
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell %u Trigger %u", GetId(), triggeredSpellInfo->Id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
TC_LOG_WARN("spells","AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell %u has non-existent spell %u in EffectTriggered[%d] and is therefore not triggered.", GetId(), triggerSpellId, GetEffIndex());
|
|
|
|
|
TC_LOG_WARN("spells.aura.effect","AuraEffect::HandlePeriodicTriggerSpellWithValueAuraTick: Spell %u has non-existent spell %u in EffectTriggered[%d] and is therefore not triggered.", GetId(), triggerSpellId, GetEffIndex());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
|
|
|
|
|
@@ -5241,7 +5241,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
|
|
|
|
|
|
|
|
|
|
uint32 absorb = damageInfo.GetAbsorb();
|
|
|
|
|
uint32 resist = damageInfo.GetResist();
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s attacked %s for %u dmg inflicted by %u absorb is %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s attacked %s for %u dmg inflicted by %u absorb is %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), damage, GetId(), absorb);
|
|
|
|
|
|
|
|
|
|
Unit::DealDamageMods(caster, target, damage, &absorb);
|
|
|
|
|
@@ -5329,7 +5329,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
|
|
|
|
|
|
|
|
|
|
uint32 absorb = damageInfo.GetAbsorb();
|
|
|
|
|
uint32 resist = damageInfo.GetResist();
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s health leech of %s for %u dmg inflicted by %u abs is %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s health leech of %s for %u dmg inflicted by %u abs is %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), damage, GetId(), absorb);
|
|
|
|
|
|
|
|
|
|
// SendSpellNonMeleeDamageLog expects non-absorbed/non-resisted damage
|
|
|
|
|
@@ -5392,7 +5392,7 @@ void AuraEffect::HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
caster->ModifyHealth(-(int32)damage);
|
|
|
|
|
TC_LOG_DEBUG("spells", "PeriodicTick: donator %u target %u damage %u.", caster->GetEntry(), target->GetEntry(), damage);
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: donator %u target %u damage %u.", caster->GetEntry(), target->GetEntry(), damage);
|
|
|
|
|
|
|
|
|
|
float gainMultiplier = GetSpellEffectInfo().CalcValueMultiplier(caster);
|
|
|
|
|
|
|
|
|
|
@@ -5438,7 +5438,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const
|
|
|
|
|
if (crit)
|
|
|
|
|
damage = Unit::SpellCriticalHealingBonus(caster, m_spellInfo, damage, target);
|
|
|
|
|
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s heal of %s for %u health inflicted by %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s heal of %s for %u health inflicted by %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), damage, GetId());
|
|
|
|
|
|
|
|
|
|
uint32 heal = damage;
|
|
|
|
|
@@ -5485,7 +5485,7 @@ void AuraEffect::HandlePeriodicManaLeechAuraTick(Unit* target, Unit* caster) con
|
|
|
|
|
// ignore negative values (can be result apply spellmods to aura damage
|
|
|
|
|
int32 drainAmount = std::max(GetAmount(), 0);
|
|
|
|
|
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s power leech of %s for %u dmg inflicted by %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s power leech of %s for %u dmg inflicted by %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), drainAmount, GetId());
|
|
|
|
|
|
|
|
|
|
int32 drainedAmount = -target->ModifyPower(powerType, -drainAmount);
|
|
|
|
|
@@ -5546,7 +5546,7 @@ void AuraEffect::HandleObsModPowerAuraTick(Unit* target, Unit* caster) const
|
|
|
|
|
|
|
|
|
|
// ignore negative values (can be result apply spellmods to aura damage
|
|
|
|
|
uint32 amount = std::max(GetAmount(), 0) * target->GetMaxPower(powerType) /100;
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s energize %s for %u dmg inflicted by %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId());
|
|
|
|
|
|
|
|
|
|
SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false);
|
|
|
|
|
@@ -5579,7 +5579,7 @@ void AuraEffect::HandlePeriodicEnergizeAuraTick(Unit* target, Unit* caster) cons
|
|
|
|
|
|
|
|
|
|
SpellPeriodicAuraLogInfo pInfo(this, amount, amount, 0, 0, 0, 0.0f, false);
|
|
|
|
|
|
|
|
|
|
TC_LOG_DEBUG("spells.periodic", "PeriodicTick: %s energize %s for %u dmg inflicted by %u",
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "PeriodicTick: %s energize %s for %u dmg inflicted by %u",
|
|
|
|
|
GetCasterGUID().ToString().c_str(), target->GetGUID().ToString().c_str(), amount, GetId());
|
|
|
|
|
|
|
|
|
|
int32 gain = target->ModifyPower(powerType, amount);
|
|
|
|
|
@@ -5676,11 +5676,11 @@ void AuraEffect::HandleProcTriggerSpellAuraProc(AuraApplication* aurApp, ProcEve
|
|
|
|
|
uint32 triggerSpellId = GetSpellEffectInfo().TriggerSpell;
|
|
|
|
|
if (SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId, GetBase()->GetCastDifficulty()))
|
|
|
|
|
{
|
|
|
|
|
TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerSpellAuraProc: Triggering spell %u from aura %u proc", triggeredSpellInfo->Id, GetId());
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandleProcTriggerSpellAuraProc: Triggering spell %u from aura %u proc", triggeredSpellInfo->Id, GetId());
|
|
|
|
|
triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo->Id, this);
|
|
|
|
|
}
|
|
|
|
|
else if (triggerSpellId && GetAuraType() != SPELL_AURA_DUMMY)
|
|
|
|
|
TC_LOG_ERROR("spells.nospell.auraproc","AuraEffect::HandleProcTriggerSpellAuraProc: Could not trigger spell %u from aura %u proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId());
|
|
|
|
|
TC_LOG_ERROR("spells.aura.effect","AuraEffect::HandleProcTriggerSpellAuraProc: Could not trigger spell %u from aura %u proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AuraEffect::HandleProcTriggerSpellWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo)
|
|
|
|
|
@@ -5694,10 +5694,10 @@ void AuraEffect::HandleProcTriggerSpellWithValueAuraProc(AuraApplication* aurApp
|
|
|
|
|
CastSpellExtraArgs args(this);
|
|
|
|
|
args.AddSpellMod(SPELLVALUE_BASE_POINT0, GetAmount());
|
|
|
|
|
triggerCaster->CastSpell(triggerTarget, triggerSpellId, args);
|
|
|
|
|
TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerSpellWithValueAuraProc: Triggering spell %u with value %d from aura %u proc", triggeredSpellInfo->Id, GetAmount(), GetId());
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandleProcTriggerSpellWithValueAuraProc: Triggering spell %u with value %d from aura %u proc", triggeredSpellInfo->Id, GetAmount(), GetId());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
TC_LOG_ERROR("spells.nospell.valueauraproc","AuraEffect::HandleProcTriggerSpellWithValueAuraProc: Could not trigger spell %u from aura %u proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId());
|
|
|
|
|
TC_LOG_ERROR("spells.aura.effect","AuraEffect::HandleProcTriggerSpellWithValueAuraProc: Could not trigger spell %u from aura %u proc, because the spell does not have an entry in Spell.dbc.", triggerSpellId, GetId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void AuraEffect::HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEventInfo& eventInfo)
|
|
|
|
|
@@ -5715,7 +5715,7 @@ void AuraEffect::HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEv
|
|
|
|
|
damage = triggerTarget->SpellDamageBonusTaken(target, GetSpellInfo(), damage, SPELL_DIRECT_DAMAGE);
|
|
|
|
|
target->CalculateSpellDamageTaken(&damageInfo, damage, GetSpellInfo());
|
|
|
|
|
Unit::DealDamageMods(damageInfo.attacker, damageInfo.target, damageInfo.damage, &damageInfo.absorb);
|
|
|
|
|
TC_LOG_DEBUG("spells", "AuraEffect::HandleProcTriggerDamageAuraProc: Triggering %u spell damage from aura %u proc", damage, GetId());
|
|
|
|
|
TC_LOG_DEBUG("spells.aura.effect", "AuraEffect::HandleProcTriggerDamageAuraProc: Triggering %u spell damage from aura %u proc", damage, GetId());
|
|
|
|
|
target->DealSpellDamage(&damageInfo, true);
|
|
|
|
|
target->SendSpellNonMeleeDamageLog(&damageInfo);
|
|
|
|
|
}
|
|
|
|
|
|