diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 766e532..eacab7d 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -136,6 +136,7 @@ namespace RJW_Menstruation public override void CompExposeData() { base.CompExposeData(); + Scribe_Values.Look(ref ageOfLastBirth, "ageOfLastBirth", -1); Scribe_Values.Look(ref maxBreastIncrement, "maxBreastIncrement", maxBreastIncrement, true); Scribe_Values.Look(ref breastSizeIncreased, "breastSizeIncreased", 0.0f); diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 437478c..3518b5c 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -622,6 +622,16 @@ namespace RJW_Menstruation public override void CompExposeData() { base.CompExposeData(); + if (Scribe.mode == LoadSaveMode.LoadingVars) + { + int curStageHrs = -1; + int currentIntervalHours = -1; + Scribe_Values.Look(ref curStageHrs, "curStageHrs", curStageHrs, true); + Scribe_Values.Look(ref currentIntervalHours, "currentIntervalHours", currentIntervalHours, true); + if (curStageHrs >= 0) curStageTicks = curStageHrs * GenDate.TicksPerHour; + if (currentIntervalHours >= 0) currentIntervalTicks = currentIntervalHours * GenDate.TicksPerHour; + } + Scribe_Collections.Look(ref cums, saveDestroyedThings: true, label: "cums", lookMode: LookMode.Deep, ctorArgs: new object[0]); Scribe_Collections.Look(ref eggs, saveDestroyedThings: true, label: "eggs", lookMode: LookMode.Deep, ctorArgs: new object[0]); Scribe_Values.Look(ref curStage, "curStage", curStage, true); @@ -1373,9 +1383,9 @@ namespace RJW_Menstruation egg.ticksSinceFertilization < minImplantAgeHours * GenDate.TicksPerHour || egg.ageTicks < Math.Min(Props.lutealIntervalDays * GenDate.TicksPerDay / 2, maxImplantDelayHours * GenDate.TicksPerHour)) continue; - else if (egg.fertilizer == null || egg.fertilizer.Destroyed) + else if (egg.fertilizer == null) { - if (Configurations.Debug) Log.Message($"Could not implant {Pawn}'s egg due to null or destroyed father"); + if (Configurations.Debug) Log.Message($"Could not implant {Pawn}'s egg due to null father"); deadeggs.Add(egg); continue; } @@ -1985,11 +1995,27 @@ namespace RJW_Menstruation public void ExposeData() { + if (Scribe.mode == LoadSaveMode.LoadingVars) + { + int lifespanhrs = -1; + int position = -1; + Scribe_Values.Look(ref lifespanhrs, "lifespanhrs", lifespanhrs, true); + Scribe_Values.Look(ref position, "position", position, true); + if (lifespanhrs >= 0) lifeSpanTicks = lifespanhrs * GenDate.TicksPerHour; + if (position >= 0) ageTicks = position * GenDate.TicksPerHour; + } Scribe_References.Look(ref fertilizer, "fertilizer", true); Scribe_Values.Look(ref fertilized, "fertilized", false); Scribe_Values.Look(ref lifeSpanTicks, "lifeSpanTicks", lifeSpanTicks, true); Scribe_Values.Look(ref ageTicks, "ageTicks", ageTicks, true); Scribe_Values.Look(ref ticksSinceFertilization, "ticksSinceFertilization", 0); + if (ticksSinceFertilization == 0 && Scribe.mode == LoadSaveMode.LoadingVars) + { + // A bit awkward to do this twice, but it prevents ticksSinceFertilization from getting overwritten on a fertstage load + int fertstage = -1; + Scribe_Values.Look(ref fertstage, "fertstage", fertstage, true); + if (fertstage >= 0) ticksSinceFertilization = fertstage * GenDate.TicksPerHour; + } } } } diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs index 62a9651..cfb9a16 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_PeriodicOvulator.cs @@ -57,6 +57,15 @@ namespace RJW_Menstruation public override void CompExposeData() { base.CompExposeData(); + if (Scribe.mode == LoadSaveMode.LoadingVars) + { + int hoursToNextCycle = -1; + int averageCycleIntervalHours = -1; + Scribe_Values.Look(ref hoursToNextCycle, "hoursToNextCycle", hoursToNextCycle, true); + Scribe_Values.Look(ref averageCycleIntervalHours, "averageCycleIntervalHours", averageCycleIntervalHours, true); + if (hoursToNextCycle >= 0) ticksToNextCycle = hoursToNextCycle * GenDate.TicksPerHour; + if (averageCycleIntervalHours >= 0) averageCycleIntervalTicks = averageCycleIntervalHours * GenDate.TicksPerHour; + } Scribe_Values.Look(ref ticksToNextCycle, "ticksToNextCycle", ticksToNextCycle, true); Scribe_Values.Look(ref averageCycleIntervalTicks, "averageCycleIntervalTicks", averageCycleIntervalTicks, true); } diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs index 3251459..394c376 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs @@ -10,7 +10,7 @@ namespace RJW_Menstruation { public static class MenstruationUtility { - [Obsolete("This method is obsolete. Use GetMenstruationComps or a related function instead", true)] + [Obsolete("This method is obsolete. Use GetMenstruationComps or a related function instead", false)] public static HediffComp_Menstruation GetMenstruationComp(this Pawn pawn) { return pawn.GetFirstMenstruationComp(); diff --git a/1.5/source/RJW_Menstruation/RJW_Menstruation/Things.cs b/1.5/source/RJW_Menstruation/RJW_Menstruation/Things.cs index 8b110d7..c95454a 100644 --- a/1.5/source/RJW_Menstruation/RJW_Menstruation/Things.cs +++ b/1.5/source/RJW_Menstruation/RJW_Menstruation/Things.cs @@ -237,6 +237,12 @@ namespace RJW_Menstruation public override void ExposeData() { base.ExposeData(); + if(Scribe.mode == LoadSaveMode.LoadingVars) + { + int wearhours = -1; + Scribe_Values.Look(ref wearhours, "wearhours", wearhours, true); + if (wearhours >= 0) wearTicks = wearhours * GenDate.TicksPerHour; + } Scribe_Values.Look(ref absorbedfluids, "absorbedfluids", 0); Scribe_Values.Look(ref dirty, "dirty", false); Scribe_Values.Look(ref wearTicks, "wearTicks", 0);