Make IsInEstrus into a Pawn extension

This commit is contained in:
lutepickle 2022-06-03 08:55:48 -07:00
parent 9d83860d55
commit 5e818ab879
5 changed files with 15 additions and 15 deletions

Binary file not shown.

View file

@ -16,7 +16,7 @@ namespace RJW_Menstruation.Interactions
private bool WillingAndAble(Pawn fucker, Pawn fucked, bool visible) private bool WillingAndAble(Pawn fucker, Pawn fucked, bool visible)
{ {
return return
HediffComp_Menstruation.IsInEstrus(fucked, visible) fucked.IsInEstrus(visible)
&& &&
PregnancyHelper.CanImpregnate(fucker, fucked); PregnancyHelper.CanImpregnate(fucker, fucked);
} }

View file

@ -1062,11 +1062,7 @@ namespace RJW_Menstruation
} }
} }
public static bool IsInEstrus(Pawn pawn, bool visible = true)
{
if (pawn.Dead) return false;
return pawn.health?.hediffSet?.HasHediff(visible ? VariousDefOf.Hediff_Estrus : VariousDefOf.Hediff_Estrus_Concealed) ?? false;
}
public void SetEstrus(int days) public void SetEstrus(int days)
{ {
@ -1652,7 +1648,7 @@ namespace RJW_Menstruation
parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer);
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer);
} }
else if (IsInEstrus(parent.pawn) && parent.pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) else if (parent.pawn.IsInEstrus() && parent.pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup)
{ {
parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer);
parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer);

View file

@ -279,7 +279,11 @@ namespace RJW_Menstruation
} }
else return (hediff.p_end_tick - hediff.p_start_tick) / GenDate.TicksPerHour; else return (hediff.p_end_tick - hediff.p_start_tick) / GenDate.TicksPerHour;
} }
public static bool IsInEstrus(this Pawn pawn, bool visible = true)
{
if (pawn.Dead) return false;
return pawn.health?.hediffSet?.HasHediff(visible ? VariousDefOf.Hediff_Estrus : VariousDefOf.Hediff_Estrus_Concealed) ?? false;
}
} }
} }

View file

@ -168,15 +168,15 @@ namespace RJW_Menstruation
} }
public static void Postfix(ref float __result, Pawn fucker, Pawn fucked) public static void Postfix(ref float __result, Pawn fucker, Pawn fucked)
{ {
if (HediffComp_Menstruation.IsInEstrus(fucker, true) && PregnancyHelper.CanImpregnate(fucked, fucker)) if (fucker.IsInEstrus(true) && PregnancyHelper.CanImpregnate(fucked, fucker))
{ {
__result *= (1f + GetNetFertility(fucker, fucked) / 4); __result *= (1f + GetNetFertility(fucker, fucked) / 4);
} }
else if (HediffComp_Menstruation.IsInEstrus(fucker, false) && PregnancyHelper.CanImpregnate(fucked, fucker)) else if (fucker.IsInEstrus(false) && PregnancyHelper.CanImpregnate(fucked, fucker))
{ {
__result *= (1f + GetNetFertility(fucker, fucked) / 40); __result *= (1f + GetNetFertility(fucker, fucked) / 40);
} }
else if(xxx.is_animal(fucker) && HediffComp_Menstruation.IsInEstrus(fucked, true) && PregnancyHelper.CanImpregnate(fucker, fucked)) else if(xxx.is_animal(fucker) && fucked.IsInEstrus(true) && PregnancyHelper.CanImpregnate(fucker, fucked))
{ {
__result *= 1.25f; __result *= 1.25f;
} }
@ -188,7 +188,7 @@ namespace RJW_Menstruation
{ {
private static float FuckabilityThreshold(Pawn pawn, Pawn partner) private static float FuckabilityThreshold(Pawn pawn, Pawn partner)
{ {
return (Configurations.EstrusOverridesHookupSettings && HediffComp_Menstruation.IsInEstrus(pawn) && PregnancyHelper.CanImpregnate(partner, pawn)) return (Configurations.EstrusOverridesHookupSettings && pawn.IsInEstrus() && PregnancyHelper.CanImpregnate(partner, pawn))
? Configurations.EstrusFuckabilityToHookup : RJWHookupSettings.MinimumFuckabilityToHookup; ? Configurations.EstrusFuckabilityToHookup : RJWHookupSettings.MinimumFuckabilityToHookup;
} }
@ -217,12 +217,12 @@ namespace RJW_Menstruation
{ {
private static float AttractivenessThreshold(Pawn pawn, Pawn partner) private static float AttractivenessThreshold(Pawn pawn, Pawn partner)
{ {
return (Configurations.EstrusOverridesHookupSettings && HediffComp_Menstruation.IsInEstrus(pawn) && PregnancyHelper.CanImpregnate(partner, pawn)) return (Configurations.EstrusOverridesHookupSettings && pawn.IsInEstrus() && PregnancyHelper.CanImpregnate(partner, pawn))
? Configurations.EstrusAttractivenessToHookup : RJWHookupSettings.MinimumAttractivenessToHookup; ? Configurations.EstrusAttractivenessToHookup : RJWHookupSettings.MinimumAttractivenessToHookup;
} }
private static float RelationshipThreshold(Pawn pawn, Pawn partner) private static float RelationshipThreshold(Pawn pawn, Pawn partner)
{ {
return (Configurations.EstrusOverridesHookupSettings && HediffComp_Menstruation.IsInEstrus(pawn) && PregnancyHelper.CanImpregnate(partner, pawn)) return (Configurations.EstrusOverridesHookupSettings && pawn.IsInEstrus() && PregnancyHelper.CanImpregnate(partner, pawn))
? Configurations.EstrusRelationshipToHookup : RJWHookupSettings.MinimumRelationshipToHookup; ? Configurations.EstrusRelationshipToHookup : RJWHookupSettings.MinimumRelationshipToHookup;
} }