aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/BattlePetHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/BattlePetHandler.cpp')
-rw-r--r--src/server/game/Handlers/BattlePetHandler.cpp44
1 files changed, 43 insertions, 1 deletions
diff --git a/src/server/game/Handlers/BattlePetHandler.cpp b/src/server/game/Handlers/BattlePetHandler.cpp
index 581be775faa..4332931795c 100644
--- a/src/server/game/Handlers/BattlePetHandler.cpp
+++ b/src/server/game/Handlers/BattlePetHandler.cpp
@@ -18,7 +18,9 @@
#include "WorldSession.h"
#include "BattlePetMgr.h"
#include "BattlePetPackets.h"
+#include "ObjectAccessor.h"
#include "Player.h"
+#include "TemporarySummon.h"
void WorldSession::HandleBattlePetRequestJournal(WorldPackets::BattlePet::BattlePetRequestJournal& /*battlePetRequestJournal*/)
{
@@ -42,7 +44,47 @@ void WorldSession::HandleBattlePetSetBattleSlot(WorldPackets::BattlePet::BattleP
void WorldSession::HandleBattlePetModifyName(WorldPackets::BattlePet::BattlePetModifyName& battlePetModifyName)
{
- GetBattlePetMgr()->ModifyName(battlePetModifyName.PetGuid, battlePetModifyName.Name, battlePetModifyName.DeclinedName.get_ptr());
+ GetBattlePetMgr()->ModifyName(battlePetModifyName.PetGuid, battlePetModifyName.Name, battlePetModifyName.DeclinedNames.get_ptr());
+}
+
+void WorldSession::HandleQueryBattlePetName(WorldPackets::BattlePet::QueryBattlePetName& queryBattlePetName)
+{
+ WorldPackets::BattlePet::QueryBattlePetNameResponse response;
+ response.BattlePetID = queryBattlePetName.BattlePetID;
+
+ Creature* summonedBattlePet = ObjectAccessor::GetCreatureOrPetOrVehicle(*_player, queryBattlePetName.UnitGUID);
+ if (!summonedBattlePet || !summonedBattlePet->IsSummon())
+ {
+ SendPacket(response.Write());
+ return;
+ }
+
+ response.CreatureID = summonedBattlePet->GetEntry();
+ response.Timestamp = summonedBattlePet->GetBattlePetCompanionNameTimestamp();
+
+ Unit* petOwner = summonedBattlePet->ToTempSummon()->GetSummoner();
+ if (!petOwner->IsPlayer())
+ {
+ SendPacket(response.Write());
+ return;
+ }
+
+ BattlePetMgr::BattlePet const* battlePet = petOwner->ToPlayer()->GetSession()->GetBattlePetMgr()->GetPet(queryBattlePetName.BattlePetID);
+ if (!battlePet)
+ {
+ SendPacket(response.Write());
+ return;
+ }
+
+ response.Allow = true;
+ response.Name = battlePet->PacketInfo.Name;
+ if (battlePet->DeclinedName)
+ {
+ response.HasDeclined = true;
+ response.DeclinedNames = *battlePet->DeclinedName;
+ }
+
+ SendPacket(response.Write());
}
void WorldSession::HandleBattlePetDeletePet(WorldPackets::BattlePet::BattlePetDeletePet& battlePetDeletePet)