- void AuraEffect::HandlePeriodicTriggerSpellWithTargetBelowPct(Unit* target, Unit* caster) const
- {
- // generic casting code with custom spells and target/caster customs
- uint32 triggerSpellId = GetSpellEffectInfo()->TriggerSpell;
- SpellInfo const* triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId);
- // Reget trigger spell proto
- triggeredSpellInfo = sSpellMgr->GetSpellInfo(triggerSpellId);
- if (triggeredSpellInfo)
- {
- if (Unit* triggerCaster = triggeredSpellInfo->NeedsToBeTriggeredByCaster(m_spellInfo, target->GetMap()->GetDifficultyID()) ? caster : target)
- {
- uint32 percent = triggerCaster->GetHealthPct();
- if (triggerCaster->HealthBelowPct(percent))
- {
- triggerCaster->CastSpell(target, triggeredSpellInfo, true, NULL, this);
- return;
- }
- TC_LOG_DEBUG("spells", "AuraEffect::HandlePeriodicTriggerSpellWithTargetBelowPct: Spell %u Trigger %u", GetId(), triggeredSpellInfo->Id);
- }
- }
- else
- TC_LOG_DEBUG("spells", "AuraEffect::HandlePeriodicTriggerSpellWithTargetBelowPct: Spell %u has non-existent spell %u in EffectTriggered[%d] and is therefor not triggered.", GetId(), triggerSpellId, GetEffIndex());
- }
SPELL_AURA_TRIGGER_SPELL_ON_HEALTH_BELOW_PCT - AURA_468