aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2012-09-06 18:01:51 +0100
committerNay <dnpd.dd@gmail.com>2012-09-06 18:01:51 +0100
commit0522e50c8670a34698b15003ceb5e514db72e427 (patch)
treed6406bcbd2e836f5f08be8e67f1a01de4c938d48 /src/server/game/Spells/Spell.cpp
parent42a899a90eabae2ce6fc8ca103e7692c07153315 (diff)
parent9f09713b3e286ba94948c15d64b76b2aed16f8cd (diff)
Merge remote-tracking branch 'origin/master' into mmaps
Conflicts: src/server/game/Spells/Spell.cpp
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 0cbae416271..d9a3e6a4b3c 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -583,7 +583,7 @@ m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->GetCharme
&& !m_spellInfo->IsPassive() && !m_spellInfo->IsPositive();
CleanupTargetList();
- CleanupEffectExecuteData();
+ memset(m_effectExecuteData, NULL, MAX_SPELL_EFFECTS * sizeof(ByteBuffer*));
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
m_destTargets[i] = SpellDestination(*m_caster);
@@ -2526,7 +2526,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
}
}
- if (missInfo != SPELL_MISS_EVADE && m_caster && !m_caster->IsFriendlyTo(unit) && (!m_spellInfo->IsPositive() || m_spellInfo->HasEffect(SPELL_EFFECT_DISPEL)))
+ if (missInfo != SPELL_MISS_EVADE && !m_caster->IsFriendlyTo(unit) && (!m_spellInfo->IsPositive() || m_spellInfo->HasEffect(SPELL_EFFECT_DISPEL)))
{
m_caster->CombatStart(unit, !(m_spellInfo->AttributesEx3 & SPELL_ATTR3_NO_INITIAL_AGGRO));
@@ -5153,6 +5153,10 @@ SpellCastResult Spell::CheckCast(bool strict)
if (!target)
return SPELL_FAILED_DONT_REPORT;
+ if (m_caster->GetTypeId() == TYPEID_PLAYER)
+ if (!target->isAlive())
+ return SPELL_FAILED_BAD_TARGETS;
+
Position pos;
target->GetContactPoint(m_caster, pos.m_positionX, pos.m_positionY, pos.m_positionZ);
target->GetFirstCollisionPosition(pos, CONTACT_DISTANCE, target->GetRelativeAngle(m_caster));
@@ -6943,12 +6947,6 @@ void Spell::InitEffectExecuteData(uint8 effIndex)
}
}
-void Spell::CleanupEffectExecuteData()
-{
- for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
- m_effectExecuteData[i] = NULL;
-}
-
void Spell::CheckEffectExecuteData()
{
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)