diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll
index af91531..ce34bd7 100644
Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ
diff --git a/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml b/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml
index 9f20c9c..c62719a 100644
--- a/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml
+++ b/1.4/Defs/GeneDefs/GeneDefs_Menstruation.xml
@@ -21,6 +21,11 @@
UI/Genes/Placeholder
1
10
+
+
+ 0.75
+
+
@@ -30,6 +35,11 @@
UI/Genes/Placeholder
-1
12
+
+
+ 2.0
+
+
@@ -40,6 +50,11 @@
-2
1
16
+
+
+ 4.0
+
+
@@ -56,6 +71,11 @@
UI/Genes/Placeholder
1
20
+
+
+ true
+
+
@@ -66,6 +86,11 @@
-1
1
25
+
+
+ true
+
+
@@ -82,6 +107,11 @@
UI/Genes/Placeholder
-1
30
+
+
+ 2
+
+
@@ -91,6 +121,11 @@
UI/Genes/Placeholder
-1
35
+
+
+ 4
+
+
@@ -101,6 +136,11 @@
UI/Genes/Placeholder
-1
40
+
+
+ true
+
+
diff --git a/1.4/Patches/CycleDisabledGenes.xml b/1.4/Patches/CycleDisabledGenes.xml
new file mode 100644
index 0000000..0426e0f
--- /dev/null
+++ b/1.4/Patches/CycleDisabledGenes.xml
@@ -0,0 +1,59 @@
+
+
+
+
+
+ Alpha Genes
+
+
+ /Defs/GeneDef[defName="AG_Egglaying"]
+
+
+ true
+
+
+
+
+
+
+
+ Vanilla Races Expanded - Saurid
+
+
+ /Defs/GeneDef[defName="VRESaurids_Oviparous"]
+
+
+ true
+
+
+
+
+
+
+
+ Vanilla Races Expanded - Phytokin
+
+
+ /Defs/GeneDef[defName="VRE_SaplingBirth"]
+
+
+ true
+
+
+
+
+
+
+
+ Erin's Corvyia
+
+
+ /Defs/GeneDef[defName="ERN_EggLayer"]
+
+
+ true
+
+
+
+
+
\ No newline at end of file
diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
index 7eba238..ff03dea 100644
--- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
+++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
@@ -682,19 +682,15 @@ namespace RJW_Menstruation
if (Pawn.genes == null || !ModsConfig.BiotechActive) return;
- foreach (GeneDef geneDef in Pawn.genes.GenesListForReading.Select(gene => gene.def))
+ foreach (MenstruationModExtension extension in Pawn.genes.GenesListForReading.Select(gene => gene.def.GetModExtension()))
{
- if (geneDef == VariousDefOf.ShortEggLifetime) eggLifeSpanTicks = eggLifeSpanTicks * 3 / 4;
- else if (geneDef == VariousDefOf.DoubleEggLifetime) eggLifeSpanTicks *= 2;
- else if (geneDef == VariousDefOf.QuadEggLifetime) eggLifeSpanTicks *= 4;
+ if (extension == null) continue;
- else if (geneDef == VariousDefOf.NeverEstrus) estrusLevel = EstrusLevel.None;
- else if (geneDef == VariousDefOf.FullEstrus) estrusLevel = EstrusLevel.Visible;
-
- else if (geneDef == VariousDefOf.DoubleOvulation) ovulationFactor = 2f;
- else if (geneDef == VariousDefOf.QuadOvulation) ovulationFactor = 4f;
-
- else if (geneDef == VariousDefOf.NoBleeding) noBleeding = true;
+ eggLifeSpanTicks = (int)(eggLifeSpanTicks * extension.eggLifeTimeFactor);
+ if (extension.alwaysEstrus) estrusLevel = EstrusLevel.Visible;
+ else if (extension.neverEstrus) estrusLevel = EstrusLevel.None;
+ ovulationFactor *= extension.ovulationFactor;
+ if (extension.noBleeding) noBleeding = true;
}
}
diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs
index 75c796f..ac5a51d 100644
--- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs
+++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs
@@ -398,7 +398,8 @@ namespace RJW_Menstruation
if (!Configurations.EnableAnimalCycle && pawn.IsAnimal()) return false;
if (pawn.GetComp() != null) return false;
if (pawn.RaceHasOviPregnancy()) return false;
- if (ModsConfig.BiotechActive && pawn.genes != null &&
+
+ if (ModsConfig.BiotechActive && pawn.genes != null &&
pawn.genes.GenesListForReading.Select(gene => gene.def).Intersect(VariousDefOf.EggLayerGenes).Any()) return false;
return true;
diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/MenstruationModExtension.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/MenstruationModExtension.cs
new file mode 100644
index 0000000..c3a8fbe
--- /dev/null
+++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/MenstruationModExtension.cs
@@ -0,0 +1,15 @@
+using Verse;
+
+namespace RJW_Menstruation
+{
+ public class MenstruationModExtension : DefModExtension
+ {
+ public float eggLifeTimeFactor = 1.0f;
+ public bool neverEstrus = false;
+ public bool alwaysEstrus = false;
+ public float ovulationFactor = 1.0f;
+ public bool noBleeding = false;
+
+ public bool disableCycle = false;
+ }
+}
diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj
index 0c4aa45..33cf9ec 100644
--- a/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj
+++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/RJW_Menstruation.csproj
@@ -74,6 +74,7 @@
+
diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs
index 8169f6b..88ab0ef 100644
--- a/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs
+++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs
@@ -45,14 +45,6 @@ namespace RJW_Menstruation
public static readonly RecordDef AmountofCreampied = DefDatabase.GetNamed("AmountofCreampied");
public static readonly RecordDef AmountofFertilizedEggs = DefDatabase.GetNamed("AmountofFertilizedEggs");
public static readonly TaleDef TaleCameInside = DefDatabase.GetNamed("CameInside");
- public static readonly GeneDef ShortEggLifetime = DefDatabase.GetNamed("Menstruation_ShortEggLifetime");
- public static readonly GeneDef DoubleEggLifetime = DefDatabase.GetNamed("Menstruation_DoubleEggLifetime");
- public static readonly GeneDef QuadEggLifetime = DefDatabase.GetNamed("Menstruation_QuadEggLifetime");
- public static readonly GeneDef NeverEstrus = DefDatabase.GetNamed("Menstruation_NeverEstrus");
- public static readonly GeneDef FullEstrus = DefDatabase.GetNamed("Menstruation_FullEstrus");
- public static readonly GeneDef DoubleOvulation = DefDatabase.GetNamed("Menstruation_DoubleOvulation");
- public static readonly GeneDef QuadOvulation = DefDatabase.GetNamed("Menstruation_QuadOvulation");
- public static readonly GeneDef NoBleeding = DefDatabase.GetNamed("Menstruation_NoBleeding");
private static List allraces = null;
private static List allkinds = null;
@@ -157,14 +149,7 @@ namespace RJW_Menstruation
get
{
if (egglayergenes != null) return egglayergenes;
- egglayergenes = new HashSet
- {
- DefDatabase.GetNamedSilentFail("AG_EggLaying"), // Alpha Genes
- DefDatabase.GetNamedSilentFail("VRESaurids_Oviparous"), // VE Saurid
- DefDatabase.GetNamedSilentFail("VRE_SaplingBirth"), // VE Phytokin
- DefDatabase.GetNamedSilentFail("ERN_EggLayer"), // Erin's Corvyia
- };
- egglayergenes.Remove(null);
+ egglayergenes = DefDatabase.AllDefsListForReading.Where(geneDef => geneDef.GetModExtension()?.disableCycle ?? false).ToHashSet();
return egglayergenes;
}