mirror of
				https://gitgud.io/lutepickle/rjw_menstruation.git
				synced 2024-08-14 22:46:52 +00:00 
			
		
		
		
	Get the right menstruation comp when impregnating. Also remove CanFertilize, it's too much of a pain
This commit is contained in:
		
							parent
							
								
									28cc9755fd
								
							
						
					
					
						commit
						05029858d5
					
				
					 3 changed files with 12 additions and 40 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -85,34 +85,6 @@ namespace RJW_Menstruation
 | 
				
			||||||
            return 1.0f - Mathf.Pow(1.0f - Configurations.FertilizeChance, comp.TotalFertCum * comp.Props.basefertilizationChanceFactor);
 | 
					            return 1.0f - Mathf.Pow(1.0f - Configurations.FertilizeChance, comp.TotalFertCum * comp.Props.basefertilizationChanceFactor);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // A looser CanImpregnate
 | 
					 | 
				
			||||||
        public static bool CanFertilize(Pawn fucker, Pawn fucked, xxx.rjwSextype sexType = xxx.rjwSextype.Vaginal)
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            if (fucker == null || fucked == null) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!fucked.GetMenstruationComps().Any()) return PregnancyHelper.CanImpregnate(fucker, fucked, sexType);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (sexType != xxx.rjwSextype.Vaginal && sexType != xxx.rjwSextype.DoublePenetration) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (AndroidsCompatibility.IsAndroid(fucker) && AndroidsCompatibility.IsAndroid(fucked)) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (fucker.IsUnsexyRobot() || fucked.IsUnsexyRobot()) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!fucker.RaceHasPregnancy() || !fucked.RaceHasPregnancy()) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!Genital_Helper.has_penis_fertile(fucker, fucker.GetGenitalsList())) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (xxx.is_human(fucked) && xxx.is_human(fucker) && !RJWPregnancySettings.humanlike_pregnancy_enabled) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (xxx.is_animal(fucker) != xxx.is_animal(fucked) && !RJWPregnancySettings.bestial_pregnancy_enabled) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (xxx.is_animal(fucker) && xxx.is_animal(fucked) && !RJWPregnancySettings.animal_pregnancy_enabled) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (fucker.def.defName != fucked.def.defName && RJWPregnancySettings.interspecies_impregnation_modifier <= 0.0f && !RJWPregnancySettings.complex_interspecies) return false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        public static Texture2D GetPregnancyIcon(this HediffComp_Menstruation comp, Hediff hediff)
 | 
					        public static Texture2D GetPregnancyIcon(this HediffComp_Menstruation comp, Hediff hediff)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            string icon = "";
 | 
					            string icon = "";
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,11 +34,11 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            HediffComp_Menstruation comp;
 | 
					            HediffComp_Menstruation comp;
 | 
				
			||||||
            if (pawn.Has(Quirk.ImpregnationFetish) || partner.Has(Quirk.ImpregnationFetish) || partner.IsInEstrus())
 | 
					            if (pawn.Has(Quirk.ImpregnationFetish) || partner.Has(Quirk.ImpregnationFetish) || partner.IsInEstrus())
 | 
				
			||||||
                comp = pawn.GetFertileMenstruationComp();
 | 
					                comp = partner.GetFertileMenstruationComp();
 | 
				
			||||||
            else comp = pawn.GetRandomMenstruationComp();
 | 
					            else comp = partner.GetRandomMenstruationComp();
 | 
				
			||||||
            if (comp == null) return true;
 | 
					            if (comp == null) return true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (Genital_Helper.has_penis_fertile(pawn, pawnparts) && MenstruationUtility.CanFertilize(pawn, partner, sextype))
 | 
					            if (Genital_Helper.has_penis_fertile(pawn, pawnparts) && PregnancyHelper.CanImpregnate(pawn, partner, sextype))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                PregnancyHelper.Doimpregnate(pawn, partner);
 | 
					                PregnancyHelper.Doimpregnate(pawn, partner);
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
| 
						 | 
					@ -105,8 +105,8 @@ namespace RJW_Menstruation
 | 
				
			||||||
            if (partner.IsAnimal() && !Configurations.EnableAnimalCycle) return true;
 | 
					            if (partner.IsAnimal() && !Configurations.EnableAnimalCycle) return true;
 | 
				
			||||||
            HediffComp_Menstruation comp;
 | 
					            HediffComp_Menstruation comp;
 | 
				
			||||||
            if (pawn.Has(Quirk.ImpregnationFetish) || partner.Has(Quirk.ImpregnationFetish) || partner.IsInEstrus())
 | 
					            if (pawn.Has(Quirk.ImpregnationFetish) || partner.Has(Quirk.ImpregnationFetish) || partner.IsInEstrus())
 | 
				
			||||||
                comp = pawn.GetFertileMenstruationComp();
 | 
					                comp = partner.GetFertileMenstruationComp();
 | 
				
			||||||
            else comp = pawn.GetRandomMenstruationComp();
 | 
					            else comp = partner.GetRandomMenstruationComp();
 | 
				
			||||||
            if (comp == null)
 | 
					            if (comp == null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                ModLog.Message("used original rjw method: Comp missing");
 | 
					                ModLog.Message("used original rjw method: Comp missing");
 | 
				
			||||||
| 
						 | 
					@ -144,9 +144,9 @@ namespace RJW_Menstruation
 | 
				
			||||||
            // This is stricter than can_impregnate, so quickly filter out scenarios that are negative anyways.
 | 
					            // This is stricter than can_impregnate, so quickly filter out scenarios that are negative anyways.
 | 
				
			||||||
            if (__result == false || __instance != Quirk.ImpregnationFetish) return;
 | 
					            if (__result == false || __instance != Quirk.ImpregnationFetish) return;
 | 
				
			||||||
            __result =
 | 
					            __result =
 | 
				
			||||||
                (MenstruationUtility.CanFertilize(pawn, partner) && (partner.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true))
 | 
					                (PregnancyHelper.CanImpregnate(pawn, partner) && (partner.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true))
 | 
				
			||||||
                ||
 | 
					                ||
 | 
				
			||||||
                (MenstruationUtility.CanFertilize(partner, pawn) && (pawn.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true));
 | 
					                (PregnancyHelper.CanImpregnate(partner, pawn) && (pawn.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -165,9 +165,9 @@ namespace RJW_Menstruation
 | 
				
			||||||
            else __result--;
 | 
					            else __result--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (
 | 
					            if (
 | 
				
			||||||
                (MenstruationUtility.CanFertilize(pawn, partner, props.sexType) && (partner.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true))
 | 
					                (PregnancyHelper.CanImpregnate(pawn, partner, props.sexType) && (partner.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true))
 | 
				
			||||||
                ||
 | 
					                ||
 | 
				
			||||||
                (MenstruationUtility.CanFertilize(partner, pawn, props.sexType) && (pawn.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true)))
 | 
					                (PregnancyHelper.CanImpregnate(partner, pawn, props.sexType) && (pawn.GetMenstruationComps()?.Any(comp => comp.IsDangerDay) ?? true)))
 | 
				
			||||||
                __result++;
 | 
					                __result++;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -189,15 +189,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 (fucker.IsInEstrus(true) && MenstruationUtility.CanFertilize(fucked, fucker))
 | 
					            if (fucker.IsInEstrus(true) && PregnancyHelper.CanImpregnate(fucked, fucker))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                __result *= (1f + GetNetFertility(fucker, fucked) / 4);
 | 
					                __result *= (1f + GetNetFertility(fucker, fucked) / 4);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            else if (fucker.IsInEstrus(false) && MenstruationUtility.CanFertilize(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) && fucked.IsInEstrus(true) && MenstruationUtility.CanFertilize(fucker, fucked))
 | 
					            else if (xxx.is_animal(fucker) && fucked.IsInEstrus(true) && PregnancyHelper.CanImpregnate(fucker, fucked))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                __result *= 1.25f;
 | 
					                __result *= 1.25f;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue