mirror of
				https://gitgud.io/lutepickle/rjw_menstruation.git
				synced 2024-08-14 22:46:52 +00:00 
			
		
		
		
	RJW tends not to set usedCondom on both participants in sex, so check for both
This commit is contained in:
		
							parent
							
								
									e4bd9a1f3c
								
							
						
					
					
						commit
						c9369028fa
					
				
					 3 changed files with 18 additions and 6 deletions
				
			
		| 
						 | 
					@ -244,7 +244,8 @@ namespace RJW_Menstruation
 | 
				
			||||||
                isInduced &&
 | 
					                isInduced &&
 | 
				
			||||||
                comp.Pawn.jobs.curDriver is JobDriver_Sex job &&
 | 
					                comp.Pawn.jobs.curDriver is JobDriver_Sex job &&
 | 
				
			||||||
                job.Sexprops != null &&
 | 
					                job.Sexprops != null &&
 | 
				
			||||||
                !job.Sexprops.usedCondom &&
 | 
					                //!job.Sexprops.usedCondom &&
 | 
				
			||||||
 | 
					                !UsingCondom(comp.Pawn, job.Partner) &&
 | 
				
			||||||
                (job.Sexprops.sexType == xxx.rjwSextype.Vaginal || job.Sexprops.sexType == xxx.rjwSextype.DoublePenetration))
 | 
					                (job.Sexprops.sexType == xxx.rjwSextype.Vaginal || job.Sexprops.sexType == xxx.rjwSextype.DoublePenetration))
 | 
				
			||||||
                ovulatoryProgress = 0.0f;
 | 
					                ovulatoryProgress = 0.0f;
 | 
				
			||||||
            else if (comp.curStage == HediffComp_Menstruation.Stage.Ovulatory) ovulatoryProgress = isInduced ? Mathf.Max(ovaryChanceToShow_01, comp.StageProgessNextUpdate) : comp.StageProgessNextUpdate;
 | 
					            else if (comp.curStage == HediffComp_Menstruation.Stage.Ovulatory) ovulatoryProgress = isInduced ? Mathf.Max(ovaryChanceToShow_01, comp.StageProgessNextUpdate) : comp.StageProgessNextUpdate;
 | 
				
			||||||
| 
						 | 
					@ -466,5 +467,14 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return damage.totalDamageDealt;
 | 
					            return damage.totalDamageDealt;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // RJW only sets usedCondom on the sexprops of the initiator, so work around that by checking for either pawn having it set
 | 
				
			||||||
 | 
					        public static bool UsingCondom(Pawn pawn, Pawn partner)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					                ((pawn?.jobs?.curDriver as JobDriver_Sex)?.Sexprops.usedCondom ?? false)
 | 
				
			||||||
 | 
					                ||
 | 
				
			||||||
 | 
					                ((partner?.jobs?.curDriver as JobDriver_Sex)?.Sexprops.usedCondom ?? false);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,13 +19,11 @@ namespace RJW_Menstruation
 | 
				
			||||||
        public static bool Prefix(SexProps props)
 | 
					        public static bool Prefix(SexProps props)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            xxx.rjwSextype sextype = props.sexType;
 | 
					            xxx.rjwSextype sextype = props.sexType;
 | 
				
			||||||
            Pawn pawn = props.pawn;
 | 
					            Pawn pawn = props.pawn;         // Penis
 | 
				
			||||||
            Pawn partner = props.partner;
 | 
					            Pawn partner = props.partner;   // Womb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return true;
 | 
					            if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return true;
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!partner.ShouldCycle()) return true;
 | 
					            if (!partner.ShouldCycle()) return true;
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (!InteractionCanCausePregnancy(props)) return false;
 | 
					            if (!InteractionCanCausePregnancy(props)) return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<Hediff> pawnparts = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn));
 | 
					            List<Hediff> pawnparts = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn));
 | 
				
			||||||
| 
						 | 
					@ -38,6 +36,8 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (Genital_Helper.has_penis_fertile(pawn, pawnparts) && PregnancyHelper.CanImpregnate(pawn, partner, sextype))
 | 
					            if (Genital_Helper.has_penis_fertile(pawn, pawnparts) && PregnancyHelper.CanImpregnate(pawn, partner, sextype))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					                if (MenstruationUtility.UsingCondom(pawn, partner)) return false;   // Shouldn't be needed, but RJW has a bug in the condom checks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                PregnancyHelper.DoImpregnate(pawn, partner);
 | 
					                PregnancyHelper.DoImpregnate(pawn, partner);
 | 
				
			||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					@ -344,7 +344,8 @@ namespace RJW_Menstruation
 | 
				
			||||||
            xxx.rjwSextype sextype = __instance.Sexprops.sexType;
 | 
					            xxx.rjwSextype sextype = __instance.Sexprops.sexType;
 | 
				
			||||||
            if (!(target is Pawn partner)) return;
 | 
					            if (!(target is Pawn partner)) return;
 | 
				
			||||||
            if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return;
 | 
					            if (sextype != xxx.rjwSextype.Vaginal && sextype != xxx.rjwSextype.DoublePenetration) return;
 | 
				
			||||||
            if (__instance.Sexprops.usedCondom) return;
 | 
					            //if (__instance.Sexprops.usedCondom) return;
 | 
				
			||||||
 | 
					            if (MenstruationUtility.UsingCondom(pawn, partner)) return;
 | 
				
			||||||
            if (AndroidsCompatibility.IsAndroid(pawn)) return;
 | 
					            if (AndroidsCompatibility.IsAndroid(pawn)) return;
 | 
				
			||||||
            if (!Impregnate_Patch.InteractionCanCausePregnancy(__instance.Sexprops)) return;
 | 
					            if (!Impregnate_Patch.InteractionCanCausePregnancy(__instance.Sexprops)) return;
 | 
				
			||||||
            if (!partner.ShouldCycle()) return;
 | 
					            if (!partner.ShouldCycle()) return;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
Version 1.5.0.0
 | 
					Version 1.5.0.0
 | 
				
			||||||
 - Support for RimWorld 1.5. All future changes to Menstruation will only be for Rimworld 1.5.
 | 
					 - Support for RimWorld 1.5. All future changes to Menstruation will only be for Rimworld 1.5.
 | 
				
			||||||
 | 
					 - More reliably detect the usage of condoms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Version 1.0.9.4
 | 
					Version 1.0.9.4
 | 
				
			||||||
 - Added graphics for the menstruation genes with thanks to Alpenglow.
 | 
					 - Added graphics for the menstruation genes with thanks to Alpenglow.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue