From 3feefaaab1ff6166263d8323acd0fd0896cfdb08 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Thu, 6 Jun 2024 14:40:42 +0200 Subject: [PATCH] First attempt at counter-inflation --- .../HediffDefs/Hediffs_CounterCumflation.xml | 173 ++++++++++++++++++ ...flation.cs => Patch_CumflationImmunity.cs} | 2 +- Source/Genes/Cum/Patch_LikesCumflation.cs | 93 ++++++++++ Source/HarmonyInit.cs | 5 +- Source/HediffDefOf.cs | 3 + Source/Rjw-Genes.csproj | 3 +- 6 files changed, 276 insertions(+), 3 deletions(-) create mode 100644 Common/Defs/HediffDefs/Hediffs_CounterCumflation.xml rename Source/Genes/Cum/{Patch_Cumflation.cs => Patch_CumflationImmunity.cs} (97%) create mode 100644 Source/Genes/Cum/Patch_LikesCumflation.cs 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 @@ - +