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));