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
Binary file not shown.
|
@ -3,6 +3,7 @@
|
|||
|
||||
<GeneDef Name="GeneGenitalTypeBase" Abstract="True">
|
||||
<displayCategory>rjw_genes_genitalia_type</displayCategory>
|
||||
<geneClass>RJW_Genes.Gene_GenitaliaType</geneClass>
|
||||
<exclusionTags>
|
||||
<li>GenitalType</li>
|
||||
</exclusionTags>
|
||||
|
@ -21,7 +22,12 @@
|
|||
<label>equine genitalia</label>
|
||||
<description>Carriers of this gene develop equine genitalia.</description>
|
||||
<iconPath>Genes/Icons/Genitalia_Equine</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_EquineGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>HorsePenis</penis>
|
||||
<vagina>HorseVagina</vagina>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>802</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -30,7 +36,12 @@
|
|||
<label>canine genitalia</label>
|
||||
<description>Carriers of this gene develop canine genitalia.</description>
|
||||
<iconPath>Genes/Icons/Genitalia_Canine</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_CanineGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>DogPenis</penis>
|
||||
<vagina>DogVagina</vagina>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>803</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -39,7 +50,12 @@
|
|||
<label>feline genitalia</label>
|
||||
<description>Carriers of this gene develop feline genitalia.</description>
|
||||
<iconPath>Genes/Icons/Genitalia_Feline</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_FelineGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>CatPenis</penis>
|
||||
<vagina>CatVagina</vagina>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>804</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -48,7 +64,13 @@
|
|||
<label>demonic genitalia</label>
|
||||
<description>Carriers of this gene have demonic genitalia.</description>
|
||||
<iconPath>Genes/Icons/Genitalia_Demon</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_DemonicGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>DemonPenis</penis>
|
||||
<vagina>DemonVagina</vagina>
|
||||
<anus>DemonAnus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>805</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -57,7 +79,12 @@
|
|||
<label>dragon genitalia</label>
|
||||
<description>Carriers of this gene develop dragon genitalia.</description>
|
||||
<iconPath>Genes/Icons/Genitalia_Draconic</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_DragonGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>DragonPenis</penis>
|
||||
<vagina>DragonVagina</vagina>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>806</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -66,7 +93,13 @@
|
|||
<label>slime genitalia</label>
|
||||
<description>Carriers of this gene have slime genitalia.</description>
|
||||
<iconPath>Genes/Icons/Slime_Genitalia</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_SlimeGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>SlimeTentacles</penis>
|
||||
<vagina>SlimeVagina</vagina>
|
||||
<anus>SlimeAnus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>807</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -75,7 +108,13 @@
|
|||
<label>demonic tentacle genitalia</label>
|
||||
<description>Carriers of this gene have demonic tentacle genitalia.</description>
|
||||
<iconPath>Genes/Icons/Placeholder</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_DemonicGenitaliaTentacle</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>DemonTentaclePenis</penis>
|
||||
<vagina>DemonVagina</vagina>
|
||||
<anus>DemonAnus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>807</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -84,7 +123,13 @@
|
|||
<label>crocodilian genitalia</label>
|
||||
<description>Carriers of this gene have crocodilian genitalia.</description>
|
||||
<iconPath>Genes/Icons/Placeholder</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_CrocodilianGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>CrocodilianPenis</penis>
|
||||
<vagina>Vagina</vagina>
|
||||
<anus>Anus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>807</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -93,7 +138,13 @@
|
|||
<label>racoon genitalia</label>
|
||||
<description>Carriers of this gene have racoon genitalia.</description>
|
||||
<iconPath>Genes/Icons/Placeholder</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_RacoonGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>RaccoonPenis</penis>
|
||||
<vagina>Vagina</vagina>
|
||||
<anus>Anus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>807</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -102,7 +153,13 @@
|
|||
<label>reptilian genitalia</label>
|
||||
<description>Carriers of this gene have reptilian genitalia.</description>
|
||||
<iconPath>Genes/Icons/Placeholder</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_ReptilianGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>HemiPenis</penis>
|
||||
<vagina>Vagina</vagina>
|
||||
<anus>Anus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>807</displayOrderInCategory>
|
||||
</GeneDef>
|
||||
|
||||
|
@ -111,7 +168,13 @@
|
|||
<label>insect genitalia</label>
|
||||
<description>Carriers of this gene have ovipositors similar to insects.</description>
|
||||
<iconPath>Genes/Icons/Ovipositor_Genitalia</iconPath>
|
||||
<geneClass>RJW_Genes.Gene_OvipositorGenitalia</geneClass>
|
||||
<modExtensions>
|
||||
<li Class="RJW_Genes.GenitaliaTypeExtension">
|
||||
<penis>OvipositorM</penis>
|
||||
<vagina>OvipositorF</vagina>
|
||||
<anus>InsectAnus</anus>
|
||||
</li>
|
||||
</modExtensions>
|
||||
<displayOrderInCategory>808</displayOrderInCategory>
|
||||
|
||||
<exclusionTags>
|
||||
|
|
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…
Reference in a new issue