diff --git a/1.3/Assemblies/RJW_Menstruation.dll b/1.3/Assemblies/RJW_Menstruation.dll index 26f06bf..d95bc41 100644 Binary files a/1.3/Assemblies/RJW_Menstruation.dll and b/1.3/Assemblies/RJW_Menstruation.dll differ diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/EstrusPartKindUsageRule.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/EstrusPartKindUsageRule.cs index 685684c..c38ee45 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/EstrusPartKindUsageRule.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/EstrusPartKindUsageRule.cs @@ -10,24 +10,31 @@ namespace RJW_Menstruation.Interactions { public class EstrusPartKindUsageRule : IPartPreferenceRule { - private bool WillingAndAble(Pawn fucker, Pawn fucked) + private const float visible_estrus_multiplier = Multipliers.Doubled; + private const float concealed_estrus_multiplier = 1.1f; + + private bool WillingAndAble(Pawn fucker, Pawn fucked, bool visible) { return - (fucked.health?.hediffSet?.HasHediff(VariousDefOf.Hediff_Estrus) ?? false) + HediffComp_Menstruation.IsInEstrus(fucked, visible) && PregnancyHelper.CanImpregnate(fucker, fucked); } public IEnumerable> ModifiersForDominant(InteractionContext context) { - if (WillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn)) - yield return new Weighted(Multipliers.Frequent, LewdablePartKind.Vagina); + if (WillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn, true)) + yield return new Weighted(visible_estrus_multiplier, LewdablePartKind.Vagina); + else if (WillingAndAble(context.Internals.Submissive.Pawn, context.Internals.Dominant.Pawn, false)) + yield return new Weighted(concealed_estrus_multiplier, LewdablePartKind.Vagina); } public IEnumerable> ModifiersForSubmissive(InteractionContext context) { - if (WillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn)) - yield return new Weighted(Multipliers.Frequent, LewdablePartKind.Vagina); + if (WillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn, true)) + yield return new Weighted(visible_estrus_multiplier, LewdablePartKind.Vagina); + else if (WillingAndAble(context.Internals.Dominant.Pawn, context.Internals.Submissive.Pawn, false)) + yield return new Weighted(concealed_estrus_multiplier, LewdablePartKind.Vagina); } } } diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 237d5a6..937dbd6 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1022,11 +1022,10 @@ namespace RJW_Menstruation } } - public static bool IsInEstrus(Pawn pawn, bool includeConcealed = false) + public static bool IsInEstrus(Pawn pawn, bool visible = true) { if (pawn.Dead) return false; - if (pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Estrus)) return true; - else return includeConcealed && pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Estrus_Concealed); + return pawn.health?.hediffSet?.HasHediff(visible ? VariousDefOf.Hediff_Estrus : VariousDefOf.Hediff_Estrus_Concealed) ?? false; } public void SetEstrus(int days) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs index 2dce0c0..0cc1d6a 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs @@ -154,10 +154,8 @@ namespace RJW_Menstruation [HarmonyPatch(typeof(SexAppraiser), "GetBodyFactor")] public static class GetBodyFactor_Patch { - public static void Postfix(ref float __result, Pawn fucker, Pawn fucked) + private static float GetNetFertility(Pawn fucker, Pawn fucked) { - if (!(fucker.health?.hediffSet?.HasHediff(VariousDefOf.Hediff_Estrus) ?? false) || !PregnancyHelper.CanImpregnate(fucked, fucker)) - return; float fert = fucked.health.capacities.GetLevel(xxx.reproduction); if (fucker.def.defName != fucked.def.defName) { @@ -166,7 +164,18 @@ namespace RJW_Menstruation else fert *= RJWPregnancySettings.interspecies_impregnation_modifier; } - __result *= (1f + fert / 4); + return fert; + } + public static void Postfix(ref float __result, Pawn fucker, Pawn fucked) + { + if (HediffComp_Menstruation.IsInEstrus(fucker, true) && PregnancyHelper.CanImpregnate(fucked, fucker)) + { + __result *= (1f + GetNetFertility(fucker, fucked) / 4); + } + else if (HediffComp_Menstruation.IsInEstrus(fucker, false) && PregnancyHelper.CanImpregnate(fucked, fucker)) + { + __result *= (1f + GetNetFertility(fucker, fucked) / 40); + } } } diff --git a/changelogs.txt b/changelogs.txt index 65558dc..d799977 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,15 @@ +Version 1.0.6.1 + - Fix error when bleeding rate set to 0. + - A pawn in estrus will prefer partners and sex types that would result in pregnancy. + - Optional (default disabled) alternative casual hookup settings for a pawn in visible estrus. + + - Contributed by amevarashi: + - Fix womb cleaning job if no buckets on the map. + - Fix futa impregnations. + - Hide some details for hidden pregnancies. + - Keep father unknown if the RJW paternity operation hasn't been performed. + - Add ability to remove the gather cum gizmo. + Version 1.0.6.0 - adopted by lutepickle - Induced ovulators will now go into estrus on every cycle, not just the one after they've been cum in. Hope you have birth control.