using System.Collections.Generic; using System.Linq; using Verse; using rjw; namespace STD { /// /// Common functions and constants relevant to STDs. /// public static class std { //STDs public static std_def ahiv = DefDatabase.GetNamed("AcuteHIV"); public static std_def chiv = DefDatabase.GetNamed("ChronicHIV"); public static std_def herpes = DefDatabase.GetNamed("Herpes"); public static std_def warts = DefDatabase.GetNamed("Warts"); public static std_def syphilis = DefDatabase.GetNamed("Syphilis"); public static std_def boobitis = DefDatabase.GetNamed("Boobitis"); public static List all => DefDatabase.AllDefsListForReading; public static Hediff get_infection(Pawn p, std_def sd) { return p.health.hediffSet.GetFirstHediffOfDef(sd.hediff_def); } public static BodyPartRecord GetRelevantBodyPartRecord(Pawn pawn, std_def std) { if (std.appliedOnFixedBodyParts == null) { return null; } BodyPartDef target = std.appliedOnFixedBodyParts.Single(); return pawn?.RaceProps.body.GetPartsWithDef(target).Single(); //return pawn?.RaceProps.body.GetPartsWithDef(std.appliedOnFixedBodyParts.Single()).Single(); } public static bool IsImmune(Pawn pawn) { // Archotech genitalia automagically purge STDs. return pawn.health.hediffSet.HasHediff(Genital_Helper.archotech_vagina) || pawn.health.hediffSet.HasHediff(Genital_Helper.archotech_penis) || xxx.is_demon(pawn) || xxx.is_slime(pawn) || xxx.is_mechanoid(pawn); } public static bool PartsImmune(Pawn pawn, List list = null) { List propslist; if (!list.NullOrEmpty()) if (list.Any()) foreach (var y in list) { PartProps.TryGetProps(y, out propslist); if (!propslist.NullOrEmpty()) if (propslist.Contains("STDImmune")) { return true; } } return false; } } }