Exemplo n.º 1
0
 private static bool ShouldStopFindingProduce(ref Decorators.FarmAnimal moddedAnimal)
 {
     return(Random.Seed((int)(moddedAnimal.GetUniqueId() / 2L +
                              Game.GetDaysPlayed() +
                              Game.GetTimeOfDay())).NextDouble() >
            moddedAnimal.GetFriendship() / 1500.0);
 }
Exemplo n.º 2
0
        public void OverwriteFarmAnimal(ref Decorators.FarmAnimal moddedAnimal, string requestedType)
        {
            if (!moddedAnimal.HasName())
            {
                return;
            }
            var typeLog = GetTypeLog(moddedAnimal.GetUniqueId());
            var type    = typeLog == null ? requestedType ?? moddedAnimal.GetTypeString() : typeLog.Current;

            moddedAnimal.UpdateFromData(type);
        }
Exemplo n.º 3
0
        private static void HandleCurrentProduce(ref Decorators.FarmAnimal moddedAnimal, byte originalFullness)
        {
            var daysToLay = moddedAnimal.GetDaysToLay(moddedAnimal.GetOwner());
            var seed      = (int)moddedAnimal.GetUniqueId() / 2 + Game.GetDaysPlayed();
            var flag      = RollRandomProduceChance(moddedAnimal, originalFullness, seed);

            if (!moddedAnimal.IsAProducer() || moddedAnimal.IsBaby())
            {
                moddedAnimal.SetCurrentProduce(-1);
            }
            else
            {
                if (moddedAnimal.GetDaysSinceLastLay() < daysToLay)
                {
                    return;
                }
                if (!flag)
                {
                    moddedAnimal.SetCurrentProduce(-1);
                }
                else
                {
                    HandleGameStats(moddedAnimal);
                    var player         = Game.GetPlayer();
                    var farmAnimals    = FarmAnimals.ReadCache();
                    var typeStr        = moddedAnimal.GetTypeString();
                    var farmAnimalType = farmAnimals.Categories.SelectMany(o => (IEnumerable <FarmAnimalType>)o.Types)
                                         .Where(o => o.Type == typeStr).FirstOrDefault();
                    var deluxeProduceLuck = farmAnimalType == null ? 0.0 : farmAnimalType.DeluxeProduceLuck;
                    var produceIndex      = moddedAnimal.RollProduce(seed, player, deluxeProduceLuck);
                    moddedAnimal.SetCurrentProduce(produceIndex);
                    if (!Paritee.StardewValley.Core.Characters.FarmAnimal.IsProduceAnItem(produceIndex))
                    {
                        return;
                    }
                    moddedAnimal.SetDaysSinceLastLay(0);
                    HandleProduceQuality(moddedAnimal, seed);
                    HandleProduceSpawn(moddedAnimal);
                }
            }
        }
Exemplo n.º 4
0
 public string GetSavedTypeOrDefault(Decorators.FarmAnimal moddedAnimal)
 {
     return(GetSavedTypeOrDefault(moddedAnimal.GetUniqueId(), moddedAnimal.IsCoopDweller()));
 }
Exemplo n.º 5
0
 public void AddAnimal(Decorators.FarmAnimal animalToBeAdded, TypeLog typeLog)
 {
     AddAnimal(new FarmAnimal(animalToBeAdded.GetUniqueId(), typeLog));
 }