Added new Gene for evergrowing cock

This commit is contained in:
Vegapnk 2023-06-28 14:45:43 +02:00
parent 5e3bbe66a3
commit ada4a87efc
5 changed files with 178 additions and 0 deletions

View File

@ -111,4 +111,20 @@
<li>AnusSize</li>
</exclusionTags>
</GeneDef>
<!-- Extra -->
<GeneDef ParentName="GeneGenitaliaSizeBase">
<defName>rjw_genes_evergrowth</defName>
<label>Evergrowth</label>
<description>One of the most regretted gene-modifications in the Glitterworlds: The (primary) genitalia will continue growing forever. This affects size and fluid output. Excessive growth can also effect mental stability! (Resizing takes place at 20th Birthday)</description>
<iconPath>Genes/Icons/Big_Male_Genitalia</iconPath>
<geneClass>RJW_Genes.Gene_EvergrowingGenitalia</geneClass>
<displayOrderInCategory>767</displayOrderInCategory>
<exclusionTags>
<li>PenisSize</li>
<li>VaginaSize</li>
</exclusionTags>
</GeneDef>
</Defs>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<HediffDef>
<defName>rjw_genes_evergrowth_sideeffect</defName>
<hediffClass>HediffWithComps</hediffClass>
<label>genital hybris</label>
<description>science has gone too far - a tool like this needs constant attention.</description>
<defaultLabelColor>(1,0,0.5)</defaultLabelColor>
<maxSeverity>1.0</maxSeverity>
<comps>
<li Class="HediffCompProperties_SeverityPerDay">
<severityPerDay>-0.025</severityPerDay>
</li>
</comps>
<stages>
<li>
<label>minor</label>
<statFactors>
<SexFrequency>3</SexFrequency>
</statFactors>
</li>
<li>
<minSeverity>0.5</minSeverity>
<label>moderate</label>
<statFactors>
<SexFrequency>5</SexFrequency>
</statFactors>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.05</offset>
</li>
</capMods>
</li>
<li>
<minSeverity>0.9</minSeverity>
<label>strong</label>
<statFactors>
<SexFrequency>7</SexFrequency>
</statFactors>
<capMods>
<li>
<capacity>Consciousness</capacity>
<offset>-0.1</offset>
</li>
</capMods>
</li>
</stages>
</HediffDef>
</Defs>

View File

@ -0,0 +1,107 @@
using Verse;
using Verse;
using RimWorld;
using rjw;
using System.Collections.Generic;
using System;
namespace RJW_Genes
{
public class Gene_EvergrowingGenitalia : RJW_Gene
{
/// <summary>
/// The age (in years) at which the Pawns Genes will take effect, resizing their genitalia.
/// </summary>
public const int RESIZING_AGE = 20;
//public const int GROWTH_INTERVAL = 1000; // Test value for Quick Trials
public const int GROWTH_INTERVAL = 60000; // 60k == 1 day
public override void Tick()
{
base.Tick();
if (pawn.IsHashIntervalTick(GROWTH_INTERVAL)
&& this.pawn.Map != null
&& pawn.ageTracker.AgeBiologicalYears >= RESIZING_AGE)
{
GrowPenisses();
GrowVaginas();
}
}
private void GrowPenisses()
{
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
foreach(Hediff penis in AllPenisses)
{
CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>();
if (penis.Severity < 1.00)
{
penis.Severity = Math.Min(1.01f, penis.Severity + 0.05f);
} else {
if (CompHediff != null)
{
CompHediff.SizeOwner += 0.015f;
if (CompHediff.SizeOwner > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
}
}
}
// Increase Fluid
if (CompHediff != null)
CompHediff.FluidAmmount *= 1.05f;
}
}
private void GrowVaginas()
{
List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
foreach (Hediff vagina in AllVaginas)
{
CompHediffBodyPart CompHediff = vagina.TryGetComp<rjw.CompHediffBodyPart>();
if (vagina.Severity < 1.00)
{
vagina.Severity = Math.Min(1.01f, vagina.Severity + 0.05f);
}
else
{
if (CompHediff != null)
{
CompHediff.SizeOwner += 0.015f;
if (CompHediff.SizeOwner > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
}
}
}
// Increase Fluid
if (CompHediff != null)
CompHediff.FluidAmmount *= 1.025f;
}
}
private void HandleGenitaliaSizeThoughts(Pawn pawn)
{
Hediff hybridsThoughts = pawn.health.hediffSet.GetFirstHediffOfDef(HediffDefOf.rjw_genes_evergrowth_sideeffect);
if (hybridsThoughts != null)
{
hybridsThoughts.Severity += 0.025f;
}
else
{
hybridsThoughts = HediffMaker.MakeHediff(HediffDefOf.rjw_genes_evergrowth_sideeffect, pawn);
hybridsThoughts.Severity = 0.1f;
pawn.health.AddHediff(hybridsThoughts);
}
}
}
}

View File

@ -17,6 +17,8 @@ namespace RJW_Genes
public static readonly HediffDef rjw_genes_orgasm_rush_hediff;
public static readonly HediffDef rjw_genes_fertilin_craving;
public static readonly HediffDef rjw_genes_evergrowth_sideeffect;
public static readonly HediffDef rjw_genes_orgasmic_mytosis_hediff;
public static readonly HediffDef rjw_genes_mytosis_shock_hediff;
}

View File

@ -44,6 +44,7 @@
<Compile Include="Genes\Breeding\Gene_MechBreeder.cs" />
<Compile Include="Genes\Breeding\PatchMechBirth.cs" />
<Compile Include="Genes\ExtraGenitalia\Gene_UdderBreasts.cs" />
<Compile Include="Genes\GenitaliaSize\Gene_EvergrowingGenitalia.cs" />
<Compile Include="Genes\Hive\Defs\HiveOffspringChanceDef.cs" />
<Compile Include="Genes\Hive\Genes\Gene_FerventOvipositor.cs" />
<Compile Include="Genes\Hive\Genes\Gene_InsectIncubator.cs" />