From 1a132da48a4b0ff5b70496250735fc8789619938 Mon Sep 17 00:00:00 2001 From: a flock of birds <97801845+flock-of-birds@users.noreply.github.com> Date: Sun, 26 May 2024 23:57:57 +0100 Subject: [PATCH] GenitaliaUtility tweaks - Un-hardcoded GetXForGene methods, allowing genderbending genes to affect more part types * Left GetBreastsForGene alone for now since genital genes don't currently seem to change breasts when added initially - Refactored GetGenitaliaTypeGeneForPawn to use shared gene class instead of requiring defName take a specific form --- Common/Assemblies/Rjw-Genes.dll | Bin 118272 -> 117248 bytes Source/Genes/Genitalia/GenitaliaUtility.cs | 44 +++------------------ 2 files changed, 6 insertions(+), 38 deletions(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 09355541fe0e872a450fda520eb6045112253687..21f6bf2bc5eeab013becc43d9e800b17b3ee38ec 100644 GIT binary patch delta 29378 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 delta 30273 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

tlD*K=tkest4m1TJ2XBmWJ~p1&V99=6drRM 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 Y#HV|_kBXZ*X>{fu>v8eDXiPKyUz}_BVgLXD diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs index c762071..7c889df 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; } @@ -32,18 +32,7 @@ namespace RJW_Genes 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; } @@ -52,37 +41,16 @@ namespace RJW_Genes 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)