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;
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;
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.
// 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())
{
CompHediffBodyPart CompHediff;
HediffComp_SexPart CompHediff;
foreach (Hediff part in parts)
{
@ -22,10 +22,10 @@ namespace RJW_Genes
if (rjw.Genital_Helper.is_penis(part))
{
CompHediff = part.TryGetComp<rjw.CompHediffBodyPart>();
CompHediff = part.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null)
{
CompHediff.FluidAmmount *= multiplier;
CompHediff.partFluidFactor *= multiplier;
}
}
}
@ -57,7 +57,7 @@ namespace RJW_Genes
float total_cum = 0;
if (!parts.NullOrEmpty())
{
CompHediffBodyPart CompHediff;
HediffComp_SexPart CompHediff;
foreach (Hediff part in parts)
{
@ -66,10 +66,10 @@ namespace RJW_Genes
if (rjw.Genital_Helper.is_penis(part))
{
CompHediff = part.TryGetComp<rjw.CompHediffBodyPart>();
CompHediff = part.TryGetComp<rjw.HediffComp_SexPart>();
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);
additional_anus = HediffMaker.MakeHediff(anusDef, pawn);
var CompHediff = additional_anus.TryGetComp<rjw.CompHediffBodyPart>();
var CompHediff = additional_anus.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_anus, partBPR);

View file

@ -60,11 +60,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_breastsBPR(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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_breasts, partBPR);

View file

@ -60,11 +60,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_penis, partBPR);

View file

@ -65,11 +65,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_vagina, partBPR);

View file

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

View file

@ -64,11 +64,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_genital, partBPR);
@ -81,11 +81,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_genitalsBPR(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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
pawn.health.AddHediff(additional_genital, partBPR);

View file

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

View file

@ -184,11 +184,11 @@ namespace RJW_Genes
var partBPR = Genital_Helper.get_breastsBPR(pawn);
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)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
return additional_breasts;

View file

@ -6,13 +6,13 @@ namespace RJW_Genes
{
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())
{
Hediff replacementGenital;
CompHediffBodyPart CompHediff;
HediffComp_SexPart CompHediff;
foreach (Hediff existingGenital in oldParts)
{
@ -55,11 +55,11 @@ namespace RJW_Genes
if (replacementGenital != null)
{
CompHediff = replacementGenital.TryGetComp<rjw.CompHediffBodyPart>();
CompHediff = replacementGenital.TryGetComp<rjw.HediffComp_SexPart>();
if (CompHediff != null)
{
CompHediff.initComp(pawn);
CompHediff.updatesize();
CompHediff.Init(pawn);
CompHediff.UpdateSeverity();
}
GenderHelper.ChangeSex(pawn, () =>
{
@ -81,15 +81,17 @@ namespace RJW_Genes
{
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)
{
if (!GenitalPartExtension.TryGet(hed, out var ext))
{
return false;
}
return ext.family == rjw.Modules.Interactions.Enums.GenitalFamily.Breasts;
if (hed.def is not HediffDef_SexPart def) return false;
return is_breast_family(def.genitalFamily);
}
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.
if (part.Severity == best.Severity) {
var partSize = part.TryGetComp<rjw.CompHediffBodyPart>();
var bestSize = part.TryGetComp<rjw.CompHediffBodyPart>();
var partSize = part.TryGetComp<rjw.HediffComp_SexPart>();
var bestSize = part.TryGetComp<rjw.HediffComp_SexPart>();
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) {
best = part;
}
@ -110,10 +110,10 @@ namespace RJW_Genes
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;
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));
foreach(Hediff penis in AllPenisses)
{
CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>();
HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
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)
CompHediff.originalOwnerSize += 0.015f;
if (CompHediff.originalOwnerSize > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
@ -48,7 +48,7 @@ namespace RJW_Genes
// Increase Fluid
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));
foreach (Hediff vagina in AllVaginas)
{
CompHediffBodyPart CompHediff = vagina.TryGetComp<rjw.CompHediffBodyPart>();
HediffComp_SexPart CompHediff = vagina.TryGetComp<rjw.HediffComp_SexPart>();
if (vagina.Severity < 1.00)
{
vagina.Severity = Math.Min(1.01f, vagina.Severity + 0.05f);
@ -66,8 +66,8 @@ namespace RJW_Genes
{
if (CompHediff != null)
{
CompHediff.SizeOwner += 0.015f;
if (CompHediff.SizeOwner > 3.0f)
CompHediff.originalOwnerSize += 0.015f;
if (CompHediff.originalOwnerSize > 3.0f)
{
// Add Mental Hediff
HandleGenitaliaSizeThoughts(pawn);
@ -77,7 +77,7 @@ namespace RJW_Genes
// Increase Fluid
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));
foreach (Hediff penis in AllPenisses)
{
CompHediffBodyPart CompHediff = penis.TryGetComp<rjw.CompHediffBodyPart>();
HediffComp_SexPart CompHediff = penis.TryGetComp<rjw.HediffComp_SexPart>();
if (penis.Severity < 1.00)
{
penis.Severity = Math.Min(1.01f, penis.Severity + size_increment);
}
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
if (CompHediff != null)
CompHediff.FluidAmmount *= cum_multiplier;
CompHediff.partFluidFactor *= cum_multiplier;
}
}

View file

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