protected bool ChangeFemininity(Creature target, StringBuilder sb)
        {
            FemininityData oldFem = target.femininity.AsReadOnlyData();

            if (target.femininity.ChangeFemininityToward(70, 2) != 0)
            {
                sb.Append(FemininityChangedText(target, oldFem));
                return(true);
            }
            return(false);
        }
Beispiel #2
0
 private string Masculinize(Creature consumer, bool firstTime, FemininityData oldFem)
 {
     if (firstTime)
     {
         return("Lastly, the change hits your face. You can feel your jawbones shifting and sliding around, your skin changing to accommodate your face's new shape. " +
                "Once it's finished, you feel your impeccable square jaw and give a wide, easy-going grin. You look awesome!" + GlobalStrings.NewParagraph());
     }
     else
     {
         return("The changes finally return to your face, ensuring your face matches your fully masculine body. After finding something to reflective, you note your" +
                "square jawline and manly cheekbones. You snap your fingers and point toward your reflection. " + SafelyFormattedString.FormattedText("Still got it!",
                                                                                                                                                      StringFormats.ITALIC) + GlobalStrings.NewParagraph());
     }
 }
        public string FemininityChangedText(FemininityData oldFemininity)
        {
            var strength = value - oldFemininity.value;

            if (strength == 0)
            {
                return("");
            }
            //See if a change happened!
            if (ThresholdChanged(oldFemininity))
            {
                //Gain fem?
                if (strength > 0)
                {
                    return(GlobalStrings.NewParagraph() + "<b>Your facial features soften as your body becomes more feminine. (+" + strength + ")</b>");
                }
                else
                {
                    strength *= -1;
                    return(GlobalStrings.NewParagraph() + "<b>Your facial features harden as your body becomes more masculine. (+" + strength + ")</b>");
                }
            }
            //Barely noticable change!
            else
            {
                if (strength > 0)
                {
                    return(GlobalStrings.NewParagraph() + "Your face tingles slightly as it changes imperceptibly towards being more feminine. (+" + strength + ")");
                }
                else
                {
                    strength *= -1;
                    return(GlobalStrings.NewParagraph() + "Your face tingles slightly as it changes imperceptibly towards being more masculine. (+" + strength + ")");
                }
            }
        }
Beispiel #4
0
 protected virtual string AdjustFemininity(Creature target, FemininityData oldData)
 {
     return(target.femininity.FemininityChangedText(oldData));
 }
Beispiel #5
0
 protected override string FemininityChangedText(Creature target, FemininityData oldFem)
 {
     return("You run your " + target.hands.ShortDescription() + " across the fabric of your Gown, then against your face as it feels like"
            + " there is something you need to wipe off. " + target.femininity.FemininityChangedText(oldFem));
 }
Beispiel #6
0
        //MOD NOTE: this has been changed to work like bimbo liqueur - it will remove all vaginas and restore breasts to manly defaults if
        //the futa perk is not active.
        protected override string OnConsumeAttempt(Creature consumer, out bool consumeItem, out bool isBadEnd)
        {
            isBadEnd = false;

            StringBuilder sb = new StringBuilder();
            //get our common bimbo/bro/futa perk store. Note that it may be null (if we don't have it).
            BimBro bimbro = consumer.GetPerkData <BimBro>();

            //intro text.

            //first check: we don't have any bro/futa/bimbo perks, because it's not in our perk list. do the standard faire.
            sb.Append(Intro(consumer, bimbro));

            if (bimbro?.hasBroEffect == true)
            {
                (consumer as CombatCreature)?.RecoverFatigue(33);
                (consumer as CombatCreature)?.AddHPPercent(1);
            }

            VaginaCollectionData oldVaginaCollection = consumer.genitals.allVaginas.AsReadOnlyData();

            //get taller. only occurs if the player does not already have the bro perk in any form.
            if ((bimbro is null || !bimbro.broBody) && consumer.build.heightInInches < 77)
            {
                short delta = consumer.build.SetHeight(77);

                sb.Append(GrewTaller(consumer, delta));
            }

            //(T**s b' gone)
            //Does not affect creature if they already have bimbo or futa perks.
            if (bimbro is null || bimbro.broBody)
            {
                //Note: minimum cup size respects current gender. we'll need to make the creature male (or genderless) first.
                consumer.RemoveAllVaginas();

                if (consumer.genitals.BiggestCupSize() >= consumer.genitals.smallestPossibleMaleCupSize)
                {
                    BreastCollectionData oldRows = consumer.genitals.allBreasts.AsReadOnlyData();
                    consumer.RemovePerk <Feeder>();
                    bool stoppedLactation = consumer.genitals.SetLactationTo(LactationStatus.NOT_LACTATING);

                    sb.Append(ChangedBreastsText(consumer, bimbro, oldRows, stoppedLactation));
                }
            }

            //Body tone Flavor text. No effect on stats (yet)
            sb.Append(BecomeRippedFlavorText(consumer, bimbro));



            //Dick&balls growth. Affects all.

            //(has dick less than 10 inches)
            if (consumer.hasCock)
            {
                bool grewBalls      = !consumer.hasBalls;
                bool lengthenedCock = false;

                if (consumer.cocks[0].length < 10)
                {
                    lengthenedCock = true;
                    consumer.cocks[0].SetLength(10);
                    if (consumer.cocks[0].girth < 2.75)
                    {
                        consumer.cocks[0].SetGirth(2.75);
                    }
                }

                if (!consumer.hasBalls)
                {
                    consumer.balls.GrowBalls(2, 3);
                }

                sb.Append(LengthenedCock(consumer, bimbro, lengthenedCock, grewBalls));
            }
            //(No dick)
            else
            {
                consumer.AddCock(CockType.defaultValue, 12, 2.75);
                bool grewBalls = false;
                if (!consumer.balls.hasBalls)
                {
                    grewBalls = true;
                    consumer.balls.GrowBalls(2, 3);
                }
                sb.Append(GrewCock(consumer, bimbro, grewBalls));
            }

            //(Pussy b gone)
            //Note: only applies if consumer does not have bimbo or futa perks. also note that we already silently removed them so the breasts would resize correctly.
            //so all this does is print out the data.
            if ((bimbro is null || bimbro.broBody) && oldVaginaCollection.hasVagina)
            {
                sb.Append(RemovedAllVaginas(consumer, oldVaginaCollection));
            }

            //(below max masculinity)
            if ((bimbro is null || bimbro.broBody) && consumer.femininity > 0)
            {
                FemininityData oldFem = consumer.femininity.AsReadOnlyData();
                sb.Append(consumer.ModifyFemininity(0, 100));
                sb.Append(Masculinize(consumer, bimbro is null, oldFem));
            }

            //max tone. Thickness + 50
            //both are silent.
            consumer.build.ChangeMuscleToneToward(100, 100);
            consumer.build.ChangeThicknessToward(100, 50);

            if (consumer.intelligence > 21)
            {
                consumer.SetIntelligence((byte)Math.Floor(Math.Max(consumer.intelligenceTrue / 5.0, 21)));
            }
            consumer.DeltaCreatureStats(str: 33, tou: 33, inte: -1, lib: 4, lus: 40);

            sb.Append(Outro(consumer, bimbro, consumer.perks.HasPerk <Feeder>()));

            //apply the perks. this will also correct any silent data we missed.
            if (bimbro is null)
            {
                consumer.AddPerk(new BimBro(Gender.MALE));
            }
            else
            {
                bimbro.Broify();
            }


            ////Bonus cum production!
            //sb.Append("<b>(Bro Body - Perk Gained!)" + Environment.NewLine);
            //sb.Append("(Bro Brains - Perk Gained!)</b>" + Environment.NewLine);//int to 20. max int 50)
            //if (consumer.HasPerk<Feeder>())
            //{
            //	sb.Append("<b>(Perk Lost - Feeder!)</b>" + Environment.NewLine);
            //	consumer.RemovePerk<Feeder>();
            //}

            consumeItem = true;
            return(sb.ToString());
        }
 protected abstract string FemininityChangedText(Creature target, FemininityData oldFem);