From e05f608919e13a28c67887b2ed269843892cf225 Mon Sep 17 00:00:00 2001 From: Shocker Date: Sun, 26 Jun 2011 16:06:23 +0300 Subject: Core/Spells: Don't allow Killing Spree to hit unattackable targets --- src/server/game/Grids/Notifiers/GridNotifiers.h | 5 +++-- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 7f8dcbd601a..042950a6ddd 100755 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -805,10 +805,10 @@ namespace Trinity float i_range; }; - class AnyUnfriendlyVisibleUnitInObjectRangeCheck + class AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck { public: - AnyUnfriendlyVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range) + AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range) : i_obj(obj), i_funit(funit), i_range(range) {} bool operator()(Unit* u) @@ -816,6 +816,7 @@ namespace Trinity return u->isAlive() && i_obj->IsWithinDistInMap(u, i_range) && !i_funit->IsFriendlyTo(u) + && i_funit->canAttack(u) && u->GetCreatureType() != CREATURE_TYPE_CRITTER && i_funit->canSeeOrDetect(u); } diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index cb60408363d..27a34bb8740 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -5655,11 +5655,11 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const Cell cell(p); cell.data.Part.reserved = ALL_DISTRICT; - Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck u_check(target, target, radius); - Trinity::UnitListSearcher checker(target, targets, u_check); + Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck u_check(target, target, radius); + Trinity::UnitListSearcher checker(target, targets, u_check); - TypeContainerVisitor, GridTypeMapContainer > grid_object_checker(checker); - TypeContainerVisitor, WorldTypeMapContainer > world_object_checker(checker); + TypeContainerVisitor, GridTypeMapContainer > grid_object_checker(checker); + TypeContainerVisitor, WorldTypeMapContainer > world_object_checker(checker); cell.Visit(p, grid_object_checker, *GetBase()->GetOwner()->GetMap(), *target, radius); cell.Visit(p, world_object_checker, *GetBase()->GetOwner()->GetMap(), *target, radius); -- cgit v1.2.3