Added genes on cum-amount and two traits, fixed an issue with PostAdd in some GenitaliaTypeGenes

This commit is contained in:
Vegapnk 2022-11-21 17:20:50 +01:00
parent 1db82e96d5
commit 4b5d04af3c
18 changed files with 307 additions and 41 deletions

View file

@ -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;
}
}

View file

@ -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!
}

View file

@ -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<rjw.CompHediffBodyPart>();
if (CompHediff != null)
{
CompHediff.FluidAmmount *= multiplier;
}
}
}
}
}
}
}

View file

@ -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;
}
}
}
}

View file

@ -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();
}
}
}

View file

@ -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;
}
}
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -56,6 +56,10 @@
<Compile Include="Genes\Breeding\PatchMechBirth.cs" />
<Compile Include="Genes\Breeding\PatchPawnExtensions.cs" />
<Compile Include="Genes\Breeding\PatchPregnancyHelper.cs" />
<Compile Include="Genes\Cum\CumUtility.cs" />
<Compile Include="Genes\Cum\Gene_VeryMuchCum.cs" />
<Compile Include="Genes\Cum\Gene_MuchCum.cs" />
<Compile Include="Genes\Cum\Gene_NoCum.cs" />
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraBreasts.cs" />
<Compile Include="Genes\ExtraGenitalia\Gene_ExtraAnus.cs" />
<Compile Include="Genes\ExtraGenitalia\Gene_Futa.cs" />