mirror of
				https://gitgud.io/lutepickle/rjw_menstruation.git
				synced 2024-08-14 22:46:52 +00:00 
			
		
		
		
	fixed errors when runtimeGC removed pawns in cum list
added menstrual cramp
This commit is contained in:
		
							parent
							
								
									fd2ded7091
								
							
						
					
					
						commit
						bbe60f1dab
					
				
					 6 changed files with 67 additions and 4 deletions
				
			
		| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
					<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 | 
				
			||||||
<Manifest>
 | 
					<Manifest>
 | 
				
			||||||
	<identifier>RJW Menstruation</identifier>
 | 
						<identifier>RJW Menstruation</identifier>
 | 
				
			||||||
	<version>1.0.0.3</version>
 | 
						<version>1.0.0.4</version>
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
	<incompatibleWith />
 | 
						<incompatibleWith />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										47
									
								
								Defs/HediffDef/Hediffs_Menstruation.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								Defs/HediffDef/Hediffs_Menstruation.xml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,47 @@
 | 
				
			||||||
 | 
					<?xml version="1.0" encoding="utf-8" ?>
 | 
				
			||||||
 | 
					<Defs>	
 | 
				
			||||||
 | 
						<HediffDef Name="Hediff_MenstrualCramp">
 | 
				
			||||||
 | 
							<hediffClass>HediffWithComps</hediffClass>	
 | 
				
			||||||
 | 
							<defName>Hediff_MenstrualCramp</defName>
 | 
				
			||||||
 | 
							<label>In period</label>
 | 
				
			||||||
 | 
							<labelNoun>in period</labelNoun>
 | 
				
			||||||
 | 
							<description>in period</description>
 | 
				
			||||||
 | 
							<labelNounPretty>{1} in period</labelNounPretty>
 | 
				
			||||||
 | 
							<defaultLabelColor>(0.70,0.00,0.00)</defaultLabelColor>	
 | 
				
			||||||
 | 
							<isBad>true</isBad>
 | 
				
			||||||
 | 
							<tendable>false</tendable>
 | 
				
			||||||
 | 
							<makesSickThought>true</makesSickThought>
 | 
				
			||||||
 | 
							<makesAlert>false</makesAlert>	
 | 
				
			||||||
 | 
							<maxSeverity>1</maxSeverity>
 | 
				
			||||||
 | 
							<initialSeverity>0.1</initialSeverity>
 | 
				
			||||||
 | 
							<injuryProps>
 | 
				
			||||||
 | 
								<canMerge>true</canMerge>
 | 
				
			||||||
 | 
							</injuryProps>	
 | 
				
			||||||
 | 
							<stages>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<label>unpleasant</label>
 | 
				
			||||||
 | 
					        <painOffset>0.05</painOffset>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<minSeverity>0.2</minSeverity>
 | 
				
			||||||
 | 
									<label>annoy</label>
 | 
				
			||||||
 | 
					        <painOffset>0.1</painOffset>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<minSeverity>0.4</minSeverity>
 | 
				
			||||||
 | 
									<label>ache</label>
 | 
				
			||||||
 | 
					        <painOffset>0.2</painOffset>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
								<li>
 | 
				
			||||||
 | 
									<minSeverity>0.6</minSeverity>
 | 
				
			||||||
 | 
									<label>painful</label>
 | 
				
			||||||
 | 
					        <painOffset>0.4</painOffset>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</stages>	
 | 
				
			||||||
 | 
							<comps>
 | 
				
			||||||
 | 
								<li Class="HediffCompProperties_SeverityPerDay">
 | 
				
			||||||
 | 
					        <severityPerDay>-0.1</severityPerDay>
 | 
				
			||||||
 | 
								</li>
 | 
				
			||||||
 | 
							</comps>
 | 
				
			||||||
 | 
						</HediffDef>
 | 
				
			||||||
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (DNAcache == null)
 | 
					                if (DNAcache == null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    DNAcache = DefDatabase<DNADef>.GetNamedSilentFail(pawn.def.defName);
 | 
					                    DNAcache = DefDatabase<DNADef>.GetNamedSilentFail(pawn?.def.defName ?? "Human");
 | 
				
			||||||
                    if (DNAcache == null)
 | 
					                    if (DNAcache == null)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        DNAcache = VariousDefOf.defaultDNA;
 | 
					                        DNAcache = VariousDefOf.defaultDNA;
 | 
				
			||||||
| 
						 | 
					@ -121,6 +121,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        public void ExposeData()
 | 
					        public void ExposeData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Scribe_References.Look(ref pawn, "pawn", true);
 | 
					            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 volume, "volume", volume, true);
 | 
				
			||||||
            Scribe_Values.Look(ref fertvolume, "fertvolume", fertvolume, true);
 | 
					            Scribe_Values.Look(ref fertvolume, "fertvolume", fertvolume, true);
 | 
				
			||||||
            Scribe_Values.Look(ref notcumthickness, "notcumthickness", notcumthickness, true);
 | 
					            Scribe_Values.Look(ref notcumthickness, "notcumthickness", notcumthickness, true);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,6 +79,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
        private int lutealIntervalhours = -1;
 | 
					        private int lutealIntervalhours = -1;
 | 
				
			||||||
        private int bleedingIntervalhours = -1;
 | 
					        private int bleedingIntervalhours = -1;
 | 
				
			||||||
        private int recoveryIntervalhours = -1;
 | 
					        private int recoveryIntervalhours = -1;
 | 
				
			||||||
 | 
					        private float crampPain= -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public float TotalCum
 | 
					        public float TotalCum
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -165,7 +166,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (!cums.NullOrEmpty()) foreach (Cum cum in cums)
 | 
					                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 String.Format(cum.notcumLabel + ": {0:0.##}ml", cum.volume);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                else yield return Translations.Info_noCum;
 | 
					                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 lutealIntervalhours, "lutealIntervalhours", lutealIntervalhours, true);
 | 
				
			||||||
            Scribe_Values.Look(ref bleedingIntervalhours, "bleedingIntervalhours", bleedingIntervalhours, true);
 | 
					            Scribe_Values.Look(ref bleedingIntervalhours, "bleedingIntervalhours", bleedingIntervalhours, true);
 | 
				
			||||||
            Scribe_Values.Look(ref recoveryIntervalhours, "recoveryIntervalhours", recoveryIntervalhours, true);
 | 
					            Scribe_Values.Look(ref recoveryIntervalhours, "recoveryIntervalhours", recoveryIntervalhours, true);
 | 
				
			||||||
 | 
					            Scribe_Values.Look(ref crampPain, "crampPain", crampPain, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					@ -316,7 +318,6 @@ namespace RJW_Menstruation
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        public void CumIn(Pawn pawn, float injectedvolume, float fertility = 1.0f, ThingDef filthdef = null)
 | 
					        public void CumIn(Pawn pawn, float injectedvolume, float fertility = 1.0f, ThingDef filthdef = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            float volume = injectedvolume * CumInFactor;
 | 
					            float volume = injectedvolume * CumInFactor;
 | 
				
			||||||
| 
						 | 
					@ -500,6 +501,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
                if (lutealIntervalhours < 0) lutealIntervalhours = PeriodRandomizer(Props.lutealIntervalDays * 24, Props.deviationFactor);
 | 
					                if (lutealIntervalhours < 0) lutealIntervalhours = PeriodRandomizer(Props.lutealIntervalDays * 24, Props.deviationFactor);
 | 
				
			||||||
                if (bleedingIntervalhours < 0) bleedingIntervalhours = PeriodRandomizer(Props.bleedingIntervalDays * 24, Props.deviationFactor);
 | 
					                if (bleedingIntervalhours < 0) bleedingIntervalhours = PeriodRandomizer(Props.bleedingIntervalDays * 24, Props.deviationFactor);
 | 
				
			||||||
                if (recoveryIntervalhours < 0) recoveryIntervalhours = PeriodRandomizer(Props.recoveryIntervalDays * 24, Props.deviationFactor);
 | 
					                if (recoveryIntervalhours < 0) recoveryIntervalhours = PeriodRandomizer(Props.recoveryIntervalDays * 24, Props.deviationFactor);
 | 
				
			||||||
 | 
					                if (crampPain < 0) crampPain = PainRandomizer();
 | 
				
			||||||
                if (cums == null) cums = new List<Cum>();
 | 
					                if (cums == null) cums = new List<Cum>();
 | 
				
			||||||
                if (eggs == null) eggs = new List<Egg>();
 | 
					                if (eggs == null) eggs = new List<Egg>();
 | 
				
			||||||
                if (parent.pawn.IsPregnant()) curStage = Stage.Pregnant;
 | 
					                if (parent.pawn.IsPregnant()) curStage = Stage.Pregnant;
 | 
				
			||||||
| 
						 | 
					@ -662,6 +664,9 @@ namespace RJW_Menstruation
 | 
				
			||||||
                            else
 | 
					                            else
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                bleedingIntervalhours = PeriodRandomizer(bleedingIntervalhours, Props.deviationFactor);
 | 
					                                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);
 | 
					                                GoNextStage(Stage.Bleeding);
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
| 
						 | 
					@ -787,6 +792,15 @@ namespace RJW_Menstruation
 | 
				
			||||||
            else return RJWPregnancySettings.interspecies_impregnation_modifier;
 | 
					            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()
 | 
					        private Stage RandomStage()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int rand = Rand.Range(0,2);
 | 
					            int rand = Rand.Range(0,2);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@ namespace RJW_Menstruation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static readonly ThingDef CumFilth = DefDatabase<ThingDef>.GetNamed("FilthCum");
 | 
					        public static readonly ThingDef CumFilth = DefDatabase<ThingDef>.GetNamed("FilthCum");
 | 
				
			||||||
        public static readonly HediffDef RJW_IUD = DefDatabase<HediffDef>.GetNamed("RJW_IUD");
 | 
					        public static readonly HediffDef RJW_IUD = DefDatabase<HediffDef>.GetNamed("RJW_IUD");
 | 
				
			||||||
 | 
					        public static readonly HediffDef Hediff_MenstrualCramp = DefDatabase<HediffDef>.GetNamed("Hediff_MenstrualCramp");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue