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));
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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);
        }