mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Unified Cum-Genes and made them configurable
This commit is contained in:
		
							parent
							
								
									7339bd41a1
								
							
						
					
					
						commit
						832c3aa0b8
					
				
					 8 changed files with 66 additions and 90 deletions
				
			
		| 
						 | 
				
			
			@ -84,6 +84,10 @@ but they are meant mostly to have infectors immune against their own diseases.
 | 
			
		|||
- Faction Penalties for spreading diseases, stealing genes and aging pawns with age transfer
 | 
			
		||||
- Patch  for [Imphilee Xeno](https://steamcommunity.com/sharedfiles/filedetails/?id=2990674516) by @Bunuffin
 | 
			
		||||
 | 
			
		||||
**Changes**::
 | 
			
		||||
 | 
			
		||||
- Cum-Amount-Changing genes now are XML Adjustable and share a single `.cs`-class
 | 
			
		||||
 | 
			
		||||
**Fixes:**
 | 
			
		||||
 | 
			
		||||
- Fixed an Issue where pawns would always get the Pheromone social boost, unless they had the pheromone (#113)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,10 +21,15 @@
 | 
			
		|||
    <label>no cum</label>
 | 
			
		||||
    <description>Males of these species have no fluid.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/No_Cum</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_NoCum</geneClass>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
 | 
			
		||||
    <displayOrderInCategory>533</displayOrderInCategory>
 | 
			
		||||
    <biostatCpx>0</biostatCpx>
 | 
			
		||||
    <biostatMet>1</biostatMet>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.MultiplierExtension">
 | 
			
		||||
        <multiplier>0.0</multiplier>
 | 
			
		||||
      </li>
 | 
			
		||||
    </modExtensions>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneCumAmount">
 | 
			
		||||
| 
						 | 
				
			
			@ -32,10 +37,15 @@
 | 
			
		|||
    <label>much cum</label>
 | 
			
		||||
    <description>Males of this species produce a lot of fluid.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Much_Cum</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_MuchCum</geneClass>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
 | 
			
		||||
    <displayOrderInCategory>534</displayOrderInCategory>
 | 
			
		||||
    <biostatCpx>1</biostatCpx>
 | 
			
		||||
    <biostatMet>-1</biostatMet>
 | 
			
		||||
    <biostatMet>0</biostatMet>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.MultiplierExtension">
 | 
			
		||||
        <multiplier>3.0</multiplier>
 | 
			
		||||
      </li>
 | 
			
		||||
    </modExtensions>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
 | 
			
		||||
  <GeneDef ParentName="GeneCumAmount">
 | 
			
		||||
| 
						 | 
				
			
			@ -44,10 +54,15 @@
 | 
			
		|||
    <description>Males of this species produce a whole lot of fluid. They are like fountains
 | 
			
		||||
      basically.</description>
 | 
			
		||||
    <iconPath>Genes/Icons/Very_Much_Cum</iconPath>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_VeryMuchCum</geneClass>
 | 
			
		||||
    <geneClass>RJW_Genes.Gene_ChangeCumAmount</geneClass>
 | 
			
		||||
    <displayOrderInCategory>535</displayOrderInCategory>
 | 
			
		||||
    <biostatCpx>1</biostatCpx>
 | 
			
		||||
    <biostatMet>-2</biostatMet>
 | 
			
		||||
    <biostatMet>-1</biostatMet>
 | 
			
		||||
    <modExtensions>
 | 
			
		||||
      <li Class="RJW_Genes.MultiplierExtension">
 | 
			
		||||
        <multiplier>20.0</multiplier>
 | 
			
		||||
      </li>
 | 
			
		||||
    </modExtensions>
 | 
			
		||||
  </GeneDef>
 | 
			
		||||
 | 
			
		||||
</Defs>
 | 
			
		||||
							
								
								
									
										14
									
								
								Source/Common/Defs/MultiplierExtension.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Source/Common/Defs/MultiplierExtension.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
using System;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.Linq;
 | 
			
		||||
using System.Text;
 | 
			
		||||
using System.Threading.Tasks;
 | 
			
		||||
using Verse;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class MultiplierExtension : DefModExtension
 | 
			
		||||
    {
 | 
			
		||||
        public float multiplier;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -34,8 +34,23 @@ namespace RJW_Genes
 | 
			
		|||
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		//Get total fluidamount a person has.
 | 
			
		||||
		public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Looks up the "MultiplierExtensions" Value for a given Gene, with a fall back. 
 | 
			
		||||
		/// Returns the fallback if there is no Extension, or if the Multiplier is smaller than 0. 
 | 
			
		||||
		/// </summary>
 | 
			
		||||
 | 
			
		||||
        public static float LookupCumMultiplier(Gene gene, float FALLBACK = 3.0f) => LookupCumMultiplier(gene.def,FALLBACK);
 | 
			
		||||
        public static float LookupCumMultiplier(GeneDef def, float FALLBACK = 3.0f)
 | 
			
		||||
        {
 | 
			
		||||
            MultiplierExtension multiplier = def.GetModExtension<MultiplierExtension>();
 | 
			
		||||
            if (multiplier == null || multiplier.multiplier < 0)
 | 
			
		||||
                return FALLBACK;
 | 
			
		||||
            else return multiplier.multiplier;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        //Get total fluidamount a person has.
 | 
			
		||||
        public static float GetTotalFluidAmount(Pawn pawn, float multiplier = 1f)
 | 
			
		||||
		{
 | 
			
		||||
			var partBPR = Genital_Helper.get_genitalsBPR(pawn);
 | 
			
		||||
			var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,36 +1,38 @@
 | 
			
		|||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_MuchCum : RJW_Gene
 | 
			
		||||
    public class Gene_ChangeCumAmount : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        bool has_been_fired = false;
 | 
			
		||||
 | 
			
		||||
        float multiplier_much_cum = 3f;
 | 
			
		||||
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
 | 
			
		||||
            float multipier = CumUtility.LookupCumMultiplier(this);
 | 
			
		||||
            CumUtility.MultiplyFluidAmountBy(pawn, multipier);
 | 
			
		||||
            has_been_fired = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            if (!has_been_fired) { 
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); 
 | 
			
		||||
            if (!has_been_fired)
 | 
			
		||||
            {
 | 
			
		||||
                float multipier = CumUtility.LookupCumMultiplier(this);
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, multipier);
 | 
			
		||||
                has_been_fired = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public override void PostRemove()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
 | 
			
		||||
            if (has_been_fired)
 | 
			
		||||
            {
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum);
 | 
			
		||||
                float multipier = CumUtility.LookupCumMultiplier(this);
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, 1/ multipier);
 | 
			
		||||
                has_been_fired = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_NoCum : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        bool has_been_fired = false;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            CumUtility.MultiplyFluidAmountBy(pawn, 0f);
 | 
			
		||||
            has_been_fired = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            if (!has_been_fired) { 
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, 0f); 
 | 
			
		||||
                has_been_fired = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public override void PostRemove()
 | 
			
		||||
        {
 | 
			
		||||
            // Cum Removal does not do at the moment :/ I would need to safe the old cum amount but I don't want to at the moment
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,39 +0,0 @@
 | 
			
		|||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_VeryMuchCum : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        bool has_been_fired = false;
 | 
			
		||||
 | 
			
		||||
        float multiplier_much_cum = 10f;
 | 
			
		||||
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum);
 | 
			
		||||
            has_been_fired = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            if (!has_been_fired) { 
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); 
 | 
			
		||||
                has_been_fired = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public override void PostRemove()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
 | 
			
		||||
            if (has_been_fired)
 | 
			
		||||
            {
 | 
			
		||||
                CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum);
 | 
			
		||||
                has_been_fired = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -59,6 +59,7 @@
 | 
			
		|||
    <Compile Include="Common\Defs\ChanceExtension.cs" />
 | 
			
		||||
    <Compile Include="Common\Defs\DistanceExtension.cs" />
 | 
			
		||||
    <Compile Include="Common\Defs\ModExtensionHelper.cs" />
 | 
			
		||||
    <Compile Include="Common\Defs\MultiplierExtension.cs" />
 | 
			
		||||
    <Compile Include="Common\Defs\TickBasedChanceExtension.cs" />
 | 
			
		||||
    <Compile Include="Common\Either.cs" />
 | 
			
		||||
    <Compile Include="Common\Helpers\FactionUtility.cs" />
 | 
			
		||||
| 
						 | 
				
			
			@ -105,9 +106,7 @@
 | 
			
		|||
    <Compile Include="Genes\Gender\Genes\Gene_GenderFluid.cs" />
 | 
			
		||||
    <Compile Include="Genes\GenitaliaSize\Gene_EvergrowingGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\CumUtility.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Gene_VeryMuchCum.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Gene_MuchCum.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Gene_NoCum.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Gene_ChangeCumAmount.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Patch_TransferNutrition.cs" />
 | 
			
		||||
    <Compile Include="Genes\Damage\Gene_Unbreakable.cs" />
 | 
			
		||||
    <Compile Include="Genes\Cum\Patch_CumflationImmunity.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue