Core/PetHandler: Implement CMSG_PET_STOP_ATTACK - thanks to zergtmn for the original code
--HG-- branch : trunk
This commit is contained in:
@@ -100,6 +100,33 @@ void WorldSession::HandlePetAction(WorldPacket & recv_data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WorldSession::HandlePetStopAttack(WorldPacket &recv_data)
|
||||||
|
{
|
||||||
|
uint64 guid;
|
||||||
|
recv_data >> guid;
|
||||||
|
|
||||||
|
sLog.outDebug("WORLD: Received CMSG_PET_STOP_ATTACK for GUID " UI64FMTD "", guid);
|
||||||
|
|
||||||
|
Unit* pet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, guid);
|
||||||
|
|
||||||
|
if (!pet)
|
||||||
|
{
|
||||||
|
sLog.outError("HandlePetStopAttack: Pet %u does not exist", uint32(GUID_LOPART(guid)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pet != GetPlayer()->GetPet() && pet != GetPlayer()->GetCharm())
|
||||||
|
{
|
||||||
|
sLog.outError("HandlePetStopAttack: Pet GUID %u isn't a pet or charmed creature of player %s", uint32(GUID_LOPART(guid)), GetPlayer()->GetName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pet->isAlive())
|
||||||
|
return;
|
||||||
|
|
||||||
|
pet->AttackStop();
|
||||||
|
}
|
||||||
|
|
||||||
void WorldSession::HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2)
|
void WorldSession::HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2)
|
||||||
{
|
{
|
||||||
CharmInfo *charmInfo = pet->GetCharmInfo();
|
CharmInfo *charmInfo = pet->GetCharmInfo();
|
||||||
|
|||||||
@@ -772,7 +772,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
|
|||||||
/*0x2E7*/ { "CMSG_WARDEN_DATA", STATUS_LOGGEDIN, &WorldSession::HandleWardenDataOpcode },
|
/*0x2E7*/ { "CMSG_WARDEN_DATA", STATUS_LOGGEDIN, &WorldSession::HandleWardenDataOpcode },
|
||||||
/*0x2E8*/ { "SMSG_GROUP_JOINED_BATTLEGROUND", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x2E8*/ { "SMSG_GROUP_JOINED_BATTLEGROUND", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x2E9*/ { "MSG_BATTLEGROUND_PLAYER_POSITIONS", STATUS_LOGGEDIN, &WorldSession::HandleBattlegroundPlayerPositionsOpcode},
|
/*0x2E9*/ { "MSG_BATTLEGROUND_PLAYER_POSITIONS", STATUS_LOGGEDIN, &WorldSession::HandleBattlegroundPlayerPositionsOpcode},
|
||||||
/*0x2EA*/ { "CMSG_PET_STOP_ATTACK", STATUS_NEVER, &WorldSession::Handle_NULL },
|
/*0x2EA*/ { "CMSG_PET_STOP_ATTACK", STATUS_LOGGEDIN, &WorldSession::HandlePetStopAttack },
|
||||||
/*0x2EB*/ { "SMSG_BINDER_CONFIRM", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x2EB*/ { "SMSG_BINDER_CONFIRM", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x2EC*/ { "SMSG_BATTLEGROUND_PLAYER_JOINED", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x2EC*/ { "SMSG_BATTLEGROUND_PLAYER_JOINED", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
/*0x2ED*/ { "SMSG_BATTLEGROUND_PLAYER_LEFT", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
/*0x2ED*/ { "SMSG_BATTLEGROUND_PLAYER_LEFT", STATUS_NEVER, &WorldSession::Handle_ServerSide },
|
||||||
|
|||||||
@@ -669,6 +669,7 @@ class WorldSession
|
|||||||
|
|
||||||
//Pet
|
//Pet
|
||||||
void HandlePetAction(WorldPacket & recv_data);
|
void HandlePetAction(WorldPacket & recv_data);
|
||||||
|
void HandlePetStopAttack(WorldPacket& recv_data);
|
||||||
void HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2);
|
void HandlePetActionHelper(Unit *pet, uint64 guid1, uint16 spellid, uint16 flag, uint64 guid2);
|
||||||
void HandlePetNameQuery(WorldPacket & recv_data);
|
void HandlePetNameQuery(WorldPacket & recv_data);
|
||||||
void HandlePetSetAction(WorldPacket & recv_data);
|
void HandlePetSetAction(WorldPacket & recv_data);
|
||||||
|
|||||||
Reference in New Issue
Block a user