diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index b73ed73e4..7b20c2e34 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -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 DoSpellHitOnUnit(m_caster, mask); } - - if(missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_RESIST) + else if(missInfo == SPELL_MISS_MISS || missInfo == SPELL_MISS_RESIST) { - Unit* realCaster = GetAffectiveCaster(); - if(realCaster && realCaster != unit) + if(real_caster && real_caster != unit) { - if (!unit->isInCombat() && unit->GetTypeId() != TYPEID_PLAYER && ((Creature*)unit)->AI()) - ((Creature*)unit)->AI()->AttackedBy(realCaster); + // can cause back attack (if detected) + 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->SetInCombatWith(realCaster); - realCaster->SetInCombatWith(unit); + unit->AddThreat(real_caster); + unit->SetInCombatWith(real_caster); + real_caster->SetInCombatWith(unit); + } } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 0cd13ef65..8e0aa02aa 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "11152" + #define REVISION_NR "11153" #endif // __REVISION_NR_H__