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); } } }
private static void HandleNewborn( ref Decorators.AnimalHouse moddedAnimalHouse, string name, ref QuestionEvent questionEvent, Farmer moddedPlayer) { var withEggReadyToHatch = moddedAnimalHouse.GetIncubatorWithEggReadyToHatch(); var moddedParent = new Decorators.FarmAnimal(questionEvent.animal); var dictionary = FarmAnimals.GroupTypesByCategory().Where(kvp => kvp.Value.Contains(moddedParent.GetTypeString())) .ToDictionary(kvp => kvp.Key, kvp => moddedPlayer.SanitizeBlueChickens(kvp.Value)); var randomTypeFromProduce = moddedParent.GetRandomTypeFromProduce(dictionary); var building = moddedAnimalHouse.GetBuilding(); var farmAnimal = new Decorators.FarmAnimal(moddedPlayer.CreateFarmAnimal(randomTypeFromProduce, name, building)); farmAnimal.AssociateParent(questionEvent.animal); farmAnimal.AddToBuilding(building); farmAnimal.SetCurrentProduce(-1); Event.ForceQuestionEventToProceed(questionEvent); }
public void AddAnimal(Decorators.FarmAnimal animalToBeAdded) { var typeLog = new TypeLog(animalToBeAdded.GetTypeString(), animalToBeAdded.GetTypeString()); AddAnimal(animalToBeAdded, typeLog); }