From fcfb7cdefbf4465ccfd36f0125f4d426a6a617f7 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Sun, 8 Jan 2023 12:01:45 -0800 Subject: [PATCH] Add support for pregenerated babies into Implant --- .../HediffComps/HediffComp_Menstruation.cs | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) 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 256a67f..cf59be0 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 @@ -1297,8 +1297,19 @@ namespace RJW_Menstruation if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}"); if (pregnancy != null) { - // TODO: Modified Biotech pregnancy - if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy && Configurations.EnableHeteroOvularTwins) + if (Configurations.PregnancySource == Configurations.PregnancyType.Biotech && Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins) + { + if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {pregnancy}"); + HediffComp_PregeneratedBabies comp = pregnancy.TryGetComp(); + if (comp == null) Log.Warning($"Trying to add Biotech egg to {Pawn}'s pregnancy without a pregenerated baby comp: {pregnancy}"); + else + { + comp.AddNewBaby(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + } + } + else if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy && Configurations.EnableHeteroOvularTwins) { if (pregnancy is Hediff_MultiplePregnancy h) { @@ -1340,8 +1351,12 @@ namespace RJW_Menstruation case Configurations.PregnancyType.Biotech: if (Configurations.Debug) Log.Message($"Creating new biotech pregnancy"); pregnancy = HediffMaker.MakeHediff(HediffDefOf.PregnantHuman, Pawn); + if(Configurations.EnableBiotechTwins) + pregnancy.TryGetComp().AddNewBaby(Pawn, egg.fertilizer); ((Hediff_Pregnant)pregnancy).SetParents(Pawn, egg.fertilizer, PregnancyUtility.GetInheritedGeneSet(egg.fertilizer, Pawn)); Pawn.health.AddHediff(pregnancy); + pregnant = true; + deadeggs.Add(egg); break; } if (pregnancy is Hediff_BasePregnancy rjw_preg) @@ -1361,7 +1376,9 @@ namespace RJW_Menstruation } } - if (pregnant && (Configurations.PregnancySource != Configurations.PregnancyType.MultiplePregnancy || !Configurations.EnableHeteroOvularTwins)) + if (pregnant && + (Configurations.PregnancySource != Configurations.PregnancyType.MultiplePregnancy || !Configurations.EnableHeteroOvularTwins) && + (Configurations.PregnancySource != Configurations.PregnancyType.Biotech || !Configurations.EnableBiotechTwins || !Configurations.EnableHeteroOvularTwins)) { eggs.Clear(); return true;