mirror of
				https://github.com/vegapnk/RJW-Genes.git
				synced 2024-08-15 00:23:31 +00:00 
			
		
		
		
	Unhardcoded genital type genes
This commit is contained in:
		
							parent
							
								
									f45714c44c
								
							
						
					
					
						commit
						197634f920
					
				
					 16 changed files with 130 additions and 269 deletions
				
			
		
							
								
								
									
										23
									
								
								Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
#pragma warning disable IDE0044, CS0649 // Private fields set when def is loaded
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class GenitaliaTypeExtension : DefModExtension
 | 
			
		||||
    {
 | 
			
		||||
        private HediffDef_PartBase penis;
 | 
			
		||||
        public HediffDef_PartBase Penis => penis ?? (HediffDef_PartBase) Genital_Helper.generic_penis;
 | 
			
		||||
 | 
			
		||||
        private HediffDef_PartBase vagina;
 | 
			
		||||
        public HediffDef_PartBase Vagina => vagina ?? (HediffDef_PartBase) Genital_Helper.generic_vagina;
 | 
			
		||||
 | 
			
		||||
        private HediffDef_PartBase anus;
 | 
			
		||||
        public HediffDef_PartBase Anus => anus ?? (HediffDef_PartBase) Genital_Helper.generic_anus;
 | 
			
		||||
 | 
			
		||||
        private HediffDef_PartBase breasts;
 | 
			
		||||
        public HediffDef_PartBase Breasts => breasts ?? (HediffDef_PartBase) Genital_Helper.generic_breasts;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_CanineGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.canine_penis,Genital_Helper.canine_vagina,Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.canine_penis, Genital_Helper.canine_vagina, Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_CrocodilianGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.crocodilian_penis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.crocodilian_penis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_DemonicGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.demon_penis,Genital_Helper.demon_vagina,Genital_Helper.demon_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.demon_penis, Genital_Helper.demon_vagina, Genital_Helper.demon_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_DemonicGenitaliaTentacle : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.demonT_penis,Genital_Helper.demon_vagina,Genital_Helper.demon_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.demonT_penis, Genital_Helper.demon_vagina, Genital_Helper.demon_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_DragonGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.dragon_penis,Genital_Helper.dragon_vagina,Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.dragon_penis, Genital_Helper.dragon_vagina, Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_EquineGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.equine_penis,Genital_Helper.equine_vagina,Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.equine_penis, Genital_Helper.equine_vagina, Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_FelineGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.feline_penis,Genital_Helper.feline_vagina,Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.feline_penis, Genital_Helper.feline_vagina, Genital_Helper.generic_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										31
									
								
								Source/Genes/Genitalia/Gene_GenitaliaType.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Source/Genes/Genitalia/Gene_GenitaliaType.cs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    // bleh plural attributive noun in keeping with naming convention
 | 
			
		||||
    public class Gene_GenitaliaType : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
            Apply();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            Apply();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected virtual void Apply()
 | 
			
		||||
        {
 | 
			
		||||
            GenitaliaTypeExtension genitals = def.GetModExtension<GenitaliaTypeExtension>();
 | 
			
		||||
            if (genitals == null && RJW_Genes_Settings.rjw_genes_detailed_debug)
 | 
			
		||||
            {
 | 
			
		||||
                ModLog.Error($"Gene {def} failed to change genitals - Need a modExtension with Class=\"{typeof(GenitaliaTypeExtension).FullName}\".");
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(pawn, genitals.Penis, genitals.Vagina, genitals.Anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_OvipositorGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.ovipositorM,Genital_Helper.ovipositorF,Genital_Helper.insect_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.ovipositorM, Genital_Helper.ovipositorF, Genital_Helper.insect_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_RacoonGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.raccoon_penis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.raccoon_penis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,23 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using RimWorld;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_ReptilianGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.hemipenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.hemipenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,22 +0,0 @@
 | 
			
		|||
using Verse;
 | 
			
		||||
using rjw;
 | 
			
		||||
 | 
			
		||||
namespace RJW_Genes
 | 
			
		||||
{
 | 
			
		||||
    public class Gene_SlimeGenitalia : RJW_Gene
 | 
			
		||||
    {
 | 
			
		||||
        public override void PostMake()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostMake();
 | 
			
		||||
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn,Genital_Helper.slime_penis,Genital_Helper.slime_vagina,Genital_Helper.slime_anus);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override void PostAdd()
 | 
			
		||||
        {
 | 
			
		||||
            base.PostAdd();
 | 
			
		||||
            GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.slime_penis, Genital_Helper.slime_vagina, Genital_Helper.slime_anus);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -84,17 +84,8 @@
 | 
			
		|||
    <Compile Include="Genes\GenitaliaSize\Gene_BigMaleGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\GenitaliaSize\Patch_ResizingOnAdulthood.cs" />
 | 
			
		||||
    <Compile Include="Genes\GenitaliaSize\SizeAdjuster.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_ReptilianGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_CrocodilianGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_RacoonGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_DemonicGenitaliaTentacle.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_SlimeGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_DragonGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_FelineGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_CanineGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_OvipositorGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_DemonicGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_EquineGenitalia.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Gene_GenitaliaType.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\Defs\GenitaliaTypeExtension.cs" />
 | 
			
		||||
    <Compile Include="Genes\Genitalia\GenitaliaChanger.cs" />
 | 
			
		||||
    <Compile Include="Genes\Patch_AddNotifyOnGeneration.cs" />
 | 
			
		||||
    <Compile Include="Genes\Special\Defs\AgeTransferExtension.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue