diff --git a/1.4/Assemblies/RJW_Menstruation.dll b/1.4/Assemblies/RJW_Menstruation.dll index f289122..936deef 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/ChineseTraditional/DefInjected/Recipe_Surgery/Recipes_Surgery_Breast.xml b/1.4/Languages/ChineseTraditional/DefInjected/RecipeDef/Recipes_Surgery_Breast.xml similarity index 100% rename from 1.4/Languages/ChineseTraditional/DefInjected/Recipe_Surgery/Recipes_Surgery_Breast.xml rename to 1.4/Languages/ChineseTraditional/DefInjected/RecipeDef/Recipes_Surgery_Breast.xml diff --git a/1.4/Languages/English/Keyed/RJW_Menstruation.xml b/1.4/Languages/English/Keyed/RJW_Menstruation.xml index 8ff0f64..5be5d11 100644 --- a/1.4/Languages/English/Keyed/RJW_Menstruation.xml +++ b/1.4/Languages/English/Keyed/RJW_Menstruation.xml @@ -124,6 +124,8 @@ Use basic RJW pregnancy Use menstruation multiple pregnancy Use Biotech pregnancy + Show womb status when drafted + Draw womb icon for drafted pawns Reset to default Gather cum diff --git a/1.4/MilkModule/Assemblies/MilkModule.dll b/1.4/MilkModule/Assemblies/MilkModule.dll index 7337849..7320b77 100644 Binary files a/1.4/MilkModule/Assemblies/MilkModule.dll and b/1.4/MilkModule/Assemblies/MilkModule.dll differ diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs index 7ef52c7..add9b43 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Compatibility/HARCompatibility.cs @@ -19,23 +19,16 @@ namespace RJW_Menstruation AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp(); AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp(); if (babyHARComp == null || originalHARComp == null) return; - - foreach(KeyValuePair> channel in originalHARComp.ColorChannels) + + babyHARComp.addonVariants = new List(originalHARComp.addonVariants); + foreach (KeyValuePair> channel in originalHARComp.ColorChannels) { babyHARComp.OverwriteColorChannel(channel.Key, channel.Value.first, channel.Value.second); } + babyHARComp.headVariant = originalHARComp.headVariant; + babyHARComp.bodyVariant = originalHARComp.bodyVariant; babyHARComp.headMaskVariant = originalHARComp.headMaskVariant; babyHARComp.bodyMaskVariant = originalHARComp.bodyMaskVariant; } - - // HAR doesn't populate variants until the graphics are called for, so this has to happen late - public static void CopyHARPropertiesPostBirth(Pawn baby, Pawn original) - { - AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp(); - AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp(); - if (babyHARComp == null || originalHARComp == null) return; - if (originalHARComp.addonVariants != null) // Testing has shown that the addons are valid by this point, but it's better to be safe - babyHARComp.addonVariants = new List(originalHARComp.addonVariants); - } } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs index 94daadc..6a843bb 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Configurations.cs @@ -42,6 +42,7 @@ namespace RJW_Menstruation public static int CumFertilityDecayRatioAdjust = CumFertilityDecayRatioAdjustDefault; public static int CycleAcceleration = CycleAccelerationDefault; public static bool EnableWombIcon = true; + public static bool EnableDraftedIcon = true; public static bool EnableAnimalCycle = false; public static bool DrawWombStatus = true; public static bool DrawVaginaStatus = true; @@ -72,13 +73,14 @@ namespace RJW_Menstruation public static float MaxBreastIncrementFactor = MaxBreastIncrementFactorDefault; public static float MaxNippleIncrementFactor = MaxNippleIncrementFactorDefault; public static float PermanentNippleChange = PermanentNippleChangeDefault; - public static void SettoDefault() + public static void SetToDefault() { ImplantationChanceAdjust = ImplantationChanceAdjustDefault; FertilizeChanceAdjust = FertilizeChanceAdjustDefault; CumDecayRatioAdjust = CumDecayRatioAdjustDefault; CumFertilityDecayRatioAdjust = CumFertilityDecayRatioAdjustDefault; EnableWombIcon = true; + EnableDraftedIcon = true; EnableGatherCumGizmo = true; EnableAnimalCycle = false; CycleAcceleration = CycleAccelerationDefault; @@ -185,6 +187,7 @@ namespace RJW_Menstruation Scribe_Values.Look(ref CumFertilityDecayRatio, "CumFertilityDecayRatio", CumFertilityDecayRatio, true); Scribe_Values.Look(ref CycleAcceleration, "CycleAcceleration", CycleAcceleration, true); Scribe_Values.Look(ref EnableWombIcon, "EnableWombIcon", EnableWombIcon, true); + Scribe_Values.Look(ref EnableDraftedIcon, "EnableDraftedIcon", EnableDraftedIcon, true); Scribe_Values.Look(ref EnableAnimalCycle, "EnableAnimalCycle", EnableAnimalCycle, true); Scribe_Values.Look(ref DrawWombStatus, "DrawWombStatus", DrawWombStatus, true); Scribe_Values.Look(ref DrawVaginaStatus, "DrawVaginaStatus", DrawVaginaStatus, true); @@ -290,7 +293,7 @@ namespace RJW_Menstruation Widgets.CheckboxLabeled(middleAndRightCells.RightHalf(), Translations.Option_EnableGatherCumGizmo_Label, ref Configurations.EnableGatherCumGizmo, false, null, null, true); if (Configurations.EnableWombIcon || Configurations.EnableButtonInHT) { - Listing_Standard wombsection = listmain.BeginSection(350); + Listing_Standard wombsection = listmain.BeginSection(380); wombsection.CheckboxLabeled(Translations.Option9_Label, ref Configurations.DrawWombStatus, Translations.Option9_Desc); if (Configurations.DrawWombStatus) { @@ -299,6 +302,7 @@ namespace RJW_Menstruation wombsection.CheckboxLabeled(Translations.Option10_Label, ref Configurations.DrawVaginaStatus, Translations.Option10_Desc); wombsection.CheckboxLabeled(Translations.Option29_Label, ref Configurations.AllowShrinkIcon, Translations.Option29_Desc); + wombsection.CheckboxLabeled(Translations.Option_EnableDraftedIcon_Label, ref Configurations.EnableDraftedIcon, Translations.Option_EnableDraftedIcon_Desc); if (wombsection.ButtonText(Translations.Option11_Label + ": " + Configurations.LevelString(Configurations.infoDetail))) { if (Configurations.infoDetail == Configurations.DetailLevel.Hide) Configurations.infoDetail = Configurations.DetailLevel.All; @@ -478,7 +482,7 @@ namespace RJW_Menstruation listmain.CheckboxLabeled(Translations.Option8_Label, ref Configurations.Debug, Translations.Option8_Desc); if (listmain.ButtonText(Translations.Button_ResetToDefault)) { - Configurations.SettoDefault(); + Configurations.SetToDefault(); } listmain.End(); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 6edeabe..b0d8b79 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -257,7 +257,7 @@ namespace RJW_Menstruation } } // Scenario B: Pregnant, grow in the second half of first trimester - else if (Pawn.IsRJWPregnant()) + else if (Pawn.IsRJWPregnant() || Pawn.IsBiotechPregnant()) { float pregnancySize = Mathf.InverseLerp(breastGrowthStart, breastGrowthEnd, Pawn.GetFarthestPregnancyProgress()) * MaxBreastIncrement; if (breastSizeIncreased > pregnancySize) @@ -293,7 +293,7 @@ namespace RJW_Menstruation float newNippleProgress; if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) newNippleProgress = 1f; - else if (Pawn.IsRJWPregnant()) + else if (Pawn.IsRJWPregnant() || Pawn.IsBiotechPregnant()) newNippleProgress = nippleTransitions.Evaluate(Pawn.GetFarthestPregnancyProgress()); else newNippleProgress = 0f; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs index 7d3ffa3..18a9604 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/HediffComps/MenstruationUtility.cs @@ -362,5 +362,34 @@ namespace RJW_Menstruation if (ModsConfig.BiotechActive && pawn.health.hediffSet.HasHediff(HediffDefOf.ImplantedIUD)) return true; return false; } + + public static float DamagePants(this Pawn pawn, float fluidAmount) + { + if (pawn.apparel == null) return 0; + Apparel pants = null; + foreach(Apparel apparel in pawn.apparel.WornApparel.Where(app => app.def.apparel.bodyPartGroups.Contains(BodyPartGroupDefOf.Legs))) + { + if (apparel.def.apparel.LastLayer == ApparelLayerDefOf.OnSkin) + { + pants = apparel; + break; + } + else if (pants == null || apparel.def.apparel.LastLayer == ApparelLayerDefOf.Middle) + // Either grab whatever's available or reassign the pants from shell to a middle + pants = apparel; + // Pants are middle and this is a shell + else continue; + } + if (pants == null) return 0; + + const float HPPerMl = 0.5f; + + DamageWorker.DamageResult damage = pants.TakeDamage(new DamageInfo(DamageDefOf.Deterioration, fluidAmount * HPPerMl, spawnFilth: false)); + + if (pants.Destroyed && PawnUtility.ShouldSendNotificationAbout(pawn) && !pawn.Dead) + Messages.Message("MessageWornApparelDeterioratedAway".Translate(GenLabel.ThingLabel(pants.def, pants.Stuff), pawn).CapitalizeFirst(), pawn, MessageTypeDefOf.NegativeEvent); + + return damage.totalDamageDealt; + } } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs index 119613e..0641e24 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Hediff_MultiplePregnancy.cs @@ -244,8 +244,6 @@ namespace RJW_Menstruation CopyBodyPartRecord(baby, original, Genital_Helper.get_breastsBPR(baby), Genital_Helper.get_breastsBPR(original)); CopyBodyPartRecord(baby, original, Genital_Helper.get_uddersBPR(baby), Genital_Helper.get_uddersBPR(original)); CopyBodyPartRecord(baby, original, Genital_Helper.get_anusBPR(baby), Genital_Helper.get_anusBPR(original)); - if (baby.IsHAR()) - HARCompatibility.CopyHARPropertiesPostBirth(baby, original); } public override void PostBirth(Pawn mother, Pawn father, Pawn baby) @@ -398,7 +396,8 @@ namespace RJW_Menstruation //fixedIdeo: mother.Ideo, forbidAnyTitle: true, forceNoBackstory: true, - forcedEndogenes: PregnancyUtility.GetInheritedGenes(father, mother) + forcedEndogenes: PregnancyUtility.GetInheritedGenes(father, mother), + forcedXenotype: ModsConfig.BiotechActive ? XenotypeDefOf.Baseliner : null ); int division = 1; @@ -410,28 +409,30 @@ namespace RJW_Menstruation { Pawn baby = GenerateBaby(request, mother, father, parentTraits, traitSeed); if (baby == null) break; + if (baby.genes != null && ModsConfig.BiotechActive) + { + if (GeneUtility.SameHeritableXenotype(mother, father) && mother.genes.UniqueXenotype) + { + baby.genes.xenotypeName = mother.genes.xenotypeName; + baby.genes.iconDef = mother.genes.iconDef; + } + XenotypeDef xenoTypeDef = BabyXenoTypeDecider(mother, father, out bool hybridBaby); + if (xenoTypeDef != null) baby.genes.SetXenotypeDirect(xenoTypeDef); + if (hybridBaby) + { + baby.genes.hybrid = true; + baby.genes.xenotypeName = "Hybrid".Translate(); + } + } if (division > 1) { if (i == 0) - { + { + if (baby.IsHAR()) // Have HAR determine the first baby's properties + baby.Drawer.renderer.graphics.ResolveAllGraphics(); firstbaby = baby; request.FixedGender = baby.gender; - request.ForcedEndogenes = baby.genes?.Endogenes.Select(gene => gene.def).ToList(); - if (baby.genes != null && ModsConfig.BiotechActive) - { - if (GeneUtility.SameHeritableXenotype(mother, father) && mother.genes.UniqueXenotype) - { - baby.genes.xenotypeName = mother.genes.xenotypeName; - baby.genes.iconDef = mother.genes.iconDef; - } - XenotypeDef xenoTypeDef = BabyXenoTypeDecider(mother, father, out bool hybridBaby); - if (xenoTypeDef != null) baby.genes.SetXenotypeDirect(xenoTypeDef); - if(hybridBaby) - { - baby.genes.hybrid = true; - baby.genes.xenotypeName = "Hybrid".Translate(); - } - } + request.ForcedEndogenes = baby.genes?.Endogenes.Select(gene => gene.def).ToList(); } else { @@ -634,8 +635,8 @@ namespace RJW_Menstruation } XenotypeDef motherInheritableXenotype = mother?.genes?.Xenotype; XenotypeDef fatherInheritableXenotype = father?.genes?.Xenotype; - if (!motherInheritableXenotype.inheritable) motherInheritableXenotype = null; - if (!fatherInheritableXenotype.inheritable) fatherInheritableXenotype = null; + if (!(motherInheritableXenotype?.inheritable ?? false)) motherInheritableXenotype = null; + if (!(fatherInheritableXenotype?.inheritable ?? false)) fatherInheritableXenotype = null; // If they're the same (or both null) if (motherInheritableXenotype == fatherInheritableXenotype) diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/IngestionOutcomeDoers.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/IngestionOutcomeDoers.cs index 0ebf299..a413f42 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/IngestionOutcomeDoers.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/IngestionOutcomeDoers.cs @@ -9,11 +9,9 @@ namespace RJW_Menstruation { Hediff hediff = HediffMaker.MakeHediff(hediffDef, pawn); float effect = ((!(severity > 0f)) ? hediffDef.initialSeverity : severity) * ingested.stackCount; - AddictionUtility.ModifyChemicalEffectForToleranceAndBodySize(pawn, toleranceChemical, ref effect); + AddictionUtility.ModifyChemicalEffectForToleranceAndBodySize_NewTemp(pawn, toleranceChemical, ref effect, multiplyByGeneToleranceFactors); hediff.Severity = effect; pawn.health.AddHediff(hediff); } - - } } diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs index 7bbdefb..a6d34e2 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/Biotech_Patch.cs @@ -3,6 +3,7 @@ using System.Linq; using RimWorld; using Verse; using System.Collections.Generic; +using System.Reflection; namespace RJW_Menstruation { @@ -108,4 +109,71 @@ namespace RJW_Menstruation comp.TakeLoosePregnancy(); } } + + [HarmonyPatch(typeof(PregnancyUtility), nameof(PregnancyUtility.ApplyBirthOutcome))] + public class ApplyBirthOutcome_Patch + { + public static void PostFix(Thing birtherThing) + { + if (birtherThing is Pawn pawn && !pawn.health.Dead) + pawn.GetBreastComp()?.GaveBirth(); + } + } + + [HarmonyPatch(typeof(PregnancyUtility), nameof(PregnancyUtility.TryTerminatePregnancy))] + public class TryTerminatePregnancy_Patch + { + private static Hediff GetEarliestPregnancy(Pawn pawn) + { + Hediff Earliest_Pregnancy = PregnancyUtility.GetPregnancyHediff(pawn); + foreach (HediffComp_Menstruation comp in pawn.GetMenstruationComps()) + { + Hediff pregnancy = comp.Pregnancy; + if (pregnancy == null) continue; + if (Earliest_Pregnancy == null || Earliest_Pregnancy.Severity > pregnancy.Severity) Earliest_Pregnancy = pregnancy; + } + + return Earliest_Pregnancy; + } + + private static readonly MethodInfo GetPregnancyHediff = AccessTools.Method(typeof(PregnancyUtility), nameof(PregnancyUtility.GetPregnancyHediff), new System.Type[] { typeof(Pawn) }); + + // Also called for Recipe_TerminatePregnancy.ApplyOnPawn + public static IEnumerable Transpiler(IEnumerable instructions) + { + if (GetPregnancyHediff == null || GetPregnancyHediff.ReturnType != typeof(Hediff)) throw new System.InvalidOperationException("GetPregnancyHediff not found"); + foreach (CodeInstruction instruction in instructions) + { + if (instruction.Calls(GetPregnancyHediff)) + yield return CodeInstruction.Call(typeof(TryTerminatePregnancy_Patch), nameof(TryTerminatePregnancy_Patch.GetEarliestPregnancy)); + else yield return instruction; + } + } + + public static void Postfix(bool __result, Pawn pawn) + { + if (__result) + foreach (HediffComp_Menstruation comp in pawn.GetMenstruationComps()) + _ = comp.Pregnancy; // get_Pregnancy will remove the hediff attached to the comp that doesn't have it anymore + } + } + + [HarmonyPatch(typeof(Recipe_TerminatePregnancy), nameof(Recipe_TerminatePregnancy.AvailableOnNow))] + public class TerminatePregnancy_AvailableOnNow_Patch + { + public static void Postfix(ref bool __result, Thing thing) + { + if (!ModsConfig.BiotechActive || !(thing is Pawn pawn)) return; + __result |= pawn.GetMenstruationComps().Any(comp => comp.Pregnancy != null); + } + } + + [HarmonyPatch(typeof(Recipe_TerminatePregnancy), nameof(Recipe_TerminatePregnancy.ApplyOnPawn))] + public class TerminatePregnancy_ApplyOnPawn_Patch + { + public static IEnumerable Transpiler(IEnumerable instructions) + { + return TryTerminatePregnancy_Patch.Transpiler(instructions); + } + } } \ No newline at end of file diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs index cb98f78..9032766 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs @@ -96,7 +96,7 @@ namespace RJW_Menstruation } [HarmonyPatch(typeof(PregnancyHelper), nameof(PregnancyHelper.DoImpregnate))] - public static class Doimpregnate_Patch + public static class DoImpregnate_Patch { public static bool Prefix(Pawn pawn, Pawn partner) // partner has vagina { @@ -132,7 +132,7 @@ namespace RJW_Menstruation private static readonly MethodInfo IsPregnant = AccessTools.Method(typeof(PawnExtensions), nameof(PawnExtensions.IsPregnant), new System.Type[] {typeof(Pawn), typeof(bool)}); public static IEnumerable Transpiler(IEnumerable instructions) { - if (IsPregnant == null) throw new System.InvalidOperationException("IsPregnant not found"); + if (IsPregnant == null || IsPregnant.ReturnType != typeof(bool)) throw new System.InvalidOperationException("IsPregnant not found"); foreach(CodeInstruction instruction in instructions) { if (instruction.Calls(IsPregnant)) @@ -239,7 +239,7 @@ namespace RJW_Menstruation private static readonly FieldInfo MinimumFuckabilityToHookup = AccessTools.Field(typeof(RJWHookupSettings), nameof(RJWHookupSettings.MinimumFuckabilityToHookup)); public static IEnumerable Transpiler(IEnumerable instructions) { - if (MinimumFuckabilityToHookup == null) throw new System.InvalidOperationException("MinimumFuckabilityToHookup not found"); + if (MinimumFuckabilityToHookup == null || MinimumFuckabilityToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumFuckabilityToHookup not found"); bool first_fuckability = true; foreach (CodeInstruction instruction in instructions) { @@ -275,8 +275,8 @@ namespace RJW_Menstruation private static readonly FieldInfo MinimumRelationshipToHookup = AccessTools.Field(typeof(RJWHookupSettings), nameof(RJWHookupSettings.MinimumRelationshipToHookup)); public static IEnumerable Transpiler(IEnumerable instructions) { - if (MinimumAttractivenessToHookup == null) throw new System.InvalidOperationException("MinimumAttractivenessToHookup not found"); - if (MinimumRelationshipToHookup == null) throw new System.InvalidOperationException("MinimumRelationshipToHookup not found"); + if (MinimumAttractivenessToHookup == null || MinimumAttractivenessToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumAttractivenessToHookup not found"); + if (MinimumRelationshipToHookup == null || MinimumRelationshipToHookup.FieldType != typeof(float)) throw new System.InvalidOperationException("MinimumRelationshipToHookup not found"); LocalBuilder pawn_index = null; // Like in the last one, we switch the arguments around for the second load bool first_attractiveness = true; diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs index 35d95c8..426991d 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Translations.cs @@ -125,6 +125,8 @@ namespace RJW_Menstruation 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 Option_EnableDraftedIcon_Label = "Option_EnableDraftedIcon_Label".Translate(); + public static readonly string Option_EnableDraftedIcon_Desc = "Option_EnableDraftedIcon_Desc".Translate(); public static readonly string Button_ResetToDefault = "Button_ResetToDefault".Translate(); diff --git a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index aefa4c2..73cdf7e 100644 --- a/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.4/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -449,7 +449,10 @@ namespace RJW_Menstruation public static bool ShouldShowWombGizmo(this Pawn pawn) { - return Configurations.EnableWombIcon && (!pawn.IsAnimal() || Configurations.EnableAnimalCycle); + if (!Configurations.EnableWombIcon) return false; + if (pawn.Drafted && !Configurations.EnableDraftedIcon) return false; + if (pawn.IsAnimal() && !Configurations.EnableAnimalCycle) return false; + return true; } } } diff --git a/About/Manifest.xml b/About/Manifest.xml index 84c2a83..72e60db 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Menstruation - 1.0.8.3 + 1.0.8.4 diff --git a/changelogs.txt b/changelogs.txt index cfa0841..ddd0654 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,10 @@ +Version 1.0.8.4 + - Fix Biotech xenotype inheritance for single-child pregnancies. + - Fix error in Traditional Chinese translation. + - New option in the mod settings to hide the womb icon for drafted pawns. + - Newborns should now be baseliners if there are no xenotypes to inherit. + - The Biotech terminate pregnancy recipe can now terminate a menstruation pregnancy, too. + Version 1.0.8.3 - Compatibility update for RJW 5.3.0.9 - Requires RJW 5.3.0.9 @@ -13,7 +20,7 @@ Version 1.0.8.2 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. - Babies conceived through the multiple pregnancy option will now properly inherit xenotypes. - - Properly track biotech pregnancy through labor. + - Properly track Biotech pregnancy through labor. - Pawns that are genetically sterile will no longer produce fertile cum, nor have a menstrual cycle. - Biotech IUDs will now reduce pregnancy chances the same as an RJW IUD. Using both will not stack. - A biotech pregnancy will pause before going into labor if another womb already is in labor.