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

Binary file not shown.

View file

@ -24,4 +24,10 @@
<displayPriorityInXenotype>15</displayPriorityInXenotype>
</GeneCategoryDef>
<GeneCategoryDef>
<defName>rjw_genes_cum</defName>
<label>Cum</label>
<displayPriorityInXenotype>14</displayPriorityInXenotype>
</GeneCategoryDef>
</Defs>

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneDef Name="GeneCumAmount" Abstract="True">
<displayCategory>rjw_genes_cum</displayCategory>
<exclusionTags>
<li>CumAmount</li>
</exclusionTags>
</GeneDef>
<!-- Penis -->
<GeneDef ParentName="GeneCumAmount">
<defName>rjw_genes_no_cum</defName>
<label>No Cum</label>
<description>Males of these species have no fluid.</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<geneClass>RJW_Genes.Gene_NoCum</geneClass>
<displayOrderInCategory>533</displayOrderInCategory>
<biostatCpx>0</biostatCpx>
<biostatMet>1</biostatMet>
</GeneDef>
<GeneDef ParentName="GeneCumAmount">
<defName>rjw_genes_much_cum</defName>
<label>Much Cum</label>
<description>Males of this species produce a lot of fluid.</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<geneClass>RJW_Genes.Gene_MuchCum</geneClass>
<displayOrderInCategory>534</displayOrderInCategory>
<biostatCpx>1</biostatCpx>
<biostatMet>-1</biostatMet>
</GeneDef>
<GeneDef ParentName="GeneCumAmount">
<defName>rjw_genes_very_much_cum</defName>
<label>Very Much Cum</label>
<description>Males of this species produce a whole lot of fluid. They are like fountains basically.</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<geneClass>RJW_Genes.Gene_VeryMuchCum</geneClass>
<displayOrderInCategory>535</displayOrderInCategory>
<biostatCpx>1</biostatCpx>
<biostatMet>-2</biostatMet>
</GeneDef>
<GeneDef MayRequire="LustLicentia.RJWLabs">
<defName>rjw_genes_likes_cumflation</defName>
<label>Likes Cumflation</label>
<displayCategory>rjw_genes_cum</displayCategory>
<description>This Xenotype loves being cumflated.</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<displayOrderInCategory>536</displayOrderInCategory>
<forcedTraits>
<li>
<def>LikesCumflation</def>
</li>
</forcedTraits>
<exclusionTags>
<li>NotCumflatable</li>
</exclusionTags>
</GeneDef>
<!-- Does not Work like this (yet)-->
<!--
<GeneDef MayRequire="LustLicentia.RJWLabs">
<defName>rjw_genes_cumflation_immunity</defName>
<label>Cumflation Immunity</label>
<displayCategory>rjw_genes_cum</displayCategory>
<description>This Xenotype cannot get cumflated.</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<displayOrderInCategory>537</displayOrderInCategory>
<hediffGiversCannotGive>
<li>Cumflation</li>
</hediffGiversCannotGive>
<exclusionTags>
<li>NotCumflatable</li>
</exclusionTags>
</GeneDef>
-->
</Defs>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<GeneDef>
<defName>rjw_genes_hypersexual</defName>
<label>Hypersexuality</label>
<displayCategory>Reproduction</displayCategory>
<description>Xenotypes with this Gene are Hypersexual (Nymphs).</description>
<iconPath>Genes/Icons/Placeholder</iconPath>
<displayOrderInCategory>1</displayOrderInCategory>
<forcedTraits>
<li>
<def>Nymphomaniac</def>
</li>
</forcedTraits>
</GeneDef>
</Defs>

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" />