aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.cpp
diff options
context:
space:
mode:
authorDiscover- <amort11@hotmail.com>2013-09-23 16:47:47 +0200
committerDiscover- <amort11@hotmail.com>2013-09-23 16:47:47 +0200
commita0db0728f2f48e7ca4156115b03e63d7ff2164c1 (patch)
treec17b6d0bdc34f0a8297216f21dd7deb5df4eddcc /src/server/game/Spells/SpellInfo.cpp
parent9653576cb4cc9449898d6af691c045d68e9361c5 (diff)
parent4498ac0062d56aa0a0f2b9a21358f12f83c4b1f7 (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.cpp23
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;
}