Compare commits

...

3 commits

Author SHA1 Message Date
lutepickle
baeff0ea29 Little optimization in Fertilize calculation 2023-04-20 12:31:27 -07:00
lutepickle
db6e12fa8b Make the update interval setting exponential 2023-04-19 07:32:47 -07:00
lutepickle
0a5ab0bcfb Lower fluid leak to a filth every 2.5ml 2023-04-18 09:19:41 -07:00
3 changed files with 10 additions and 10 deletions

Binary file not shown.

View file

@ -21,6 +21,7 @@ namespace RJW_Menstruation
public const int ColonistTickIntervalDefault = 2500; // 1 hour
public const int NonColonistTickIntervalDefault = 2500;
public const int AnimalTickIntervalDefault = 2500;
public const int TickIntervalMinimum = 20;
public const float EnzygoticTwinsChanceDefault = 0.002f;
public const int EnzygoticTwinsChanceAdjustDefault = 2;
public const int MaxEnzygoticTwinsDefault = 9;
@ -430,19 +431,16 @@ namespace RJW_Menstruation
listmain.Label(Translations.Option7_Label + " x" + Configurations.CycleAcceleration, -1, Translations.Option7_Desc);
Configurations.CycleAcceleration = (int)listmain.Slider(Configurations.CycleAcceleration, 1, 50);
Adjust = Configurations.ColonistTickInterval / 25;
listmain.LabelDouble(Translations.Option_ColonistUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.ColonistTickInterval), Translations.Option_ColonistUpdateInterval_Desc);
Configurations.ColonistTickInterval = (int)listmain.Slider(Adjust, 0, 400) * 25;
Configurations.ColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.ColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour)));
Adjust = Configurations.NonColonistTickInterval / 25;
listmain.LabelDouble(Translations.Option_NonColonistUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.NonColonistTickInterval), Translations.Option_NonColonistUpdateInterval_Desc);
Configurations.NonColonistTickInterval = (int)listmain.Slider(Adjust, 0, 400) * 25;
Configurations.NonColonistTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.NonColonistTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour)));
if(Configurations.EnableAnimalCycle)
{
Adjust = Configurations.AnimalTickInterval / 25;
listmain.LabelDouble(Translations.Option_AnimalUpdateInterval_Label, GenDate.ToStringTicksToPeriod(Configurations.AnimalTickInterval), Translations.Option_AnimalUpdateInterval_Desc);
Configurations.AnimalTickInterval = (int)listmain.Slider(Adjust, 0, 400) * 25;
Configurations.AnimalTickInterval = (int)Mathf.Exp(listmain.Slider(Mathf.Log(Configurations.AnimalTickInterval), Mathf.Log(Configurations.TickIntervalMinimum), Mathf.Log(4 * GenDate.TicksPerHour)));
}
float var2 = EstimatedBleedingAmountPerHour;

View file

@ -66,7 +66,7 @@ namespace RJW_Menstruation
const float minmakefilthvalue = 1.0f;
const int maxImplantDelayHours = 30 * GenDate.HoursPerDay;
const int minImplantAgeHours = 3 * GenDate.HoursPerDay;
const float fluidLeakThreshold = 5.0f;
const float fluidLeakThreshold = 2.5f;
const float pulloutSuccessRate = 0.8f;
const float fetishPulloutSuccessModifier = 0.25f;
@ -170,6 +170,7 @@ namespace RJW_Menstruation
}
return tickInterval;
}
set => tickInterval = value;
}
public Hediff Pregnancy {
@ -716,7 +717,7 @@ namespace RJW_Menstruation
Initialize();
}
if (Pawn.IsHashIntervalTick(recalculateTickInterval)) tickInterval = -1; // Every so often, force TickInterval to be recalculated in case the pawn's status changed.
if (Pawn.IsHashIntervalTick(recalculateTickInterval)) TickInterval = -1; // Every so often, force TickInterval to be recalculated in case the pawn's status changed.
if (!Pawn.IsHashIntervalTick(TickInterval)) return;
if (initError) Log.Warning($"Attempting to process {Pawn}'s womb uninitialized");
@ -1331,8 +1332,9 @@ namespace RJW_Menstruation
float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume);
float fertFailChancePerHour = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor);
float fertFailChancePerInterval = Mathf.Pow(fertFailChancePerHour, (float)TickInterval / GenDate.TicksPerHour);
//float fertFailChancePerHour = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor);
//float fertFailChancePerInterval = Mathf.Pow(fertFailChancePerHour, (float)TickInterval / GenDate.TicksPerHour);
float fertFailChancePerInterval = Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor * TickInterval / GenDate.TicksPerHour);
if (Rand.Chance(fertFailChancePerInterval)) return null;