Added the first genetic infector gene, stretcher, and docs for it

This commit is contained in:
Vegapnk 2024-07-04 09:19:34 +02:00
parent 65ff62cbf9
commit 56f8c2b6b2
7 changed files with 167 additions and 4 deletions

View file

@ -71,6 +71,31 @@ namespace RJW_Genes
return new List<GeneDef>() { };
}
public static List<GeneDef> GetGeneticInfectorGenes(Pawn pawn)
{
if (pawn != null && pawn.genes != null)
{
return pawn.genes
.GenesListForReading
.ConvertAll(gene => gene.def)
.Where(genedef => pawn.genes.HasActiveGene(genedef))
.Where(IsGeneticInfectorGene)
.ToList();
}
return new List<GeneDef>() { };
}
public static List<GeneDef> LookupInfectionGeneDefs(GeneticInfectorExtension infectorExt)
{
if (infectorExt == null) new List<GeneDef>();
return RimWorld.GeneUtility
.GenesInOrder
.Where(genedef => infectorExt.infectionGenes.Contains(genedef.defName))
.ToList();
}
/// <summary>
/// Checks if the performed sex was penetrative.
/// Condom check is not done here!
@ -97,6 +122,13 @@ namespace RJW_Genes
return diseaseExt != null;
}
public static bool IsGeneticInfectorGene(GeneDef geneDef)
{
if (geneDef == null) return false;
GeneticInfectorExtension infectorExt = geneDef.GetModExtension<GeneticInfectorExtension>();
return infectorExt != null;
}
public static float LookupDiseaseInfectionChance(GeneDef geneDef)
{
if (IsGeneticDiseaseGene(geneDef))
@ -107,5 +139,7 @@ namespace RJW_Genes
else
return 0.0f;
}
}
}