diff --git a/1.4/Assemblies/RJWSexperience.dll b/1.4/Assemblies/RJWSexperience.dll index abb50e2..e7a91db 100644 Binary files a/1.4/Assemblies/RJWSexperience.dll and b/1.4/Assemblies/RJWSexperience.dll differ diff --git a/Languages/English/Keyed/RJW_Sexperience.xml b/Languages/English/Keyed/RJW_Sexperience.xml index b093beb..5568b0a 100644 --- a/Languages/English/Keyed/RJW_Sexperience.xml +++ b/Languages/English/Keyed/RJW_Sexperience.xml @@ -85,6 +85,10 @@ * Needs a game restart\n\nEnables Sex History window, information collection for the said window and save/load of this information. Also enables sex partners count in the pawn's records.\n\n[Caution] Disabling this mid save will result in the loss of previously collected histories. Hide Sex History button when drafted Hides Sex History Gizmo for currently drafted pawns + Remove virginity with anal sex (for male/male sex) + Remove virginity with anal sex (for male/male sex) + Remove virginity with scissoring sex (for female/female sex) + Remove virginity with scissoring sex (for female/female sex) Debug diff --git a/Source/RJWSexperience/Configurations.cs b/Source/RJWSexperience/Configurations.cs index b53be31..9bd3918 100644 --- a/Source/RJWSexperience/Configurations.cs +++ b/Source/RJWSexperience/Configurations.cs @@ -25,6 +25,9 @@ namespace RJWSexperience public readonly SettingHandle EnableSexHistory = new SettingHandle("EnableSexHistory", true); public readonly SettingHandle HideGizmoWhenDrafted = new SettingHandle("HideGizmoWhenDrafted", true); + public readonly SettingHandle VirginityCheck_M2M_Anal = new SettingHandle("VirginityCheck_M2M_Anal", true); + public readonly SettingHandle VirginityCheck_F2F_Scissoring = new SettingHandle("VirginityCheck_F2F_Scissoring", false); + public readonly SettingHandle DevMode = new SettingHandle("DevMode", false); public readonly SettingHandle SelectionLocked = new SettingHandle("SelectionLocked", false); diff --git a/Source/RJWSexperience/Keyed.cs b/Source/RJWSexperience/Keyed.cs index ee3eb09..f254785 100644 --- a/Source/RJWSexperience/Keyed.cs +++ b/Source/RJWSexperience/Keyed.cs @@ -98,6 +98,10 @@ namespace RJWSexperience public static readonly string Option_HideGizmoWithRJW_Label = "RSOption_HideGizmoWithRJW_Label".Translate(); public static readonly string Option_HideGizmoWithRJW_Desc = "RSOption_HideGizmoWithRJW_Desc".Translate(); public static readonly string Button_ResetToDefault = "Button_ResetToDefault".Translate(); + public static readonly string Option_VirginityCheck_M2M_Label = "RSOption_VirginityCheck_M2M_Label".Translate(); + public static readonly string Option_VirginityCheck_M2M_Desc = "RSOption_VirginityCheck_M2M_Desc".Translate(); + public static readonly string Option_VirginityCheck_F2F_Label = "RSOption_VirginityCheck_F2F_Label".Translate(); + public static readonly string Option_VirginityCheck_F2F_Desc = "RSOption_VirginityCheck_F2F_Desc".Translate(); public static string Translate(this PartnerOrderMode mode) { diff --git a/Source/RJWSexperience/Patches/RJW_Patch.cs b/Source/RJWSexperience/Patches/RJW_Patch.cs index cbb78f6..8e5716f 100644 --- a/Source/RJWSexperience/Patches/RJW_Patch.cs +++ b/Source/RJWSexperience/Patches/RJW_Patch.cs @@ -94,10 +94,34 @@ namespace RJWSexperience { public static void Postfix(JobDriver_SexBaseInitiator __instance) { - if (__instance.Sexprops.hasPartner() && __instance.Sexprops.sexType == xxx.rjwSextype.Vaginal) + if (__instance.Sexprops.hasPartner()) { - __instance.pawn.TryRemoveVirginity(__instance.Partner, __instance.Sexprops); - __instance.Partner.TryRemoveVirginity(__instance.pawn, __instance.Sexprops); + // remove hetero virginity + if((__instance.Sexprops.sexType == xxx.rjwSextype.Vaginal || __instance.Sexprops.sexType == xxx.rjwSextype.DoublePenetration)) + { + __instance.pawn.TryRemoveVirginity(__instance.Partner, __instance.Sexprops); + __instance.Partner.TryRemoveVirginity(__instance.pawn, __instance.Sexprops); + } + else + { + // check if both pawn are male -> anal used as alternative virginity remover + if(SexperienceMod.Settings.VirginityCheck_M2M_Anal && + __instance.Sexprops.sexType == xxx.rjwSextype.Anal + && __instance.pawn.gender == Gender.Male && __instance.Partner.gender == Gender.Male) + { + __instance.pawn.TryRemoveVirginity(__instance.Partner, __instance.Sexprops); + __instance.Partner.TryRemoveVirginity(__instance.pawn, __instance.Sexprops); + } + + // check if both pawn are female -> scissoring used as alternative virginity remover + if(SexperienceMod.Settings.VirginityCheck_F2F_Scissoring && + __instance.Sexprops.sexType == xxx.rjwSextype.Scissoring + && __instance.pawn.gender == Gender.Female && __instance.Partner.gender == Gender.Female) + { + __instance.pawn.TryRemoveVirginity(__instance.Partner, __instance.Sexprops); + __instance.Partner.TryRemoveVirginity(__instance.pawn, __instance.Sexprops); + } + } } } } diff --git a/Source/RJWSexperience/Settings/SettingsContainer.cs b/Source/RJWSexperience/Settings/SettingsContainer.cs index c055aeb..51188f6 100644 --- a/Source/RJWSexperience/Settings/SettingsContainer.cs +++ b/Source/RJWSexperience/Settings/SettingsContainer.cs @@ -31,7 +31,9 @@ namespace RJWSexperience.Settings settings.VirginRatio, settings.SlavesBeenRapedExp, settings.EnableSexHistory, - settings.HideGizmoWhenDrafted + settings.HideGizmoWhenDrafted, + settings.VirginityCheck_M2M_Anal, + settings.VirginityCheck_F2F_Scissoring } ); } diff --git a/Source/RJWSexperience/Settings/SettingsTabHistory.cs b/Source/RJWSexperience/Settings/SettingsTabHistory.cs index db6a725..53f3b88 100644 --- a/Source/RJWSexperience/Settings/SettingsTabHistory.cs +++ b/Source/RJWSexperience/Settings/SettingsTabHistory.cs @@ -21,7 +21,9 @@ namespace RJWSexperience.Settings settings.VirginRatio, settings.SlavesBeenRapedExp, settings.EnableSexHistory, - settings.HideGizmoWhenDrafted + settings.HideGizmoWhenDrafted, + settings.VirginityCheck_M2M_Anal, + settings.VirginityCheck_F2F_Scissoring } ) { } @@ -63,6 +65,9 @@ namespace RJWSexperience.Settings { listmain.CheckboxLabeled(Keyed.Option_HideGizmoWhenDrafted_Label, settings.HideGizmoWhenDrafted, Keyed.Option_HideGizmoWhenDrafted_Desc); } + + listmain.CheckboxLabeled(Keyed.Option_VirginityCheck_M2M_Label, settings.VirginityCheck_M2M_Anal, Keyed.Option_VirginityCheck_M2M_Desc); + listmain.CheckboxLabeled(Keyed.Option_VirginityCheck_F2F_Label, settings.VirginityCheck_F2F_Scissoring, Keyed.Option_VirginityCheck_F2F_Label); if (listmain.ButtonText(Keyed.Button_ResetToDefault)) { diff --git a/Source/RJWSexperience/Settings/SettingsTabMain.cs b/Source/RJWSexperience/Settings/SettingsTabMain.cs index d78f8f6..4dc604f 100644 --- a/Source/RJWSexperience/Settings/SettingsTabMain.cs +++ b/Source/RJWSexperience/Settings/SettingsTabMain.cs @@ -15,6 +15,8 @@ namespace RJWSexperience.Settings settings.LustLimit, settings.MaxSingleLustChange, settings.SexCanFillBuckets, + settings.VirginityCheck_M2M_Anal, + settings.VirginityCheck_F2F_Scissoring } ) { } @@ -27,6 +29,8 @@ namespace RJWSexperience.Settings listmain.SliderOption(Keyed.Option_MaxSingleLustChange_Label + " {0}", Keyed.Option_MaxSingleLustChange_Desc, settings.MaxSingleLustChange, new FloatRange(0f, 10f), 0.05f); listmain.CheckboxLabeled(Keyed.Option_EnableBastardRelation_Label, settings.EnableBastardRelation, Keyed.Option_EnableBastardRelation_Desc); listmain.CheckboxLabeled(Keyed.Option_SexCanFillBuckets_Label, settings.SexCanFillBuckets, Keyed.Option_SexCanFillBuckets_Desc); + listmain.CheckboxLabeled(Keyed.Option_VirginityCheck_M2M_Label, settings.VirginityCheck_M2M_Anal, Keyed.Option_VirginityCheck_M2M_Desc); + listmain.CheckboxLabeled(Keyed.Option_VirginityCheck_F2F_Label, settings.VirginityCheck_F2F_Scissoring, Keyed.Option_VirginityCheck_F2F_Desc); if (settings.DevMode) LustUtility.DrawGraph(listmain.GetRect(300f));