public static Pet Create(RealmManager manager, Player player, Item egg) { // there are no explicit uncommon/legendary pets so this is need var rarity = egg.Rarity; switch (rarity) { case PRarity.Uncommon: rarity = PRarity.Common; break; case PRarity.Legendary: rarity = PRarity.Rare; break; } var petDesc = GetRandomPetDesc(manager, rarity, egg.Family); if (petDesc == null) { player.SendErrorFormat("Bad egg. Family: {0} and Rarity: {1} combination does not exist.", egg.Family.ToString(), egg.Rarity.ToString()); return(null); } var acc = player.Client.Account; if (acc.PetList.Length >= player.Manager.Resources.Settings.MaxPetCount) { player.SendError("Pet cap has been reached. Please release a pet before adding new ones."); return(null); } var dbPet = manager.Database.NewPet(acc); dbPet.ObjectType = petDesc.ObjectType; var pet = new Pet(manager, player, dbPet); pet.Rarity = egg.Rarity; pet.MaxLevel = GetRarityMaxLevel(egg.Rarity); InitializeAbilities(manager, pet, petDesc); pet.Feed(GetNeededPower(GetRarityMaxLevel(egg.Rarity - 1) - 1)); pet.Save(); return(pet); }