Merge pull request #1 from flock-of-birds/generalised-genital-genes

Generalised genital genes
This commit is contained in:
Jaaldabaoth 2024-05-27 12:26:56 +02:00 committed by GitHub
commit 72b3c10c56
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 177 additions and 524 deletions

5
.gitignore vendored
View file

@ -1,7 +1,8 @@
*.user
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
@ -253,4 +254,4 @@ paket-files/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
*.pyc

Binary file not shown.

View file

@ -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,13 @@
<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>
<anus>GenericAnus</anus>
</li>
</modExtensions>
<displayOrderInCategory>802</displayOrderInCategory>
</GeneDef>
@ -30,7 +37,13 @@
<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>
<anus>GenericAnus</anus>
</li>
</modExtensions>
<displayOrderInCategory>803</displayOrderInCategory>
</GeneDef>
@ -39,7 +52,13 @@
<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>
<anus>GenericAnus</anus>
</li>
</modExtensions>
<displayOrderInCategory>804</displayOrderInCategory>
</GeneDef>
@ -48,7 +67,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 +82,13 @@
<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>
<anus>GenericAnus</anus>
</li>
</modExtensions>
<displayOrderInCategory>806</displayOrderInCategory>
</GeneDef>
@ -66,7 +97,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 +112,13 @@
<label>demonic tentacle genitalia</label>
<description>Carriers of this gene have demonic tentacle genitalia.</description>
<iconPath>Genes/Icons/Genitalia_tentacle_icon</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 +127,11 @@
<label>crocodilian genitalia</label>
<description>Carriers of this gene have crocodilian genitalia.</description>
<iconPath>Genes/Icons/Genitalia_croc_icon</iconPath>
<geneClass>RJW_Genes.Gene_CrocodilianGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>CrocodilianPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -93,7 +140,11 @@
<label>racoon genitalia</label>
<description>Carriers of this gene have racoon genitalia.</description>
<iconPath>Genes/Icons/Genitalia_racoon_icon</iconPath>
<geneClass>RJW_Genes.Gene_RacoonGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>RaccoonPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -102,7 +153,11 @@
<label>reptilian genitalia</label>
<description>Carriers of this gene have reptilian genitalia.</description>
<iconPath>Genes/Icons/Genitalia_hemi_icon</iconPath>
<geneClass>RJW_Genes.Gene_ReptilianGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>HemiPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -115,7 +170,12 @@
<label>ghost genitalia</label>
<description>Carriers of this gene have ghost genitalia.</description>
<iconPath>Genes/Icons/Genitalia_ghost_icon</iconPath>
<geneClass>RJW_Genes.Gene_GhostGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>GhostPenis</penis>
<vagina>GhostVagina</vagina>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -124,7 +184,11 @@
<label>golem genitalia</label>
<description>Carriers of this gene have rocky golem genitalia.</description>
<iconPath>Genes/Icons/penis_rock_icon</iconPath>
<geneClass>RJW_Genes.Gene_GolemGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>GolemPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -133,7 +197,11 @@
<label>marine genitalia</label>
<description>Carriers of this gene have marine mammal like genitalia.</description>
<iconPath>Genes/Icons/Genitalia_marine_icon</iconPath>
<geneClass>RJW_Genes.Gene_MarineGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>MarinePenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -142,16 +210,25 @@
<label>undead genitalia</label>
<description>Carriers of this gene have necrotic undead genitalia.</description>
<iconPath>Genes/Icons/Genitalia_necro_icon</iconPath>
<geneClass>RJW_Genes.Gene_NecroGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>NecroPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
<GeneDef ParentName="GeneGenitalTypeBase">
<defName>rjw_genes_Needle_genitalia</defName>
<label>needle genitalia</label>
<description>Carriers of this gene have marine very thin genitalia.</description>
<label>narrow genitalia</label>
<description>Carriers of this gene have very thin genitalia.</description>
<iconPath>Genes/Icons/Genitalia_thin_icon</iconPath>
<geneClass>RJW_Genes.Gene_NeedleGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>NeedlePenis</penis>
<vagina>NarrowVagina</vagina>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -160,7 +237,11 @@
<label>orc genitalia</label>
<description>Carriers of this gene have orc genitalia.</description>
<iconPath>Genes/Icons/Genitalia_orc_icon</iconPath>
<geneClass>RJW_Genes.Gene_OrcGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>OrcPenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -169,8 +250,11 @@
<label>screw genitalia</label>
<description>Carriers of this gene have screw genitalia.</description>
<iconPath>Genes/Icons/Genitalia_screw_icon</iconPath>
<geneClass>RJW_Genes.Gene_PigGenitalia</geneClass>
<displayOrderInCategory>807</displayOrderInCategory>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>PigPenis</penis>
</li>
</modExtensions>
</GeneDef>
<GeneDef ParentName="GeneGenitalTypeBase">
@ -178,7 +262,11 @@
<label>alien genitalia</label>
<description>Carriers of this gene have alien genitalia.</description>
<iconPath>Genes/Icons/Genitalia_alien_icon</iconPath>
<geneClass>RJW_Genes.Gene_TentacleGenitalia</geneClass>
<modExtensions>
<li Class="RJW_Genes.GenitaliaTypeExtension">
<penis>TentaclePenis</penis>
</li>
</modExtensions>
<displayOrderInCategory>807</displayOrderInCategory>
</GeneDef>
@ -192,7 +280,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>

View file

@ -0,0 +1,15 @@
using Verse;
using RimWorld;
using rjw;
namespace RJW_Genes
{
public class GenitaliaTypeExtension : DefModExtension
{
public HediffDef_PartBase penis;
public HediffDef_PartBase vagina;
public HediffDef_PartBase anus;
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View 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);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_GhostGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_GolemGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_MarineGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_NecroGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_NeedleGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_OrcGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -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);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_PigGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -1,22 +0,0 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_TentacleGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -16,7 +16,7 @@ namespace RJW_Genes
/// <param name="penisReplacement">the new type of penis</param>
/// <param name="vaginaReplacement">the new type of vagina</param>
/// <param name="anusReplacement">the new type of anus</param>
public static void ChangeGenitalia(Pawn pawn, HediffDef penisReplacement, HediffDef vaginaReplacement, HediffDef anusReplacement)
public static void ChangeGenitalia(Pawn pawn, HediffDef penisReplacement = null, HediffDef vaginaReplacement = null, HediffDef anusReplacement = null)
{
var oldParts = Genital_Helper.get_AllPartsHediffList(pawn);
BodyPartRecord correctBPR;
@ -34,13 +34,13 @@ namespace RJW_Genes
replacementGenital = null;
CompHediff = null;
if (Genital_Helper.is_penis(existingGenital))
if (Genital_Helper.is_penis(existingGenital) && penisReplacement != null && existingGenital.def != penisReplacement)
replacementGenital = HediffMaker.MakeHediff(penisReplacement, pawn, correctBPR);
if (Genital_Helper.is_vagina(existingGenital))
if (Genital_Helper.is_vagina(existingGenital) && vaginaReplacement != null && existingGenital.def != vaginaReplacement)
replacementGenital = HediffMaker.MakeHediff(vaginaReplacement, pawn, correctBPR);
if (IsAnus(existingGenital))
if (IsAnus(existingGenital) && anusReplacement != null && existingGenital.def != anusReplacement)
{
correctBPR = Genital_Helper.get_anusBPR(pawn);
replacementGenital = HediffMaker.MakeHediff(anusReplacement, pawn, correctBPR);

View file

@ -19,7 +19,7 @@ namespace RJW_Genes
foreach (var gene in pawn.genes.GenesListForReading)
{
if (gene.def.defName.Contains("rjw_genes") && gene.def.defName.EndsWith("_genitalia"))
if (gene is Gene_GenitaliaType)
if (!gene.Overridden)
return gene.def;
}
@ -29,60 +29,19 @@ namespace RJW_Genes
public static HediffDef GetPenisForGene(GeneDef gene)
{
if (gene == null)
return Genital_Helper.average_penis;
switch (gene.defName)
{
case "rjw_genes_equine_genitalia": return Genital_Helper.equine_penis;
case "rjw_genes_canine_genitalia": return Genital_Helper.canine_penis;
case "rjw_genes_feline_genitalia": return Genital_Helper.feline_penis;
case "rjw_genes_demonic_genitalia": return Genital_Helper.demon_penis;
case "rjw_genes_dragon_genitalia": return Genital_Helper.dragon_penis;
case "rjw_genes_slime_genitalia": return Genital_Helper.slime_penis;
case "rjw_genes_ovipositor_genitalia": return Genital_Helper.ovipositorM;
default: return Genital_Helper.average_penis;
}
return gene?.GetModExtension<GenitaliaTypeExtension>()?.penis ?? Genital_Helper.average_penis;
}
public static HediffDef GetVaginaForGene(GeneDef gene)
{
if (gene == null)
return Genital_Helper.average_vagina;
switch (gene.defName)
{
case "rjw_genes_equine_genitalia": return Genital_Helper.equine_vagina;
case "rjw_genes_canine_genitalia": return Genital_Helper.canine_vagina;
case "rjw_genes_feline_genitalia": return Genital_Helper.feline_vagina;
case "rjw_genes_demonic_genitalia": return Genital_Helper.demon_vagina;
case "rjw_genes_dragon_genitalia": return Genital_Helper.dragon_vagina;
case "rjw_genes_slime_genitalia": return Genital_Helper.slime_vagina;
case "rjw_genes_ovipositor_genitalia": return Genital_Helper.ovipositorF;
default: return Genital_Helper.average_vagina;
}
return gene?.GetModExtension<GenitaliaTypeExtension>()?.vagina ?? Genital_Helper.average_vagina;
}
public static HediffDef GetAnusForGene(GeneDef gene)
{
if (gene == null)
return Genital_Helper.average_anus;
switch (gene.defName)
{
//TODO: Do I want the default to be generic or average for feline,equine and canine?
case "rjw_genes_equine_genitalia": return Genital_Helper.average_anus;
case "rjw_genes_canine_genitalia": return Genital_Helper.average_anus;
case "rjw_genes_feline_genitalia": return Genital_Helper.average_anus;
case "rjw_genes_demonic_genitalia": return Genital_Helper.demon_anus;
case "rjw_genes_dragon_genitalia": return Genital_Helper.average_anus;
case "rjw_genes_slime_genitalia": return Genital_Helper.slime_anus;
case "rjw_genes_ovipositor_genitalia": return Genital_Helper.insect_anus;
default: return Genital_Helper.generic_anus;
}
//TODO: Do I want the default to be generic or average for feline,equine and canine?
return gene?.GetModExtension<GenitaliaTypeExtension>()?.anus ?? Genital_Helper.average_anus;
}
public static HediffDef GetBreastsForGene(GeneDef gene)

View file

@ -86,25 +86,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_TentacleGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_GolemGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_OrcGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_GhostGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_NecroGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_MarineGenitalia.cs" />
<Compile Include="Genes\Genitalia\Gene_PigGenitalia.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_NeedleGenitalia.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\Life_Force\Abilities\AbilityUtility.cs" />
<Compile Include="Genes\Life_Force\Abilities\CompAbilityEffect_CasterIsNaked.cs" />
@ -189,7 +172,7 @@
</Reference>
<Reference Include="RJW, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\rjw\1.4\Assemblies\RJW.dll</HintPath>
<HintPath>..\..\rjw\1.5\Assemblies\RJW.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="RJWSexperience">

View file

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ReferencePath>
</ReferencePath>
</PropertyGroup>
</Project>