diff --git a/1.3/Assemblies/RJW_Menstruation.dll b/1.3/Assemblies/RJW_Menstruation.dll
index bb60e44..5b0953a 100644
Binary files a/1.3/Assemblies/RJW_Menstruation.dll and b/1.3/Assemblies/RJW_Menstruation.dll differ
diff --git a/1.3/Languages/English/Keyed/RJW_Menstruation.xml b/1.3/Languages/English/Keyed/RJW_Menstruation.xml
index 9621f73..c63086b 100644
--- a/1.3/Languages/English/Keyed/RJW_Menstruation.xml
+++ b/1.3/Languages/English/Keyed/RJW_Menstruation.xml
@@ -14,6 +14,16 @@
None
Climacteric
Anestrus
+ The ovaries are preparing to produce an egg. Ovulation will occur at the end of this phase.
+ The ovaries are preparing to produce an egg. Ovulation will occur if semen enters the womb.
+ The ovaries are producing an egg to release into the womb.
+ The womb is prepared to recieve a fertilized egg. Pregnancy will result if one implants before the end of the stage.
+ The womb is shedding its lining, along with any eggs that failed to implant.
+ A baby is growing inside the womb. With time and care, it will become a new resident of this world.
+ The womb is recovering from its recent pregnancy.
+ The womb is not fertile and cannot become pregnant.
+ The ovaries have neared exhaustion and the menstrual cycle has become irregular.
+ The womb is out of breeding season. The cycle will resume once conditions are met.
Status
Lactate self
State
@@ -28,6 +38,8 @@
Gather cum into bucket
Store cum in womb
Unknown
+
+
Enable womb icon
Enable button in health tab
diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs
index a56bad4..0c67735 100644
--- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs
+++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs
@@ -20,6 +20,22 @@ namespace RJW_Menstruation
public class HediffComp_InducedOvulator : HediffComp_Menstruation
{
+ public override string GetCurStageDesc
+ {
+ get
+ {
+ switch (CurrentVisibleStage)
+ {
+ case Stage.Follicular:
+ return Translations.Stage_Follicular_Induced_Desc;
+ case Stage.ClimactericFollicular:
+ return Translations.Stage_Follicular_Induced_Desc + " " + Translations.Stage_Climacteric_Desc;
+ default:
+ return base.GetCurStageDesc;
+ }
+ }
+ }
+
protected override void FollicularAction()
{
if (!IsBreedingSeason())
diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
index 74c7a0a..c0f0d79 100644
--- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
+++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs
@@ -302,6 +302,43 @@ namespace RJW_Menstruation
}
}
+ public virtual string GetCurStageDesc
+ {
+ get
+ {
+ switch (CurrentVisibleStage)
+ {
+ case Stage.Follicular:
+ return Translations.Stage_Follicular_Desc;
+ case Stage.Ovulatory:
+ return Translations.Stage_Ovulatory_Desc;
+ case Stage.Luteal:
+ return Translations.Stage_Luteal_Desc;
+ case Stage.Bleeding:
+ return Translations.Stage_Bleeding_Desc;
+ case Stage.Fertilized:
+ return Translations.Stage_Luteal_Desc;
+ case Stage.Pregnant:
+ return Translations.Stage_Pregnant_Desc;
+ case Stage.Recover:
+ return Translations.Stage_Recover_Desc;
+ case Stage.None:
+ case Stage.Young:
+ return Translations.Stage_None_Desc;
+ case Stage.ClimactericFollicular:
+ return Translations.Stage_Follicular_Desc + " " + Translations.Stage_Climacteric_Desc;
+ case Stage.ClimactericLuteal:
+ return Translations.Stage_Luteal_Desc + " " + Translations.Stage_Climacteric_Desc;
+ case Stage.ClimactericBleeding:
+ return Translations.Stage_Bleeding_Desc + " " + Translations.Stage_Climacteric_Desc;
+ case Stage.Anestrus:
+ return Translations.Stage_Anestrus_Desc;
+ default:
+ return "";
+ }
+ }
+ }
+
public string WombTex
{
get
@@ -1440,6 +1477,97 @@ namespace RJW_Menstruation
else GoNextStage(Stage.Follicular);
}
+ protected virtual void ClimactericFollicularAction()
+ {
+ if (!Configurations.EnableMenopause)
+ {
+ RemoveClimactericEffect();
+ StayCurrentStage();
+ }
+ else if (curStageHrs >= (follicularIntervalhours - bleedingIntervalhours) * CycleFactor)
+ {
+ GoNextStage(Stage.Ovulatory);
+ }
+ else if (ovarypower < OvaryPowerThreshold / 3 && Rand.Range(0.0f, 1.0f) < 0.2f) //skips ovulatory
+ {
+ follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
+ GoNextStage(Stage.ClimactericLuteal);
+ }
+ else
+ {
+ curStageHrs += Configurations.CycleAcceleration;
+ StayCurrentStage();
+ }
+ }
+
+ protected virtual void ClimactericLutealAction()
+ {
+ if (!Configurations.EnableMenopause)
+ {
+ RemoveClimactericEffect();
+ StayCurrentStage();
+ }
+ else if (!eggs.NullOrEmpty())
+ {
+ FertilizationCheck();
+ EggDecay();
+ if (Implant()) GoNextStage(Stage.Pregnant);
+ else
+ {
+ curStageHrs += Configurations.CycleAcceleration;
+ StayCurrentStage();
+ }
+ }
+ else if (curStageHrs <= lutealIntervalhours)
+ {
+ curStageHrs += Configurations.CycleAcceleration;
+ StayCurrentStage();
+ }
+ else
+ {
+ eggs.Clear();
+ if (Props.bleedingIntervalDays == 0)
+ {
+ follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
+ GoNextStage(Stage.ClimactericFollicular);
+ }
+ else if (ovarypower < OvaryPowerThreshold / 4 || (ovarypower < OvaryPowerThreshold / 3 && Rand.Range(0.0f, 1.0f) < 0.3f)) //skips bleeding
+ {
+ follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
+ GoNextStage(Stage.ClimactericFollicular);
+ }
+ else
+ {
+ bleedingIntervalhours = PeriodRandomizer(bleedingIntervalhours, Props.deviationFactor);
+ if (crampPain >= 0.05f)
+ {
+ AddCrampPain();
+ }
+ GoNextStage(Stage.ClimactericBleeding);
+ }
+ }
+ }
+
+ protected virtual void ClimactericBleedingAction()
+ {
+ if (!Configurations.EnableMenopause)
+ {
+ RemoveClimactericEffect();
+ StayCurrentStage();
+ }
+ else if (curStageHrs >= bleedingIntervalhours)
+ {
+ follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
+ GoNextStage(Stage.ClimactericFollicular);
+ }
+ else
+ {
+ if (curStageHrs < bleedingIntervalhours / 6) for (int i = 0; i < Configurations.CycleAcceleration; i++) BleedOut();
+ curStageHrs += Configurations.CycleAcceleration;
+ StayCurrentStage();
+ }
+ }
+
protected virtual void AnestrusAction()
{
if (IsBreedingSeason())
@@ -1569,99 +1697,13 @@ namespace RJW_Menstruation
action = YoungAction;
break;
case Stage.ClimactericFollicular:
- action = delegate
- {
- if (!Configurations.EnableMenopause)
- {
- RemoveClimactericEffect();
- StayCurrentStage();
- }
- else if (curStageHrs >= (follicularIntervalhours - bleedingIntervalhours) * CycleFactor)
- {
- GoNextStage(Stage.Ovulatory);
- }
- else if (ovarypower < OvaryPowerThreshold / 3 && Rand.Range(0.0f, 1.0f) < 0.2f) //skips ovulatory
- {
- follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
- GoNextStage(Stage.ClimactericLuteal);
- }
- else
- {
- curStageHrs += Configurations.CycleAcceleration;
- StayCurrentStage();
- }
- };
+ action = ClimactericFollicularAction;
break;
case Stage.ClimactericLuteal:
- action = delegate
- {
- if (!Configurations.EnableMenopause)
- {
- RemoveClimactericEffect();
- StayCurrentStage();
- }
- else if (!eggs.NullOrEmpty())
- {
- FertilizationCheck();
- EggDecay();
- if (Implant()) GoNextStage(Stage.Pregnant);
- else
- {
- curStageHrs += Configurations.CycleAcceleration;
- StayCurrentStage();
- }
- }
- else if (curStageHrs <= lutealIntervalhours)
- {
- curStageHrs += Configurations.CycleAcceleration;
- StayCurrentStage();
- }
- else
- {
- eggs.Clear();
- if (Props.bleedingIntervalDays == 0)
- {
- follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
- GoNextStage(Stage.ClimactericFollicular);
- }
- else if (ovarypower < OvaryPowerThreshold / 4 || (ovarypower < OvaryPowerThreshold / 3 && Rand.Range(0.0f, 1.0f) < 0.3f)) //skips bleeding
- {
- follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
- GoNextStage(Stage.ClimactericFollicular);
- }
- else
- {
- bleedingIntervalhours = PeriodRandomizer(bleedingIntervalhours, Props.deviationFactor);
- if (crampPain >= 0.05f)
- {
- AddCrampPain();
- }
- GoNextStage(Stage.ClimactericBleeding);
- }
- }
-
- };
+ action = ClimactericLutealAction;
break;
case Stage.ClimactericBleeding:
- action = delegate
- {
- if (!Configurations.EnableMenopause)
- {
- RemoveClimactericEffect();
- StayCurrentStage();
- }
- else if (curStageHrs >= bleedingIntervalhours)
- {
- follicularIntervalhours = PeriodRandomizer(follicularIntervalhours, Props.deviationFactor * 6);
- GoNextStage(Stage.ClimactericFollicular);
- }
- else
- {
- if (curStageHrs < bleedingIntervalhours / 6) for (int i = 0; i < Configurations.CycleAcceleration; i++) BleedOut();
- curStageHrs += Configurations.CycleAcceleration;
- StayCurrentStage();
- }
- };
+ action = ClimactericBleedingAction;
break;
case Stage.Anestrus:
action = AnestrusAction;
diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Translations.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Translations.cs
index 306acf6..091118c 100644
--- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Translations.cs
+++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Translations.cs
@@ -17,6 +17,16 @@ namespace RJW_Menstruation
public static readonly string Stage_None = "Stage_None".Translate();
public static readonly string Stage_Climacteric = "Stage_Climacteric".Translate();
public static readonly string Stage_Anestrus = "Stage_Anestrus".Translate();
+ public static readonly string Stage_Follicular_Desc = "Stage_Follicular_Desc".Translate();
+ public static readonly string Stage_Follicular_Induced_Desc = "Stage_Follicular_Induced_Desc".Translate();
+ public static readonly string Stage_Ovulatory_Desc = "Stage_Ovulatory_Desc".Translate();
+ public static readonly string Stage_Luteal_Desc = "Stage_Luteal_Desc".Translate();
+ public static readonly string Stage_Bleeding_Desc = "Stage_Bleeding_Desc".Translate();
+ public static readonly string Stage_Pregnant_Desc = "Stage_Pregnant_Desc".Translate();
+ public static readonly string Stage_Recover_Desc = "Stage_Recover_Desc".Translate();
+ public static readonly string Stage_None_Desc = "Stage_None_Desc".Translate();
+ public static readonly string Stage_Climacteric_Desc = "Stage_Climacteric_Desc".Translate();
+ public static readonly string Stage_Anestrus_Desc = "Stage_Anestrus_Desc".Translate();
public static readonly string Button_HealthTab = "Button_HealthTab".Translate();
public static readonly string Button_MilkTooltip = "Button_MilkTooltip".Translate();
public static readonly string Dialog_DoCleanWomb_Tooltip = "Dialog_DoCleanWomb_Tooltip".Translate();
diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs
index b208103..0aee48c 100644
--- a/1.3/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs
+++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/UI/Dialog_WombStatus.cs
@@ -257,6 +257,7 @@ namespace RJW_Menstruation
GUI.Box(wombInfoRect, Translations.Dialog_WombInfo01 + ": " + comp.GetCurStageLabel, buttonstyle);
Widgets.FillableBar(progressRect, comp.StageProgress, comp.GetStageTexture);
GUI.color = Color.white;
+ TooltipHandler.TipRegion(wombInfoRect, comp.GetCurStageDesc);
fontstyleright.normal.textColor = Color.red;
diff --git a/changelogs.txt b/changelogs.txt
index f52b024..66e13d5 100644
--- a/changelogs.txt
+++ b/changelogs.txt
@@ -1,3 +1,6 @@
+Version 1.0.6.5
+ - Add a brief description when mousing over the current phase in the womb dialog.
+
Version 1.0.6.4
- Fix a bug with pawns not being generated.
- Fix ovary initialization for races with invalid litter sizes.