mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	First attempt at counter-inflation
This commit is contained in:
		
							parent
							
								
									13b565fac6
								
							
						
					
					
						commit
						3feefaaab1
					
				
					 6 changed files with 276 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -18,7 +18,7 @@ namespace RJW_Genes
 | 
			
		|||
    /// Patched File: https://gitgud.io/John-the-Anabaptist/licentia-labs/-/blob/master/Source/LicentiaLabs/LicentiaLabs/Cumflation.cs
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// 
 | 
			
		||||
    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)
 | 
			
		||||
							
								
								
									
										93
									
								
								Source/Genes/Cum/Patch_LikesCumflation.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								Source/Genes/Cum/Patch_LikesCumflation.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
{
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// 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
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// 
 | 
			
		||||
    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;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue