mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Added a new gene that increases penis size on oral sex
This commit is contained in:
		
							parent
							
								
									93a4699fba
								
							
						
					
					
						commit
						d5580ba92a
					
				
					 12 changed files with 136 additions and 6 deletions
				
			
		| 
						 | 
					@ -6,6 +6,7 @@
 | 
				
			||||||
- New Gene for Genderfluid Pawns - daily chance to change sex. Futas just change "display" and keep genitalia, other pawns switch genitalia. XML configurable times & chances. 
 | 
					- New Gene for Genderfluid Pawns - daily chance to change sex. Futas just change "display" and keep genitalia, other pawns switch genitalia. XML configurable times & chances. 
 | 
				
			||||||
- New Drawings for the Succubi Wings & Tail, thanks to @Monti (donated via Discord)
 | 
					- New Drawings for the Succubi Wings & Tail, thanks to @Monti (donated via Discord)
 | 
				
			||||||
- Simple Gene that removes Sex need (called asexual, `rjw_genes_no_sex_need`)
 | 
					- Simple Gene that removes Sex need (called asexual, `rjw_genes_no_sex_need`)
 | 
				
			||||||
 | 
					- New Gene that grows Penisses on Oral sex. Configurable in XML. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Fixes:**
 | 
					**Fixes:**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,4 +78,24 @@
 | 
				
			||||||
        <biostatMet>-5</biostatMet>
 | 
					        <biostatMet>-5</biostatMet>
 | 
				
			||||||
    </GeneDef>    
 | 
					    </GeneDef>    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <GeneDef ParentName="SpecialBase">
 | 
				
			||||||
 | 
					        <defName>rjw_genes_hormonal_saliva</defName>
 | 
				
			||||||
 | 
					        <label>Hormonal Saliva</label>
 | 
				
			||||||
 | 
					        <description>The saliva of this xenotype stimulates growth in penises. Regular contact will lead to noticable growth.</description>
 | 
				
			||||||
 | 
					        <biostatCpx>2</biostatCpx>
 | 
				
			||||||
 | 
					        <biostatMet>-1</biostatMet>
 | 
				
			||||||
 | 
					        <iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
 | 
				
			||||||
 | 
					        <displayOrderInCategory>6</displayOrderInCategory>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <modExtensions>
 | 
				
			||||||
 | 
					            <li Class="RJW_Genes.HormonalSalivaExtension">
 | 
				
			||||||
 | 
					                <!-- SizeIncrement is applied "flat" -->
 | 
				
			||||||
 | 
					                <sizeIncrement>0.02</sizeIncrement>
 | 
				
			||||||
 | 
					                <maxBodySize>2.5</maxBodySize>
 | 
				
			||||||
 | 
					                <!-- CumMultiplier is applied "exponential" -->
 | 
				
			||||||
 | 
					                <cumMultiplier>1.05</cumMultiplier>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					        </modExtensions>
 | 
				
			||||||
 | 
					    </GeneDef>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</Defs>
 | 
					</Defs>
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,7 @@ namespace RJW_Genes
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_small_breasts;
 | 
							public static readonly GeneDef rjw_genes_small_breasts;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_loose_anus;
 | 
							public static readonly GeneDef rjw_genes_loose_anus;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_tight_anus;
 | 
							public static readonly GeneDef rjw_genes_tight_anus;
 | 
				
			||||||
 | 
							public static readonly GeneDef rjw_genes_evergrowth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Gender 
 | 
							// Gender 
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_female_only;
 | 
							public static readonly GeneDef rjw_genes_female_only;
 | 
				
			||||||
| 
						 | 
					@ -68,6 +69,7 @@ namespace RJW_Genes
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_rapist;
 | 
							public static readonly GeneDef rjw_genes_rapist;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_homosexual;
 | 
							public static readonly GeneDef rjw_genes_homosexual;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_bisexual;
 | 
							public static readonly GeneDef rjw_genes_bisexual;
 | 
				
			||||||
 | 
							public static readonly GeneDef rjw_genes_no_sex_need;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Damage & Side Effects 
 | 
							// Damage & Side Effects 
 | 
				
			||||||
		[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_elasticity;
 | 
							[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_elasticity;
 | 
				
			||||||
| 
						 | 
					@ -79,6 +81,7 @@ namespace RJW_Genes
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_sex_age_drain;
 | 
							public static readonly GeneDef rjw_genes_sex_age_drain;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_aphrodisiac_pheromones;
 | 
							public static readonly GeneDef rjw_genes_aphrodisiac_pheromones;
 | 
				
			||||||
		public static readonly GeneDef rjw_genes_sexual_mytosis;
 | 
							public static readonly GeneDef rjw_genes_sexual_mytosis;
 | 
				
			||||||
 | 
							public static readonly GeneDef rjw_genes_hormonal_saliva;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // LifeForce
 | 
					        // LifeForce
 | 
				
			||||||
        public static readonly GeneDef rjw_genes_lifeforce;
 | 
					        public static readonly GeneDef rjw_genes_lifeforce;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										28
									
								
								Source/Genes/Special/Defs/HormonalSalivaExtension.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Source/Genes/Special/Defs/HormonalSalivaExtension.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class HormonalSalivaExtension : DefModExtension
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// How much the genitalia will growth per interaction.
 | 
				
			||||||
 | 
					        /// This is applied "flat", so if you have penis 0.5 and growthRate 0.05 it goes to 0.55, 0.60, 0.65 etc. 
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public float sizeIncrement;
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// Upper Limit for the body size - default should be 2-3
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public float maxBodySize;
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// How much more cum the pawn will make.
 | 
				
			||||||
 | 
					        /// This is applied as multiplication, so if you have cum 20 and multiplier 1.1 you will have 22,24,27 etc. 
 | 
				
			||||||
 | 
					        /// This leads to exponential growth, so try to keep it kinda low. 
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        public float cumMultiplier;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										76
									
								
								Source/Genes/Special/Patches/Patch_HormonalSaliva.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								Source/Genes/Special/Patches/Patch_HormonalSaliva.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,76 @@
 | 
				
			||||||
 | 
					using HarmonyLib;
 | 
				
			||||||
 | 
					using rjw;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using Verse;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RJW_Genes
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    [HarmonyPatch(typeof(SexUtility), "Aftersex")]
 | 
				
			||||||
 | 
					    public class Patch_HormonalSaliva
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // TODO: Reduce to 0.02 after debug. 
 | 
				
			||||||
 | 
					        const float SIZE_INCREMENT_FALLBACK = 0.02f;
 | 
				
			||||||
 | 
					        const float MAX_BODY_SIZE_FALLBACK = 2.5f;
 | 
				
			||||||
 | 
					        const float CUM_MULTIPLIER_FALLBACK = 1.05f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public static void Postfix(SexProps props)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Pawn pawn = props.pawn;
 | 
				
			||||||
 | 
					            Pawn partner = props.partner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (GeneUtility.HasGeneNullCheck(pawn, GeneDefOf.rjw_genes_hormonal_saliva) && (props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Sixtynine || props.sexType == xxx.rjwSextype.Fellatio))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GrowPenisses(partner);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (GeneUtility.HasGeneNullCheck(partner, GeneDefOf.rjw_genes_hormonal_saliva) && (props.sexType == xxx.rjwSextype.Oral || props.sexType == xxx.rjwSextype.Sixtynine || props.sexType == xxx.rjwSextype.Fellatio))
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                GrowPenisses(pawn);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private static void GrowPenisses(Pawn pawn)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            HormonalSalivaExtension salivaExt = GeneDefOf.rjw_genes_hormonal_saliva.GetModExtension<HormonalSalivaExtension>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            float size_increment = salivaExt?.sizeIncrement ?? SIZE_INCREMENT_FALLBACK;
 | 
				
			||||||
 | 
					            float maximum_body_size = salivaExt?.maxBodySize ?? MAX_BODY_SIZE_FALLBACK;
 | 
				
			||||||
 | 
					            float cum_multiplier = salivaExt?.cumMultiplier ?? CUM_MULTIPLIER_FALLBACK;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
 | 
				
			||||||
 | 
					            foreach (Hediff penis in AllPenisses)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>();
 | 
				
			||||||
 | 
					                if (penis.Severity < 1.00)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    penis.Severity = Math.Min(1.01f, penis.Severity + size_increment);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    if (CompHediff != null && CompHediff.SizeOwner <= maximum_body_size)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        CompHediff.SizeOwner += size_increment;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Increase Fluid
 | 
				
			||||||
 | 
					                if (CompHediff != null)
 | 
				
			||||||
 | 
					                    CompHediff.FluidAmmount *= cum_multiplier;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -142,9 +142,11 @@
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\JobGivers\JobGiver_GetLifeForce.cs" />
 | 
					    <Compile Include="Genes\Life_Force\JobGivers\JobGiver_GetLifeForce.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\ThinkNodes\ThinkNode_NewFlirtTarget.cs" />
 | 
					    <Compile Include="Genes\Life_Force\ThinkNodes\ThinkNode_NewFlirtTarget.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
 | 
					    <Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\AgeTransferExtension.cs" />
 | 
					    <Compile Include="Genes\Special\Defs\AgeTransferExtension.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\Patch_AgeDrain.cs" />
 | 
					    <Compile Include="Genes\Special\Defs\HormonalSalivaExtension.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\Patch_OrgasmMytosis.cs" />
 | 
					    <Compile Include="Genes\Special\Patches\Patch_AgeDrain.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Special\Patches\Patch_HormonalSaliva.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Genes\Special\Patches\Patch_OrgasmMytosis.cs" />
 | 
				
			||||||
    <Compile Include="Interactions\SuccubusTailjob\CompAbility_SexInteractionRequirements.cs" />
 | 
					    <Compile Include="Interactions\SuccubusTailjob\CompAbility_SexInteractionRequirements.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_PussyHeal.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_PussyHeal.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Abilities\CompProperties_AbilityLifeForceCost.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Abilities\CompProperties_AbilityLifeForceCost.cs" />
 | 
				
			||||||
| 
						 | 
					@ -159,10 +161,10 @@
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Genes\Gene_LifeForce.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Genes\Gene_LifeForce.cs" />
 | 
				
			||||||
    <Compile Include="Genes\RJW_Gene.cs" />
 | 
					    <Compile Include="Genes\RJW_Gene.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Genitalia\GenitaliaUtility.cs" />
 | 
					    <Compile Include="Genes\Genitalia\GenitaliaUtility.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\Gene_Aphrodisiac_Pheromones.cs" />
 | 
					    <Compile Include="Genes\Special\Genes\Gene_Aphrodisiac_Pheromones.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Life_Force\Patches\Patch_SatisfyPersonal_LifeForceGain.cs" />
 | 
					    <Compile Include="Genes\Life_Force\Patches\Patch_SatisfyPersonal_LifeForceGain.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\Patch_OrgasmRush.cs" />
 | 
					    <Compile Include="Genes\Special\Patches\Patch_OrgasmRush.cs" />
 | 
				
			||||||
    <Compile Include="Genes\Special\Patch_Youth_Fountain.cs" />
 | 
					    <Compile Include="Genes\Special\Patches\Patch_Youth_Fountain.cs" />
 | 
				
			||||||
    <Compile Include="HarmonyInit.cs" />
 | 
					    <Compile Include="HarmonyInit.cs" />
 | 
				
			||||||
    <Compile Include="HediffDefOf.cs" />
 | 
					    <Compile Include="HediffDefOf.cs" />
 | 
				
			||||||
    <Compile Include="Interactions\SuccubusTailjob\CustomSexInteraction_Helper.cs" />
 | 
					    <Compile Include="Interactions\SuccubusTailjob\CustomSexInteraction_Helper.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue