diff --git a/1.6/Assemblies/Rjw-Genes.dll b/1.6/Assemblies/Rjw-Genes.dll index 4778bf2..bb86a3a 100644 Binary files a/1.6/Assemblies/Rjw-Genes.dll and b/1.6/Assemblies/Rjw-Genes.dll differ diff --git a/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml b/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml index eec2a22..6bb3aea 100644 --- a/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml +++ b/1.6/Defs/GeneDefs/GeneDefs_ExtraGenitalia.xml @@ -8,6 +8,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + 20 +
  • diff --git a/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml b/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml index eb68666..bf99e12 100644 --- a/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml +++ b/1.6/Defs/GeneDefs/GeneDefs_Fluids.xml @@ -11,6 +11,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + 50 +
  • @@ -72,6 +75,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + 50 +
  • diff --git a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml index 208b193..a2c66f9 100644 --- a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml +++ b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaSizes.xml @@ -5,11 +5,14 @@ -
  • - Genes/Icons/RJW_Genes_Endogene_Background - Genes/Icons/RJW_Genes_Xenogene_Background -
  • -
    +
  • + Genes/Icons/RJW_Genes_Endogene_Background + Genes/Icons/RJW_Genes_Xenogene_Background +
  • +
  • + 50 +
  • + diff --git a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml index 543c542..244c72f 100644 --- a/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml +++ b/1.6/Defs/GeneDefs/GeneDefs_GenitaliaTypes.xml @@ -14,6 +14,9 @@ Genes/Icons/RJW_Genes_Endogene_Background Genes/Icons/RJW_Genes_Xenogene_Background +
  • + 30 +
  • diff --git a/1.6/Patches/Xenotypes/PatchBSSneks.xml b/1.6/Patches/Xenotypes/PatchBSSneks.xml index 173a3df..be6b17a 100644 --- a/1.6/Patches/Xenotypes/PatchBSSneks.xml +++ b/1.6/Patches/Xenotypes/PatchBSSneks.xml @@ -11,9 +11,9 @@ Defs/XenotypeDef[defName = "LoS_Lamia" or defName = "LoS_TrueLamia" or defName = "Naga" - or defName = "Los_Adderman" - or defName = "Los_Anacondaman" - or defName = "Los_Snakeman"]/genes + or defName = "LoS_Adderman" + or defName = "LoS_Anacondaman" + or defName = "LoS_Snakeman"]/genes
  • rjw_genes_reptilian_genitalia
  • diff --git a/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml b/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml deleted file mode 100644 index 9f32522..0000000 --- a/1.6/Patches/Xenotypes/PatchBiotechNyaron.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - -
  • Biotech Nyaron
  • -
    - - Defs/XenotypeDef[defName="Nyaron"]/genes - -
  • rjw_genes_feline_genitalia
  • -
    -
    -
    -
    \ No newline at end of file diff --git a/1.6/Patches/Xenotypes/PatchImphileeXeno.xml b/1.6/Patches/Xenotypes/PatchImphileeXeno.xml deleted file mode 100644 index 4a8655f..0000000 --- a/1.6/Patches/Xenotypes/PatchImphileeXeno.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - -
  • - -
  • Imphilee Xeno
  • - - - Defs/XenotypeDef[defName="LD_Imphilee"]/genes - -
  • rjw_genes_tight_female_genitalia
  • -
  • rjw_genes_small_breasts
  • -
  • rjw_genes_elasticity
  • -
  • rjw_genes_demonic_genitalia
  • -
    -
    - -
  • - -
  • Imphilee Xeno
  • - - - Defs/XenotypeDef[defName="LD_Imphilee_Overlord"]/genes - -
  • rjw_genes_tight_female_genitalia
  • -
  • rjw_genes_small_breasts
  • -
  • rjw_genes_elasticity
  • -
  • rjw_genes_demonic_genitalia
  • -
  • rjw_genes_rapist
  • -
    -
    - -
    -
    -
    diff --git a/1.6/Patches/Xenotypes/PatchNyaron.xml b/1.6/Patches/Xenotypes/PatchNyaron.xml index 4ad40a5..8d9848a 100644 --- a/1.6/Patches/Xenotypes/PatchNyaron.xml +++ b/1.6/Patches/Xenotypes/PatchNyaron.xml @@ -12,4 +12,16 @@ + + +
  • [CAP]Biotech Nyaron HAR Addition
  • +
    + + Defs/XenotypeDef[defName="Nyaron"]/genes + +
  • rjw_genes_tight_female_genitalia
  • +
  • rjw_genes_feline_genitalia
  • +
    +
    +
    \ No newline at end of file diff --git a/1.6/Patches/Xenotypes/PatchPapou.xml b/1.6/Patches/Xenotypes/PatchPapou.xml index 39a6e81..361aa89 100644 --- a/1.6/Patches/Xenotypes/PatchPapou.xml +++ b/1.6/Patches/Xenotypes/PatchPapou.xml @@ -2,10 +2,10 @@ -
  • Papou Race : emotional birds
  • +
  • Papou Xenotype: Emotional Birds (Continued)
  • - Defs/XenotypeDef[defName="papago"]/genes + Defs/XenotypeDef[defName="Papago"]/genes
  • rjw_genes_orgasm_rush
  • rjw_genes_tight_female_genitalia
  • diff --git a/1.6/Patches/Xenotypes/PatchRoosFaun.xml b/1.6/Patches/Xenotypes/PatchRoosFaun.xml index 64ee8ad..7d27b2f 100644 --- a/1.6/Patches/Xenotypes/PatchRoosFaun.xml +++ b/1.6/Patches/Xenotypes/PatchRoosFaun.xml @@ -7,7 +7,7 @@ Defs/XenotypeDef[defName="RBSF_Faun"]/genes -
  • rjw_genes_equine_genitalia
  • +
  • rjw_genes_Needle_genitalia
  • rjw_genes_zoophile
  • rjw_genes_mating_call
  • rjw_genes_tight_female_genitalia
  • diff --git a/1.6/Patches/Xenotypes/PatchRoosSatyr.xml b/1.6/Patches/Xenotypes/PatchRoosSatyr.xml index b82b1e1..e2bdfe7 100644 --- a/1.6/Patches/Xenotypes/PatchRoosSatyr.xml +++ b/1.6/Patches/Xenotypes/PatchRoosSatyr.xml @@ -7,8 +7,10 @@ Defs/XenotypeDef[defName="RBSF_Satyr"]/genes +
  • rjw_genes_equine_genitalia
  • rjw_genes_aphrodisiac_pheromones
  • rjw_genes_much_fluid
  • +
  • rjw_genes_zoophile
  • diff --git a/1.6/Patches/Xenotypes/PatchPigskins.xml b/1.6/Patches/Xenotypes/PatchVREPigskins.xml similarity index 100% rename from 1.6/Patches/Xenotypes/PatchPigskins.xml rename to 1.6/Patches/Xenotypes/PatchVREPigskins.xml diff --git a/1.6/Patches/Xenotypes/PatchSaurid.xml b/1.6/Patches/Xenotypes/PatchVRESaurid.xml similarity index 100% rename from 1.6/Patches/Xenotypes/PatchSaurid.xml rename to 1.6/Patches/Xenotypes/PatchVRESaurid.xml diff --git a/1.6/Rjw-Genes.sln b/1.6/Rjw-Genes.sln index 86df24b..3cee1cf 100644 --- a/1.6/Rjw-Genes.sln +++ b/1.6/Rjw-Genes.sln @@ -15,8 +15,8 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.ActiveCfg = Release|Any CPU - {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.Build.0 = Release|Any CPU + {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Debug|Any CPU.Build.0 = Debug|Any CPU {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Release|Any CPU.ActiveCfg = Release|Any CPU {D7D21B4A-1DA7-41D8-B202-C58CA8FA62AA}.Release|Any CPU.Build.0 = Release|Any CPU {3BF2C17E-C492-44DA-8BC4-7AF6ADEB6468}.Debug|Any CPU.ActiveCfg = Debug|Any CPU diff --git a/1.6/Source/Common/Defs/ChanceExtension.cs b/1.6/Source/Common/Defs/ChanceExtension.cs index ff8b260..111f73e 100644 --- a/1.6/Source/Common/Defs/ChanceExtension.cs +++ b/1.6/Source/Common/Defs/ChanceExtension.cs @@ -11,5 +11,4 @@ namespace RJW_Genes { public float chance; } - } diff --git a/1.6/Source/Common/Defs/SexualizerGeneExtension.cs b/1.6/Source/Common/Defs/SexualizerGeneExtension.cs new file mode 100644 index 0000000..b8fd7e8 --- /dev/null +++ b/1.6/Source/Common/Defs/SexualizerGeneExtension.cs @@ -0,0 +1,25 @@ +using Verse; + +namespace RJW_Genes +{ + + /// + /// Used by the 'On Sexualization' Patch to determine if a gene needs to be applied, and what order to do so. + /// This Extension is applied to RJW related genes that Depend on the order they are Applied in, + /// using the following basic values + /// + /// 10 Unused. + /// 20 Genes that Alter the Number of sexual parts a Pawn may have. (Includes the Zero Genes?) + /// 30 Genes that Alter the type of genitals a Pawn may have. + /// 40 Genes that Add a specific genital type to the pawn. + /// 50 Genes that alter the values on a pawns genitals such as size or fluid type. + /// +#pragma warning disable CS0649 //Disable the warning for a variable that is 'unset'. + internal class SexualizerGeneExtension : DefModExtension + { + + public int order; + + } +#pragma warning restore CS0649 +} diff --git a/1.6/Source/Common/patches/Patch_RJWSexualizer.cs b/1.6/Source/Common/patches/Patch_RJWSexualizer.cs new file mode 100644 index 0000000..3deabc1 --- /dev/null +++ b/1.6/Source/Common/patches/Patch_RJWSexualizer.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; + +namespace RJW_Genes +{ + internal static class Patch_RJWSexualizer + { + /// + /// This Harmony patch is called after Sexualiser, and runs all the genes on that pawn that would have not been functional before sexualization. + /// + public static void ApplyGenesPostfix(Pawn pawn) + { + //Generate a sorted list of Genes that need to be processed. + if (pawn == null) return; + Dictionary> geneDict = new Dictionary>(); + if (pawn.genes == null) return; + foreach (Gene curGene in pawn.genes.GenesListForReading) + { + + if (!curGene.def.HasModExtension()) continue; + + SexualizerGeneExtension geneExtension = curGene.def.GetModExtension(); + if (geneDict.ContainsKey(geneExtension.order)) + { + geneDict[geneExtension.order].Add(curGene); + } + else + { + geneDict.Add(geneExtension.order, new List { curGene }); + } + + + } + //Once we have the List, iterate over it to run the relavant functions. + List keysList = geneDict.Keys.ToList(); + keysList.Sort(); + foreach (int key in keysList) + { + foreach (var curGene in geneDict[key]) + { + curGene.PostAdd(); + } + } + } + } +} diff --git a/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj b/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj index 6207e63..025c5d6 100644 --- a/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj +++ b/1.6/Source/CumpilationLoader/CumpilationPatcher.csproj @@ -15,7 +15,7 @@ true - full + portable false ..\..\Mods\Cumpilation\Assemblies\ diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs index 277691c..527ac35 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs @@ -16,22 +16,22 @@ namespace RJW_Genes // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 - if (HasAlreadyTwoAnus()) - { - return; - } + //if (HasAlreadyTwoAnus()) + //{ + // return; + //} - if (additional_anus == null) - { - CreateAndAddAnus(); - } + //if (additional_anus == null) + //{ + // CreateAndAddAnus(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 if (HasAlreadyTwoAnus()) diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs index b763a64..64e44d4 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs @@ -16,23 +16,23 @@ namespace RJW_Genes // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 - if (HasAlreadyTwoBreasts()) - { - return; - } + //if (HasAlreadyTwoBreasts()) + //{ + // return; + //} - // Tits are only added for female pawns! - if (GenderUtility.IsFemale(pawn) && additional_breasts == null) - { - CreateAndAddBreasts(); - } + //// Tits are only added for female pawns! + //if (GenderUtility.IsFemale(pawn) && additional_breasts == null) + //{ + // CreateAndAddBreasts(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 if (HasAlreadyTwoBreasts()) diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs index 5bacdbd..34926d5 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs @@ -16,23 +16,23 @@ namespace RJW_Genes // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 - if (HasAlreadyTwoPenis()) - { - return; - } + //if (HasAlreadyTwoPenis()) + //{ + // return; + //} // Penis are only added for male pawns! - if (GenderUtility.IsMale(pawn) && additional_penis == null) - { - CreateAndAddPenis(); - } + //if (GenderUtility.IsMale(pawn) && additional_penis == null) + //{ + // CreateAndAddPenis(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 if (HasAlreadyTwoPenis()) diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs index 179742b..2771bd6 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs @@ -21,23 +21,23 @@ namespace RJW_Genes // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 - if (HasAlreadyTwoVaginas()) - { - return; - } + //if (HasAlreadyTwoVaginas()) + //{ + // return; + //} - // Vaginas are only added for female pawns! - if (GenderUtility.IsFemale(pawn) && additional_vagina == null) - { - CreateAndAddVagina(); - } + //// Vaginas are only added for female pawns! + //if (GenderUtility.IsFemale(pawn) && additional_vagina == null) + //{ + // CreateAndAddVagina(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Some sources add Genes before they fire, e.g. Character Editor // This should harden the gene, to solve #19 if (HasAlreadyTwoVaginas()) diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs index df07876..cf0ad0b 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_FeaturelessChest.cs @@ -11,18 +11,18 @@ namespace RJW_Genes { base.PostMake(); - if (removed_breasts == null) - { - RemoveButStoreBreasts(); - AddFeaturelessBreast(); - } + //if (removed_breasts == null) + //{ + // RemoveButStoreBreasts(); + // AddFeaturelessBreast(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. if (removed_breasts == null) { RemoveButStoreBreasts(); diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs index b3e9140..d78043f 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_Femboy.cs @@ -15,6 +15,7 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. if (GenderUtility.IsMale(this.pawn) && this.additional_genital == null) { this.CreateAndAddVagina(); diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs index 011b466..0de91a3 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_Futa.cs @@ -19,7 +19,7 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // If the Pawn is already a Futa, do not do anything. Can Happen by Base-RJW Spawn Chance or potentially races / other mods. if (IsAlreadyFuta(pawn)) { diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs index 11f8706..de609a2 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_NoAnus.cs @@ -13,17 +13,17 @@ namespace RJW_Genes { base.PostMake(); - if (removed_anus == null) - { - RemoveButStoreAnus(); - } + //if (removed_anus == null) + //{ + // RemoveButStoreAnus(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. if (removed_anus == null) { RemoveButStoreAnus(); diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs index f1e6aed..acd9135 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_NoBreasts.cs @@ -13,18 +13,18 @@ namespace RJW_Genes { base.PostMake(); - // Breasts are removed for female pawns! - if (GenderUtility.IsFemale(pawn) && oldSize < 0) - { - RemoveButStoreBreasts(); - } + //// Breasts are removed for female pawns! + //if (GenderUtility.IsFemale(pawn) && oldSize < 0) + //{ + // RemoveButStoreBreasts(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Breasts are removed for female pawns! if (GenderUtility.IsFemale(pawn) && oldSize < 0) { diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs index 5471309..54e4c20 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_NoPenis.cs @@ -13,18 +13,18 @@ namespace RJW_Genes { base.PostMake(); - // Penis are only removed for male pawns! - if (GenderUtility.IsMale(pawn) && removed_penis == null) - { - RemoveButStorePenis(); - } + //// Penis are only removed for male pawns! + //if (GenderUtility.IsMale(pawn) && removed_penis == null) + //{ + // RemoveButStorePenis(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Penis are only removed for male pawns! if (GenderUtility.IsMale(pawn) && removed_penis == null) { diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs index c5ec081..29f1be1 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_NoVagina.cs @@ -14,17 +14,17 @@ namespace RJW_Genes base.PostMake(); // Vaginas are only removed for female pawns! - if (GenderUtility.IsFemale(pawn) && removed_vagina == null) - { - RemoveButStoreVagina(); - } + //if (GenderUtility.IsFemale(pawn) && removed_vagina == null) + //{ + // RemoveButStoreVagina(); + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. // Vaginas are only removed for female pawns! if (GenderUtility.IsFemale(pawn) && removed_vagina == null) { diff --git a/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs b/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs index ce53b43..0fdd0fe 100644 --- a/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs +++ b/1.6/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs @@ -27,7 +27,7 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); - + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. AddUdders(); } diff --git a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs index 49c84a2..89bd8f6 100644 --- a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs +++ b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidAmount.cs @@ -9,15 +9,16 @@ { base.PostMake(); - float multipier = FluidUtility.LookupFluidMultiplier(this); - FluidUtility.MultiplyFluidAmountBy(pawn, multipier); - has_been_fired = true; + //float multipier = FluidUtility.LookupFluidMultiplier(this); + //FluidUtility.MultiplyFluidAmountBy(pawn, multipier); + //has_been_fired = true; } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. if (!has_been_fired) { float multipier = FluidUtility.LookupFluidMultiplier(this); diff --git a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs index 4745828..1531f7e 100644 --- a/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs +++ b/1.6/Source/Genes/Fluid/Genes/Gene_ChangeFluidType.cs @@ -18,6 +18,7 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. Apply(); } diff --git a/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs b/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs index 551f5ea..57d3635 100644 --- a/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs +++ b/1.6/Source/Genes/Gender/Genes/Gene_FemaleOnly.cs @@ -15,8 +15,10 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostMake(); - AdjustPawnToFemale(); - GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn); + if (this.Active) { + AdjustPawnToFemale(); + GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn); + } } private void AdjustPawnToFemale() diff --git a/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs b/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs index 4f530f6..5d6d272 100644 --- a/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs +++ b/1.6/Source/Genes/Gender/Genes/Gene_GenderFluid.cs @@ -56,14 +56,16 @@ namespace RJW_Genes // Case 2: Check every interval if the Chance triggers else if (pawn.IsHashIntervalTick(change_interval) && (new Random()).NextDouble() < switch_chance) { + // Case 2.A - if the Pawn is Pregnant, do not allow sex change this interval. + if (pawn.IsPregnant()) return; - // Case 2.A) SexChange was blocked, postpone it + // Case 2.B) SexChange was blocked, postpone it if (SexChangeBlocked(pawn)) { sexChangeWasBlocked |= true; return; } - // Case 2.B) Nothing blocking, change the sex. + // Case 2.C) Nothing blocking, change the sex. else { ChangeSex();} } diff --git a/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs b/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs index b25bfa1..ca405e4 100644 --- a/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs +++ b/1.6/Source/Genes/Gender/Genes/Gene_MaleOnly.cs @@ -15,8 +15,11 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostMake(); - AdjustPawnToMale(); - GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn); + if (this.Active) + { + AdjustPawnToMale(); + GenderUtility.RemoveSexChangeThoughtsIfTooYoung(this.pawn); + } } private void AdjustPawnToMale() diff --git a/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs b/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs index b33a210..41b85be 100644 --- a/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs +++ b/1.6/Source/Genes/Genitalia/Gene_GenitaliaType.cs @@ -13,6 +13,7 @@ namespace RJW_Genes { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. Apply(); } diff --git a/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs b/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs index fd1a5f1..fd9a2f2 100644 --- a/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs +++ b/1.6/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs @@ -32,17 +32,18 @@ namespace RJW_Genes public override void PostMake() { base.PostMake(); - if (pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age) - { - Resize(); - ResizingWasApplied = true; - } + //if (pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age) + //{ + // Resize(); + // ResizingWasApplied = true; + //} } public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. base.PostAdd(); + if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) return; //If pawn hasn't been sexualized yet, skip. if (pawn.ageTracker.AgeBiologicalYears >= RJW_Genes_Settings.rjw_genes_resizing_age) { Resize(); diff --git a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs index 4a00846..c80ecb5 100644 --- a/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs +++ b/1.6/Source/Genes/GenitaliaSize/Genes/Gene_EvergrowingGenitalia.cs @@ -46,8 +46,13 @@ namespace RJW_Genes } // Increase Fluid - if (CompHediff != null) + // Increase Fluid, if it's already above 10x don't increase to avoid crash issues. + if (CompHediff != null && (CompHediff.partFluidMultiplier < 100)) + { CompHediff.partFluidMultiplier *= 1.05f; + if (CompHediff.partFluidMultiplier > 100) + CompHediff.partFluidMultiplier = 100; + } } } diff --git a/1.6/Source/Genes/Patches/PatchLitteredBirth.cs b/1.6/Source/Genes/Patches/PatchLitteredBirth.cs index 90c4f12..3a938d5 100644 --- a/1.6/Source/Genes/Patches/PatchLitteredBirth.cs +++ b/1.6/Source/Genes/Patches/PatchLitteredBirth.cs @@ -38,7 +38,6 @@ namespace RJW_Genes ModLog.Message("Pawn: " + __instance.pawn.NameShortColored + " (" + __instance.pawn.ThingID + ")"); ModLog.Message("birthCount: " + laborStateMap.TryGetValue(__instance.pawn.ThingID).birthCount); } - return; } @@ -46,7 +45,7 @@ namespace RJW_Genes if (laborStateIsNull && hasLitteredBirthsGene) { ModLog.Message("Found littered births gene"); - int litteredBirthsTotalRoll = Rand.RangeInclusive(2, 4); + int litteredBirthsTotalRoll = Rand.RangeInclusive(1, 3); laborStateMap.SetOrAdd(__instance.pawn.ThingID, new LaborState(__instance.pawn, litteredBirthsTotalRoll)); return; } @@ -119,7 +118,7 @@ namespace RJW_Genes return; } - if (currentLaborState.birthTotal == currentLaborState.birthCount) + if (currentLaborState.birthTotal <= currentLaborState.birthCount) { laborStateMap.Remove(__instance.pawn.ThingID); if (__instance.pawn.health.hediffSet.HasHediff(HediffDef.Named("Bioscaffold"))) diff --git a/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs b/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs index 4e5ea56..ccc4adb 100644 --- a/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs +++ b/1.6/Source/Genes/Patches/Patch_sexualize_pawn.cs @@ -6,8 +6,11 @@ using System.Threading.Tasks; using rjw; using Verse; + + namespace RJW_Genes { + [Obsolete] internal static class Patch_sexualize_pawn { /// diff --git a/1.6/Source/Genes/RJW_Gene.cs b/1.6/Source/Genes/RJW_Gene.cs index b97dbd7..a036554 100644 --- a/1.6/Source/Genes/RJW_Gene.cs +++ b/1.6/Source/Genes/RJW_Gene.cs @@ -19,12 +19,7 @@ namespace RJW_Genes public override void PostAdd() { if (pawn.kindDef == null) return; //Added to catch Rimworld creating statues of pawns. - if (GenitaliaUtility.PawnStillNeedsGenitalia(pawn)) - { - Sexualizer.sexualize_pawn(pawn); - } base.PostAdd(); - } @@ -37,5 +32,8 @@ namespace RJW_Genes public virtual void Notify_OnPawnGeneration() { } + + + public virtual void Notify_OnPawnSexualization() { } } } diff --git a/1.6/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs b/1.6/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs index 48a035f..2d806da 100644 --- a/1.6/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs +++ b/1.6/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs @@ -59,9 +59,13 @@ namespace RJW_Genes } CompHediff.UpdateSeverity(); - // Increase Fluid - if (CompHediff != null) + // Increase Fluid, if it's already above 10x don't increase to avoid crash issues. + if (CompHediff != null && (CompHediff.partFluidMultiplier < 100)) + { CompHediff.partFluidMultiplier *= cum_multiplier; + if (CompHediff.partFluidMultiplier > 100) + CompHediff.partFluidMultiplier = 100; + } } } diff --git a/1.6/Source/HarmonyInit.cs b/1.6/Source/HarmonyInit.cs index 7f0a376..0ba3837 100644 --- a/1.6/Source/HarmonyInit.cs +++ b/1.6/Source/HarmonyInit.cs @@ -48,10 +48,12 @@ namespace RJW_Genes //harmony.Patch(AccessTools.Method(typeof(Quirk), nameof(Quirk.CountSatisfiedQuirks)), //postfix: new HarmonyMethod(typeof(QuirkPatcher), nameof(QuirkPatcher.CountSatisfiedPostfix))); - + //RJW.Sexualizer.sexualize_pawn harmony.Patch(AccessTools.Method(typeof(Sexualizer), nameof(Sexualizer.sexualize_pawn)), - prefix: new HarmonyMethod(typeof(Patch_sexualize_pawn), nameof(Patch_sexualize_pawn.PreFix))); + //prefix: new HarmonyMethod(typeof(Patch_sexualize_pawn), nameof(Patch_sexualize_pawn.PreFix))); //Old Method that ran Sexualize early. + postfix: new HarmonyMethod(typeof(Patch_RJWSexualizer), nameof(Patch_RJWSexualizer.ApplyGenesPostfix))); + //Patch for Elastic Gene support with Eltoro's Streching mod. diff --git a/1.6/Source/Properties/AssemblyInfo.cs b/1.6/Source/Properties/AssemblyInfo.cs index 5dbde35..9381075 100644 --- a/1.6/Source/Properties/AssemblyInfo.cs +++ b/1.6/Source/Properties/AssemblyInfo.cs @@ -32,4 +32,4 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.6.2")] +[assembly: AssemblyVersion("2.7.0")] diff --git a/1.6/Source/Rjw-Genes.csproj b/1.6/Source/Rjw-Genes.csproj index 6d77471..2404ae3 100644 --- a/1.6/Source/Rjw-Genes.csproj +++ b/1.6/Source/Rjw-Genes.csproj @@ -22,6 +22,16 @@ 4 false + + ..\Assemblies\ + true + AnyCPU + 9 + prompt + portable + true + TRACE;DEBUG + @@ -31,6 +41,7 @@ + @@ -41,6 +52,7 @@ + diff --git a/About/About.xml b/About/About.xml index 41240b4..c6f0f05 100644 --- a/About/About.xml +++ b/About/About.xml @@ -1,27 +1,64 @@ RJW Genes - Vegapnk - 1.6 Rewrite by Telanda + +
  • Vegapnk
  • +
  • 1.6 Rewrite by Telanda
  • +
    Vegapnk.rjw.genes - 2.6.2 + 2.7.0
  • 1.4
  • 1.5
  • 1.6
  • - -Adds Genes for RJW Content. + Adds Genes for RJW Content. Adds: - Genes for Genitalia Types and Sizes - Fertilin, a resource similiar to Hemogen, and accompanying sex-vampires - Mechanics for Breeding and being Breed by Animals and Insects -- Inherit genes from bestiality or produce VGE-Hybrids - Male / Female Only, MPreg, Genderfluid Pawns - Orgasmic Mytosis, Orgasmic Supercharging, Age-Transfer on Sex, Pheromones - Cum-Amount changes, Cumflation Immunity - Horny Pheromones, Animal Mating Call - Genetic Diseases that Spread on Intercourse -- Patches for some popular Xenotypes from the Workshop - Sexual Taming of Animals + +Patches for the following Xenotype Mods +- Alpha Genes +- Biotech Expansion - Mammalia +- Biotech Expansion - Mythic +- Biotech Nyaron +- Big and Small Heaven and Hell +- Big and Small More Xenotypes +- Big and Small - Races +- Big and Small - Slimes +- Big and Small - Lamias and other Snake-People +- Big and Small - Vampires and the Undead +- Big and Small - Yokai +- Erin's Auronya +- Erin's Shisune +- Kijin Race 3.0 +- NaraiXenotype +- Obsidia Expansion - Arachnas Xenotype +- Papou Xenotype: Emotional Birds (Continued) +- Rimsenal Xenotype Pack - Askbarn +- Roo's Faun Xenotype +- Roo's Minotaur Xenotype +- Roo's Satyr Xenotype +- Vanilla Races Expanded - Android +- Vanilla Races Expanded - Archon +- Vanilla Races Expanded - Fungoid +- Vanilla Races Expanded - Genie +- Vanilla Races Expanded - Highmate +- Vanilla Races Expanded - Lycanthrope +- Vanilla Races Expanded - Pigskin +- Vanilla Races Expanded - Phytokin +- Vanilla Races Expanded - Sanguophage +- Vanilla Races Expanded - Saurid +- [LTS]Xenotech + +For Feedback or Support please see the Rimjob World Discord! +https://discord.gg/UWZ3WfVWeK https://github.com/vegapnk/RJW-Genes @@ -40,27 +77,51 @@ Adds: steam://url/CommunityFilePage/2009463077 https://github.com/pardeike/HarmonyRimWorld/releases/latest - -
  • Ludeon.RimWorld
  • -
  • Ludeon.RimWorld.Royalty
  • -
  • Ludeon.RimWorld.Ideology
  • -
  • Ludeon.RimWorld.Biotech
  • -
  • rim.job.world
  • +
  • ASMR.RJW.RaceSupport
  • +
  • biotexpans.insect
  • +
  • biotexpans.mammalia
  • +
  • biotexpans.mythic
  • brrainz.harmony
  • +
  • CaptoLamia.NyaronBioTechHAR
  • +
  • erin.auronyabiotech
  • +
  • erin.shisune
  • +
  • Ludeon.RimWorld.Biotech
  • +
  • Ludeon.RimWorld.Ideology
  • +
  • Ludeon.RimWorld.Royalty
  • +
  • Ludeon.RimWorld
  • +
  • lyzz.naraixenotype
  • +
  • obsidiaexpansion.xenos.arachnas
  • OskarPotocki.VanillaFactionsExpanded.Core
  • -
  • sarg.alphaanimals
  • -
  • Sl4vP0weR.DominantGene
  • +
  • oskarpotocki.vfe.empire
  • +
  • redmattis.bsslimes
  • +
  • redmattis.heaven
  • +
  • redmattis.lamiasandothersnakes
  • +
  • redmattis.undead
  • +
  • redmattis.yokai
  • +
  • rim.job.world
  • +
  • rimsenal.askbarn
  • rjw.sexperience.cumgenes
  • +
  • sarg.alphaanimals
  • +
  • sarg.alphagenes
  • +
  • Sl4vP0weR.DominantGene
  • +
  • ssulunge.kijinrace3
  • +
  • tug.minotaur
  • +
  • tug.satyr
  • +
  • v.rooboid.faun
  • +
  • VanillaExpanded.VGeneticsE
  • +
  • vanillaracesexpanded.android
  • +
  • vanillaracesexpanded.archon
  • +
  • vanillaracesexpanded.fungoid
  • +
  • vanillaracesexpanded.genie
  • +
  • vanillaracesexpanded.highmate
  • +
  • vanillaracesexpanded.lycanthrope
  • +
  • vanillaracesexpanded.phytokin
  • +
  • vanillaracesexpanded.sanguophage
  • +
  • vanillaracesexpanded.saurid
  • vegapnk.cumpilation
  • +
  • zal.papou
  • diff --git a/About/Manifest.xml b/About/Manifest.xml index 0cd2bf9..f10acfc 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW-Genes - 2.6.2 + 2.7.0
  • RimJobWorld
  • diff --git a/CHANGELOG.md b/CHANGELOG.md index e044bfc..671b325 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,51 @@ -#INPROG +# 2.7.0 (23-07-2026) +(Commit by @Telanda-DDS) + +### Fixes. +- Rewrite of how Genital Genes handle non-Sexualised pawns, should address most 'extra genitals' bugs. +- Gender Fluid no longer allows sex changes while a pawn is pregnant. +- Updated Big & Small - Lamia Patches to account for changes in Def Capitalisation. +- Hormonal Saliva & Evergrowth now have a caps on fluid production, pawns should no longer grow so productive their cumshots crash the game. + + +### Xenotypes. +I've done a Check over the included xenotype patches, A few Xenotypes that hadn't been updated to 1.6 have been removed, and minor fixes Applied to other races. The current Supported Xenotype list is as following. +- Alpha Genes +- Biotech Expansion - Mammalia +- Biotech Expansion - Mythic +- Biotech Nyaron +- Big and Small Heaven and Hell +- Big and Small More Xenotypes +- Big and Small - Races +- Big and Small - Slimes +- Big and Small - Lamias and other Snake-People +- Big and Small - Vampires and the Undead +- Big and Small - Yokai +- Erin's Auronya +- Erin's Shisune +- Kijin Race 3.0 +- NaraiXenotype +- Obsidia Expansion - Arachnas Xenotype +- Papou Xenotype: Emotional Birds (Continued) +- Rimsenal Xenotype Pack - Askbarn +- Roo's Faun Xenotype +- Roo's Minotaur Xenotype +- Roo's Satyr Xenotype +- Vanilla Races Expanded - Android +- Vanilla Races Expanded - Archon +- Vanilla Races Expanded - Fungoid +- Vanilla Races Expanded - Genie +- Vanilla Races Expanded - Highmate +- Vanilla Races Expanded - Lycanthrope +- Vanilla Races Expanded - Pigskin +- Vanilla Races Expanded - Phytokin +- Vanilla Races Expanded - Sanguophage +- Vanilla Races Expanded - Saurid +- \[LTS\]Xenotech + +### Known Issues. +- Fertile Anus gene is Unreliable, and does not work with Biotech Pregnancies Enabled in RJW. (Waiting for large Upstream patch to RJW Core to be accepted.) + # 2.6.2 (15-02-2026) (Commit by @Telanda-DDS)