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 @@
+
+
+
+