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()); }
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()); } }
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()); }
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()); }
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()); }
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?"); } }
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)); }
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)); }
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()); }
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()); }
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)); }
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."); } }
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."); }
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!"); } }
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); }
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); }
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()); }
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()); }
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."); }
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()); }
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); } }
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."); }
//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); }
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()); } }
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()); }
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."); }
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); }
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()); }
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)); }
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."); } }