Compare commits
3 Commits
c393ab45c0
...
9a6efaf37d
Author | SHA1 | Date |
---|---|---|
lutepickle | 9a6efaf37d | |
lutepickle | cca7676bc0 | |
lutepickle | ba8801370f |
Binary file not shown.
|
@ -123,8 +123,8 @@ namespace RJW_Menstruation
|
|||
protected string customwombtex = null;
|
||||
protected string customvagtex = null;
|
||||
protected bool estrusflag = false;
|
||||
protected float ovulationChanceCache = -1.0f; // Dirtied every simulation
|
||||
protected float implantationChanceCache = -1.0f;
|
||||
protected float? ovulationChanceCache = null; // Dirtied every simulation
|
||||
protected float? implantationChanceCache = null;
|
||||
protected int opcache = -1;
|
||||
protected float antisperm = 0.0f;
|
||||
// RJW pregnancy, or Biotech pregnancy/labor/laborpushing
|
||||
|
@ -259,7 +259,7 @@ namespace RJW_Menstruation
|
|||
}
|
||||
public float TotalFertCum
|
||||
{
|
||||
get => cums?.Sum(cum => cum.FertVolume) ?? 0;
|
||||
get => cums?.Where(cum => CumCanFertilize(cum)).Sum(cum => cum.FertVolume) ?? 0;
|
||||
}
|
||||
public float TotalCumPercent
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ namespace RJW_Menstruation
|
|||
private bool calculatingOvulationChance = false;
|
||||
public bool CalculatingOvulationChance { get => calculatingOvulationChance; }
|
||||
|
||||
protected float CalculatedOvulationChance()
|
||||
private float CalculatedOvulationChance()
|
||||
{
|
||||
float ovulationChance = 1.0f;
|
||||
if (EggHealth <= 0.0f) return 0.0f;
|
||||
|
@ -315,7 +315,7 @@ namespace RJW_Menstruation
|
|||
return ovulationChance;
|
||||
}
|
||||
|
||||
protected float CalculatedImplantChance()
|
||||
private float CalculatedImplantChance()
|
||||
{
|
||||
if (ModsConfig.BiotechActive && xxx.is_human(Pawn))
|
||||
{
|
||||
|
@ -336,8 +336,8 @@ namespace RJW_Menstruation
|
|||
{
|
||||
get
|
||||
{
|
||||
if (ovulationChanceCache < 0.0f) ovulationChanceCache = CalculatedOvulationChance();
|
||||
return ovulationChanceCache;
|
||||
if (ovulationChanceCache == null) ovulationChanceCache = CalculatedOvulationChance();
|
||||
return ovulationChanceCache.Value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -346,8 +346,8 @@ namespace RJW_Menstruation
|
|||
{
|
||||
get
|
||||
{
|
||||
if (implantationChanceCache < 0.0f) implantationChanceCache = CalculatedImplantChance();
|
||||
return implantationChanceCache;
|
||||
if (implantationChanceCache == null) implantationChanceCache = CalculatedImplantChance();
|
||||
return implantationChanceCache.Value;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1266,8 +1266,8 @@ namespace RJW_Menstruation
|
|||
|
||||
protected virtual void BeforeSimulator()
|
||||
{
|
||||
ovulationChanceCache = -1.0f;
|
||||
implantationChanceCache = -1.0f;
|
||||
ovulationChanceCache = null;
|
||||
implantationChanceCache = null;
|
||||
CumOut();
|
||||
}
|
||||
|
||||
|
@ -1335,10 +1335,18 @@ 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()
|
||||
{
|
||||
if (cums.NullOrEmpty()) return null;
|
||||
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)));
|
||||
List<Cum> eligibleCum = cums.FindAll(cum => CumCanFertilize(cum));
|
||||
if (eligibleCum.Count == 0) return null;
|
||||
|
||||
float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
|
||||
using RimWorld;
|
||||
using RimWorld.Planet;
|
||||
using rjw;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
@ -46,6 +47,8 @@ namespace RJW_Menstruation
|
|||
|
||||
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;
|
||||
if (mapHeld == null) yield break;
|
||||
foreach (Pawn pawn in mapHeld.mapPawns.AllPawnsSpawned)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
Version 1.0.9.4
|
||||
- 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.
|
||||
|
||||
Version 1.0.9.3
|
||||
|
|
Loading…
Reference in New Issue