void HandlePetRename(PetRename packet) { ObjectGuid petguid = packet.RenameData.PetGUID; bool isdeclined = packet.RenameData.HasDeclinedNames; string name = packet.RenameData.NewName; Pet pet = ObjectAccessor.GetPet(GetPlayer(), petguid); // check it! if (!pet || !pet.IsPet() || pet.ToPet().getPetType() != PetType.Hunter || !pet.HasByteFlag(UnitFields.Bytes2, UnitBytes2Offsets.PetFlags, UnitPetFlags.CanBeRenamed) || pet.GetOwnerGUID() != GetPlayer().GetGUID() || pet.GetCharmInfo() == null) { return; } PetNameInvalidReason res = ObjectManager.CheckPetName(name); if (res != PetNameInvalidReason.Success) { SendPetNameInvalid(res, name, null); return; } if (Global.ObjectMgr.IsReservedName(name)) { SendPetNameInvalid(PetNameInvalidReason.Reserved, name, null); return; } pet.SetName(name); pet.SetGroupUpdateFlag(GroupUpdatePetFlags.Name); pet.RemoveByteFlag(UnitFields.Bytes2, UnitBytes2Offsets.PetFlags, UnitPetFlags.CanBeRenamed); PreparedStatement stmt; SQLTransaction trans = new SQLTransaction(); if (isdeclined) { stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_CHAR_PET_DECLINEDNAME); stmt.AddValue(0, pet.GetCharmInfo().GetPetNumber()); trans.Append(stmt); stmt = DB.Characters.GetPreparedStatement(CharStatements.INS_CHAR_PET_DECLINEDNAME); stmt.AddValue(0, pet.GetCharmInfo().GetPetNumber()); stmt.AddValue(1, GetPlayer().GetGUID().ToString()); for (byte i = 0; i < SharedConst.MaxDeclinedNameCases; i++) { stmt.AddValue(i + 1, packet.RenameData.DeclinedNames.name[i]); } trans.Append(stmt); } stmt = DB.Characters.GetPreparedStatement(CharStatements.UPD_CHAR_PET_NAME); stmt.AddValue(0, name); stmt.AddValue(1, GetPlayer().GetGUID().ToString()); stmt.AddValue(2, pet.GetCharmInfo().GetPetNumber()); trans.Append(stmt); DB.Characters.CommitTransaction(trans); pet.SetUInt32Value(UnitFields.PetNameTimestamp, (uint)Time.UnixTime); // cast can't be helped }