[11153] Apply at least same checks at used at hit for miss aggro.

* Miss cases must have not less stricted checkd for combat start for comparison with normal hit.
* Also cleanup code
This commit is contained in:
VladimirMangos 2011-02-12 21:56:38 +03:00
parent 241726bf81
commit 709dd6fed8
2 changed files with 13 additions and 10 deletions

View file

@ -1010,18 +1010,21 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
if (target->reflectResult == SPELL_MISS_NONE) // If reflected spell hit caster -> do all effect on him if (target->reflectResult == SPELL_MISS_NONE) // If reflected spell hit caster -> do all effect on him
DoSpellHitOnUnit(m_caster, mask); DoSpellHitOnUnit(m_caster, mask);
} }
else if(missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_RESIST)
if(missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_RESIST)
{ {
Unit* realCaster = GetAffectiveCaster(); if(real_caster && real_caster != unit)
if(realCaster && realCaster != unit)
{ {
if (!unit->isInCombat() && unit->GetTypeId() != TYPEID_PLAYER && ((Creature*)unit)->AI()) // can cause back attack (if detected)
((Creature*)unit)->AI()->AttackedBy(realCaster); if (!(m_spellInfo->AttributesEx3 & SPELL_ATTR_EX3_NO_INITIAL_AGGRO) && !IsPositiveSpell(m_spellInfo->Id) &&
m_caster->isVisibleForOrDetect(unit, unit, false))
{
if (!unit->isInCombat() && unit->GetTypeId() != TYPEID_PLAYER && ((Creature*)unit)->AI())
((Creature*)unit)->AI()->AttackedBy(real_caster);
unit->AddThreat(realCaster); unit->AddThreat(real_caster);
unit->SetInCombatWith(realCaster); unit->SetInCombatWith(real_caster);
realCaster->SetInCombatWith(unit); real_caster->SetInCombatWith(unit);
}
} }
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "11152" #define REVISION_NR "11153"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__