aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/AI/CoreAI/GuardAI.cpp2
-rwxr-xr-xsrc/server/game/AI/CoreAI/PassiveAI.cpp2
-rwxr-xr-xsrc/server/game/AI/CoreAI/PetAI.cpp2
-rwxr-xr-xsrc/server/game/AI/CoreAI/UnitAI.cpp2
-rwxr-xr-xsrc/server/game/AI/CreatureAIImpl.h2
-rwxr-xr-xsrc/server/game/Entities/Creature/Creature.cpp2
-rwxr-xr-xsrc/server/game/Entities/Creature/CreatureGroups.cpp2
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp2
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp6
-rwxr-xr-xsrc/server/game/Grids/Notifiers/GridNotifiers.h6
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CombatHandler.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/PetHandler.cpp2
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp4
-rw-r--r--src/server/scripts/Northrend/borean_tundra.cpp4
15 files changed, 23 insertions, 19 deletions
diff --git a/src/server/game/AI/CoreAI/GuardAI.cpp b/src/server/game/AI/CoreAI/GuardAI.cpp
index 9943a6dde9c..16e04c363ea 100755
--- a/src/server/game/AI/CoreAI/GuardAI.cpp
+++ b/src/server/game/AI/CoreAI/GuardAI.cpp
@@ -57,7 +57,7 @@ void GuardAI::MoveInLineOfSight(Unit* unit)
if (!me->canFly() && me->GetDistanceZ(unit) > CREATURE_Z_ATTACK_RANGE)
return;
- if (!me->getVictim() && me->canAttack(unit) &&
+ if (!me->getVictim() && me->IsValidAttackTarget(unit) &&
(unit->IsHostileToPlayers() || me->IsHostileTo(unit) /*|| u->getVictim() && me->IsFriendlyTo(u->getVictim())*/) &&
unit->isInAccessiblePlaceFor(me))
{
diff --git a/src/server/game/AI/CoreAI/PassiveAI.cpp b/src/server/game/AI/CoreAI/PassiveAI.cpp
index 4107179f6f7..1656e3cf181 100755
--- a/src/server/game/AI/CoreAI/PassiveAI.cpp
+++ b/src/server/game/AI/CoreAI/PassiveAI.cpp
@@ -39,7 +39,7 @@ void PossessedAI::UpdateAI(const uint32 /*diff*/)
{
if (me->getVictim())
{
- if (!me->canAttack(me->getVictim()))
+ if (!me->IsValidAttackTarget(me->getVictim()))
me->AttackStop();
else
DoMeleeAttackIfReady();
diff --git a/src/server/game/AI/CoreAI/PetAI.cpp b/src/server/game/AI/CoreAI/PetAI.cpp
index 659aa778aca..442da862b8a 100755
--- a/src/server/game/AI/CoreAI/PetAI.cpp
+++ b/src/server/game/AI/CoreAI/PetAI.cpp
@@ -58,7 +58,7 @@ bool PetAI::_needToStop()
if (_CheckTargetCC(me->getVictim()) && !targetHasCC)
return true;
- return !me->canAttack(me->getVictim());
+ return !me->IsValidAttackTarget(me->getVictim());
}
void PetAI::_stopAttack()
diff --git a/src/server/game/AI/CoreAI/UnitAI.cpp b/src/server/game/AI/CoreAI/UnitAI.cpp
index b9ea57aa235..476c4fb9c70 100755
--- a/src/server/game/AI/CoreAI/UnitAI.cpp
+++ b/src/server/game/AI/CoreAI/UnitAI.cpp
@@ -242,6 +242,6 @@ void SimpleCharmedAI::UpdateAI(const uint32 /*diff*/)
me->GetMotionMaster()->MoveFollow(charmer, PET_FOLLOW_DIST, me->GetFollowAngle());
Unit* target = me->getVictim();
- if (!target || !charmer->canAttack(target))
+ if (!target || !charmer->IsValidAttackTarget(target))
AttackStart(charmer->SelectNearestTargetInAttackDistance());
}
diff --git a/src/server/game/AI/CreatureAIImpl.h b/src/server/game/AI/CreatureAIImpl.h
index 7e57082827c..46060445ee9 100755
--- a/src/server/game/AI/CreatureAIImpl.h
+++ b/src/server/game/AI/CreatureAIImpl.h
@@ -528,7 +528,7 @@ AISpellInfoType* GetAISpellInfo(uint32 i);
inline void CreatureAI::SetGazeOn(Unit* target)
{
- if (me->canAttack(target))
+ if (me->IsValidAttackTarget(target))
{
AttackStart(target);
me->SetReactState(REACT_PASSIVE);
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index 2489214dce3..7a574fee77b 100755
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -1989,7 +1989,7 @@ bool Creature::canCreatureAttack(Unit const* pVictim, bool force) const
if (!pVictim->IsInMap(this))
return false;
- if (!canAttack(pVictim, force))
+ if (!IsValidAttackTarget(pVictim))
return false;
if (!pVictim->isInAccessiblePlaceFor(this))
diff --git a/src/server/game/Entities/Creature/CreatureGroups.cpp b/src/server/game/Entities/Creature/CreatureGroups.cpp
index 9096123bb65..3fdb996bc5a 100755
--- a/src/server/game/Entities/Creature/CreatureGroups.cpp
+++ b/src/server/game/Entities/Creature/CreatureGroups.cpp
@@ -199,7 +199,7 @@ void CreatureGroup::MemberAttackStart(Creature* member, Unit* target)
if (itr->first->getVictim())
continue;
- if (itr->first->canAttack(target) && itr->first->AI())
+ if (itr->first->IsValidAttackTarget(target) && itr->first->AI())
itr->first->AI()->AttackStart(target);
}
}
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5c115e04652..cbcf95cd5b0 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -23029,7 +23029,7 @@ void Player::UpdateCharmedAI()
GetMotionMaster()->MoveFollow(charmer, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
Unit* target = getVictim();
- if (!target || !charmer->canAttack(target))
+ if (!target || !charmer->IsValidAttackTarget(target))
{
target = charmer->SelectNearestTarget();
if (!target)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 6b1fa0fbaae..338210c440a 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -12370,6 +12370,8 @@ bool Unit::IsValidAttackTarget(Unit const* target) const
bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell) const
{
+ ASSERT(target);
+
// can't attack self
if (this == target)
return false;
@@ -12506,6 +12508,8 @@ bool Unit::IsValidAssistTarget(Unit const* target) const
bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) const
{
+ ASSERT(target);
+
// can assist to self
if (this == target)
return true;
@@ -13171,7 +13175,7 @@ Unit* Creature::SelectVictim()
{
--aura;
caster = (*aura)->GetCaster();
- if (caster && canSeeOrDetect(caster, true) && canAttack(caster) && caster->isInAccessiblePlaceFor(ToCreature()))
+ if (caster && canSeeOrDetect(caster, true) && IsValidAttackTarget(caster) && caster->isInAccessiblePlaceFor(ToCreature()))
{
target = caster;
break;
diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h
index 8fc06c97cbb..27e8706fa37 100755
--- a/src/server/game/Grids/Notifiers/GridNotifiers.h
+++ b/src/server/game/Grids/Notifiers/GridNotifiers.h
@@ -807,7 +807,7 @@ namespace Trinity
return u->isAlive()
&& i_funit->IsWithinDistInMap(u, i_range)
&& !i_funit->IsFriendlyTo(u)
- && i_funit->canAttack(u)
+ && i_funit->IsValidAttackTarget(u)
&& u->GetCreatureType() != CREATURE_TYPE_CRITTER
&& i_funit->canSeeOrDetect(u);
}
@@ -977,7 +977,7 @@ namespace Trinity
if (!me->IsWithinDistInMap(u, m_range))
return false;
- if (!me->canAttack(u))
+ if (!me->IsValidAttackTarget(u))
return false;
m_range = me->GetDistance(u); // use found unit range as new range limit for next check
@@ -1008,7 +1008,7 @@ namespace Trinity
if (m_force)
{
- if (!me->canAttack(u))
+ if (!me->IsValidAttackTarget(u))
return false;
}
else
diff --git a/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp b/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp
index 5941d15d2c7..562e7a8c37c 100755
--- a/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/CombatHandler.cpp
@@ -45,7 +45,7 @@ void WorldSession::HandleAttackSwingOpcode(WorldPacket & recv_data)
return;
}
- if (!_player->canAttack(pEnemy))
+ if (!_player->IsValidAttackTarget(pEnemy))
{
// stop attack state at client
SendAttackStop(pEnemy);
diff --git a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
index b5c0744d7d4..3976517152d 100755
--- a/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/PetHandler.cpp
@@ -191,7 +191,7 @@ void WorldSession::HandlePetActionHelper(Unit* pet, uint64 guid1, uint16 spellid
return;
if (Unit* owner = pet->GetOwner())
- if (!owner->canAttack(TargetUnit))
+ if (!owner->IsValidAttackTarget(TargetUnit))
return;
// Not let attack through obstructions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index f798e43a7d2..8f7bdc1ba25 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1364,7 +1364,7 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
// remove invalid attackers
for (Unit::AttackerSet::iterator aItr = attackers.begin(); aItr != attackers.end();)
- if (!(*aItr)->canAttack(m_caster))
+ if (!(*aItr)->IsValidAttackTarget(m_caster))
attackers.erase(aItr++);
else
++aItr;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
index 856d0031d0d..5bd675ea0ba 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp
@@ -226,7 +226,7 @@ public:
Unit* eventStarter = Unit::GetUnit(*me, uiEventStarterGUID);
- if (eventStarter && me->canAttack(eventStarter))
+ if (eventStarter && me->IsValidAttackTarget(eventStarter))
AttackStart(eventStarter);
else if (!UpdateVictim())
{
@@ -250,7 +250,7 @@ public:
// switch to "who" if nearer than current target.
void SelectNearestTarget(Unit* who)
{
- if (me->getVictim() && me->GetDistanceOrder(who, me->getVictim()) && me->canAttack(who))
+ if (me->getVictim() && me->GetDistanceOrder(who, me->getVictim()) && me->IsValidAttackTarget(who))
{
me->getThreatManager().modifyThreatPercent(me->getVictim(), -100);
me->AddThreat(who, 1000000.0f);
diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp
index 02e6e8fc45b..5c7dc9abfda 100644
--- a/src/server/scripts/Northrend/borean_tundra.cpp
+++ b/src/server/scripts/Northrend/borean_tundra.cpp
@@ -862,7 +862,7 @@ public:
void EnterCombat(Unit* who)
{
- if (me->canAttack(who))
+ if (me->IsValidAttackTarget(who))
AttackStart(who);
}
@@ -1618,7 +1618,7 @@ public:
void EnterCombat(Unit* who)
{
- if (me->canAttack(who))
+ if (me->IsValidAttackTarget(who))
AttackStart(who);
}