From 2352bb95b05d60242c88d63d85d2e64d8d912ff7 Mon Sep 17 00:00:00 2001 From: amevarashi Date: Sun, 5 Jun 2022 10:52:39 +0500 Subject: [PATCH] Refactor RJW_Patch_DetermineSexScores --- .../IdeologyAddon/Ideology/RJW_Patch_Ideo.cs | 38 ++++++++----------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/RJWSexperience/IdeologyAddon/Ideology/RJW_Patch_Ideo.cs b/RJWSexperience/IdeologyAddon/Ideology/RJW_Patch_Ideo.cs index 581aeec..6fe541f 100644 --- a/RJWSexperience/IdeologyAddon/Ideology/RJW_Patch_Ideo.cs +++ b/RJWSexperience/IdeologyAddon/Ideology/RJW_Patch_Ideo.cs @@ -279,33 +279,27 @@ namespace RJWSexperience.Ideology if (!context.Inputs.IsRape && ideo != null) PreceptSextype(ideo, context.Inputs.Partner.GetStatValue(xxx.sex_drive_stat), ref __result, interaction); } - private static readonly List promiscuousSexTypes = new List { - "DoublePenetration", - "Scissoring", - "Sixtynine", - "Fisting", + private static readonly Dictionary PreceptBySextype = new Dictionary + { + { "Vaginal", VariousDefOf.Sex_VaginalOnly }, + { "Anal", VariousDefOf.Sex_AnalOnly }, + { "Cunnilingus", VariousDefOf.Sex_OralOnly }, + { "Fellatio", VariousDefOf.Sex_OralOnly }, + { "Beakjob", VariousDefOf.Sex_OralOnly }, + { "DoublePenetration", VariousDefOf.Sex_Promiscuous }, + { "Scissoring", VariousDefOf.Sex_Promiscuous }, + { "Sixtynine", VariousDefOf.Sex_Promiscuous }, + { "Fisting", VariousDefOf.Sex_Promiscuous } }; public static void PreceptSextype(Ideo ideo, float sexdrive, ref float result, InteractionWithExtension interaction) { + if (!PreceptBySextype.TryGetValue(interaction.Extension.rjwSextype, out PreceptDef preceptDef)) + return; + float mult = 8.0f * Math.Max(0.3f, 1 / Math.Max(0.01f, sexdrive)); - if ((interaction.Extension.rjwSextype == "Vaginal") - && ideo.HasPrecept(VariousDefOf.Sex_VaginalOnly)) - { - result *= mult; - } - else if ((interaction.Extension.rjwSextype == "Anal") - && ideo.HasPrecept(VariousDefOf.Sex_AnalOnly)) - { - result *= mult; - } - else if ((interaction.Extension.rjwSextype == "Cunnilingus" || interaction.Extension.rjwSextype == "Fellatio" || interaction.Extension.rjwSextype == "Beakjob") - && ideo.HasPrecept(VariousDefOf.Sex_OralOnly)) - { - result *= mult; - } - else if (promiscuousSexTypes.Contains(interaction.Extension.rjwSextype) - && ideo.HasPrecept(VariousDefOf.Sex_Promiscuous)) + + if (ideo.HasPrecept(preceptDef)) { result *= mult; }