From ee85bd750de5eb5f5b0914af8d553b2d3cce66eb Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sat, 7 Jan 2023 16:51:34 +0100 Subject: [PATCH 1/9] Fixed Age-Drain Meme to lock to 20y and not ... 14, which is rimworld adult age --- Source/Common/ModLog.cs | 34 ++++++++++++++++++++ Source/Genes/GeneUtility.cs | 2 +- Source/Genes/Special/Patch_AgeDrain.cs | 8 +++-- Source/Genes/Special/Patch_Youth_Fountain.cs | 14 ++++++-- 4 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 Source/Common/ModLog.cs diff --git a/Source/Common/ModLog.cs b/Source/Common/ModLog.cs new file mode 100644 index 0000000..407520a --- /dev/null +++ b/Source/Common/ModLog.cs @@ -0,0 +1,34 @@ +using Verse; + +namespace RJW_Genes +{ + internal class ModLog + { + public static string ModId => "RJW-Genes"; + + /// + /// Logs the given message with [SaveStorage.ModId] appended. + /// + public static void Error(string message) + { + Log.Error($"[{ModId}] {message}"); + } + + /// + /// Logs the given message with [SaveStorage.ModId] appended. + /// + public static void Message(string message) + { + Log.Message($"[{ModId}] {message}"); + } + + /// + /// Logs the given message with [SaveStorage.ModId] appended. + /// + public static void Warning(string message) + { + Log.Warning($"[{ModId}] {message}"); + } + + } +} diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 07a5c24..e2ac018 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -32,7 +32,7 @@ namespace RJW_Genes return pawn.genes.HasGene(GeneDefOf.rjw_genes_youth_fountain); } - internal static bool IsAgeDrainer(Pawn pawn) + public static bool IsAgeDrainer(Pawn pawn) { if (pawn.genes == null) { diff --git a/Source/Genes/Special/Patch_AgeDrain.cs b/Source/Genes/Special/Patch_AgeDrain.cs index 981f483..2c7e55d 100644 --- a/Source/Genes/Special/Patch_AgeDrain.cs +++ b/Source/Genes/Special/Patch_AgeDrain.cs @@ -13,9 +13,11 @@ namespace RJW_Genes.Genes.Special { const long AGE_TRANSFERED = 120000; // 120k == 2 days + // 20 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety + const long MINIMUM_AGE = 20 * 60 * 60000 + 1; // Comment Below in for debugging, changes years - // const long AGE_TRANSFERED = 6000000; // 6000k == 100 days + // const long AGE_TRANSFERED = 12000000; public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal() ) @@ -25,12 +27,12 @@ namespace RJW_Genes.Genes.Special if (GeneUtility.IsAgeDrainer(props.pawn)) { var pawnAge = props.pawn.ageTracker.AgeBiologicalTicks; - var pawnMinAge = props.pawn.ageTracker.AdultMinAgeTicks; + //ModLog.Error($"Firing Age Drain \nMinimum Age is \t{MINIMUM_AGE} \nPawn Age is \t{pawnAge} \nTransferred \t{AGE_TRANSFERED}\nResulting in \t{pawnAge - AGE_TRANSFERED}"); // Make Partner older props.partner.ageTracker.AgeBiologicalTicks += AGE_TRANSFERED; // Make Pawn younger - props.pawn.ageTracker.AgeBiologicalTicks = Math.Max(pawnMinAge, pawnAge - AGE_TRANSFERED); + props.pawn.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, (pawnAge - AGE_TRANSFERED)); } } diff --git a/Source/Genes/Special/Patch_Youth_Fountain.cs b/Source/Genes/Special/Patch_Youth_Fountain.cs index f2c7e13..a1a1840 100644 --- a/Source/Genes/Special/Patch_Youth_Fountain.cs +++ b/Source/Genes/Special/Patch_Youth_Fountain.cs @@ -13,9 +13,11 @@ namespace RJW_Genes.Genes.Special { const long AGE_REDUCTION = 60000; // 60k == 1 day + // 20 Years * 60 Days / Year * 60k Ticks/Day + 1 for safety + const long MINIMUM_AGE = 20 * 60 * 60000 + 1; // Comment Below in for debugging - //const long AGE_REDUCTION = 6000000; // 6000k == 100 days + // const long AGE_REDUCTION = 6000000; // 6000k == 100 days public static void Postfix(SexProps props) { if (props == null || props.pawn == null || props.partner == null || props.partner.IsAnimal()) @@ -25,12 +27,18 @@ namespace RJW_Genes.Genes.Special if (GeneUtility.IsYouthFountain(props.pawn)) { var partnerAge = props.partner.ageTracker.AgeBiologicalTicks; - var minAge = props.partner.ageTracker.AdultMinAgeTicks; - props.partner.ageTracker.AgeBiologicalTicks = Math.Max(minAge, partnerAge - AGE_REDUCTION); + //ModLog.Error($"Firing Youth Fountain \nMinimum Age is \t{MINIMUM_AGE}\t{ticksToYears(MINIMUM_AGE)}y\nPawn Age is \t{partnerAge}\t{ticksToYears(partnerAge)}y \nTransferred \t {AGE_REDUCTION}\t{ticksToYears(AGE_REDUCTION)}y\nResulting in \t{partnerAge - AGE_REDUCTION}\t{ticksToYears(partnerAge - AGE_REDUCTION)}y"); + + props.partner.ageTracker.AgeBiologicalTicks = Math.Max(MINIMUM_AGE, partnerAge - AGE_REDUCTION); } } + private static float ticksToYears(long ticks) + { + return (ticks / 60000f) / 60f; + } } + } From be7f280ae75815e2d77ce6e5b304db9e43db0a4f Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 08:07:51 +0100 Subject: [PATCH 2/9] Added Sexuality Genes --- CHANGELOG.md | 1 + Common/Defs/Genes/GeneDefs_Reproduction.xml | 37 +++++++++++++++++++++ Source/GeneDefOf.cs | 4 ++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 22ede1f..65f6229 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Features: - Orgasm Rush got a Hediff - Unbreakable Gene - Age-Transfer and Youth-Fountain per Sex Gene +- Bisexual and Homosexual Genes with Placeholder Icon - Balancing some Genes by changing metabolism and complexity Succubus: diff --git a/Common/Defs/Genes/GeneDefs_Reproduction.xml b/Common/Defs/Genes/GeneDefs_Reproduction.xml index 614bb38..97fb937 100644 --- a/Common/Defs/Genes/GeneDefs_Reproduction.xml +++ b/Common/Defs/Genes/GeneDefs_Reproduction.xml @@ -29,4 +29,41 @@ + + + rjw_genes_homosexual + + Reproduction + This Gene makes you gay. + UI\Ideoligions\Universal\RoundC + 0 + 3 + +
  • + Gay +
  • +
    + +
  • rjw_genes_sexual_orientation
  • +
    +
    + + + rjw_genes_bisexual + + Reproduction + Carriers of this Gene are Bisexual. + UI\Ideoligions\Universal\RoundC + 0 + 4 + +
  • + Bisexual +
  • +
    + +
  • rjw_genes_sexual_orientation
  • +
    +
    + \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index d2130af..6b13cfb 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -51,6 +51,7 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_mechbreeder; public static readonly GeneDef rjw_genes_insectincubator; public static readonly GeneDef rjw_genes_insectbreeder; + public static readonly GeneDef rjw_genes_zoophile; // Cum public static readonly GeneDef rjw_genes_no_cum; @@ -63,7 +64,8 @@ namespace RJW_Genes // Reproduction public static readonly GeneDef rjw_genes_hypersexual; public static readonly GeneDef rjw_genes_rapist; - public static readonly GeneDef rjw_genes_zoophile; + public static readonly GeneDef rjw_genes_homosexual; + public static readonly GeneDef rjw_genes_bisexual; // Damage & Side Effects [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_elasticity; From fd88a138486be08ece3083874c7bcbd8880eed69 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 08:14:18 +0100 Subject: [PATCH 3/9] Fixed #2 by checking if pawn is already a futa before adding extra genitalia --- CHANGELOG.md | 1 + Source/Genes/ExtraGenitalia/Gene_Futa.cs | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65f6229..3bce20b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ Fixes: - Issue with Breast-Size (#8) fixed by lowercasing breast-match (Shabakur) - Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5) +- Futa Gene only triggers if Pawn is not a futa already (#2) # 1.0.1 (2022-12-20) diff --git a/Source/Genes/ExtraGenitalia/Gene_Futa.cs b/Source/Genes/ExtraGenitalia/Gene_Futa.cs index 2d9f367..812f381 100644 --- a/Source/Genes/ExtraGenitalia/Gene_Futa.cs +++ b/Source/Genes/ExtraGenitalia/Gene_Futa.cs @@ -13,6 +13,12 @@ namespace RJW_Genes { base.PostMake(); + // 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)) + { + return; + } + if (GenderUtility.IsFemale(pawn) && additional_genital == null) { createAndAddPenis(); @@ -27,6 +33,12 @@ namespace RJW_Genes { base.PostAdd(); + // 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)) + { + return; + } + if (pawn.gender == Gender.Female && additional_genital == null) { createAndAddPenis(); @@ -79,5 +91,15 @@ namespace RJW_Genes pawn.health.AddHediff(additional_genital, partBPR); } + private static bool IsAlreadyFuta(Pawn pawn) + { + if (pawn == null) + return false; + if (!Genital_Helper.has_genitals(pawn)) + return false; + return + (Genital_Helper.has_penis_fertile(pawn) || Genital_Helper.has_penis_infertile(pawn)) + && Genital_Helper.has_vagina(pawn) ; + } } } From 4cd77eba50898fe98f4bca11030512b9d2a4163d Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 09:18:04 +0100 Subject: [PATCH 4/9] Resizing Genes now trigger on 20th Birthday Earliest, Fixes #11 --- CHANGELOG.md | 1 + Common/Defs/Genes/GeneCategories.xml | 2 +- Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml | 16 +++--- Source/Genes/GeneUtility.cs | 21 ++++++++ Source/Genes/GenitaliaSize/Gene_BigBreasts.cs | 18 ++----- .../GenitaliaSize/Gene_BigMaleGenitalia.cs | 16 ++---- .../Gene_GenitaliaResizingGene.cs | 49 +++++++++++++++++++ Source/Genes/GenitaliaSize/Gene_LooseAnus.cs | 20 ++------ .../Gene_LooseFemaleGenitalia.cs | 20 ++------ .../Genes/GenitaliaSize/Gene_SmallBreasts.cs | 17 ++----- .../GenitaliaSize/Gene_SmallMaleGenitalia.cs | 16 ++---- Source/Genes/GenitaliaSize/Gene_TightAnus.cs | 17 ++----- .../Gene_TightFemaleGenitalia.cs | 16 ++---- .../Patch_ResizingOnAdulthood.cs | 30 ++++++++++++ 14 files changed, 140 insertions(+), 119 deletions(-) create mode 100644 Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs create mode 100644 Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bce20b..28a4e46 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ Fixes: - Issue with Breast-Size (#8) fixed by lowercasing breast-match (Shabakur) - Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5) - Futa Gene only triggers if Pawn is not a futa already (#2) +- Genitalia Resizing triggers on 20th Birthday (#11) # 1.0.1 (2022-12-20) diff --git a/Common/Defs/Genes/GeneCategories.xml b/Common/Defs/Genes/GeneCategories.xml index ab92117..81208b9 100644 --- a/Common/Defs/Genes/GeneCategories.xml +++ b/Common/Defs/Genes/GeneCategories.xml @@ -57,7 +57,7 @@ rjw_genes_special - + 8 diff --git a/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml b/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml index 89bc7f9..cc26c04 100644 --- a/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml +++ b/Common/Defs/Genes/GeneDefs_GenitaliaSizes.xml @@ -9,7 +9,7 @@ rjw_genes_big_male_genitalia - Penises of this Xenotype are bigger. + Penises of this Xenotype are bigger.(Resizing takes place at 20th Birthday) Genes/Icons/Small_Male_Genitalia RJW_Genes.Gene_BigMaleGenitalia 751 @@ -21,7 +21,7 @@ rjw_genes_small_male_genitalia - Penises of this Xenotype are smaller. + Penises of this Xenotype are smaller. (Resizing takes place at 20th Birthday) Genes/Icons/Big_Male_Genitalia RJW_Genes.Gene_SmallMaleGenitalia 753 @@ -34,7 +34,7 @@ rjw_genes_loose_female_genitalia - Vaginas of this Xenotype are quite spacy. + Vaginas of this Xenotype are quite spacy. (Resizing takes place at 20th Birthday) Genes/Icons/Loose_Female_Genitalia RJW_Genes.Gene_LooseFemaleGenitalia 754 @@ -46,7 +46,7 @@ rjw_genes_tight_female_genitalia - Vaginas of this Xenotype are pretty tight. + Vaginas of this Xenotype are pretty tight.(Resizing takes place at 20th Birthday) Genes/Icons/Tight_Female_Genitalia RJW_Genes.Gene_TightFemaleGenitalia 756 @@ -59,7 +59,7 @@ rjw_genes_big_breasts - Females of this Xenotype have big honkers. + Females of this Xenotype have big honkers.(Resizing takes place at 20th Birthday) Genes/Icons/Big_Breasts RJW_Genes.Gene_BigBreasts 757 @@ -71,7 +71,7 @@ rjw_genes_small_breasts - Females of this Xenotype have smaller breasts. + Females of this Xenotype have smaller breasts.(Resizing takes place at 20th Birthday) Genes/Icons/Small_Breasts RJW_Genes.Gene_SmallBreasts 759 @@ -84,7 +84,7 @@ rjw_genes_loose_anus - The Anus of this Xenotype is roomy. + The Anus of this Xenotype is roomy.(Resizing takes place at 20th Birthday) Genes/Icons/Loose_Anus RJW_Genes.Gene_LooseAnus 760 @@ -96,7 +96,7 @@ rjw_genes_tight_anus - The anus of this Xenotype is small. + The anus of this Xenotype is small.(Resizing takes place at 20th Birthday) Genes/Icons/Tight_Anus RJW_Genes.Gene_TightAnus 762 diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index e2ac018..d9251d3 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Verse; namespace RJW_Genes @@ -95,5 +96,25 @@ namespace RJW_Genes return pawn.genes.HasGene(GeneDefOf.rjw_genes_unbreakable); } + + public static bool HasGenitaliaResizingGenes(Pawn pawn) + { + return !GetGenitaliaResizingGenes(pawn).NullOrEmpty(); + } + + public static List GetGenitaliaResizingGenes(Pawn pawn) + { + var ResizingGenes = new List(); + + // Error Handling: Issue with Pawn or Genes return empty. + if (pawn == null || pawn.genes == null) + return ResizingGenes; + + foreach (Gene g in pawn.genes.GenesListForReading) + if (g is Gene_GenitaliaResizingGene) + ResizingGenes.Add(g); + + return ResizingGenes; + } } } \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_BigBreasts.cs b/Source/Genes/GenitaliaSize/Gene_BigBreasts.cs index b0e61ad..b1c6e4f 100644 --- a/Source/Genes/GenitaliaSize/Gene_BigBreasts.cs +++ b/Source/Genes/GenitaliaSize/Gene_BigBreasts.cs @@ -1,24 +1,12 @@ using Verse; namespace RJW_Genes { - public class Gene_BigBreasts : RJW_Gene + public class Gene_BigBreasts : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - - if (pawn.gender == Gender.Female) - SizeAdjuster.AdjustAllBreastSizes(pawn,0.5f,1.0f); - } - - public override void PostAdd() - { - base.PostAdd(); if (pawn.gender == Gender.Female) SizeAdjuster.AdjustAllBreastSizes(pawn, 0.5f, 1.0f); } - - } -} +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_BigMaleGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_BigMaleGenitalia.cs index b04df46..8cee1ef 100644 --- a/Source/Genes/GenitaliaSize/Gene_BigMaleGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_BigMaleGenitalia.cs @@ -1,20 +1,10 @@ namespace RJW_Genes { - public class Gene_BigMaleGenitalia : RJW_Gene + public class Gene_BigMaleGenitalia : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - - SizeAdjuster.AdjustAllPenisSizes(pawn,0.5f,1.0f); - } - - public override void PostAdd() - { - base.PostAdd(); SizeAdjuster.AdjustAllPenisSizes(pawn, 0.5f, 1.0f); } - } -} +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs b/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs new file mode 100644 index 0000000..ee24126 --- /dev/null +++ b/Source/Genes/GenitaliaSize/Gene_GenitaliaResizingGene.cs @@ -0,0 +1,49 @@ +namespace RJW_Genes +{ + /// + /// Parent Gene for Genitalia Resizing. All Resizing genes should inherit for this class. + /// + /// This helps with some functions (e.g. "hasGenitaliaResizingGenes(pawn)") but also to fire genitalia resizing later in life for Pawns. + /// (No Children with huge ding dongs, and I don't want kids with tight anuses I am not that degenerate) + /// + public abstract class Gene_GenitaliaResizingGene : RJW_Gene + { + + public const int RESIZING_AGE = 20; + public bool WasApplied { get; set; } + + public override void PostMake() + { + base.PostMake(); + if (pawn.ageTracker.AgeBiologicalYears >= RESIZING_AGE) + { + Resize(); + WasApplied = true; + } + } + + public override void PostAdd() + { + base.PostAdd(); + if (pawn.ageTracker.AgeBiologicalYears >= RESIZING_AGE) + { + Resize(); + WasApplied = true; + } + } + + /// + /// Used to resize the pawns genitalia. + /// All Logic should be put here: + /// 1. Filters for Gender + /// 2. Filters for Genitalia Existance + /// 3. Selection of right Genitalia + /// 4. Adjustment of Size + /// + /// I kept it intentionally broad, so that e.g. the Penis Resize can resize multiple penises and also for futas, + /// while the breast-gene is female only. + /// + public abstract void Resize(); + + } +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_LooseAnus.cs b/Source/Genes/GenitaliaSize/Gene_LooseAnus.cs index f5a5312..520eb5a 100644 --- a/Source/Genes/GenitaliaSize/Gene_LooseAnus.cs +++ b/Source/Genes/GenitaliaSize/Gene_LooseAnus.cs @@ -1,22 +1,12 @@ -namespace RJW_Genes +using Verse; + +namespace RJW_Genes { - public class Gene_LooseAnus : RJW_Gene + public class Gene_LooseAnus : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - SizeAdjuster.AdjustAllAnusSizes(pawn, 0.5f, 1.0f); } - - public override void PostAdd() - { - base.PostAdd(); - SizeAdjuster.AdjustAllAnusSizes(pawn, 0.5f, 1.0f); - } - - - } } diff --git a/Source/Genes/GenitaliaSize/Gene_LooseFemaleGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_LooseFemaleGenitalia.cs index 68578b6..2885c07 100644 --- a/Source/Genes/GenitaliaSize/Gene_LooseFemaleGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_LooseFemaleGenitalia.cs @@ -1,22 +1,12 @@ -namespace RJW_Genes +using Verse; + +namespace RJW_Genes { - public class Gene_LooseFemaleGenitalia : RJW_Gene + public class Gene_LooseFemaleGenitalia : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - SizeAdjuster.AdjustAllVaginaSizes(pawn, 0.5f, 1.0f); } - - public override void PostAdd() - { - base.PostAdd(); - SizeAdjuster.AdjustAllVaginaSizes(pawn, 0.5f, 1.0f); - } - - - } } diff --git a/Source/Genes/GenitaliaSize/Gene_SmallBreasts.cs b/Source/Genes/GenitaliaSize/Gene_SmallBreasts.cs index d5b4a4e..2e8af43 100644 --- a/Source/Genes/GenitaliaSize/Gene_SmallBreasts.cs +++ b/Source/Genes/GenitaliaSize/Gene_SmallBreasts.cs @@ -1,18 +1,11 @@ -namespace RJW_Genes +using Verse; + +namespace RJW_Genes { - public class Gene_SmallBreasts : RJW_Gene + public class Gene_SmallBreasts : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - - SizeAdjuster.AdjustAllBreastSizes(pawn, 0.0f, 0.5f); - } - - public override void PostAdd() - { - base.PostAdd(); SizeAdjuster.AdjustAllBreastSizes(pawn, 0.0f, 0.5f); } } diff --git a/Source/Genes/GenitaliaSize/Gene_SmallMaleGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_SmallMaleGenitalia.cs index 12ba154..ce5d33a 100644 --- a/Source/Genes/GenitaliaSize/Gene_SmallMaleGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_SmallMaleGenitalia.cs @@ -1,20 +1,10 @@ namespace RJW_Genes { - public class Gene_SmallMaleGenitalia : RJW_Gene + public class Gene_SmallMaleGenitalia : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - - SizeAdjuster.AdjustAllPenisSizes(pawn,0.0f,0.5f); - } - - public override void PostAdd() - { - base.PostAdd(); SizeAdjuster.AdjustAllPenisSizes(pawn, 0.0f, 0.5f); } - } -} +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_TightAnus.cs b/Source/Genes/GenitaliaSize/Gene_TightAnus.cs index 56f52cd..443aba7 100644 --- a/Source/Genes/GenitaliaSize/Gene_TightAnus.cs +++ b/Source/Genes/GenitaliaSize/Gene_TightAnus.cs @@ -1,21 +1,10 @@ namespace RJW_Genes { - public class Gene_TightAnus : RJW_Gene + public class Gene_TightAnus : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - SizeAdjuster.AdjustAllAnusSizes(pawn, 0.0f, 0.5f); } - - public override void PostAdd() - { - base.PostAdd(); - SizeAdjuster.AdjustAllAnusSizes(pawn, 0.0f, 0.5f); - } - - } -} +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Gene_TightFemaleGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_TightFemaleGenitalia.cs index 53ec2a7..306635d 100644 --- a/Source/Genes/GenitaliaSize/Gene_TightFemaleGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_TightFemaleGenitalia.cs @@ -1,20 +1,10 @@ namespace RJW_Genes { - public class Gene_TightFemaleGenitalia : RJW_Gene + public class Gene_TightFemaleGenitalia : Gene_GenitaliaResizingGene { - - public override void PostMake() + public override void Resize() { - base.PostMake(); - SizeAdjuster.AdjustAllVaginaSizes(pawn, 0.0f, 0.5f); } - - public override void PostAdd() - { - base.PostAdd(); - SizeAdjuster.AdjustAllVaginaSizes(pawn, 0.0f, 0.5f); - } - } -} +} \ No newline at end of file diff --git a/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs b/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs new file mode 100644 index 0000000..b8542a0 --- /dev/null +++ b/Source/Genes/GenitaliaSize/Patch_ResizingOnAdulthood.cs @@ -0,0 +1,30 @@ +using HarmonyLib; +using Verse; + +namespace RJW_Genes +{ + /// + /// This Patch adds behavior to all resizing genes: + /// At Age RESIZING_MIN_AGE the Pawns Resizing Genes will trigger again, if not already triggered somewhere else. + /// This is meant to allow kids to grow up without resized genitals, and resize later (Fixing #11). + /// + [HarmonyPatch(typeof(Pawn_AgeTracker), "BirthdayBiological")] + public class Patch_ResizingOnAdulthood + { + + static void Postfix(Pawn ___pawn, int birthdayAge) + { + if (birthdayAge >= Gene_GenitaliaResizingGene.RESIZING_AGE) + { + foreach(Gene_GenitaliaResizingGene gene in GeneUtility.GetGenitaliaResizingGenes(___pawn)) + { + if (!gene.WasApplied) + { + gene.Resize(); + gene.WasApplied = true; + } + } + } + } + } +} \ No newline at end of file From ba7b72b42668e2c0f467df6d85bd1f5dfb85427d Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 09:50:29 +0100 Subject: [PATCH 5/9] Minor Cleanups --- Source/Animal_Inheritance/RaceGeneDef_Helper.cs | 11 ++++++----- Source/Genes/GeneUtility.cs | 10 +++++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs index 680b155..3db664c 100644 --- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -1,11 +1,8 @@ -using System; +using rjw; +using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using rjw; using Verse; -using RimWorld; namespace RJW_BGS { @@ -44,6 +41,7 @@ namespace RJW_BGS }).ToList(); if (pawnKindDefs.Count() > 0) return pawnKindDefs; + List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) { List raceNames = group.raceNames; @@ -51,6 +49,7 @@ namespace RJW_BGS }).ToList(); if (raceKindDefs.Count() > 0) return raceKindDefs; + List raceGroupDefs = new List(); if (raceGroupDef != null) { @@ -60,8 +59,10 @@ namespace RJW_BGS return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName; }).ToList(); } + if (raceGroupDefs.Count() > 0) return raceGroupDefs; + return new List(); } } diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index d9251d3..284aab2 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -102,17 +102,17 @@ namespace RJW_Genes return !GetGenitaliaResizingGenes(pawn).NullOrEmpty(); } - public static List GetGenitaliaResizingGenes(Pawn pawn) + public static List GetGenitaliaResizingGenes(Pawn pawn) { - var ResizingGenes = new List(); + var ResizingGenes = new List(); // Error Handling: Issue with Pawn or Genes return empty. if (pawn == null || pawn.genes == null) return ResizingGenes; - foreach (Gene g in pawn.genes.GenesListForReading) - if (g is Gene_GenitaliaResizingGene) - ResizingGenes.Add(g); + foreach (Gene gene in pawn.genes.GenesListForReading) + if (gene is Gene_GenitaliaResizingGene resizing_gene) + ResizingGenes.Add(resizing_gene); return ResizingGenes; } From 46436a9e04035ce05076b1b6ef74dc4c0d19cdf1 Mon Sep 17 00:00:00 2001 From: Shabakur Date: Sun, 15 Jan 2023 13:30:33 +0100 Subject: [PATCH 6/9] Implemented racegroups as list Added variable racegroups, which allows multiple racegroups to be selected (usefull for rjw race support). Racegroup is still present for backward compatibility. --- Common/Assemblies/Rjw-Genes.dll | Bin 43008 -> 43008 bytes .../RaceGeneDefs_Vanilla_Racegroups.xml | 48 +++++++++++++++--- .../RaceGeneDefs/RaceGeneDefs_template.xml | 23 ++++++--- Source/Animal_Inheritance/RaceGeneDef.cs | 4 +- .../Animal_Inheritance/RaceGeneDef_Helper.cs | 6 ++- 5 files changed, 61 insertions(+), 20 deletions(-) diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index 5785b36754dcabce37b6476f1cecfe21c7590f3d..d3be5b009b7e3c02bc958f276f42746fa19afb84 100644 GIT binary patch delta 8920 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 delta 8816 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 diff --git a/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml b/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml index cfd2154..6148308 100644 --- a/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml +++ b/Common/Defs/RaceGeneDefs/RaceGeneDefs_Vanilla_Racegroups.xml @@ -2,7 +2,12 @@ Canine - Canine_Group + +

  • Canine_Group
  • +
  • CanineAnimal
  • +
  • CanineSingleGenderAnimal
  • +
  • CanineSkinAnimal
  • +
  • Ears_Floppy @@ -38,7 +43,11 @@ Insect - Insect_Group + +
  • Insect_Group
  • +
  • ArthropodOvipositorAnimal
  • +
  • ArthropodOvipositorHornyAnimal
  • +
  • Beauty_Ugly @@ -73,7 +82,14 @@ Feline - Feline_Group + +
  • Feline_Group
  • +
  • FelineAnimal
  • +
  • FelineHornyAnimal
  • +
  • FelineSingleGenderAnimal
  • +
  • AA_SandProwlerAnimal
  • + +
  • Tail_Furry @@ -108,7 +124,10 @@ Equine - Equine_Group + +
  • Equine_Group
  • +
  • HorseAnimal
  • +
  • Furskin @@ -143,7 +162,12 @@ Dragon - Dragon_Group + +
  • Dragon_Group
  • +
  • ThrumboAnimal
  • +
  • DragonAnimal
  • +
  • DragonSingleGenderAnimal
  • +
  • Unstoppable @@ -166,7 +190,7 @@ 0.1
  • - rjw_genes_draconic_genitalia + rjw_genes_dragon_genitalia 0.6
  • @@ -190,7 +214,12 @@ Rodent - Rodent_Group + +
  • Rodent_Group
  • +
  • RodentAnimal
  • +
  • RodentSingleGenderAnimal
  • +
  • DragonSingleGenderAnimal
  • +
  • Furskin @@ -225,7 +254,10 @@ Racoon - Raccon_Group + +
  • Raccon_Group
  • +
  • RaccoonAnimal
  • +
  • Furskin diff --git a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml index 29e92c6..b092257 100644 --- a/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml +++ b/Common/Defs/RaceGeneDefs/RaceGeneDefs_template.xml @@ -1,12 +1,17 @@ - - +this is to disable the xml, remove it for your own xml --> - + + +this is to disable the xml, remove it for your own xml --> \ No newline at end of file diff --git a/Source/Animal_Inheritance/RaceGeneDef.cs b/Source/Animal_Inheritance/RaceGeneDef.cs index 02ac62d..5c4b0ad 100644 --- a/Source/Animal_Inheritance/RaceGeneDef.cs +++ b/Source/Animal_Inheritance/RaceGeneDef.cs @@ -11,11 +11,11 @@ namespace RJW_BGS public class RaceGeneDef : Def { public int priority; - public String raceGroup; + public string raceGroup; //keeping this for backwards compatibility + public List raceGroups; //racegroup, but in list form so multiple can be entered, preference to use this over racegroup public List raceNames; public List pawnKindNames; public List genes; - //public List genechances; public String hybridName; } } diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs index 680b155..5264e17 100644 --- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -56,8 +56,10 @@ namespace RJW_BGS { raceGroupDefs = allDefs.Where(delegate (RaceGeneDef group) { - String raceGroupDefName = group.raceGroup; - return raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName; + string raceGroupDefName = group.raceGroup; + List list_raceGroupDefName = group.raceGroups; + return (raceGroupDefName != null && raceGroupDefName == raceGroupDef.defName) + || (list_raceGroupDefName != null && list_raceGroupDefName.Contains(raceGroupDef.defName)); }).ToList(); } if (raceGroupDefs.Count() > 0) From 712bb909c60600dd005764cb5f9aa0fe5159fbec Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 17:48:11 +0100 Subject: [PATCH 7/9] Added a lot of debugging logs for Bestiality Gene Inheritance --- CHANGELOG.md | 5 +++ .../BestialityGeneInheritanceDef.cs | 8 +--- .../Animal_Inheritance/InheritanceUtility.cs | 38 ++++++++++++++----- .../PatchRJWBestialityPregnancyUtility.cs | 2 +- .../PatchRJWHediffInsect_Egg.cs | 8 +--- .../PatchVanillaPregnancyUtility.cs | 10 +++-- Source/Animal_Inheritance/RJW_BGSSettings.cs | 22 +++++++---- .../Animal_Inheritance/RaceGeneDef_Helper.cs | 37 ++++++++++++++++-- Source/Rjw-Genes.csproj | 7 +++- 9 files changed, 97 insertions(+), 40 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28a4e46..0db6c9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Features: - Age-Transfer and Youth-Fountain per Sex Gene - Bisexual and Homosexual Genes with Placeholder Icon - Balancing some Genes by changing metabolism and complexity +- Pheromone Gene (#13, Shabakur) +- RJW Race-Support Compatibility (#12,#13, Shabakur) +- Animal Gene Inheritance Gene-Chance Multiplier per Setting (#13, Shabakur) +- Lots of Debug-Only Logging for Animal Gene Inheritance Succubus: @@ -17,6 +21,7 @@ Fixes: - Error on Game Load when Licentia Genes are tried to be added to Xenotypes for players without Licentia (#5) - Futa Gene only triggers if Pawn is not a futa already (#2) - Genitalia Resizing triggers on 20th Birthday (#11) +- RJW-Gene-Inheritance Settings now do things (#13, Shabakur) # 1.0.1 (2022-12-20) diff --git a/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs b/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs index 04a9735..ae0c51e 100644 --- a/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs +++ b/Source/Animal_Inheritance/BestialityGeneInheritanceDef.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace RJW_BGS +namespace RJW_BGS { public class BestialityGeneInheritanceDef { diff --git a/Source/Animal_Inheritance/InheritanceUtility.cs b/Source/Animal_Inheritance/InheritanceUtility.cs index d860b14..de486ae 100644 --- a/Source/Animal_Inheritance/InheritanceUtility.cs +++ b/Source/Animal_Inheritance/InheritanceUtility.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.Collections.Generic; using Verse; using RimWorld; using rjw; @@ -20,14 +16,18 @@ namespace RJW_BGS if (mother.RaceProps.Humanlike && father.RaceProps.Humanlike) return genelist; - + ModLog.Message($"Trigger an Animal-Gene-Inheritance for {father.Name} and {mother.Name}"); //One parent must be an animal and the other must be human, so only one needs to return if (father != null && !father.RaceProps.Humanlike) { + if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Father was found to be animal - looking up genes for {father.Name}"); return SelectGenes(father); } if (mother != null && !mother.RaceProps.Humanlike) { + if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Mother was found to be animal - looking up genes for {mother.Name}"); return SelectGenes(mother); } @@ -48,30 +48,48 @@ namespace RJW_BGS { foreach (BestialityGeneInheritanceDef gene in raceGeneDef.genes) { - if (gene.chance * RJW_BGSSettings.global_gene_chance >= Rand.Range(0.01f,1f)) + if (gene.chance * RJW_BGSSettings.rjw_bgs_global_gene_chance >= Rand.Range(0.01f,1f)) { genelist.Add(DefDatabase.GetNamed(gene.defName)); } } } + if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"From {raceGeneDef.genes.Count} possible genes in {raceGeneDef.defName}, {genelist.Count} were added by chance ({RJW_BGSSettings.rjw_bgs_global_gene_chance} chance multiplier from Settings)."); return genelist; } + + /// + /// Adds a list of Genes to the pawns existing GeneSet. + /// Whether it is added as a Xenogene or Endogene is configured in Mod-Settings. + /// + /// The pawn for which Genes will be added + /// The Genes to add (Endogene by default, Xenogene with Mod Settings) public static void AddGenes(Pawn pawn, List genes) { foreach (GeneDef gene in genes) { - pawn.genes.AddGene(gene, false); + pawn.genes.AddGene(gene, RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes); } } - //For ParchRJWHediffInsect_egg + /// + /// Initiates a bestiality baby with genes if the baby does not exist earlier. + /// This is used to make rjw-egg-pregnancies work. + /// Related file: PatchRJWHediffInsect_Egg.cs + /// + /// The mother of the baby. + /// The father of the baby. + /// The baby created in non-pregnancy-way (has 0 Genes yet) public static void NewGenes(Pawn mother, Pawn dad, Pawn baby) { - if (!RJW_BGSSettings.enabled) + if (!RJW_BGSSettings.rjw_bgs_enabled) { return; } + + ModLog.Message($"Triggering an New-Gene Animal-Gene-Inheritance for {baby.Name} ({dad.Name} + {mother.Name})"); if (baby.RaceProps.Humanlike) { if (baby.genes == null) diff --git a/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs index 31f9bfd..da5ac8d 100644 --- a/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs +++ b/Source/Animal_Inheritance/PatchRJWBestialityPregnancyUtility.cs @@ -16,7 +16,7 @@ namespace RJW_BGS [HarmonyPostfix] public static void AddGenes(Pawn mother, Pawn dad, ref Hediff_BasePregnancy __instance) { - if (!RJW_BGSSettings.enabled) + if (!RJW_BGSSettings.rjw_bgs_enabled) { return; } diff --git a/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs index d52f62d..587571f 100644 --- a/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs +++ b/Source/Animal_Inheritance/PatchRJWHediffInsect_Egg.cs @@ -1,14 +1,8 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Reflection; using System.Reflection.Emit; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using HarmonyLib; using rjw; -using RimWorld; -using Verse; namespace RJW_BGS { diff --git a/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs index baa72f5..a076b6e 100644 --- a/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs +++ b/Source/Animal_Inheritance/PatchVanillaPregnancyUtility.cs @@ -1,15 +1,17 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Threading.Tasks; using HarmonyLib; using RimWorld; using Verse; -using rjw; namespace RJW_BGS { + /// + /// This Patch is applied to change the normal pregnancy to add animal-inheritance. + /// If the settings allow animal gene inheritance, + /// the genes are determined and "simply added". + /// [HarmonyPatch(typeof(PregnancyUtility), "GetInheritedGeneSet", new Type[] { typeof(Pawn), @@ -22,7 +24,7 @@ namespace RJW_BGS [HarmonyPostfix] public static void AnimalInheritedGenes(Pawn father, Pawn mother, ref GeneSet __result) { - if (!RJW_BGSSettings.enabled) + if (!RJW_BGSSettings.rjw_bgs_enabled) { return; } diff --git a/Source/Animal_Inheritance/RJW_BGSSettings.cs b/Source/Animal_Inheritance/RJW_BGSSettings.cs index 4847d89..d619354 100644 --- a/Source/Animal_Inheritance/RJW_BGSSettings.cs +++ b/Source/Animal_Inheritance/RJW_BGSSettings.cs @@ -21,23 +21,31 @@ namespace RJW_BGS listing_Standard.ColumnWidth = rect.width / 2.05f; listing_Standard.Begin(rect); listing_Standard.Gap(24f); - listing_Standard.CheckboxLabeled("enabled", ref enabled, "no function yet", 0f, 1f); + listing_Standard.CheckboxLabeled("enabled", ref rjw_bgs_enabled, "If toggled, Animal Pregnancies will try inherit genes.", 0f, 1f); //listing_Standard.CheckboxLabeled("sexfrenzy", ref sexfrenzy, "disable the effects", 0f, 1f); listing_Standard.Gap(5f); listing_Standard.Label("gene inheritance chance"+ ": " + - Math.Round((double)(RJW_BGSSettings.global_gene_chance * 100f), 0).ToString() + "%", -1f, "modify chance for a gene to be inherited."); - RJW_BGSSettings.global_gene_chance = listing_Standard.Slider(RJW_BGSSettings.global_gene_chance, 0f, 5f); + Math.Round((double)(RJW_BGSSettings.rjw_bgs_global_gene_chance * 100f), 0).ToString() + "%", -1f, "modify chance for a gene to be inherited."); + RJW_BGSSettings.rjw_bgs_global_gene_chance = listing_Standard.Slider(RJW_BGSSettings.rjw_bgs_global_gene_chance, 0f, 5f); + listing_Standard.Gap(5f); + listing_Standard.CheckboxLabeled("genes as xenogenes", ref rjw_bgs_animal_genes_as_xenogenes, "If toggled, animal genes will be added as xenogenes.", 0f, 1f); + listing_Standard.Gap(5f); + listing_Standard.CheckboxLabeled("detailed-debug", ref rjw_bgs_detailed_debug, "Adds detailed information to the log about pregnancies and genes.", 0f, 1f); listing_Standard.End(); } public override void ExposeData() { base.ExposeData(); - Scribe_Values.Look(ref RJW_BGSSettings.enabled, "enabled", RJW_BGSSettings.enabled, true); - Scribe_Values.Look(ref RJW_BGSSettings.global_gene_chance, "global_gene_chance", RJW_BGSSettings.global_gene_chance, true); + Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_enabled, "rjw_bgs_enabled", RJW_BGSSettings.rjw_bgs_enabled, true); + Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_global_gene_chance, "rjw_bgs_global_gene_chance", RJW_BGSSettings.rjw_bgs_global_gene_chance, true); + Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, "rjw_bgs_animal_genes_as_xenogenes", RJW_BGSSettings.rjw_bgs_animal_genes_as_xenogenes, true); + Scribe_Values.Look(ref RJW_BGSSettings.rjw_bgs_detailed_debug, "rjw_bgs_detailed_debug", RJW_BGSSettings.rjw_bgs_detailed_debug, true); } - public static float global_gene_chance = 1f; - public static bool enabled = true; + public static float rjw_bgs_global_gene_chance = 1f; + public static bool rjw_bgs_enabled = true; + public static bool rjw_bgs_animal_genes_as_xenogenes = false; + public static bool rjw_bgs_detailed_debug = false; } } diff --git a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs index 3e32609..f88084d 100644 --- a/Source/Animal_Inheritance/RaceGeneDef_Helper.cs +++ b/Source/Animal_Inheritance/RaceGeneDef_Helper.cs @@ -18,14 +18,14 @@ namespace RJW_BGS return result; } return null; - //First check if there is a matching pawnkinddef then race, then racegroup - } + public static List ValidRaceGeneDefs(Pawn pawn) { PawnKindDef kindDef = pawn.kindDef; if (kindDef == null) { + ModLog.Warning($"Error looking up PawnKindDef for {pawn.Name} - Could not lookup Animal Inheritance Genes"); return null; } string raceName = kindDef.race.defName; @@ -33,6 +33,9 @@ namespace RJW_BGS PawnData pawnData = SaveStorage.DataStore.GetPawnData(pawn); RaceGroupDef raceGroupDef = pawnData.RaceSupportDef; + if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Looking up Animal-Inheritable Genes for {pawn.Name} with KindDef {kindDef.defName},RaceName {raceName}, PawnKind {pawnKindName} and RaceGroup {raceGroupDef.defName}"); + IEnumerable allDefs = DefDatabase.AllDefs; List pawnKindDefs = allDefs.Where(delegate (RaceGeneDef group) { @@ -40,7 +43,12 @@ namespace RJW_BGS return pawnKindNames != null && pawnKindNames.Contains(pawnKindName); }).ToList(); if (pawnKindDefs.Count() > 0) + { + DebugPrintRaceGeneDefs("PawnKindDefs",pawn.Name.ToStringFull,pawnKindDefs); return pawnKindDefs; + } + else if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Did not find PawnKindDefs for {pawn.Name.ToStringFull}"); List raceKindDefs = allDefs.Where(delegate (RaceGeneDef group) { @@ -48,7 +56,12 @@ namespace RJW_BGS return raceNames != null && raceNames.Contains(raceName); }).ToList(); if (raceKindDefs.Count() > 0) + { + DebugPrintRaceGeneDefs("PawnKindDefs", pawn.Name.ToStringFull, raceKindDefs); return raceKindDefs; + } + else if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Did not find RaceKindDefs for {pawn.Name.ToStringFull}"); List raceGroupDefs = new List(); if (raceGroupDef != null) @@ -61,11 +74,29 @@ namespace RJW_BGS || (list_raceGroupDefName != null && list_raceGroupDefName.Contains(raceGroupDef.defName)); }).ToList(); } - + if (raceGroupDefs.Count() > 0) + { + DebugPrintRaceGeneDefs("RaceKindDefs", pawn.Name.ToStringFull, raceGroupDefs); return raceGroupDefs; + } + else if (RJW_BGSSettings.rjw_bgs_detailed_debug) + ModLog.Message($"Did not find RaceGroupDefs for {pawn.Name.ToStringFull}"); + ModLog.Message($"Did not find any Genes inheritable for {pawn.Name.ToStringFull}"); return new List(); } + + private static void DebugPrintRaceGeneDefs(String header,String identifier,List defs) + { + if (RJW_BGSSettings.rjw_bgs_detailed_debug) + { + var defString = "["; + foreach (RaceGeneDef raceGeneDef in defs) + defString += $"({raceGeneDef.priority}:{raceGeneDef.defName} - {raceGeneDef.genes.Count} Genes)"; + defString += "]"; + ModLog.Message($"Found the following {header}-Genes for {identifier}: {defString}"); + } + } } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 8c92644..9473ed9 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -60,7 +60,6 @@ - @@ -71,6 +70,7 @@ + @@ -82,6 +82,7 @@ + @@ -98,6 +99,7 @@ + @@ -105,6 +107,7 @@ + @@ -117,7 +120,9 @@ + + From 0c3af21c3a4516774b5890785fc141da6b8cf385 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 21:14:26 +0100 Subject: [PATCH 8/9] Really fixed merge conflicts,upsie --- Source/GeneDefOf.cs | 4 ---- Source/Genes/Damage/Gene_Unbreakable.cs | 3 +-- Source/Genes/GeneUtility.cs | 9 --------- Source/Genes/Life_Force/Gene_LifeForce.cs | 2 +- Source/Genes/Special/Patch_OrgasmRush.cs | 4 ++-- Source/HediffDefOf.cs | 1 + Source/Rjw-Genes.csproj | 3 --- 7 files changed, 5 insertions(+), 21 deletions(-) diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index a1df81a..0ff9274 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -76,9 +76,6 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_youth_fountain; public static readonly GeneDef rjw_genes_sex_age_drain; public static readonly GeneDef rjw_genes_aphrodisiac_pheromones; - public static readonly GeneDef rjw_genes_aphrodisiac_pheromones; - public static readonly GeneDef rjw_genes_youth_fountain; - public static readonly GeneDef rjw_genes_sex_age_drain; // LifeForce public static readonly GeneDef rjw_genes_lifeforce; @@ -91,6 +88,5 @@ namespace RJW_Genes public static readonly GeneDef rjw_genes_succubus_tail; // Others & Non-Genes - public static readonly HediffDef rjw_genes_orgasm_rush_hediff; } } diff --git a/Source/Genes/Damage/Gene_Unbreakable.cs b/Source/Genes/Damage/Gene_Unbreakable.cs index 2ebdad3..578ed8a 100644 --- a/Source/Genes/Damage/Gene_Unbreakable.cs +++ b/Source/Genes/Damage/Gene_Unbreakable.cs @@ -1,5 +1,4 @@ -using LicentiaLabs; -using rjw; +using rjw; using Verse; namespace RJW_Genes diff --git a/Source/Genes/GeneUtility.cs b/Source/Genes/GeneUtility.cs index 7a987fe..3da53e3 100644 --- a/Source/Genes/GeneUtility.cs +++ b/Source/Genes/GeneUtility.cs @@ -174,13 +174,6 @@ namespace RJW_Genes } return pawn.genes.HasGene(GeneDefOf.rjw_genes_unbreakable); } -<<<<<<< HEAD - - - public static bool HasGenitaliaResizingGenes(Pawn pawn) - { - return !GetGenitaliaResizingGenes(pawn).NullOrEmpty(); - } public static List GetGenitaliaResizingGenes(Pawn pawn) { @@ -196,7 +189,5 @@ namespace RJW_Genes return ResizingGenes; } -======= ->>>>>>> 09157e923d5c4c4cf71d79cb0af665ffd6a7c536 } } \ No newline at end of file diff --git a/Source/Genes/Life_Force/Gene_LifeForce.cs b/Source/Genes/Life_Force/Gene_LifeForce.cs index c5cfa12..5bb73b6 100644 --- a/Source/Genes/Life_Force/Gene_LifeForce.cs +++ b/Source/Genes/Life_Force/Gene_LifeForce.cs @@ -24,7 +24,7 @@ namespace RJW_Genes Pawn pawn = this.pawn; return ((pawn != null) ? pawn.ageTracker : null) == null || - ((float)this.pawn.ageTracker.AgeBiologicalYears >= this.def.minAgeActive && this.pawn.ageTracker.AgeBiologicalYears >= (RJWSettings.AllowYouthSex ? 13f : 18f)); + ((float)this.pawn.ageTracker.AgeBiologicalYears >= this.def.minAgeActive); } } diff --git a/Source/Genes/Special/Patch_OrgasmRush.cs b/Source/Genes/Special/Patch_OrgasmRush.cs index fefcb7a..3caaa68 100644 --- a/Source/Genes/Special/Patch_OrgasmRush.cs +++ b/Source/Genes/Special/Patch_OrgasmRush.cs @@ -46,10 +46,10 @@ namespace RJW_Genes /// public static Hediff GetOrgasmRushHediff(Pawn orgasmed) { - Hediff orgasmRushHediff = orgasmed.health.hediffSet.GetFirstHediffOfDef(GeneDefOf.rjw_genes_orgasm_rush_hediff); + Hediff orgasmRushHediff = orgasmed.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_orgasm_rush_hediff); if (orgasmRushHediff == null) { - orgasmRushHediff = HediffMaker.MakeHediff(GeneDefOf.rjw_genes_orgasm_rush_hediff, orgasmed); + orgasmRushHediff = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_orgasm_rush_hediff, orgasmed); orgasmRushHediff.Severity = 0; orgasmed.health.AddHediff(orgasmRushHediff); } diff --git a/Source/HediffDefOf.cs b/Source/HediffDefOf.cs index b0425ec..c6581f8 100644 --- a/Source/HediffDefOf.cs +++ b/Source/HediffDefOf.cs @@ -14,5 +14,6 @@ namespace RJW_Genes public static readonly HediffDef Aphrodisiac_Pheromone; public static readonly HediffDef Fertilin_Lost; public static readonly HediffDef Succubus_Drained; + public static readonly HediffDef rjw_genes_orgasm_rush_hediff; } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index df23439..d3bad38 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -133,9 +133,7 @@ - - @@ -152,7 +150,6 @@ - From c4a64c345fb4fa05c621d2b8e761e3f23e7a6642 Mon Sep 17 00:00:00 2001 From: Vegapnk Date: Sun, 15 Jan 2023 22:33:39 +0100 Subject: [PATCH 9/9] Draft for Succubus Xenotype --- Common/Defs/Genes/GeneDefs_Cosmetic.xml | 2 +- Common/Defs/Genes/GeneDefs_LifeForce.xml | 2 +- Common/Defs/Xenotypes/Succubus.xml | 53 ++++++++++++++++++++++++ Source/GeneDefOf.cs | 4 +- 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 Common/Defs/Xenotypes/Succubus.xml diff --git a/Common/Defs/Genes/GeneDefs_Cosmetic.xml b/Common/Defs/Genes/GeneDefs_Cosmetic.xml index a4460d2..f49b690 100644 --- a/Common/Defs/Genes/GeneDefs_Cosmetic.xml +++ b/Common/Defs/Genes/GeneDefs_Cosmetic.xml @@ -13,7 +13,7 @@ - rjw_genes_Succubus_Wings + rjw_genes_succubus_wings Carriers of this gene grow succubus wings. Genes/Icons/Succubus_Wings diff --git a/Common/Defs/Genes/GeneDefs_LifeForce.xml b/Common/Defs/Genes/GeneDefs_LifeForce.xml index ed1ea9a..b9b87c3 100644 --- a/Common/Defs/Genes/GeneDefs_LifeForce.xml +++ b/Common/Defs/Genes/GeneDefs_LifeForce.xml @@ -34,7 +34,7 @@ - LifeForceDrain + rjw_genes_lifeforce_drain draining Carriers lose an additional 15 fertilin per day from biological entropy. diff --git a/Common/Defs/Xenotypes/Succubus.xml b/Common/Defs/Xenotypes/Succubus.xml new file mode 100644 index 0000000..c6b51a1 --- /dev/null +++ b/Common/Defs/Xenotypes/Succubus.xml @@ -0,0 +1,53 @@ + + + + + rjw_genes_succubus + + Succubi are strongly enhanced xenohumans. Powered by archites, their abilities go far beyond normal genetic enhancements. These overnaturally beautiful creatures strive parasitically on the Fertilin found in semen. + Succubi are beautiful and extremely hungry Xenohumans. They strive on having sex and extracting their victims life-force through this. + UI/Icons/Xenotypes/Sanguophage + PawnBecameSanguophage + 0.5 + 0.1~140 + 1 + -1000 + 0.005 + + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + 0.02 + + +
  • rjw_genes_bisexual
  • +
  • rjw_genes_hypersexual
  • +
  • rjw_genes_female_only
  • +
  • rjw_genes_lifeforce
  • +
  • rjw_genes_lifeforce_drain
  • +
  • rjw_genes_vaginal_absorber
  • +
  • rjw_genes_anal_absorber
  • + +
  • rjw_genes_drainer
  • + +
  • rjw_genes_pussyhealer
  • +
  • rjw_genes_paralysingkiss
  • +
  • rjw_genes_seduce
  • +
  • rjw_genes_elasticity
  • +
  • rjw_genes_succubus_tail
  • +
  • rjw_genes_aphrodisiac_pheromones
  • + +
  • Beauty_Pretty
  • +
  • MoveSpeed_Quick
  • +
  • Robust
  • +
  • UVSensitivity_Intense
  • +
  • AptitudeStrong_Social
  • +
  • Ears_Pointed
  • +
  • Headbone_MiniHorns
  • +
  • Skin_Purple
  • +
    + + + \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index 0ff9274..e4f0e12 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -79,6 +79,7 @@ namespace RJW_Genes // LifeForce public static readonly GeneDef rjw_genes_lifeforce; + public static readonly GeneDef rjw_genes_lifeforce_drain; public static readonly GeneDef rjw_genes_pussyhealer; public static readonly GeneDef rjw_genes_vaginal_absorber; public static readonly GeneDef rjw_genes_anal_absorber; @@ -86,7 +87,8 @@ namespace RJW_Genes // Cosmetic public static readonly GeneDef rjw_genes_succubus_tail; + public static readonly GeneDef rjw_genes_succubus_wings; - // Others & Non-Genes + // Others & Non-Genes } }