From 59e79dfef08dc328a3b3ece1fa67c547c2d893e6 Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 29 Apr 2009 18:04:56 -0500 Subject: *let petattack command use provided guid instead of player selection. By thenecromancer --HG-- branch : trunk --- src/game/PetHandler.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/game/PetHandler.cpp') diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 456d68ed54d..6286ba40b74 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -107,8 +107,7 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) } // only place where pet can be player pet->clearUnitState(UNIT_STAT_FOLLOW); - uint64 selguid = _player->GetSelection(); - Unit *TargetUnit = ObjectAccessor::GetUnit(*_player, selguid); + Unit *TargetUnit = ObjectAccessor::GetUnit(*_player, guid2); if(!TargetUnit) return; -- cgit v1.2.3 From efd58033ea12f3380c2ff78ca1f7f0b6db368754 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 30 Apr 2009 09:58:34 -0500 Subject: *Use canattack to check if canattack in pethandler and combathandler --HG-- branch : trunk --- src/game/CombatHandler.cpp | 10 +--------- src/game/PetHandler.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 12 deletions(-) (limited to 'src/game/PetHandler.cpp') diff --git a/src/game/CombatHandler.cpp b/src/game/CombatHandler.cpp index fb212870822..f9fb4fd7ee0 100644 --- a/src/game/CombatHandler.cpp +++ b/src/game/CombatHandler.cpp @@ -50,7 +50,7 @@ void WorldSession::HandleAttackSwingOpcode( WorldPacket & recv_data ) return; } - if(_player->IsFriendlyTo(pEnemy) || pEnemy->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE)) + if(!_player->canAttack(pEnemy)) { sLog.outError( "WORLD: Enemy %s %u is friendly",(IS_PLAYER_GUID(guid) ? "player" : "creature"),GUID_LOPART(guid)); @@ -59,14 +59,6 @@ void WorldSession::HandleAttackSwingOpcode( WorldPacket & recv_data ) return; } - if(!pEnemy->isAlive()) - { - // client can generate swing to known dead target if autoswitch between autoshot and autohit is enabled in client options - // stop attack state at client - SendAttackStop(pEnemy); - return; - } - _player->Attack(pEnemy,true); } diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 6286ba40b74..932eb593ff8 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -105,19 +105,21 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) //TODO: Send proper error message to client return; } + // only place where pet can be player - pet->clearUnitState(UNIT_STAT_FOLLOW); Unit *TargetUnit = ObjectAccessor::GetUnit(*_player, guid2); if(!TargetUnit) return; - // not let attack friendly units. - if(GetPlayer()->IsFriendlyTo(TargetUnit)) + if(!pet->canAttack(TargetUnit)) return; + // Not let attack through obstructions //if(!pet->IsWithinLOSInMap(TargetUnit)) // return; + pet->clearUnitState(UNIT_STAT_FOLLOW); + if(pet->GetTypeId() != TYPEID_PLAYER && ((Creature*)pet)->IsAIEnabled) { ((Creature*)pet)->AI()->AttackStart(TargetUnit); -- cgit v1.2.3