diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index ad2bc84..c5bd051 100644 Binary files a/1.4/Assemblies/RJW_Menstruation.dll and b/1.4/Assemblies/RJW_Menstruation.dll differ diff --git a/1.4/Languages/English/Keyed/RJW_Menstruation.xml b/1.4/Languages/English/Keyed/RJW_Menstruation.xml index e428696..7e88099 100644 --- a/1.4/Languages/English/Keyed/RJW_Menstruation.xml +++ b/1.4/Languages/English/Keyed/RJW_Menstruation.xml @@ -121,6 +121,9 @@ Estimated sperm lifespan Estimated egg lifespan Implantation chance of fertilized eggs. Chance of fertilization this hour: {0}% + Use basic RJW pregnancy + Use menstruation multiple pregnancy + Use Biotech pregnancy Reset to default Gather cum diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs index a34415a..af6761d 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs @@ -53,7 +53,8 @@ namespace RJW_Menstruation public static float EstrusFuckabilityToHookup = RJWHookupSettings.MinimumFuckabilityToHookup; public static float EstrusAttractivenessToHookup = RJWHookupSettings.MinimumAttractivenessToHookup; public static float EstrusRelationshipToHookup = RJWHookupSettings.MinimumRelationshipToHookup; - public static bool UseMultiplePregnancy = true; + // public static bool UseMultiplePregnancy = true; + public static PregnancyType PregnancySource = PregnancyType.MultiplePregnancy; public static bool EnableHeteroOvularTwins = true; public static bool EnableEnzygoticTwins = true; public static float EnzygoticTwinsChance = EnzygoticTwinsChanceDefault; @@ -89,7 +90,8 @@ namespace RJW_Menstruation EnzygoticTwinsChanceAdjust = EnzygoticTwinsChanceAdjustDefault; EnableEnzygoticTwins = true; EnableHeteroOvularTwins = true; - UseMultiplePregnancy = true; + // UseMultiplePregnancy = true; + PregnancySource = PregnancyType.MultiplePregnancy; MaxEnzygoticTwins = MaxEnzygoticTwinsDefault; BleedingAmount = BleedingAmountDefault; MotherFirst = false; @@ -166,6 +168,13 @@ namespace RJW_Menstruation Hostile = 16 } + public enum PregnancyType + { + BaseRJW, + MultiplePregnancy, + Biotech + } + public override void ExposeData() { Scribe_Values.Look(ref ImplantationChanceAdjust, "ImplantationChanceAdjust", ImplantationChanceAdjust, true); @@ -189,7 +198,8 @@ namespace RJW_Menstruation Scribe_Values.Look(ref EstrusFuckabilityToHookup, "EstrusFuckabilityToHookup", EstrusFuckabilityToHookup, true); Scribe_Values.Look(ref EstrusAttractivenessToHookup, "EstrusAttractivenessToHookup", EstrusAttractivenessToHookup, true); Scribe_Values.Look(ref EstrusRelationshipToHookup, "EstrusRelationshipToHookup", EstrusRelationshipToHookup, true); - Scribe_Values.Look(ref UseMultiplePregnancy, "UseMultiplePregnancy", UseMultiplePregnancy, true); + //Scribe_Values.Look(ref UseMultiplePregnancy, "UseMultiplePregnancy", UseMultiplePregnancy, true); + Scribe_Values.Look(ref PregnancySource, "PregnancySource", PregnancySource, true); Scribe_Values.Look(ref EnableHeteroOvularTwins, "EnableHeteroOvularTwins", EnableHeteroOvularTwins, true); Scribe_Values.Look(ref EnableEnzygoticTwins, "EnableEnzygoticTwins", EnableEnzygoticTwins, true); Scribe_Values.Look(ref EnzygoticTwinsChance, "EnzygoticTwinsChance", EnzygoticTwinsChance, true); @@ -245,6 +255,8 @@ namespace RJW_Menstruation public RJW_Menstruation(ModContentPack content) : base(content) { GetSettings(); + if (!ModsConfig.BiotechActive && Configurations.PregnancySource == Configurations.PregnancyType.Biotech) + Configurations.PregnancySource = Configurations.PregnancyType.MultiplePregnancy; Configurations.HARActivated = ModsConfig.IsActive("erdelf.HumanoidAlienRaces"); Configurations.AnimalGeneticsActivated = ModsConfig.IsActive("Mlie.AnimalGenetics"); } @@ -262,7 +274,8 @@ namespace RJW_Menstruation float mainRectHeight = -3f + (Configurations.EnableWombIcon || Configurations.EnableButtonInHT ? 400f : 0f) + (Configurations.EstrusOverridesHookupSettings ? 144f : 0f) + - (Configurations.UseMultiplePregnancy ? (Configurations.EnableEnzygoticTwins ? 175f : 75f) : 0f) + + // TODO: Also for modified Biotech pregnancies + (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy ? (Configurations.EnableEnzygoticTwins ? 175f : 75f) : 0f) + (Configurations.EnableBirthVaginaMorph ? 48f : 0f); Rect mainRect = new Rect(0f, 0f, inRect.width - 30f, Math.Max(inRect.height + mainRectHeight, 1f)); int Adjust; @@ -415,8 +428,15 @@ namespace RJW_Menstruation Configurations.EstrusRelationshipToHookup = listmain.Slider((int)Configurations.EstrusRelationshipToHookup, -100f, 100f); } - listmain.CheckboxLabeled(Translations.Option13_Label, ref Configurations.UseMultiplePregnancy, Translations.Option13_Desc); - if (Configurations.UseMultiplePregnancy) + // listmain.CheckboxLabeled(Translations.Option13_Label, ref Configurations.UseMultiplePregnancy, Translations.Option13_Desc); + if (listmain.RadioButton(Translations.Option_PregnancyFromBaseRJW_Label, Configurations.PregnancySource == Configurations.PregnancyType.BaseRJW)) + Configurations.PregnancySource = Configurations.PregnancyType.BaseRJW; + if (listmain.RadioButton(Translations.Option_PregnancyFromMultiplePregnancy_Label, Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy)) + Configurations.PregnancySource = Configurations.PregnancyType.MultiplePregnancy; + if (ModsConfig.BiotechActive && listmain.RadioButton(Translations.Option_PregnancyFromBiotech_Label, Configurations.PregnancySource == Configurations.PregnancyType.Biotech)) + Configurations.PregnancySource = Configurations.PregnancyType.Biotech; + // TODO: Also for modified Biotech pregnancy + if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy) { float sectionheight = 75f; if (Configurations.EnableEnzygoticTwins) sectionheight += 100; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 4ebd3b4..16e2156 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1234,7 +1234,8 @@ namespace RJW_Menstruation if (Configurations.Debug) Log.Message($"Implanting fertilized egg of {Pawn} into {parent}, father {egg.fertilizer}"); if (pregnancy != null) { - if (Configurations.UseMultiplePregnancy && Configurations.EnableHeteroOvularTwins) + // TODO: Modified Biotech pregnancy + if (Configurations.PregnancySource == Configurations.PregnancyType.MultiplePregnancy && Configurations.EnableHeteroOvularTwins) { if (pregnancy is Hediff_MultiplePregnancy h) { @@ -1252,30 +1253,41 @@ namespace RJW_Menstruation } else { - if (!Configurations.UseMultiplePregnancy) + Configurations.PregnancyType usePregnancy = xxx.is_human(Pawn) ? Configurations.PregnancySource : Configurations.PregnancyType.MultiplePregnancy; + switch (usePregnancy) { - if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy"); - PregnancyHelper.PregnancyDecider(Pawn, egg.fertilizer); - // I hate having to do this, but it gets the newest pregnancy - List pregnancies = new List(); - Pawn.health.hediffSet.GetHediffs(ref pregnancies); - pregnancy = pregnancies.MaxBy(hediff => hediff.loadID); - pregnant = true; - break; - } - else - { - if (Configurations.Debug) Log.Message($"Creating new menstruation pregnancy"); - pregnancy = Hediff_BasePregnancy.Create(Pawn, egg.fertilizer); - pregnant = true; - deadeggs.Add(egg); + case Configurations.PregnancyType.BaseRJW: + + if (Configurations.Debug) Log.Message($"Creating new base RJW pregnancy"); + PregnancyHelper.PregnancyDecider(Pawn, egg.fertilizer); + // I hate having to do this, but it gets the newest pregnancy + List pregnancies = new List(); + 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(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); + ((Hediff_Pregnant)pregnancy).SetParents(Pawn, egg.fertilizer, PregnancyUtility.GetInheritedGeneSet(egg.fertilizer, Pawn)); + Pawn.health.AddHediff(pregnancy); + break; } if (pregnancy is Hediff_BasePregnancy rjw_preg) { + // TODO: advance biotech pregnancy rjw_preg.p_start_tick -= egg.fertstage / Configurations.CycleAcceleration * GenDate.TicksPerHour; rjw_preg.p_end_tick -= egg.fertstage / Configurations.CycleAcceleration * GenDate.TicksPerHour; } - // TODO: advance biotech pregnancy + if (!(pregnancy is Hediff_MultiplePregnancy)) break; } } @@ -1286,7 +1298,7 @@ namespace RJW_Menstruation } } - if (pregnant && (!Configurations.UseMultiplePregnancy || !Configurations.EnableHeteroOvularTwins)) + if (pregnant && (Configurations.PregnancySource != Configurations.PregnancyType.MultiplePregnancy || !Configurations.EnableHeteroOvularTwins)) { eggs.Clear(); return true; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs index 8f0de67..973a90b 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs @@ -122,6 +122,9 @@ namespace RJW_Menstruation public static readonly string Option_EstrusFuckability_Label = "Option_EstrusFuckability_Label".Translate(); public static readonly string Option_EstrusAttractability_Label = "Option_EstrusAttractability_Label".Translate(); public static readonly string Option_EstrusRelationship_Label = "Option_EstrusRelationship_Label".Translate(); + public static readonly string Option_PregnancyFromBaseRJW_Label = "Option_PregnancyFromBaseRJW_Label".Translate(); + public static readonly string Option_PregnancyFromMultiplePregnancy_Label = "Option_PregnancyFromMultiplePregnancy_Label".Translate(); + public static readonly string Option_PregnancyFromBiotech_Label = "Option_PregnancyFromBiotech_Label".Translate(); public static readonly string Button_ResetToDefault = "Button_ResetToDefault".Translate(); diff --git a/About/Manifest.xml b/About/Manifest.xml index b1bb3ff..a46c110 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Menstruation - 1.0.8.0 + 1.0.8.1 diff --git a/changelogs.txt b/changelogs.txt index 1ab4156..5734acd 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,6 @@ +Version 1.0.8.1 + - Added the option for humans to start Biotech pregnancies if the DLC is enabled. If set, non-humans will use the old multiple pregnancy instead. + Version 1.0.8.0 - Support for RimWorld 1.4. All future changes to Menstruation will only be for Rimworld 1.4. - Existing Biotech pregnancies will appear in a womb, but no support yet for starting a Biotech pregnancy.