From dc2a90599a63ec2bb9475fed400d0913ca393612 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Wed, 2 Mar 2022 18:15:22 +0500 Subject: [PATCH] Move all record randomization code to separate class --- Assemblies/RJWSexperience.dll | Bin 81920 -> 80896 bytes RJWSexperience/RJWSexperience/DebugAction.cs | 4 +- .../RJWSexperience/Patches/Rimworld_Patch.cs | 180 ++++------------ .../RJWSexperience/RJWSexperience.csproj | 1 + RJWSexperience/RJWSexperience/RJWUtility.cs | 109 +--------- .../SexHistory/RecordRandomizer.cs | 196 ++++++++++++++++++ RJWSexperience/RJWSexperience/StatParts.cs | 111 +++++----- RJWSexperience/RJWSexperience/Utility.cs | 126 +---------- .../Assemblies/RJWSexperience.Ideology.dll | Bin 48128 -> 48128 bytes 9 files changed, 303 insertions(+), 424 deletions(-) create mode 100644 RJWSexperience/RJWSexperience/SexHistory/RecordRandomizer.cs diff --git a/Assemblies/RJWSexperience.dll b/Assemblies/RJWSexperience.dll index a49a3808831f20085289e4d14a4e15285e5da915..0774f2e6321451c40152958f2db938a466349931 100644 GIT binary patch literal 80896 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

4JO;0Uy4I*iD(KnLGvH#5j;ojvYI_auir*$$nG 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 E13n;t5&!@I diff --git a/RJWSexperience/RJWSexperience/DebugAction.cs b/RJWSexperience/RJWSexperience/DebugAction.cs index 901b5ac..decf105 100644 --- a/RJWSexperience/RJWSexperience/DebugAction.cs +++ b/RJWSexperience/RJWSexperience/DebugAction.cs @@ -33,9 +33,7 @@ namespace RJWSexperience [DebugAction("RJW Sexperience", "Reset lust", false, false, actionType = DebugActionType.ToolMapForPawns, allowedGameStates = AllowedGameStates.PlayingOnMap)] private static void ResetLust(Pawn p) { - float lust; - if (xxx.is_nympho(p)) lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, 0); - else lust = p.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, float.MinValue); + float lust = RecordRandomizer.RandomizeLust(p); MoteMaker.ThrowText(p.TrueCenter(), p.Map, "Lust: " + lust); } diff --git a/RJWSexperience/RJWSexperience/Patches/Rimworld_Patch.cs b/RJWSexperience/RJWSexperience/Patches/Rimworld_Patch.cs index 76dd07e..9700f47 100644 --- a/RJWSexperience/RJWSexperience/Patches/Rimworld_Patch.cs +++ b/RJWSexperience/RJWSexperience/Patches/Rimworld_Patch.cs @@ -1,150 +1,52 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using HarmonyLib; +using HarmonyLib; using RimWorld; -using Verse; using rjw; +using System; +using System.Collections.Generic; using UnityEngine; - - - +using Verse; namespace RJWSexperience { - [HarmonyPatch(typeof(PawnGenerator), "GeneratePawn", new Type[] { typeof(PawnGenerationRequest) })] - public static class Rimworld_Patch_GeneratePawn - { - public static void Postfix(PawnGenerationRequest request, ref Pawn __result) - { - if (Configurations.EnableRecordRandomizer && __result != null && !request.Newborn && xxx.is_human(__result)) - { - int avgsex = -500; - bool isvirgin = Rand.Chance(Configurations.VirginRatio); - int totalsex = 0; - int totalbirth = 0; - int deviation = (int)Configurations.MaxSexCountDeviation; - if (__result.story != null) - { - float lust; - if (xxx.is_nympho(__result)) lust = __result.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, 0); - else lust = __result.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, float.MinValue); + [HarmonyPatch(typeof(PawnGenerator), "GeneratePawn", new Type[] { typeof(PawnGenerationRequest) })] + public static class Rimworld_Patch_GeneratePawn + { + public static void Postfix(PawnGenerationRequest request, ref Pawn __result) + { + if (Configurations.EnableRecordRandomizer && __result != null && !request.Newborn && xxx.is_human(__result)) + { + RecordRandomizer.Randomize(__result); + } + __result.AddVirginTrait(); + } + } - int sexableage = 0; - int minsexage = 0; - if (Configurations.MinSexableFromLifestage) - minsexage = (int)__result.RaceProps.lifeStageAges.Find(x => x.def.reproductive).minAge; - else - minsexage = (int)(__result.RaceProps.lifeExpectancy * Configurations.MinSexablePercent); + [HarmonyPatch(typeof(FloatMenuMakerMap), "AddHumanlikeOrders")] + public class HumanlikeOrder_Patch + { + public static void Postfix(Vector3 clickPos, Pawn pawn, List opts) + { + var targets = GenUI.TargetsAt(clickPos, TargetingParameters.ForBuilding()); - if (__result.ageTracker.AgeBiologicalYears > minsexage) - { - sexableage = __result.ageTracker.AgeBiologicalYears - minsexage; - avgsex = (int)(sexableage * Configurations.SexPerYear * __result.LustFactor()); - } + if (pawn.health.hediffSet.HasHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake)) + foreach (LocalTargetInfo t in targets) + { + if (t.Thing is Building_CumBucket building) + { + opts.AddDistinct(MakeMenu(pawn, building)); + break; + } + } + } + public static FloatMenuOption MakeMenu(Pawn pawn, LocalTargetInfo target) + { + FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Keyed.RS_FloatMenu_CleanSelf, delegate () + { + pawn.jobs.TryTakeOrderedJob(new Verse.AI.Job(VariousDefOf.CleanSelfwithBucket, null, target, target.Cell)); + }, MenuOptionPriority.Low), pawn, target); - if (__result.relations != null && __result.gender == Gender.Female) - { - totalbirth += __result.relations.ChildrenCount; - totalsex += totalbirth; - __result.records?.AddTo(xxx.CountOfSexWithHumanlikes, totalbirth); - __result.records?.SetTo(xxx.CountOfBirthHuman, totalbirth); - if (totalbirth > 0) isvirgin = false; - } - if (!isvirgin) - { - if (xxx.is_rapist(__result)) - { - if (xxx.is_zoophile(__result)) - { - if (__result.Has(Quirk.ChitinLover)) totalsex += __result.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, deviation); - else totalsex += __result.RecordRandomizer(xxx.CountOfRapedAnimals, avgsex, deviation); - } - else totalsex += __result.RecordRandomizer(xxx.CountOfRapedHumanlikes, avgsex, deviation); - avgsex /= 8; - } - - if (xxx.is_zoophile(__result)) - { - if (__result.Has(Quirk.ChitinLover)) totalsex += __result.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, deviation); - else totalsex += __result.RecordRandomizer(xxx.CountOfSexWithAnimals, avgsex, deviation); - avgsex /= 10; - } - else if (xxx.is_necrophiliac(__result)) - { - totalsex += __result.RecordRandomizer(xxx.CountOfSexWithCorpse, avgsex, deviation); - avgsex /= 4; - } - - if (__result.IsSlave) - { - totalsex += __result.RecordRandomizer(xxx.CountOfBeenRapedByAnimals, Rand.Range(-50, 10), Rand.Range(0, 10) * sexableage); - totalsex += __result.RecordRandomizer(xxx.CountOfBeenRapedByHumanlikes, 0, Rand.Range(0, 100) * sexableage); - } - - - totalsex += __result.RecordRandomizer(xxx.CountOfSexWithHumanlikes, avgsex, deviation); - - if (totalsex > 0) __result.records.AddTo(VariousDefOf.SexPartnerCount, Math.Max(1, Rand.Range(0, totalsex/7))); - } - } - __result.records?.SetTo(xxx.CountOfSex, totalsex); - RJWUtility.GenerateSextypeRecords(__result, totalsex); - } - if (__result.story?.traits != null) - { - if (__result.IsVirgin()) - { - int degree = 0; - if (__result.gender == Gender.Female) degree = 2; - Trait virgin = new Trait(VariousDefOf.Virgin, degree ,true); - __result.story.traits.GainTrait(virgin); - } - else if (__result.gender == Gender.Female && Rand.Chance(0.05f)) - { - Trait virgin = new Trait(VariousDefOf.Virgin, 1, true); - __result.story.traits.GainTrait(virgin); - } - } - } - } - - - - [HarmonyPatch(typeof(FloatMenuMakerMap), "AddHumanlikeOrders")] - public class HumanlikeOrder_Patch - { - public static void Postfix(Vector3 clickPos, Pawn pawn, List opts) - { - var targets = GenUI.TargetsAt(clickPos, TargetingParameters.ForBuilding()); - - if (pawn.health.hediffSet.HasHediff(RJW_SemenoOverlayHediffDefOf.Hediff_Bukkake)) - foreach (LocalTargetInfo t in targets) - { - Building building = t.Thing as Building; - if (building != null) - { - if (building is Building_CumBucket) - { - opts.AddDistinct(MakeMenu(pawn, building)); - break; - } - } - } - } - - public static FloatMenuOption MakeMenu(Pawn pawn, LocalTargetInfo target) - { - FloatMenuOption option = FloatMenuUtility.DecoratePrioritizedTask(new FloatMenuOption(Keyed.RS_FloatMenu_CleanSelf, delegate () - { - pawn.jobs.TryTakeOrderedJob(new Verse.AI.Job(VariousDefOf.CleanSelfwithBucket, null, target, target.Cell)); - }, MenuOptionPriority.Low), pawn, target); - - return option; - } - } - + return option; + } + } } diff --git a/RJWSexperience/RJWSexperience/RJWSexperience.csproj b/RJWSexperience/RJWSexperience/RJWSexperience.csproj index e93b41e..113f6ea 100644 --- a/RJWSexperience/RJWSexperience/RJWSexperience.csproj +++ b/RJWSexperience/RJWSexperience/RJWSexperience.csproj @@ -74,6 +74,7 @@ + diff --git a/RJWSexperience/RJWSexperience/RJWUtility.cs b/RJWSexperience/RJWSexperience/RJWUtility.cs index aeec7a1..05d50ad 100644 --- a/RJWSexperience/RJWSexperience/RJWUtility.cs +++ b/RJWSexperience/RJWSexperience/RJWUtility.cs @@ -35,10 +35,9 @@ namespace RJWSexperience /// public static bool IsVirgin(this Pawn pawn) { - if (pawn.records.GetValue(VariousDefOf.VaginalSexCount) == 0) return true; - return false; - } - public static bool HasHymen(this Pawn pawn) + return pawn.records.GetValue(VariousDefOf.VaginalSexCount) == 0; + } + public static bool HasHymen(this Pawn pawn) { Trait virgin = pawn.story?.traits?.GetTrait(VariousDefOf.Virgin); if (virgin != null) @@ -132,10 +131,8 @@ namespace RJWSexperience DetermineGiversAndReceivers(props, out Pawn giver, out Pawn receiver); - if (partner != null) { - switch (sextype) { case xxx.rjwSextype.Vaginal: @@ -151,7 +148,7 @@ namespace RJWSexperience { IncreaseRecords(giver, receiver, VariousDefOf.OralSexCount, VariousDefOf.BlowjobCount); } - else if (Genital_Helper.has_penis_infertile(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); } @@ -251,90 +248,6 @@ namespace RJWSexperience partner.records?.AddTo(recordforpartner, 1); } - public static void GenerateSextypeRecords(Pawn pawn, int totalsex) - { - float totalweight = - RJWPreferenceSettings.vaginal + - RJWPreferenceSettings.anal + - RJWPreferenceSettings.fellatio + - RJWPreferenceSettings.cunnilingus + - RJWPreferenceSettings.rimming + - RJWPreferenceSettings.double_penetration + - RJWPreferenceSettings.breastjob + - RJWPreferenceSettings.handjob + - RJWPreferenceSettings.mutual_masturbation + - RJWPreferenceSettings.fingering + - RJWPreferenceSettings.footjob + - RJWPreferenceSettings.scissoring + - RJWPreferenceSettings.fisting + - RJWPreferenceSettings.sixtynine; - Gender prefer = pawn.PreferGender(); - int sex = (int)(totalsex * RJWPreferenceSettings.vaginal / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.anal / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.AnalSexCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.fellatio / totalweight); - totalsex -= sex; - if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, sex); - else pawn.records.AddTo(VariousDefOf.OralSexCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.cunnilingus / totalweight); - totalsex -= sex; - if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.OralSexCount, sex); - else pawn.records.AddTo(VariousDefOf.CunnilingusCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.rimming / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.double_penetration / totalweight) / 2; - totalsex -= sex; - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex); - pawn.records.AddTo(VariousDefOf.AnalSexCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.breastjob / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.handjob / totalweight); - totalsex -= sex; - if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex); - else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.fingering / totalweight); - totalsex -= sex; - if (prefer == Gender.Female) pawn.records.AddTo(VariousDefOf.FingeringCount, sex); - else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.mutual_masturbation / totalweight); - totalsex -= sex; - if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex); - else pawn.records.AddTo(VariousDefOf.FingeringCount, sex); - pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.footjob / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.FootjobCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.scissoring / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); - - sex = (int)(totalsex * RJWPreferenceSettings.fisting / totalweight); - totalsex -= sex; - pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); - - pawn.records.AddTo(VariousDefOf.OralSexCount, totalsex); - if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, totalsex); - else pawn.records.AddTo(VariousDefOf.CunnilingusCount, totalsex); - - } - public static Gender PreferGender(this Pawn pawn) { if (pawn.gender == Gender.Male) @@ -349,18 +262,6 @@ namespace RJWSexperience } } - public static bool GetRapist(this SexProps props, out Pawn rapist) - { - if (!props.isRape) - { - rapist = null; - return false; - } - - rapist = props.pawn; - return true; - } - public static bool IsBestiality(this SexProps props) { if (props.partner != null) @@ -426,7 +327,5 @@ namespace RJWSexperience } } } - - } } diff --git a/RJWSexperience/RJWSexperience/SexHistory/RecordRandomizer.cs b/RJWSexperience/RJWSexperience/SexHistory/RecordRandomizer.cs new file mode 100644 index 0000000..5bf0c69 --- /dev/null +++ b/RJWSexperience/RJWSexperience/SexHistory/RecordRandomizer.cs @@ -0,0 +1,196 @@ +using rjw; +using System; +using Verse; +using RimWorld; +using UnityEngine; + +namespace RJWSexperience +{ + public static class RecordRandomizer + { + public static void Randomize(Pawn pawn) + { + int avgsex = -500; + bool isvirgin = Rand.Chance(Configurations.VirginRatio); + int totalsex = 0; + int totalbirth = 0; + int deviation = (int)Configurations.MaxSexCountDeviation; + if (pawn.story != null) + { + _ = RandomizeLust(pawn); + + int sexableage = 0; + int minsexage = 0; + if (Configurations.MinSexableFromLifestage) + minsexage = (int)pawn.RaceProps.lifeStageAges.Find(x => x.def.reproductive).minAge; + else + minsexage = (int)(pawn.RaceProps.lifeExpectancy * Configurations.MinSexablePercent); + + if (pawn.ageTracker.AgeBiologicalYears > minsexage) + { + sexableage = pawn.ageTracker.AgeBiologicalYears - minsexage; + avgsex = (int)(sexableage * Configurations.SexPerYear * StatPart_Lust.GetLustFactor(pawn)); + } + + if (pawn.relations != null && pawn.gender == Gender.Female) + { + totalbirth += pawn.relations.ChildrenCount; + totalsex += totalbirth; + pawn.records?.AddTo(xxx.CountOfSexWithHumanlikes, totalbirth); + pawn.records?.SetTo(xxx.CountOfBirthHuman, totalbirth); + if (totalbirth > 0) isvirgin = false; + } + if (!isvirgin) + { + if (xxx.is_rapist(pawn)) + { + if (xxx.is_zoophile(pawn)) + { + if (pawn.Has(Quirk.ChitinLover)) totalsex += RandomizeRecord(pawn, xxx.CountOfRapedInsects, avgsex, deviation); + else totalsex += RandomizeRecord(pawn, xxx.CountOfRapedAnimals, avgsex, deviation); + } + else + { + totalsex += RandomizeRecord(pawn, xxx.CountOfRapedHumanlikes, avgsex, deviation); + } + + avgsex /= 8; + } + + if (xxx.is_zoophile(pawn)) + { + if (pawn.Has(Quirk.ChitinLover)) totalsex += RandomizeRecord(pawn, xxx.CountOfRapedInsects, avgsex, deviation); + else totalsex += RandomizeRecord(pawn, xxx.CountOfSexWithAnimals, avgsex, deviation); + avgsex /= 10; + } + else if (xxx.is_necrophiliac(pawn)) + { + totalsex += RandomizeRecord(pawn, xxx.CountOfSexWithCorpse, avgsex, deviation); + avgsex /= 4; + } + + if (pawn.IsSlave) + { + totalsex += RandomizeRecord(pawn, xxx.CountOfBeenRapedByAnimals, Rand.Range(-50, 10), Rand.Range(0, 10) * sexableage); + totalsex += RandomizeRecord(pawn, xxx.CountOfBeenRapedByHumanlikes, 0, Rand.Range(0, 100) * sexableage); + } + + totalsex += RandomizeRecord(pawn, xxx.CountOfSexWithHumanlikes, avgsex, deviation); + + if (totalsex > 0) pawn.records.AddTo(VariousDefOf.SexPartnerCount, Math.Max(1, Rand.Range(0, totalsex / 7))); + } + } + pawn.records?.SetTo(xxx.CountOfSex, totalsex); + GenerateSextypeRecords(pawn, totalsex); + } + + public static float RandomizeLust(Pawn pawn) + { + float value = Utility.RandGaussianLike(Configurations.AvgLust - Configurations.MaxLustDeviation, Configurations.AvgLust + Configurations.MaxLustDeviation); + float minValue; + + if (xxx.is_nympho(pawn)) + minValue = 0; + else + minValue = float.MinValue; + + value = Mathf.Clamp(value, minValue, float.MaxValue); + float recordvalue = pawn.records.GetValue(VariousDefOf.Lust); + pawn.records.AddTo(VariousDefOf.Lust, value - recordvalue); + + return value; + } + + private static int RandomizeRecord(Pawn pawn, RecordDef record, int avg, int dist, int min = 0, int max = int.MaxValue) + { + int value = (int)Mathf.Clamp(Utility.RandGaussianLike(avg - dist, avg + dist), min, max); + int recordvalue = pawn.records.GetAsInt(record); + pawn.records.AddTo(record, value - recordvalue); + + return value; + } + + private static void GenerateSextypeRecords(Pawn pawn, int totalsex) + { + float totalweight = + RJWPreferenceSettings.vaginal + + RJWPreferenceSettings.anal + + RJWPreferenceSettings.fellatio + + RJWPreferenceSettings.cunnilingus + + RJWPreferenceSettings.rimming + + RJWPreferenceSettings.double_penetration + + RJWPreferenceSettings.breastjob + + RJWPreferenceSettings.handjob + + RJWPreferenceSettings.mutual_masturbation + + RJWPreferenceSettings.fingering + + RJWPreferenceSettings.footjob + + RJWPreferenceSettings.scissoring + + RJWPreferenceSettings.fisting + + RJWPreferenceSettings.sixtynine; + Gender prefer = pawn.PreferGender(); + int sex = (int)(totalsex * RJWPreferenceSettings.vaginal / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.anal / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.AnalSexCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.fellatio / totalweight); + totalsex -= sex; + if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, sex); + else pawn.records.AddTo(VariousDefOf.OralSexCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.cunnilingus / totalweight); + totalsex -= sex; + if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.OralSexCount, sex); + else pawn.records.AddTo(VariousDefOf.CunnilingusCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.rimming / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.double_penetration / totalweight) / 2; + totalsex -= sex; + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.VaginalSexCount, sex); + pawn.records.AddTo(VariousDefOf.AnalSexCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.breastjob / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.handjob / totalweight); + totalsex -= sex; + if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex); + else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.fingering / totalweight); + totalsex -= sex; + if (prefer == Gender.Female) pawn.records.AddTo(VariousDefOf.FingeringCount, sex); + else pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.mutual_masturbation / totalweight); + totalsex -= sex; + if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.HandjobCount, sex); + else pawn.records.AddTo(VariousDefOf.FingeringCount, sex); + pawn.records.AddTo(VariousDefOf.GenitalCaressCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.footjob / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.FootjobCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.scissoring / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); + + sex = (int)(totalsex * RJWPreferenceSettings.fisting / totalweight); + totalsex -= sex; + pawn.records.AddTo(VariousDefOf.MiscSexualBehaviorCount, sex); + + pawn.records.AddTo(VariousDefOf.OralSexCount, totalsex); + if (prefer == Gender.Male) pawn.records.AddTo(VariousDefOf.BlowjobCount, totalsex); + else pawn.records.AddTo(VariousDefOf.CunnilingusCount, totalsex); + } + } +} diff --git a/RJWSexperience/RJWSexperience/StatParts.cs b/RJWSexperience/RJWSexperience/StatParts.cs index 0f0b395..b387fa2 100644 --- a/RJWSexperience/RJWSexperience/StatParts.cs +++ b/RJWSexperience/RJWSexperience/StatParts.cs @@ -1,65 +1,70 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using rjw; -using RimWorld; +using RimWorld; +using System; +using UnityEngine; using Verse; - namespace RJWSexperience { - public class StatPart_Lust : StatPart - { - public float factor; + ///

+ /// Lust changes SexFrequency stat + /// + public class StatPart_Lust : StatPart + { + public float factor; // Value is loaded from XML - public override string ExplanationPart(StatRequest req) - { - Pawn pawn = req.Thing as Pawn; - return Keyed.LustStatFactor(String.Format("{0:0.##}", pawn.LustFactor() * factor * 100)); + public override string ExplanationPart(StatRequest req) + { + if (req.HasThing && (req.Thing is Pawn pawn)) + { + return Keyed.LustStatFactor(String.Format("{0:0.##}", GetLustFactor(pawn) * factor * 100)); + } + return null; + } - } + public override void TransformValue(StatRequest req, ref float val) + { + if (req.HasThing && (req.Thing is Pawn pawn)) + val *= GetLustFactor(pawn) * factor; + } - public override void TransformValue(StatRequest req, ref float val) - { - Pawn pawn = req.Thing as Pawn; - if (pawn != null) val *= pawn.LustFactor() * factor; - } + public static float GetLustFactor(Pawn pawn) + { + float lust = pawn.records.GetValue(VariousDefOf.Lust) * Configurations.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; + } + } + /// + /// Make slaves more vulnurable + /// + public class StatPart_Slave : StatPart + { + public float factor; // Value is loaded from XML - public class StatPart_Slave : StatPart - { - public float factor; - public override string ExplanationPart(StatRequest req) - { - float fact = factor * 100; - Pawn pawn = req.Thing as Pawn; - if (pawn != null) - { - if (pawn.IsSlave) - { - return Keyed.SlaveStatFactor(String.Format("{0:0.##}", fact)); - } - } - return Keyed.SlaveStatFactorDefault; - } - - public override void TransformValue(StatRequest req, ref float val) - { - Pawn pawn = req.Thing as Pawn; - if (pawn != null) - { - if (pawn.IsSlave) - { - val *= factor; - } - } - - } - } - + public override string ExplanationPart(StatRequest req) + { + if (req.HasThing && ((req.Thing as Pawn)?.IsSlave == true)) + { + return Keyed.SlaveStatFactor(String.Format("{0:0.##}", factor * 100)); + } + return Keyed.SlaveStatFactorDefault; + } + public override void TransformValue(StatRequest req, ref float val) + { + if (req.HasThing && ((req.Thing as Pawn)?.IsSlave == true)) + { + val *= factor; + } + } + } } diff --git a/RJWSexperience/RJWSexperience/Utility.cs b/RJWSexperience/RJWSexperience/Utility.cs index 2cabef1..a83c01a 100644 --- a/RJWSexperience/RJWSexperience/Utility.cs +++ b/RJWSexperience/RJWSexperience/Utility.cs @@ -10,7 +10,6 @@ using UnityEngine; namespace RJWSexperience { - public static class Utility { public static System.Random random = new System.Random(Environment.TickCount); @@ -46,44 +45,8 @@ namespace RJWSexperience records.AddTo(record, value - recordval); } - - public static float RecordRandomizer(this Pawn pawn, RecordDef record, float avg, float dist, float min = 0, float max = float.MaxValue) - { - float value = Mathf.Clamp(RandGaussianLike(avg - dist,avg + dist),min,max); - float recordvalue = pawn.records.GetValue(record); - pawn.records.AddTo(record, value - recordvalue); - - return value; - } - - public static int RecordRandomizer(this Pawn pawn, RecordDef record, int avg, int dist, int min = 0, int max = int.MaxValue) - { - int value = (int)Mathf.Clamp(RandGaussianLike(avg - dist, avg + dist), min, max); - int recordvalue = pawn.records.GetAsInt(record); - pawn.records.AddTo(record, value - recordvalue); - - return value; - } - - public static float LustFactor(this Pawn pawn) - { - float lust = pawn.records.GetValue(VariousDefOf.Lust) * Configurations.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; - } - - public static T GetAdjacentBuilding(this Pawn pawn) where T : Building { - if (pawn.Spawned) { EdificeGrid edifice = pawn.Map.edificeGrid; @@ -97,7 +60,6 @@ namespace RJWSexperience return null; } - public static float GetCumVolume(this Pawn pawn) { List hediffs = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn)); @@ -112,11 +74,9 @@ namespace RJWSexperience if (part == null) part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("ovipositorm")).InRandomOrder().FirstOrDefault()?.TryGetComp(); if (part == null) part = hediffs?.FindAll((Hediff hed) => hed.def.defName.ToLower().Contains("tentacle")).InRandomOrder().FirstOrDefault()?.TryGetComp(); - return pawn.GetCumVolume(part); } - public static float GetCumVolume(this Pawn pawn, CompHediffBodyPart part) { float res; @@ -134,10 +94,8 @@ namespace RJWSexperience return res; } - public static float Normalization(this float num, float min, float max) { - return (num - min)/(max - min); } @@ -152,89 +110,9 @@ namespace RJWSexperience { if (Configurations.EnableRecordRandomizer && pawn != null && xxx.is_human(pawn)) { - int avgsex = -500; - bool isvirgin = Rand.Chance(Configurations.VirginRatio); - int totalsex = 0; - int totalbirth = 0; - int deviation = (int)Configurations.MaxSexCountDeviation; - if (pawn.story != null) - { - float lust; - if (xxx.is_nympho(pawn)) lust = pawn.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, 0); - else lust = pawn.RecordRandomizer(VariousDefOf.Lust, Configurations.AvgLust, Configurations.MaxLustDeviation, float.MinValue); - - int sexableage = 0; - int minsexage = (int)(pawn.RaceProps.lifeExpectancy * Configurations.MinSexablePercent); - if (pawn.ageTracker.AgeBiologicalYears > minsexage) - { - sexableage = pawn.ageTracker.AgeBiologicalYears - minsexage; - avgsex = (int)(sexableage * Configurations.SexPerYear * pawn.LustFactor()); - } - - - if (pawn.relations != null && pawn.gender == Gender.Female) - { - totalbirth += pawn.relations.ChildrenCount; - totalsex += totalbirth; - pawn.records?.AddTo(xxx.CountOfSexWithHumanlikes, totalbirth); - pawn.records?.SetTo(xxx.CountOfBirthHuman, totalbirth); - if (totalbirth > 0) isvirgin = false; - } - if (!isvirgin) - { - if (xxx.is_rapist(pawn)) - { - if (xxx.is_zoophile(pawn)) - { - if (pawn.Has(Quirk.ChitinLover)) totalsex += pawn.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, deviation); - else totalsex += pawn.RecordRandomizer(xxx.CountOfRapedAnimals, avgsex, deviation); - } - else totalsex += pawn.RecordRandomizer(xxx.CountOfRapedHumanlikes, avgsex, deviation); - avgsex /= 8; - } - - if (xxx.is_zoophile(pawn)) - { - if (pawn.Has(Quirk.ChitinLover)) totalsex += pawn.RecordRandomizer(xxx.CountOfRapedInsects, avgsex, deviation); - else totalsex += pawn.RecordRandomizer(xxx.CountOfSexWithAnimals, avgsex, deviation); - avgsex /= 10; - } - else if (xxx.is_necrophiliac(pawn)) - { - totalsex += pawn.RecordRandomizer(xxx.CountOfSexWithCorpse, avgsex, deviation); - avgsex /= 4; - } - - if (pawn.IsSlave) - { - totalsex += pawn.RecordRandomizer(xxx.CountOfBeenRapedByAnimals, Rand.Range(-50, 10), Rand.Range(0, 10) * sexableage); - totalsex += pawn.RecordRandomizer(xxx.CountOfBeenRapedByHumanlikes, 0, Rand.Range(0, 100) * sexableage); - } - - - totalsex += pawn.RecordRandomizer(xxx.CountOfSexWithHumanlikes, avgsex, deviation); - - if (totalsex > 0) pawn.records.AddTo(VariousDefOf.SexPartnerCount, Math.Max(1, Rand.Range(0, totalsex / 7))); - } - } - pawn.records?.SetTo(xxx.CountOfSex, totalsex); - RJWUtility.GenerateSextypeRecords(pawn, totalsex); - } - if (pawn.story?.traits != null) - { - if (pawn.IsVirgin()) - { - int degree = 0; - if (pawn.gender == Gender.Female) degree = 2; - Trait virgin = new Trait(VariousDefOf.Virgin, degree, true); - pawn.story.traits.GainTrait(virgin); - } - else if (pawn.gender == Gender.Female && Rand.Chance(0.05f)) - { - Trait virgin = new Trait(VariousDefOf.Virgin, 1, true); - pawn.story.traits.GainTrait(virgin); - } + RecordRandomizer.Randomize(pawn); } + pawn.AddVirginTrait(); } else { diff --git a/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll b/RJWSexperience_Ideology/Assemblies/RJWSexperience.Ideology.dll index fab96740c4c90402b15e2dc6d9f970350dbfcae8..ac4eb264b117bc62cec9de1eb31a7f72114b4422 100644 GIT binary patch delta 149 zcmZqp!PM}BX+j6fj4dX6H}+ghW|<@Zu6=V_ikpSN>qBjAE8N)}7qP90))(V3-MnYc z2|*4^BRyjib4!cK7dNO)-n32!MPM_}`VCAdB9mWj^g|U$+fbRO!bTm%`MF)U)-QJdDA)_6oJh=>o+i=h)jO9(GOK1ZBsEq;NhlH1P5s1=9bMh F900pDIj8^t