rjw-sexperience-ideology/Source/IdeologyAddon/UsageRules/IncreasedVaginalPreferences.cs
2025-07-22 18:15:35 +03:00

52 lines
No EOL
1.6 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 IncreasedVaginalPreferences
{
public static IEnumerable<SexPreference> GetPreferences(Pawn fucker, Pawn fucked)
{
// Define the set of valid precepts
var validHumanPrecepts = new HashSet<PreceptDef>
{
RsiDefOf.Precept.Pregnancy_Elevated,
RsiDefOf.Precept.Pregnancy_Holy,
};
var validBreedingPrecepts = new HashSet<PreceptDef>
{
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.IsHumanLike(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);
}
}
}