[11674] Fixed names of pets summoned by npc.

* Add check to make sure that creature controlled pet use default name from template.
* Add localization support to pet name query for above pets type.
This commit is contained in:
VladimirMangos 2011-06-25 20:43:11 +04:00
parent adcae44c9a
commit d8a3f4b925
3 changed files with 19 additions and 4 deletions

View file

@ -326,6 +326,20 @@ void WorldSession::SendPetNameQuery(ObjectGuid petguid, uint32 petnumber)
std::string name = pet->GetName();
// creature pets have localization like other creatures
if (!pet->GetOwnerGuid().IsPlayer())
{
int loc_idx = GetSessionDbLocaleIndex();
if (loc_idx >= 0)
{
if (CreatureLocale const *cl = sObjectMgr.GetCreatureLocale(pet->GetEntry()))
{
if (cl->Name.size() > size_t(loc_idx) && !cl->Name[loc_idx].empty())
name = cl->Name[loc_idx];
}
}
}
WorldPacket data(SMSG_PET_NAME_QUERY_RESPONSE, (4+4+name.size()+1));
data << uint32(petnumber);
data << name.c_str();

View file

@ -5651,14 +5651,15 @@ void Spell::EffectSummonPet(SpellEffectIndex eff_idx)
NewSummon->InitLevelupSpellsForLevel();
NewSummon->InitTalentForLevel();
if(NewSummon->getPetType() == SUMMON_PET)
if (m_caster->GetTypeId() == TYPEID_PLAYER && NewSummon->getPetType() == SUMMON_PET)
{
// generate new name for summon pet
std::string new_name = sObjectMgr.GeneratePetName(petentry);
if(!new_name.empty())
if (!new_name.empty())
NewSummon->SetName(new_name);
}
else if(NewSummon->getPetType() == HUNTER_PET)
if (NewSummon->getPetType() == HUNTER_PET)
{
NewSummon->RemoveByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_RENAMED);
NewSummon->SetByteFlag(UNIT_FIELD_BYTES_2, 2, UNIT_CAN_BE_ABANDONED);

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__
#define __REVISION_NR_H__
#define REVISION_NR "11673"
#define REVISION_NR "11674"
#endif // __REVISION_NR_H__