This commit is contained in:
Seirra 2024-08-14 07:58:56 +01:00 committed by GitHub
commit 4a0172525b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 72 additions and 69 deletions

View file

@ -27,11 +27,11 @@ namespace RJW_Genes
if (pawn == null) return; if (pawn == null) return;
Hediff_PartBaseNatural OvipositorF = (Hediff_PartBaseNatural)pawn.health.hediffSet.GetFirstHediffOfDef(rjw.Genital_Helper.ovipositorF); Hediff_NaturalSexPart OvipositorF = (Hediff_NaturalSexPart)pawn.health.hediffSet.GetFirstHediffOfDef(rjw.Genital_Helper.ovipositorF);
if (OvipositorF == null) return; if (OvipositorF == null) return;
OvipositorF.nextEggTick = Math.Max(OvipositorF.nextEggTick - MULTIPLIER, -1); OvipositorF.AsHediff.TryGetComp<HediffComp_Ovipositor>().NewEggCheckInterval = 10000 / MULTIPLIER;
// DevNote: I first had a for-loop calling OviPositorF.tick(), but I fear that would be a performance sink. // DevNote: I first had a for-loop calling OviPositorF.tick(), but I fear that would be a performance sink.
// Also, it would double other aspects as well, such as bleeding out through your insect-PP or dropping out the eggs. // Also, it would double other aspects as well, such as bleeding out through your insect-PP or dropping out the eggs.

View file

@ -13,7 +13,7 @@ namespace RJW_Genes
if (!parts.NullOrEmpty()) if (!parts.NullOrEmpty())
{ {
CompHediffBodyPart CompHediff; HediffComp_SexPart CompHediff;
foreach (Hediff part in parts) foreach (Hediff part in parts)
{ {
@ -22,10 +22,10 @@ namespace RJW_Genes
if (rjw.Genital_Helper.is_penis(part)) if (rjw.Genital_Helper.is_penis(part))
{ {
CompHediff = part.TryGetComp<rjw.CompHediffBodyPart>(); CompHediff = part.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.FluidAmmount *= multiplier; CompHediff.partFluidFactor *= multiplier;
} }
} }
} }
@ -57,7 +57,7 @@ namespace RJW_Genes
float total_cum = 0; float total_cum = 0;
if (!parts.NullOrEmpty()) if (!parts.NullOrEmpty())
{ {
CompHediffBodyPart CompHediff; HediffComp_SexPart CompHediff;
foreach (Hediff part in parts) foreach (Hediff part in parts)
{ {
@ -66,10 +66,10 @@ namespace RJW_Genes
if (rjw.Genital_Helper.is_penis(part)) if (rjw.Genital_Helper.is_penis(part))
{ {
CompHediff = part.TryGetComp<rjw.CompHediffBodyPart>(); CompHediff = part.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
total_cum += CompHediff.FluidAmmount * CompHediff.FluidModifier * multiplier; total_cum += CompHediff.FluidAmount * CompHediff.Def.fluidMultiplier * multiplier;
} }
} }
} }

View file

@ -58,11 +58,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_anusBPR(pawn); var partBPR = Genital_Helper.get_anusBPR(pawn);
additional_anus = HediffMaker.MakeHediff(anusDef, pawn); additional_anus = HediffMaker.MakeHediff(anusDef, pawn);
var CompHediff = additional_anus.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_anus.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_anus, partBPR); pawn.health.AddHediff(additional_anus, partBPR);

View file

@ -60,11 +60,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_breastsBPR(pawn); var partBPR = Genital_Helper.get_breastsBPR(pawn);
additional_breasts = HediffMaker.MakeHediff(breastDef, pawn); additional_breasts = HediffMaker.MakeHediff(breastDef, pawn);
var CompHediff = additional_breasts.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_breasts.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_breasts, partBPR); pawn.health.AddHediff(additional_breasts, partBPR);

View file

@ -60,11 +60,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(pawn); var partBPR = Genital_Helper.get_genitalsBPR(pawn);
additional_penis = HediffMaker.MakeHediff(penisDef, pawn); additional_penis = HediffMaker.MakeHediff(penisDef, pawn);
var CompHediff = additional_penis.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_penis.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_penis, partBPR); pawn.health.AddHediff(additional_penis, partBPR);

View file

@ -65,11 +65,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(pawn); var partBPR = Genital_Helper.get_genitalsBPR(pawn);
additional_vagina = HediffMaker.MakeHediff(vaginaDef, pawn); additional_vagina = HediffMaker.MakeHediff(vaginaDef, pawn);
var CompHediff = additional_vagina.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_vagina.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_vagina, partBPR); pawn.health.AddHediff(additional_vagina, partBPR);

View file

@ -48,11 +48,11 @@ namespace RJW_Genes
HediffDef penisForGene = GenitaliaUtility.GetPenisForGene(GenitaliaUtility.GetGenitaliaTypeGeneForPawn(this.pawn)); HediffDef penisForGene = GenitaliaUtility.GetPenisForGene(GenitaliaUtility.GetGenitaliaTypeGeneForPawn(this.pawn));
BodyPartRecord part = Genital_Helper.get_genitalsBPR(this.pawn); BodyPartRecord part = Genital_Helper.get_genitalsBPR(this.pawn);
this.additional_genital = HediffMaker.MakeHediff(penisForGene, this.pawn, null); this.additional_genital = HediffMaker.MakeHediff(penisForGene, this.pawn, null);
CompHediffBodyPart compHediffBodyPart = this.additional_genital.TryGetComp<CompHediffBodyPart>(); HediffComp_SexPart hediffCompSexPart = this.additional_genital.TryGetComp<HediffComp_SexPart>();
if (compHediffBodyPart != null) if (hediffCompSexPart != null)
{ {
compHediffBodyPart.initComp(this.pawn, false); hediffCompSexPart.Init(this.pawn, false);
compHediffBodyPart.updatesize(0f); hediffCompSexPart.UpdateSeverity(0f);
} }
this.pawn.health.AddHediff(this.additional_genital, part, null, null); this.pawn.health.AddHediff(this.additional_genital, part, null, null);
foreach (Gene g in pawn.genes.GenesListForReading) foreach (Gene g in pawn.genes.GenesListForReading)

View file

@ -64,11 +64,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(pawn); var partBPR = Genital_Helper.get_genitalsBPR(pawn);
additional_genital = HediffMaker.MakeHediff(penisDef, pawn); additional_genital = HediffMaker.MakeHediff(penisDef, pawn);
var CompHediff = additional_genital.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_genital.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_genital, partBPR); pawn.health.AddHediff(additional_genital, partBPR);
@ -81,11 +81,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(pawn); var partBPR = Genital_Helper.get_genitalsBPR(pawn);
additional_genital = HediffMaker.MakeHediff(vaginaDef, pawn); additional_genital = HediffMaker.MakeHediff(vaginaDef, pawn);
var CompHediff = additional_genital.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_genital.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
pawn.health.AddHediff(additional_genital, partBPR); pawn.health.AddHediff(additional_genital, partBPR);

View file

@ -42,14 +42,14 @@ namespace RJW_Genes
internal void AddUdders() internal void AddUdders()
{ {
CompHediffBodyPart CompHediff = null; HediffComp_SexPart CompHediff = null;
BodyPartRecord bpr = Genital_Helper.get_uddersBPR(pawn); BodyPartRecord bpr = Genital_Helper.get_breastsBPR(pawn);
added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr); added_udders = pawn.health.AddHediff(Genital_Helper.udder_breasts, bpr);
added_udders.TryGetComp<rjw.CompHediffBodyPart>(); added_udders.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
} }

View file

@ -184,11 +184,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_breastsBPR(pawn); var partBPR = Genital_Helper.get_breastsBPR(pawn);
var additional_breasts = HediffMaker.MakeHediff(breastDef, pawn,partBPR); var additional_breasts = HediffMaker.MakeHediff(breastDef, pawn,partBPR);
var CompHediff = additional_breasts.TryGetComp<rjw.CompHediffBodyPart>(); var CompHediff = additional_breasts.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
return additional_breasts; return additional_breasts;

View file

@ -6,13 +6,13 @@ namespace RJW_Genes
{ {
public class GenitaliaTypeExtension : DefModExtension public class GenitaliaTypeExtension : DefModExtension
{ {
public HediffDef_PartBase penis; public HediffDef_SexPart penis;
public HediffDef_PartBase vagina; public HediffDef_SexPart vagina;
public HediffDef_PartBase anus; public HediffDef_SexPart anus;
public HediffDef_PartBase breasts; public HediffDef_SexPart breasts;
} }
} }

View file

@ -25,7 +25,7 @@ namespace RJW_Genes
if (!oldParts.NullOrEmpty()) if (!oldParts.NullOrEmpty())
{ {
Hediff replacementGenital; Hediff replacementGenital;
CompHediffBodyPart CompHediff; HediffComp_SexPart CompHediff;
foreach (Hediff existingGenital in oldParts) foreach (Hediff existingGenital in oldParts)
{ {
@ -55,11 +55,11 @@ namespace RJW_Genes
if (replacementGenital != null) if (replacementGenital != null)
{ {
CompHediff = replacementGenital.TryGetComp<rjw.CompHediffBodyPart>(); CompHediff = replacementGenital.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.initComp(pawn); CompHediff.Init(pawn);
CompHediff.updatesize(); CompHediff.UpdateSeverity();
} }
GenderHelper.ChangeSex(pawn, () => GenderHelper.ChangeSex(pawn, () =>
{ {
@ -80,16 +80,18 @@ namespace RJW_Genes
public static bool IsAnus(Hediff candidate) public static bool IsAnus(Hediff candidate)
{ {
return candidate.def.defName.ToLower().Contains("anus"); } return candidate.def.defName.ToLower().Contains("anus"); }
private static bool is_breast_family(GenitalFamily family) => family switch
{
GenitalFamily.Breasts => true,
_ => false
};
public static bool is_breast(Hediff hed) public static bool is_breast(Hediff hed)
{ {
if (!GenitalPartExtension.TryGet(hed, out var ext)) if (hed.def is not HediffDef_SexPart def) return false;
{ return is_breast_family(def.genitalFamily);
return false;
}
return ext.family == rjw.Modules.Interactions.Enums.GenitalFamily.Breasts;
} }
public static bool IsArtificial(Hediff candidate) public static bool IsArtificial(Hediff candidate)

View file

@ -94,11 +94,11 @@ namespace RJW_Genes
// On a draw of size, we check the body-size. // On a draw of size, we check the body-size.
if (part.Severity == best.Severity) { if (part.Severity == best.Severity) {
var partSize = part.TryGetComp<rjw.CompHediffBodyPart>(); var partSize = part.TryGetComp<rjw.HediffComp_SexPart>();
var bestSize = part.TryGetComp<rjw.CompHediffBodyPart>(); var bestSize = part.TryGetComp<rjw.HediffComp_SexPart>();
if (partSize == null || bestSize == null) { continue; } if (partSize == null || bestSize == null) { continue; }
best = partSize.SizeOwner > bestSize.SizeOwner ? part : best; best = partSize.originalOwnerSize > bestSize.originalOwnerSize ? part : best;
} else if (part.Severity > best.Severity) { } else if (part.Severity > best.Severity) {
best = part; best = part;
} }
@ -110,10 +110,10 @@ namespace RJW_Genes
public static float GetBodySizeOfSexPart(Hediff part) public static float GetBodySizeOfSexPart(Hediff part)
{ {
if (part == null || part.TryGetComp<rjw.CompHediffBodyPart>() == null) if (part == null || part.TryGetComp<rjw.HediffComp_SexPart>() == null)
return 0.0f; return 0.0f;
else else
return part.TryGetComp<rjw.CompHediffBodyPart>().SizeOwner; return part.TryGetComp<rjw.HediffComp_SexPart>().originalOwnerSize;
} }
} }

View file

@ -30,15 +30,15 @@ namespace RJW_Genes
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x)); List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
foreach(Hediff penis in AllPenisses) foreach(Hediff penis in AllPenisses)
{ {
CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>(); HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
if (penis.Severity < 1.00) if (penis.Severity < 1.00)
{ {
penis.Severity = Math.Min(1.01f, penis.Severity + 0.05f); penis.Severity = Math.Min(1.01f, penis.Severity + 0.05f);
} else { } else {
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.SizeOwner += 0.015f; CompHediff.originalOwnerSize += 0.015f;
if (CompHediff.SizeOwner > 3.0f) if (CompHediff.originalOwnerSize > 3.0f)
{ {
// Add Mental Hediff // Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn); HandleGenitaliaSizeThoughts(pawn);
@ -48,7 +48,7 @@ namespace RJW_Genes
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.FluidAmmount *= 1.05f; CompHediff.partFluidFactor *= 1.05f;
} }
} }
@ -57,7 +57,7 @@ namespace RJW_Genes
List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x)); List<Hediff> AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x));
foreach (Hediff vagina in AllVaginas) foreach (Hediff vagina in AllVaginas)
{ {
CompHediffBodyPart CompHediff = vagina.TryGetComp<rjw.CompHediffBodyPart>(); HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>();
if (vagina.Severity < 1.00) if (vagina.Severity < 1.00)
{ {
vagina.Severity = Math.Min(1.01f, vagina.Severity + 0.05f); vagina.Severity = Math.Min(1.01f, vagina.Severity + 0.05f);
@ -66,8 +66,8 @@ namespace RJW_Genes
{ {
if (CompHediff != null) if (CompHediff != null)
{ {
CompHediff.SizeOwner += 0.015f; CompHediff.originalOwnerSize += 0.015f;
if (CompHediff.SizeOwner > 3.0f) if (CompHediff.originalOwnerSize > 3.0f)
{ {
// Add Mental Hediff // Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn); HandleGenitaliaSizeThoughts(pawn);
@ -77,7 +77,7 @@ namespace RJW_Genes
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.FluidAmmount *= 1.025f; CompHediff.partFluidFactor *= 1.025f;
} }
} }

View file

@ -52,22 +52,22 @@ namespace RJW_Genes
List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x)); List<Hediff> AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x));
foreach (Hediff penis in AllPenisses) foreach (Hediff penis in AllPenisses)
{ {
CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>(); HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
if (penis.Severity < 1.00) if (penis.Severity < 1.00)
{ {
penis.Severity = Math.Min(1.01f, penis.Severity + size_increment); penis.Severity = Math.Min(1.01f, penis.Severity + size_increment);
} }
else else
{ {
if (CompHediff != null && CompHediff.SizeOwner <= maximum_body_size) if (CompHediff != null && CompHediff.originalOwnerSize <= maximum_body_size)
{ {
CompHediff.SizeOwner += size_increment; CompHediff.originalOwnerSize += size_increment;
} }
} }
// Increase Fluid // Increase Fluid
if (CompHediff != null) if (CompHediff != null)
CompHediff.FluidAmmount *= cum_multiplier; CompHediff.partFluidFactor *= cum_multiplier;
} }
} }

View file

@ -12,6 +12,7 @@
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion> <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<TargetFrameworkProfile /> <TargetFrameworkProfile />
<LangVersion>9</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType> <DebugType>none</DebugType>