diff --git a/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml b/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml
new file mode 100644
index 0000000..e6b64d0
--- /dev/null
+++ b/Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml
@@ -0,0 +1,173 @@
+
+
+
+ rjw_genes_cumflation_counter
+ HediffWithComps
+
+ cumflation negator
+ Negates the negative effects usually produced by being cumflated.
+ (240,200,110)
+ false
+ 1.0
+ false
+ false
+
+
+ -0.75
+
+
+
+
+
+ false
+
+
+
+ 0.2
+
+ -0.1
+
+
+
+ Moving
+ 0.1
+
+
+
+
+
+ 0.4
+
+ -0.3
+
+
+
+ Moving
+ 0.3
+
+
+ -0.1
+
+
+
+ 0.65
+
+ +0.5
+
+
+
+ Moving
+ 0.6
+
+
+ -0.3
+
+
+
+ 0.9
+
+ -0.7
+
+
+
+ Moving
+ 1.0
+
+
+ -0.5
+
+
+
+
+
+ rjw_genes_cumstuffed_counter
+ HediffWithComps
+
+ cumstuffed negated
+ Negates the negative effects that one would suffer from being cumstuffed.
+ (240,200,110)
+ false
+ 1.0
+ false
+ false
+
+
+ -0.75
+
+
+
+ 0
+ 0
+ 0.75
+ 0.5
+ 0.2
+
+
+
+
+
+
+ false
+
+
+
+ 0.2
+ 0.95
+
+ -0.05
+
+
+
+ Moving
+ 0.03
+
+
+
+
+
+ 0.4
+ 0.9
+
+ -0.1
+
+
+
+ Moving
+ 0.1
+
+
+
+
+
+ 0.6
+ 0.75
+
+ -0.15
+
+
+
+ Moving
+ 0.2
+
+
+ -0.15
+
+
+
+ 0.8
+ 0.5
+
+ -0.2
+
+
+
+ Moving
+ 0.3
+
+
+ -0.3
+
+
+
+
+
diff --git a/Source/Genes/Cum/Patch_Cumflation.cs b/Source/Genes/Cum/Patch_CumflationImmunity.cs
similarity index 97%
rename from Source/Genes/Cum/Patch_Cumflation.cs
rename to Source/Genes/Cum/Patch_CumflationImmunity.cs
index a1f54a7..49f8e73 100644
--- a/Source/Genes/Cum/Patch_Cumflation.cs
+++ b/Source/Genes/Cum/Patch_CumflationImmunity.cs
@@ -18,7 +18,7 @@ namespace RJW_Genes
/// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
///
///
- class Patch_Cumflation
+ class Patch_CumflationImmunity
{
// This patch does not need the normal Harmony Targetting,
// as it needs to be added only on demand (See HarmonyInit.cs)
diff --git a/Source/Genes/Cum/Patch_LikesCumflation.cs b/Source/Genes/Cum/Patch_LikesCumflation.cs
new file mode 100644
index 0000000..947a4c9
--- /dev/null
+++ b/Source/Genes/Cum/Patch_LikesCumflation.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using HarmonyLib;
+using rjw;
+using RimWorld;
+using Verse;
+using static LicentiaLabs.Licentia;
+using static HarmonyLib.Code;
+
+namespace RJW_Genes
+{
+ ///
+ /// Changes LicentiaLabs (if Present) to add a cumflation-counter hediff, when the pawn is cumflated.
+ /// The counter hediff takes away the negative stats of the original hediff.
+ /// This code is exercised / loaded in the HarmonyInit.
+ /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
+ ///
+ ///
+ class Patch_LikesCumflation
+ {
+ // This patch does not need the normal Harmony Targetting,
+ // as it needs to be added only on demand (See HarmonyInit.cs)
+ public static void PostFix(SexProps props)
+ {
+
+ if (props == null || props.pawn == null || props.partner == null) return;
+
+ if (props.pawn.genes != null && props.pawn.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation) )
+ {
+ AddOrIncreaseCumflationCounterHediff(props.pawn);
+ }
+
+ if (props.partner.genes != null && props.partner.genes.HasActiveGene(GeneDefOf.rjw_genes_likes_cumflation))
+ {
+ AddOrIncreaseCumflationCounterHediff(props.partner);
+ }
+ }
+
+ public static void AddOrIncreaseCumflationCounterHediff(Pawn inflated)
+ {
+ //Hediff cumstuffed_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumstuffed);
+ Hediff cumstuffed_hediff = LicentiaLabs.CumflationHelper.GetCumflationHediff(inflated, LicentiaLabs.Licentia.HediffDefs.Cumstuffed, "stomach");
+ if (cumstuffed_hediff != null && cumstuffed_hediff.Severity >= 0.01) {
+
+ ModLog.Message($"{inflated} got cumstuffed and gets the counter-part");
+ var bodyPartRecord = inflated.RaceProps.body.AllParts.Find(bpr => bpr.def.defName.Contains("stomach") || bpr.def.defName.Contains("stomach".ToLower()));
+ var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumstuffed_counter, bodyPartRecord);
+ counter_hediff.Severity = cumstuffed_hediff.Severity;
+ }
+ else if (cumstuffed_hediff != null)
+ {
+ ModLog.Message("cumstuffed_hediff was too un-sever");
+ }
+ else
+ ModLog.Message("cumstuffed_hediff was null");
+
+ Hediff cumflation_hediff = inflated.health.hediffSet.GetFirstHediffOfDef(LicentiaLabs.Licentia.HediffDefs.Cumflation);
+ if (cumflation_hediff != null && cumflation_hediff.Severity >= 0.01)
+ {
+ ModLog.Message($"{inflated} got cumflated and gets the counter-part");
+ var bodyPartRecord = Genital_Helper.get_genitalsBPR(inflated);
+ var counter_hediff = CreateOrGetCumflationCounterHediff(inflated, HediffDefOf.rjw_genes_cumstuffed_counter, bodyPartRecord);
+ counter_hediff.Severity = cumstuffed_hediff.Severity;
+ }
+ else if (cumflation_hediff != null)
+ {
+ ModLog.Message("Cumflation Hediff was too un-sever");
+ }
+ else
+ ModLog.Message("Cumflation Hediff was null");
+ }
+
+ public static Hediff CreateOrGetCumflationCounterHediff(Pawn inflated, HediffDef counterCumflationDef, BodyPartRecord bodyPartRecord)
+ {
+ Hediff cumflationHediff = inflated.health.hediffSet.GetFirstHediffOfDef(counterCumflationDef);
+ if (cumflationHediff == null)
+ {
+ cumflationHediff = HediffMaker.MakeHediff(counterCumflationDef, inflated, bodyPartRecord);
+ cumflationHediff.Severity = 0;
+ inflated.health.AddHediff(cumflationHediff, bodyPartRecord);
+ } else {
+ ModLog.Message("Did not find a correct Counter-CumflationDef ");
+ }
+ return cumflationHediff;
+
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/HarmonyInit.cs b/Source/HarmonyInit.cs
index f4396b9..3443198 100644
--- a/Source/HarmonyInit.cs
+++ b/Source/HarmonyInit.cs
@@ -57,13 +57,16 @@ namespace RJW_Genes
{
// Gene: Cumflation Immunity [Prefix Patch]
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)),
- prefix: new HarmonyMethod(typeof(Patch_Cumflation), nameof(Patch_Cumflation.Prefix)));
+ prefix: new HarmonyMethod(typeof(Patch_CumflationImmunity), nameof(Patch_CumflationImmunity.Prefix)));
// Gene: Generous Donor [Postfix Patch]
harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.TransferNutrition)),
postfix: new HarmonyMethod(typeof(Patch_TransferNutrition), nameof(Patch_TransferNutrition.Postfix)));
// Gene: CumEater [Postfix Patch] -- This is not exactly licentia, but the Generous-Donor Gene is only active with Licentia
harmony.Patch(AccessTools.Method(typeof(rjw.JobDriver_Sex), nameof(rjw.JobDriver_Sex.ChangePsyfocus)),
postfix: new HarmonyMethod(typeof(Patch_SexTicks_ChangePsyfocus), nameof(Patch_SexTicks_ChangePsyfocus.Postfix)));
+ // Gene: Likes Cumflation [Postfix Patch]
+ harmony.Patch(AccessTools.Method(typeof(LicentiaLabs.CumflationHelper), nameof(LicentiaLabs.CumflationHelper.Cumflation)),
+ prefix: new HarmonyMethod(typeof(Patch_LikesCumflation), nameof(Patch_LikesCumflation.PostFix)));
}
}))();
}
diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs
index 443c32e..d957096 100644
--- a/Source/HediffDefOf.cs
+++ b/Source/HediffDefOf.cs
@@ -20,6 +20,9 @@ namespace RJW_Genes
public static readonly HediffDef rjw_genes_orgasmic_mytosis_hediff;
public static readonly HediffDef rjw_genes_mytosis_shock_hediff;
+ [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumstuffed_counter;
+ [MayRequire("LustLicentia.RJWLabs")] public static readonly HediffDef rjw_genes_cumflation_counter;
+
public static readonly HediffDef OvaryAgitator;
public static readonly HediffDef Bioscaffold;
}
diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj
index b4072e3..6c6ef9a 100644
--- a/Source/Rjw-Genes.csproj
+++ b/Source/Rjw-Genes.csproj
@@ -71,6 +71,7 @@
+
@@ -93,7 +94,7 @@
-
+