using RimWorld; using rjw; using rjw.Modules.Interactions.Preferences; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { public class DecreasedVaginalPreferences { public static IEnumerable GetPreferences(Pawn fucker, Pawn fucked) { var validHumanPrecepts = new HashSet { RsiDefOf.Precept.Pregnancy_Horrible }; var validAnimalPrecepts = new HashSet { RsiDefOf.Precept.PregnancyAnimal_Horrible }; var validBreedingPrecepts = new HashSet { RsiDefOf.Precept.BestialBreeding_Horrible, RsiDefOf.Precept.BestialBreeding_Disliked }; bool hasValidHumanPreceptForFucker = fucker.Ideo != null && validHumanPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); bool hasValidHumanPreceptForFucked = fucked.Ideo != null && validHumanPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); bool hasValidAnimalPreceptForFucked = fucked.Ideo != null && validAnimalPrecepts.Any(preceptDef => fucked.Ideo.HasPrecept(preceptDef)); bool hasValidBreedingPreceptsForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { RsiLog.Message($"DecreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); } else if (hasValidAnimalPreceptForFucked && PawnExtensions.IsAnimal(fucker)) { RsiLog.Message($"DecreasedVaginal: {fucker.Name} is animal and {fucked.Name} has a valid precept for animal pregnancy."); } else if (hasValidBreedingPreceptsForFucker && PawnExtensions.IsAnimal(fucked)) { RsiLog.Message($"MaleIncreasedVaginal: {fucked.Name} is animal and {fucker.Name} has a valid precept for bestial breeding."); } else { yield break; } yield return new TypePreference(xxx.rjwSextype.Vaginal, Preference.Hate); } } }