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)))
|
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}");
|
try
|
||||||
if (pregnancy != null)
|
|
||||||
{
|
{
|
||||||
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}");
|
if (Configurations.PregnancySource == Configurations.PregnancyType.Biotech && Configurations.EnableBiotechTwins && Configurations.EnableHeteroOvularTwins)
|
||||||
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);
|
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;
|
pregnant = true;
|
||||||
deadeggs.Add(egg);
|
deadeggs.Add(egg);
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
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}");
|
pregnant = true;
|
||||||
h.AddNewBaby(Pawn, egg.fertilizer);
|
break;
|
||||||
}
|
}
|
||||||
pregnant = true;
|
|
||||||
deadeggs.Add(egg);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pregnant = true;
|
Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy;
|
||||||
break;
|
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;
|
Log.Error($"Error creating pregnancy in {Pawn}'s womb, father {egg.fertilizer}: {ex}");
|
||||||
switch (usePregnancy)
|
deadeggs.Add(egg);
|
||||||
{
|
|
||||||
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
|
else
|
||||||
|
@ -1492,7 +1500,7 @@ namespace RJW_Menstruation
|
||||||
if (Configurations.Debug)
|
if (Configurations.Debug)
|
||||||
{
|
{
|
||||||
float implantChance = Configurations.ImplantationChance * ImplantChance * InterspeciesImplantFactor(egg.fertilizer);
|
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);
|
deadeggs.Add(egg);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.9.1</version>
|
<version>1.0.9.2</version>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<incompatibleWith />
|
<incompatibleWith />
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
Version 1.0.9.2
|
||||||
|
- Prevent repeated pregnancies when some errors occur.
|
||||||
|
|
||||||
Version 1.0.9.1
|
Version 1.0.9.1
|
||||||
- Japanese translation for most text by Lokuzt.
|
- Japanese translation for most text by Lokuzt.
|
||||||
- New womb, cum, and fetus graphics by Euldrop.
|
- New womb, cum, and fetus graphics by Euldrop.
|
||||||
|
|
Loading…
Reference in a new issue