diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/AI/CoreAI/GuardAI.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/AI/CoreAI/PassiveAI.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/AI/CoreAI/PetAI.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/AI/CoreAI/UnitAI.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/AI/CreatureAIImpl.h | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Creature/Creature.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Creature/CreatureGroups.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 6 | ||||
-rwxr-xr-x | src/server/game/Grids/Notifiers/GridNotifiers.h | 6 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/CombatHandler.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/PetHandler.cpp | 2 | ||||
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/boss_four_horsemen.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Northrend/borean_tundra.cpp | 4 |
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); } |