diff --git a/About/Manifest.xml b/About/Manifest.xml index 4079dc0..2ba5c1d 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Menstruation - 1.0.0.3 + 1.0.0.4 diff --git a/Assemblies/RJW_Menstruation.dll b/Assemblies/RJW_Menstruation.dll index 999d71b..5ceea94 100644 Binary files a/Assemblies/RJW_Menstruation.dll and b/Assemblies/RJW_Menstruation.dll differ diff --git a/Defs/HediffDef/Hediffs_Menstruation.xml b/Defs/HediffDef/Hediffs_Menstruation.xml new file mode 100644 index 0000000..ce5973c --- /dev/null +++ b/Defs/HediffDef/Hediffs_Menstruation.xml @@ -0,0 +1,47 @@ + + + + HediffWithComps + Hediff_MenstrualCramp + + in period + in period + {1} in period + (0.70,0.00,0.00) + true + false + true + false + 1 + 0.1 + + true + + +
  • + + 0.05 +
  • +
  • + 0.2 + + 0.1 +
  • +
  • + 0.4 + + 0.2 +
  • +
  • + 0.6 + + 0.4 +
  • +
    + +
  • + -0.1 +
  • +
    +
    +
    \ No newline at end of file diff --git a/source/RJW_Menstruation/RJW_Menstruation/Cum.cs b/source/RJW_Menstruation/RJW_Menstruation/Cum.cs index 3fbb33f..0dd131b 100644 --- a/source/RJW_Menstruation/RJW_Menstruation/Cum.cs +++ b/source/RJW_Menstruation/RJW_Menstruation/Cum.cs @@ -42,7 +42,7 @@ namespace RJW_Menstruation { if (DNAcache == null) { - DNAcache = DefDatabase.GetNamedSilentFail(pawn.def.defName); + DNAcache = DefDatabase.GetNamedSilentFail(pawn?.def.defName ?? "Human"); if (DNAcache == null) { DNAcache = VariousDefOf.defaultDNA; @@ -121,6 +121,7 @@ namespace RJW_Menstruation public void ExposeData() { Scribe_References.Look(ref pawn, "pawn", true); + Scribe_Defs.Look(ref DNAcache, "DNAcache"); Scribe_Values.Look(ref volume, "volume", volume, true); Scribe_Values.Look(ref fertvolume, "fertvolume", fertvolume, true); Scribe_Values.Look(ref notcumthickness, "notcumthickness", notcumthickness, true); diff --git a/source/RJW_Menstruation/RJW_Menstruation/HediffComp_Menstruation.cs b/source/RJW_Menstruation/RJW_Menstruation/HediffComp_Menstruation.cs index d959945..20948c1 100644 --- a/source/RJW_Menstruation/RJW_Menstruation/HediffComp_Menstruation.cs +++ b/source/RJW_Menstruation/RJW_Menstruation/HediffComp_Menstruation.cs @@ -79,6 +79,7 @@ namespace RJW_Menstruation private int lutealIntervalhours = -1; private int bleedingIntervalhours = -1; private int recoveryIntervalhours = -1; + private float crampPain= -1; public float TotalCum { @@ -165,7 +166,7 @@ namespace RJW_Menstruation { if (!cums.NullOrEmpty()) foreach (Cum cum in cums) { - if (!cum.notcum) yield return String.Format(cum.pawn.Label + ": {0:0.##}ml", cum.volume); + if (!cum.notcum) yield return String.Format(cum.pawn?.Label + ": {0:0.##}ml", cum.volume); else yield return String.Format(cum.notcumLabel + ": {0:0.##}ml", cum.volume); } else yield return Translations.Info_noCum; @@ -264,6 +265,7 @@ namespace RJW_Menstruation Scribe_Values.Look(ref lutealIntervalhours, "lutealIntervalhours", lutealIntervalhours, true); Scribe_Values.Look(ref bleedingIntervalhours, "bleedingIntervalhours", bleedingIntervalhours, true); Scribe_Values.Look(ref recoveryIntervalhours, "recoveryIntervalhours", recoveryIntervalhours, true); + Scribe_Values.Look(ref crampPain, "crampPain", crampPain, true); } @@ -314,7 +316,6 @@ namespace RJW_Menstruation } return null; } - public void CumIn(Pawn pawn, float injectedvolume, float fertility = 1.0f, ThingDef filthdef = null) @@ -500,6 +501,7 @@ namespace RJW_Menstruation if (lutealIntervalhours < 0) lutealIntervalhours = PeriodRandomizer(Props.lutealIntervalDays * 24, Props.deviationFactor); if (bleedingIntervalhours < 0) bleedingIntervalhours = PeriodRandomizer(Props.bleedingIntervalDays * 24, Props.deviationFactor); if (recoveryIntervalhours < 0) recoveryIntervalhours = PeriodRandomizer(Props.recoveryIntervalDays * 24, Props.deviationFactor); + if (crampPain < 0) crampPain = PainRandomizer(); if (cums == null) cums = new List(); if (eggs == null) eggs = new List(); if (parent.pawn.IsPregnant()) curStage = Stage.Pregnant; @@ -662,6 +664,9 @@ namespace RJW_Menstruation else { bleedingIntervalhours = PeriodRandomizer(bleedingIntervalhours, Props.deviationFactor); + Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_MenstrualCramp, parent.pawn); + hediff.Severity = crampPain * Rand.Range(0.9f,1.1f); + parent.pawn.health.AddHediff(hediff,Genital_Helper.get_genitalsBPR(parent.pawn)); GoNextStage(Stage.Bleeding); } } @@ -787,6 +792,15 @@ namespace RJW_Menstruation else return RJWPregnancySettings.interspecies_impregnation_modifier; } + private float PainRandomizer() + { + float rand = Rand.Range(0.0f, 1.0f); + if (rand < 0.2f) return Rand.Range(0.1f, 0.2f); + else if (rand < 0.8f) return Rand.Range(0.2f, 0.4f); + else if (rand < 0.95f) return Rand.Range(0.4f, 0.6f); + else return Rand.Range(0.6f, 1.0f); + } + private Stage RandomStage() { int rand = Rand.Range(0,2); diff --git a/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs b/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs index e84a4da..c19e827 100644 --- a/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs +++ b/source/RJW_Menstruation/RJW_Menstruation/VariousDefOf.cs @@ -20,6 +20,7 @@ namespace RJW_Menstruation public static readonly ThingDef CumFilth = DefDatabase.GetNamed("FilthCum"); public static readonly HediffDef RJW_IUD = DefDatabase.GetNamed("RJW_IUD"); + public static readonly HediffDef Hediff_MenstrualCramp = DefDatabase.GetNamed("Hediff_MenstrualCramp"); } }