diff --git a/.gitignore b/.gitignore index bd55167..971fc41 100644 --- a/.gitignore +++ b/.gitignore @@ -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 \ No newline at end of file +*.pyc diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index bba6d7a..2485a6c 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml index 4337b4e..aaf412d 100644 --- a/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml +++ b/Common/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml @@ -3,6 +3,7 @@ rjw_genes_genitalia_type + RJW_Genes.Gene_GenitaliaType
  • GenitalType
  • @@ -21,7 +22,13 @@ Carriers of this gene develop equine genitalia. Genes/Icons/Genitalia_Equine - RJW_Genes.Gene_EquineGenitalia + +
  • + HorsePenis + HorseVagina + GenericAnus +
  • +
    802
    @@ -30,7 +37,13 @@ Carriers of this gene develop canine genitalia. Genes/Icons/Genitalia_Canine - RJW_Genes.Gene_CanineGenitalia + +
  • + DogPenis + DogVagina + GenericAnus +
  • +
    803 @@ -39,7 +52,13 @@ Carriers of this gene develop feline genitalia. Genes/Icons/Genitalia_Feline - RJW_Genes.Gene_FelineGenitalia + +
  • + CatPenis + CatVagina + GenericAnus +
  • +
    804 @@ -48,7 +67,13 @@ Carriers of this gene have demonic genitalia. Genes/Icons/Genitalia_Demon - RJW_Genes.Gene_DemonicGenitalia + +
  • + DemonPenis + DemonVagina + DemonAnus +
  • +
    805 @@ -57,7 +82,13 @@ Carriers of this gene develop dragon genitalia. Genes/Icons/Genitalia_Draconic - RJW_Genes.Gene_DragonGenitalia + +
  • + DragonPenis + DragonVagina + GenericAnus +
  • +
    806 @@ -66,7 +97,13 @@ Carriers of this gene have slime genitalia. Genes/Icons/Slime_Genitalia - RJW_Genes.Gene_SlimeGenitalia + +
  • + SlimeTentacles + SlimeVagina + SlimeAnus +
  • +
    807 @@ -75,7 +112,13 @@ Carriers of this gene have demonic tentacle genitalia. Genes/Icons/Genitalia_tentacle_icon - RJW_Genes.Gene_DemonicGenitaliaTentacle + +
  • + DemonTentaclePenis + DemonVagina + DemonAnus +
  • +
    807 @@ -84,7 +127,11 @@ Carriers of this gene have crocodilian genitalia. Genes/Icons/Genitalia_croc_icon - RJW_Genes.Gene_CrocodilianGenitalia + +
  • + CrocodilianPenis +
  • +
    807 @@ -93,7 +140,11 @@ Carriers of this gene have racoon genitalia. Genes/Icons/Genitalia_racoon_icon - RJW_Genes.Gene_RacoonGenitalia + +
  • + RaccoonPenis +
  • +
    807 @@ -102,7 +153,11 @@ Carriers of this gene have reptilian genitalia. Genes/Icons/Genitalia_hemi_icon - RJW_Genes.Gene_ReptilianGenitalia + +
  • + HemiPenis +
  • +
    807 @@ -115,7 +170,12 @@ Carriers of this gene have ghost genitalia. Genes/Icons/Genitalia_ghost_icon - RJW_Genes.Gene_GhostGenitalia + +
  • + GhostPenis + GhostVagina +
  • +
    807 @@ -124,7 +184,11 @@ Carriers of this gene have rocky golem genitalia. Genes/Icons/penis_rock_icon - RJW_Genes.Gene_GolemGenitalia + +
  • + GolemPenis +
  • +
    807 @@ -133,7 +197,11 @@ Carriers of this gene have marine mammal like genitalia. Genes/Icons/Genitalia_marine_icon - RJW_Genes.Gene_MarineGenitalia + +
  • + MarinePenis +
  • +
    807 @@ -142,16 +210,25 @@ Carriers of this gene have necrotic undead genitalia. Genes/Icons/Genitalia_necro_icon - RJW_Genes.Gene_NecroGenitalia + +
  • + NecroPenis +
  • +
    807 rjw_genes_Needle_genitalia - - Carriers of this gene have marine very thin genitalia. + + Carriers of this gene have very thin genitalia. Genes/Icons/Genitalia_thin_icon - RJW_Genes.Gene_NeedleGenitalia + +
  • + NeedlePenis + NarrowVagina +
  • +
    807
    @@ -160,7 +237,11 @@ Carriers of this gene have orc genitalia. Genes/Icons/Genitalia_orc_icon - RJW_Genes.Gene_OrcGenitalia + +
  • + OrcPenis +
  • +
    807 @@ -169,8 +250,11 @@ Carriers of this gene have screw genitalia. Genes/Icons/Genitalia_screw_icon - RJW_Genes.Gene_PigGenitalia - 807 + +
  • + PigPenis +
  • +
    @@ -178,7 +262,11 @@ Carriers of this gene have alien genitalia. Genes/Icons/Genitalia_alien_icon - RJW_Genes.Gene_TentacleGenitalia + +
  • + TentaclePenis +
  • +
    807
    @@ -192,7 +280,13 @@ Carriers of this gene have ovipositors similar to insects. Genes/Icons/Ovipositor_Genitalia - RJW_Genes.Gene_OvipositorGenitalia + +
  • + OvipositorM + OvipositorF + InsectAnus +
  • +
    808 diff --git a/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs new file mode 100644 index 0000000..fce2ded --- /dev/null +++ b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs @@ -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; + } +} diff --git a/Source/Genes/Genitalia/Gene_CanineGenitalia.cs b/Source/Genes/Genitalia/Gene_CanineGenitalia.cs deleted file mode 100644 index 01f0015..0000000 --- a/Source/Genes/Genitalia/Gene_CanineGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_CrocodilianGenitalia.cs b/Source/Genes/Genitalia/Gene_CrocodilianGenitalia.cs deleted file mode 100644 index 9452382..0000000 --- a/Source/Genes/Genitalia/Gene_CrocodilianGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs b/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs deleted file mode 100644 index cc0cc29..0000000 --- a/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_DemonicGenitaliaTentacle.cs b/Source/Genes/Genitalia/Gene_DemonicGenitaliaTentacle.cs deleted file mode 100644 index 2fc1f83..0000000 --- a/Source/Genes/Genitalia/Gene_DemonicGenitaliaTentacle.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_DragonGenitalia.cs b/Source/Genes/Genitalia/Gene_DragonGenitalia.cs deleted file mode 100644 index 34d24f6..0000000 --- a/Source/Genes/Genitalia/Gene_DragonGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_EquineGenitalia.cs b/Source/Genes/Genitalia/Gene_EquineGenitalia.cs deleted file mode 100644 index 74b8b2f..0000000 --- a/Source/Genes/Genitalia/Gene_EquineGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_FelineGenitalia.cs b/Source/Genes/Genitalia/Gene_FelineGenitalia.cs deleted file mode 100644 index 2fe4882..0000000 --- a/Source/Genes/Genitalia/Gene_FelineGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_GenitaliaType.cs b/Source/Genes/Genitalia/Gene_GenitaliaType.cs new file mode 100644 index 0000000..8cdb1a5 --- /dev/null +++ b/Source/Genes/Genitalia/Gene_GenitaliaType.cs @@ -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(); + 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); + } + } +} \ No newline at end of file diff --git a/Source/Genes/Genitalia/Gene_GhostGenitalia.cs b/Source/Genes/Genitalia/Gene_GhostGenitalia.cs deleted file mode 100644 index 7fa7dc4..0000000 --- a/Source/Genes/Genitalia/Gene_GhostGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_GolemGenitalia.cs b/Source/Genes/Genitalia/Gene_GolemGenitalia.cs deleted file mode 100644 index 3a19a88..0000000 --- a/Source/Genes/Genitalia/Gene_GolemGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_MarineGenitalia.cs b/Source/Genes/Genitalia/Gene_MarineGenitalia.cs deleted file mode 100644 index b273380..0000000 --- a/Source/Genes/Genitalia/Gene_MarineGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_NecroGenitalia.cs b/Source/Genes/Genitalia/Gene_NecroGenitalia.cs deleted file mode 100644 index 2ad03b6..0000000 --- a/Source/Genes/Genitalia/Gene_NecroGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs b/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs deleted file mode 100644 index 4d0b166..0000000 --- a/Source/Genes/Genitalia/Gene_NeedleGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_OrcGenitalia.cs b/Source/Genes/Genitalia/Gene_OrcGenitalia.cs deleted file mode 100644 index cd3ef4c..0000000 --- a/Source/Genes/Genitalia/Gene_OrcGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs b/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs deleted file mode 100644 index b7a1141..0000000 --- a/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_PigGenitalia.cs b/Source/Genes/Genitalia/Gene_PigGenitalia.cs deleted file mode 100644 index c210226..0000000 --- a/Source/Genes/Genitalia/Gene_PigGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_RacoonGenitalia.cs b/Source/Genes/Genitalia/Gene_RacoonGenitalia.cs deleted file mode 100644 index 61aaf22..0000000 --- a/Source/Genes/Genitalia/Gene_RacoonGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_ReptilianGenitalia.cs b/Source/Genes/Genitalia/Gene_ReptilianGenitalia.cs deleted file mode 100644 index 65f7950..0000000 --- a/Source/Genes/Genitalia/Gene_ReptilianGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs b/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs deleted file mode 100644 index 5671f1f..0000000 --- a/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs b/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs deleted file mode 100644 index 834a32d..0000000 --- a/Source/Genes/Genitalia/Gene_TentacleGenitalia.cs +++ /dev/null @@ -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); - } - } - -} diff --git a/Source/Genes/Genitalia/GenitaliaChanger.cs b/Source/Genes/Genitalia/GenitaliaChanger.cs index 48ddc4d..86d112b 100644 --- a/Source/Genes/Genitalia/GenitaliaChanger.cs +++ b/Source/Genes/Genitalia/GenitaliaChanger.cs @@ -16,7 +16,7 @@ namespace RJW_Genes /// the new type of penis /// the new type of vagina /// the new type of anus - 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); diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs index c762071..b2c4488 100644 --- a/Source/Genes/Genitalia/GenitaliaUtility.cs +++ b/Source/Genes/Genitalia/GenitaliaUtility.cs @@ -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()?.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()?.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()?.anus ?? Genital_Helper.average_anus; } public static HediffDef GetBreastsForGene(GeneDef gene) diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 4fdea14..6ccde5f 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -86,25 +86,8 @@ - - - - - - - - - - - - - - - - - - - + + @@ -189,7 +172,7 @@ False - ..\..\rjw\1.4\Assemblies\RJW.dll + ..\..\rjw\1.5\Assemblies\RJW.dll False diff --git a/Source/Rjw-Genes.csproj.user b/Source/Rjw-Genes.csproj.user deleted file mode 100644 index 6e4223f..0000000 --- a/Source/Rjw-Genes.csproj.user +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file