public IEntity Generate(int breedId = -1) { var rand = new Random(); var breed = breedId == -1 ? Breeds.ElementAt(rand.Next(0, Breeds.Count)) : Breeds.FirstOrDefault(x => x.Id == breedId); byte gender = (byte)(rand.Next(100) >= 50 ? 1 : 0); var possibleHeads = Heads.Where(x => x.Breed == breed.Id && x.Gender == gender); var head = possibleHeads.ElementAt(rand.Next(0, possibleHeads.Count())); var look = EntityLookParser.Parse(gender == 0 ? breed.MaleLook : breed.FemaleLook); var entity = EntityFactory.Instance.CreateCharacter(); var entityLook = entity.Look(); var entityCharacter = entity.Character(); var entityStats = entity.Stats(); entityLook.Name = "ByPass" + Guid.NewGuid().ToString().Substring(0, 4); entityLook.BonesId = look.BonesId; entityLook.AddSkin(short.Parse(head.Skin)); entityLook.IndexedColors.AddRange(gender == 0 ? breed.MaleColors : breed.FemaleColors); entityLook.Scales.AddRange(look.Scales); entityCharacter.BreedId = breed.Id; entityCharacter.Gender = gender == 1; entityStats.Stats = new StatCollection(); return(entity); }