code:
package classes.Items.Consumables
{
	import classes.Appearance;
	import classes.BodyParts.*;
	import classes.CockTypesEnum;
	import classes.GlobalFlags.*;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.PerkLib;
	import classes.StatusEffects;
	import classes.lists.ColorLists;

	/**
	 * @since March 26, 2018
	 * @author Stadler76
	 */
	public class FoxBerry extends Consumable
	{
		public static const STANDARD:int = 0;
		public static const ENHANCED:int = 1;

		private var enhanced:Boolean;

		public function FoxBerry(type:int)
		{
			var id:String;
			var shortName:String;
			var longName:String;
			var description:String;
			var value:int;

			enhanced = type === ENHANCED;

			switch (type) {
				case STANDARD:
					id = "FoxBery";
					shortName = "Fox Berry";
					longName = "a fox berry";
					description = "This large orange berry is heavy in your hands. It may have gotten its name from its bright orange coloration."
					             +" You're certain it is no mere fruit.";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

				case ENHANCED:
					id = "VixVigr";
					shortName = "VixVigr";
					longName = 'a bottle labelled "Vixen\'s Vigor"';
					description = 'This small medicine bottle contains something called "Vixen\'s Vigor", supposedly distilled from common'
					             +' fox-berries. It is supposed to be a great deal more potent, and a small warning label warns of "extra boobs",'
					             +' whatever that means.';
					value = 30;
					break;

				default: // Remove this if someone manages to get SonarQQbe to not whine about a missing default ... ~Stadler76
			}

			super(id, shortName, longName, value, description);
		}

		override public function useItem():Boolean
		{
			var tfSource:String = "foxTF";
			var temp:int;
			mutations.initTransformation([2, 2], enhanced ? 3 : 1);
			clearOutput();
			if (!enhanced) outputText("You examine the berry a bit, rolling the orangish-red fruit in your hand for a moment before you decide to take the plunge and chow down.  It's tart and sweet at the same time, and the flavors seem to burst across your tongue with potent strength.  Juice runs from the corners of your lips as you finish the tasty snack.");
			else outputText("You pop the cap on the enhanced \"Vixen's Vigor\" and decide to take a swig of it.  Perhaps it will make you as cunning as the crude fox Lumi drew on the front?");
			//Used for dick and boob TFs
			var counter:int = 0;

			if (player.face.type == Face.FOX && player.tail.type == Tail.FOX && player.ears.type == Ears.FOX && player.lowerBody.type == LowerBody.FOX && player.hasFur() && rand(3) === 0 && !player.isTFResistant()) {
				if (flags[kFLAGS.FOX_BAD_END_WARNING] == 0) {
					outputText("\n\nYou get a massive headache and a craving to raid a henhouse.  Thankfully, both pass in seconds, but maybe you should cut back on the vulpine items...");
					flags[kFLAGS.FOX_BAD_END_WARNING] = 1;
				}
				else {
					outputText("\n\nYou scarf down the ");
					if (enhanced) outputText("fluid ");
					else outputText("berries ");
					outputText("with an uncommonly voracious appetite, taking particular enjoyment in the succulent, tart flavor.  As you carefully suck the last drops of ochre juice from your fingers, you note that it tastes so much more vibrant than you remember.  Your train of thought is violently interrupted by the sound of bones snapping, and you cry out in pain, doubling over as a flaming heat boils through your ribs.");
					outputText("\n\nWrithing on the ground, you clutch your hand to your chest, looking on in horror through tear-streaked eyes as the bones in your fingers pop and fuse, rearranging themselves into a dainty paw covered in coarse black fur, fading to a ruddy orange further up.  You desperately try to call out to someone - anyone - for help, but all that comes out is a high-pitched, ear-splitting yap.");
					if (player.tail.venom > 1) outputText("  Your tails thrash around violently as they begin to fuse painfully back into one, the fur bristling back out with a flourish.");
					outputText("\n\nA sharp spark of pain jolts through your spinal column as the bones shift themselves around, the joints in your hips migrating forward.  You continue to howl in agony even as you feel your intelligence slipping away.  In a way, it's a blessing - as your thoughts grow muddied, the pain is dulled, until you are finally left staring blankly at the sky above, tilting your head curiously.");
					outputText("\n\nYou roll over and crawl free of the " + player.armorName + " covering you, pawing the ground for a few moments before a pang of hunger rumbles through your stomach.  Sniffing the wind, you bound off into the wilderness, following the telltale scent of a farm toward the certain bounty of a chicken coop.");
					game.gameOver();
					return false;
				}
			}
			//[increase Intelligence, Libido and Sensitivity]
			if (changes < changeLimit && rand(3) === 0 && (player.lib100 < 80 || player.inte100 < 80 || player.sens100 < 80)) {
				outputText("\n\nYou close your eyes, smirking to yourself mischievously as you suddenly think of several new tricks to try on your opponents; you feel quite a bit more cunning.  The mental picture of them helpless before your cleverness makes you shudder a bit, and you lick your lips and stroke yourself as you feel your skin tingling from an involuntary arousal.");
				if (player.inte100 < 80) dynStats("int", 4);
				if (player.lib100 < 80) dynStats("lib", 1);
				if (player.sens100 < 80) dynStats("sen", 1);
				//gain small lust also
				dynStats("lus", 10);
			}
			//[decrease Strength] (to some floor) // I figured 15 was fair, but you're in a better position to judge that than I am.
			if (changes < changeLimit && rand(3) === 0 && player.str100 > 40) {
				outputText("\n\nYou can feel your muscles softening as they slowly relax, becoming a tad weaker than before.  Who needs physical strength when you can outwit your foes with trickery and mischief?  You tilt your head a bit, wondering where that thought came from.");
				dynStats("str", -1);
				if (player.str100 > 60) dynStats("str", -1);
				if (player.str100 > 80) dynStats("str", -1);
				if (player.str100 > 90) dynStats("str", -1);
			}
			//[decrease Toughness] (to some floor) // 20 or so was my thought here
			if (changes < changeLimit && rand(3) === 0 && player.tou100 > 30) {
				if (player.tou100 < 60) outputText("\n\nYou feel your skin becoming noticeably softer.  A gentle exploratory pinch on your arm confirms it - your supple skin isn't going to offer you much protection.");
				else outputText("\n\nYou feel your skin becoming noticeably softer.  A gentle exploratory pinch on your arm confirms it - your hide isn't quite as tough as it used to be.");
				dynStats("tou", -1);
				if (player.tou100 > 60) dynStats("tou", -1);
				if (player.tou100 > 80) dynStats("tou", -1);
				if (player.tou100 > 90) dynStats("tou", -1);
			}

			//[Change Hair Color: Golden-blonde or Reddish-orange]
			var fox_hair:Array = ["golden blonde", "reddish-orange", "silver", "white", "red", "black"];
			if (!inCollection(player.hair.color, fox_hair) && !inCollection(player.hair.color, ColorLists.BASIC_KITSUNE_HAIR) && !inCollection(player.hair.color, ColorLists.ELDER_KITSUNE) && changes < changeLimit && rand(4) === 0) {
				if (player.tail.type == Tail.FOX && player.tail.venom > 1)
					if (player.tail.venom < 9) player.hair.color = randomChoice(ColorLists.BASIC_KITSUNE_HAIR);
					else player.hair.color = randomChoice(ColorLists.ELDER_KITSUNE);
				else player.hair.color = randomChoice(fox_hair);
				outputText("\n\nYour scalp begins to tingle, and you gently grasp a strand of hair, pulling it out to check it.  Your hair has become " + player.hair.color + "!");
			}
			//[Adjust hips toward 10 – wide/curvy/flared]
			if (changes < changeLimit && rand(3) === 0 && player.hips.rating !== 10) {
				//from narrow to wide
				if (player.hips.rating < 10) {
					outputText("\n\nYou stumble a bit as the bones in your pelvis rearrange themselves painfully.  Your waistline has widened into [hips]!");
					player.hips.rating++;
					if (player.hips.rating < 7) player.hips.rating++;
				}
				//from wide to narrower
				else {
					outputText("\n\nYou stumble a bit as the bones in your pelvis rearrange themselves painfully.  Your waistline has narrowed, becoming [hips].");
					player.hips.rating--;
					if (player.hips.rating > 15) player.hips.rating--;
				}
				changes++;
			}
			//[Remove tentacle hair]
			//required if the hair length change below is triggered
			if (changes < changeLimit && player.hair.type == 4 && rand(3) === 0) {
				//-insert anemone hair removal into them under whatever criteria you like, though hair removal should precede abdomen growth; here's some sample text:
				outputText("\n\nEerie flames of the jewel migrate up your body to your head, where they cover your [hair].  Though they burned nowhere else in their lazy orbit, your head begins to heat up as they congregate.  Fearful, you raise your hands to it just as the temperature peaks, but as you touch your hair, the searing heat is suddenly gone - along with your tentacles!  Your hair is normal again!");
				player.hair.type = Hair.NORMAL;
				changes++;
			}
			//[Adjust hair length toward range of 16-26 – very long to ass-length]
			if (player.hair.type !== 4 && (player.hair.length > 26 || player.hair.length < 16) && changes < changeLimit && rand(4) === 0) {
				if (player.hair.length < 16) {
					player.hair.length += 1 + rand(4);
					outputText("\n\nYou experience a tingling sensation in your scalp.  Feeling a bit off-balance, you discover your hair has lengthened, becoming " + num2Text(Math.round(player.hair.length)) + " inches long.");
				}
				else {
					player.hair.length -= 1 + rand(4);
					outputText("\n\nYou experience a tingling sensation in your scalp.  Feeling a bit off-balance, you discover your hair has shed a bit of its length, becoming " + num2Text(Math.round(player.hair.length)) + " inches long.");
				}
				changes++;
			}
			if (changes < changeLimit && rand(10) === 0) {
				outputText("\n\nYou sigh as the exotic flavor washes through you, and unbidden, you begin to daydream.  Sprinting through the thicket, you can feel the corners of your muzzle curling up into a mischievous grin.  You smell the scent of demons, and not far away either.  With your belly full and throat watered, now is the perfect time for a little bit of trickery.   As the odor intensifies, you slow your playful gait and begin to creep a bit more carefully.");
				outputText("\n\nSuddenly, you are there, at a demonic camp, and you spy the forms of an incubus and a succubus, their bodies locked together at the hips and slowly undulating, even in sleep.  You carefully prance around their slumbering forms and find their supplies.  With the utmost care, you put your razor-sharp teeth to work, and slowly, meticulously rip through their packs - not with the intention of theft, but with mischief.  You make sure to leave small holes in the bottom of each, and after making sure your stealth remains unbroken, you urinate on their hooves.");
				outputText("\n\nThey don't even notice, so lost in the subconscious copulation as they are.  Satisfied at your petty tricks, you scurry off into the night, a red blur amidst the foliage.");
				changes++;
				player.changeFatigue(-10);
			}

			//dog cocks!
			if (changes < changeLimit && rand(3) === 0 && player.dogCocks() < player.cocks.length) {
				var choices:Array = [];
				counter = player.cockTotal();
				while (counter > 0) {
					counter--;
					//Add non-dog locations to the array
					if (player.cocks[counter].cockType !== CockTypesEnum.DOG) choices[choices.length] = counter;
				}
				if (choices.length !== 0) {
					var select:int = choices[rand(choices.length)];
					if (player.cocks[select].cockType == CockTypesEnum.HUMAN) {
						outputText("\n\nYour " + player.cockDescript(select) + " clenches painfully, becoming achingly, throbbingly erect.  A tightness seems to squeeze around the base, and you wince as you see your skin and flesh shifting forwards into a canine-looking sheath.  You shudder as the crown of your " + player.cockDescript(select) + " reshapes into a point, the sensations nearly too much for you.  You throw back your head as the transformation completes, your " + Appearance.cockNoun(CockTypesEnum.DOG) + " much thicker than it ever was before.  You now have a dog-cock.");
						player.cocks[select].thickenCock(.3);
						dynStats("sen", 10, "lus", 5);
					}
					//Horse
					else if (player.cocks[select].cockType == CockTypesEnum.HORSE) {
						outputText("\n\nYour " + Appearance.cockNoun(CockTypesEnum.HORSE) + " shrinks, the extra equine length seeming to shift into girth.  The flared tip vanishes into a more pointed form, a thick knotted bulge forming just above your sheath.  You now have a dog-cock.");
						//Tweak length/thickness.
						if (player.cocks[select].cockLength > 6) player.cocks[select].cockLength -= 2;
						else player.cocks[select].cockLength -= .5;
						player.cocks[select].cockThickness += .5;

						dynStats("sen", 4, "lus", 5);
					}
					//Tentacular Tuesday!
					else if (player.cocks[select].cockType == CockTypesEnum.TENTACLE) {
						outputText("\n\nYour " + player.cockDescript(select) + " coils in on itself, reshaping and losing its plant-like coloration as thickens near the base, bulging out in a very canine-looking knot.  Your skin bunches painfully around the base, forming into a sheath.  You now have a dog-cock.");
						dynStats("sen", 4, "lus", 10);
					}
					//Misc
					else {
						outputText("\n\nYour " + player.cockDescript(select) + " trembles, reshaping itself into a shiny red doggie-dick with a fat knot at the base.  You now have a dog-cock.");
						dynStats("sen", 4, "lus", 10);
					}
					player.cocks[select].cockType = CockTypesEnum.DOG;
					player.cocks[select].knotMultiplier = 1.25;
					changes++;
				}

			}
			//Cum Multiplier Xform
			if (player.cumQ() < 5000 && rand(3) === 0 && changes < changeLimit && player.hasCock()) {
				temp = 2 + rand(4);
				//Lots of cum raises cum multiplier cap to 2 instead of 1.5
				if (player.hasPerk(PerkLib.MessyOrgasms)) temp += rand(10);
				player.cumMultiplier += temp;
				//Flavor text
				if (player.balls == 0) outputText("\n\nYou feel a churning inside your gut as something inside you changes.");
				if (player.balls > 0) outputText("\n\nYou feel a churning in your " + player.ballsDescriptLight() + ".  It quickly settles, leaving them feeling somewhat more dense.");
				outputText("  A bit of milky pre dribbles from your " + player.multiCockDescriptLight() + ", pushed out by the change.");
				changes++;
			}
			if (changes < changeLimit && player.balls > 0 && player.ballSize > 4 && rand(3) === 0) {
				outputText("\n\nYour [sack] gets lighter and lighter, the skin pulling tight around your shrinking balls until you can't help but check yourself.");
				if (player.ballSize > 10) player.ballSize -= 5;
				if (player.ballSize > 20) player.ballSize -= 4;
				if (player.ballSize > 30) player.ballSize -= 4;
				if (player.ballSize > 40) player.ballSize -= 4;
				if (player.ballSize > 50) player.ballSize -= 8;
				if (player.ballSize > 60) player.ballSize -= 8;
				if (player.ballSize <= 10) player.ballSize--;
				changes++;
				outputText("  You now have a [balls].");
			}
			//Sprouting more!
			if (changes < changeLimit && enhanced && player.bRows() < 4 && player.breastRows[player.bRows() - 1].breastRating > 1) {
				outputText("\n\nYour belly rumbles unpleasantly for a second as the ");
				if (!enhanced) outputText("berry ");
				else outputText("drink ");
				outputText("settles deeper inside you.  A second later, the unpleasant gut-gurgle passes, and you let out a tiny burp of relief.  Before you finish taking a few breaths, there's an itching below your " + player.allChestDesc() + ".  You idly scratch at it, but gods be damned, it hurts!  You peel off part of your " + player.armorName + " to inspect the unwholesome itch, ");
				if (player.biggestTitSize() >= 8) outputText("it's difficult to see past the wall of tits obscuring your view.");
				else outputText("it's hard to get a good look at.");
				outputText("  A few gentle prods draw a pleasant gasp from your lips, and you realize that you didn't have an itch - you were growing new nipples!");
				outputText("\n\nA closer examination reveals your new nipples to be just like the ones above in size and shape");
				if (player.breastRows[player.bRows() - 1].nipplesPerBreast > 1) outputText(", not to mention number");
				else if (player.hasFuckableNipples()) outputText(", not to mention penetrability");
				outputText(".  While you continue to explore your body's newest addition, a strange heat builds behind the new nubs. Soft, jiggly breastflesh begins to fill your cupped hands.  Radiant warmth spreads through you, eliciting a moan of pleasure from your lips as your new breasts catch up to the pair above.  They stop at " + player.breastCup(player.bRows() - 1) + "s.  You have " + num2Text(player.bRows() + 1) + " rows of breasts!");
				player.createBreastRow();
				player.breastRows[player.bRows() - 1].breastRating = player.breastRows[player.bRows() - 2].breastRating;
				player.breastRows[player.bRows() - 1].nipplesPerBreast = player.breastRows[player.bRows() - 2].nipplesPerBreast;
				if (player.hasFuckableNipples()) player.breastRows[player.bRows() - 1].fuckable = true;
				player.breastRows[player.bRows() - 1].lactationMultiplier = player.breastRows[player.bRows() - 2].lactationMultiplier;
				dynStats("sen", 2, "lus", 30);
				changes++;
			}
			//Find out if tits are eligible for evening
			var tits:Boolean = false;
			counter = player.bRows();
			while (counter > 1) {
				counter--;
				//If the row above is 1 size above, can be grown!
				if (player.breastRows[counter].breastRating <= (player.breastRows[counter - 1].breastRating - 1) && changes < changeLimit && rand(2) === 0) {
					if (tits) outputText("\n\nThey aren't the only pair to go through a change!  Another row of growing bosom goes through the process with its sisters, getting larger.");
					else {
						var select2:Number = rand(3);
						if (select2 == 1) outputText("\n\nA faint warmth buzzes to the surface of your " + player.breastDescript(counter) + ", the fluttering tingles seeming to vibrate faster and faster just underneath your [skin].  Soon, the heat becomes uncomfortable, and that row of chest-flesh begins to feel tight, almost thrumming like a newly-stretched drum.  You " + player.nippleDescript(counter) + "s go rock hard, and though the discomforting feeling of being stretched fades, the pleasant, warm buzz remains.  It isn't until you cup your tingly tits that you realize they've grown larger, almost in envy of the pair above.");
						else if (select2 == 2) outputText("\n\nA faintly muffled gurgle emanates from your " + player.breastDescript(counter) + " for a split-second, just before your flesh shudders and shakes, stretching your " + player.skinFurScales() + " outward with newly grown breast.  Idly, you cup your hands to your swelling bosom, and though it stops soon, you realize that your breasts have grown closer in size to the pair above.");
						else {
							outputText("\n\nAn uncomfortable stretching sensation spreads its way across the curves of your " + player.breastDescript(counter) + ", threads of heat tingling through your flesh.  It feels as though your heartbeat has been magnified tenfold within the expanding mounds, your [skin] growing flushed with arousal and your " + player.nippleDescript(counter) + " filling with warmth.  As the tingling heat gradually fades, a few more inches worth of jiggling breast spill forth.  Cupping them experimentally, you confirm that they have indeed grown to be a bit more in line with the size of the pair above.")
						}
					}
					//Bigger change!
					if (player.breastRows[counter].breastRating <= (player.breastRows[counter - 1].breastRating - 3))
						player.breastRows[counter].breastRating += 2 + rand(2);
					//Smallish change.
					else player.breastRows[counter].breastRating++;
					outputText("  You do a quick measurement and determine that your " + num2Text2(counter + 1) + " row of breasts are now " + player.breastCup(counter) + "s.");

					if (!tits) {
						tits = true;
						changes++;
					}
					dynStats("sen", 2, "lus", 10);
				}
			}
			//HEAT!
			if (player.statusEffectv2(StatusEffects.Heat) < 30 && rand(6) === 0 && changes < changeLimit) {
				if (player.goIntoHeat(true)) {
						changes++;
				}
			}
			//Neck restore
			if (player.neck.type !== Neck.NORMAL && changes < changeLimit && rand(4) === 0) mutations.restoreNeck(tfSource);
			//Rear body restore
			if (player.hasNonSharkRearBody() && changes < changeLimit && rand(5) === 0) mutations.restoreRearBody(tfSource);
			//Ovi perk loss
			if (rand(5) === 0) mutations.updateOvipositionPerk(tfSource);
			//[Grow Fur]
			//FOURTH
			if (mutations.tfNoFur() && (enhanced || player.lowerBody.type == LowerBody.FOX) && !player.hasFur() && changes < changeLimit && rand(4) === 0) {
				var colorChoices:Array = ["invalid color"]; // Failsafe ... should hopefully not happen (Stadler76)
				//from scales
				if (player.hasScales()) outputText("\n\nYour skin shifts and every scale stands on end, sending you into a mild panic.  No matter how you tense, you can't seem to flatten them again.  The uncomfortable sensation continues for some minutes until, as one, every scale falls from your body and a fine coat of fur pushes out.  You briefly consider collecting them, but when you pick one up, it's already as dry and brittle as if it were hundreds of years old.  Oh well; at least you won't need to sun yourself as much with your new fur.");
				//from skin
				else outputText("\n\nYour skin itches all over, the sudden intensity and uniformity making you too paranoid to scratch.  As you hold still through an agony of tiny tingles and pinches, fine, luxuriant fur sprouts from every bare inch of your skin!  You'll have to get used to being furry...");
				player.skin.type = Skin.FUR;
				player.skin.adj = "";
				player.skin.desc = "fur";
				if (player.kitsuneScore() >= 4)
					if (inCollection(player.hair.color, convertMixedToStringArray(ColorLists.BASIC_KITSUNE_FUR)) || inCollection(player.hair.color, ColorLists.ELDER_KITSUNE))
						colorChoices = [player.hair.color];
					else
						if (player.tail.type == Tail.FOX && player.tail.venom == 9)
							colorChoices = ColorLists.ELDER_KITSUNE;
						else
							colorChoices = ColorLists.BASIC_KITSUNE_FUR;
				else
					colorChoices = ColorLists.FOX_FUR;
				player.setFurColor(colorChoices, {type: UnderBody.FURRY}, true);
				changes++;
			}
			//[Grow Fox Legs]
			//THIRD
			if ((enhanced || player.ears.type == Ears.FOX) && player.lowerBody.type !== LowerBody.FOX && changes < changeLimit && rand(5) === 0) {
				//4 legs good, 2 legs better
				if (player.isTaur()) outputText("\n\nYou shiver as the strength drains from your back legs.  Shaken, you sit on your haunches, forelegs braced wide to stop you from tipping over;  their hooves scrape the dirt as your lower body shrinks, dragging them backward until you can feel the upper surfaces of your hindlegs with their undersides.  A wave of nausea and vertigo overtakes you, and you close your eyes to shut out the sensations.  When they reopen, what greets them are not four legs, but only two... and those roughly in the shape of your old hindleg, except for the furry toes where your hooves used to be.  You now have fox legs!");
				//n*ga please
				else if (player.isNaga()) outputText("\n\nYour scales split at the waistline and begin to peel, shedding like old snakeskin.  If that weren't curious enough, the flesh - not scales - underneath is pink and new, and the legs it covers crooked into the hocks and elongated feet of a field animal.  As the scaly coating falls and you step out of it, walking of necessity on your toes, a fine powder blows from the dry skin.  Within minutes, it crumbles completely and is taken by the ever-moving wind.  Your legs are now those of a fox!");
				//other digitigrade
				else if (player.lowerBody.type == LowerBody.HOOFED || player.lowerBody.type == LowerBody.DOG || player.lowerBody.type == LowerBody.CAT || player.lowerBody.type == LowerBody.BUNNY || player.lowerBody.type == LowerBody.KANGAROO)
					outputText("\n\nYour legs twitch and quiver, forcing you to your seat.  As you watch, the ends shape themselves into furry, padded toes.  You now have fox feet!  Rather cute ones, actually.");
				//red drider bb gone
				else if (player.lowerBody.type == LowerBody.DRIDER) outputText("\n\nYour legs buckle under you and you fall, smashing your abdomen on the ground.  Though your control deserts and you cannot see behind you, still you feel the disgusting sensation of chitin loosening and sloughing off your body, and the dry breeze on your exposed nerves.  Reflexively, your legs cling together to protect as much of their now-sensitive surface as possible.  When you try to part them, you find you cannot.  Several minutes pass uncomfortably until you can again bend your legs, and when you do, you find that all the legs of a side bend together - in the shape of a fox's leg!");
				//goo home and goo to bed
				else if (player.isGoo()) outputText("\n\nIt takes a while before you notice that your gooey mounds have something more defined in them.  As you crane your body and shift them around to look, you can just make out a semi-solid mass in the shape of a crooked, animalistic leg.  You don't think much of it until, a few minutes later, you step right out of your swishing gooey undercarriage and onto the new foot.  The goo covering it quickly dries up, as does the part you left behind, revealing a pair of dog-like fox legs!");
				//reg legs, not digitigrade
				else {
					outputText("\n\nYour hamstrings tense painfully and begin to pull, sending you onto your face.  As you writhe on the ground, you can feel your thighs shortening and your feet stretching");
					if (player.lowerBody.type == LowerBody.BEE) outputText(", while a hideous cracking fills the air");
					outputText(".  When the spasms subside and you can once again stand, you find that your legs have been changed to those of a fox!");
				}
				player.lowerBody.type = LowerBody.FOX;
				player.lowerBody.legCount = 2;
				changes++;
			}
			//Grow Fox Ears]
			//SECOND
			if ((enhanced || player.tail.type == Tail.FOX) && player.ears.type !== Ears.FOX && changes < changeLimit && rand(4) === 0) {
				//from human/gob/liz ears
				if (player.ears.type == Ears.HUMAN || player.ears.type == Ears.ELFIN || player.ears.type == Ears.LIZARD) {
					outputText("\n\nThe sides of your face painfully stretch as your ears elongate and begin to push past your hairline, toward the top of your head.  They elongate, becoming large vulpine triangles covered in bushy fur.  You now have fox ears.");
				}
				//from dog/cat/roo ears
				else {
					outputText("\n\nYour ears change, shifting from their current shape to become vulpine in nature.  You now have fox ears.");
				}
				player.ears.type = Ears.FOX;
				changes++;
			}
			//[Grow Fox Tail](fairly common)
			//FIRST
			if (player.tail.type !== Tail.FOX && changes < changeLimit && rand(4) === 0) {
				//from no tail
				if (player.tail.type == Tail.NONE) outputText("\n\nA pressure builds on your backside.  You feel under your [armor] and discover a strange nodule growing there that seems to be getting larger by the second.  With a sudden flourish of movement, it bursts out into a long and bushy tail that sways hypnotically, as if it had a mind of its own.  You now have a fox's tail!");
				//from another type of tail
				else outputText("\n\nPain lances through your lower back as your tail shifts violently.  With one final aberrant twitch, it fluffs out into a long, bushy fox tail that whips around in an almost hypnotic fashion.  You now have a fox's tail!");
				player.tail.type = Tail.FOX;
				player.tail.venom = 1;
				changes++;
			}
			//[Grow Fox Face]
			//LAST - muzzlygoodness
			//should work from any face, including other muzzles
			if (mutations.tfNoFur() && player.hasFur() && player.face.type !== Face.FOX && changes < changeLimit && rand(5) === 0) {
				outputText("\n\nYour face pinches and you clap your hands to it.  Within seconds, your nose is poking through those hands, pushing them slightly to the side as new flesh and bone build and shift behind it, until it stops in a clearly defined, tapered, and familiar point you can see even without the aid of a mirror.  Looks like you now have a fox's face.");
				if (silly()) outputText("  And they called you crazy...");
				changes++;
				player.face.type = Face.FOX;
			}
			//Arms
			if (player.arms.type !== Arms.FOX && player.isFurry() && player.tail.type === Tail.FOX && player.lowerBody.type === LowerBody.FOX && rand(4) === 0 && changes < changeLimit)
			{
				outputText("\n\nWeakness overcomes your arms, and no matter what you do, you can’t muster the strength to raise or move them."
				          +" Did the berry 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 [if (hasFurryUnderBody)[underBody.furColor]|[furColor]] 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."
				          +" Your arms have become like those of a fox!");
				player.arms.setType(Arms.FOX);
				changes++;
			}
			if (player.tone > 40 && changes < changeLimit && rand(2) === 0) {
				outputText("\n\nMoving brings with it a little more jiggle than you're used to.  You don't seem to have gained weight, but your muscles seem less visible, and various parts of you are pleasantly softer.");
				player.tone -= 4;
			}
			if (changes == 0) {
				outputText("\n\nWell that didn't do much, but you do feel a little refreshed!");
				player.changeFatigue(-5);
			}
			player.refillHunger(15);
			flags[kFLAGS.TIMES_TRANSFORMED] += changes;

			return false;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	import classes.GlobalFlags.*;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.PerkLib;
	import classes.StatusEffects;
	import classes.lists.ColorLists;

	/**
	 * @since March 31, 2018
	 * @author Stadler76
	 */
	public class FoxJewel extends Consumable
	{
		public static const STANDARD:int = 0;
		public static const MYSTIC:int   = 1;

		private var mystic:Boolean;

		public function FoxJewel(type:int)
		{
			var id:String;
			var shortName:String;
			var longName:String;
			var description:String;
			var value:int;

			mystic = type === MYSTIC;

			switch (type) {
				case STANDARD:
					id = "FoxJewl";
					shortName = "Fox Jewel";
					longName = "a fox jewel";
					description = "A shining teardrop-shaped jewel.  An eerie blue flame dances beneath the surface.";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

				case MYSTIC:
					id = "MystJwl";
					shortName = "MystJwl";
					longName = "a mystic jewel";
					description = "The flames within this jewel glow brighter than before, and have taken on a sinister purple hue."
					             +" It has been enhanced to increase its potency, allowing it to transform you more easily,"
					             +" but may have odd side-effects...";
					value = 20;
					break;

				default: // Remove this if someone manages to get SonarQQbe to not whine about a missing default ... ~Stadler76
			}

			super(id, shortName, longName, value, description);
		}

		override public function useItem():Boolean
		{
			var tfSource:String = "foxJewel";
			if (mystic) tfSource += "-mystic";
			mutations.initTransformation([2, 2, 3], mystic ? 3 : 1);
			clearOutput();
			if (mystic) outputText("You examine the jewel for a bit, rolling it around in your hand as you ponder its mysteries.  You hold it up to the light with fascinated curiosity, watching the eerie purple flame dancing within.  Without warning, the gem splits down the center, dissolving into nothing in your hand.  As the pale lavender flames swirl around you, the air is filled with a sickly sweet scent that drips with the bitter aroma of licorice, filling you with a dire warmth.");
			else outputText("You examine the jewel for a bit, rolling it around in your hand as you ponder its mysteries.  You hold it up to the light with fascinated curiosity, watching the eerie blue flame dancing within.  Without warning, the gem splits down the center, dissolving into nothing in your hand.  As the pale azure flames swirl around you, the air is filled with a sweet scent that drips with the aroma of wintergreen, sending chills down your spine.");

			//**********************
			//BASIC STATS
			//**********************
			//[increase Intelligence, Libido and Sensitivity]
			if (player.inte100 < 100 && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(4) === 0))) {
				outputText("\n\nYou close your eyes, smirking to yourself mischievously as you suddenly think of several new tricks to try on your opponents; you feel quite a bit more cunning.  The mental image of them helpless before your cleverness makes you shudder a bit, and you lick your lips and stroke yourself as you feel your skin tingling from an involuntary arousal.");
				//Raise INT, Lib, Sens. and +10 LUST
				dynStats("int", 2, "lib", 1, "sen", 2, "lus", 10);
			}
			//[decrease Strength toward 15]
			if (player.str100 > 15 && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0))) {
				outputText("\n\nYou can feel your muscles softening as they slowly relax, becoming a tad weaker than before.  Who needs physical strength when you can outwit your foes with trickery and mischief?  You tilt your head a bit, wondering where that thought came from.");
				dynStats("str", -1);
				if (player.str100 > 70) dynStats("str", -1);
				if (player.str100 > 50) dynStats("str", -1);
				if (player.str100 > 30) dynStats("str", -1);
			}
			//[decrease Toughness toward 20]
			if (player.tou100 > 20 && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0))) {
				//from 66 or less toughness
				if (player.tou100 <= 66) outputText("\n\nYou feel your " + player.skinFurScales() + " becoming noticeably softer.  A gentle exploratory pinch on your arm confirms it - your " + player.skinFurScales() + " won't offer you much protection.");
				//from 66 or greater toughness
				else outputText("\n\nYou feel your " + player.skinFurScales() + " becoming noticeably softer.  A gentle exploratory pinch on your arm confirms it - your hide isn't quite as tough as it used to be.");
				dynStats("tou", -1);
				if (player.tou100 > 66) dynStats("tou", -1);
			}
			if (mystic && changes < changeLimit && rand(2) === 0 && player.cor < 100) {
				if (player.cor < 33) outputText("\n\nA sense of dirtiness comes over you, like the magic of this gem is doing some perverse impropriety to you.");
				else if (player.cor < 66) outputText("\n\nA tingling wave of sensation rolls through you, but you have no idea what exactly just changed.  It must not have been that important.");
				else outputText("\n\nThoughts of mischief roll across your consciousness, unbounded by your conscience or any concern for others.  You should really have some fun - who cares who it hurts, right?");
				dynStats("cor", 1);
			}

			//**********************
			//MEDIUM/SEXUAL CHANGES
			//**********************
			//[adjust Femininity toward 50]
			//from low to high
			//Your facial features soften as your body becomes more androgynous.
			//from high to low
			//Your facial features harden as your body becomes more androgynous.
			if (((mystic && rand(2) === 0) || (!mystic && rand(4) === 0)) && changes < changeLimit && player.femininity !== 50) {
				outputText(player.modFem(50, 2));
				changes++;
			}
			//[decrease muscle tone toward 40]
			if (player.tone >= 40 && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(4) === 0))) {
				outputText("\n\nMoving brings with it a little more jiggle than you're used to.  You don't seem to have gained weight, but your muscles seem less visible, and various parts of you are pleasantly softer.");
				player.tone -= 2 + rand(3);
				changes++;
			}

			//[Adjust hips toward 10 – wide/curvy/flared]
			//from narrow to wide
			if (player.hips.rating < 10 && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0)) && changes < changeLimit) {
				player.hips.rating++;
				if (player.hips.rating < 7) player.hips.rating++;
				if (player.hips.rating < 4) player.hips.rating++;
				outputText("\n\nYou stumble a bit as the bones in your pelvis rearrange themselves painfully.  Your hips have widened nicely!");
				changes++;
			}
			//from wide to narrower
			if (player.hips.rating > 10 && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0)) && changes < changeLimit) {
				player.hips.rating--;
				if (player.hips.rating > 14) player.hips.rating--;
				if (player.hips.rating > 19) player.hips.rating--;
				if (player.hips.rating > 24) player.hips.rating--;
				outputText("\n\nYou stumble a bit as the bones in your pelvis rearrange themselves painfully.  Your hips have narrowed.");
				changes++;
			}

			//[Adjust hair length toward range of 16-26 – very long to ass-length]
			if ((player.hair.length < 16 || player.hair.length > 26) && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0)) && changes < changeLimit) {
				//from short to long
				if (player.hair.length < 16) {
					player.hair.length += 3 + rand(3);
					outputText("\n\nYou experience a tingling sensation in your scalp.  Feeling a bit off-balance, you discover your hair has lengthened, becoming " + player.hairDescript() + ".");
				}
				//from long to short
				else {
					player.hair.length -= 3 + rand(3);
					outputText("\n\nYou experience a tingling sensation in your scalp.  Feeling a bit off-balance, you discover your hair has shed a bit of its length, becoming " + player.hairDescript() + ".");
				}
				changes++;
			}
			//[Increase Vaginal Capacity] - requires vagina, of course
			if (player.hasVagina() && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0)) && player.statusEffectv1(StatusEffects.BonusVCapacity) < 200 && changes < changeLimit) {
				outputText("\n\nA gurgling sound issues from your abdomen, and you double over as a trembling ripple passes through your womb.  The flesh of your stomach roils as your internal organs begin to shift, and when the sensation finally passes, you are instinctively aware that your " + player.vaginaDescript(0) + " is a bit deeper than it was before.");
				if (!player.hasStatusEffect(StatusEffects.BonusVCapacity)) {
					player.createStatusEffect(StatusEffects.BonusVCapacity, 0, 0, 0, 0);
				}
				player.addStatusValue(StatusEffects.BonusVCapacity, 1, 10 + rand(10));
				changes++;
			}
			else if (((mystic && rand(2) === 0) || (!mystic && rand(3) === 0)) && player.statusEffectv1(StatusEffects.BonusACapacity) < 150 && changes < changeLimit) {
				outputText("\n\nYou feel... more accommodating somehow.  Your " + player.assholeDescript() + " is tingling a bit, and though it doesn't seem to have loosened, it has grown more elastic.");
				if (!player.hasStatusEffect(StatusEffects.BonusACapacity)) {
					player.createStatusEffect(StatusEffects.BonusACapacity, 0, 0, 0, 0);
				}
				player.addStatusValue(StatusEffects.BonusACapacity, 1, 10 + rand(10));
				changes++;
			}
			//[Vag of Holding] - rare effect, only if PC has high vaginal looseness
			else if (player.hasVagina() && ((mystic) || (!mystic && rand(5) === 0)) && player.statusEffectv1(StatusEffects.BonusVCapacity) >= 200 && player.statusEffectv1(StatusEffects.BonusVCapacity) < 8000 && changes < changeLimit) {
				outputText("\n\nYou clutch your stomach with both hands, dropping to the ground in pain as your internal organs begin to twist and shift violently inside you.  As you clench your eyes shut in agony, you are overcome with a sudden calm.  The pain in your abdomen subsides, and you feel at one with the unfathomable infinity of the universe, warmth radiating through you from the vast swirling cosmos contained within your womb.");
				if (silly()) outputText("  Your vagina has become a universe unto itself, capable of accepting colossal insertions beyond the scope of human comprehension!");
				else outputText("  Your vagina is now capable of accepting even the most ludicrously sized insertions with no ill effects.");
				player.changeStatusValue(StatusEffects.BonusVCapacity, 1, 8000);
				changes++;
			}

			//**********************
			//BIG APPEARANCE CHANGES
			//**********************
			//Neck restore
			if (player.neck.type !== Neck.NORMAL && changes < changeLimit && rand(4) === 0) {
				mutations.restoreNeck(tfSource);
			}
			//Rear body restore
			if (player.hasNonSharkRearBody() && changes < changeLimit && rand(5) === 0) {
				mutations.restoreRearBody(tfSource);
			}
			//Ovi perk loss
			if (rand(5) === 0) {
				mutations.updateOvipositionPerk(tfSource);
			}
			//[Grow Fox Tail]
			if (player.tail.type !== Tail.FOX && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(4) === 0))) {
				//if PC has no tail
				if (player.tail.type == Tail.NONE) {
					outputText("\n\nA pressure builds on your backside.  You feel under your " + player.armorName + " and discover a strange nodule growing there that seems to be getting larger by the second.  With a sudden flourish of movement, it bursts out into a long and bushy tail that sways hypnotically, as if it has a mind of its own.  You now have a fox-tail.");
				}
				//if PC has another type of tail
				else if (player.tail.type !== Tail.FOX) {
					outputText("\n\nPain lances through your lower back as your tail shifts and twitches violently.  With one final aberrant twitch, it fluffs out into a long, bushy fox tail that whips around in an almost hypnotic fashion.  You now have a fox-tail.");
				}
				player.tail.type = Tail.FOX;
				player.tail.venom = 1;
				changes++;
			}
			if (!mystic && player.ears.type == Ears.FOX && player.tail.type == Tail.FOX && player.tail.venom == 8 && rand(3) === 0) {
				outputText("\n\nYou have the feeling that if you could grow a ninth tail you would be much more powerful, but you would need to find a way to enhance one of these gems or meditate with one to have a chance at unlocking your full potential.");
			}
			//[Grow Addtl. Fox Tail]
			//(rare effect, up to max of 8 tails, requires PC level and int*10 = number of tail to be added)
			else if (player.tail.type == Tail.FOX && player.tail.venom < 8 && player.tail.venom + 1 <= player.level && player.tail.venom + 1 <= player.inte / 10 && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0))) {
				//if PC has 1 fox tail
				if (player.tail.venom == 1) {
					outputText("\n\nA tingling pressure builds on your backside, and your bushy tail begins to glow with an eerie, ghostly light.  With a crackle of electrical energy, your tail splits into two!  You now have a pair of fox-tails.");
					//increment tail by 1
				}
				//else if PC has 2 or more fox tails
				else {
					outputText("\n\nA tingling pressure builds on your backside, and your bushy tails begin to glow with an eerie, ghostly light.  With a crackle of electrical energy, one of your tails splits in two, giving you " + num2Text(player.tail.venom + 1) + "!  You now have a cluster of " + num2Text(player.tail.venom + 1) + " fox-tails.");
					//increment tail by 1
				}
				player.tail.venom++;
				changes++;
			}
			//[Grow 9th tail and gain Corrupted Nine-tails perk]
			else if (mystic && rand(4) === 0 && changes < changeLimit && player.tail.type == Tail.FOX && player.tail.venom == 8 && player.level >= 9 && player.ears.type == Ears.FOX && player.inte >= 90 && (!player.hasPerk(PerkLib.CorruptedNinetails) || player.perkv4(PerkLib.CorruptedNinetails) > 0) && (!player.hasPerk(PerkLib.EnlightenedNinetails) || player.perkv4(PerkLib.EnlightenedNinetails) > 0)) {
				outputText("Your bushy tails begin to glow with an eerie, ghostly light, and with a crackle of electrical energy, split into nine tails.  You are now a nine-tails!  But something is wrong...  The cosmic power radiating from your body feels...  tainted somehow.  The corruption pouring off your body feels...  good.");
				outputText("\n\nYou have the inexplicable urge to set fire to the world, just to watch it burn.  With your newfound power, it's a goal that is well within reach.");
				outputText("\n\n(Perk Gained: Corrupted Nine-tails - Grants two magical special attacks.)");
				player.createPerkIfNotHasPerk(PerkLib.CorruptedNinetails, 0, 0, 0, 0);
				dynStats("lib", 2, "lus", 10, "cor", 10);
				player.tail.venom = 9;
				changes++;
			}

			//[Grow Fox Ears]
			if (player.tail.type == Tail.FOX && ((mystic && rand(2) === 0) || (!mystic && rand(4) === 0)) && player.ears.type !== Ears.FOX && changes < changeLimit) {
				//if PC has non-animal ears
				if (player.ears.type == Ears.HUMAN) outputText("\n\nThe sides of your face painfully stretch as your ears morph and begin to migrate up past your hairline, toward the top of your head.  They elongate, becoming large vulpine triangles covered in bushy fur.  You now have fox ears.");
				//if PC has animal ears
				else outputText("\n\nYour ears change shape, shifting from their current shape to become vulpine in nature.  You now have fox ears.");
				player.ears.type = Ears.FOX;
				changes++;
			}
			//[Change Hair Color: Golden-blonde, SIlver Blonde, White, Black, Red]
			if (((mystic && rand(2) === 0) || (!mystic && rand(4) === 0)) && changes < changeLimit && (!inCollection(player.hair.color, ColorLists.BASIC_KITSUNE_HAIR) || player.tail.venom == 9) && !inCollection(player.hair.color, ColorLists.ELDER_KITSUNE)) {
				if (player.tail.type == Tail.FOX && player.tail.venom == 9) player.hair.color = randomChoice(ColorLists.ELDER_KITSUNE);
				else player.hair.color = randomChoice(ColorLists.BASIC_KITSUNE_HAIR);
				outputText("\n\nYour scalp begins to tingle, and you gently grasp a strand, pulling it forward to check it.  Your hair has become the same " + player.hair.color + " as a kitsune's!");
				changes++;
			}
			var tone:Array = mystic ? ColorLists.KITSUNE_SKIN_MYSTIC : ColorLists.KITSUNE_SKIN;
			//[Change Skin Type: remove fur or scales, change skin to Tan, Olive, or Light]
			var theFurColor:String = player.skin.furColor;
			if (player.hasFur() && player.underBody.type == UnderBody.FURRY && player.skin.furColor !== player.underBody.skin.furColor)
				theFurColor = player.skin.furColor + " and " + player.underBody.skin.furColor;

			if ((player.hasFur()
					&& player.face.type != Face.FOX
					&& !inCollection(theFurColor, convertMixedToStringArray(ColorLists.BASIC_KITSUNE_FUR))
					&& !inCollection(theFurColor, ColorLists.ELDER_KITSUNE)
					&& !inCollection(theFurColor, ["orange and white", "black and white", "red and white", "tan", "brown"])
					)
				|| player.hasScales() && ((mystic) || (!mystic && rand(2) === 0))) {
				outputText("\n\nYou begin to tingle all over your [skin], starting as a cool, pleasant sensation but gradually worsening until you are furiously itching all over.");
				if (player.hasFur()) outputText("  You stare in horror as you pull your fingers away holding a handful of " + player.skin.furColor + " fur!  Your fur sloughs off your body in thick clumps, falling away to reveal patches of bare, " + player.skin.tone + " skin.");
				else if (player.hasScales()) outputText("  You stare in horror as you pull your fingers away holding a handful of dried up scales!  Your scales continue to flake and peel off your skin in thick patches, revealing the tender " + player.skin.tone + " skin underneath.");
				outputText("  Your skin slowly turns raw and red under your severe scratching, the tingling sensations raising goosebumps across your whole body.  Over time, the itching fades, and your flushed skin resolves into a natural-looking ");
				player.skin.type = Skin.PLAIN;
				player.skin.adj = "";
				player.skin.desc = "skin";
				player.underBody.restore();
				if (!inCollection(player.skin.tone, tone)) player.skin.tone = randomChoice(tone);
				outputText(player.skin.tone + " complexion.");
				outputText("  You now have [skin]!");
				player.arms.updateClaws(player.arms.claws.type);
				changes++;
			}
			//Change skin tone if not changed you!
			else if (!inCollection(player.skin.tone, tone) && changes < changeLimit && ((mystic && rand(2) === 0) || (!mystic && rand(3) === 0))) {
				outputText("\n\nYou feel a crawling sensation on the surface of your skin, starting at the small of your back and spreading to your extremities, ultimately reaching your face.  Holding an arm up to your face, you discover that you now have ");
				player.skin.tone = randomChoice(tone);
				outputText("[skin]!");
				player.arms.updateClaws(player.arms.claws.type);
				changes++;
			}
			//[Change Skin Color: add "Tattoos"]
			//From Tan, Olive, or Light skin tones
			else if (9999 == 0 && inCollection(player.skin.tone, tone) && changes < changeLimit) {
				outputText("You feel a crawling sensation on the surface of your skin, starting at the small of your back and spreading to your extremities, ultimately reaching your face.  You are caught by surprise when you are suddenly assaulted by a blinding flash issuing from areas of your skin, and when the spots finally clear from your vision, an assortment of glowing tribal tattoos adorns your [skin].  The glow gradually fades, but the distinctive ");
				if (mystic) outputText("angular");
				else outputText("curved");
				outputText(" markings remain, as if etched into your skin.");
				changes++;
				//9999 - pending tats system
			}
			//Nipples Turn Back:
			if (!player.hasFur() && player.hasStatusEffect(StatusEffects.BlackNipples) && changes < changeLimit && rand(3) === 0) {
				mutations.removeBlackNipples(tfSource);
			}
			//Debugcunt
			if (!player.hasFur() && changes < changeLimit && rand(3) === 0 && player.vaginaType() == 5 && player.hasVagina()) {
				outputText("\n\nSomething invisible brushes against your sex, making you twinge.  Undoing your clothes, you take a look at your vagina and find that it has turned back to its natural flesh colour.");
				player.vaginaType(0);
				changes++;
			}
			// Kitsunes should have normal arms and legs. exspecially skinny arms with claws are somewhat weird (Stadler76).
			if (player.hasPlainSkin() && rand(4) === 0) mutations.restoreArms(tfSource);
			if (player.hasPlainSkin() && rand(4) === 0) mutations.restoreLegs(tfSource);

			if (changes == 0) {
				outputText("\n\nOdd.  You don't feel any different.");
			}
			flags[kFLAGS.TIMES_TRANSFORMED] += changes;

			return false;
		}
	}
}

license: unknown


code:
package classes.Items.Consumables
{
	import classes.GlobalFlags.kACHIEVEMENTS;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.StatusEffects;

	/**
	 * Alcoholic beverage.
	 */
	public class FrothyBeer extends Consumable
	{
		public function FrothyBeer()
		{
			super("Fr Beer", "Fr Beer", "a mug of frothy beer", ConsumableLib.DEFAULT_VALUE, "A bottle of beer from The Black Cock.");
		}

		override public function useItem():Boolean
		{
			outputText("Feeling parched, you twist the metal cap from the clear green bottle and chug it down. ");
			dynStats("lus", 15);
			player.refillHunger(10, false);
			if (!player.hasStatusEffect(StatusEffects.Drunk)) {
				player.createStatusEffect(StatusEffects.Drunk, 2, 1, 1, 0);
				dynStats("str", 0.1);
				dynStats("inte", -0.5);
				dynStats("lib", 0.25);
			}
			else {
				player.addStatusValue(StatusEffects.Drunk, 2, 1);
				if (player.statusEffectv1(StatusEffects.Drunk) < 2) player.addStatusValue(StatusEffects.Drunk, 1, 1);
				if (player.statusEffectv2(StatusEffects.Drunk) === 2) {
					outputText("\n\n<b>You feel a bit drunk. Maybe you should cut back on the beers?</b>");
				}
				//Get so drunk you end up peeing! Genderless can still urinate.
				if (player.statusEffectv2(StatusEffects.Drunk) >= 3) {
					outputText("\n\nYou feel so drunk; your vision is blurry and you realize something's not feeling right. Gasp! You have to piss like a racehorse! You stumble toward the nearest bush");
					if (player.hasVagina() && !player.hasCock()) outputText(player.clothedOrNakedLower(", open up your [armor]") + " and release your pressure onto the ground. ");
					else outputText(player.clothedOrNakedLower(", open up your [armor]") + " and release your pressure onto the wall. ");
					outputText("It's like as if the floodgate has opened! ");
					awardAchievement("Urine Trouble", kACHIEVEMENTS.GENERAL_URINE_TROUBLE, true, true, false);
					awardAchievement("Smashed", kACHIEVEMENTS.GENERAL_SMASHED, true, true, false);
					outputText("\n\nIt seems to take forever but it eventually stops. You look down to see that your urine has been absorbed into the ground.");
					player.removeStatusEffect(StatusEffects.Drunk);
					cheatTime(1/12);
				}
			}

			if (player.tone < 70) player.modTone(70, rand(3));
			if (player.femininity > 30) player.modFem(30, rand(3));
			return false;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.Items.Consumable;

	/**
	 * What exactly, is not clear?
	 */
	public class GiantChocolateCupcake extends Consumable
	{
		private static const ITEM_VALUE:int = 250;

		public function GiantChocolateCupcake()
		{
			super("CCupcak","CCupcak", "a gigantic, chocolate cupcake", ITEM_VALUE, "A gigantic, chocolate cupcake. You could easily get full from eating this!");
		}

		override public function useItem():Boolean
		{
			clearOutput();
			outputText("You look down at the massive chocolate cupcake and wonder just how you can possibly eat it all.  It fills the over-sized wrapper and bulges out over the top, somehow looking obscene even though it's merely a baked treat.  There is a single candle positioned atop its summit, and it bursts into flame as if by magic.  Eight red gumdrops ring the outer edge of the cupcake, illuminated by the flame.\n\n");
			outputText("You hesitantly take a bite.  It's sweet, as you'd expect, but there's also a slightly salty, chocolaty undercurrent of flavor.  Even knowing what the minotaur put in Maddie's mix, you find yourself grateful that this new creation doesn't seem to have any of his 'special seasonings'.  It wouldn't do to be getting drugged up while you're slowly devouring the massive, muffin-molded masterpiece. Before you know it, most of the cupcake is gone and you polish off the last chocolaty bites before licking your fingers clean.\n\n");
			outputText("Gods, you feel heavy!  You waddle slightly as your body begins thickening, swelling until you feel as wide as a house.  Lethargy spreads through your limbs, and you're forced to sit still a little while until you let out a lazy burp.\n\n");
			outputText("As you relax in your sugar-coma, you realize your muscle definition is fading away, disappearing until your " + player.skin.desc + " looks nearly as soft and spongy as Maddie's own.  You caress the soft, pudgy mass and shiver in delight, dimly wondering if this is how the cupcake-girl must feel all the time.");
			outputText(player.modTone(0, 100));
			outputText(player.modThickness(100, 100));
			player.refillHunger(100);

			return false;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.PerkLib;
	import classes.StatusEffects;
	import classes.lists.ColorLists;

	/**
	 * Goblin transformative item.
	 */
	public class GoblinAle extends Consumable
	{
		public function GoblinAle()
		{
			super("Gob.Ale","Gob.Ale", "a flagon of potent goblin ale", ConsumableLib.DEFAULT_VALUE, "This sealed flagon of 'Goblin Ale' sloshes noisily with alcoholic brew.  Judging by the markings on the flagon, it's a VERY strong drink, and not to be trifled with.");
		}

		override public function useItem():Boolean
		{
			var tfSource:String = "goblinAle";
			player.slimeFeed();
			mutations.initTransformation([2, 3, 4, 5]);
			clearOutput();
			outputText("You drink the ale, finding it to have a remarkably smooth yet potent taste.  You lick your lips and sneeze, feeling slightly tipsy.");
			dynStats("lus", 15);
			//Stronger
			if (player.str100 > 50) {
				dynStats("str", -1);
				if (player.str100 > 70) dynStats("str", -1);
				if (player.str100 > 90) dynStats("str", -2);
				outputText("\n\nYou feel a little weaker, but maybe it's just the alcohol.");
			}
			///Less tough
			if (player.tou100 > 50) {
				outputText("\n\nGiggling, you poke yourself, which only makes you giggle harder when you realize how much softer you feel.");
				dynStats("tou", -1);
				if (player.tou100 > 70) dynStats("tou", -1);
				if (player.tou100 > 90) dynStats("tou", -2);
			}
			//antianemone corollary:
			if (changes < changeLimit && player.hair.type === 4 && rand(2) === 0) {
				//-insert anemone hair removal into them under whatever criteria you like, though hair removal should precede abdomen growth; here's some sample text:
				outputText("\n\nAs you down the potent ale, your head begins to feel heavier - and not just from the alcohol!  Reaching up, you notice your tentacles becoming soft and somewhat fibrous.  Pulling one down reveals that it feels smooth, silky, and fibrous; you watch as it dissolves into many thin, hair-like strands.  Your hair is now back to normal!");
				player.hair.type = Hair.NORMAL;
				changes++;
			}
			//Shrink
			if (rand(2) === 0 && player.tallness > 48) {
				changes++;
				outputText("\n\nThe world spins, and not just from the strength of the drink!  Your viewpoint is closer to the ground.  How fun!");
				player.tallness -= (1 + rand(5));
			}
			//Speed boost
			if (rand(3) === 0 && player.spe100 < 50 && changes < changeLimit) {
				dynStats("spe", 1 + rand(2));
				outputText("\n\nYou feel like dancing, and stumble as your legs react more quickly than you'd think.  Is the alcohol slowing you down or are you really faster?  You take a step and nearly faceplant as you go off balance.  It's definitely both.");
			}
			//Neck restore
			if (player.neck.type != Neck.NORMAL && changes < changeLimit && rand(4) == 0) mutations.restoreNeck(tfSource);
			//Rear body restore
			if (player.hasNonSharkRearBody() && changes < changeLimit && rand(5) == 0) mutations.restoreRearBody(tfSource);
			//Ovi perk loss
			if (rand(5) === 0) {
				mutations.updateOvipositionPerk(tfSource);
			}
			//Restore arms to become human arms again
			if (rand(4) === 0) {
				mutations.restoreArms(tfSource);
			}
			//SEXYTIEMS
			//Multidick killa!
			if (player.cocks.length > 1 && rand(3) === 0 && changes < changeLimit) {
				outputText("\n\n");
				player.killCocks(1);
				changes++;
			}
			//Boost vaginal capacity without gaping
			if (changes < changeLimit && rand(3) === 0 && player.hasVagina() && player.statusEffectv1(StatusEffects.BonusVCapacity) < 40) {
				if (!player.hasStatusEffect(StatusEffects.BonusVCapacity)) player.createStatusEffect(StatusEffects.BonusVCapacity, 0, 0, 0, 0);
				player.addStatusValue(StatusEffects.BonusVCapacity, 1, 5);
				outputText("\n\nThere is a sudden... emptiness within your " + player.vaginaDescript(0) + ".  Somehow you know you could accommodate even larger... insertions.");
				changes++;
			}
			//Boost fertility
			if (changes < changeLimit && rand(4) === 0 && player.fertility < 40 && player.hasVagina()) {
				player.fertility += 2 + rand(5);
				changes++;
				outputText("\n\nYou feel strange.  Fertile... somehow.  You don't know how else to think of it, but you're ready to be a mother.");
			}
			//Shrink primary dick to no longer than 12 inches
			else if (player.cocks.length === 1 && rand(2) === 0 && changes < changeLimit && !flags[kFLAGS.HYPER_HAPPY]) {
				if (player.cocks[0].cockLength > 12) {
					changes++;
					var temp3:Number = 0;
					outputText("\n\n");
					//Shrink said cock
					if (player.cocks[0].cockLength < 6 && player.cocks[0].cockLength >= 2.9) {
						player.cocks[0].cockLength -= .5;
						temp3 -= .5;
					}
					temp3 += player.increaseCock(0, (rand(3) + 1) * -1);
					player.lengthChange(temp3, 1);
				}
			}
			//GENERAL APPEARANCE STUFF BELOW
			//REMOVAL STUFF
			//Removes wings!
			if ((player.wings.type != Wings.NONE) && changes < changeLimit && rand(4) === 0) {
				if (player.rearBody.type == RearBody.SHARK_FIN) {
					outputText("\n\nYour back tingles, feeling lighter.  Something lands behind you with a 'thump', and when you turn to look, you"
					          +" see your fin has fallen off.  This might be the best (and worst) booze you've ever had!"
					          +"  You no longer have a fin!");
					player.rearBody.restore();
				} else {
					outputText("\n\nYour shoulders tingle, feeling lighter.  Something lands behind you with a 'thump', and when you turn to look you"
					          +" see your wings have fallen off.  This might be the best (and worst) booze you've ever had!"
					          +"  You no longer have wings!");
				}
				player.wings.restore();
				changes++;
			}
			//Removes antennae!
			if (player.antennae.type != Antennae.NONE && changes < changeLimit && rand(3) === 0) {
				mutations.removeAntennae();
			}
			//Remove odd eyes
			if (changes < changeLimit && rand(5) === 0 && player.eyes.type > Eyes.HUMAN) {
				if (player.eyes.type === Eyes.BLACK_EYES_SAND_TRAP) {
					outputText("\n\nYou feel a twinge in your eyes and you blink.  It feels like black cataracts have just fallen away from you, and you know without needing to see your reflection that your eyes have gone back to looking human.");
				}
				else {
					outputText("\n\nYou blink and stumble, a wave of vertigo threatening to pull your " + player.feet() + " from under you.  As you steady and open your eyes, you realize something seems different.  Your vision is changed somehow.");
					if (player.eyes.type === Eyes.FOUR_SPIDER_EYES || player.eyes.type === Eyes.SPIDER) outputText("  Yourarachnid eyes are gone!");
					outputText("  You have normal, humanoid eyes again.");
				}
				player.eyes.type = Eyes.HUMAN;
				player.eyes.count = 2;
				changes++;
			}
			//-Remove extra breast rows
			if (changes < changeLimit && player.bRows() > 1 && rand(3) === 0) {
				mutations.removeExtraBreastRow(tfSource);
			}
			//Skin/fur
			if (!player.hasPlainSkin() && changes < changeLimit && rand(4) === 0 && player.face.type === Face.HUMAN) {
				if (player.hasFur()) outputText("\n\nYour fur itches incessantly, so you start scratching it.  It starts coming off in big clumps before the whole mess begins sloughing off your body.  In seconds, your skin is nude.  You've lost your fur!");
				if (player.hasScales()) outputText("\n\nYour scales itch incessantly, so you scratch at them.  They start falling off wholesale, leaving you standing in a pile of scales after only a few moments.  You've lost your scales!");
				if (player.hasGooSkin()) outputText("\n\nYour " + player.skin.desc + " itches incessantly, and as you scratch it shifts and changes, becoming normal human-like skin.  Your skin is once again normal!");
				player.skin.adj = "";
				player.skin.desc = "skin";
				player.skin.type = Skin.PLAIN;
				player.underBody.restore();
				changes++;
			}
			//skinTone
			if (ColorLists.GOBLIN_SKIN.indexOf(player.skin.tone) === -1 && changes < changeLimit && rand(2) === 0) {
				if (rand(10) !== 0) player.skin.tone = "dark green";
				else {
					if (rand(2) === 0) player.skin.tone = "pale yellow";
					else player.skin.tone = "grayish-blue";
				}
				player.arms.updateClaws(player.arms.claws.type);
				changes++;
				outputText("\n\nWhoah, that was weird.  You just hallucinated that your ");
				if (player.hasFur()) outputText("skin");
				else outputText(player.skin.desc);
				outputText(" turned " + player.skin.tone + ".  No way!  It's staying, it really changed color!");
				game.rathazul.addMixologyXP(20);
			}
			//Face!
			if (player.face.type !== Face.HUMAN && changes < changeLimit && rand(4) === 0 && player.ears.type === Ears.ELFIN) {
				changes++;
				player.face.type = Face.HUMAN;
				outputText("\n\nAnother violent sneeze escapes you.  It hurt!  You feel your nose and discover your face has changed back into a more normal look.  You have a human looking face again!");
			}
			//Ears!
			if (player.ears.type !== Ears.ELFIN && changes < changeLimit && rand(3) === 0) {
				outputText("\n\nA weird tingling runs through your scalp as your " + player.hairDescript() + " shifts slightly.  You reach up to touch and bump your new pointed elfin ears.  You bet they look cute!");
				changes++;
				player.ears.type = Ears.ELFIN;
			}
			// Remove gills
			if (rand(4) === 0 && player.hasGills() && changes < changeLimit) {
				mutations.updateGills();
			}

			//Nipples Turn Back:
			if (player.hasStatusEffect(StatusEffects.BlackNipples) && changes < changeLimit && rand(3) === 0) {
				mutations.removeBlackNipples(tfSource);
			}
			//Debugcunt
			if (changes < changeLimit && rand(3) === 0 && player.vaginaType() === 5 && player.hasVagina()) {
				outputText("\n\nSomething invisible brushes against your sex, making you twinge.  Undoing your clothes, you take a look at your vagina and find that it has turned back to its natural flesh colour.");
				player.vaginaType(0);
				changes++;
			}
			if (changes < changeLimit && rand(4) === 0 && ((player.ass.analWetness > 0 && player.findPerk(PerkLib.MaraesGiftButtslut) < 0) || player.ass.analWetness > 1)) {
				outputText("\n\nYou feel a tightening up in your colon and your [asshole] sucks into itself.  You feel sharp pain at first but that thankfully fades.  Your ass seems to have dried and tightened up.");
				player.ass.analWetness--;
				if (player.ass.analLooseness > 1) player.ass.analLooseness--;
				changes++;
			}
			if (changes < changeLimit && rand(3) === 0) {
				if (rand(2) === 0) player.modFem(85, 3);
				if (rand(2) === 0) player.modThickness(20, 3);
				if (rand(2) === 0) player.modTone(15, 5);
			}
			player.refillHunger(15);
			flags[kFLAGS.TIMES_TRANSFORMED] += changes;
			return false;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;

	/**
	 * Honey based alcoholic beverage.
	 */
	public class GodMead extends Consumable
	{

		public function GodMead()
		{
			super("GodMead","GodMead", "a pint of god's mead", ConsumableLib.DEFAULT_VALUE,"A horn of potent, honey-colored mead. A single whiff makes your head swim and your thoughts turn to violence and heroism.");
		}

		override public function useItem():Boolean
		{
			player.slimeFeed();
			clearOutput();
			outputText("You take a hearty swig of mead, savoring the honeyed taste on your tongue.  Emboldened by the first drink, you chug the remainder of the horn's contents in no time flat.  You wipe your lips, satisfied, and let off a small belch as you toss the empty horn aside.  ");

			//Libido: No desc., always increases.
			//Corruption: No desc., always decreases.
			dynStats("lib", 1, "cor", -1);
			//Health/HP(Large increase; always occurs):
			outputText("\n\nYou feel suddenly invigorated by the potent beverage, like you could take on a whole horde of barbarians or giants and come out victorious! ");
			player.HPChange(Math.round(player.maxHP() * .33), true);
			if (rand(3) === 0) {
				outputText("\n\nThe alcohol fills your limbs with vigor, making you feel like you could take on the world with just your fists!");
				if (silly()) outputText("  Maybe you should run around shirtless, drink, and fight!  Saxton Hale would be proud.");
				dynStats("str", 1);
			}
			//Tough:
			else {
				outputText("\n\nYou thump your chest and grin - your foes will have a harder time taking you down while you're fortified by liquid courage.");
				dynStats("tou", 1);
			}
			//Grow Beard [ONLY if PC has a masculine face & a dick.)( -- Why? Bearded ladies are also a fetish [That's just nasty.] (I want a lady beard)): A sudden tingling runs along your chin. You rub it with your hand, and find a thin layer of bristles covering your lower face. You now sport a fine [player.HairColor] beard!
			if (rand(6) === 0 && player.beard.length < 4) {
				if (player.beard.length <= 0) outputText("A sudden tingling runs along your chin. You rub it with your hand, and find a thin layer of bristles covering your lower face. <b>You now sport a fine " + player.hair.color + " beard!</b>");
				else outputText("\n\nA sudden tingling runs along your chin. You stroke your beard proudly as it slowly grows in length and lustre.");
				player.beard.length += 0.5;
			}
			//Grow hair: Your scalp is beset by pins and needles as your hair grows out, stopping after it reaches [medium/long] length.}
			player.refillHunger(20);

			return false;
		}

		override public function getMaxStackSize():int {
			return 5;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.Appearance;
	import classes.BodyParts.*;
	import classes.CockTypesEnum;
	import classes.GlobalFlags.*;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;

	/**
	 * Golden Rind/Deer TF, part of the Wild Hunt by Frogapus
	 * @author Kitteh6660
	 */
	public class GoldenRind extends Consumable
	{

		public function GoldenRind()
		{
			super("GldRind", "GoldenRind", "a golden rind", ConsumableLib.DEFAULT_VALUE, "This shimmering, citrus peel is shaped like a corkscrew and smells sweet and sour at the same time.");
		}

		override public function useItem():Boolean
		{
			var tfSource:String = "deerTFs";
			var temp:int = 0;
			var x:int = 0;
			outputText("You pop the sliver of fruit in your mouth, delighting in the sweetness and tanginess as you chew it.  A burst of lime-like tartness slaps your senses, and you feel an answering tingle further down in your body.");
			player.refillHunger(10);
			mutations.initTransformation([2, 3], 2);
			//Main TFs
			if (player.neck.type != Neck.NORMAL && changes < changeLimit && rand(4) == 0) //neck restore
				mutations.restoreNeck(tfSource);
			if (player.hasNonSharkRearBody() && changes < changeLimit && rand(5) == 0) //rear body restore
				mutations.restoreRearBody(tfSource);
			if (rand(5) == 0) //ovi perk loss
				mutations.updateOvipositionPerk(tfSource);
			if (rand(3) == 0 && changes < changeLimit && player.ears.type != Ears.DEER) {
				if (player.ears.type == -1) outputText("\n\nTwo painful lumps sprout on the top of your head, forming into tear-drop shaped ears, covered with short fur.  ");
				if (player.ears.type == Ears.HUMAN) outputText("\n\nYour ears tug painfully on your face as they begin shifting, moving upwards to the top of your head and transforming into an upright animalistic ears.  ");
				if (player.ears.type == Ears.DOG) outputText("\n\nYour ears change shape, morphing into from their doglike shape into deer-like ears!  ");
				if (player.ears.type > Ears.DOG) outputText("\n\nYour ears change shape, morphing into teardrop-shaped deer ears!  ");
				outputText("You now have deer ears.");
				player.ears.type = Ears.DEER; //gain deer ears
				changes++;
			}
			if (rand(3) == 0 && changes < changeLimit && player.ears.type == Ears.DEER && player.tail.type != Tail.DEER) {
				outputText("\n\nYou feel a tightening just above your ass, as if a massive hand was pinching you.  It releases with a curious “pomf”-ing noise.  You turn this way and that, finally managing to crane your neck to see your fluffy, flicking deer tail.");
				player.tail.type = Tail.DEER; //gain deer tail
				changes++;
			}
			if (rand(3) == 0 && changes < changeLimit && player.horns.type == Horns.NONE) {
				outputText("\n\nYou feel an immense pressure from your forehead, and you reach up, feeling the nubs of two new horns.");
				player.horns.type = Horns.ANTLERS; //gain deer horns AKA antlers
				player.horns.value = 1;
				changes++;
			}
			if (rand(3) == 0 && changes < changeLimit && player.horns.value > 0 && player.horns.type != Horns.ANTLERS) {
				outputText("\n\nYou feel a strange twisting sensation from your horns as they extend outwards.  You reach up to feel them and realize that you’ve now got pronged, stag-like horns.");
				player.horns.type = Horns.ANTLERS; //gain deer horns AKA antlers
				player.horns.value = 4;
				changes++;
			}
			if (rand(3) == 0 && changes < changeLimit && player.horns.type == Horns.ANTLERS && player.horns.value < 30) {
				outputText("\n\nYou feel a strange twisting sensation from your antlers as they extend and split outwards.  You reach up to feel them and realize that your antlers are now even more branched out.");
				if (player.horns.value < 20 && rand(2) == 0) player.horns.value += (1 + rand(4));
				player.horns.value++; //increase points on deer antlers
				outputText("  After counting the number of points you have on your antlers, you have " + player.horns.value + " points.");
				if (player.horns.value >= 30) outputText("  It seems that your antlers can't get any more pointier.");
				changes++;
			}
			if (mutations.tfNoFur() && rand(4) == 0 && changes < changeLimit && player.horns.value > 0 && !player.hasFur()) {
				outputText("\n\nFor a moment, it looks like a ray of sunlight has shimmered through the canopy. You blink and realize that your fur has become dappled, with lighter, sun-speckled spots highlighting it.");
				player.skin.type = Skin.FUR; //gain fur
				player.skin.adj = "";
				player.skin.desc = "fur";
				player.skin.furColor = "brown";
				player.underBody.type = UnderBody.FURRY;
				player.copySkinToUnderBody({furColor: "white"});
				changes++;
			}
			if (rand(3) == 0 && changes < changeLimit && player.ears.type == Ears.DEER && (player.face.type != Face.HUMAN && player.face.type != Face.DEER)) {
				outputText("\n\nYour face grows warm as suddenly your vision is engulfed in smoke, coughing and beating the smoke back you noticed a marked change in your features. Touching yourself you confirm you have a normal human shaped face once again.");
				player.face.type = Face.HUMAN; //change face to human
				changes++;
			}
			if (rand(4) == 0 && changes < changeLimit && player.hasFur() && player.ears.type == Ears.DEER && player.tail.type == Tail.DEER && player.face.type != Face.DEER) {
				outputText("\n\nYou feel a grinding noise from your jaw, and a massive pressure in your sinuses, as your cheeks pinch in, followed immediately by a pointing of the lower half of your face.  You frantically (and gently) feel your face, discovering, to your surprise, that you’ve gained the delicate facial features of a deer.");
				player.face.type = Face.DEER; //gain deer face
				changes++;
			}
			if (rand(4) == 0 && changes < changeLimit && player.ears.type == Ears.DEER && player.tail.type == Tail.DEER && player.hasFur() && player.lowerBody.type != LowerBody.CLOVEN_HOOFED) {
				if (player.lowerBody.type == LowerBody.HOOFED)
					 outputText("\n\nYou feel a sharp stinging sensation from your hooves, accompanied by a loud CRACK.  You look down in alarm, prancing from one hooved foot to another, realizing that your solid, heavy hooves have been replaced with delicate, cloven hooves.  You squint, also noting a subtle thinness across your legs in general--if you had to guess, you’d hazard that you’re looking more deer-like than horse-like.");
				else outputText("\n\nYou feel a strange tightness from your feet and nearly topple over as your balance shifts.  You’re balancing on your toes for some reason.  You look down in amazement as your legs slim and lengthen, your feet elongating and darkening at the ends until you’re balancing on two, graceful deer legs.");
				player.lowerBody.type = LowerBody.CLOVEN_HOOFED; //change legs to cloven hooves
				if (!player.isTaur() && !player.isBiped()) player.lowerBody.legCount = 2;
				changes++;
			}
			//Genital Changes
			if (rand(3) == 0 && changes < changeLimit && player.cocks.length > 0) { //morph dick to horsediiiiick
				var selectedCockValue:int = -1; //changed as selectedCock and i caused duplicate var warnings
				for (var indexI:int = 0; indexI < player.cocks.length; indexI++) {
					if (player.cocks[indexI].cockType != CockTypesEnum.HORSE) { selectedCockValue = indexI; break; }
				}
				if (selectedCockValue != -1) {
					if (player.cocks[selectedCockValue].cockType == CockTypesEnum.HUMAN || player.cocks[selectedCockValue].cockType.Index > 2) //text for humandicks or others
						outputText("\n\nYour " + player.cockDescript(selectedCockValue) + " begins to feel strange... you pull down your pants to take a look and see it darkening as you feel a tightness near the base where your skin seems to be bunching up.  A sheath begins forming around your cock's base, tightening and pulling your cock inside its depths.  A hot feeling envelops your member as it suddenly grows into a horse penis, dwarfing its old size.  The skin is mottled brown and black and feels more sensitive than normal.  Your hands are irresistibly drawn to it, and you jerk yourself off, splattering cum with intense force.");
					if (player.cocks[selectedCockValue].cockType == CockTypesEnum.DOG) //text for dogdicks
						outputText("\n\nYour " + Appearance.cockNoun(CockTypesEnum.DOG) + " begins to feel odd...  You pull down your clothes to take a look and see it darkening.  You feel a growing tightness in the tip of your " + Appearance.cockNoun(CockTypesEnum.DOG) + " as it flattens, flaring outwards.  Your cock pushes out of your sheath, inch after inch of animal-flesh growing beyond its traditional size.  You notice your knot vanishing, the extra flesh pushing more fresh horsecock out from your sheath.  Your hands are drawn to the strange new " + Appearance.cockNoun(CockTypesEnum.HORSE) + ", and you jerk yourself off, splattering thick ropes of cum with intense force.");
					player.cocks[selectedCockValue].cockType = CockTypesEnum.HORSE;
					player.increaseCock(selectedCockValue, 4);
					dynStats("lib", 5, "sen", 4, "lus", 35);
					outputText("  You now have a");
					if (player.countCocksOfType(CockTypesEnum.HORSE) > 1) outputText("nother");
					outputText(" horse-penis.");
					changes++;
				}
			}
			//Body thickness/tone changes
			if (rand(3) == 0 && player.tone > 20) {
				if (player.tone > 50) player.modTone(20, 2 + rand(3));
				else player.modTone(20, 2);
			}
			if (rand(3) == 0 && player.thickness > 20) {
				if (player.thickness > 50) player.modThickness(20, 2 + rand(3));
				else player.modThickness(20, 2);
			}
			flags[kFLAGS.TIMES_TRANSFORMED] += changes;
			return false;
		}
	}

}