private static bool ShouldStopFindingProduce(ref Decorators.FarmAnimal moddedAnimal) { return(Random.Seed((int)(moddedAnimal.GetUniqueId() / 2L + Game.GetDaysPlayed() + Game.GetTimeOfDay())).NextDouble() > moddedAnimal.GetFriendship() / 1500.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); }
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); } } }
public string GetSavedTypeOrDefault(Decorators.FarmAnimal moddedAnimal) { return(GetSavedTypeOrDefault(moddedAnimal.GetUniqueId(), moddedAnimal.IsCoopDweller())); }
public void AddAnimal(Decorators.FarmAnimal animalToBeAdded, TypeLog typeLog) { AddAnimal(new FarmAnimal(animalToBeAdded.GetUniqueId(), typeLog)); }