rjw-sexperience-ideology/Source/IdeologyAddon/UsageRules/FocusedVaginalPreferences.cs
2025-03-16 13:37:16 +05:00

63 lines
No EOL
2 KiB
C#

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<SexPreference> GetPreferences(Pawn fucker, Pawn fucked)
{
// Define the set of valid precepts
var validHumanPrecepts = new HashSet<PreceptDef>
{
RsiDefOf.Precept.Pregnancy_Required,
};
var validAnimalPrecepts = new HashSet<PreceptDef>
{
RsiDefOf.Precept.PregnancyAnimal_Required,
};
var validBreedingPrecepts = new HashSet<PreceptDef>
{
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.IsHuman(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);
}
}
}