From 291f2dddebca36bc0deabf884d9027fd285cb22a Mon Sep 17 00:00:00 2001 From: Inglix Date: Wed, 25 Aug 2021 13:14:02 -0300 Subject: [PATCH] Support new medic/bioregeneration cycles --- 1.3/Assemblies/1SettingsHelper.dll | Bin 19968 -> 22016 bytes 1.3/Assemblies/FasterBiosculpterPod.dll | Bin 18432 -> 19456 bytes .../FasterBiosculpterPod.cs | 217 +++++++++--------- .../FasterBiosculpterPod.csproj | 5 +- .../Keyed/FasterBiosculpterPod_Keys.xml | 17 +- 5 files changed, 122 insertions(+), 117 deletions(-) diff --git a/1.3/Assemblies/1SettingsHelper.dll b/1.3/Assemblies/1SettingsHelper.dll index 2b430e025122a3e172c242c91b4aad4dc257a801..3fe2389859aa463a1e95d9137bfff3ea7b27283b 100644 GIT binary patch literal 22016 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 literal 19968 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 K;riqA!2bexAjYf! diff --git a/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.cs b/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.cs index f0a1b18..1916603 100644 --- a/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.cs +++ b/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.cs @@ -7,30 +7,36 @@ using System.Reflection.Emit; using UnityEngine; using Verse; +using SettingsHelper; namespace FasterBiosculpterPod { public class FasterBiosculpterPod_Settings : ModSettings { - public const int VanillaBiotuningDurationTicks = 3600000; - public const int RecommendedBiotuningDurationTicks = 900000; - + public const float VanillaMedicCycleDays = 6f; + public const float VanillaMedicCycleNutrition = 5f; + public const float RecommendedMedicCycleDays = 1.5f; + public const float RecommendedMedicCycleNutrition = 1.3f; + + public const float VanillaBioregenerationCycleDays = 25f; + public const float VanillaBioregenerationCycleNutrition = 30f; + public const float RecommendedBioregenerationCycleDays = 6.3f; + public const float RecommendedBioregenerationCycleNutrition = 7.5f; + + public const float VanillaAgeReversalCycleDays = 8f; + public const float VanillaAgeReversalCycleNutrition = 5f; public const int VanillaAgeReversalTicks = 3600000; + public const float RecommendedAgeReversalCycleDays = 2f; + public const float RecommendedAgeReversalCycleNutrition = 1.3f; public const int RecommendedAgeReversalTicks = 3600000; - public const float VanillaAgeReversalCycleDays = 10f; - public const float RecommendedAgeReversalCycleDays = 2.5f; - public const float VanillaHealingCycleDays = 10f; - public const float RecommendedHealingCycleDays = 2.5f; public const float VanillaPleasureCycleDays = 4f; + public const float VanillaPleasureCycleNutrition = 5f; public const float RecommendedPleasureCycleDays = 1f; + public const float RecommendedPleasureCycleNutrition = 1.3f; - public const float VanillaAgeReversalCycleNutrition = 10f; - public const float RecommendedAgeReversalCycleNutrition = 2.5f; - public const float VanillaHealingCycleNutrition = 10f; - public const float RecommendedHealingCycleNutrition = 2.5f; - public const float VanillaPleasureCycleNutrition = 5f; - public const float RecommendedPleasureCycleNutrition = 1.25f; + public const int VanillaBiotuningDurationTicks = 3600000; + public const int RecommendedBiotuningDurationTicks = 900000; public const float VanillaPowerConsumption = 150f; public const float RecommendedPowerConsumption = 600f; @@ -38,34 +44,38 @@ public class FasterBiosculpterPod_Settings : ModSettings public const string BiosculpterPodDescription = "An immersive pod equipped with a biosculpting fluid injector and attached control system. It can perform a variety of biological alterations including age reversal and pleasure-giving. Each pod becomes biotuned to its user, and cannot be used by anyone else. Biotuning resets after {0} days. Believers in transhumanism believe biosculpter pods are of critical importance in their quest to transcend normal human physical limitations."; public const string BiosculpterPodDescriptionNoBiotuning = "An immersive pod equipped with a biosculpting fluid injector and attached control system. It can perform a variety of biological alterations including age reversal and pleasure-giving. Believers in transhumanism believe biosculpter pods are of critical importance in their quest to transcend normal human physical limitations."; - public int BiotuningDurationTicks = RecommendedBiotuningDurationTicks; + public float BiotuningDurationTicks = RecommendedBiotuningDurationTicks; - public int AgeReversalTicks = RecommendedAgeReversalTicks; + public float AgeReversalTicks = RecommendedAgeReversalTicks; + public float MedicCycleDays = RecommendedMedicCycleDays; + public float MedicCycleNutrition = RecommendedMedicCycleNutrition; + public float BioregenerationCycleDays = RecommendedBioregenerationCycleDays; + public float BioregenerationCycleNutrition = RecommendedBioregenerationCycleNutrition; public float AgeReversalCycleDays = RecommendedAgeReversalCycleDays; - public float HealingCycleDays = RecommendedHealingCycleDays; - public float PleasureCycleDays = RecommendedPleasureCycleDays; - public float AgeReversalCycleNutrition = RecommendedAgeReversalCycleNutrition; - public float HealingCycleNutrition = RecommendedHealingCycleNutrition; + public float PleasureCycleDays = RecommendedPleasureCycleDays; public float PleasureCycleNutrition = RecommendedPleasureCycleNutrition; public float PowerConsumption = RecommendedPowerConsumption; public override void ExposeData() { - Scribe_Values.Look(ref BiotuningDurationTicks, "biotuningDurationTicks", RecommendedBiotuningDurationTicks); + Scribe_Values.Look(ref MedicCycleDays, "medicCycleDays", RecommendedMedicCycleDays); + Scribe_Values.Look(ref MedicCycleNutrition, "medicCycleNutrition", RecommendedMedicCycleNutrition); - Scribe_Values.Look(ref AgeReversalTicks, "ageReversalTicks", RecommendedAgeReversalTicks); + Scribe_Values.Look(ref BioregenerationCycleDays, "bioregenerationCycleDays", RecommendedBioregenerationCycleDays); + Scribe_Values.Look(ref BioregenerationCycleNutrition, "bioregenerationCycleNutrition", RecommendedBioregenerationCycleNutrition); Scribe_Values.Look(ref AgeReversalCycleDays, "ageReversalCycleDays", RecommendedAgeReversalCycleDays); - Scribe_Values.Look(ref HealingCycleDays, "healingCycleDays", RecommendedHealingCycleDays); - Scribe_Values.Look(ref PleasureCycleDays, "pleasureCycleDays", RecommendedPleasureCycleDays); - Scribe_Values.Look(ref AgeReversalCycleNutrition, "ageReversalCycleNutrition", RecommendedAgeReversalCycleNutrition); - Scribe_Values.Look(ref HealingCycleNutrition, "healingCycleNutrition", RecommendedHealingCycleNutrition); + Scribe_Values.Look(ref AgeReversalTicks, "ageReversalTicks", RecommendedAgeReversalTicks); + + Scribe_Values.Look(ref PleasureCycleDays, "pleasureCycleDays", RecommendedPleasureCycleDays); Scribe_Values.Look(ref PleasureCycleNutrition, "pleasureCycleNutrition", RecommendedPleasureCycleNutrition); + Scribe_Values.Look(ref BiotuningDurationTicks, "biotuningDurationTicks", RecommendedBiotuningDurationTicks); + Scribe_Values.Look(ref PowerConsumption, "powerConsumption", RecommendedPowerConsumption); base.ExposeData(); @@ -75,120 +85,98 @@ public override void ExposeData() public class FasterBiosculpterPod_Mod : Mod { public static FasterBiosculpterPod_Settings settings; + private Vector2 scrollPosition; public FasterBiosculpterPod_Mod(ModContentPack content) : base(content) { settings = GetSettings(); } - public override void DoSettingsWindowContents(Rect inRect) + public override void DoSettingsWindowContents(Rect canvas) { - Listing_Standard listingStandard = new Listing_Standard(); - float leftRectPadding = 10f; - float rightRectPct = 0.80f; - - listingStandard.Begin(inRect); - Rect rectLeft = listingStandard.GetRect(Text.LineHeight); - rectLeft.y += leftRectPadding; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - Widgets.Label(rectLeft, "Cycle_Durations".Translate()); - rectLeft.y += leftRectPadding + Text.LineHeight; - Rect rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Healing".Translate()); - settings.HealingCycleDays = Widgets.HorizontalSlider(rectRight, settings.HealingCycleDays, 0f, 60f, true, settings.HealingCycleDays.ToString() + " days", null, null, 0.1f); - rectLeft.y += leftRectPadding + Text.LineHeight; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Age_Reversal".Translate()); - settings.AgeReversalCycleDays = Widgets.HorizontalSlider(rectRight, settings.AgeReversalCycleDays, 0f, 60f, true, settings.AgeReversalCycleDays.ToString() + " days", null, null, 0.1f); - rectLeft.y += leftRectPadding + Text.LineHeight; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Pleasure".Translate()); - settings.PleasureCycleDays = Widgets.HorizontalSlider(rectRight, settings.PleasureCycleDays, 0f, 60f, true, settings.PleasureCycleDays.ToString() + " days", null, null, 0.1f); - rectLeft.y += leftRectPadding * 2 + Text.LineHeight; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - Widgets.Label(rectLeft, "Cycle_Nutrition_Requirements".Translate()); - rectLeft.y += leftRectPadding + Text.LineHeight; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Healing".Translate()); - settings.HealingCycleNutrition = Widgets.HorizontalSlider(rectRight, settings.HealingCycleNutrition, 0f, 60f, true, settings.HealingCycleNutrition.ToString() + " nutrition", null, null, 0.1f); - rectLeft.y += leftRectPadding + Text.LineHeight; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Age_Reversal".Translate()); - settings.AgeReversalCycleNutrition = Widgets.HorizontalSlider(rectRight, settings.AgeReversalCycleNutrition, 0f, 60f, true, settings.AgeReversalCycleNutrition.ToString() + " nutrition", null, null, 0.1f); - rectLeft.y += leftRectPadding + Text.LineHeight; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Pleasure".Translate()); - settings.PleasureCycleNutrition = Widgets.HorizontalSlider(rectRight, settings.PleasureCycleNutrition, 0f, 60f, true, settings.PleasureCycleNutrition.ToString() + " nutrition", null, null, 0.1f); - rectLeft.y += leftRectPadding * 2 + Text.LineHeight; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Biotuning_Duration".Translate()); - settings.BiotuningDurationTicks = (int)Widgets.HorizontalSlider(rectRight, settings.BiotuningDurationTicks, 0, 21600000, true, settings.BiotuningDurationTicks.ToStringTicksToDays("F0"), null, null, 60000); - rectLeft.y += leftRectPadding * 2 + Text.LineHeight; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Years_Reversed".Translate()); - settings.AgeReversalTicks = (int)Widgets.HorizontalSlider(rectRight, settings.AgeReversalTicks, 0, 72000000, true, settings.AgeReversalTicks.ToStringTicksToDays("F0"), null, null, 60000); - rectLeft.y += leftRectPadding * 2 + Text.LineHeight; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - rectRight = rectLeft.RightPart(rightRectPct).Rounded(); - Widgets.Label(rectLeft, "Base_Power_Consumption".Translate()); - settings.PowerConsumption = Widgets.HorizontalSlider(rectRight, settings.PowerConsumption, 0f, 900f, true, settings.PowerConsumption.ToString() + " W", null, null, 1f); - rectLeft.y += leftRectPadding * 2 + Text.LineHeight; - Widgets.DrawLineHorizontal(0, rectLeft.y, inRect.width); - rectLeft.y += leftRectPadding * 2; - rectLeft.height = 30f; - rectLeft.width = inRect.width * 0.3f; - if (Widgets.ButtonText(rectLeft, "Apply_Custom_Values".Translate())) + const float LeftPartPct = 0.2f; + + Rect outRect = canvas.TopPart(0.9f); + Rect rect = new Rect(0f, 0f, outRect.width - 18f, 650f); + Widgets.BeginScrollView(outRect, ref scrollPosition, rect, true); + Listing_Standard listing = new Listing_Standard(); + listing.Begin(rect); + + listing.AddLabelLine("Medic_Cycle".Translate()); + listing.AddLabeledSlider("Cycle_Duration".Translate(), ref settings.MedicCycleDays, 0f, 60f, null, null, 0.1f, true, settings.MedicCycleDays.ToString() + "_days".Translate(), LeftPartPct); + listing.AddLabeledSlider("Nutrition_Required".Translate(), ref settings.MedicCycleNutrition, 0f, 60f, null, null, 0.1f, true, settings.MedicCycleNutrition.ToString() + "_nutrition".Translate(), LeftPartPct); + listing.AddHorizontalLine(ListingStandardHelper.Gap); + listing.AddLabelLine("Bioregeneration_Cycle".Translate()); + listing.AddLabeledSlider("Cycle_Duration".Translate(), ref settings.BioregenerationCycleDays, 0f, 60f, null, null, 0.1f, true, settings.BioregenerationCycleDays.ToString() + "_days".Translate(), LeftPartPct); + listing.AddLabeledSlider("Nutrition_Required".Translate(), ref settings.BioregenerationCycleNutrition, 0f, 60f, null, null, 0.1f, true, settings.BioregenerationCycleNutrition.ToString() + "_nutrition".Translate(), LeftPartPct); + listing.AddHorizontalLine(ListingStandardHelper.Gap); + listing.AddLabelLine("Age_Reversal_Cycle".Translate()); + listing.AddLabeledSlider("Cycle_Duration".Translate(), ref settings.AgeReversalCycleDays, 0f, 60f, null, null, 0.1f, true, settings.AgeReversalCycleDays.ToString() + "_days".Translate(), LeftPartPct); + listing.AddLabeledSlider("Nutrition_Required".Translate(), ref settings.AgeReversalCycleNutrition, 0f, 60f, null, null, 0.1f, true, settings.AgeReversalCycleNutrition.ToString() + "_nutrition".Translate(), LeftPartPct); + listing.AddLabeledSlider("Age_Reversal".Translate(), ref settings.AgeReversalTicks, 0, 72000000, null, null, 60000f, true, ((int)settings.AgeReversalTicks).ToStringTicksToDays("F0"), LeftPartPct); + listing.AddHorizontalLine(ListingStandardHelper.Gap); + listing.AddLabelLine("Pleasure_Cycle".Translate()); + listing.AddLabeledSlider("Cycle_Duration".Translate(), ref settings.PleasureCycleDays, 0f, 60f, null, null, 0.1f, true, settings.PleasureCycleDays.ToString() + "_days".Translate(), LeftPartPct); + listing.AddLabeledSlider("Nutrition_Required".Translate(), ref settings.PleasureCycleNutrition, 0f, 60f, null, null, 0.1f, true, settings.PleasureCycleNutrition.ToString() + "_nutrition".Translate(), LeftPartPct); + listing.AddHorizontalLine(ListingStandardHelper.Gap); + listing.AddLabeledSlider("Biotuning_Duration".Translate(), ref settings.BiotuningDurationTicks, 0, 72000000, null, null, 60000f, true, ((int)settings.BiotuningDurationTicks).ToStringTicksToDays("F0"), LeftPartPct); + listing.AddHorizontalLine(ListingStandardHelper.Gap); + listing.AddLabeledSlider("Power_Consumption".Translate(), ref settings.PowerConsumption, 0f, 10000f, null, null, 25f, true, settings.PowerConsumption.ToString() + "_W".Translate(), LeftPartPct); + listing.End(); + Widgets.EndScrollView(); + + Rect buttonsRect = canvas.BottomPart(0.075f).LeftPart(0.3f); + buttonsRect.height = canvas.height * 0.05f; + if (Widgets.ButtonText(buttonsRect, "Apply_Custom_Values".Translate())) { ApplySettings(); } - rectLeft.x += inRect.width * 0.35f; - if (Widgets.ButtonText(rectLeft, "Apply_Recommended_Values".Translate())) + buttonsRect.x += canvas.width * 0.35f; + if (Widgets.ButtonText(buttonsRect, "Apply_Recommended_Values".Translate())) { - settings.HealingCycleDays = FasterBiosculpterPod_Settings.RecommendedHealingCycleDays; - settings.AgeReversalCycleDays = FasterBiosculpterPod_Settings.RecommendedAgeReversalCycleDays; - settings.PleasureCycleDays = FasterBiosculpterPod_Settings.RecommendedPleasureCycleDays; + settings.MedicCycleDays = FasterBiosculpterPod_Settings.RecommendedMedicCycleDays; + settings.MedicCycleNutrition = FasterBiosculpterPod_Settings.RecommendedMedicCycleNutrition; + + settings.BioregenerationCycleDays = FasterBiosculpterPod_Settings.RecommendedBioregenerationCycleDays; + settings.BioregenerationCycleNutrition = FasterBiosculpterPod_Settings.RecommendedBioregenerationCycleNutrition; - settings.HealingCycleNutrition = FasterBiosculpterPod_Settings.RecommendedHealingCycleNutrition; + settings.AgeReversalCycleDays = FasterBiosculpterPod_Settings.RecommendedAgeReversalCycleDays; settings.AgeReversalCycleNutrition = FasterBiosculpterPod_Settings.RecommendedAgeReversalCycleNutrition; + settings.AgeReversalTicks = FasterBiosculpterPod_Settings.RecommendedAgeReversalTicks; + + settings.PleasureCycleDays = FasterBiosculpterPod_Settings.RecommendedPleasureCycleDays; settings.PleasureCycleNutrition = FasterBiosculpterPod_Settings.RecommendedPleasureCycleNutrition; settings.BiotuningDurationTicks = FasterBiosculpterPod_Settings.RecommendedBiotuningDurationTicks; - settings.AgeReversalTicks = FasterBiosculpterPod_Settings.RecommendedAgeReversalTicks; - settings.PowerConsumption = FasterBiosculpterPod_Settings.RecommendedPowerConsumption; ApplySettings(); } - rectLeft.x += inRect.width * 0.35f; - if (Widgets.ButtonText(rectLeft, "Apply_Vanilla_Values".Translate())) + buttonsRect.x += canvas.width * 0.35f; + if (Widgets.ButtonText(buttonsRect, "Apply_Vanilla_Values".Translate())) { - settings.HealingCycleDays = FasterBiosculpterPod_Settings.VanillaHealingCycleDays; - settings.AgeReversalCycleDays = FasterBiosculpterPod_Settings.VanillaAgeReversalCycleDays; - settings.PleasureCycleDays = FasterBiosculpterPod_Settings.VanillaPleasureCycleDays; + settings.MedicCycleDays = FasterBiosculpterPod_Settings.VanillaMedicCycleDays; + settings.MedicCycleNutrition = FasterBiosculpterPod_Settings.VanillaMedicCycleNutrition; + + settings.BioregenerationCycleDays = FasterBiosculpterPod_Settings.VanillaBioregenerationCycleDays; + settings.BioregenerationCycleNutrition = FasterBiosculpterPod_Settings.VanillaBioregenerationCycleNutrition; - settings.HealingCycleNutrition = FasterBiosculpterPod_Settings.VanillaHealingCycleNutrition; + settings.AgeReversalCycleDays = FasterBiosculpterPod_Settings.VanillaAgeReversalCycleDays; settings.AgeReversalCycleNutrition = FasterBiosculpterPod_Settings.VanillaAgeReversalCycleNutrition; + settings.AgeReversalTicks = FasterBiosculpterPod_Settings.VanillaAgeReversalTicks; + + settings.PleasureCycleDays = FasterBiosculpterPod_Settings.VanillaPleasureCycleDays; settings.PleasureCycleNutrition = FasterBiosculpterPod_Settings.VanillaPleasureCycleNutrition; settings.BiotuningDurationTicks = FasterBiosculpterPod_Settings.VanillaBiotuningDurationTicks; - settings.AgeReversalTicks = FasterBiosculpterPod_Settings.VanillaAgeReversalTicks; - settings.PowerConsumption = FasterBiosculpterPod_Settings.VanillaPowerConsumption; ApplySettings(); } - listingStandard.End(); - base.DoSettingsWindowContents(inRect); + base.DoSettingsWindowContents(canvas); } /** @@ -226,8 +214,11 @@ public static void ApplySettings() (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_AgeReversalCycle)) as CompProperties_BiosculpterPod_AgeReversalCycle).nutritionRequired = settings.AgeReversalCycleNutrition; } - (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle)) as CompProperties_BiosculpterPod_HealingCycle).durationDays = settings.HealingCycleDays; - (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle)) as CompProperties_BiosculpterPod_HealingCycle).nutritionRequired = settings.HealingCycleNutrition; + (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle) && x.compClass == typeof(CompBiosculpterPod_MedicCycle)) as CompProperties_BiosculpterPod_HealingCycle).durationDays = settings.MedicCycleDays; + (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle) && x.compClass == typeof(CompBiosculpterPod_MedicCycle)) as CompProperties_BiosculpterPod_HealingCycle).nutritionRequired = settings.MedicCycleNutrition; + + (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle) && x.compClass == typeof(CompBiosculpterPod_RegenerationCycle)) as CompProperties_BiosculpterPod_HealingCycle).durationDays = settings.BioregenerationCycleDays; + (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_HealingCycle) && x.compClass == typeof(CompBiosculpterPod_RegenerationCycle)) as CompProperties_BiosculpterPod_HealingCycle).nutritionRequired = settings.BioregenerationCycleNutrition; (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_PleasureCycle)) as CompProperties_BiosculpterPod_PleasureCycle).durationDays = settings.PleasureCycleDays; (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_BiosculpterPod_PleasureCycle)) as CompProperties_BiosculpterPod_PleasureCycle).nutritionRequired = settings.PleasureCycleNutrition; @@ -235,7 +226,7 @@ public static void ApplySettings() (DefDatabase.GetNamed("BiosculpterPod", true).comps.Find(x => x.GetType() == typeof(CompProperties_Power)) as CompProperties_Power).basePowerConsumption = settings.PowerConsumption; if (settings.BiotuningDurationTicks > 0) - (DefDatabase.GetNamed("BiosculpterPod", true)).description = string.Format(FasterBiosculpterPod_Settings.BiosculpterPodDescription, settings.BiotuningDurationTicks.ToStringTicksToDays("F0")); + (DefDatabase.GetNamed("BiosculpterPod", true)).description = string.Format(FasterBiosculpterPod_Settings.BiosculpterPodDescription, ((int)settings.BiotuningDurationTicks).ToStringTicksToDays("F0")); else (DefDatabase.GetNamed("BiosculpterPod", true)).description = FasterBiosculpterPod_Settings.BiosculpterPodDescriptionNoBiotuning; } @@ -267,7 +258,7 @@ static IEnumerable Transpiler(IEnumerable inst { if (instructionList[i].opcode == OpCodes.Ldc_I4 && (Int32)instructionList[i].operand == FasterBiosculpterPod_Settings.VanillaBiotuningDurationTicks) { - instructionList[i].operand = LoadedModManager.GetMod().GetSettings().BiotuningDurationTicks; + instructionList[i].operand = (int)LoadedModManager.GetMod().GetSettings().BiotuningDurationTicks; break; } } @@ -287,7 +278,7 @@ static IEnumerable Transpiler(IEnumerable inst { if (instructionList[i].opcode == OpCodes.Ldc_I4 && (Int32)instructionList[i].operand == FasterBiosculpterPod_Settings.VanillaBiotuningDurationTicks) { - instructionList[i].operand = LoadedModManager.GetMod().GetSettings().BiotuningDurationTicks; + instructionList[i].operand = (int)LoadedModManager.GetMod().GetSettings().BiotuningDurationTicks; break; } } @@ -307,7 +298,7 @@ static IEnumerable Transpiler(IEnumerable inst { if (instructionList[i].opcode == OpCodes.Ldc_I4 && (Int32)instructionList[i].operand == FasterBiosculpterPod_Settings.VanillaAgeReversalTicks) { - instructionList[i].operand = LoadedModManager.GetMod().GetSettings().AgeReversalTicks; + instructionList[i].operand = (int)LoadedModManager.GetMod().GetSettings().AgeReversalTicks; break; } } @@ -328,7 +319,7 @@ static IEnumerable Transpiler(IEnumerable inst if (instructionList[i].opcode == OpCodes.Ldc_I4_S && (SByte)instructionList[i].operand == 60) { instructionList[i].opcode = OpCodes.Ldc_I4; - instructionList[i].operand = (LoadedModManager.GetMod().GetSettings().AgeReversalTicks / 60000); + instructionList[i].operand = ((int)LoadedModManager.GetMod().GetSettings().AgeReversalTicks / 60000); break; } } diff --git a/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.csproj b/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.csproj index 16377be..53313d2 100644 --- a/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.csproj +++ b/1.3/Source/FasterBiosculpterPod/FasterBiosculpterPod.csproj @@ -35,8 +35,9 @@ ..\..\..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll False - - ..\..\..\..\1SettingsHelper.dll + + False + ..\..\..\..\..\Tools\SettingsHelper\Assemblies\1SettingsHelper.dll ..\..\..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll diff --git a/Languages/English/Keyed/FasterBiosculpterPod_Keys.xml b/Languages/English/Keyed/FasterBiosculpterPod_Keys.xml index 9097fbc..78bd357 100644 --- a/Languages/English/Keyed/FasterBiosculpterPod_Keys.xml +++ b/Languages/English/Keyed/FasterBiosculpterPod_Keys.xml @@ -1,6 +1,13 @@ Faster Biosculpter Pod + + Medic Cycle + Bioregeneration Cycle + Age Reversal Cycle + Pleasure Cycle + Biotuning Duration + Power Consumption Healing Age Reversal @@ -8,11 +15,17 @@ Cycle Durations Cycle Nutrition Requirements - Biotuning Duration + Age Reversed - Base Power Consumption + Apply Custom Values Apply Recommended Values Apply Vanilla Values + + Cycle Duration + Nutrition Required + <_days> days + <_nutrition> nutrition + <_W> W \ No newline at end of file