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