public static Texture2D GetGenitalIcon(this Pawn pawn, HediffComp_Menstruation comp, bool drawOrigin = false) { var hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn))?.Find((Hediff h) => h.def.defName.ToLower().Contains("v****a")); if (hediff == null) { return(ContentFinder <Texture2D> .Get("Genitals/Vagina00", true)); } //HediffComp_Menstruation comp = hediff.GetMenstruationComp(); string icon; float severity; if (drawOrigin) { severity = comp.OriginVagSize; } else { severity = hediff.Severity; } if (comp != null) { icon = comp.vagTex; } else { icon = "Genitals/V****a"; } if (severity < 0.20f) { icon += "00"; //micro } else if (severity < 0.30f) { icon += "01"; //tight } else if (severity < 0.40f) { icon += "02"; //tight } else if (severity < 0.47f) { icon += "03"; //average } else if (severity < 0.53f) { icon += "04"; //average } else if (severity < 0.60f) { icon += "05"; //average } else if (severity < 0.70f) { icon += "06"; //accomodating } else if (severity < 0.80f) { icon += "07"; //accomodating } else if (severity < 0.87f) { icon += "08"; //cavernous } else if (severity < 0.94f) { icon += "09"; //cavernous } else if (severity < 1.01f) { icon += "10"; //cavernous } else { icon += "11"; //abyssal } return(ContentFinder <Texture2D> .Get((icon), true)); }
public static void DrawBreastIcon(this Pawn pawn, Rect rect, bool drawOrigin = false) { var hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_breastsBPR(pawn)).FirstOrDefault((Hediff h) => h.def.defName.ToLower().Contains("breast")); Texture2D breast, nipple, areola; if (hediff != null) { HediffComp_Breast comp = hediff.TryGetComp <HediffComp_Breast>(); string icon; if (comp != null) { icon = comp.Props.BreastTex ?? "Breasts/Breast_Breast"; } else { breast = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00", false); nipple = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00_Nipple00", false); areola = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00_Areola00", false); GUI.color = pawn.story?.SkinColor ?? Color.white; GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit); GUI.color = Color.white; GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit); GUI.DrawTexture(rect, nipple, ScaleMode.ScaleToFit); return; } if (hediff.Severity < 0.20f) { icon += "_Breast00"; } else if (hediff.Severity < 0.40f) { icon += "_Breast01"; } else if (hediff.Severity < 0.60f) { icon += "_Breast02"; } else if (hediff.Severity < 0.80f) { icon += "_Breast03"; } else if (hediff.Severity < 1.00f) { icon += "_Breast04"; } else { icon += "_Breast05"; } string nippleicon, areolaicon; float nipplesize, areolasize; if (drawOrigin) { nipplesize = comp.OriginNipple; areolasize = comp.OriginAreola; } else { nipplesize = comp.NippleSize; areolasize = comp.AreolaSize; } nippleicon = icon + "_Nipple0" + GetNippleIndex(nipplesize); areolaicon = icon + "_Areola0" + GetAreolaIndex(areolasize); breast = ContentFinder <Texture2D> .Get(icon, false); areola = ContentFinder <Texture2D> .Get(areolaicon, false); nipple = ContentFinder <Texture2D> .Get(nippleicon, false); GUI.color = pawn.story.SkinColor; GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit); if (drawOrigin) { GUI.color = comp.OriginColor; } else { GUI.color = comp.NippleColor; } GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit); GUI.DrawTexture(rect, nipple, ScaleMode.ScaleToFit); if (Configurations.Debug) { TooltipHandler.TipRegion(rect, comp.DebugInfo()); } } else { breast = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00", false); nipple = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00_Nipple00", false); areola = ContentFinder <Texture2D> .Get("Breasts/Breast_Breast00_Areola00", false); GUI.color = pawn.story.SkinColor; GUI.DrawTexture(rect, breast, ScaleMode.ScaleToFit); GUI.color = Color.white; GUI.DrawTexture(rect, areola, ScaleMode.ScaleToFit); GUI.DrawTexture(rect, nipple, ScaleMode.ScaleToFit); } }
public static string GetVaginaLabel(this Pawn pawn) { var hediff = Genital_Helper.get_PartsHediffList(pawn, Genital_Helper.get_genitalsBPR(pawn)).Find((Hediff h) => h.def.defName.ToLower().Contains("v****a")); return(hediff.LabelBase.CapitalizeFirst() + "\n(" + hediff.LabelInBrackets + ")" + "\n" + xxx.CountOfSex.LabelCap.CapitalizeFirst() + ": " + pawn.records.GetAsInt(xxx.CountOfSex)); }
public static bool Prefix(SexProps props) { xxx.rjwSextype sextype = props.sexType; Pawn pawn = props.pawn; Pawn partner = props.partner; if (sextype == xxx.rjwSextype.Vaginal) { var pawnpartBPR = Genital_Helper.get_genitalsBPR(pawn); var maleparts = Genital_Helper.get_PartsHediffList(pawn, pawnpartBPR); var partnerpartBPR = Genital_Helper.get_genitalsBPR(partner); var femaleparts = Genital_Helper.get_PartsHediffList(partner, partnerpartBPR); Pawn female = null, male = null; if (Genital_Helper.has_vagina(partner, femaleparts)) { female = partner; male = pawn; } else if (Genital_Helper.has_vagina(pawn, maleparts)) { female = pawn; femaleparts = maleparts; male = partner; maleparts = Genital_Helper.get_PartsHediffList(partner, partnerpartBPR); } else { return(true); } if (female.IsAnimal() && !Configurations.EnableAnimalCycle) { return(true); } HediffComp_Menstruation comp = female.GetMenstruationComp(); if (comp != null) { if (Genital_Helper.has_penis_fertile(male, maleparts) && PregnancyHelper.CanImpregnate(male, female, sextype)) { PregnancyHelper.Doimpregnate(male, female); return(false); } else if (Genital_Helper.has_ovipositorM(male, maleparts)) { comp.CumIn(male, Rand.Range(0.5f, 3.0f) * RJWSettings.cum_on_body_amount_adjust * male.BodySize, 1.0f); } else { comp.CumIn(male, male.GetCumVolume(maleparts), 0); } } //if (Genital_Helper.has_vagina(partner, partnerparts)) //{ // if (partner.IsAnimal() && !Configurations.EnableAnimalCycle) return true; // HediffComp_Menstruation comp = Utility.GetMenstruationComp(partner); // if (comp != null) // { // if (Genital_Helper.has_penis_fertile(pawn, pawnparts) && PregnancyHelper.CanImpregnate(pawn, partner, sextype)) // { // PregnancyHelper.Doimpregnate(pawn, partner); // return false; // } // else comp.CumIn(pawn, pawn.GetCumVolume(), 0); // } //} //else if (Genital_Helper.has_vagina(pawn, pawnparts)) //{ // if (pawn.IsAnimal() && !Configurations.EnableAnimalCycle) return true; // HediffComp_Menstruation comp = Utility.GetMenstruationComp(pawn); // if (comp != null) // { // if (Genital_Helper.has_penis_fertile(partner, partnerparts) && PregnancyHelper.CanImpregnate(partner, pawn, sextype)) // { // PregnancyHelper.Doimpregnate(partner, pawn); // return false; // } // else comp.CumIn(partner, partner.GetCumVolume(), 0); // } //} } return(true); }