diff --git a/Common/Assemblies/Rjw-Genes.dll b/Common/Assemblies/Rjw-Genes.dll index c606371..b1fd66c 100644 Binary files a/Common/Assemblies/Rjw-Genes.dll and b/Common/Assemblies/Rjw-Genes.dll differ diff --git a/Common/Defs/Genes/GeneCategories.xml b/Common/Defs/Genes/GeneCategories.xml index a5e53c1..10aa8e9 100644 --- a/Common/Defs/Genes/GeneCategories.xml +++ b/Common/Defs/Genes/GeneCategories.xml @@ -24,4 +24,10 @@ 15 + + rjw_genes_cum + + 14 + + \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Cum.xml b/Common/Defs/Genes/GeneDefs_Cum.xml new file mode 100644 index 0000000..0100d33 --- /dev/null +++ b/Common/Defs/Genes/GeneDefs_Cum.xml @@ -0,0 +1,79 @@ + + + + rjw_genes_cum + +
  • CumAmount
  • +
    +
    + + + + rjw_genes_no_cum + + Males of these species have no fluid. + Genes/Icons/Placeholder + RJW_Genes.Gene_NoCum + 533 + 0 + 1 + + + + rjw_genes_much_cum + + Males of this species produce a lot of fluid. + Genes/Icons/Placeholder + RJW_Genes.Gene_MuchCum + 534 + 1 + -1 + + + + rjw_genes_very_much_cum + + Males of this species produce a whole lot of fluid. They are like fountains basically. + Genes/Icons/Placeholder + RJW_Genes.Gene_VeryMuchCum + 535 + 1 + -2 + + + + rjw_genes_likes_cumflation + + rjw_genes_cum + This Xenotype loves being cumflated. + Genes/Icons/Placeholder + 536 + +
  • + LikesCumflation +
  • +
    + +
  • NotCumflatable
  • +
    +
    + + + + +
    \ No newline at end of file diff --git a/Common/Defs/Genes/GeneDefs_Reproduction.xml b/Common/Defs/Genes/GeneDefs_Reproduction.xml new file mode 100644 index 0000000..ad27692 --- /dev/null +++ b/Common/Defs/Genes/GeneDefs_Reproduction.xml @@ -0,0 +1,18 @@ + + + + + rjw_genes_hypersexual + + Reproduction + Xenotypes with this Gene are Hypersexual (Nymphs). + Genes/Icons/Placeholder + 1 + +
  • + Nymphomaniac +
  • +
    +
    + +
    \ No newline at end of file diff --git a/Source/GeneDefOf.cs b/Source/GeneDefOf.cs index e9a7362..2c0b42e 100644 --- a/Source/GeneDefOf.cs +++ b/Source/GeneDefOf.cs @@ -6,51 +6,61 @@ namespace RJW_Genes [DefOf] public static class GeneDefOf { - [MayRequireBiotech] public static readonly GeneCategoryDef rjw_genes_genitalia; - [MayRequireBiotech] public static readonly GeneCategoryDef rjw_genes_gender; + public static readonly GeneCategoryDef rjw_genes_genitalia; + public static readonly GeneCategoryDef rjw_genes_gender; // Base Genitalia Types - [MayRequireBiotech] public static readonly GeneDef rjw_genes_human_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_equine_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_demonic_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_dragon_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_slime_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_ovipositor_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_feline_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_canine_genitalia; + public static readonly GeneDef rjw_genes_human_genitalia; + public static readonly GeneDef rjw_genes_equine_genitalia; + public static readonly GeneDef rjw_genes_demonic_genitalia; + public static readonly GeneDef rjw_genes_dragon_genitalia; + public static readonly GeneDef rjw_genes_slime_genitalia; + public static readonly GeneDef rjw_genes_ovipositor_genitalia; + public static readonly GeneDef rjw_genes_feline_genitalia; + public static readonly GeneDef rjw_genes_canine_genitalia; // Extra Genitalia - [MayRequireBiotech] public static readonly GeneDef rjw_genes_extra_penis; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_penis; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_extra_vagina; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_vagina; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_extra_breasts; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_breasts; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_extra_anus; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_no_anus; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_futa; + public static readonly GeneDef rjw_genes_extra_penis; + public static readonly GeneDef rjw_genes_no_penis; + public static readonly GeneDef rjw_genes_extra_vagina; + public static readonly GeneDef rjw_genes_no_vagina; + public static readonly GeneDef rjw_genes_extra_breasts; + public static readonly GeneDef rjw_genes_no_breasts; + public static readonly GeneDef rjw_genes_extra_anus; + public static readonly GeneDef rjw_genes_no_anus; + public static readonly GeneDef rjw_genes_futa; // Genitalia Sizes - [MayRequireBiotech] public static readonly GeneDef rjw_genes_big_male_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_normal_male_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_small_male_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_loose_female_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_normal_female_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_tight_female_genitalia; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_big_breasts; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_normal_breasts; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_small_breasts; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_loose_anus; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_normal_anus; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_tight_anus; + public static readonly GeneDef rjw_genes_big_male_genitalia; + public static readonly GeneDef rjw_genes_normal_male_genitalia; + public static readonly GeneDef rjw_genes_small_male_genitalia; + public static readonly GeneDef rjw_genes_loose_female_genitalia; + public static readonly GeneDef rjw_genes_normal_female_genitalia; + public static readonly GeneDef rjw_genes_tight_female_genitalia; + public static readonly GeneDef rjw_genes_big_breasts; + public static readonly GeneDef rjw_genes_normal_breasts; + public static readonly GeneDef rjw_genes_small_breasts; + public static readonly GeneDef rjw_genes_loose_anus; + public static readonly GeneDef rjw_genes_normal_anus; + public static readonly GeneDef rjw_genes_tight_anus; // Gender - [MayRequireBiotech] public static readonly GeneDef rjw_genes_female_only; - [MayRequireBiotech] public static readonly GeneDef rjw_genes_male_only; + public static readonly GeneDef rjw_genes_female_only; + public static readonly GeneDef rjw_genes_male_only; // Breeding public static readonly GeneDef rjw_genes_mechbreeder; public static readonly GeneDef rjw_genes_insectincubator; public static readonly GeneDef rjw_genes_insectbreeder; + + //Cum + public static readonly GeneDef rjw_genes_no_cum; + public static readonly GeneDef rjw_genes_much_cum; + public static readonly GeneDef rjw_genes_very_much_cum; + [MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_likes_cumflation; + //[MayRequire("LustLicentia.RJWLabs")] public static readonly GeneDef rjw_genes_cumflation_immunity; //Does currently not work like this + + //Reproduction + public static readonly GeneDef rjw_genes_hypersexual; } } diff --git a/Source/Genes/Breeding/Gene_MechBreeder.cs b/Source/Genes/Breeding/Gene_MechBreeder.cs index a0a8855..1ceaf67 100644 --- a/Source/Genes/Breeding/Gene_MechBreeder.cs +++ b/Source/Genes/Breeding/Gene_MechBreeder.cs @@ -2,7 +2,7 @@ namespace Genes.Breeding { - internal class Gene_MechBreeder : Gene + public class Gene_MechBreeder : Gene { // This one does not do anything, the patch is some where else checking for the pawn to have this Gene! } diff --git a/Source/Genes/Cum/CumUtility.cs b/Source/Genes/Cum/CumUtility.cs new file mode 100644 index 0000000..ea049cc --- /dev/null +++ b/Source/Genes/Cum/CumUtility.cs @@ -0,0 +1,37 @@ +using Verse; +using rjw; + +namespace RJW_Genes +{ + public class CumUtility + { + + public static void MultiplyFluidAmountBy(Pawn pawn, float multiplier) + { + var partBPR = Genital_Helper.get_genitalsBPR(pawn); + var parts = Genital_Helper.get_PartsHediffList(pawn, partBPR); + + if (!parts.NullOrEmpty()) + { + CompHediffBodyPart CompHediff; + + foreach (Hediff part in parts) + { + if (GenitaliaChanger.IsArtificial(part)) + continue; + + if (rjw.Genital_Helper.is_penis(part)) + { + CompHediff = part.TryGetComp(); + if (CompHediff != null) + { + CompHediff.FluidAmmount *= multiplier; + } + } + } + + } + + } + } +} diff --git a/Source/Genes/Cum/Gene_MuchCum.cs b/Source/Genes/Cum/Gene_MuchCum.cs new file mode 100644 index 0000000..e88ac3f --- /dev/null +++ b/Source/Genes/Cum/Gene_MuchCum.cs @@ -0,0 +1,39 @@ +namespace RJW_Genes +{ + public class Gene_MuchCum : RJW_Gene + { + bool has_been_fired = false; + + float multiplier_much_cum = 3f; + + public override void PostMake() + { + base.PostMake(); + + CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); + has_been_fired = true; + } + + public override void PostAdd() + { + base.PostAdd(); + if (!has_been_fired) { + CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); + has_been_fired = true; + } + } + + + public override void PostRemove() + { + base.PostAdd(); + + if (has_been_fired) + { + CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum); + has_been_fired = false; + } + } + + } +} diff --git a/Source/Genes/Cum/Gene_NoCum.cs b/Source/Genes/Cum/Gene_NoCum.cs new file mode 100644 index 0000000..0c3e888 --- /dev/null +++ b/Source/Genes/Cum/Gene_NoCum.cs @@ -0,0 +1,34 @@ +namespace RJW_Genes +{ + public class Gene_NoCum : RJW_Gene + { + bool has_been_fired = false; + + + public override void PostMake() + { + base.PostMake(); + + CumUtility.MultiplyFluidAmountBy(pawn, 0f); + has_been_fired = true; + } + + public override void PostAdd() + { + base.PostAdd(); + if (!has_been_fired) { + CumUtility.MultiplyFluidAmountBy(pawn, 0f); + has_been_fired = true; + } + } + + + public override void PostRemove() + { + // Cum Removal does not do at the moment :/ I would need to safe the old cum amount but I don't want to at the moment + base.PostAdd(); + + } + + } +} diff --git a/Source/Genes/Cum/Gene_VeryMuchCum.cs b/Source/Genes/Cum/Gene_VeryMuchCum.cs new file mode 100644 index 0000000..21faecc --- /dev/null +++ b/Source/Genes/Cum/Gene_VeryMuchCum.cs @@ -0,0 +1,39 @@ +namespace RJW_Genes +{ + public class Gene_VeryMuchCum : RJW_Gene + { + bool has_been_fired = false; + + float multiplier_much_cum = 10f; + + public override void PostMake() + { + base.PostMake(); + + CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); + has_been_fired = true; + } + + public override void PostAdd() + { + base.PostAdd(); + if (!has_been_fired) { + CumUtility.MultiplyFluidAmountBy(pawn, multiplier_much_cum); + has_been_fired = true; + } + } + + + public override void PostRemove() + { + base.PostAdd(); + + if (has_been_fired) + { + CumUtility.MultiplyFluidAmountBy(pawn, 1/multiplier_much_cum); + has_been_fired = false; + } + } + + } +} diff --git a/Source/Genes/Genitalia/Gene_CanineGenitalia.cs b/Source/Genes/Genitalia/Gene_CanineGenitalia.cs index 0f31a11..01f0015 100644 --- a/Source/Genes/Genitalia/Gene_CanineGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_CanineGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + 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_DemonicGenitalia.cs b/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs index e4c5805..cc0cc29 100644 --- a/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_DemonicGenitalia.cs @@ -15,7 +15,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + 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_DragonGenitalia.cs b/Source/Genes/Genitalia/Gene_DragonGenitalia.cs index abd930d..34d24f6 100644 --- a/Source/Genes/Genitalia/Gene_DragonGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_DragonGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + 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 index 4ec956b..74b8b2f 100644 --- a/Source/Genes/Genitalia/Gene_EquineGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_EquineGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + 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 index 6c1b987..2fe4882 100644 --- a/Source/Genes/Genitalia/Gene_FelineGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_FelineGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + 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_OvipositorGenitalia.cs b/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs index 2e91c2c..b7a1141 100644 --- a/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_OvipositorGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + base.PostAdd(); GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.ovipositorM, Genital_Helper.ovipositorF, Genital_Helper.insect_anus); } } diff --git a/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs b/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs index efbdfcb..5671f1f 100644 --- a/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs +++ b/Source/Genes/Genitalia/Gene_SlimeGenitalia.cs @@ -14,7 +14,7 @@ namespace RJW_Genes public override void PostAdd() { - base.PostMake(); + base.PostAdd(); GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper.slime_penis, Genital_Helper.slime_vagina, Genital_Helper.slime_anus); } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index 708cdb8..befe2c2 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -56,6 +56,10 @@ + + + +