genitalia addition

This commit is contained in:
Jaaldabaoth 2024-05-25 01:13:00 +02:00
parent 8159bb792b
commit 7dbef0d19a
18 changed files with 559 additions and 39 deletions

View file

@ -14,21 +14,12 @@ namespace RJW_Genes
public class Gene_UdderBreasts : RJW_Gene
{
Hediff removed_breasts;
Hediff added_udders;
public override void PostMake()
{
base.PostMake();
// Breasts are replaced for female,trap and futa pawns
if ( removed_breasts == null
&& (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
)
{
RemoveButStoreBreasts();
AddUdders();
}
}
@ -36,42 +27,31 @@ namespace RJW_Genes
{
base.PostAdd();
// Breasts are replaced for female,trap and futa pawns
if (removed_breasts == null
&& (GenderUtility.IsFemale(pawn) || GenderHelper.GetSex(pawn) == GenderHelper.Sex.futa || GenderHelper.GetSex(pawn) == GenderHelper.Sex.trap)
)
{
RemoveButStoreBreasts();
AddUdders();
}
AddUdders();
}
public override void PostRemove()
{
base.PostRemove();
// Re-Add the old breasts
if (removed_breasts != null)
pawn.health.AddHediff(removed_breasts);
if (added_udders != null)
pawn.health.RemoveHediff(added_udders);
}
internal void RemoveButStoreBreasts()
{
var partBPR = Genital_Helper.get_breastsBPR(pawn);
Hediff breastsToRemove = Genital_Helper.get_AllPartsHediffList(pawn).FindLast(x => GenitaliaUtility.IsBreasts(x));
if (breastsToRemove != null)
{
removed_breasts = breastsToRemove;
pawn.health.RemoveHediff(breastsToRemove);
}
}
internal void AddUdders()
{
CompHediffBodyPart CompHediff = null;
BodyPartRecord bpr = Genital_Helper.get_uddersBPR(pawn);
added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr);
added_udders.TryGetComp<rjw.CompHediffBodyPart>();
if (CompHediff != null)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
}
}
}

View file

@ -0,0 +1,19 @@
using rjw;
using Verse;
namespace RJW_Genes
{
public class Genital_Helper_2
{
public static HediffDef NeedlePenis = HediffDef.Named("NeedlePenis");
public static HediffDef PigPenis = HediffDef.Named("PigPenis");
public static HediffDef MarinePenis = HediffDef.Named("MarinePenis");
public static HediffDef TentaclePenis = HediffDef.Named("TentaclePenis");
public static HediffDef GolemPenis = HediffDef.Named("GolemPenis");
public static HediffDef OrcPenis = HediffDef.Named("OrcPenis");
public static HediffDef GhostPenis = HediffDef.Named("GhostPenis");
public static HediffDef NecroPenis = HediffDef.Named("NecroPenis");
public static HediffDef GhostVagina = HediffDef.Named("GhostVagina");
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_GhostGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GhostPenis, Genital_Helper_2.GhostVagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_GolemGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.GolemPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_MarineGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.MarinePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_NecroGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NecroPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_NeedleGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.NeedlePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_OrcGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.OrcPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_PigGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.PigPenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}

View file

@ -0,0 +1,22 @@
using Verse;
using rjw;
namespace RJW_Genes
{
public class Gene_TentacleGenitalia : RJW_Gene
{
public override void PostMake()
{
base.PostMake();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
public override void PostAdd()
{
base.PostAdd();
GenitaliaChanger.ChangeGenitalia(this.pawn, Genital_Helper_2.TentaclePenis, Genital_Helper.average_vagina, Genital_Helper.average_anus);
}
}
}