Add a short description when mousing over the phase in the womb dialog

This commit is contained in:
lutepickle 2022-05-31 08:08:43 -07:00
parent 871730ac3a
commit 0a7e80b353
7 changed files with 173 additions and 89 deletions

Binary file not shown.

View File

@ -14,6 +14,16 @@
<Stage_None>None</Stage_None>
<Stage_Climacteric>Climacteric</Stage_Climacteric>
<Stage_Anestrus>Anestrus</Stage_Anestrus>
<Stage_Follicular_Desc>The ovaries are preparing to produce an egg. Ovulation will occur at the end of this phase.</Stage_Follicular_Desc>
<Stage_Follicular_Induced_Desc>The ovaries are preparing to produce an egg. Ovulation will occur if semen enters the womb.</Stage_Follicular_Induced_Desc>
<Stage_Ovulatory_Desc>The ovaries are producing an egg to release into the womb.</Stage_Ovulatory_Desc>
<Stage_Luteal_Desc>The womb is prepared to recieve a fertilized egg. Pregnancy will result if one implants before the end of the stage.</Stage_Luteal_Desc>
<Stage_Bleeding_Desc>The womb is shedding its lining, along with any eggs that failed to implant.</Stage_Bleeding_Desc>
<Stage_Pregnant_Desc>A baby is growing inside the womb. With time and care, it will become a new resident of this world.</Stage_Pregnant_Desc>
<Stage_Recover_Desc>The womb is recovering from its recent pregnancy.</Stage_Recover_Desc>
<Stage_None_Desc>The womb is not fertile and cannot become pregnant.</Stage_None_Desc>
<Stage_Climacteric_Desc>The ovaries have neared exhaustion and the menstrual cycle has become irregular.</Stage_Climacteric_Desc>
<Stage_Anestrus_Desc>The womb is out of breeding season. The cycle will resume once conditions are met.</Stage_Anestrus_Desc>
<Button_HealthTab>Status</Button_HealthTab>
<Button_MilkTooltip>Lactate self</Button_MilkTooltip>
<Dialog_WombInfo01>State</Dialog_WombInfo01>
@ -28,6 +38,8 @@
<Dialog_DoCleanWomb_Tooltip>Gather cum into bucket</Dialog_DoCleanWomb_Tooltip>
<Dialog_DontCleanWomb_Tooltip>Store cum in womb</Dialog_DontCleanWomb_Tooltip>
<Dialog_FatherUnknown>Unknown</Dialog_FatherUnknown>
<Option1_Label_1>Enable womb icon</Option1_Label_1>
<Option1_Label_2>Enable button in health tab</Option1_Label_2>

View File

@ -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())

View File

@ -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;

View File

@ -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();

View File

@ -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;

View File

@ -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.