Compare commits

..

No commits in common. "9a6efaf37dbab6cbc2016735576d15d8619771c4" and "c393ab45c0b92f5be46fa4069f65ac8a594cd967" have entirely different histories.

4 changed files with 12 additions and 24 deletions

Binary file not shown.

View file

@ -123,8 +123,8 @@ namespace RJW_Menstruation
protected string customwombtex = null; protected string customwombtex = null;
protected string customvagtex = null; protected string customvagtex = null;
protected bool estrusflag = false; protected bool estrusflag = false;
protected float? ovulationChanceCache = null; // Dirtied every simulation protected float ovulationChanceCache = -1.0f; // Dirtied every simulation
protected float? implantationChanceCache = null; protected float implantationChanceCache = -1.0f;
protected int opcache = -1; protected int opcache = -1;
protected float antisperm = 0.0f; protected float antisperm = 0.0f;
// RJW pregnancy, or Biotech pregnancy/labor/laborpushing // RJW pregnancy, or Biotech pregnancy/labor/laborpushing
@ -259,7 +259,7 @@ namespace RJW_Menstruation
} }
public float TotalFertCum public float TotalFertCum
{ {
get => cums?.Where(cum => CumCanFertilize(cum)).Sum(cum => cum.FertVolume) ?? 0; get => cums?.Sum(cum => cum.FertVolume) ?? 0;
} }
public float TotalCumPercent public float TotalCumPercent
{ {
@ -289,7 +289,7 @@ namespace RJW_Menstruation
private bool calculatingOvulationChance = false; private bool calculatingOvulationChance = false;
public bool CalculatingOvulationChance { get => calculatingOvulationChance; } public bool CalculatingOvulationChance { get => calculatingOvulationChance; }
private float CalculatedOvulationChance() protected float CalculatedOvulationChance()
{ {
float ovulationChance = 1.0f; float ovulationChance = 1.0f;
if (EggHealth <= 0.0f) return 0.0f; if (EggHealth <= 0.0f) return 0.0f;
@ -315,7 +315,7 @@ namespace RJW_Menstruation
return ovulationChance; return ovulationChance;
} }
private float CalculatedImplantChance() protected float CalculatedImplantChance()
{ {
if (ModsConfig.BiotechActive && xxx.is_human(Pawn)) if (ModsConfig.BiotechActive && xxx.is_human(Pawn))
{ {
@ -336,8 +336,8 @@ namespace RJW_Menstruation
{ {
get get
{ {
if (ovulationChanceCache == null) ovulationChanceCache = CalculatedOvulationChance(); if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalculatedOvulationChance();
return ovulationChanceCache.Value; return ovulationChanceCache;
} }
} }
@ -346,8 +346,8 @@ namespace RJW_Menstruation
{ {
get get
{ {
if (implantationChanceCache == null) implantationChanceCache = CalculatedImplantChance(); if (implantationChanceCache < 0.0f) implantationChanceCache = CalculatedImplantChance();
return implantationChanceCache.Value; return implantationChanceCache;
} }
} }
@ -1266,8 +1266,8 @@ namespace RJW_Menstruation
protected virtual void BeforeSimulator() protected virtual void BeforeSimulator()
{ {
ovulationChanceCache = null; ovulationChanceCache = -1.0f;
implantationChanceCache = null; implantationChanceCache = -1.0f;
CumOut(); CumOut();
} }
@ -1335,18 +1335,10 @@ namespace RJW_Menstruation
} }
} }
public bool CumCanFertilize(Cum cum)
{
return !cum.notcum &&
cum.FertVolume > 0 &&
!(cum.pawn?.Destroyed ?? true) &&
(RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(Pawn) == xxx.is_animal(cum.pawn));
}
protected Pawn Fertilize() protected Pawn Fertilize()
{ {
if (cums.NullOrEmpty()) return null; if (cums.NullOrEmpty()) return null;
List<Cum> eligibleCum = cums.FindAll(cum => CumCanFertilize(cum)); List<Cum> eligibleCum = cums.FindAll(cum => !cum.notcum && cum.FertVolume > 0 && !(cum.pawn?.Destroyed ?? true) && (RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(Pawn) == xxx.is_animal(cum.pawn)));
if (eligibleCum.Count == 0) return null; if (eligibleCum.Count == 0) return null;
float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume); float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume);

View file

@ -1,7 +1,6 @@
 
using RimWorld; using RimWorld;
using RimWorld.Planet;
using rjw; using rjw;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -47,8 +46,6 @@ namespace RJW_Menstruation
protected IEnumerable<Pawn> AffectedPawns() protected IEnumerable<Pawn> AffectedPawns()
{ {
if(Pawn.GetCaravan() is Caravan caravan)
foreach (Pawn p in caravan.PawnsListForReading.Where(p => p != Pawn)) yield return p;
Map mapHeld = Pawn.MapHeld; Map mapHeld = Pawn.MapHeld;
if (mapHeld == null) yield break; if (mapHeld == null) yield break;
foreach (Pawn pawn in mapHeld.mapPawns.AllPawnsSpawned) foreach (Pawn pawn in mapHeld.mapPawns.AllPawnsSpawned)

View file

@ -1,6 +1,5 @@
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.
- Pawns in estrus now give their pheromones to their caravan-mates.
- Pawns with the egglaying genes from Erin's Corvyia and Outland - Genetics no longer have a menstrual cycle. - Pawns with the egglaying genes from Erin's Corvyia and Outland - Genetics no longer have a menstrual cycle.
Version 1.0.9.3 Version 1.0.9.3