diff options
| author | QAston <none@none> | 2010-02-20 23:57:54 +0100 |
|---|---|---|
| committer | QAston <none@none> | 2010-02-20 23:57:54 +0100 |
| commit | 6323d7dc33de95963ead4fcf678681204ce49cb3 (patch) | |
| tree | e6532f55c873c1f8762ff42e853fc74c8a8494ca /src/game/SpellAuraEffects.cpp | |
| parent | 2e3f89b61fa33e83b8f70702777549e25e5fc481 (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.cpp | 21 |
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(); |
