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

62 lines
2.1 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 DecreasedVaginalPreferences
{
public static IEnumerable<SexPreference> GetPreferences(Pawn fucker, Pawn fucked)
{
var validHumanPrecepts = new HashSet<PreceptDef>
{
RsiDefOf.Precept.Pregnancy_Horrible
};
var validAnimalPrecepts = new HashSet<PreceptDef>
{
RsiDefOf.Precept.PregnancyAnimal_Horrible
};
var validBreedingPrecepts = new HashSet<PreceptDef>
{
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.IsHumanLike(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);
}
}
}