Example #1
0
        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);
        }