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.