diff --git a/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs b/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs index 3d8f612..b2e76c7 100644 --- a/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs +++ b/Source/Genes/Breeding/Genes/Gene_FerventOvipositor.cs @@ -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().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. diff --git a/Source/Genes/Cum/CumUtility.cs b/Source/Genes/Cum/CumUtility.cs index dba96b1..f6204ed 100644 --- a/Source/Genes/Cum/CumUtility.cs +++ b/Source/Genes/Cum/CumUtility.cs @@ -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(); + CompHediff = part.TryGetComp(); 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(); + CompHediff = part.TryGetComp(); if (CompHediff != null) { - total_cum += CompHediff.FluidAmmount * CompHediff.FluidModifier * multiplier; + total_cum += CompHediff.FluidAmount * CompHediff.Def.fluidMultiplier * multiplier; } } } diff --git a/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs b/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs index 65121e9..8bf4a90 100644 --- a/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs +++ b/Source/Genes/ExtraGenitalia/Gene_ExtraAnus.cs @@ -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(); + var CompHediff = additional_anus.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } pawn.health.AddHediff(additional_anus, partBPR); diff --git a/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs b/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs index 84fb107..4008ec0 100644 --- a/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs +++ b/Source/Genes/ExtraGenitalia/Gene_ExtraBreasts.cs @@ -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(); + var CompHediff = additional_breasts.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } pawn.health.AddHediff(additional_breasts, partBPR); diff --git a/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs b/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs index 7b8fcb4..03f1c01 100644 --- a/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs +++ b/Source/Genes/ExtraGenitalia/Gene_ExtraPenis.cs @@ -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(); + var CompHediff = additional_penis.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } pawn.health.AddHediff(additional_penis, partBPR); diff --git a/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs b/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs index fa02b87..7e43d64 100644 --- a/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs +++ b/Source/Genes/ExtraGenitalia/Gene_ExtraVagina.cs @@ -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(); + var CompHediff = additional_vagina.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } pawn.health.AddHediff(additional_vagina, partBPR); diff --git a/Source/Genes/ExtraGenitalia/Gene_Femboy.cs b/Source/Genes/ExtraGenitalia/Gene_Femboy.cs index e86beed..ea94ebd 100644 --- a/Source/Genes/ExtraGenitalia/Gene_Femboy.cs +++ b/Source/Genes/ExtraGenitalia/Gene_Femboy.cs @@ -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(); - if (compHediffBodyPart != null) + HediffComp_SexPart hediffCompSexPart = this.additional_genital.TryGetComp(); + 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) diff --git a/Source/Genes/ExtraGenitalia/Gene_Futa.cs b/Source/Genes/ExtraGenitalia/Gene_Futa.cs index 812f381..4fe8f53 100644 --- a/Source/Genes/ExtraGenitalia/Gene_Futa.cs +++ b/Source/Genes/ExtraGenitalia/Gene_Futa.cs @@ -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(); + var CompHediff = additional_genital.TryGetComp(); 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(); + var CompHediff = additional_genital.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } pawn.health.AddHediff(additional_genital, partBPR); diff --git a/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs index 87f2a20..cc8ec20 100644 --- a/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs +++ b/Source/Genes/ExtraGenitalia/Gene_UdderBreasts.cs @@ -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(); + added_udders.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } } diff --git a/Source/Genes/Gender/Genes/Gene_GenderFluid.cs b/Source/Genes/Gender/Genes/Gene_GenderFluid.cs index fe75f5d..4f530f6 100644 --- a/Source/Genes/Gender/Genes/Gene_GenderFluid.cs +++ b/Source/Genes/Gender/Genes/Gene_GenderFluid.cs @@ -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(); + var CompHediff = additional_breasts.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } return additional_breasts; diff --git a/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs index 61430a2..d92e9d1 100644 --- a/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs +++ b/Source/Genes/Genitalia/Defs/GenitaliaTypeExtension.cs @@ -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; } } diff --git a/Source/Genes/Genitalia/GenitaliaChanger.cs b/Source/Genes/Genitalia/GenitaliaChanger.cs index 71f0f05..2af0e11 100644 --- a/Source/Genes/Genitalia/GenitaliaChanger.cs +++ b/Source/Genes/Genitalia/GenitaliaChanger.cs @@ -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(); + CompHediff = replacementGenital.TryGetComp(); if (CompHediff != null) { - CompHediff.initComp(pawn); - CompHediff.updatesize(); + CompHediff.Init(pawn); + CompHediff.UpdateSeverity(); } GenderHelper.ChangeSex(pawn, () => { @@ -80,16 +80,18 @@ namespace RJW_Genes public static bool IsAnus(Hediff candidate) { 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) diff --git a/Source/Genes/Genitalia/GenitaliaUtility.cs b/Source/Genes/Genitalia/GenitaliaUtility.cs index 581ba64..14d7585 100644 --- a/Source/Genes/Genitalia/GenitaliaUtility.cs +++ b/Source/Genes/Genitalia/GenitaliaUtility.cs @@ -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(); - var bestSize = part.TryGetComp(); + var partSize = part.TryGetComp(); + var bestSize = part.TryGetComp(); 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() == null) + if (part == null || part.TryGetComp() == null) return 0.0f; else - return part.TryGetComp().SizeOwner; + return part.TryGetComp().originalOwnerSize; } } diff --git a/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs b/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs index 493eadf..663639e 100644 --- a/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs +++ b/Source/Genes/GenitaliaSize/Gene_EvergrowingGenitalia.cs @@ -30,15 +30,15 @@ namespace RJW_Genes List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x)); foreach(Hediff penis in AllPenisses) { - CompHediffBodyPart CompHediff = penis.TryGetComp(); + HediffComp_SexPart CompHediff = penis.TryGetComp(); 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 AllVaginas = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_vagina(x)); foreach (Hediff vagina in AllVaginas) { - CompHediffBodyPart CompHediff = vagina.TryGetComp(); + HediffComp_SexPart CompHediff = vagina.TryGetComp(); 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; } } diff --git a/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs b/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs index fed69d7..cd8feeb 100644 --- a/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs +++ b/Source/Genes/Special/Patches/Patch_HormonalSaliva.cs @@ -52,22 +52,22 @@ namespace RJW_Genes List AllPenisses = Genital_Helper.get_AllPartsHediffList(pawn).FindAll(x => Genital_Helper.is_penis(x)); foreach (Hediff penis in AllPenisses) { - CompHediffBodyPart CompHediff = penis.TryGetComp(); + HediffComp_SexPart CompHediff = penis.TryGetComp(); 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; } } diff --git a/Source/Rjw-Genes.csproj b/Source/Rjw-Genes.csproj index ddfa721..242b3fe 100644 --- a/Source/Rjw-Genes.csproj +++ b/Source/Rjw-Genes.csproj @@ -12,6 +12,7 @@ v4.8 512 + 9 none