aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellAuraEffects.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2010-02-20 23:57:54 +0100
committerQAston <none@none>2010-02-20 23:57:54 +0100
commit6323d7dc33de95963ead4fcf678681204ce49cb3 (patch)
treee6532f55c873c1f8762ff42e853fc74c8a8494ca /src/game/SpellAuraEffects.cpp
parent2e3f89b61fa33e83b8f70702777549e25e5fc481 (diff)
*(awe)some changes to triggering spell/aura effects:
*do not use original caster for trigger spell/trigger spell with value effects *correct caster selection for force cast/trigger spell/trigger spell with value spell effects --HG-- branch : trunk
Diffstat (limited to 'src/game/SpellAuraEffects.cpp')
-rw-r--r--src/game/SpellAuraEffects.cpp21
1 files changed, 3 insertions, 18 deletions
diff --git a/src/game/SpellAuraEffects.cpp b/src/game/SpellAuraEffects.cpp
index d418ebdc1c5..9eafa7fc05f 100644
--- a/src/game/SpellAuraEffects.cpp
+++ b/src/game/SpellAuraEffects.cpp
@@ -1971,21 +1971,6 @@ Unit* AuraEffect::GetTriggerTarget(Unit * target) const
return target;
}
-Unit* AuraEffect::GetTriggerCaster(Unit * target, Unit * caster, SpellEntry const * triggeredSpell) const
-{
- for (uint8 i = 0 ; i < MAX_SPELL_EFFECTS; ++i)
- {
- if (SpellTargetType[triggeredSpell->EffectImplicitTargetA[i]] == TARGET_TYPE_UNIT_TARGET
- || SpellTargetType[triggeredSpell->EffectImplicitTargetB[i]] == TARGET_TYPE_UNIT_TARGET
- || SpellTargetType[triggeredSpell->EffectImplicitTargetA[i]] == TARGET_TYPE_CHANNEL
- || SpellTargetType[triggeredSpell->EffectImplicitTargetB[i]] == TARGET_TYPE_CHANNEL
- || SpellTargetType[triggeredSpell->EffectImplicitTargetA[i]] == TARGET_TYPE_DEST_TARGET
- || SpellTargetType[triggeredSpell->EffectImplicitTargetB[i]] == TARGET_TYPE_DEST_TARGET)
- return caster;
- }
- return target;
-}
-
void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
{
if(!caster || !target)
@@ -2246,8 +2231,8 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
if(triggeredSpellInfo)
{
- Unit * triggerCaster = GetTriggerCaster(triggerTarget, caster, triggeredSpellInfo);
- triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo, true, 0, this, GetCasterGUID());
+ Unit * triggerCaster = GetTriggeredSpellCaster(triggeredSpellInfo, caster, triggerTarget);
+ triggerCaster->CastSpell(triggerTarget, triggeredSpellInfo, true, 0, this);
sLog.outDebug("AuraEffect::TriggerSpell: Spell %u Trigger %u",GetId(), triggeredSpellInfo->Id);
}
else if(target->GetTypeId()!=TYPEID_UNIT || !sScriptMgr.EffectDummyCreature(caster, GetId(), GetEffIndex(), (Creature*)triggerTarget))
@@ -2265,7 +2250,7 @@ void AuraEffect::TriggerSpellWithValue(Unit * target, Unit * caster) const
SpellEntry const *triggeredSpellInfo = sSpellStore.LookupEntry(triggerSpellId);
if(triggeredSpellInfo)
{
- Unit * triggerCaster = GetTriggerCaster(triggerTarget, caster, triggeredSpellInfo);
+ Unit * triggerCaster = GetTriggeredSpellCaster(triggeredSpellInfo, caster, triggerTarget);
// generic casting code with custom spells and target/caster customs
int32 basepoints0 = GetAmount();