aboutsummaryrefslogtreecommitdiff
path: root/src/game/Spell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Spell.cpp')
-rw-r--r--src/game/Spell.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index ecd2852dd7c..411a130539e 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -2241,11 +2241,13 @@ void Spell::cast(bool skipCheck)
// update pointers base at GUIDs to prevent access to non-existed already object
UpdatePointers();
- if(m_targets.getUnitTarget() && m_targets.getUnitTarget()->isAlive() && !m_targets.getUnitTarget()->isVisibleForOrDetect(m_caster, true))
- {
- cancel();
- return;
- }
+ if(Unit *pTarget = m_targets.getUnitTarget())
+ if(pTarget->isAlive() && (pTarget->HasAuraType(SPELL_AURA_MOD_STEALTH) || pTarget->HasAuraType(SPELL_AURA_MOD_INVISIBILITY)) && !pTarget->IsFriendlyTo(m_caster) && !pTarget->isVisibleForOrDetect(m_caster, true))
+ {
+ SendCastResult(SPELL_FAILED_BAD_TARGETS);
+ finish(false);
+ return;
+ }
SetExecutedCurrently(true);
uint8 castResult = 0;