diff options
| author | Discover- <amort11@hotmail.com> | 2013-09-23 16:47:47 +0200 |
|---|---|---|
| committer | Discover- <amort11@hotmail.com> | 2013-09-23 16:47:47 +0200 |
| commit | a0db0728f2f48e7ca4156115b03e63d7ff2164c1 (patch) | |
| tree | c17b6d0bdc34f0a8297216f21dd7deb5df4eddcc /src/server/game/Spells/SpellInfo.cpp | |
| parent | 9653576cb4cc9449898d6af691c045d68e9361c5 (diff) | |
| parent | 4498ac0062d56aa0a0f2b9a21358f12f83c4b1f7 (diff) | |
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
Diffstat (limited to 'src/server/game/Spells/SpellInfo.cpp')
| -rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 04437b82f2d..a0e1ec065cc 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1004,14 +1004,12 @@ bool SpellInfo::NeedsExplicitUnitTarget() const return GetExplicitTargetMask() & TARGET_FLAG_UNIT_MASK; } -bool SpellInfo::NeedsToBeTriggeredByCaster() const +bool SpellInfo::NeedsToBeTriggeredByCaster(SpellInfo const* triggeringSpell) const { - if (AttributesCu & SPELL_ATTR0_CU_TRIGGERED_BY_CASTER) - return true; - if (NeedsExplicitUnitTarget()) return true; + /* for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { if (Effects[i].IsEffect()) @@ -1021,6 +1019,23 @@ bool SpellInfo::NeedsToBeTriggeredByCaster() const return true; } } + */ + + if (triggeringSpell->IsChanneled()) + { + uint32 mask = 0; + for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) + { + if (Effects[i].TargetA.GetTarget() != TARGET_UNIT_CASTER && Effects[i].TargetA.GetTarget() != TARGET_DEST_CASTER + && Effects[i].TargetB.GetTarget() != TARGET_UNIT_CASTER && Effects[i].TargetB.GetTarget() != TARGET_DEST_CASTER) + { + mask |= Effects[i].GetProvidedTargetMask(); + } + } + + if (mask & TARGET_FLAG_UNIT_MASK) + return true; + } return false; } |
