diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index 59b8acc..5c4fbdb 100644 Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ 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 43eb4e4..59d035a 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 @@ -1418,37 +1418,7 @@ namespace RJW_Menstruation try { if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}"); - if (pregnancy != null) - { - 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) - { - if (Configurations.Debug) Log.Message($"Adding to existing pregnancy {h}"); - h.AddNewBaby(Pawn, egg.fertilizer); - } - pregnant = true; - deadeggs.Add(egg); - } - else - { - pregnant = true; - break; - } - } - else + if (pregnancy == null) { Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy; switch (usePregnancy) @@ -1489,6 +1459,36 @@ namespace RJW_Menstruation rjw_preg.p_end_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration; } } + else + { + switch (pregnancy) + { + case Hediff_Pregnant vanillaPreg: // Not going to do the labor ones + if (!Configurations.EnableBiotechTwins || !Configurations.EnableHeteroOvularTwins) goto default; + if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {pregnancy.GetUniqueLoadID()}"); + 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.GetUniqueLoadID()}"); + else + { + comp.AddNewBaby(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + } + break; + case Hediff_MultiplePregnancy multiPreg: + if (!Configurations.EnableHeteroOvularTwins) goto default; + if (Configurations.Debug) Log.Message($"Adding to existing pregnancy {multiPreg.GetUniqueLoadID()}"); + multiPreg.AddNewBaby(Pawn, egg.fertilizer); + pregnant = true; + deadeggs.Add(egg); + break; + case Hediff_BasePregnancy _: + default: + pregnant = true; + deadeggs.Add(egg); + break; + } + } } catch (Exception ex) {