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; }