Пример #1
0
            protected override string RemovedBasiliskHair(Creature target, HairData oldData)
            {
                StringBuilder sb = new StringBuilder();


                if (oldData.type == HairType.BASILISK_PLUME)
                {
                    // TF blurb derived from losing feathery hair
                    //(long):
                    if (oldData.length >= 5)
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "A lock of your feathery plume droops over your eye.  Before you can blow the offending down away, "
                                  + " you realize the feather is collapsing in on itself."
                                  + " It continues to curl inward until all that remains is a normal strand of hair.");
                    }
                    //(short)
                    else
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "You run your fingers through your feathery plume while you await the effects of the item you just ingested."
                                  + " While your hand is up there, it detects a change in the texture of your feathers.They're completely disappearing,"
                                  + " merging down into strands of regular hair.");
                    }

                    sb.Append(GlobalStrings.NewParagraph() + "<b>Your hair is no longer feathery!</b>");
                }
                else
                {
                    sb.Append(GlobalStrings.NewParagraph() + "You feel a tingling on your scalp. You reach up to your basilisk spines to find out what is happening.The moment"
                              + " your hand touches a spine, it comes loose and falls in front of you. One after another the other spines fall out, "
                              + " until all the spines that once decorated your head now lay around you, leaving you with a bald head.");
                    sb.Append(GlobalStrings.NewParagraph() + "<b>You realize that you'll grow normal human hair again!</b>");
                }

                return(sb.ToString());
            }
Пример #2
0
        private string Intro(Creature creature, BimBro bimBro)
        {
            if (bimBro is null)
            {
                string inteText = creature.intelligence > 50 ? ", though you're a bit worried by how much you enjoyed the simple, brutish act." : ".";

                return("Well, maybe this will give you the musculature that you need to accomplish your goals. You pull on the tab at the top and hear the distinctive " +
                       "snap-hiss of venting, carbonating pressure. A smoky haze wafts from the opened container, smelling of hops and alcohol. You lift it to your lips, " +
                       "the cold, metallic taste of the can coming to your tongue before the first amber drops of beer roll into your waiting mouth. It tingles, but it's very, " +
                       "very good. You feel compelled to finish it as rapidly as possible, and you begin to chug it. You finish the entire container in seconds." +
                       GlobalStrings.NewParagraph() +
                       "A churning, full sensation wells up in your gut, and without thinking, you open wide to release a massive burp. It rumbles through your chest, " +
                       "startling birds into flight in the distance. Awesome! You slam the can into your forehead hard enough to smash the fragile aluminum into a flat, " +
                       "crushed disc. Damn, you feel stronger already" + inteText + GlobalStrings.NewParagraph());
            }

            else if (bimBro.bimboBody)
            {
                return("The stuff hits you like a giant cube, nearly staggering you as it begins to settle.");
            }
            else
            {
                return("You crack open the can and guzzle it in a hurry. Goddamn, this shit is the best. As you crush the can against your forehead, " +
                       "you wonder if you can find a six-pack of it somewhere?" + GlobalStrings.NewParagraph());
            }
        }
Пример #3
0
        private string WearBimboSkirt(Creature wearer)
        {
            StringBuilder sb = new StringBuilder();


            sb.Append("As you go to put on your " + ItemName() + ", a strange sensation makes you pause for a moment. ");

            if (wearer.intelligence < 40)
            {
                sb.Append("You get the feeling wearing this won't just make you look like a bimbo, it'll make you LOOK like a bimbo, too.");
            }
            else if (wearer.intelligence < 65)
            {
                sb.Append("You get the impression wearing this won't just make you look like a bimbo, it'll make you more bimbo-like, too.");
            }
            else
            {
                sb.Append("You're fairly certain this is an enchanted item, and will undoubtedly alter your body and mind until you fully embody what it is to be a bimbo." +
                          "You're not really sure if that's something you want.");
            }
            sb.Append("Checking the tag confirms your suspicions. ");
            if (SillyModeSettings.isEnabled)
            {
                sb.Append("It reads: " + SafelyFormattedString.FormattedText("Made in Mareth. Machine wash cold. ", StringFormats.ITALIC));
            }
            else
            {
                sb.Append(" It also details a means to disable the effect. " + GlobalStrings.NewParagraph() + "Do you leave the bimbo-inducing effects " +
                          "enabled, or do you disable them?");
            }

            return(sb.ToString());
        }
Пример #4
0
        protected override string EquipText(Creature wearer)
        {
            if (wearer is IExtendedCreature extended && !extended.extendedData.everUsedDragonshellShield)
            {
                extended.extendedData.everUsedDragonshellShield = true;

                StringBuilder sb = new StringBuilder();
                sb.Append("Turning the sturdy shield over in inspection, you satisfy yourself as to its craftsmanship and adjust the straps to fit your arm snugly. " +
                          "You try a few practice swings, but find yourself overbalancing at each one due to the deceptive lightness of the material. " +
                          "Eventually, though, you pick up the knack of putting enough weight behind it to speed it through the air while thrusting a leg forward " +
                          "to stabilize yourself, and try bashing a nearby rock with it. You smile with glee as ");

                if (wearer.strength < 80)
                {
                    sb.Append("bits and pieces from the surface of the");
                }
                else
                {
                    sb.Append("huge shards of the shattered");
                }

                sb.Append(" rock are sent flying in all directions.");

                sb.Append(GlobalStrings.NewParagraph() + "After a few more practice bashes and shifts to acquaint yourself with its weight, " +
                          "you think you're ready to try facing an enemy with your new protection. One last thing... taking off the shield and turning it straps-down, " +
                          "you spit onto the surface. Satisfyingly, the liquid disappears into the shell as soon as it touches.");

                return(sb.ToString());
            }
Пример #5
0
        protected static string BehemothTransformStr(BackData back, PlayerBase player)
        {
            StringBuilder sb = new StringBuilder(GlobalStrings.NewParagraph() + "Your back and spine are suddenly overwhelmed with a sense of pins-and-needles. Unsure as to what exactly is causing this, you " +
                                                 (player.wearingAnything ? "undress and " : "") + "find something reflective to check your back with.");

            if (back.type == BackType.DRACONIC_SPIKES)
            {
                sb.Append("Strangely, each one of your spikes has started to split, forming two smaller spikes to the left and right of their previous location. Hair starts to grow between each " +
                          "new pair, which continue to move away from the center of your back. Eventually, they stop moving and straighten out instead. Once this finishes, you notice ");
            }
            else if (back.type == BackType.DRACONIC_MANE)
            {
                sb.Append("Along both sides of the mane running down your spine, a set of small spikes poke through your skin, causing intense discomfort. Once the spikes have finished, " +
                          "you notice ");
            }

            else
            {
                if (back.type != BackType.NORMAL)
                {
                    sb.Append("It seems that your back became completely normal while you were searching for something reflective. That was fast! You shrug, assuming that was it, when you" +
                              "notice something else happening. ");
                }
                sb.Append("You begin to notice a unique tuft of hair forming along your spine, starting at the base of your neck and continuing down ");
                sb.Append(player.tail.type != TailType.NONE ? "your tail, all the way to the end, where it forms a small tuft. " : "until it reaches your butt. ");
                sb.Append("It is the same color as the hair on your head, but shorter and denser. Along either side of it, a set of small spikes poke through your skin, " +
                          "causing intense discomfort. Once the spikes have finished, you notice ");
            }



            sb.Append(SafelyFormattedString.FormattedText("you have a back much like your behemoth friend!", StringFormats.BOLD) + "The hair forms a thick vertical strip, maybe " +
                      Measurement.ToNearestSmallUnit(2, false, true) + " wide, and you'd estimate each spike is roughly half that width, but protrudes from your back at least that far.");
            return(sb.ToString());
        }
Пример #6
0
 private string ClearedDickNipplesFlag(Creature consumer, NippleStatus oldStatus)
 {
     //new status is fuckable.
     if (oldStatus == NippleStatus.DICK_NIPPLE)
     {
         //Talk about if anything was changed.
         return(GlobalStrings.NewParagraph() + "Your massive dick-nipples tingle with sudden need, causing you to stroke them vigorously. As you do, " +
                "they begin to flatten, trading width for length. Undeterred, you switch to rubbing them, and occasionally prod their rapdidly widening opening. " +
                "Your efforts are rewarded as your nipples become wet, but it's not exactly what you were expecting. It's not until your fingers begin to slip " +
                "into your nipples that you realize the full extent of the change: <b>your dick-like nipples have shifted to become fuckable instead!</b>" +
                "It seems the egg has made it so your nipples prefer to be penetrated, instead of doing the penetrating.");
     }
     //old was not dick nipple (likely normal), and are now longer than fuckable threshold, so when we flipped the flag, they updated and became fuckable.W
     else if (consumer.genitals.nippleType == NippleStatus.FUCKABLE)
     {
         //Talk about if anything was changed.
         return(GlobalStrings.NewParagraph() + "Your " + consumer.genitals.AllBreastsLongDescription() + " tingle with warmth " +
                "that slowly migrates to your nipples, filling them with warmth. You pant and moan, rubbing them with your fingers."
                + " A trickle of wetness suddenly coats your finger as it slips inside the nipple. Shocked, you pull the finger free."
                + " <b>You now have fuckable nipples!</b>. It seems the egg has made it so your nipples prefer to be penetrated, instead of doing the penetrating.");
     }
     //else, they weren't long enough to become fuckable, so we grew them slightly. hint that dick nipples are no longer available.
     else
     {
         return(GlobalStrings.NewParagraph() + "Your " + consumer.genitals.AllBreastsLongDescription() + " tingle with warmth " +
                "that slowly migrates to your nipples, filling them with warmth. You pant and moan, rubbing them with your fingers." +
                " Your continued stimulation is eventually rewarded, as your nipples harden and enlongate slightly. You're certain something else changed, but you're " +
                "not entirely sure what. Perhaps if they were longer, they might act differently?");
     }
 }
Пример #7
0
        private static string DraconicSpikesTransformStr(BackData back, PlayerBase player)
        {
            string seeItHow;

            if (player.neck.type == NeckType.DRACONIC || player.neck.type == NeckType.COCKATRICE)
            {
                seeItHow = "you bend your neck around to look at it. ";
            }
            else if (player.tail.type == TailType.DRACONIC)
            {
                seeItHow = "you bend your tail around and look at it. ";
            }
            else
            {
                seeItHow = "strain your neck trying to see it, but eventually give up and find something reflective, "
                           + " and watch it that way. ";
            }

            string oldText  = back.type != BackType.NORMAL ? " your back shakes violently, forcibly reshaping until it's once again smooth, but the pain still remains. " : "";
            string tailText = player.tail.type != TailType.NONE ? "your tail, ending just before the tip. " : "until it reaches your butt. ";

            return(GlobalStrings.NewParagraph() + "You feel a sudden pain along your spine. Eager to see what's causing this, " + seeItHow + oldText +
                   "The pain seems to focus into smaller areas, which start to bulge outward against your skin. The bulges grow larger and more painful until, with one final " +
                   "burst of pain, spikes break through your skin. You nearly black out, but manage to retain your senses as they continue their growth, curving down and away from your neck. " +
                   GlobalStrings.NewParagraph() + "Once they stop growing, you notice the spikes form a line along your spine, starting at the base of your neck and continuing down " + tailText +
                   "The spikes are spaced evenly, each one steel-gray in color and maybe " + Measurement.ToNearestSmallUnit(2, false, true) +
                   " tall, their base roughly " + Measurement.ToNearestHalfSmallUnit(1, false, true) + " in diameter. "
                   + SafelyFormattedString.FormattedText("Your spine is now decorated with a row of curved spikes!", StringFormats.BOLD));
        }
Пример #8
0
        protected static string DraconicManeTransformStr(BackData previousBackData, PlayerBase player)
        {
            string seeItHow;

            if (player.neck.type == NeckType.DRACONIC || player.neck.type == NeckType.COCKATRICE)
            {
                seeItHow = "you bend your neck around to look at it. ";
            }
            else if (player.tail.type == TailType.DRACONIC)
            {
                seeItHow = "you bend your tail around and look at it. ";
            }
            else
            {
                seeItHow = "strain your neck trying to see it, but eventually give up and find something reflective, "
                           + " and watch it that way. ";
            }

            string tailText = player.tail.type != TailType.NONE ? "your tail, all the way to the end, where it forms a small tuft. " : "until it reaches your butt. ";
            string oldText  = previousBackData.type != BackType.NORMAL ? "Somehow, your back has become perfectly smooth, though the tingling remains. " : "";

            return(GlobalStrings.NewParagraph() + "You feel a sudden tingle just above your spine. Eager to see what's causing this, " + seeItHow + oldText +
                   "Tiny splotches of hair begin growing out of your " + player.body.mainEpidermis.ShortDescription() +
                   ". The hair grows longer and the splotches grow until they slowly merge to a vertical strip right above your spine." +
                   GlobalStrings.NewParagraph() + "The hair forms a mane along your spine, starting at the base of your neck and continuing down " + tailText +
                   "It is the same color as the hair on your head, but shorter and denser; it has grown in a thick vertical strip, maybe " + Measurement.ToNearestSmallUnit(2, false, true) +
                   " wide. It reminds you vaguely of a horse's mane. " + SafelyFormattedString.FormattedText("You now have a hairy mane along your spine!", StringFormats.BOLD));
        }
Пример #9
0
        public string ReductoHips(HipData oldHips, bool nothingHappened)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("You smear the foul-smelling paste onto your " + oldHips.ShortDescription() + ". It feels cool at first but rapidly warms to an uncomfortable level of heat."
                      + GlobalStrings.NewParagraph());
            if (nothingHappened)
            {
                sb.Append("Strangely, nothing seems to happen. What a waste!");
            }
            if (oldHips.size >= 15)
            {
                sb.Append("Within seconds you feel noticeably lighter, and a quick glance at your hips shows they've gotten significantly narrower.");
            }
            else if (oldHips.size >= 10)
            {
                sb.Append("You feel much lighter as your " + ShortDescription() + " shift slightly, adjusting to their smaller size.");
            }
            else
            {
                sb.Append("After a few seconds your " + ShortDescription() + " have shrunk to a much smaller size!");
            }

            return(sb.ToString());
        }
Пример #10
0
        protected override string OnConsumeAttempt(Creature consumer, out bool consumeItem, out bool isBadEnd)
        {
            isBadEnd = false;

            StringBuilder sb = new StringBuilder();

            sb.Append("You devour the egg, momentarily sating your hunger." + GlobalStrings.NewParagraph());
            if (!isLarge)
            {
                sb.Append("You feel a bit of additional weight on your backside as your " + consumer.butt.ShortDescription() + " gains a bit more padding.");
                consumer.butt.GrowButt();
            }
            else
            {
                sb.Append("Your " + consumer.build.ButtLongDescription() + " wobbles, nearly throwing you off balance as it grows much bigger!");
                consumer.butt.GrowButt((byte)(2 + Utils.Rand(3)));
            }
            if (Utils.Rand(3) == 0)
            {
                if (isLarge)
                {
                    sb.Append(consumer.ModifyTone(100, 8));
                }
                else
                {
                    sb.Append(consumer.ModifyThickness(95, 3));
                }
            }
            consumeItem = true;
            return(sb.ToString());
        }
Пример #11
0
        private static string RemovedQuadNippleText(Creature target)
        {
            string armorText = target.wearingArmor ? "under your " + target.armor.ItemName() : target.wearingUpperGarment ? "under your " + target.upperGarment.ItemName() : "down";

            return(GlobalStrings.NewParagraph() + "A strange burning sensation fills your breasts, and you look " + armorText + " to see your extra nipples are gone! " +
                   SafelyFormattedString.FormattedText("You've lost your extra nipples!", StringFormats.BOLD));
        }
Пример #12
0
        private string GainedRubberySkinPerk(Creature consumer, bool knewAboutBlackEggs)
        {
            if (!knewAboutBlackEggs)
            {
                string corruptionText;
                if (consumer.corruption < 66)
                {
                    corruptionText = ("Looking like this makes you feel like some kind of freak, but fortunately you can change back whenever you want.");
                }
                else
                {
                    corruptionText = "You feel like some kind of sexy rubber-skinned love-doll, though you can go back to normal if you really want.";
                }

                return(GlobalStrings.NewParagraph() + "Your already flawless smooth skin begins to tingle as it changes again. It becomes shinier as its texture " +
                       "changes subtly. You gasp as you touch yourself and realize your skin is suddenly covered in a strange substance. " +
                       "The stuff is everywhere, obsuring your vision and making it difficult to breathe. Just as you're about to pass out, something clicks in your mind and " +
                       "you gain control of the strange substance, as if it were another muscle in your body, and it receeds into your skin. Cautiously, you let it once again, " +
                       "and this time you retain your ability to see and breathe normally. It seems you can now have a thin layer of a latex-like substance coat your body, " +
                       "like a second skin. " + corruptionText + " You have little doubt you'll find uses for this later, be it in combat or, more kinky situations, if you so choose. "
                       + Environment.NewLine + SafelyFormattedString.FormattedText("Perk gained: Rubbery Skin. You can now choose to cover your body in a thin layer of latex " +
                                                                                   "in certain scenes for unique sexual interactions.", StringFormats.BOLD) + GlobalStrings.NewParagraph() +
                       "Looks like you now know what rubber eggs can do to you, you note with a smirk.");
            }
            else
            {
                return("A familiar sensation runs through your skin, and you are once again covered in a thin layer of latex. this time, you're prepared, and you gain control " +
                       "over it with little effort. It looks like " + SafelyFormattedString.FormattedText("you've regained the ability to coat your body in latex!",
                                                                                                          StringFormats.BOLD) + " You knew what these things could do to you, so this isn't really that surprising.");
            }
        }
Пример #13
0
 private static string ConvertedTwoCocksToDog(Creature target, CockData firstOldData, CockData secondOldData)
 {
     return(GlobalStrings.NewParagraph() + "Your crotch twitches, and you pull open your " + target.armor.ItemName() + " to get a better look. You watch in horror and arousal as your " +
            firstOldData.LongDescription() + " and " + secondOldData.LongDescription() + " both warp and twist, becoming red and pointed, growing thick bulges near the base. " +
            "When it stops you have two dog-cocks and an animal-like sheath. The whole episode turns you on far more than it should, leaving you dripping animal pre " +
            "and ready to breed.");
 }
Пример #14
0
        protected override string OnConsumeAttempt(Creature consumer, out bool consumeItem, out bool isBadEnd)
        {
            isBadEnd    = false;
            consumeItem = true;
            //has Bimbo/Futa/Bro perk (or else it'd return null) and bimbo Body flag is true.
            if (consumer.GetPerkData <BimBro>()?.hasBimboEffect == true)
            {
                return("You could've swore the stuff worked when you saw Niamh do it to others,"
                       + " but for some reason, it had, like, no effect on you. How weird!");
            }
            else if (!consumer.HasTimedEffect <TemporaryBimbification>())
            {
                consumer.AddTimedEffect <TemporaryBimbification>();
                string intro = "You uncork the bottle and breathe in the fizzy, spicy aroma of the sparkling liquor."
                               + " Breathing deeply, you open your mouth and begin pouring the ever-effervescent fluid inside."
                               + " It's sweet and slightly gooey, and the feel of it sliding down your throat is intensely... awesome? Like, totally!";

                return(intro + consumer.GetTimedEffectData <TemporaryBimbification>().ObtainText());
            }
            else
            {
                consumer.GetTimedEffectData <TemporaryBimbification>().IncreaseEffect();

                return("You find yourself falling even further into the dense bimbo mindset. You do feel, like, super-good and all, though!"
                       + GlobalStrings.NewParagraph() + "Moaning lewdly, you begin to sway your hips from side to side, putting on a show for anyone "
                       + "who might manage to see you.  You just feel so... sexy. Too sexy to hide it. Your body aches to show itself and feel the gaze of someone, "
                       + "anyone upon it. Mmmm, it makes you so wet! You sink your fingers into your sloppy c**t with a groan of satisfaction."
                       + " Somehow, you feel like you could f**k anyone right now!");
            }
        }
Пример #15
0
        private static string SandTrapRestoreStr(VaginaData oldVagina, PlayerBase player)
        {
            string vagDesc;

            //2 vaginas, and both used to be the same type - we want to tell them which one we're talking about.
            if (player.vaginas.Count == 2 && player.genitals.CountVaginasOfType(oldVagina.type) == 1)
            {
                vagDesc = $"{Utils.NumberAsPlace(oldVagina.vaginaIndex)} {oldVagina.ShortDescription()}";
            }
            else
            {
                vagDesc = oldVagina.LongDescription(false);
            }

            string wearingText;

            if (!player.wearingAnything)
            {
                wearingText = $" You watch as your {vagDesc} shifts and the inner folds return to a more natural shape and color.";
            }
            else
            {
                wearingText = $" Undoing your clothes, you take a look at your {vagDesc} and find that it has turned back to its natural flesh colour.";
            }
            return(GlobalStrings.NewParagraph() + "Something invisible brushes against your sex, making you twinge. " + wearingText);
        }
Пример #16
0
        private void ChooseSingleCock(Creature consumer, UseItemCallback postItemUseCallback, int cockNum = 0)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("You sink the needle into the base of your " + consumer.cocks[cockNum].LongDescription() + ". It hurts like hell, " +
                      "but as you depress the plunger, the pain vanishes, replaced by a tingling pleasure as the chemicals take effect." + GlobalStrings.NewParagraph());
            sb.Append("Your " + consumer.cocks[cockNum].LongDescription() + " twitches and thickens, looking to be ");
            if (consumer.cocks[cockNum].girth < consumer.cocks[cockNum].length / 10)
            {
                consumer.cocks[cockNum].IncreaseThickness(consumer.cocks[cockNum].girth * 0.5);
                sb.Append("fattening significantly!");
            }
            else if (consumer.cocks[cockNum].girth < consumer.cocks[cockNum].length / 6)
            {
                consumer.cocks[cockNum].IncreaseThickness(consumer.cocks[cockNum].girth * 0.3);
                sb.Append("thickening quite noticably.");
            }
            else if (consumer.cocks[cockNum].girth < consumer.cocks[cockNum].length / 4)
            {
                consumer.cocks[cockNum].IncreaseThickness(consumer.cocks[cockNum].girth * 0.2);
                sb.Append("thickening noticably.");
            }
            else if (consumer.cocks[cockNum].girth < consumer.cocks[cockNum].length / 2)
            {
                consumer.cocks[cockNum].IncreaseThickness(consumer.cocks[cockNum].girth * 0.1);
                sb.Append("widening slightly.");
            }
            else
            {
                sb.Append("widening slightly, only to shrink back to how it was before you even injected. Seems like your extremely thick c**k is already fat enough.");
            }
            sb.Append(GlobalStrings.NewParagraph() + "Once the growth has stopped, you discard the now-empty syringe.");

            postItemUseCallback(true, sb.ToString(), null, null);
        }
Пример #17
0
            protected override string GrantQuadNippleText(Creature target, BreastCollectionData oldBreasts)
            {
                string armorText = target.UpperBodyArmorShort();

                if (armorText is null)
                {
                    armorText = "You pause to see what's the cause";
                }
                else
                {
                    armorText = "You pull back your " + armorText;
                }

                StringBuilder sb = new StringBuilder();

                sb.Append(GlobalStrings.NewParagraph() + "Your " + oldBreasts[0].LongNippleDescription() + "s tingle and itch. " + armorText + " and watch in shock " +
                          "as they split into four distinct nipples! <b>You now have four nipples on each side of your chest!</b>");

                if (target.breasts.Count >= 2)
                {
                    sb.Append("A moment later your second row of " + oldBreasts[1].LongDescription() + " does the same. <b>You have sixteen nipples now!</b>");
                }
                if (target.breasts.Count >= 3)
                {
                    string rowText = target.breasts.Count > 3 ? "rows quickly follow" : "row quickly follows";
                    sb.Append("Your remaining " + rowText + "suit, granting you a wonderland of nipples.");
                }

                sb.Append(" <b>You have a total of " + Utils.NumberAsText(target.genitals.nippleCount) + " nipples.</b>");

                return(sb.ToString());
            }
Пример #18
0
        private string ReductoButt(ButtData oldData, bool nothingHappened)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("You smear the foul-smelling paste onto your " + oldData.ShortDescription() + ". It feels cool at first but rapidly warms " +
                      "to an uncomfortable level of heat." + GlobalStrings.NewParagraph());
            if (nothingHappened)
            {
                sb.Append("Strangely, nothing seems to happen. What a waste!");
            }
            if (oldData.size - size > 3)
            {
                sb.Append("Within seconds you feel noticeably lighter, and a quick glance shows your ass is significantly smaller.");
            }
            else if (oldData.size - size == 3)
            {
                sb.Append("You feel much lighter as your " + ShortDescription() + " jiggles slightly, adjusting to its smaller size.");
            }
            else
            {
                sb.Append("After a few seconds your " + ShortDescription() + " has shrunk to a much smaller size!");
            }

            return(sb.ToString());
        }
Пример #19
0
 private static string GrewTwoDogCocksHadNone(Creature target)
 {
     return(GlobalStrings.NewParagraph() + "A painful lump forms on your groin, nearly doubling you over as it presses against your " + target.armor.ItemName() + ". " +
            "You rip open your gear and watch, horrified as the discolored skin splits apart, revealing a pair of red-tipped points. A feeling of relief, " +
            "and surprising lust grows as they push forward, glistening red and thickening. The skin bunches up into an animal-like sheath, while a pair of fat bulges pop free. " +
            "You now have two nice thick dog-cocks, with decent sized knots. Both pulse and dribble animal-pre, arousing you in spite of your attempts at self-control.");
 }
Пример #20
0
        private static string SandTrapTransformStr(VaginaData oldVagina, PlayerBase player)
        {
            var currentVag = player.vaginas[oldVagina.vaginaIndex];

            //should never happen but would cause strangeness in my lazy check later, so we'll explicitely handle it.
            if (oldVagina.type == currentVag.type)
            {
                return("Your v****a feels odd, but a quick inspection reveals nothing changed. Odd.");
            }

            StringBuilder sb = new StringBuilder(GlobalStrings.NewParagraph());

            //2 vaginas, and both used to be the same type - we want to tell them which one we're talking about.
            if (player.vaginas.Count == 2 && player.genitals.CountVaginasOfType(oldVagina.type) == 1)
            {
                sb.Append($"Your {Utils.NumberAsPlace(oldVagina.vaginaIndex)} {oldVagina.ShortDescription()}");
            }
            else
            {
                sb.Append($"Your {oldVagina.LongDescription(false)}");
            }

            if (oldVagina.type == HUMAN)
            {
                sb.Append(" feels... odd. You undo your clothes and gingerly inspect your nether regions. " +
                          "The tender pink color of your sex has disappeared, replaced with smooth, marble blackness starting at your lips and working inwards.");
            }
            else
            {
                sb.Append(" feels... odd. You undo your clothes and gingerly inspect your nether regions. You quickly notice it has changed back toward something more distincly human, "
                          + "though it is most definitely not. Instead of tender pink inner folds you'd expect, your sex is a smooth marble blackness, "
                          + "beginning at your outer lips and moving inward.");
            }
            //(Wet:
            if (currentVag.wetness >= VaginalWetness.SLICK)
            {
                sb.Append(" Your natural lubrication makes it gleam invitingly.");
            }
            //(Corruption <50:
            if (player.corruption < 50)
            {
                sb.Append(" After a few cautious touches you decide it doesn't feel any different");

                if (oldVagina.type != VaginaType.HUMAN)
                {
                    sb.Append(" than you'd expect");
                }
                sb.Append(" - it does certainly look odd, though.");
            }
            else
            {
                sb.Append(" After a few cautious touches you decide it doesn't feel any different - the sheer bizarreness of it is a big turn on though, " +
                          "and you feel it beginning to shine with anticipation at the thought of using it.");
            }

            sb.Append(SafelyFormattedString.FormattedText("Your v****a is now ebony in color.", StringFormats.BOLD));

            return(sb.ToString());
        }
Пример #21
0
        private string Outro(Creature consumer, BimBro bimbro, bool lostFeeder)
        {
            string perks;

            if (bimbro is null)
            {
                perks = SafelyFormattedString.FormattedText("Perks Gained: BroBody, Bro Brains!", StringFormats.BOLD) + Environment.NewLine;

                if (lostFeeder)
                {
                    perks += SafelyFormattedString.FormattedText("Perks Lost: Feeder!", StringFormats.BOLD);
                }

                StringBuilder sb = new StringBuilder();
                if (consumer.wearingAnything)
                {
                    sb.Append("You finish admiring yourself and adjust your " + (consumer.wearingArmor ? consumer.armor.ItemName() : "clothing") +
                              " to better fit your new physique.");
                }
                else
                {
                    sb.Append("You take a moment to admire your nude body in all its manly, ripped glory, especially your manly endowment" + (consumer.cocks.Count > 1 ? "s" : "") + ".");
                }
                sb.Append(" Maybe there's some bitches around you can f**k. Hell, as good as you look, you might have other dudes wanting you to f**k them too, no h**o." + GlobalStrings.NewParagraph() + perks);
                return(sb.ToString());
            }
            else if (bimbro.bimboBody)
            {
                perks = SafelyFormattedString.FormattedText("Perks Updated: Bimbo Body => Futa Form", StringFormats.BOLD);

                if (bimbro.bimbroBrains)
                {
                    perks += SafelyFormattedString.FormattedText(", Bro Brains", StringFormats.BOLD);
                }
                perks += SafelyFormattedString.FormattedText("!", StringFormats.BOLD);

                if (lostFeeder)
                {
                    perks += Environment.NewLine + SafelyFormattedString.FormattedText("Perks Lost: Feeder!", StringFormats.BOLD);
                }

                return("Finally, you feel the transformation skittering to a halt, leaving you to openly roam your new chiseled and sex-ready body. "
                       + "So what if you can barely form coherent sentences anymore? A body like this does all the talking you need, you figure!" + GlobalStrings.NewParagraph() + perks);
            }
            else
            {
                perks = "";
                if (lostFeeder)
                {
                    perks += Environment.NewLine + SafelyFormattedString.FormattedText("Perks Lost: Feeder!", StringFormats.BOLD);
                }

                string dudeSex = bimbro.futaBody
                                        ? "Or studs to get f****d by, you don't really care. Hell, if it lets you f**k it or f***s you, you'd bang just about anything."
                                        : "Or dudes, if they're into that sort of thing (no h**o). Not that you'd blame them, you're a f*****g stud!";
                return("As the beer finishes its course, you're able to admire your body once more. Goddamn, you look good. Time to find a few bitches to f**k. " + dudeSex +
                       GlobalStrings.NewParagraph() + perks);
            }
        }
Пример #22
0
 private static string ConvertedFirstDogCockGrewSecond(Creature target, CockData oldCockData)
 {
     return(GlobalStrings.NewParagraph() + "Your " + oldCockData.LongDescription() + " vibrates, the veins clearly visible as it reddens and distorts. The head narrows into a pointed tip " +
            "while a gradually widening bulge forms around the base. Where it meets your crotch, the skin bunches up around it, forming a canine-like sheath. " +
            "You feel something slippery wiggling inside the new sheath, and another red point peeks out. In spite of yourself, you start getting turned on by the change, " +
            "and the new dick slowly slides free, eventually stopping once the thick knot pops free. The pair of dog-dicks hang there, " +
            "leaking pre-cum and arousing you far beyond normal.");
 }
Пример #23
0
        //this is the basic format. feel free to override this if needed.

        public override string AboutItemWithStats(Creature target)
        {
            string defenseDifference = DefenseDifference(target.armor);


            return(AboutItem() + GlobalStrings.NewParagraph() + "Type: " + armorType.AsText() + Environment.NewLine
                   + "Defense: " + PhysicalDefensiveRating(target) + defenseDifference + Environment.NewLine
                   + "Base value: " + monetaryValue);
        }
Пример #24
0
        private string GrewCock(Creature consumer, BimBro bimbro, bool grewBalls)
        {
            if (bimbro is null)
            {
                StringBuilder sb = new StringBuilder();

                if (consumer.wearingLowerGarment)
                {
                    sb.Append("You hear the sound of fabric straining, and it takes a moment before your realize it's coming from your " + consumer.lowerGarment.ItemName()
                              + (consumer.wearingArmor ? "Pulling open your " + consumer.armor.ItemName() + ", you" : "You ") + " start to remove your " +
                              consumer.lowerGarment.ItemName() + " and gasp as a huge, throbbing c**k flops free. ");
                }
                else
                {
                    if (consumer.wearingArmor)
                    {
                        sb.Append("You feel a sudden pressure against the lower sections of your " + consumer.armor.ItemName() + ". Pulling it aside, you");
                    }
                    else
                    {
                        sb.Append("A sudden sensation in your groin draws your eyes toward the your exposed nethers. You");
                    }
                    sb.Append(" gasp in surprise at the huge, throbbing manhood that now lies between your " + consumer.hips.ShortDescription());
                }

                sb.Append(". It rapidly stiffens to " + (Measurement.UsesMetric ? "over 25 centimeters" : "a full ten inches") +
                          ", and goddamn, it feels f*****g good. You should totally find a warm hole to f**k!");

                if (!consumer.balls.hasBalls)
                {
                    sb.Append(" Two rounded orbs drop down below, filling out a new, fleshy sac above your " + consumer.lowerBody.LongDescription() + ". Sweet! You can probably cum buckets with balls like these.");
                }

                sb.Append(GlobalStrings.NewParagraph());
                return(sb.ToString());
            }
            else if (bimbro.bimboBody)
            {
                string armorText = consumer.LowerBodyArmorTextHelper(
                    "loosen the bottoms of your " + consumer.armor.ItemName() + "and slide down your " + consumer.lowerGarment.ItemName(),
                    "loosen the bottoms of your " + consumer.armor.ItemName(),
                    "loosen your " + consumer.lowerGarment.ItemName(),
                    "look down");

                return("The beverage isn't done yet, however, and it makes it perfectly clear with a building pleasure in your groin. " +
                       "You can only cry in ecstasy and " + armorText + " just in time for a little penis to spring forth. " +
                       "You watch, enthralled, as blood quickly stiffens the shaft to its full length – then keeps on going! Before long, you have a quivering " +
                       (Measurement.UsesMetric ? "roughly 25-centimeter" : "10-inch") + " maleness, just ready to stuff into a welcoming box." + GlobalStrings.NewParagraph());
            }
            //should realistically never happen but may occur if a tf item removes your c**k and then you drink this before the perk can correct.
            else
            {
                return("As the sensation reaches your groin, the drink ensures your manly endowments are in place, growing a " +
                       (Measurement.UsesMetric ? "roughly 25-centimeter" : "10-inch") + "dick" + (grewBalls ? " and a set of balls to match." : ".") + GlobalStrings.NewParagraph());
            }
        }
Пример #25
0
            protected override string BoostedLactationText(Creature target, BreastCollectionData oldBreasts, double nippleLengthDelta)
            {
                double delta = target.genitals.lactationProductionModifier - oldBreasts.lactationProductionModifier;

                if (delta == 0)
                {
                    return("");
                }

                StringBuilder sb = new StringBuilder();


                if (delta < 0)
                {
                    if (Utils.Rand(2) == 0)
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "Your breasts suddenly feel less full, it seems you aren't lactating at quite the level you were.");
                    }
                    else
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "The insides of your breasts suddenly feel bloated. There is a spray of milk from them, and they settle closer to a more natural level of lactation.");
                    }
                }
                else if (delta < 1.5)
                {
                    if (Utils.Rand(2) == 0)
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "A wave of pleasure passes through your chest as your " + oldBreasts.AllBreastsLongDescription()
                                  + " start producing more milk.");
                    }
                    else
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "Something shifts inside your " + oldBreasts.AllBreastsLongDescription()
                                  + " and they feel fuller and riper. You know that you've started producing more milk.");
                    }
                }
                else
                {
                    if (Utils.Rand(2) == 0)
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "A wave of pleasure passes through your chest as your " + oldBreasts.AllBreastsLongDescription()
                                  + " start leaking milk from a massive jump in production.");
                    }
                    else
                    {
                        sb.Append(GlobalStrings.NewParagraph() + "Something shifts inside your " + oldBreasts.AllBreastsLongDescription()
                                  + " and they feel MUCH fuller and riper. You know that you've started producing much more milk.");
                    }
                }
                if (nippleLengthDelta > 0)
                {
                    sb.Append(" Your " + target.breasts[0].LongNippleDescription() + " swell up, growing larger to accommodate your increased milk flow.");
                }

                return(sb.ToString());
            }
Пример #26
0
        public string GenericRemovedBlackNipples()
        {
            Creature creature = CreatureStore.GetCreatureClean(creatureID);

            string armorText = creature?.wearingArmor == true || creature?.wearingUpperGarment == true ? "Undoing your clothes" : "Looking down";

            return(GlobalStrings.NewParagraph() + "Something invisible brushes against your " + CommonShortNippleDescription()
                   + ", making you twitch. " + armorText + ", you take a look at your"
                   + " chest and find that your nipples have turned back to their natural flesh color.");
        }
Пример #27
0
        public override string AboutItemWithStats(Creature target)
        {
            string defenseDifference = DefenseDifference(target.lowerGarment);


            return(AboutItem() + GlobalStrings.NewParagraph() + "Type: Lower Garment" + Environment.NewLine
                   + "Defense: " + PhysicalDefensiveRating(target) + defenseDifference + Environment.NewLine
                   + (BonusTeaseRate(target) > 0 ? "Sexiness: " + BonusTeaseRate(target) + Environment.NewLine : "")
                   + "Base value: " + monetaryValue);
        }
Пример #28
0
        private static string CurrentBreastRowChanged(Creature target, int index, byte cupSizesShrunk, byte rowsPreviouslyModified)
        {
            if (cupSizesShrunk == 0)
            {
                return("");
            }

            StringBuilder sb = new StringBuilder();


            if (rowsPreviouslyModified == 0)
            {
                sb.Append(GlobalStrings.NewParagraph());
            }

            else if (cupSizesShrunk == 1)
            {
                if (rowsPreviouslyModified > 0)
                {
                    sb.Append(" Your " + Utils.NumberAsPlace(index + 1) + " row of " + target.breasts[index].ShortDescription() + " gives a tiny jiggle as it too shrinks, " +
                              "losing some off its mass.");
                }
                else
                {
                    sb.Append("All at once, your sense of gravity shifts. Your back feels a sense of relief, and it takes you a moment to realize your ");

                    if (target.breasts.Count > 1)
                    {
                        sb.Append(Utils.NumberAsPlace(index + 1) + " row of ");
                    }

                    sb.Append(target.breasts[index].ShortDescription() + " have shrunk!");
                }
            }
            else
            {
                if (rowsPreviouslyModified == 0)
                {
                    sb.Append("The ");

                    if (target.breasts.Count > 1)
                    {
                        sb.Append(Utils.NumberAsPlace(index + 1) + " row of ");
                    }

                    sb.Append(target.breasts[index].ShortDescription() + " on your chest wobble for a second, then tighten up, losing several cup-sizes in the process!");
                }
                else
                {
                    sb.Append(" The change moves down to your " + Utils.NumberAsPlace(index + 1) + " row of " + target.breasts[index].ShortDescription() +
                              ". They shrink greatly, losing a couple cup-sizes.");
                }
            }
            return(sb.ToString());
        }
Пример #29
0
 private static string ChangedArmsText(Creature target, ArmData oldArmData)
 {
     return(GlobalStrings.NewParagraph() + "Weakness overcomes your arms, and no matter what you do, you can't muster the strength to raise or move them."
            + " Did the pepper have some drug-like effects? Sitting on the ground, you wait for the limpness to end."
            + " As you do so, you realize that the bones at your hands are changing, as well as the muscles on your arms."
            + " They're soon covered, from the shoulders to the tip of your digits, on a layer of soft,"
            + " fluffy " + target.ActiveHairOrFurColor().AsString() + " fur."
            + " Your hands gain pink, padded paws where your palms were once, and your nails become short claws,"
            + " not sharp enough to tear flesh, but nimble enough to make climbing and exploring easier. "
            + SafelyFormattedString.FormattedText("Your arms have become like those of a dog!", StringFormats.BOLD));
 }
Пример #30
0
 protected override string ToughnessUpText(double delta)
 {
     if (Utils.Rand(2) == 0)
     {
         return(GlobalStrings.NewParagraph() + "You feel your insides toughening up; it feels like you could stand up to almost any blow.");
     }
     else
     {
         return(GlobalStrings.NewParagraph() + "Your bones and joints feel sore for a moment, and before long you realize they've gotten more durable.");
     }
 }