mirror of
https://gitgud.io/lutepickle/rjw_menstruation.git
synced 2024-08-14 22:46:52 +00:00
Eliminate egg if there is an error implanting it.
This commit is contained in:
parent
f0c971eba0
commit
0c38513084
4 changed files with 70 additions and 59 deletions
Binary file not shown.
|
@ -1414,77 +1414,85 @@ namespace RJW_Menstruation
|
|||
}
|
||||
else if (Rand.Chance(Configurations.ImplantationChance * ImplantChance * InterspeciesImplantFactor(egg.fertilizer)))
|
||||
{
|
||||
if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}");
|
||||
if (pregnancy != null)
|
||||
try
|
||||
{
|
||||
if (Configurations.PregnancySource == Configurations.PregnancyType.Biotech && Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins)
|
||||
if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}");
|
||||
if (pregnancy != null)
|
||||
{
|
||||
if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {pregnancy}");
|
||||
HediffComp_PregeneratedBabies comp = pregnancy.TryGetComp<HediffComp_PregeneratedBabies>();
|
||||
if (comp == null) Log.Warning($"Trying to add Biotech egg to {Pawn}'s pregnancy without a pregenerated baby comp: {pregnancy}");
|
||||
else
|
||||
if (Configurations.PregnancySource == Configurations.PregnancyType.Biotech && Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins)
|
||||
{
|
||||
comp.AddNewBaby(Pawn, egg.fertilizer);
|
||||
if (Configurations.Debug) Log.Message($"Adding to existing Biotech pregnancy {pregnancy}");
|
||||
HediffComp_PregeneratedBabies comp = pregnancy.TryGetComp<HediffComp_PregeneratedBabies>();
|
||||
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 if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy && Configurations.EnableHeteroOvularTwins)
|
||||
{
|
||||
if (pregnancy is Hediff_MultiplePregnancy h)
|
||||
else
|
||||
{
|
||||
if (Configurations.Debug) Log.Message($"Adding to existing pregnancy {h}");
|
||||
h.AddNewBaby(Pawn, egg.fertilizer);
|
||||
pregnant = true;
|
||||
break;
|
||||
}
|
||||
pregnant = true;
|
||||
deadeggs.Add(egg);
|
||||
}
|
||||
else
|
||||
{
|
||||
pregnant = true;
|
||||
break;
|
||||
Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy;
|
||||
switch (usePregnancy)
|
||||
{
|
||||
case Configurations.PregnancyType.BaseRJW:
|
||||
|
||||
if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy");
|
||||
PregnancyHelper.AddPregnancyHediff(Pawn, egg.fertilizer);
|
||||
// I hate having to do this, but it gets the newest pregnancy
|
||||
List<Hediff_BasePregnancy> pregnancies = new List<Hediff_BasePregnancy>();
|
||||
Pawn.health.hediffSet.GetHediffs(ref pregnancies);
|
||||
pregnancy = pregnancies.MaxBy(hediff => hediff.loadID);
|
||||
pregnant = true;
|
||||
break;
|
||||
|
||||
case Configurations.PregnancyType.MultiplePregnancy:
|
||||
if (Configurations.Debug) Log.Message($"Creating new menstruation pregnancy");
|
||||
pregnancy = Hediff_BasePregnancy.Create<Hediff_MultiplePregnancy>(Pawn, egg.fertilizer);
|
||||
pregnant = true;
|
||||
deadeggs.Add(egg);
|
||||
break;
|
||||
|
||||
case Configurations.PregnancyType.Biotech:
|
||||
if (Configurations.Debug) Log.Message($"Creating new biotech pregnancy");
|
||||
pregnancy = HediffMaker.MakeHediff(HediffDefOf.PregnantHuman, Pawn);
|
||||
if (Configurations.EnableBiotechTwins)
|
||||
pregnancy.TryGetComp<HediffComp_PregeneratedBabies>().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)
|
||||
{
|
||||
// TODO: advance biotech pregnancy
|
||||
rjw_preg.p_start_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration;
|
||||
rjw_preg.p_end_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
catch (Exception ex)
|
||||
{
|
||||
Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy;
|
||||
switch (usePregnancy)
|
||||
{
|
||||
case Configurations.PregnancyType.BaseRJW:
|
||||
|
||||
if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy");
|
||||
PregnancyHelper.AddPregnancyHediff(Pawn, egg.fertilizer);
|
||||
// I hate having to do this, but it gets the newest pregnancy
|
||||
List<Hediff_BasePregnancy> pregnancies = new List<Hediff_BasePregnancy>();
|
||||
Pawn.health.hediffSet.GetHediffs(ref pregnancies);
|
||||
pregnancy = pregnancies.MaxBy(hediff => hediff.loadID);
|
||||
pregnant = true;
|
||||
break;
|
||||
|
||||
case Configurations.PregnancyType.MultiplePregnancy:
|
||||
if (Configurations.Debug) Log.Message($"Creating new menstruation pregnancy");
|
||||
pregnancy = Hediff_BasePregnancy.Create<Hediff_MultiplePregnancy>(Pawn, egg.fertilizer);
|
||||
pregnant = true;
|
||||
deadeggs.Add(egg);
|
||||
break;
|
||||
|
||||
case Configurations.PregnancyType.Biotech:
|
||||
if (Configurations.Debug) Log.Message($"Creating new biotech pregnancy");
|
||||
pregnancy = HediffMaker.MakeHediff(HediffDefOf.PregnantHuman, Pawn);
|
||||
if(Configurations.EnableBiotechTwins)
|
||||
pregnancy.TryGetComp<HediffComp_PregeneratedBabies>().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)
|
||||
{
|
||||
// TODO: advance biotech pregnancy
|
||||
rjw_preg.p_start_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration;
|
||||
rjw_preg.p_end_tick -= egg.ticksSinceFertilization / Configurations.CycleAcceleration;
|
||||
}
|
||||
Log.Error($"Error creating pregnancy in {Pawn}'s womb, father {egg.fertilizer}: {ex}");
|
||||
deadeggs.Add(egg);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1492,7 +1500,7 @@ namespace RJW_Menstruation
|
|||
if (Configurations.Debug)
|
||||
{
|
||||
float implantChance = Configurations.ImplantationChance * ImplantChance * InterspeciesImplantFactor(egg.fertilizer);
|
||||
Log.Message($"Fertilized egg of {Pawn} failed to implant (chance {implantChance.ToStringPercent()}, father {egg.fertilizer})");
|
||||
if (Configurations.Debug) Log.Message($"Fertilized egg of {Pawn} failed to implant (chance {implantChance.ToStringPercent()}, father {egg.fertilizer})");
|
||||
}
|
||||
deadeggs.Add(egg);
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<Manifest>
|
||||
<identifier>RJW Menstruation</identifier>
|
||||
<version>1.0.9.1</version>
|
||||
<version>1.0.9.2</version>
|
||||
<dependencies>
|
||||
</dependencies>
|
||||
<incompatibleWith />
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
Version 1.0.9.2
|
||||
- Prevent repeated pregnancies when some errors occur.
|
||||
|
||||
Version 1.0.9.1
|
||||
- Japanese translation for most text by Lokuzt.
|
||||
- New womb, cum, and fetus graphics by Euldrop.
|
||||
|
|
Loading…
Reference in a new issue