using RimWorld; using rjw; using rjw.Modules.Interactions.Preferences; using System.Collections.Generic; using System.Linq; using Verse; namespace RJWSexperience.Ideology { public class IncreasedVaginalPreferences { public static IEnumerable GetPreferences(Pawn fucker, Pawn fucked) { // Define the set of valid precepts var validHumanPrecepts = new HashSet { RsiDefOf.Precept.Pregnancy_Elevated, RsiDefOf.Precept.Pregnancy_Holy, }; var validBreedingPrecepts = new HashSet { RsiDefOf.Precept.BestialBreeding_Encouraged, }; // Check precepts for the pawns 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 hasValidBreedingPreceptForFucker = fucker.Ideo != null && validBreedingPrecepts.Any(preceptDef => fucker.Ideo.HasPrecept(preceptDef)); if ((hasValidHumanPreceptForFucked || hasValidHumanPreceptForFucker) && PawnExtensions.IsHuman(fucker)) { RsiLog.Message($"IncreasedVaginal: {fucker.Name} is human and {fucked.Name} has a valid precept for human pregnancy."); } else if (hasValidBreedingPreceptForFucker && 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.Love); } } }