mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-02-05 00:19:59 +01:00
Core/Spells: Don't allow Killing Spree to hit unattackable targets
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
||||
Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck u_check(target, target, radius);
|
||||
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
||||
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, 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);
|
||||
|
||||
Reference in New Issue
Block a user