mirror of
				https://github.com/amevarashi/RJW-Sexperience.git
				synced 2024-08-14 23:54:08 +00:00 
			
		
		
		
	Change VariousDefOf to RsDefOf
Fix some IDE messages
This commit is contained in:
		
							parent
							
								
									8a48d2e463
								
							
						
					
					
						commit
						67c2328ad6
					
				
					 23 changed files with 196 additions and 162 deletions
				
			
		| 
						 | 
					@ -42,8 +42,8 @@ namespace RJWSexperience // Used in Menstruation with this namespace
 | 
				
			||||||
			if (SexperienceMod.Settings.DevMode)
 | 
								if (SexperienceMod.Settings.DevMode)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				stringBuilder.AppendLine();
 | 
									stringBuilder.AppendLine();
 | 
				
			||||||
				stringBuilder.AppendLine($"[Debug] stored: {StoredStackCount}");
 | 
									stringBuilder.Append("[Debug] stored: ").Append(StoredStackCount).AppendLine();
 | 
				
			||||||
				stringBuilder.Append($"[Debug] storedDecimalRemainder: {storedDecimalRemainder}");
 | 
									stringBuilder.Append("[Debug] storedDecimalRemainder: ").Append(storedDecimalRemainder);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return stringBuilder.ToString();
 | 
								return stringBuilder.ToString();
 | 
				
			||||||
| 
						 | 
					@ -51,7 +51,7 @@ namespace RJWSexperience // Used in Menstruation with this namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public void AddCum(float amount)
 | 
							public void AddCum(float amount)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			AddCum(amount, VariousDefOf.GatheredCum);
 | 
								AddCum(amount, RsDefOf.Thing.GatheredCum);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public void AddCum(float amount, ThingDef cumDef)
 | 
							public void AddCum(float amount, ThingDef cumDef)
 | 
				
			||||||
| 
						 | 
					@ -69,7 +69,7 @@ namespace RJWSexperience // Used in Menstruation with this namespace
 | 
				
			||||||
			cum.stackCount = num;
 | 
								cum.stackCount = num;
 | 
				
			||||||
			if (cum.stackCount > 0 && !GenPlace.TryPlaceThing(cum, PositionHeld, Map, ThingPlaceMode.Direct, out Thing res))
 | 
								if (cum.stackCount > 0 && !GenPlace.TryPlaceThing(cum, PositionHeld, Map, ThingPlaceMode.Direct, out Thing res))
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				FilthMaker.TryMakeFilth(PositionHeld, Map, VariousDefOf.FilthCum, num);
 | 
									FilthMaker.TryMakeFilth(PositionHeld, Map, RsDefOf.Thing.FilthCum, num);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			storedDecimalRemainder -= num;
 | 
								storedDecimalRemainder -= num;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -125,7 +125,7 @@ namespace RJWSexperience.Cum
 | 
				
			||||||
			const float allOf = 1000f;
 | 
								const float allOf = 1000f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			log.Message($"FeedCum({pawn.NameShortColored}, {amount})");
 | 
								log.Message($"FeedCum({pawn.NameShortColored}, {amount})");
 | 
				
			||||||
			Thing cum = ThingMaker.MakeThing(VariousDefOf.GatheredCum);
 | 
								Thing cum = ThingMaker.MakeThing(RsDefOf.Thing.GatheredCum);
 | 
				
			||||||
			cum.stackCount = (int)Math.Ceiling(amount);
 | 
								cum.stackCount = (int)Math.Ceiling(amount);
 | 
				
			||||||
			log.Message($"Created a stack of {cum.stackCount} cum");
 | 
								log.Message($"Created a stack of {cum.stackCount} cum");
 | 
				
			||||||
			cum.Ingested(pawn, allOf);
 | 
								cum.Ingested(pawn, allOf);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ namespace RJWSexperience.Cum.FilterWorkers
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		public override bool Matches(Thing t)
 | 
							public override bool Matches(Thing t)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return IsCum(t) || IsFoodWithCum(t);
 | 
								return IsCum(t.def) || IsFoodWithCum(t);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,20 +10,18 @@ namespace RJWSexperience.Cum.FilterWorkers
 | 
				
			||||||
			return def.IsIngestible && def.IsProcessedFood;
 | 
								return def.IsIngestible && def.IsProcessedFood;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		protected bool IsCum(Thing t) => IsCum(t.def);
 | 
							protected bool IsCum(ThingDef t) => t == RsDefOf.Thing.GatheredCum;
 | 
				
			||||||
 | 
					 | 
				
			||||||
		protected bool IsCum(ThingDef t) => t == VariousDefOf.GatheredCum;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		protected bool IsFoodWithCum(Thing food)
 | 
							protected bool IsFoodWithCum(Thing food)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			CompIngredients compIngredients = food.TryGetComp<CompIngredients>();
 | 
								CompIngredients compIngredients = food.TryGetComp<CompIngredients>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (compIngredients == null)
 | 
								if (compIngredients?.ingredients == null)
 | 
				
			||||||
				return false;
 | 
									return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			foreach (ThingDef ingredient in compIngredients.ingredients)
 | 
								for (int i = 0; i < compIngredients.ingredients.Count; i++)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if (IsCum(ingredient))
 | 
									if (IsCum(compIngredients.ingredients[i]))
 | 
				
			||||||
					return true;
 | 
										return true;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ namespace RJWSexperience.Cum.FilterWorkers
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		public override bool Matches(Thing t)
 | 
							public override bool Matches(Thing t)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return !IsCum(t) && !IsFoodWithCum(t);
 | 
								return !IsCum(t.def) && !IsFoodWithCum(t);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,8 +12,8 @@ namespace RJWSexperience.Cum
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			int amount = ingested.stackCount * (int)unitAmount;
 | 
								int amount = ingested.stackCount * (int)unitAmount;
 | 
				
			||||||
			Logs.LogManager.GetLogger<IngestionOutcomeDoer_RecordEatenCum, Logs.DebugLogProvider>().Message($"Record {pawn.NameShortColored} eating {amount} ml of cum");
 | 
								Logs.LogManager.GetLogger<IngestionOutcomeDoer_RecordEatenCum, Logs.DebugLogProvider>().Message($"Record {pawn.NameShortColored} eating {amount} ml of cum");
 | 
				
			||||||
			pawn.records.Increment(VariousDefOf.NumofEatenCum);
 | 
								pawn.records.Increment(RsDefOf.Record.NumofEatenCum);
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.AmountofEatenCum, amount);
 | 
								pawn.records.AddTo(RsDefOf.Record.AmountofEatenCum, amount);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ namespace RJWSexperience.Cum.Interactions
 | 
				
			||||||
			if (context.Internals.Submissive.Parts.Penises.Any())
 | 
								if (context.Internals.Submissive.Parts.Penises.Any())
 | 
				
			||||||
				return GetForCumAddict(context.Internals.Dominant.Pawn);
 | 
									return GetForCumAddict(context.Internals.Dominant.Pawn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (AddictionUtility.IsAddicted(context.Internals.Submissive.Pawn, VariousDefOf.Cum))
 | 
								if (AddictionUtility.IsAddicted(context.Internals.Submissive.Pawn, RsDefOf.Chemical.Cum))
 | 
				
			||||||
				return GetForPartner();
 | 
									return GetForPartner();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return Enumerable.Empty<Weighted<LewdablePartKind>>();
 | 
								return Enumerable.Empty<Weighted<LewdablePartKind>>();
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ namespace RJWSexperience.Cum.Interactions
 | 
				
			||||||
			if (context.Internals.Dominant.Parts.Penises.Any())
 | 
								if (context.Internals.Dominant.Parts.Penises.Any())
 | 
				
			||||||
				return GetForCumAddict(context.Internals.Submissive.Pawn);
 | 
									return GetForCumAddict(context.Internals.Submissive.Pawn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (AddictionUtility.IsAddicted(context.Internals.Dominant.Pawn, VariousDefOf.Cum))
 | 
								if (AddictionUtility.IsAddicted(context.Internals.Dominant.Pawn, RsDefOf.Chemical.Cum))
 | 
				
			||||||
				return GetForPartner();
 | 
									return GetForPartner();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return Enumerable.Empty<Weighted<LewdablePartKind>>();
 | 
								return Enumerable.Empty<Weighted<LewdablePartKind>>();
 | 
				
			||||||
| 
						 | 
					@ -42,7 +42,7 @@ namespace RJWSexperience.Cum.Interactions
 | 
				
			||||||
			var log = LogManager.GetLogger<CumAddictPartKindUsageRule, DebugLogProvider>();
 | 
								var log = LogManager.GetLogger<CumAddictPartKindUsageRule, DebugLogProvider>();
 | 
				
			||||||
			log.Message($"Called for {pawn.NameShortColored}");
 | 
								log.Message($"Called for {pawn.NameShortColored}");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (!(pawn.needs?.TryGetNeed(VariousDefOf.Chemical_Cum) is Need_Chemical cumNeed))
 | 
								if (!(pawn.needs?.TryGetNeed(RsDefOf.Need.Chemical_Cum) is Need_Chemical cumNeed))
 | 
				
			||||||
				yield break;
 | 
									yield break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			log.Message($"{pawn.NameShortColored} is cum addict, current desire level: {cumNeed.CurCategory}");
 | 
								log.Message($"{pawn.NameShortColored} is cum addict, current desire level: {cumNeed.CurCategory}");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,7 +4,7 @@
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		protected override void UpdateCurStage()
 | 
							protected override void UpdateCurStage()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (pawn?.health?.hediffSet?.HasHediff(VariousDefOf.CumAddiction) ?? false)
 | 
								if (pawn?.health?.hediffSet?.HasHediff(RsDefOf.Hediff.CumAddiction) ?? false)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				SetForcedStage(def.stages.Count - 1);
 | 
									SetForcedStage(def.stages.Count - 1);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,9 +8,9 @@ namespace RJWSexperience
 | 
				
			||||||
	public static class DebugToolsSexperience
 | 
						public static class DebugToolsSexperience
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Reset pawn's record", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Reset pawn's record", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void ResetRecords(Pawn p)
 | 
							public static void ResetRecords(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Trait virgin = p.story?.traits?.GetTrait(VariousDefOf.Virgin);
 | 
								Trait virgin = p.story?.traits?.GetTrait(RsDefOf.Trait.Virgin);
 | 
				
			||||||
			if (virgin != null) p.story.traits.RemoveTrait(virgin);
 | 
								if (virgin != null) p.story.traits.RemoveTrait(virgin);
 | 
				
			||||||
			ResetRecord(p, true);
 | 
								ResetRecord(p, true);
 | 
				
			||||||
			if (ResetRecord(p, false))
 | 
								if (ResetRecord(p, false))
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,7 @@ namespace RJWSexperience
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Reset pawn's record(virgin)", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Reset pawn's record(virgin)", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void ResetRecordsZero(Pawn p)
 | 
							public static void ResetRecordsZero(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			ResetRecord(p, true);
 | 
								ResetRecord(p, true);
 | 
				
			||||||
			Virginity.TraitHandler.AddVirginTrait(p);
 | 
								Virginity.TraitHandler.AddVirginTrait(p);
 | 
				
			||||||
| 
						 | 
					@ -27,32 +27,31 @@ namespace RJWSexperience
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Reset lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Reset lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void ResetLust(Pawn p)
 | 
							public static void ResetLust(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			float lust = RecordRandomizer.RandomizeLust(p);
 | 
								float lust = RecordRandomizer.RandomizeLust(p);
 | 
				
			||||||
			MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + lust);
 | 
								MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + lust);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Set lust to 0", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Set lust to 0", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void SetLust(Pawn p)
 | 
							public static void SetLust(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			p.records.SetTo(VariousDefOf.Lust, 0);
 | 
								p.records.SetTo(RsDefOf.Record.Lust, 0);
 | 
				
			||||||
			MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: 0");
 | 
								MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: 0");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Add 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Add 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void AddLust(Pawn p)
 | 
							public static void AddLust(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			p.records.AddTo(VariousDefOf.Lust, 10);
 | 
								p.records.AddTo(RsDefOf.Record.Lust, 10);
 | 
				
			||||||
			MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust));
 | 
								MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(RsDefOf.Record.Lust));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		[DebugAction("RJW Sexperience", "Subtract 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
							[DebugAction("RJW Sexperience", "Subtract 10 to lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)]
 | 
				
			||||||
		private static void SubtractLust(Pawn p)
 | 
							public static void SubtractLust(Pawn p)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			p.records.AddTo(VariousDefOf.Lust, -10);
 | 
								p.records.AddTo(RsDefOf.Record.Lust, -10);
 | 
				
			||||||
			MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(VariousDefOf.Lust));
 | 
								MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + p.records.GetValue(RsDefOf.Record.Lust));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private static bool ResetRecord(Pawn pawn, bool allzero)
 | 
							private static bool ResetRecord(Pawn pawn, bool allzero)
 | 
				
			||||||
| 
						 | 
					@ -66,21 +65,21 @@ namespace RJWSexperience
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.Lust, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.Lust, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.NumofEatenCum, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.NumofEatenCum, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.AmountofEatenCum, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.AmountofEatenCum, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.VaginalSexCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.VaginalSexCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.AnalSexCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.AnalSexCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.OralSexCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.OralSexCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.BlowjobCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.BlowjobCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.CunnilingusCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.CunnilingusCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.GenitalCaressCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.GenitalCaressCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.HandjobCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.HandjobCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.FingeringCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.FingeringCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.FootjobCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.FootjobCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.MiscSexualBehaviorCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.MiscSexualBehaviorCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.SexPartnerCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.SexPartnerCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(VariousDefOf.OrgasmCount, 0);
 | 
									pawn.records.SetTo(RsDefOf.Record.OrgasmCount, 0);
 | 
				
			||||||
				pawn.records.SetTo(xxx.CountOfBeenRapedByAnimals, 0);
 | 
									pawn.records.SetTo(xxx.CountOfBeenRapedByAnimals, 0);
 | 
				
			||||||
				pawn.records.SetTo(xxx.CountOfBeenRapedByHumanlikes, 0);
 | 
									pawn.records.SetTo(xxx.CountOfBeenRapedByHumanlikes, 0);
 | 
				
			||||||
				pawn.records.SetTo(xxx.CountOfBeenRapedByInsects, 0);
 | 
									pawn.records.SetTo(xxx.CountOfBeenRapedByInsects, 0);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -27,7 +27,7 @@ namespace RJWSexperience
 | 
				
			||||||
		public static float GetSexStat(this Pawn pawn)
 | 
							public static float GetSexStat(this Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (xxx.is_human(pawn) && !pawn.Dead)
 | 
								if (xxx.is_human(pawn) && !pawn.Dead)
 | 
				
			||||||
				return pawn.GetStatValue(VariousDefOf.SexAbility);
 | 
									return pawn.GetStatValue(RsDefOf.Stat.SexAbility);
 | 
				
			||||||
			return 1.0f;
 | 
								return 1.0f;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +70,7 @@ namespace RJWSexperience
 | 
				
			||||||
		/// </summary>
 | 
							/// </summary>
 | 
				
			||||||
		public static bool IsVirgin(this Pawn pawn)
 | 
							public static bool IsVirgin(this Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			return pawn.records.GetValue(VariousDefOf.VaginalSexCount) == 0;
 | 
								return pawn.records.GetValue(RsDefOf.Record.VaginalSexCount) == 0;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		/// <summary>
 | 
							/// <summary>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,7 +74,7 @@ namespace RJWSexperience
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static void UpdateLust(SexProps props, float satisfaction, float baseSatisfaction)
 | 
							public static void UpdateLust(SexProps props, float satisfaction, float baseSatisfaction)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			float? lust = props.pawn.records?.GetValue(VariousDefOf.Lust);
 | 
								float? lust = props.pawn.records?.GetValue(RsDefOf.Record.Lust);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (lust == null)
 | 
								if (lust == null)
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
| 
						 | 
					@ -97,7 +97,7 @@ namespace RJWSexperience
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			LogManager.GetLogger<DebugLogProvider>("LustUtility").Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})");
 | 
								LogManager.GetLogger<DebugLogProvider>("LustUtility").Message($"{props.pawn.NameShortColored}'s lust changed by {lustDelta} (from {lust})");
 | 
				
			||||||
			props.pawn.records.AddTo(VariousDefOf.Lust, lustDelta);
 | 
								props.pawn.records.AddTo(RsDefOf.Record.Lust, lustDelta);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private static float LustIncrementFactor(float lust)
 | 
							private static float LustIncrementFactor(float lust)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,11 +20,11 @@ namespace RJWSexperience
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if (__instance.Sexprops.isRape && __instance.Sexprops.isReceiver)
 | 
									if (__instance.Sexprops.isRape && __instance.Sexprops.isReceiver)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					__instance.pawn?.skills?.Learn(VariousDefOf.Sex, 0.05f, true);
 | 
										__instance.pawn?.skills?.Learn(RsDefOf.Skill.Sex, 0.05f, true);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else
 | 
									else
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					__instance.pawn?.skills?.Learn(VariousDefOf.Sex, 0.35f, true);
 | 
										__instance.pawn?.skills?.Learn(RsDefOf.Skill.Sex, 0.35f, true);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -44,7 +44,7 @@ namespace RJWSexperience
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			LustUtility.UpdateLust(props, satisfaction, base_sat_per_fuck);
 | 
								LustUtility.UpdateLust(props, satisfaction, base_sat_per_fuck);
 | 
				
			||||||
			CumUtility.FillCumBuckets(props);
 | 
								CumUtility.FillCumBuckets(props);
 | 
				
			||||||
			props.pawn.records?.Increment(VariousDefOf.OrgasmCount);
 | 
								props.pawn.records?.Increment(RsDefOf.Record.OrgasmCount);
 | 
				
			||||||
			if (SexperienceMod.Settings.EnableSexHistory && props.hasPartner())
 | 
								if (SexperienceMod.Settings.EnableSexHistory && props.hasPartner())
 | 
				
			||||||
				props.pawn.TryGetComp<SexHistoryComp>()?.RecordSatisfaction(props.partner, props, satisfaction);
 | 
									props.pawn.TryGetComp<SexHistoryComp>()?.RecordSatisfaction(props.partner, props, satisfaction);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ namespace RJWSexperience
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		public static void Postfix(Pawn pawn)
 | 
							public static void Postfix(Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			SkillRecord sexskill = pawn.skills.GetSkill(VariousDefOf.Sex);
 | 
								SkillRecord sexskill = pawn.skills.GetSkill(RsDefOf.Skill.Sex);
 | 
				
			||||||
			if (sexskill != null)
 | 
								if (sexskill != null)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				sexskill.passion = Passion.Major;
 | 
									sexskill.passion = Passion.Major;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,11 +32,11 @@ namespace RJWSexperience
 | 
				
			||||||
			if (!pawn.relations.DirectRelationExists(PawnRelationDefOf.Parent, newMother))
 | 
								if (!pawn.relations.DirectRelationExists(PawnRelationDefOf.Parent, newMother))
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Trait virgin = newMother.story?.traits?.GetTrait(VariousDefOf.Virgin, Virginity.TraitDegree.FemaleVirgin);
 | 
								Trait virgin = newMother.story?.traits?.GetTrait(RsDefOf.Trait.Virgin, Virginity.TraitDegree.FemaleVirgin);
 | 
				
			||||||
			if (virgin != null)
 | 
								if (virgin != null)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				newMother.story.traits.RemoveTrait(virgin);
 | 
									newMother.story.traits.RemoveTrait(virgin);
 | 
				
			||||||
				newMother.story.traits.GainTrait(new Trait(VariousDefOf.Virgin, Virginity.TraitDegree.FemaleAfterSurgery));
 | 
									newMother.story.traits.GainTrait(new Trait(RsDefOf.Trait.Virgin, Virginity.TraitDegree.FemaleAfterSurgery));
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,7 +98,7 @@
 | 
				
			||||||
    <Compile Include="SexHistory\UI\UIUtility.cs" />
 | 
					    <Compile Include="SexHistory\UI\UIUtility.cs" />
 | 
				
			||||||
    <Compile Include="SexHistory\UI\SexStatusWindow.cs" />
 | 
					    <Compile Include="SexHistory\UI\SexStatusWindow.cs" />
 | 
				
			||||||
    <Compile Include="Utility.cs" />
 | 
					    <Compile Include="Utility.cs" />
 | 
				
			||||||
    <Compile Include="VariousDefOf.cs" />
 | 
					    <Compile Include="RsDefOf.cs" />
 | 
				
			||||||
    <Compile Include="Virginity\TraitDegree.cs" />
 | 
					    <Compile Include="Virginity\TraitDegree.cs" />
 | 
				
			||||||
    <Compile Include="Virginity\TraitHandler.cs" />
 | 
					    <Compile Include="Virginity\TraitHandler.cs" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,52 +58,52 @@ namespace RJWSexperience
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					case xxx.rjwSextype.Vaginal:
 | 
										case xxx.rjwSextype.Vaginal:
 | 
				
			||||||
					case xxx.rjwSextype.Scissoring:
 | 
										case xxx.rjwSextype.Scissoring:
 | 
				
			||||||
						IncreaseSameRecords(pawn, partner, VariousDefOf.VaginalSexCount);
 | 
											IncreaseSameRecords(pawn, partner, RsDefOf.Record.VaginalSexCount);
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Anal:
 | 
										case xxx.rjwSextype.Anal:
 | 
				
			||||||
						IncreaseSameRecords(pawn, partner, VariousDefOf.AnalSexCount);
 | 
											IncreaseSameRecords(pawn, partner, RsDefOf.Record.AnalSexCount);
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Oral:
 | 
										case xxx.rjwSextype.Oral:
 | 
				
			||||||
					case xxx.rjwSextype.Fellatio:
 | 
										case xxx.rjwSextype.Fellatio:
 | 
				
			||||||
						if (Genital_Helper.has_penis_fertile(giver) || Genital_Helper.has_penis_infertile(giver))
 | 
											if (Genital_Helper.has_penis_fertile(giver) || Genital_Helper.has_penis_infertile(giver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.OralSexCount, VariousDefOf.BlowjobCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.OralSexCount, RsDefOf.Record.BlowjobCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else if (Genital_Helper.has_penis_fertile(receiver) || Genital_Helper.has_penis_infertile(receiver))
 | 
											else if (Genital_Helper.has_penis_fertile(receiver) || Genital_Helper.has_penis_infertile(receiver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.BlowjobCount, VariousDefOf.OralSexCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.BlowjobCount, RsDefOf.Record.OralSexCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Sixtynine:
 | 
										case xxx.rjwSextype.Sixtynine:
 | 
				
			||||||
						IncreaseSameRecords(pawn, partner, VariousDefOf.OralSexCount);
 | 
											IncreaseSameRecords(pawn, partner, RsDefOf.Record.OralSexCount);
 | 
				
			||||||
						RecordDef recordpawn, recordpartner;
 | 
											RecordDef recordpawn, recordpartner;
 | 
				
			||||||
						if (Genital_Helper.has_penis_fertile(pawn) || Genital_Helper.has_penis_infertile(pawn))
 | 
											if (Genital_Helper.has_penis_fertile(pawn) || Genital_Helper.has_penis_infertile(pawn))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							recordpartner = VariousDefOf.BlowjobCount;
 | 
												recordpartner = RsDefOf.Record.BlowjobCount;
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else
 | 
											else
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							recordpartner = VariousDefOf.CunnilingusCount;
 | 
												recordpartner = RsDefOf.Record.CunnilingusCount;
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						if (Genital_Helper.has_penis_fertile(partner) || Genital_Helper.has_penis_infertile(partner))
 | 
											if (Genital_Helper.has_penis_fertile(partner) || Genital_Helper.has_penis_infertile(partner))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							recordpawn = VariousDefOf.BlowjobCount;
 | 
												recordpawn = RsDefOf.Record.BlowjobCount;
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else
 | 
											else
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							recordpawn = VariousDefOf.CunnilingusCount;
 | 
												recordpawn = RsDefOf.Record.CunnilingusCount;
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						IncreaseRecords(pawn, partner, recordpawn, recordpartner);
 | 
											IncreaseRecords(pawn, partner, recordpawn, recordpartner);
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Cunnilingus:
 | 
										case xxx.rjwSextype.Cunnilingus:
 | 
				
			||||||
						if (Genital_Helper.has_vagina(giver))
 | 
											if (Genital_Helper.has_vagina(giver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.OralSexCount, VariousDefOf.CunnilingusCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.OralSexCount, RsDefOf.Record.CunnilingusCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else if (Genital_Helper.has_vagina(receiver))
 | 
											else if (Genital_Helper.has_vagina(receiver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.CunnilingusCount, VariousDefOf.OralSexCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.CunnilingusCount, RsDefOf.Record.OralSexCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Masturbation:
 | 
										case xxx.rjwSextype.Masturbation:
 | 
				
			||||||
| 
						 | 
					@ -111,29 +111,29 @@ namespace RJWSexperience
 | 
				
			||||||
					case xxx.rjwSextype.Handjob:
 | 
										case xxx.rjwSextype.Handjob:
 | 
				
			||||||
						if (Genital_Helper.has_penis_fertile(giver) || Genital_Helper.has_penis_infertile(giver))
 | 
											if (Genital_Helper.has_penis_fertile(giver) || Genital_Helper.has_penis_infertile(giver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.GenitalCaressCount, VariousDefOf.HandjobCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.GenitalCaressCount, RsDefOf.Record.HandjobCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else
 | 
											else
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.HandjobCount, VariousDefOf.GenitalCaressCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.HandjobCount, RsDefOf.Record.GenitalCaressCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Fingering:
 | 
										case xxx.rjwSextype.Fingering:
 | 
				
			||||||
					case xxx.rjwSextype.Fisting:
 | 
										case xxx.rjwSextype.Fisting:
 | 
				
			||||||
						if (Genital_Helper.has_vagina(giver))
 | 
											if (Genital_Helper.has_vagina(giver))
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.GenitalCaressCount, VariousDefOf.FingeringCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.GenitalCaressCount, RsDefOf.Record.FingeringCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						else
 | 
											else
 | 
				
			||||||
						{
 | 
											{
 | 
				
			||||||
							IncreaseRecords(giver, receiver, VariousDefOf.FingeringCount, VariousDefOf.GenitalCaressCount);
 | 
												IncreaseRecords(giver, receiver, RsDefOf.Record.FingeringCount, RsDefOf.Record.GenitalCaressCount);
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					case xxx.rjwSextype.Footjob:
 | 
										case xxx.rjwSextype.Footjob:
 | 
				
			||||||
						IncreaseSameRecords(pawn, partner, VariousDefOf.FootjobCount);
 | 
											IncreaseSameRecords(pawn, partner, RsDefOf.Record.FootjobCount);
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
					default:
 | 
										default:
 | 
				
			||||||
						IncreaseSameRecords(pawn, partner, VariousDefOf.MiscSexualBehaviorCount);
 | 
											IncreaseSameRecords(pawn, partner, RsDefOf.Record.MiscSexualBehaviorCount);
 | 
				
			||||||
						break;
 | 
											break;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					@ -154,7 +154,7 @@ namespace RJWSexperience
 | 
				
			||||||
		// Moved this method back because of Menstruation
 | 
							// Moved this method back because of Menstruation
 | 
				
			||||||
		public static Building_CumBucket FindClosestBucket(this Pawn pawn)
 | 
							public static Building_CumBucket FindClosestBucket(this Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			List<Building> buckets = pawn.Map.listerBuildings.allBuildingsColonist.FindAll(x => x is Building_CumBucket bucket && bucket.StoredStackCount < VariousDefOf.GatheredCum.stackLimit);
 | 
								List<Building> buckets = pawn.Map.listerBuildings.allBuildingsColonist.FindAll(x => x is Building_CumBucket bucket && bucket.StoredStackCount < RsDefOf.Thing.GatheredCum.stackLimit);
 | 
				
			||||||
			if (buckets.NullOrEmpty())
 | 
								if (buckets.NullOrEmpty())
 | 
				
			||||||
				return null;
 | 
									return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										78
									
								
								Source/RJWSexperience/RsDefOf.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								Source/RJWSexperience/RsDefOf.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,78 @@
 | 
				
			||||||
 | 
					using RimWorld;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJWSexperience
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						public static class RsDefOf
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Record
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly RecordDef NumofEatenCum;
 | 
				
			||||||
 | 
								public static readonly RecordDef AmountofEatenCum;
 | 
				
			||||||
 | 
								public static readonly RecordDef Lust;
 | 
				
			||||||
 | 
								public static readonly RecordDef VaginalSexCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef AnalSexCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef OralSexCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef BlowjobCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef CunnilingusCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef GenitalCaressCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef HandjobCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef FingeringCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef FootjobCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef MiscSexualBehaviorCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef SexPartnerCount;
 | 
				
			||||||
 | 
								public static readonly RecordDef OrgasmCount;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Skill
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly SkillDef Sex;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Thing
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly ThingDef GatheredCum;
 | 
				
			||||||
 | 
								public static readonly ThingDef FilthCum;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Chemical
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly ChemicalDef Cum;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Need
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly NeedDef Chemical_Cum;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Trait
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly TraitDef Virgin;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class KeyBinding
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly KeyBindingDef OpenSexStatistics;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Stat
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly StatDef SexAbility;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							[DefOf]
 | 
				
			||||||
 | 
							public static class Hediff
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								public static readonly HediffDef CumAddiction;
 | 
				
			||||||
 | 
								public static readonly HediffDef CumTolerance;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -95,8 +95,8 @@ namespace RJWSexperience.SexHistory
 | 
				
			||||||
				minValue = float.MinValue;
 | 
									minValue = float.MinValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			value = Mathf.Clamp(value, minValue, float.MaxValue);
 | 
								value = Mathf.Clamp(value, minValue, float.MaxValue);
 | 
				
			||||||
			float recordvalue = pawn.records.GetValue(VariousDefOf.Lust);
 | 
								float recordvalue = pawn.records.GetValue(RsDefOf.Record.Lust);
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.Lust, value - recordvalue);
 | 
								pawn.records.AddTo(RsDefOf.Record.Lust, value - recordvalue);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return value;
 | 
								return value;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -145,7 +145,7 @@ namespace RJWSexperience.SexHistory
 | 
				
			||||||
			totalSexCount += RandomizeRecord(pawn, xxx.CountOfSexWithHumanlikes, avgsex, deviation);
 | 
								totalSexCount += RandomizeRecord(pawn, xxx.CountOfSexWithHumanlikes, avgsex, deviation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if (totalSexCount > 0)
 | 
								if (totalSexCount > 0)
 | 
				
			||||||
				pawn.records.AddTo(VariousDefOf.SexPartnerCount, Math.Max(1, Rand.Range(0, totalSexCount / 7)));
 | 
									pawn.records.AddTo(RsDefOf.Record.SexPartnerCount, Math.Max(1, Rand.Range(0, totalSexCount / 7)));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return totalSexCount;
 | 
								return totalSexCount;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -170,67 +170,67 @@ namespace RJWSexperience.SexHistory
 | 
				
			||||||
			Gender prefer = PreferredGender(pawn);
 | 
								Gender prefer = PreferredGender(pawn);
 | 
				
			||||||
			int sex = (int)(totalsex * RJWPreferenceSettings.vaginal / totalweight);
 | 
								int sex = (int)(totalsex * RJWPreferenceSettings.vaginal / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.VaginalSexCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.anal / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.anal / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.AnalSexCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.AnalSexCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.fellatio / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.fellatio / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, sex);
 | 
								if (prefer == Gender.Male) pawn.records.AddTo(RsDefOf.Record.BlowjobCount, sex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.OralSexCount, sex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.OralSexCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.cunnilingus / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.cunnilingus / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.OralSexCount, sex);
 | 
								if (prefer == Gender.Male) pawn.records.AddTo(RsDefOf.Record.OralSexCount, sex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.CunnilingusCount, sex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.CunnilingusCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.rimming / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.rimming / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.MiscSexualBehaviorCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.double_penetration / totalweight) / 2;
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.double_penetration / totalweight) / 2;
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.VaginalSexCount, sex);
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.AnalSexCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.AnalSexCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.breastjob / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.breastjob / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.MiscSexualBehaviorCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.handjob / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.handjob / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex);
 | 
								if (prefer == Gender.Male) pawn.records.AddTo(RsDefOf.Record.HandjobCount, sex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.GenitalCaressCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.fingering / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.fingering / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			if (prefer == Gender.Female) pawn.records.AddTo(VariousDefOf.FingeringCount, sex);
 | 
								if (prefer == Gender.Female) pawn.records.AddTo(RsDefOf.Record.FingeringCount, sex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.GenitalCaressCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.mutual_masturbation / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.mutual_masturbation / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex);
 | 
								if (prefer == Gender.Male) pawn.records.AddTo(RsDefOf.Record.HandjobCount, sex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.FingeringCount, sex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.FingeringCount, sex);
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.GenitalCaressCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.footjob / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.footjob / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.FootjobCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.FootjobCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.scissoring / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.scissoring / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.MiscSexualBehaviorCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			sex = (int)(totalsex * RJWPreferenceSettings.fisting / totalweight);
 | 
								sex = (int)(totalsex * RJWPreferenceSettings.fisting / totalweight);
 | 
				
			||||||
			totalsex -= sex;
 | 
								totalsex -= sex;
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex);
 | 
								pawn.records.AddTo(RsDefOf.Record.MiscSexualBehaviorCount, sex);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			pawn.records.AddTo(VariousDefOf.OralSexCount, totalsex);
 | 
								pawn.records.AddTo(RsDefOf.Record.OralSexCount, totalsex);
 | 
				
			||||||
			if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, totalsex);
 | 
								if (prefer == Gender.Male) pawn.records.AddTo(RsDefOf.Record.BlowjobCount, totalsex);
 | 
				
			||||||
			else pawn.records.AddTo(VariousDefOf.CunnilingusCount, totalsex);
 | 
								else pawn.records.AddTo(RsDefOf.Record.CunnilingusCount, totalsex);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private static Gender PreferredGender(Pawn pawn)
 | 
							private static Gender PreferredGender(Pawn pawn)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -291,7 +291,7 @@ namespace RJWSexperience.SexHistory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			SexPartnerHistoryRecord newRecord = new SexPartnerHistoryRecord(partner, partner.IsIncest(ParentPawn));
 | 
								SexPartnerHistoryRecord newRecord = new SexPartnerHistoryRecord(partner, partner.IsIncest(ParentPawn));
 | 
				
			||||||
			histories.Add(partnerId, newRecord);
 | 
								histories.Add(partnerId, newRecord);
 | 
				
			||||||
			ParentPawn.records.Increment(VariousDefOf.SexPartnerCount);
 | 
								ParentPawn.records.Increment(RsDefOf.Record.SexPartnerCount);
 | 
				
			||||||
			return newRecord;
 | 
								return newRecord;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -442,7 +442,7 @@ namespace RJWSexperience.SexHistory
 | 
				
			||||||
				defaultLabel = Keyed.RS_Sex_History,
 | 
									defaultLabel = Keyed.RS_Sex_History,
 | 
				
			||||||
				icon = HistoryUtility.HistoryIcon,
 | 
									icon = HistoryUtility.HistoryIcon,
 | 
				
			||||||
				defaultIconColor = HistoryUtility.HistoryColor,
 | 
									defaultIconColor = HistoryUtility.HistoryColor,
 | 
				
			||||||
				hotKey = VariousDefOf.OpenSexStatistics,
 | 
									hotKey = RsDefOf.KeyBinding.OpenSexStatistics,
 | 
				
			||||||
				action = () => UI.SexStatusWindow.ToggleWindow(this)
 | 
									action = () => UI.SexStatusWindow.ToggleWindow(this)
 | 
				
			||||||
			};
 | 
								};
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -163,7 +163,7 @@ namespace RJWSexperience.SexHistory.UI
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			SexTypes.Add(new BarInfo(
 | 
								SexTypes.Add(new BarInfo(
 | 
				
			||||||
				label: String.Format(Keyed.RS_Sex_Partners + ": {0} ({1})", _history.PartnerCount, Pawn.records.GetValue(VariousDefOf.SexPartnerCount)),
 | 
									label: String.Format(Keyed.RS_Sex_Partners + ": {0} ({1})", _history.PartnerCount, Pawn.records.GetValue(RsDefOf.Record.SexPartnerCount)),
 | 
				
			||||||
				fillPercent: _history.PartnerCount / 50,
 | 
									fillPercent: _history.PartnerCount / 50,
 | 
				
			||||||
				fillTexture: HistoryUtility.Partners));
 | 
									fillTexture: HistoryUtility.Partners));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -178,7 +178,7 @@ namespace RJWSexperience.SexHistory.UI
 | 
				
			||||||
				fillTexture: HistoryUtility.TotalSex,
 | 
									fillTexture: HistoryUtility.TotalSex,
 | 
				
			||||||
				labelRight: Keyed.RS_SatAVG(_history.AVGSat));
 | 
									labelRight: Keyed.RS_SatAVG(_history.AVGSat));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			float lust = Pawn.records.GetValue(VariousDefOf.Lust);
 | 
								float lust = Pawn.records.GetValue(RsDefOf.Record.Lust);
 | 
				
			||||||
			float sexDrive = GetStatValue(xxx.sex_drive_stat);
 | 
								float sexDrive = GetStatValue(xxx.sex_drive_stat);
 | 
				
			||||||
			float lustLimit = SexperienceMod.Settings.LustLimit * 3f;
 | 
								float lustLimit = SexperienceMod.Settings.LustLimit * 3f;
 | 
				
			||||||
			Lust = new BarInfo(
 | 
								Lust = new BarInfo(
 | 
				
			||||||
| 
						 | 
					@ -212,14 +212,14 @@ namespace RJWSexperience.SexHistory.UI
 | 
				
			||||||
				fillPercent: _history.IncestuousCount / 50,
 | 
									fillPercent: _history.IncestuousCount / 50,
 | 
				
			||||||
				fillTexture: HistoryUtility.Nurgle);
 | 
									fillTexture: HistoryUtility.Nurgle);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			float amountofEatenCum = Pawn.records.GetValue(VariousDefOf.AmountofEatenCum);
 | 
								float amountofEatenCum = Pawn.records.GetValue(RsDefOf.Record.AmountofEatenCum);
 | 
				
			||||||
			ConsumedCum = new BarInfo(
 | 
								ConsumedCum = new BarInfo(
 | 
				
			||||||
				label: String.Format(Keyed.RS_Cum_Swallowed + ": {0} mL, {1} " + Keyed.RS_NumofTimes, amountofEatenCum, Pawn.records.GetValue(VariousDefOf.NumofEatenCum)),
 | 
									label: String.Format(Keyed.RS_Cum_Swallowed + ": {0} mL, {1} " + Keyed.RS_NumofTimes, amountofEatenCum, Pawn.records.GetValue(RsDefOf.Record.NumofEatenCum)),
 | 
				
			||||||
				fillPercent: amountofEatenCum / 1000,
 | 
									fillPercent: amountofEatenCum / 1000,
 | 
				
			||||||
				fillTexture: Texture2D.linearGrayTexture);
 | 
									fillTexture: Texture2D.linearGrayTexture);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			Hediff cumHediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.CumAddiction)
 | 
								Hediff cumHediff = Pawn.health.hediffSet.GetFirstHediffOfDef(RsDefOf.Hediff.CumAddiction)
 | 
				
			||||||
				?? Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.CumTolerance);
 | 
									?? Pawn.health.hediffSet.GetFirstHediffOfDef(RsDefOf.Hediff.CumTolerance);
 | 
				
			||||||
			if (cumHediff != null)
 | 
								if (cumHediff != null)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				CumHediff = new BarInfo(
 | 
									CumHediff = new BarInfo(
 | 
				
			||||||
| 
						 | 
					@ -254,15 +254,15 @@ namespace RJWSexperience.SexHistory.UI
 | 
				
			||||||
				fillTexture: HistoryUtility.Satisfaction,
 | 
									fillTexture: HistoryUtility.Satisfaction,
 | 
				
			||||||
				tooltip: GetStatTooltip(xxx.sex_satisfaction, sexSatisfaction));
 | 
									tooltip: GetStatTooltip(xxx.sex_satisfaction, sexSatisfaction));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			SkillRecord skill = Pawn.skills?.GetSkill(VariousDefOf.Sex);
 | 
								SkillRecord skill = Pawn.skills?.GetSkill(RsDefOf.Skill.Sex);
 | 
				
			||||||
			float sexSkillLevel = skill?.Level ?? 0f;
 | 
								float sexSkillLevel = skill?.Level ?? 0f;
 | 
				
			||||||
			float sexStat = Pawn.GetSexStat();
 | 
								float sexStat = Pawn.GetSexStat();
 | 
				
			||||||
			SexSkill = new BarInfo(
 | 
								SexSkill = new BarInfo(
 | 
				
			||||||
				label: $"{Keyed.RS_SexSkill}: {sexSkillLevel}, {skill?.xpSinceLastLevel / skill?.XpRequiredForLevelUp:P2}",
 | 
									label: $"{Keyed.RS_SexSkill}: {sexSkillLevel}, {skill?.xpSinceLastLevel / skill?.XpRequiredForLevelUp:P2}",
 | 
				
			||||||
				fillPercent: sexSkillLevel / 20,
 | 
									fillPercent: sexSkillLevel / 20,
 | 
				
			||||||
				fillTexture: HistoryUtility.Tzeentch,
 | 
									fillTexture: HistoryUtility.Tzeentch,
 | 
				
			||||||
				tooltip: GetStatTooltip(VariousDefOf.SexAbility, sexStat),
 | 
									tooltip: GetStatTooltip(RsDefOf.Stat.SexAbility, sexStat),
 | 
				
			||||||
				labelRight: VariousDefOf.SexAbility.LabelCap + ": " + sexStat.ToStringPercent(),
 | 
									labelRight: RsDefOf.Stat.SexAbility.LabelCap + ": " + sexStat.ToStringPercent(),
 | 
				
			||||||
				border: HistoryUtility.GetPassionBG(skill?.passion));
 | 
									border: HistoryUtility.GetPassionBG(skill?.passion));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -294,7 +294,7 @@ namespace RJWSexperience.SexHistory.UI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private void UpdateVirginAndSexuality()
 | 
							private void UpdateVirginAndSexuality()
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Trait virginity = Pawn.story?.traits?.GetTrait(VariousDefOf.Virgin);
 | 
								Trait virginity = Pawn.story?.traits?.GetTrait(RsDefOf.Trait.Virgin);
 | 
				
			||||||
			if (virginity != null && virginity.Degree != Virginity.TraitDegree.FemaleAfterSurgery)
 | 
								if (virginity != null && virginity.Degree != Virginity.TraitDegree.FemaleAfterSurgery)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				VirginLabel = virginity.Label;
 | 
									VirginLabel = virginity.Label;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ namespace RJWSexperience
 | 
				
			||||||
				val *= GetLustFactor(pawn);
 | 
									val *= GetLustFactor(pawn);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		protected float GetLustFactor(Pawn pawn) => LustUtility.GetLustFactor(pawn.records.GetValue(VariousDefOf.Lust));
 | 
							protected float GetLustFactor(Pawn pawn) => LustUtility.GetLustFactor(pawn.records.GetValue(RsDefOf.Record.Lust));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/// <summary>
 | 
						/// <summary>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,37 +0,0 @@
 | 
				
			||||||
using RimWorld;
 | 
					 | 
				
			||||||
using Verse;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
namespace RJWSexperience
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	[DefOf]
 | 
					 | 
				
			||||||
	public static class VariousDefOf
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		public static readonly RecordDef NumofEatenCum;
 | 
					 | 
				
			||||||
		public static readonly RecordDef AmountofEatenCum;
 | 
					 | 
				
			||||||
		public static readonly RecordDef Lust;
 | 
					 | 
				
			||||||
		public static readonly RecordDef VaginalSexCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef AnalSexCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef OralSexCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef BlowjobCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef CunnilingusCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef GenitalCaressCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef HandjobCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef FingeringCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef FootjobCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef MiscSexualBehaviorCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef SexPartnerCount;
 | 
					 | 
				
			||||||
		public static readonly RecordDef OrgasmCount;
 | 
					 | 
				
			||||||
		public static readonly SkillDef Sex;
 | 
					 | 
				
			||||||
		public static readonly ThingDef CumBucket;
 | 
					 | 
				
			||||||
		public static readonly ThingDef GatheredCum;
 | 
					 | 
				
			||||||
		public static readonly ThingDef FilthCum;
 | 
					 | 
				
			||||||
		public static readonly ChemicalDef Cum;
 | 
					 | 
				
			||||||
		public static readonly NeedDef Chemical_Cum;
 | 
					 | 
				
			||||||
		public static readonly TraitDef Virgin;
 | 
					 | 
				
			||||||
		public static readonly KeyBindingDef OpenSexStatistics;
 | 
					 | 
				
			||||||
		public static readonly StatDef SexAbility;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		public static readonly HediffDef CumAddiction;
 | 
					 | 
				
			||||||
		public static readonly HediffDef CumTolerance;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -26,14 +26,10 @@ namespace RJWSexperience.Virginity
 | 
				
			||||||
			if (billDoer == null)
 | 
								if (billDoer == null)
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
 | 
								TaleRecorder.RecordTale(TaleDefOf.DidSurgery, billDoer, pawn);
 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				billDoer,
 | 
					 | 
				
			||||||
				pawn
 | 
					 | 
				
			||||||
			});
 | 
					 | 
				
			||||||
			TraitHandler.AddVirginTrait(pawn);
 | 
								TraitHandler.AddVirginTrait(pawn);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		private static bool HasHymen(Pawn pawn) => pawn.story?.traits?.GetTrait(VariousDefOf.Virgin)?.Degree > 0;
 | 
							private static bool HasHymen(Pawn pawn) => pawn.story?.traits?.GetTrait(RsDefOf.Trait.Virgin)?.Degree > 0;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,7 @@ namespace RJWSexperience.Virginity
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				if (Rand.Chance(hymenSurgeryChance))
 | 
									if (Rand.Chance(hymenSurgeryChance))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					Trait virgin = new Trait(VariousDefOf.Virgin, TraitDegree.FemaleAfterSurgery, true);
 | 
										Trait virgin = new Trait(RsDefOf.Trait.Virgin, TraitDegree.FemaleAfterSurgery, true);
 | 
				
			||||||
					pawn.story.traits.GainTrait(virgin);
 | 
										pawn.story.traits.GainTrait(virgin);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
| 
						 | 
					@ -36,19 +36,19 @@ namespace RJWSexperience.Virginity
 | 
				
			||||||
				int degree = TraitDegree.MaleVirgin;
 | 
									int degree = TraitDegree.MaleVirgin;
 | 
				
			||||||
				if (pawn.gender == Gender.Female)
 | 
									if (pawn.gender == Gender.Female)
 | 
				
			||||||
					degree = TraitDegree.FemaleVirgin;
 | 
										degree = TraitDegree.FemaleVirgin;
 | 
				
			||||||
				Trait virgin = new Trait(VariousDefOf.Virgin, degree, true);
 | 
									Trait virgin = new Trait(RsDefOf.Trait.Virgin, degree, true);
 | 
				
			||||||
				pawn.story.traits.GainTrait(virgin);
 | 
									pawn.story.traits.GainTrait(virgin);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (pawn.gender == Gender.Female)
 | 
								else if (pawn.gender == Gender.Female)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				Trait virgin = new Trait(VariousDefOf.Virgin, TraitDegree.FemaleAfterSurgery, true);
 | 
									Trait virgin = new Trait(RsDefOf.Trait.Virgin, TraitDegree.FemaleAfterSurgery, true);
 | 
				
			||||||
				pawn.story.traits.GainTrait(virgin);
 | 
									pawn.story.traits.GainTrait(virgin);
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static int? RemoveVirginTrait(Pawn pawn)
 | 
							public static int? RemoveVirginTrait(Pawn pawn)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Trait virgin = pawn.story?.traits?.GetTrait(VariousDefOf.Virgin);
 | 
								Trait virgin = pawn.story?.traits?.GetTrait(RsDefOf.Trait.Virgin);
 | 
				
			||||||
			if (virgin == null)
 | 
								if (virgin == null)
 | 
				
			||||||
				return null;
 | 
									return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue