mirror of
				https://github.com/amevarashi/RJW-Sexperience.git
				synced 2024-08-14 23:54:08 +00:00 
			
		
		
		
	Refactor StatParts
This commit is contained in:
		
							parent
							
								
									257d86a416
								
							
						
					
					
						commit
						b4231341ff
					
				
					 7 changed files with 87 additions and 41 deletions
				
			
		| 
						 | 
					@ -3,9 +3,6 @@
 | 
				
			||||||
  <RS_Mod_Title>RJW Sexperience</RS_Mod_Title>
 | 
					  <RS_Mod_Title>RJW Sexperience</RS_Mod_Title>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- Sex status screen -->
 | 
					  <!-- Sex status screen -->
 | 
				
			||||||
  <LustStatFactor>Lust: x{0}%</LustStatFactor>
 | 
					 | 
				
			||||||
  <SlaveStatFactor>Slave: x{0}%</SlaveStatFactor>
 | 
					 | 
				
			||||||
  <SlaveStatFactorDefault>Not Slave: x100%</SlaveStatFactorDefault>
 | 
					 | 
				
			||||||
  <MemeStatFactor>Meme: x{0}%</MemeStatFactor>
 | 
					  <MemeStatFactor>Meme: x{0}%</MemeStatFactor>
 | 
				
			||||||
  <RSVictimCondition>slave, prisoner, submissive gender only</RSVictimCondition>
 | 
					  <RSVictimCondition>slave, prisoner, submissive gender only</RSVictimCondition>
 | 
				
			||||||
  <RSBreederCondition>improper animal: cannot breed or forbidden by precepts</RSBreederCondition>
 | 
					  <RSBreederCondition>improper animal: cannot breed or forbidden by precepts</RSBreederCondition>
 | 
				
			||||||
| 
						 | 
					@ -14,7 +11,6 @@
 | 
				
			||||||
  <RSShouldCanFuck>capable of sex is required</RSShouldCanFuck>
 | 
					  <RSShouldCanFuck>capable of sex is required</RSShouldCanFuck>
 | 
				
			||||||
  <RSTotalGatheredCum>Total gathered cum: </RSTotalGatheredCum>
 | 
					  <RSTotalGatheredCum>Total gathered cum: </RSTotalGatheredCum>
 | 
				
			||||||
  <RS_LostVirgin>{1} took {0}'s virginity.</RS_LostVirgin>
 | 
					  <RS_LostVirgin>{1} took {0}'s virginity.</RS_LostVirgin>
 | 
				
			||||||
  <RS_FloatMenu_CleanSelf>Gather cums on body</RS_FloatMenu_CleanSelf>
 | 
					 | 
				
			||||||
  <RS_Best_Sextype>Best sextype</RS_Best_Sextype>
 | 
					  <RS_Best_Sextype>Best sextype</RS_Best_Sextype>
 | 
				
			||||||
  <RS_Recent_Sextype>Recent sextype</RS_Recent_Sextype>
 | 
					  <RS_Recent_Sextype>Recent sextype</RS_Recent_Sextype>
 | 
				
			||||||
  <RS_Sex_Partners>Sex partners</RS_Sex_Partners>
 | 
					  <RS_Sex_Partners>Sex partners</RS_Sex_Partners>
 | 
				
			||||||
| 
						 | 
					@ -33,7 +29,6 @@
 | 
				
			||||||
  <RS_Best_Sex_Partner>Best Sex Partner</RS_Best_Sex_Partner>
 | 
					  <RS_Best_Sex_Partner>Best Sex Partner</RS_Best_Sex_Partner>
 | 
				
			||||||
  <RS_Best_Sex_Partner_ToolTip>The partner who had most satisfying sex.</RS_Best_Sex_Partner_ToolTip>
 | 
					  <RS_Best_Sex_Partner_ToolTip>The partner who had most satisfying sex.</RS_Best_Sex_Partner_ToolTip>
 | 
				
			||||||
  <RS_VirginsTaken>Taken virgins</RS_VirginsTaken>
 | 
					  <RS_VirginsTaken>Taken virgins</RS_VirginsTaken>
 | 
				
			||||||
  <RS_VirginsTaken_ToolTip>The number of partners who i taken first.</RS_VirginsTaken_ToolTip>
 | 
					 | 
				
			||||||
  <RS_TotalSexHad>Total sex had</RS_TotalSexHad>
 | 
					  <RS_TotalSexHad>Total sex had</RS_TotalSexHad>
 | 
				
			||||||
  <RS_TotalSexHad_ToolTip>Total number of sex.</RS_TotalSexHad_ToolTip>
 | 
					  <RS_TotalSexHad_ToolTip>Total number of sex.</RS_TotalSexHad_ToolTip>
 | 
				
			||||||
  <RS_Raped>Raped: </RS_Raped>
 | 
					  <RS_Raped>Raped: </RS_Raped>
 | 
				
			||||||
| 
						 | 
					@ -49,7 +44,6 @@
 | 
				
			||||||
  <RS_Interspecies>Interspecies</RS_Interspecies>
 | 
					  <RS_Interspecies>Interspecies</RS_Interspecies>
 | 
				
			||||||
  <RS_Normal>Normal</RS_Normal>
 | 
					  <RS_Normal>Normal</RS_Normal>
 | 
				
			||||||
  <RS_Necrophile>Necrophile</RS_Necrophile>
 | 
					  <RS_Necrophile>Necrophile</RS_Necrophile>
 | 
				
			||||||
  <RS_GatherCum>Gather cum</RS_GatherCum>
 | 
					 | 
				
			||||||
  <RS_SexSkill>Sex skill</RS_SexSkill>
 | 
					  <RS_SexSkill>Sex skill</RS_SexSkill>
 | 
				
			||||||
  <RS_CumAddiction>Cum addiction</RS_CumAddiction>
 | 
					  <RS_CumAddiction>Cum addiction</RS_CumAddiction>
 | 
				
			||||||
  <RS_CumAddiction_Tooltip>Addicted to cum.</RS_CumAddiction_Tooltip>
 | 
					  <RS_CumAddiction_Tooltip>Addicted to cum.</RS_CumAddiction_Tooltip>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,9 +25,7 @@
 | 
				
			||||||
	<Operation Class="PatchOperationAdd">
 | 
						<Operation Class="PatchOperationAdd">
 | 
				
			||||||
		<xpath>Defs/StatDef[defName="SexFrequency"]/parts</xpath>
 | 
							<xpath>Defs/StatDef[defName="SexFrequency"]/parts</xpath>
 | 
				
			||||||
		<value>
 | 
							<value>
 | 
				
			||||||
			<li Class="RJWSexperience.StatPart_Lust">
 | 
								<li Class="RJWSexperience.StatPart_Lust" />
 | 
				
			||||||
				<factor>1.0</factor>
 | 
					 | 
				
			||||||
			</li>
 | 
					 | 
				
			||||||
		</value>
 | 
							</value>
 | 
				
			||||||
	</Operation>
 | 
						</Operation>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using rjw;
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
using RJWSexperience.UI;
 | 
					using RJWSexperience.UI;
 | 
				
			||||||
using UnityEngine;
 | 
					using UnityEngine;
 | 
				
			||||||
using Verse;
 | 
					using Verse;
 | 
				
			||||||
| 
						 | 
					@ -7,17 +8,13 @@ namespace RJWSexperience
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	public static class Keyed
 | 
						public static class Keyed
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		public static string LustStatFactor(string value) => "LustStatFactor".Translate(value);
 | 
					 | 
				
			||||||
		public static string SlaveStatFactor(string value) => "SlaveStatFactor".Translate(value);
 | 
					 | 
				
			||||||
		public static string RS_LostVirgin(string pawn, string partner) => "RS_LostVirgin".Translate(pawn.Colorize(Color.yellow), partner.Colorize(Color.yellow));
 | 
							public static string RS_LostVirgin(string pawn, string partner) => "RS_LostVirgin".Translate(pawn.Colorize(Color.yellow), partner.Colorize(Color.yellow));
 | 
				
			||||||
		public static string RS_Sex_Info(string sextype, string sexcount) => "RS_Sex_Info".Translate(sextype, sexcount);
 | 
							public static string RS_Sex_Info(string sextype, string sexcount) => "RS_Sex_Info".Translate(sextype, sexcount);
 | 
				
			||||||
		public static string RS_SAT_AVG(string avgsat) => "RS_SAT_AVG".Translate(avgsat);
 | 
							public static string RS_SAT_AVG(string avgsat) => "RS_SAT_AVG".Translate(avgsat);
 | 
				
			||||||
		public static string RS_HadBestSexDaysAgo(string days) => "RS_HadBestSexDaysAgo".Translate(days);
 | 
							public static string RS_HadBestSexDaysAgo(string days) => "RS_HadBestSexDaysAgo".Translate(days);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static readonly string Mod_Title = "RS_Mod_Title".Translate();
 | 
							public static readonly string Mod_Title = "RS_Mod_Title".Translate();
 | 
				
			||||||
		public static readonly string SlaveStatFactorDefault = "SlaveStatFactorDefault".Translate();
 | 
					 | 
				
			||||||
		public static readonly string RSTotalGatheredCum = "RSTotalGatheredCum".Translate();
 | 
							public static readonly string RSTotalGatheredCum = "RSTotalGatheredCum".Translate();
 | 
				
			||||||
		public static readonly string RS_FloatMenu_CleanSelf = "RS_FloatMenu_CleanSelf".Translate();
 | 
					 | 
				
			||||||
		public static readonly string RS_Best_Sextype = "RS_Best_Sextype".Translate();
 | 
							public static readonly string RS_Best_Sextype = "RS_Best_Sextype".Translate();
 | 
				
			||||||
		public static readonly string RS_Recent_Sextype = "RS_Recent_Sextype".Translate();
 | 
							public static readonly string RS_Recent_Sextype = "RS_Recent_Sextype".Translate();
 | 
				
			||||||
		public static readonly string RS_Sex_Partners = "RS_Sex_Partners".Translate();
 | 
							public static readonly string RS_Sex_Partners = "RS_Sex_Partners".Translate();
 | 
				
			||||||
| 
						 | 
					@ -35,7 +32,6 @@ namespace RJWSexperience
 | 
				
			||||||
		public static readonly string RS_First_Sex_Partner_ToolTip = "RS_First_Sex_Partner_ToolTip".Translate();
 | 
							public static readonly string RS_First_Sex_Partner_ToolTip = "RS_First_Sex_Partner_ToolTip".Translate();
 | 
				
			||||||
		public static readonly string RS_Most_Sex_Partner_ToolTip = "RS_Most_Sex_Partner_ToolTip".Translate();
 | 
							public static readonly string RS_Most_Sex_Partner_ToolTip = "RS_Most_Sex_Partner_ToolTip".Translate();
 | 
				
			||||||
		public static readonly string RS_Best_Sex_Partner_ToolTip = "RS_Best_Sex_Partner_ToolTip".Translate();
 | 
							public static readonly string RS_Best_Sex_Partner_ToolTip = "RS_Best_Sex_Partner_ToolTip".Translate();
 | 
				
			||||||
		public static readonly string RS_VirginsTaken_ToolTip = "RS_VirginsTaken_ToolTip".Translate();
 | 
					 | 
				
			||||||
		public static readonly string RS_Raped = "RS_Raped".Translate();
 | 
							public static readonly string RS_Raped = "RS_Raped".Translate();
 | 
				
			||||||
		public static readonly string RS_RapedMe = "RS_RapedMe".Translate();
 | 
							public static readonly string RS_RapedMe = "RS_RapedMe".Translate();
 | 
				
			||||||
		public static readonly string RS_Sex_History = "RS_Sex_History".Translate();
 | 
							public static readonly string RS_Sex_History = "RS_Sex_History".Translate();
 | 
				
			||||||
| 
						 | 
					@ -53,7 +49,6 @@ namespace RJWSexperience
 | 
				
			||||||
		public static readonly string RS_Bestiality = "RS_Bestiality".Translate();
 | 
							public static readonly string RS_Bestiality = "RS_Bestiality".Translate();
 | 
				
			||||||
		public static readonly string RS_Interspecies = "RS_Interspecies".Translate();
 | 
							public static readonly string RS_Interspecies = "RS_Interspecies".Translate();
 | 
				
			||||||
		public static readonly string RS_Necrophile = "RS_Necrophile".Translate();
 | 
							public static readonly string RS_Necrophile = "RS_Necrophile".Translate();
 | 
				
			||||||
		public static readonly string RS_GatherCum = "RS_GatherCum".Translate();
 | 
					 | 
				
			||||||
		public static readonly string RS_SexSkill = "RS_SexSkill".Translate();
 | 
							public static readonly string RS_SexSkill = "RS_SexSkill".Translate();
 | 
				
			||||||
		public static readonly string RS_CumAddiction = "RS_CumAddiction".Translate();
 | 
							public static readonly string RS_CumAddiction = "RS_CumAddiction".Translate();
 | 
				
			||||||
		public static readonly string RS_CumAddiction_Tooltip = "RS_CumAddiction_Tooltip".Translate();
 | 
							public static readonly string RS_CumAddiction_Tooltip = "RS_CumAddiction_Tooltip".Translate();
 | 
				
			||||||
| 
						 | 
					@ -62,6 +57,7 @@ namespace RJWSexperience
 | 
				
			||||||
		public static readonly string RS_NumofTimes = "RS_NumofTimes".Translate();
 | 
							public static readonly string RS_NumofTimes = "RS_NumofTimes".Translate();
 | 
				
			||||||
		public static readonly string RS_Ago = "RS_Ago".Translate();
 | 
							public static readonly string RS_Ago = "RS_Ago".Translate();
 | 
				
			||||||
		public static readonly string RS_LastSex = "RS_LastSex".Translate();
 | 
							public static readonly string RS_LastSex = "RS_LastSex".Translate();
 | 
				
			||||||
 | 
							[MayRequireRoyalty] public static readonly string Slave = "Slave".Translate();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static readonly string TabLabelMain = "TabLabelMain".Translate();
 | 
							public static readonly string TabLabelMain = "TabLabelMain".Translate();
 | 
				
			||||||
		public static readonly string TabLabelHistory = "TabLabelHistory".Translate();
 | 
							public static readonly string TabLabelHistory = "TabLabelHistory".Translate();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										75
									
								
								RJWSexperience/RJWSexperience/LustUtility.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								RJWSexperience/RJWSexperience/LustUtility.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,75 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJWSexperience
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public static class LustUtility
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							///  ~0.023.
 | 
				
			||||||
 | 
							///  No need to calculate this every call
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							private static readonly float magicNum1 = Mathf.Log(10f) / 100;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/// <summary>
 | 
				
			||||||
 | 
							/// Transforms lust value into a stat multiplier
 | 
				
			||||||
 | 
							/// </summary>
 | 
				
			||||||
 | 
							/// <param name="lust"></param>
 | 
				
			||||||
 | 
							/// <returns>Positive value</returns>
 | 
				
			||||||
 | 
							public static float GetLustFactor(float lust)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								float effectiveLust = lust * SexperienceMod.Settings.LustEffectPower;
 | 
				
			||||||
 | 
								if (effectiveLust < 0)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									effectiveLust = Mathf.Exp((effectiveLust + 200f) * magicNum1) - 100f;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									effectiveLust = Mathf.Sqrt((effectiveLust + 25f) * 100f) - 50f;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								return 1 + (effectiveLust / 100f);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static void DrawGraph(Rect graphRect)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								List<SimpleCurveDrawInfo> curves = new List<SimpleCurveDrawInfo>();
 | 
				
			||||||
 | 
								FloatRange lustRange = new FloatRange(-300f, 300f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								SimpleCurveDrawInfo simpleCurveDrawInfo = new SimpleCurveDrawInfo
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									color = Color.yellow,
 | 
				
			||||||
 | 
									label = "Sex freq mult",
 | 
				
			||||||
 | 
									valueFormat = "x{0}",
 | 
				
			||||||
 | 
									curve = new SimpleCurve()
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								for (float lust = lustRange.min; lust <= lustRange.max; lust++)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									simpleCurveDrawInfo.curve.Add(new CurvePoint(lust, GetLustFactor(lust)), false);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								curves.Add(simpleCurveDrawInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								SimpleCurveDrawerStyle curveDrawerStyle = new SimpleCurveDrawerStyle
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									UseFixedSection = true,
 | 
				
			||||||
 | 
									FixedSection = lustRange,
 | 
				
			||||||
 | 
									UseFixedScale = true,
 | 
				
			||||||
 | 
									FixedScale = new Vector2(0f, GetLustFactor(lustRange.max)),
 | 
				
			||||||
 | 
									DrawPoints = false,
 | 
				
			||||||
 | 
									DrawBackgroundLines = true,
 | 
				
			||||||
 | 
									DrawCurveMousePoint = true,
 | 
				
			||||||
 | 
									DrawMeasures = true,
 | 
				
			||||||
 | 
									MeasureLabelsXCount = 8,
 | 
				
			||||||
 | 
									MeasureLabelsYCount = 3,
 | 
				
			||||||
 | 
									XIntegersOnly = true,
 | 
				
			||||||
 | 
									YIntegersOnly = false,
 | 
				
			||||||
 | 
									LabelX = Keyed.Lust
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								SimpleCurveDrawer.DrawCurves(graphRect, curves, curveDrawerStyle);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -59,6 +59,7 @@
 | 
				
			||||||
    <Compile Include="Cum\JobDriver_CleanSelfWithBucket.cs" />
 | 
					    <Compile Include="Cum\JobDriver_CleanSelfWithBucket.cs" />
 | 
				
			||||||
    <Compile Include="Logs\DebugLogProvider.cs" />
 | 
					    <Compile Include="Logs\DebugLogProvider.cs" />
 | 
				
			||||||
    <Compile Include="Logs\LogManager.cs" />
 | 
					    <Compile Include="Logs\LogManager.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="LustUtility.cs" />
 | 
				
			||||||
    <Compile Include="Patches\DefInjection.cs" />
 | 
					    <Compile Include="Patches\DefInjection.cs" />
 | 
				
			||||||
    <Compile Include="Patches\GetGizmos.cs" />
 | 
					    <Compile Include="Patches\GetGizmos.cs" />
 | 
				
			||||||
    <Compile Include="Recipe_HymenSurgery.cs" />
 | 
					    <Compile Include="Recipe_HymenSurgery.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ namespace RJWSexperience
 | 
				
			||||||
			int deviation = (int)Settings.MaxSexCountDeviation;
 | 
								int deviation = (int)Settings.MaxSexCountDeviation;
 | 
				
			||||||
			if (pawn.story != null)
 | 
								if (pawn.story != null)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				_ = RandomizeLust(pawn);
 | 
									float lust = RandomizeLust(pawn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				int sexableage = 0;
 | 
									int sexableage = 0;
 | 
				
			||||||
				int minsexage = 0;
 | 
									int minsexage = 0;
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ namespace RJWSexperience
 | 
				
			||||||
				if (pawn.ageTracker.AgeBiologicalYears > minsexage)
 | 
									if (pawn.ageTracker.AgeBiologicalYears > minsexage)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					sexableage = pawn.ageTracker.AgeBiologicalYears - minsexage;
 | 
										sexableage = pawn.ageTracker.AgeBiologicalYears - minsexage;
 | 
				
			||||||
					avgsex = (int)(sexableage * Settings.SexPerYear * StatPart_Lust.GetLustFactor(pawn));
 | 
										avgsex = (int)(sexableage * Settings.SexPerYear * LustUtility.GetLustFactor(lust));
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (pawn.relations != null && pawn.gender == Gender.Female)
 | 
									if (pawn.relations != null && pawn.gender == Gender.Female)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,4 @@
 | 
				
			||||||
using RimWorld;
 | 
					using RimWorld;
 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using UnityEngine;
 | 
					 | 
				
			||||||
using Verse;
 | 
					using Verse;
 | 
				
			||||||
using System.Diagnostics.CodeAnalysis;
 | 
					using System.Diagnostics.CodeAnalysis;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,14 +9,11 @@ namespace RJWSexperience
 | 
				
			||||||
	/// </summary>
 | 
						/// </summary>
 | 
				
			||||||
	public class StatPart_Lust : StatPart
 | 
						public class StatPart_Lust : StatPart
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		[SuppressMessage("Minor Code Smell", "S1104:Fields should not have public accessibility", Justification = "Field value loaded from XML")]
 | 
					 | 
				
			||||||
		public float factor;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		public override string ExplanationPart(StatRequest req)
 | 
							public override string ExplanationPart(StatRequest req)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (req.HasThing && (req.Thing is Pawn pawn))
 | 
								if (req.HasThing && (req.Thing is Pawn pawn))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return Keyed.LustStatFactor(String.Format("{0:0.##}", GetLustFactor(pawn) * factor * 100));
 | 
									return $"{Keyed.Lust.CapitalizeFirst()}: x{GetLustFactor(pawn).ToStringPercent()}";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return null;
 | 
								return null;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -26,23 +21,10 @@ namespace RJWSexperience
 | 
				
			||||||
		public override void TransformValue(StatRequest req, ref float val)
 | 
							public override void TransformValue(StatRequest req, ref float val)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (req.HasThing && (req.Thing is Pawn pawn))
 | 
								if (req.HasThing && (req.Thing is Pawn pawn))
 | 
				
			||||||
				val *= GetLustFactor(pawn) * factor;
 | 
									val *= GetLustFactor(pawn);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static float GetLustFactor(Pawn pawn)
 | 
							protected float GetLustFactor(Pawn pawn) => LustUtility.GetLustFactor(pawn.records.GetValue(VariousDefOf.Lust));
 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			float lust = pawn.records.GetValue(VariousDefOf.Lust) * SexperienceMod.Settings.LustEffectPower;
 | 
					 | 
				
			||||||
			if (lust < 0)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				lust = Mathf.Exp((lust + 200f * Mathf.Log(10f)) / 100f) - 100f;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			else
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				lust = Mathf.Sqrt(100f * (lust + 25f)) - 50f;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			return 1 + lust / 100f;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// <summary>
 | 
						/// <summary>
 | 
				
			||||||
| 
						 | 
					@ -57,9 +39,9 @@ namespace RJWSexperience
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (req.HasThing && ((req.Thing as Pawn)?.IsSlave == true))
 | 
								if (req.HasThing && ((req.Thing as Pawn)?.IsSlave == true))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				return Keyed.SlaveStatFactor(String.Format("{0:0.##}", factor * 100));
 | 
									return $"{Keyed.Slave.CapitalizeFirst()}: x{factor.ToStringPercent()}";
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return Keyed.SlaveStatFactorDefault;
 | 
								return null;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public override void TransformValue(StatRequest req, ref float val)
 | 
							public override void TransformValue(StatRequest req, ref float val)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue