From 7a3b1f1ed51d6d310e42ddfc517c76a17f2bd073 Mon Sep 17 00:00:00 2001 From: QAston Date: Wed, 24 Aug 2011 18:22:33 +0200 Subject: [PATCH] Core/Spells: Make GMs and vehicle riders not attackable by AOE again. --- src/server/game/Spells/Spell.h | 2 ++ src/server/game/Spells/SpellInfo.cpp | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 2d16e3d04d..c0f3daf066 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -706,6 +706,8 @@ namespace Trinity // can't be checked in SpellInfo::CheckTarget - needs more research if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE)) continue; + if (target->HasUnitState(UNIT_STAT_UNATTACKABLE)) + continue; if (i_source->IsControlledByPlayer()) { if (i_source->IsFriendlyTo(target)) diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 56ec382ffc..9d36ca493a 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1639,8 +1639,8 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, Unit const* target, b return SPELL_FAILED_BAD_TARGETS; } - // check GM mode and GM invisibility - only for player casts (npc casts are controlled by AI) - if (target != caster && caster->IsControlledByPlayer() && target->GetTypeId() == TYPEID_PLAYER) + // check GM mode and GM invisibility - only for player casts (npc casts are controlled by AI) and negative spells + if (target != caster && (caster->IsControlledByPlayer() || !IsPositive()) && target->GetTypeId() == TYPEID_PLAYER) { if (!target->ToPlayer()->IsVisible()) return SPELL_FAILED_BAD_TARGETS;