code:
/**
 * Created by aimozg on 11.01.14.
 */
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.PerkLib;
	import classes.Player;
	import classes.internals.Utils;

	public final class GroPlus extends Consumable {

		public function GroPlus() {
			super("GroPlus", "GroPlus", "a needle filled with Gro+", 50, "This is a small needle with a reservoir full of blue liquid.  A faded label marks it as 'GroPlus'.  Its purpose seems obvious.");
		}

		override public function canUse():Boolean {
			return true;
		}

//		override public function hasSubMenu():Boolean { return true; } //Only GroPlus and Reducto use this.

		override public function useItem():Boolean {
			var gpBalls:Function	= (game.player.balls > 0 ? growPlusBalls : null);
			var gpBreasts:Function	= (game.player.breastRows.length > 0 ? growPlusBreasts : null);
			var gpClit:Function		= (game.player.vaginas.length > 0 ? growPlusClit : null);
			var gpCock:Function		= (game.player.cockTotal() > 0 ? growPlusCock : null);
			var gpNipples:Function	= (game.player.totalNipples() > 0 ? growPlusNipples : null);
			clearOutput();
			outputText("You ponder the needle in your hand knowing it will enlarge the injection site.  What part of your body will you use it on?  ");
			game.choices("Balls", gpBalls, "Breasts", gpBreasts, "Clit", gpClit, "Cock", gpCock, "Nipples", gpNipples, "", null, "", null, "", null, "", null, "Nevermind", growPlusCancel);
			return(true);
		}

		private function growPlusBalls():void {
			clearOutput();
			game.player.slimeFeed();
			outputText("You sink the needle deep into your " + game.player.sackDescript() + ".  It hurts like hell, but you push down the plunger and the pain vanishes as the needles contents flow into you.\n\n");
			//1 in 4 BIG growth.
			if (Utils.rand(4) == 0) {
				outputText("You feel a trembling in your " + game.player.ballsDescriptLight() + " as the chemicals start to go to work.  You can tell they're going to be VERY effective.\n");
				game.player.ballSize += Utils.rand(4) + 2;
				outputText("They shift, stretching your " + game.player.sackDescript() + " tight as they gain inches of size.  You step to steady yourself as your center of balance shifts due to your newly enlarged " + game.player.ballsDescriptLight() + ".  ");
			}
			else {
				game.player.ballSize += Utils.rand(2) + 1;
				outputText("You feel your testicles shift, pulling the skin of your " + game.player.sackDescript() + " a little bit as they grow to " + game.player.ballsDescriptLight() + ".  ");
			}
			if (game.player.ballSize > 10) outputText("Walking gets even tougher with the swollen masses between your legs.  Maybe this was a bad idea.");
			game.dynStats("lus", 10);
			game.inventory.itemGoNext();
		}

		private function growPlusBreasts():void {
			clearOutput();
			game.player.slimeFeed();
			outputText("You sink the needle into the flesh of your " + game.player.allBreastsDescript() + " injecting each with a portion of the needle.\n\n");
			if (game.player.breastRows.length == 1)
				game.player.growTits(Utils.rand(5) + 1, 1, true, 1);
			else
				game.player.growTits(Utils.rand(2) + 1, game.player.breastRows.length, true, 1);
			game.dynStats("lus", 10);
			game.inventory.itemGoNext();
		}

		private function growPlusClit():void {
			clearOutput();
			game.player.slimeFeed();
			outputText("You sink the needle into your clit, nearly crying with how much it hurts.  You push down the plunger and the pain vanishes as your clit starts to grow.\n\n");
			game.player.clitLength++;
			outputText("Your " + game.player.clitDescript() + " stops growing after an inch of new flesh surges free of your netherlips.  It twitches, feeling incredibly sensitive.");
			game.dynStats("sen", 2, "lus", 10);
			game.inventory.itemGoNext();
		}

		private function growPlusCock():void {
			clearOutput();
			game.player.slimeFeed();
			outputText("You sink the needle into the base of your " + game.player.multiCockDescriptLight() + ".  It hurts like hell, but as you depress the plunger, the pain vanishes, replaced by a tingling pleasure as the chemicals take effect.\n\n");
			if (game.player.cocks.length == 1) {
				outputText("Your " + game.player.cockDescript(0) + " twitches and thickens, pouring more than an inch of thick new length from your ");
				game.player.increaseCock(0, 4);
				game.player.cocks[0].cockLength += 1; // This was forcing "what was said" to match "what actually happened" no matter what increase/growCock /actually/ did.
				game.player.cocks[0].cockThickness += 0.5; // And growCock never actually touched thickness. Nor does the new version. Thickness mod was stripped out entirely.
			}
			//MULTI
			else {
				outputText("Your " + game.player.multiCockDescriptLight() + " twitch and thicken, each member pouring out more than an inch of new length from your ");
				for (var i:int = 0; i < game.player.cocks.length; i++) {
					game.player.increaseCock(i, 2);
					game.player.cocks[i].cockLength += 1;
					game.player.cocks[i].cockThickness += 0.5;
				}
			}
			if (game.player.hasSheath())
				outputText("sheath.");
			else outputText("crotch.");
			game.dynStats("sen", 2, "lus", 10);
			game.inventory.itemGoNext();
		}

		private function growPlusNipples():void {
			clearOutput();
			game.player.slimeFeed();
			outputText("You sink the needle into each of your " + game.player.nippleDescript(0) + "s in turn, dividing the fluid evenly between them.  Though each injection hurts, the pain is quickly washed away by the potent chemical cocktail.\n\n");
		//Grow nipples
			outputText("Your nipples engorge, prodding hard against the inside of your " + game.player.armorName + ".  Abruptly you realize they've grown more than an additional quarter-inch.\n\n");
			game.player.nippleLength += (Utils.rand(2) + 3) / 10;
			game.dynStats("lus", 15);
			//NIPPLECUNTZZZ
			if (!game.player.hasFuckableNipples() && Utils.rand(4) == 0) {
				var nowFuckable:Boolean = false;
				for (var x:int = 0; x < game.player.breastRows.length; x++) {
					if (!game.player.breastRows[x].fuckable && game.player.nippleLength >= 2) {
						game.player.breastRows[x].fuckable = true;
						nowFuckable = true;
					}
				}
				//Talk about if anything was changed.
				if (nowFuckable) outputText("Your " + game.player.allBreastsDescript() + " 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>\n\n");
			}
			game.inventory.itemGoNext();
		}

		private function growPlusCancel():void {
			clearOutput();
			outputText("You put the vial away.\n\n");
			game.inventory.returnItemToInventory(this);
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.GlobalFlags.kGAMECLASS;
	import classes.internals.Utils;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;

	public class HairDye extends Consumable
	{
		private var _color:String;

		public function HairDye(id:String, color:String)
		{
			_color = color.toLowerCase();
			var shortName:String = color + " Dye";
			var longName:String = "a vial of " + _color + " hair dye";
			var value:int = ConsumableLib.DEFAULT_VALUE;
			if (color == "rainbow") value = 100;
			var description:String = "This bottle of dye will allow you to change the color of your hair.  Of course if you don't have hair, using this would be a waste.";
			super(id, shortName, longName, value, description);
		}

		override public function canUse():Boolean {
			return true;
		}

		override public function useItem():Boolean {
			clearOutput();
			game.menu();

			if (game.player.hairLength > 0) {
				outputText("You have " + game.player.hairColor + " hair.");
				if (game.player.hairColor != _color) game.addButton(0, "Hair", dyeHair);
				else game.addButtonDisabled(0, "Hair", "Your already have " + game.player.hairColor + " hair!");
			} else {
				outputText("You have no hair.");
				game.addButtonDisabled(0, "Hair", "You are bald!");
			}

			if (game.player.skinType == 1) {
				outputText("\n\nYou have " + game.player.furColor + " fur.");
				if (game.player.furColor != _color) game.addButton(1, "Fur", dyeFur);
				else game.addButtonDisabled(1, "Fur", "Your already have " + _color + " fur!");
			} else {
				outputText("\n\nYou have no fur.");
				game.addButtonDisabled(1, "Fur", "You have no fur!");
			}

			game.addButton(4, "Nevermind", dyeCancel);
			return true;
		}

		private function dyeHair():void {
			clearOutput();
			if (game.player.hairLength == 0) {
				outputText("You rub the dye into your bald head, but it has no effect.");
			}
			else if (game.player.hairColor.indexOf("rubbery") != -1 || game.player.hairColor.indexOf("latex-textured") != -1) {
				outputText("You massage the dye into your " + game.player.hairDescript() + " but the dye cannot penetrate the impermeable material your hair is composed of.");
			}
			else {
				outputText("You rub the dye into your " + game.player.hairDescript() + ", then use a bucket of cool lakewater to rinse clean a few minutes later.  ");
				game.player.hairColor = _color;
				outputText("You now have " + game.player.hairDescript() + ".");
				if (game.player.lust > 50) {
					outputText("\n\nThe cool water calms your urges somewhat, letting you think more clearly.");
					game.dynStats("lus", -15);
				}
			}
			game.inventory.itemGoNext();
		}

		private function dyeFur():void {
			clearOutput();
			outputText("You rub the dye into your fur, then use a bucket of cool lakewater to rinse clean a few minutes later.  ");
			game.player.furColor = _color;
			outputText("You now have " + game.player.furColor + " fur.");
			if (game.player.lust > 50) {
				outputText("\n\nThe cool water calms your urges somewhat, letting you think more clearly.");
				game.dynStats("lus", -15);
			}
			game.inventory.itemGoNext();
		}

		private function dyeCancel():void {
			clearOutput();
			outputText("You put the dye away.\n\n");
			game.inventory.returnItemToInventory(this);
		}
	}

}

license: unknown


code:
/**
 * Created by aimozg on 11.01.14.
 */
package classes.Items.Consumables
{
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Consumable;
	import classes.internals.Utils;
	import classes.Player;

	public final class HairExtensionSerum extends Consumable {

		public function HairExtensionSerum() {
			super("ExtSerm", "ExtSerm", "a bottle of hair extension serum", 6, "This is a bottle of foamy pink liquid, purported by the label to increase the speed at which the user's hair grows.");
		}

		override public function canUse():Boolean {
			if (game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED] <= 2) return true;
			outputText("No way!  Your head itches like mad from using the rest of these, and you will NOT use another.\n");
			return false;
		}

		override public function useItem():Boolean {
			outputText("You open the bottle of hair extension serum and follow the directions carefully, massaging it into your scalp and being careful to keep it from getting on any other skin.  You wash off your hands with lakewater just to be sure.");
			if (game.player.hairType == HAIR_BASILISK_SPINES) {
				outputText("\n\nYou wait a while, expecting a tingle on your head, but nothing happens. You sigh as you realize, that your "
				          + game.player.hairColor + " basilisk spines are immune to the serum ...");
				return false;
			}
			if (game.flags[kFLAGS.INCREASED_HAIR_GROWTH_TIME_REMAINING] <= 0) {
				outputText("\n\nThe tingling on your head lets you know that it's working!");
				game.flags[kFLAGS.INCREASED_HAIR_GROWTH_TIME_REMAINING] = 7;
				game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED] = 1;
			}
			else if (game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED] == 1) {
				outputText("\n\nThe tingling intensifies, nearly making you feel like tiny invisible faeries are massaging your scalp.");
				game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED]++;
			}
			else if (game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED] == 2) {
				outputText("\n\nThe tingling on your scalp is intolerable!  It's like your head is a swarm of angry ants, though you could swear your hair is growing so fast that you can feel it weighing you down more and more!");
				game.flags[kFLAGS.INCREASED_HAIR_GROWTH_SERUM_TIMES_APPLIED]++;
			}
			if (game.flags[kFLAGS.HAIR_GROWTH_STOPPED_BECAUSE_LIZARD] > 0 && game.player.hairType != HAIR_ANEMONE) {
				game.flags[kFLAGS.HAIR_GROWTH_STOPPED_BECAUSE_LIZARD] = 0;
				outputText("\n\nSomehow you know that your " + game.player.hairDescript() + " is growing again.");
			}
			if (game.flags[kFLAGS.INCREASED_HAIR_GROWTH_TIME_REMAINING] < 7) game.flags[kFLAGS.INCREASED_HAIR_GROWTH_TIME_REMAINING] = 7;
			return false;
		}
	}
}


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

	public final class KitsuneGift extends Consumable {

		public function KitsuneGift() {
			super("KitGift", "KitGift", "a kitsune's gift", 0, "A small square package given to you by a forest kitsune.  It is wrapped up in plain white paper and tied with a string.  Who knows what's inside?");
		}

		override public function useItem():Boolean {
			clearOutput();
			outputText("Curiosity gets the best of you, and you decide to open the package.  After all, what's the worst that could happen?\n\n");
			//Opening the gift randomly results in one of the following:
			switch (Utils.rand(13)) {
			//[Fox Jewel]
				case 0:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and to your delight, sitting in the center is a small teardrop-shaped jewel!");
				outputText("\n\nYou've received a shining Fox Jewel from the kitsune's gift!  How generous!  ");
				game.inventory.takeItem(game.consumables.FOXJEWL, game.inventory.inventoryMenu);
				return(true);

			//[Fox Berries]
				case 1:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and to your delight, there is a small cluster of orange-colored berries sitting in the center!");
				outputText("\n\nYou've received a fox berry from the kitsune's gift!  How generous!  ");
				//add Fox Berries to inventory
				game.inventory.takeItem(game.consumables.FOXBERY, game.inventory.inventoryMenu);
				return(true);

			//[Gems]
				case 2:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and to your delight, it is filled to the brim with shining gems!");
				var gems:int = 2 + Utils.rand(20);
				outputText("\n\nYou've received " + Utils.num2Text(gems) + " shining gems from the kitsune's gift!  How generous!");
				game.player.gems += gems;
				//add X gems to inventory
				game.statScreenRefresh();
				break;

			//[Kitsune Tea/Scholar's Tea] //Just use Scholar's Tea and drop the "trick" effect if you don't want to throw in another new item.
				case 3:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and to your delight, it contains a small bag of dried tea leaves!");
				outputText("\n\nYou've received a bag of tea from the kitsune's gift!  How thoughtful!  ");
				//add Kitsune Tea/Scholar's Tea to inventory
				game.inventory.takeItem(game.consumables.SMART_T, game.inventory.inventoryMenu);
				return(true);

			//[Hair Dye]
				case 4:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and to your delight, it contains a small vial filled with hair dye!");
				var itype:Consumable = [
					game.consumables.RED_DYE,
					game.consumables.BLOND_D,
					game.consumables.BLACK_D,
					game.consumables.WHITEDY
				][Utils.rand(4)];

				outputText("\n\nYou've received " + itype.longName + " from the kitsune's gift!  How generous!  ");
				//add <color> Dye to inventory
				game.inventory.takeItem(itype, game.inventory.inventoryMenu);
				return(true);

			//[Knowledge Spell]
				case 5:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, but it seems like there's nothing else inside.  As you peer into the box, a glowing circle filled with strange symbols suddenly flashes to life!  Light washes over you, and your mind is suddenly assaulted with new knowledge...  and the urge to use that knowledge for mischief!");

				outputText("\n\nThe kitsune has shared some of its knowledge with you!  But in the process, you've gained some of the kitsune's promiscuous trickster nature...");
				//Increase INT and Libido, +10 LUST
				game.dynStats("int", 4, "sen", 2, "lus", 10);
				break;

			//[Thief!]
				case 6:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and sitting in the center is an artfully crafted paper doll.  Before your eyes, the doll springs to life, dancing about fancifully.  Without warning, it leaps into your item pouch, then hops away and gallavants into the woods, carting off a small fortune in gems.");

				outputText("\n\nThe kitsune's familiar has stolen your gems!");
				// Lose X gems as though losing in battle to a kitsune
				game.player.gems -= 2 + Utils.rand(15);
				game.statScreenRefresh();
				break;

			//[Prank]
				case 7:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and sitting in the center is an artfully crafted paper doll.  Before your eyes, the doll springs to life, dancing about fancifully.  Without warning, it pulls a large calligraphy brush from thin air and leaps up into your face, then hops away and gallavants off into the woods.  Touching your face experimentally, you come away with a fresh coat of black ink on your fingertips.");

				outputText("\n\nThe kitsune's familiar has drawn all over your face!  The resilient marks take about an hour to completely scrub off in the nearby stream.  You could swear you heard some mirthful snickering among the trees while you were cleaning yourself off.");
				//Advance time 1 hour, -20 LUST
				game.dynStats("lus", -20);
				break;

			//[Aphrodisiac]
				case 8:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and sitting in the center is an artfully crafted paper doll.  Before your eyes, the doll springs to life, dancing about fancifully.  Without warning, it tosses a handful of sweet-smelling pink dust into your face, then hops over the rim of the box and gallavants off into the woods.  Before you know what has happened, you feel yourself growing hot and flushed, unable to keep your hands away from your groin.");
				outputText("\n\nOh no!  The kitsune's familiar has hit you with a powerful aphrodisiac!  You are debilitatingly aroused and can think of nothing other than masturbating.");
				//+100 LUST
				game.dynStats("lus", 100, "resisted", false);
				break;

			//[Wither]
				case 9:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, and sitting in the center is an artfully crafted paper doll.  Before your eyes, the doll springs to life, dancing about fancifully.  Without warning, it tosses a handful of sour-smelling orange powder into your face, then hops over the rim of the box and gallavants off into the woods.  Before you know what has happened, you feel the strength draining from your muscles, withering away before your eyes.");
				outputText("\n\nOh no!  The kitsune's familiar has hit you with a strength draining spell!  Hopefully it's only temporary...");
				game.dynStats("str", -5, "tou", -5);
				break;

			//[Dud]
				case 10:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, but to your disappointment, the only other contents appear to be nothing more than twigs, leaves, and other forest refuse.");
				outputText("\n\nIt seems the kitsune's gift was just a pile of useless junk!  What a ripoff!");
				break;

			//[Dud...  Or is it?]
				case 11:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, but to your disappointment, the only other contents appear to be nothing more than twigs, leaves, and other forest refuse.  Upon further investigation, though, you find a shard of shiny black chitinous plating mixed in with the other useless junk.");
					outputText("\n\nAt least you managed to salvage a shard of black chitin from it...  ");
				game.inventory.takeItem(game.useables.B_CHITN, game.inventory.inventoryMenu);
				return(true);

				case 12:
				outputText("As the paper falls away, you carefully lift the cover of the box, your hands trembling nervously.  The inside of the box is lined with purple velvet, but to your disappointment, the only other contents appear to be nothing more than twigs, leaves, and other forest refuse.  Upon further investigation, though, you find a pinky round orb.");
					outputText("\n\nAt least you managed to a loli pop...  ");
				game.inventory.takeItem(game.consumables.LOLIPOP, game.inventory.inventoryMenu);
				return(true);

				default: trace("Kitsune's gift roll foobar...");
			}
			return(false); //Any other case does not have a sub-menu.
		}
	}
}


code:
package classes.Items.Consumables
{

	import classes.Appearance;
	import classes.PerkLib;
	import classes.Player;
	import classes.internals.Utils;
	import classes.Items.Consumable;

	/*
	 * When taken, this item gives a perk called "Lolilicious Body"
	 * This perk, the item do the following.
	 * Shirks body to child size
	 * Shirks breast to A cup,
	 *
	 * Add new reactions to scene
	 *
	 * aim for Feminitity at 10% (Allows a bit of feminitiy but doesn't give her the body of a minx.
	 * Look into weight. Maybe allow heavy but reduce food gained.
	 *
	 *
	 *
	 * Should it:
	 * decrease max streath?
	 * increase breast sensitivity and/or stat?
	 * Increase breast size to A cup?
	 * Decrease ball size?
	 * Decrease cocks?(would prevent shota transform from this item.)
	 * Also "Shota", my man. (CoCanon)
	 * Length hair or increase hair growth(is natural hair growth a thing?)
	 *
	 */
	public class LoliPop  extends Consumable
	{

		public function LoliPop()
		{
			super("Lolipop", "Lolipop", "A peiece of colorful, hard, round, candy, on a wooden stick. ", 1000, "Gives off a smell of sweetness. It reminds you of the treats back home.");
		}

		override public function canUse():Boolean {
			if (game.player.findPerk(PerkLib.LoliliciousBody) < 0) return true; //enforces the player can't use it while they have the perk Loliusious body
			outputText("Ugh.  This stuff is so, like... last year.  Maybe you can find someone else to feed it to?\n\n"); //TODO, this is bimbo text and needs to be change.
			return false;
		}

		override public function useItem():Boolean {

			//Haven't touched.
			if (game.player.findPerk(PerkLib.LoliliciousBody) < 0) {
				outputText("You smile as the Lolipop slides against your tongue, already feeling a rush of energy as your saliva mixes with the sweet treat. A lengthy giggle escapes your lips as you focus on the Lolipop sliding up and down your tongue.");
				if (game.player.tallness < 36) {
					outputText(" ...Did the ground just get farther away?  You glance down and realize, you're growing!  You're nearly 3'0\" feet tall. You feel like you've grown up a bit. You didn't expect that to happen!");
					game.player.tallness = 36;
				}
				else if (game.player.tallness < 48) {
					outputText(" ...Did the ground just get closer?  You glance down and realize, you're shrinking!  You're nearly 4'0\" feet tall. You feel like you've become younger. You didn't expect that to happen!");
					game.player.tallness = 48;
				}

				if (game.player.biggestTitSize() > 1) {
					if (game.player.biggestTitSize() > 1)
						outputText("  Your breast feels like their frozen in ice as you start to grope at them harshly as they start shrinking. ");
					else outputText("  You feel a tingling inside your breasts.  ");
					outputText("They quiver ominously, and you can't help but tug at your tits, expecting your breast to start to grow. The freezing sensation stops as you're left with A-cup to enjoy.");
					game.player.breastRows[0].breastRating = 1;
				}

				//Vagina , ball, and dick.
				if (!game.player.hasVagina()) {
					outputText("  Before you can even take a breath, an extremely peculiar sensation emanates from your crotch.  You can't see through your " + game.player.armorName + ", but you can certainly feel the vagina splitting " + (game.player.balls > 0 ? "from behind your testicles" : "your groin") + ".  Luckily, the cunt-forming doesn't yield any discomfort - on the contrary, you feel yourself falling farther into your chemically-dulled, libido-fueled rut.");
					if (game.player.hipRating < 12 || game.player.buttRating < 12) outputText("  As if realizing the necessity of womanly proportions to attract the hard cocks your body now craves, your waist pinches slightly inward and your hips and butt swell.  You can't help but run a hand across your newly-feminized pelvis, admiring it.");
					game.player.createVagina();
					game.player.clitLength = 0.25;
					if (game.player.hipRating < 12) game.player.hipRating = 12;
					if (game.player.buttRating < 12) game.player.buttRating = 12;
				}

				outputText("\n\n");
				outputText("A wave of numbness rolls through your features, alerting you that another change is happening.  You reach up to your feel your jaw narrowing, becoming... younger? You're probably pretty cute now!\n\n");
				if (game.player.femininity < 5  ) game.player.femininity = 5;
				else if (game.player.femininity >15  )game.player.femininity = 15;

			}
			//Haven't touched.
			/*else {

				outputText("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!  ");
				if (!game.player.hasVagina()) {
					game.player.createVagina();
					game.player.clitLength = 0.25;
					game.player.vaginas[0].vaginalWetness = Appearance.VAGINA_WETNESS_SLICK;
					if (game.player.isTaur()) outputText("Wait!? Wet? You wish you could touch yourself between the " + game.player.legs() + ", but you can tell from the fluid running down your hind-legs just how soaked your new vagina is.");
					else outputText("Wait!?  Wet?  You touch yourself between the " + game.player.legs() + " and groan when your fingers sink into a sloppy, wet cunt.");
				}
				else {

					else {
						outputText("You sink your fingers into your sloppy, wet cunt with a groan of satisfaction.");
					}
				}
				if (game.player.balls > 0) {
					outputText("\n\nThere's a light pinch against your [sack] that makes you gasp in surprise, followed by an exquisite tightness that makes your [vagina] drool.  Looking down, you see your balls slowly receding into your body, leaving nothing behind but your puffy mons.");
					game.player.balls = 0;
					game.player.ballSize = 3;
					game.player.cumMultiplier = 2;
				}
				if (game.player.hasCock()) {
					outputText("\n\n[EachCock] seems to be responding to the liqueur in its own way.  Clenching and relaxing obscenely, your genitals begin to drizzle cum onto the ground in front of you, throwing you into paroxysms of bliss.  The flow of cum is steady but weak, and each droplet that leaves you lets [eachCock] go more flaccid.  Even once you're soft and little, it doesn't stop.  You cum your way down to nothing, a tiny droplet heralding your new, girlish groin.  You no longer have ");
					if (game.player.cockTotal() == 1) outputText("a penis");
					else outputText("penises");
					outputText("!");
					while (game.player.hasCock()) {
						game.player.removeCock(0, 1);
					}
				}
				outputText("  Somehow, you feel like you could seduce anyone right now!\n\n");

				outputText("Another bubbly giggle bursts from your lips, which you then lick hungrily.  You, like, totally want some dick to suck!  Wow, that came out of left field.  You shake your head and try to clear the unexpected, like, words from your head but it's getting kind of hard.  Omigosh, you feel kind of like a dumb bimbo after, like, drinking that weird booze.  Oh, well, it doesn't matter anyhow – you can, like, still stop the demons and stuff.  You'll just have to show off your sexy bod until they're offering to serve you.\n\n");

				outputText("You sigh and run one hand over your " + game.player.nippleDescript(0) + "s");
				if (game.player.breastRows[0].breastRating < 10) {
					game.player.breastRows[0].breastRating += 5 + Utils.rand(5);
					outputText(", surprised at how large and rounded your expanding breasts have become while fresh tit-flesh continues to spill out around your needy fingers.  They feel so supple and soft, but when you let them go, they still sit fairly high and firm on your chest.  The newer, more generous, " + game.player.breastCup(0) + " cleavage has you moaning with how sensitive it is, pinching a nipple with one hand ");
				}
				else {
					game.player.breastRows[0].breastRating += 5 + Utils.rand(5);
					outputText(", admiring how sensitive they're getting.  The big breasts start getting bigger and bigger, soft chest-flesh practically oozing out between your fingers as the squishy mammaries sprout like weeds, expanding well beyond any hand's ability to contain them.  The supple, " + game.player.breastCup(0) + " boobs still manage to sit high on your chest, almost gravity defying in their ability to generate cleavage.  You pinch a nipple with one hand ");
				}
				game.dynStats("sen", 20);
				outputText("while the other toys with the juicy entrance of your folds.  Mmmm, it, like, feels too good not to touch yourself, and after being worried about getting all dumb and stuff, you need to relax.  Thinking is hard, but sex is so easy and, like, natural!  You lean back and start grunting as you plunge four fingers inside yourself, plowing your " + game.player.vaginaDescript(0) + " like no tomorrow.  By now, your " + game.player.clitDescript() + " is throbbing, and you give it an experimental ");
				if (game.player.clitLength >= 3) outputText("jerk ");
				else outputText("caress ");
				outputText("that makes your " + game.player.legs() + " give out as you cum, splattering female fluids as you convulse nervelessly on the ground.\n\n");

				outputText("Though the orgasm is intense, you recover a few moments later feeling refreshed, but still hot and horny.  Maybe you could find a partner to fuck?  After all, sex is, like, better with a partner or two.  Or that number after two.  You brush a lengthy, platinum blonde strand of hair out of your eyes and lick your lips - you're ready to have some fun!\n\n");

				if (game.player.hipRating < 12 || game.player.buttRating < 12) {
					outputText("As you start to walk off in search of a sexual partner, you feel your center of balance shifting.");
					if (game.player.hipRating < 12 && game.player.buttRating < 12) {
						outputText("  Your ass and hips inflate suddenly, forcing you to adopt a slow, swaying gait.  You find that rolling your hips back and forth comes naturally to you.  You make sure to squeeze your butt-muscles and make your curvy tush jiggle as you go.");
						game.player.buttRating = 12;
						game.player.hipRating = 12;
					}
					else if (game.player.hipRating < 12) {
						outputText("  Your hips widen suddenly, forcing you to adopt a slow, swaying gait.  You find that rolling yours hips back and forth comes naturally to you, and your big, obscene ass seems to jiggle all on its own with every step you take.");
						game.player.hipRating = 12;
					}
					else {
						outputText("  Your [butt] swells dramatically, the puffy cheeks swelling with newfound weight that jiggles along with each step.  Clenching your glutes to make the posh cheeks jiggle a little more enticingly becomes second nature to you in a few seconds.");
						game.player.buttRating = 12;
					}
					outputText("\n\n");
				}
				if (game.player.tone > 0) {
					outputText("Like, weirdest of all, your muscles seem to be vanishing!  Before your eyes, all muscle tone vanishes, leaving your body soft and gently curvy.  You poke yourself and giggle!  Everyone's totally going to want to, like, rub up against you at every opportunity.  Your thighs are so soft you bet you could squeeze a pair of dicks to orgasm without even touching your moist cunny.");
					game.player.tone = 0;
					if (game.player.str >= 30) {
						if (game.player.str >= 90) game.dynStats("str", -10);
						if (game.player.str >= 70) game.dynStats("str", -10);
						if (game.player.str >= 50) game.dynStats("str", -10);
						game.dynStats("str", -5);
						outputText("  It does get a bit harder to carry yourself around with your diminished strength, but that's, like, what big strong hunks are for anyways!  You can just flirt until one of them volunteers to help out or something!  Besides, you don't need to be strong to jerk off cocks or finger slutty pussies!");
					}
					outputText("\n\n");
				}
				if (game.player.findPerk(PerkLib.BimboBody) < 0) {
					outputText("(Bimbo Body - Perk Gained!)\n");
					game.player.createPerk(PerkLib.BimboBody, 0, 0, 0, 0);
				}
				if (game.player.findPerk(PerkLib.BimboBrains) < 0) {
					outputText("(Bimbo Brains - Perk Gained!)\n");//int to 20.  max int 50)
					game.player.createPerk(PerkLib.BimboBrains, 0, 0, 0, 0);
					if (game.player.inte > 21) {
						var boost:Number = game.player.inte / 5;
						game.player.inte = 21 + boost;
					}
				}
				game.player.orgasm();
				game.dynStats("int", -1, "lib", 4, "sen", 25);
				//FULL ON BITCHFACE
				game.player.modFem(100, 100);
				//Body
				//Tease/Seduce Boost
				//*boosts min lust and lust resistance)
				//*Tit size
				//Brain
				//Max int - 50
			}*/

			game.player.genderCheck();
			return(false);
		}

	}

}


code:
/**
 * Created by aimozg on 11.01.14.
 */
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.PerkLib;
	import classes.Player;
	import classes.StatusEffects;
	import classes.internals.Utils;

	public final class LustStick extends Consumable {

		public function LustStick() {
			super("LustStk", "LustStk", "a tube of golden lipstick", ConsumableLib.DEFAULT_VALUE, "This tube of golden lipstick is used by harpies to keep males aroused.  It has aphrodisiac properties on anyone with male genitalia and is most effective when applied to the lips or groin.");
		}

		override public function canUse():Boolean {
			if (game.player.hasCock() && game.player.findPerk(PerkLib.LuststickAdapted) < 0) {
				outputText("You look at the tube of lipstick, but get the idea it would be a pretty bad idea to smear a thick coating of cock-hardening aphrodisiacs over your own lips.  ");
				return false;
			}
			return true;
		}

		override public function useItem():Boolean {
			if (game.player.findStatusEffect(StatusEffects.LustStickApplied) >= 0) {
				game.player.addStatusValue(StatusEffects.LustStickApplied, 1, Utils.rand(12) + 12);
				outputText("You carefully open the sweet-smelling tube and smear the lipstick over the coat you already have on your lips.  <b>No doubt another layer will make it last even longer!</b>  ");
				outputText("You finish and pucker your lips, feeling fairly sexy with your new, thicker makeup on.\n\n");
			}
			else {
				game.player.createStatusEffect(StatusEffects.LustStickApplied, 24, 0, 0, 0);
				outputText("You carefully open the sweet-smelling tube and smear the lipstick over your lips.  ");
				if (game.player.hasCock()) outputText("It tingles a little, but the drugs have little to no effect on you now.");
				else outputText("Honestly, it amazes you that something as little as a kiss can make a man putty in your hands.");
				outputText("  You finish and pucker your lips, feeling fairly sexy with your new makeup on.\n\n");
			}
			game.dynStats("lus", 1);
			return(false);
		}
	}
}


code:
/**
 * Created by aimozg on 18.01.14.
 */
package classes.Items.Consumables
{
	import classes.*;
	import classes.internals.Utils;
	import classes.Items.Consumable;

	public class OvipositionElixir extends Consumable {

		public function OvipositionElixir() {
			super("OviElix", "Ovi Elixir", "a hexagonal crystal bottle tagged with an image of an egg", 30, "This hexagonal crystal bottle is filled with a strange green fluid.  A tag with a picture of an egg is tied to the neck of the bottle, indicating it is somehow connected to egg-laying.");
		}

		override public function canUse():Boolean {
			if (game.player.hasVagina()) return true;
			outputText("You pop the cork and prepare to drink the stuff, but the smell nearly makes you gag.  You cork it hastily.\n\n");
			return false;
		}
		//Oviposition Elixer!
		/* Notes on StatusEffects.Eggs
		 v1 = egg type.
		 v2 = size - 0 for normal, 1 for large
		 v3 = quantity
		 EGG TYPES-
		 0 - brown - ass expansion
		 1 - purple - hip expansion
		 2 - blue - vaginal removal and/or growth of existing maleness
		 3 - pink - dick removal and/or fertility increase.
		 4 - white - breast growth.  If lactating increases lactation.
		 5 - rubbery black
		 */
		override public function useItem():Boolean {
			game.player.slimeFeed();
			outputText("You pop the cork and gulp down the thick greenish fluid.  The taste is unusual and unlike anything you've tasted before.");
			if (game.player.pregnancyType == PregnancyStore.PREGNANCY_GOO_STUFFED) {
				outputText("\n\nFor a moment you feel even more bloated than you already are.  That feeling is soon replaced by a dull throbbing pain.  It seems that with Valeria's goo filling your womb the ovielixir is unable to work its magic on you.");
				return(false);
			}
			if (game.player.pregnancyType == PregnancyStore.PREGNANCY_WORM_STUFFED) {
				outputText("\n\nFor a moment you feel even more bloated than you already are.  That feeling is soon replaced by a dull throbbing pain.  It seems that with the worms filling your womb the ovielixir is unable to work its magic on you.");
				return(false);
			}
			if (game.player.pregnancyIncubation == 0) { //If the player is not pregnant, get preggers with eggs!
				outputText("\n\nThe elixir has an immediate effect on your belly, causing it to swell out slightly as if pregnant.  You guess you'll be laying eggs sometime soon!");
				game.player.knockUp(PregnancyStore.PREGNANCY_OVIELIXIR_EGGS, PregnancyStore.INCUBATION_OVIELIXIR_EGGS, 1, 1);
				game.player.createStatusEffect(StatusEffects.Eggs, Utils.rand(6), 0, Utils.rand(3) + 5, 0);
				return(false);
			}
			var changeOccurred:Boolean = false;
			if (game.player.pregnancyType == PregnancyStore.PREGNANCY_OVIELIXIR_EGGS) { //If player already has eggs, chance of size increase!
				if (game.player.findStatusEffect(StatusEffects.Eggs) >= 0) {
					//If eggs are small, chance of increase!
					if (game.player.statusEffectv2(StatusEffects.Eggs) == 0) {
						//1 in 2 chance!
						if (Utils.rand(3) == 0) {
							game.player.addStatusValue(StatusEffects.Eggs, 2, 1);
							outputText("\n\nYour pregnant belly suddenly feels heavier and more bloated than before.  You wonder what the elixir just did.");
							changeOccurred = true;
						}
					}
					//Chance of quantity increase!
					if (Utils.rand(2) == 0) {
						outputText("\n\nA rumble radiates from your uterus as it shifts uncomfortably and your belly gets a bit larger.");
						game.player.addStatusValue(StatusEffects.Eggs,3, Utils.rand(4) + 1);
						changeOccurred = true;
					}
				}
			}
			if (!changeOccurred && game.player.pregnancyIncubation > 20 && game.player.pregnancyType != PregnancyStore.PREGNANCY_BUNNY) { //If no changes, speed up pregnancy.
				outputText("\n\nYou gasp as your pregnancy suddenly leaps forwards, your belly bulging outward a few inches as it gets closer to time for birthing.");
				var newIncubation:int = game.player.pregnancyIncubation - int(game.player.pregnancyIncubation * 0.3 + 10);
				if (newIncubation < 2) newIncubation = 2;
				game.player.knockUpForce(game.player.pregnancyType, newIncubation);
				trace("Pregger Count New total:" + game.player.pregnancyIncubation);
			}
			return(false);
		}
	}
}


code:
/**
 * Created by K.Quesom 11.06.14
 */
package classes.Items.Consumables
{
	import classes.GlobalFlags.kFLAGS;
    import classes.Player;
	import classes.PregnancyStore;
	import classes.StatusEffects;
    import classes.internals.Utils;
	import classes.Items.Consumable;

	public class PhoukaWhiskey extends Consumable {

		public function PhoukaWhiskey() {
			super("P_Whsky", "Ph. Whiskey", "a small bottle of whiskey", 20, "A small, corked glass bottle with a dark amber liquid inside.  The whiskey smells strongly of peat.");
		}

        override public function canUse():Boolean {
			switch (phoukaWhiskeyAcceptable(game.player)) {
				case -4:
					outputText("You stare at the bottle for a moment, but decide not to risk harming one of the children growing inside you.\n\n");
					return false;
				case -3:
					outputText("You stare at the bottle for a moment, but decide not to risk harming either of the children growing inside you.\n\n");
					return false;
				case -2:
					outputText("You stare at the bottle for a moment, but decide not to risk harming the child growing inside your colon.\n\n");
					return false;
				case -1:
					outputText("You stare at the bottle for a moment, but decide not to risk harming the child growing inside your womb.\n\n");
					return false;
				default:
			}
            return true; //Zero and up will return true
        }

		override public function useItem():Boolean {
			game.player.slimeFeed();
			switch (phoukaWhiskeyDrink(game.player)) {
				case 0: //Player isn't pregnant
					outputText("You uncork the bottle and drink some whiskey, hoping it will let you relax for a while.\n\nIt's strong stuff and afterwards you worry a bit less about the future.  Surely things will right themselves in the end.");
					game.dynStats("cor", Utils.rand(2) + 1, "lus", Utils.rand(8) + 1); //These gains are permanent
					break;
				case 1: //Child is a phouka or satyr, loves alcohol
					outputText("You uncork the bottle and drink some whiskey, hoping it will help with the gnawing hunger for alcohol you've had since this baby started growing inside you.\n\nYou down the booze in one shot and a wave of contentment washes over you.  It seems your passenger enjoyed the meal.");
					break;
				case 2: //Child is a faerie but will become a phouka with this drink
					outputText("At first you feel your baby struggle against the whiskey, then it seems to grow content and enjoy it.");
					break;
				case 3: //Child is a faerie, hates phouka whiskey
					outputText("You feel queasy and want to throw up.  There's a pain in your belly and you realize the baby you're carrying didn't like that at all.");
			}
			game.flags[kFLAGS.PREGNANCY_CORRUPTION]++; //Faerie or phouka babies become more corrupted, no effect if the player is not pregnant or on other types of babies
			phoukaWhiskeyAddStatus(game.player);
			return(false);
        }

		public function phoukaWhiskeyAcceptable(player:Player):int
		{ //This function provides a single common test that can be used both by this class and the PhoukaScene class
			//Returns:	0 = canUse (not pregnant), 1 = canUse (single pregnancy, womb), 2 = canUse (single pregnancy, colon), 3 = canUse (double pregnancy, both OK),
			//			-1 = No (single pregnancy, womb), -2 = No (single pregnancy, colon), -3 = No (double pregnancy, both not OK), -4 = No (double pregnancy, one OK, one not)
			if (player.pregnancyIncubation == 0) {
				if (player.buttPregnancyIncubation == 0) return 0; //No baby. Simplest, most common case
				if (player.buttPregnancyType == PregnancyStore.PREGNANCY_SATYR) return 2;
				return -2;
			}
			if (player.buttPregnancyIncubation == 0) { //Single pregnancy, carried in the womb
				if (player.pregnancyType == PregnancyStore.PREGNANCY_SATYR) return 1;
				if (player.pregnancyType == PregnancyStore.PREGNANCY_FAERIE) return 1;
				return -1;
			}
			//Double pregnancy
			var wombBabyLikesAlcohol:Boolean = (player.pregnancyType == PregnancyStore.PREGNANCY_SATYR) || (player.pregnancyType == PregnancyStore.PREGNANCY_FAERIE);
			var colonBabyLikesAlcohol:Boolean = (player.buttPregnancyType == PregnancyStore.PREGNANCY_SATYR);
			if (wombBabyLikesAlcohol && colonBabyLikesAlcohol) return 3;
			if (!wombBabyLikesAlcohol && !colonBabyLikesAlcohol) return -3;
			return -4;
		}

		public function phoukaWhiskeyDrink(player:Player):int
		{ //This function provides a single common test that can be used both by this class and the PhoukaScene class
			//Returns:	0 = Player is not pregnant, 1 = Player is pregnant with a satyr or phouka, 2 = Player is pregnant with a faerie that will become a phouka with this drink,
			//			3 = Player is pregnant with a faerie that will remain a faerie after this drink
			if ((player.pregnancyIncubation == 0) && (player.buttPregnancyIncubation == 0)) return 0;
			if (player.pregnancyType == PregnancyStore.PREGNANCY_FAERIE) {
				if (game.flags[kFLAGS.PREGNANCY_CORRUPTION] == 0) return 2;
				if (game.flags[kFLAGS.PREGNANCY_CORRUPTION] < 0) return 3;
			}
			return 1; //Pregnancy has to be either a satyr or a phouka
		}

        public function phoukaWhiskeyAddStatus(player:Player):void
        {
			var libidoChange:int = (player.lib + 25 > 100 ? 100 - player.lib : 25);
			var sensChange:int = (player.sens < 10 ? player.sens : 10);
			var speedChange:int = (player.spe < 20 ? player.spe : 20);
			var intChange:int = (player.inte < 20 ? player.inte : 20);
			if (player.findStatusEffect(StatusEffects.PhoukaWhiskeyAffect) >= 0) {
				var drinksSoFar:int = player.statusEffectv2(StatusEffects.PhoukaWhiskeyAffect);
				if (drinksSoFar < 4)
					player.addStatusValue(StatusEffects.PhoukaWhiskeyAffect, 1, 8 - (2 * drinksSoFar));
				else
					player.addStatusValue(StatusEffects.PhoukaWhiskeyAffect, 1, 1); //Always get at least one more hour of drunkenness
				player.addStatusValue(StatusEffects.PhoukaWhiskeyAffect, 2, 1);
				player.addStatusValue(StatusEffects.PhoukaWhiskeyAffect, 3, 256 * libidoChange + sensChange);
				player.addStatusValue(StatusEffects.PhoukaWhiskeyAffect, 4, 256 * speedChange + intChange);
				outputText("\n\nOh, it tastes so good.  This stuff just slides down your throat.");
				game.dynStats("lib", libidoChange, "sens", -sensChange, "spe", -speedChange, "int", -intChange);
			}
			else { //First time
				player.createStatusEffect(StatusEffects.PhoukaWhiskeyAffect, 8, 1, 256 * libidoChange + sensChange, 256 * speedChange + intChange);
					//The four stats we’re affecting get paired together to save space. This way we don’t need a second StatusEffect to store more info.
				game.dynStats("lib", libidoChange, "sens", -sensChange, "spe", -speedChange, "int", -intChange);
			}
			game.statScreenRefresh();
        }

		public function phoukaWhiskeyExpires(player:Player):void
		{
			var numDrunk:int = player.statusEffectv2(StatusEffects.PhoukaWhiskeyAffect);
			var libidoSensCombined:int = player.statusEffectv3(StatusEffects.PhoukaWhiskeyAffect);
			var intSpeedCombined:int = player.statusEffectv4(StatusEffects.PhoukaWhiskeyAffect);

			var sensChange:int = libidoSensCombined & 255;
			var libidoChange:int = (libidoSensCombined - sensChange) / 256;
			var intChange:int = intSpeedCombined & 255;
			var speedChange:int = (intSpeedCombined - intChange) / 256;
			game.dynStats("lib", -libidoChange , "sens", sensChange, "spe", speedChange, "int", intChange); //Get back all the stats you lost
			player.removeStatusEffect(StatusEffects.PhoukaWhiskeyAffect);
			if (numDrunk > 3)
				outputText("\nThe dizzy sensation dies away and is replaced by a throbbing pain that starts in your skull and then seems to run all through your body, seizing up your joints and making your stomach turn.  The world feels like it’s off kilter and you aren’t in any shape to face it.  You suppose you could down another whiskey, but right now that doesn’t seem like such a good idea.\n");
			else if (numDrunk > 1)
				outputText("\nThe fuzzy, happy feeling ebbs away.  With it goes the warmth and carefree feelings.  Your head aches and you wonder if you should have another whiskey, just to tide you over\n");
			else
				outputText("\nThe fuzzy, happy feeling ebbs away.  The weight of the world’s problems seems to settle on you once more.  It was nice while it lasted and you wouldn’t mind having another whiskey.\n");
			game.statScreenRefresh();
		}
    }
}


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

	public class PurePearl extends Consumable
	{

		public function PurePearl()
		{

		}

	}

}


code:
/**
 * Created by aimozg on 11.01.14.
 */
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;
	import classes.CockTypesEnum;
	import classes.PerkLib;
	import classes.Player;
	import classes.internals.Utils;

	public final class Reducto extends Consumable {

		public function Reducto() {
			super("Reducto", "Reducto", "a salve marked as 'Reducto'", 30, "This container full of paste can be used to shrink a body part down by a significant amount.");
		}

		override public function canUse():Boolean {
			return true;
		}

//		override public function hasSubMenu():Boolean { return true; } //Only GroPlus and Reducto use this.

		override public function useItem():Boolean {
			var rdtBalls:Function	= (game.player.balls > 0 && game.player.ballSize > 1 ? reductoBalls : null);
			var rdtBreasts:Function	= (game.player.breastRows.length > 0 && game.player.biggestTitSize() > 0 ? reductoBreasts : null);
			var rdtButt:Function	= (game.player.buttRating > 1 ? reductoButt : null);
			var rdtClit:Function	= (game.player.vaginas.length > 0 && game.player.clitLength > 0.25 ? reductoClit : null);
			var rdtCock:Function	= (game.player.cockTotal() > 0 && game.player.biggestCockArea() > 6 ? reductoCock : null);
			var rdtHips:Function	= (game.player.hipRating > 2 ? reductoHips : null);
			var rdtNipples:Function	= (game.player.nippleLength > 0.25 ? reductoNipples : null);
			var rdtHorns:Function	= (game.player.horns > 2 ? shrinkHorns : null);
			clearOutput();
			outputText("You ponder the paste in your hand and wonder what part of your body you would like to shrink.  What will you use it on?");
			game.choices("Balls", rdtBalls, "Breasts", rdtBreasts, "Butt", rdtButt, "Clit", rdtClit, "Cock", rdtCock,
				"Hips", rdtHips, "Nipples", rdtNipples, "Horns", rdtHorns, "", null, "Nevermind", reductoCancel);
			return(true);
		}

		private function reductoBalls():void {
			clearOutput();
			outputText("You smear the foul-smelling paste onto your " + game.player.sackDescript() + ".  It feels cool at first but rapidly warms to an uncomfortable level of heat.\n\n");
			game.player.ballSize -= Utils.rand(4) + 2;
			if (game.player.ballSize < 1) game.player.ballSize = 1;
			outputText("You feel your scrotum shift, shrinking down along with your " + game.player.ballsDescriptLight() + ".  Within a few seconds the paste has been totally absorbed and the shrinking stops.");
			game.dynStats("lib", -2, "lus", -10);
			game.inventory.itemGoNext();
		}

		private function reductoBreasts():void {
			clearOutput();
			outputText("You smear the foul-smelling ointment all over your " + game.player.allBreastsDescript() + ", covering them entirely as the paste begins to get absorbed into your " + game.player.skinDesc + ".\n");
			game.player.shrinkTits(true);
			if (Utils.rand(2) == 0 && game.player.biggestTitSize() >= 1) {
				outputText("\nThe effects of the paste continue to manifest themselves, and your body begins to change again...");
				game.player.shrinkTits(true);
			}
			outputText("\nThe last of it wicks away into your skin, completing the changes.");
			game.dynStats("sen", -2, "lus", -5);
			game.inventory.itemGoNext();
		}

		private function reductoButt():void {
			clearOutput();
			outputText("You smear the foul-smelling paste onto your " + game.player.buttDescript() + ".  It feels cool at first but rapidly warms to an uncomfortable level of heat.\n\n");
			if (game.player.buttRating >= 15) {
				game.player.buttRating -= (3 + int(game.player.buttRating / 3));
				outputText("Within seconds you feel noticeably lighter, and a quick glance shows your ass is significantly smaller.");
			}
			else if (game.player.buttRating >= 10) {
				game.player.buttRating -= 3;
				outputText("You feel much lighter as your " + game.player.buttDescript() + " jiggles slightly, adjusting to its smaller size.");
			}
			else {
				game.player.buttRating -= Utils.rand(3) + 1;
				if (game.player.buttRating < 1) game.player.buttRating = 1;
				outputText("After a few seconds your " + game.player.buttDescript() + " has shrunk to a much smaller size!");
			}
			game.dynStats("lib", -2, "lus", -10);
			game.inventory.itemGoNext();
		}

		private function reductoClit():void {
			clearOutput();
			outputText("You carefully apply the paste to your " + game.player.clitDescript() + ", being very careful to avoid getting it on your " + game.player.vaginaDescript(0) + ".  It burns with heat as it begins to make its effects known...\n\n");
			game.player.clitLength /= 1.7;
			//Set clitlength down to 2 digits in length
			game.player.clitLength = int(game.player.clitLength * 100) / 100;
			outputText("Your " + game.player.clitDescript() + " shrinks rapidly, dwindling down to almost half its old size before it finishes absorbing the paste.");
			game.dynStats("sen", 2, "lus", 10);
			game.inventory.itemGoNext();
		}

		private function reductoCock():void {
			clearOutput();
			if (game.player.cocks[0].cockType == CockTypesEnum.BEE) {
				outputText("The gel produces an odd effect when you rub it into your " + game.player.cockDescript(0) + ".  It actually seems to calm the need that usually fills you.  In fact, as your " + game.player.cockDescript(0) + " shrinks, its skin tone changes to be more in line with yours and the bee hair that covered it falls out.  <b>You now have a human cock!</b>");
				game.player.cocks[0].cockType = CockTypesEnum.HUMAN;
			}
			else {
				outputText("You smear the repulsive smelling paste over your " + game.player.multiCockDescriptLight() + ".  It immediately begins to grow warm, almost uncomfortably so, as your " + game.player.multiCockDescriptLight() + " begins to shrink.\n\n");
				if (game.player.cocks.length == 1) {
					outputText("Your " + game.player.cockDescript(0) + " twitches as it shrinks, disappearing steadily into your " + (game.player.hasSheath() ? "sheath" : "crotch") + " until it has lost about a third of its old size.");
					game.player.cocks[0].cockLength *= 2 / 3;
					game.player.cocks[0].cockThickness *= 2 / 3;
				}
				else { //MULTI
					outputText("Your " + game.player.multiCockDescriptLight() + " twitch and shrink, each member steadily disappearing into your " + (game.player.hasSheath() ? "sheath" : "crotch") + " until they've lost about a third of their old size.");
					for (var i:int = 0; i < game.player.cocks.length; i++) {
						game.player.cocks[i].cockLength		*= 2 / 3;
						game.player.cocks[i].cockThickness	*= 2 / 3;
					}
				}
			}
			game.dynStats("sen", -2, "lus", -10);
			game.inventory.itemGoNext();
		}

		private function reductoHips():void {
			clearOutput();
			outputText("You smear the foul-smelling paste onto your [hips].  It feels cool at first but rapidly warms to an uncomfortable level of heat.\n\n");
			if (game.player.hipRating >= 15) {
				game.player.hipRating -= (3 + int(game.player.hipRating / 3));
				outputText("Within seconds you feel noticeably lighter, and a quick glance at your hips shows they've gotten significantly narrower.");
			}
			else if (game.player.hipRating >= 10) {
				game.player.hipRating -= 3;
				outputText("You feel much lighter as your [hips] shift slightly, adjusting to their smaller size.");
			}
			else {
				game.player.hipRating -= Utils.rand(3) + 1;
				if (game.player.hipRating < 1) game.player.hipRating = 1;
				outputText("After a few seconds your [hips] have shrunk to a much smaller size!");
			}
			game.dynStats("lib", -2, "lus", -10);
			game.inventory.itemGoNext();
		}

		private function reductoNipples():void {
			clearOutput();
			outputText("You rub the paste evenly over your " + game.player.nippleDescript(0) + "s, being sure to cover them completely.\n\n");
			//Shrink
			if (game.player.nippleLength / 2 < 0.25) {
				outputText("Your nipples continue to shrink down until they stop at 1/4\" long.");
				game.player.nippleLength = 0.25;
			}
			else {
				outputText("Your " + game.player.nippleDescript(0) + "s get smaller and smaller, stopping when they are roughly half their previous size.");
				game.player.nippleLength /= 2;
			}
			game.dynStats("sen", -5, "lus", -5);
			game.inventory.itemGoNext();
		}

		public function shrinkHorns():void {
			outputText("You doubt if the reducto is going to work but you apply the foul-smelling paste all over your horns anyways.\n\n");
			outputText("Incredibly, it works and you can feel your horns receding by an inch.")
			game.player.horns -= 1;
			game.inventory.itemGoNext();
		}

		private function reductoCancel():void {
			clearOutput();
			outputText("You put the salve away.\n\n");
			game.inventory.returnItemToInventory(this);
		}
	}
}


code:
/**
 * Created by K.Quesom 11.06.14
 */
package classes.Items.Consumables
{
    import classes.PerkLib;
    import classes.Player;
    import classes.internals.Utils;

    public class RizzaRoot extends SimpleConsumable
    {

        private function rizzaRootEffect(player:Player):void
        {
			var tfSource:String = "rizzaRootEffect";
			var counter:Number = 0;
			clearOutput();
			changes = 0;
			changeLimit = 1;
			if (Utils.rand(2) == 0) changeLimit++;
			if (Utils.rand(3) == 0) changeLimit++;
			if (Utils.rand(4) == 0) changeLimit++;
			if (player.findPerk(PerkLib.HistoryAlchemist) >= 0) changeLimit++;
			if (player.findPerk(PerkLib.TransformationResistance) >= 0) changeLimit--;
			outputText("You chew on the thin red roots.  They have a rubbery texture and the taste is something like lemons and oranges mixed together.  The roots dry out your mouth as you chew them but at the same time they cause a cooling and numbing sensation that’s rather pleasant.");
			if ((changes < changeLimit) && (player.skinType != 0) && (Utils.rand(6) == 0)){
				if (player.skinType == 1)
					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 hairless, or nearly so. You've lost your fur!");
				else 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!");
				else if (player.skinType == 3)
					outputText("\n\nYour " + player.skinDesc + " itches incessantly, and as you scratch it shifts and changes, becoming normal human-like skin. Your skin is once again normal!");
				player.skinDesc = "skin";
				player.skinType = 0;
				changes += 2;
			}
			if ((changes < changeLimit) && (player.earType != 4) && (Utils.rand(4) == 0)){
				player.earType = 4;
				changes++;
				outputText("\n\nA weird tingling runs through your scalp as your " + player.hairDescript() + " shifts slightly.  You reach up and your hand bumps against your new pointed elfin ears.  You bet they look cute!");
			}
			if (Utils.rand(5) == 0) mutations.updateOvipositionPerk(tfSource); // I doubt, that this will ever be affected, but well ... just in case
			if ((changes < changeLimit) && (player.tallness < 108)){
				player.tallness += changeLimit - changes + Utils.rand(2); //Add remaining changes as additional height
				if (player.tallness > 108) player.tallness = 108;
				outputText("\n\nA shiver runs down your spine.  You realize that it, along with the rest of your frame, is now a bit taller.");
			}
			else if (player.tallness >= 108){
				outputText("\n\nYou don’t feel anything happening along your spine.  Perhaps this is as tall as the rizza root can make you.");
			}
        }

        public function RizzaRoot()
        {
            super("RizzaRt", "Rizza Root", "a tube of rizza root strands", rizzaRootEffect, 10, "A small ceramic tube full of fine red root strands.  They smell something like citrus fruit.");
        }

    }

}


code:
package classes.Items.Consumables
{
	import classes.Items.*;
	/**
	 * Satyr Wine, part of the Black Cock by Foxxling
	 * @author Kitteh6660
	 */
	public class SatyrWine extends Consumable
	{

		public function SatyrWine()
		{
			super("SatyrWn", "SatyrWine", "a bottle of satyr wine", 30, "A dark bottle with a brilliant red liquid sloshing around inside. On the label there is a picture of a satyr playing pipes.");
		}

		override public function useItem():Boolean {
			outputText("Feeling parched you tug the cork from a bottle of wine. As you put the bottle to your lips and drink the rich, invigorating liquid you soon find yourself with an empty bottle and a smile. ");
			getGame().player.refillHunger(10);
			getGame().bazaar.blackCock.satyrTFs();
			return false;
		}

	}

}


code:
/**
 * Created by aimozg on 10.01.14.
 */
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Player;

	public class SimpleConsumable extends Consumable {
		private var effect:Function;

		/**
		 * @param effect Function(player:Player)
		 */
		public function SimpleConsumable(id:String, shortName:String, longName:String, effect:Function, value:Number = 0, description:String = null) {
			super(id, shortName, longName, value, description);
			this.effect = effect;
		}

		override public function useItem():Boolean {
			clearOutput();
			effect(game.player);
			return(false); //Any normal consumable does not have a sub-menu. Return false so that the inventory runs the itemDoNext function after useItem.
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.GlobalFlags.kGAMECLASS;
	import classes.internals.Utils;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;

	/**
	 * Skin oils, courtesy of Foxxling.
	 * @author Kitteh6660
	 */
	public class SkinOil extends Consumable
	{
		private var _color:String;

		public function SkinOil(id:String, color:String)
		{
			this._color = color.toLowerCase();
			var shortName:String = color + " Oil";
			var longName:String = "a bottle of " + this._color + " oil"
			var value:int = ConsumableLib.DEFAULT_VALUE;
			var description:String = "A small glass bottle filled with a smooth clear liquid. A label across the front says, \"" + color + " Skin Oil.\""
			super(id, shortName, longName, value, description);
		}

		override public function useItem():Boolean {
			if (game.player.skinTone == _color) {
				outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the bottle of oil and rubbing", "uncork the bottle of oil and rub") + " the smooth liquid across your body. Once you’ve finished you feel rejuvenated.");
				game.player.changeFatigue(-10);
			}
			else {
				if (game.player.skinType != SKIN_TYPE_GOO) {
					game.player.skinTone = _color;
					mutations.updateClaws(game.player.clawType);
				}
				switch(game.player.skinType) {
					case SKIN_TYPE_PLAIN: //Plain
						outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the bottle of oil and rubbing", "uncork the bottle of oil and rub") + " the smooth liquid across your body. Even before you’ve covered your arms and [chest] your skin begins to tingle pleasantly all over. After your skin darkens a little, it begins to change until you have " + _color + " skin.");
						break;
					case SKIN_TYPE_FUR: //Fur
						outputText("" + game.player.clothedOrNaked("Once you’ve disrobed you take the oil and", "You take the oil and") + " begin massaging it into your skin despite yourself being covered with fur. Once you’ve finished... nothing happens. Then your skin begins to tingle and soon you part your fur to reveal " + _color + " skin.");
						break;
					case SKIN_TYPE_SCALES: //Scales
					case SKIN_TYPE_DRACONIC: //Dragon scales
						outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the bottle of oil and rubbing", "uncork the bottle of oil and rub") + " the smooth liquid across your body. Even before you’ve covered your arms and [chest] your scaly skin begins to tingle pleasantly all over. After your skin darkens a little, it begins to change until you have " + _color + " skin.");
						break;
					case SKIN_TYPE_GOO: //Goo
						outputText("You take the oil and pour the contents into your skin. The clear liquid dissolves, leaving your gooey skin unchanged. You do feel a little less thirsty though.");
						game.player.slimeFeed();
						break;
					default:
						outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the bottle of oil and rubbing", "uncork the bottle of oil and rub") + " the smooth liquid across your body. Even before you’ve covered your arms and [chest] your skin begins to tingle pleasantly all over. After your skin darkens a little, it begins to change until you have " + _color + " skin.");
				}
			}
			game.inventory.itemGoNext();
			return true;
		}

	}

}


code:
/**
 * Created by aimozg on 11.01.14.
 */
package classes.Items.Consumables
{
	import classes.Items.Consumable;
	import classes.Player;
	import classes.internals.Utils;

	public final class WingStick extends Consumable {

		public function WingStick() {
			super("W.Stick", "Wingstick", "a wingstick", 16, "A tri-bladed throwing weapon.  Though good for only a single use, it's guaranteed to do high damage if it hits.  Inflicts 40 to 100 base damage, affected by strength.");
		}

		override public function canUse():Boolean {
			if (game.inCombat) return true;
			outputText("There's no one to throw it at!");
			return false;
		}

		override public function useItem():Boolean {
			clearOutput();
			outputText("You toss a wingstick at your foe!  It flies straight and true, almost as if it has a mind of its own as it arcs towards " + game.monster.a + game.monster.short + "!\n");
			if (game.monster.spe - 80 > Utils.rand(100) + 1) { //1% dodge for each point of speed over 80
				outputText("Somehow " + game.monster.a + game.monster.short + "'");
				if (!game.monster.plural) outputText("s");
				outputText(" incredible speed allows " + game.monster.pronoun2 + " to avoid the spinning blades!  The deadly device shatters when it impacts something in the distance.");
			}
			else { //Not dodged
				var damage:Number = 40 + Utils.rand(61) + (game.player.str * 2);
				outputText(game.monster.capitalA + game.monster.short + " is hit with the wingstick!  It breaks apart as it lacerates " + game.monster.pronoun2 + ". (" + damage + ")");
				game.monster.HP -= damage;
				if (game.monster.HP < 0) game.monster.HP = 0;
			}
			return(false);
		}
	}
}


code:
/**
 * Created by aimozg on 09.01.14.
 */
//No longer used - equipping Weapons and Armor is now handled by the inventoryMenu
package classes.Items
{
	import classes.CoC_Settings;
	import classes.ItemType;
	import classes.Items.Armors.GooArmor;
	import classes.Player;

	/**
	 * Superclass for items that could be equipped by player (armor, weapon, talisman, piercing, ...).
	 * Subclasses should override "equip" and "unequip" methods. Optionally, they could override "equipEffect" and
	 * "unequipEffect" methods that perform additional effects on player. By default, they do nothing.
	 * Overridden "equip" and "unequip" should call "equipped" and "unequipped" if equipped/unequipped succesfully.
	 */
	public class Equipable extends Consumable
	{

		/**
		 * Called on attempt to equip item.
		 * @param output Print "equipping" scene to output
		 */
		override public function canUse(player:Player,output:Boolean):Boolean
		{
			return true;
		}

		/**
		 * Called after item succesfully equipped. By default, does nothing. Should add perks/effects/etc.
		 */
		public function equipEffect(player:Player,output:Boolean):void
		{

		}

		/**
		 * Called after item succesfully unequipped. By default, does nothing. Should remove perks/effects/etc.
		 */
		public function unequipEffect(player:Player,output:Boolean):void
		{

		}

		protected final function equipped(player:Player,output:Boolean):void
		{
			equipEffect(player,output);
		}

		protected final function unequipped(player:Player,output:Boolean):void
		{
			unequipEffect(player,output);
		}

		protected function equip(player:Player,returnOldItem:Boolean,output:Boolean):void
		{
			CoC_Settings.errorAMC("Equipable", "equip", id);
		}

		/**
		 * @param returnToInventory true if that item should be placed in player's inventory
		 * @param output true if the unequip function should print to the screen
		 */
		public function unequip(player:Player, returnToInventory:Boolean, output:Boolean = false):void
		{
			CoC_Settings.errorAMC("Equipable", "unequip", id);
		}

		/*override public function doEffect(player:Player,output:Boolean):void
		{
			if (game.debug && !(this is GooArmor)){
				if (output){
					clearOutput();
					outputText("You cannot equip anything in debug mode.  Please restart the game in normal mode to equip items.");
				}
				return;
			}
			equip(player,true,output);
		}*/

		public function Equipable(id:String, shortName:String = null, longName:String = null, value:Number = 0, description:String = null)
		{
			super(id, shortName, longName, value, description);
		}

		protected function unequipReturnItem(player:Player,output:Boolean):ItemType
		{
			return this;
		}
	}
}


code:
package classes.Items.Jewelries
{
	import classes.ItemType;
	import classes.Items.Jewelry;
	import classes.Player;

	public class Nothing extends Jewelry
	{
		public function Nothing()
		{
			super("nojewel", "nojewel", "nothing", "nothing", 0, 0, 0, "no jewelry", "ring");
		}

		override public function playerRemove():Jewelry {
			return null; //There is nothing!
		}
	}
}


code:
/**
 * Created by Kitteh6660 on 08.29.14.
 */
package classes.Items
{
	import classes.ItemType;
	import classes.PerkLib;
	import classes.Player;

	public class Jewelry extends Useable
	{
		private var _effectId:Number;
		private var _effectMagnitude:Number;
		private var _perk:String;
		private var _name:String;

		public function Jewelry(id:String, shortName:String, name:String, longName:String, effectId:Number, effectMagnitude:Number, value:Number = 0, description:String = null, type:String = "", perk:String = "")
		{
			super(id, shortName, longName, value, description);
			this._name = name;
			this._effectId = effectId;
			this._effectMagnitude = effectMagnitude;
			this._perk = perk;
		}

		public function get effectId():Number { return _effectId; }

		public function get effectMagnitude():Number { return _effectMagnitude; }

		public function get perk():String { return _perk; }

		public function get name():String { return _name; }

		override public function get description():String {
			var desc:String = _description;
			return desc;
		}

		override public function useText():void {
			outputText("You equip " + longName + ".  ");
		}

		public function playerEquip():Jewelry { //This item is being equipped by the player. Add any perks, etc. - This function should only handle mechanics, not text output
			return this;
		}

		public function playerRemove():Jewelry { //This item is being removed by the player. Remove any perks, etc. - This function should only handle mechanics, not text output
			return this;
		}

		public function removeText():void {} //Produces any text seen when removing the armor normally
	}
}


code:
package classes.Items
{
	/**
	 * ...
	 * @author Kitteh6660
	 */
	import classes.Items.Jewelries.*;
	import classes.PerkLib;
	import classes.PerkType;

	//Enchantment IDs
	/*
	 * 0: Nothing
	 * 1: Minimum lust
	 * 2: Fertility
	 * 3: NOT USED
	 * 4: NOT USED
	 * 5: HP
	 * 6: Attack power
	 * 7: Spell power
	 * 8: Purity
	 * 9: Corruption

	 */

	public final class JewelryLib
	{
		public static const MODIFIER_MINIMUM_LUST:int = 1;
		public static const MODIFIER_FERTILITY:int = 	2;
		public static const UNKNOWN_03:int = 			3;
		public static const UNKNOWN_04:int = 			4;
		public static const MODIFIER_HP:int = 			5;
		public static const MODIFIER_ATTACK_POWER:int = 6;
		public static const MODIFIER_SPELL_POWER:int = 	7;
		public static const PURITY:int = 				8;
		public static const CORRUPTION:int = 			9;

		public static const DEFAULT_VALUE:Number = 6;

		public static const NOTHING:Nothing = new Nothing();

		//Pre-Enchanted rings
		public const CRIMRNG:Jewelry = new Jewelry("CrimRng", "Crimst.Ring", "crimstone ring", "an enchanted crimstone ring", MODIFIER_MINIMUM_LUST, 10, 1000, "This ring is topped with crimstone. It is said that this will help to keep your desires burning. \n\nType: Jewelry (Ring) \nBase value: 1,000 \nSpecial: Increases minimum lust by 10.","Ring");
		public const FERTRNG:Jewelry = new Jewelry("FertRng", "FertiteRing", "fertite ring", "an enchanted fertite ring", MODIFIER_FERTILITY, 20, 1000, "This ring is topped with fertite. It is said that this will make you more virile and fertile. \n\nType: Jewelry (Ring) \nBase value: 1,000 \nSpecial: Increases cum production by 20 percent and ferility by 20.","Ring");
		public const ICE_RNG:Jewelry = new Jewelry("Ice_Rng", "Icestn.Ring", "icestone ring", "an enchanted icestone ring", MODIFIER_MINIMUM_LUST, -10, 2000, "This ring is topped with icestone. It is said that this will counter ever-burning desires. \n\nType: Jewelry (Ring) \nBase value: 2,000 \nSpecial: Reduces minimum lust by 10.","Ring");
		public const LIFERNG:Jewelry = new Jewelry("LifeRng", "Life Ring", "ring of life", "an enchanted emerald ring of life force", MODIFIER_HP, 25, 1000, "This ring is topped with emerald gemstone. It is said that this will make you feel a bit healthier. \n\nType: Jewelry (Ring) \nBase value: 1,000 \nSpecial: Increases maximum HP by 25.","Ring");
		public const MYSTRNG:Jewelry = new Jewelry("MystRng", "Mystic Ring", "ring of mysticality", "an enchanted sapphire ring of mysticality", MODIFIER_SPELL_POWER, 25, 1500, "This ring is topped with sapphire gemstone. It is said that this will make your spells more powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases spellpower by 25 percent.","Ring");
		public const POWRRNG:Jewelry = new Jewelry("PowrRng", "Power Ring", "ring of power", "an enchanted ruby ring of power", MODIFIER_ATTACK_POWER, 10, 1500, "This ring is topped with ruby gemstone. It is said that this will make you feel a bit powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases damage by 10 percent.","Ring");
		public const PURERNG:Jewelry = new Jewelry("PureRng", "Purity Ring", "purity ring", "an enchanted purity ring", PURITY, 10, 3000, "This ring symbolizes chastity and purity. When worn, it reduces minimum libido and makes it harder for you to get turned on. \n\nType: Jewelry (Ring) \nBase value: 3,000 \nSpecial: Slowly decreases the corruption of the wearer over time. Reduces minimum libido by 10.","Ring");

		//Tier 2 rings - COMING SOON!
		/*public const CRIMRN2:Jewelry = new Jewelry("CrimRng", "Crimst.Ring", "crimstone ring", "an enchanted crimstone ring", MODIFIER_MINIMUM_LUST, 15, 2000, "This ring is topped with crimstone. It is said that this will help to keep your desires burning. \n\nType: Jewelry (Ring) \nBase value: 2,500 \nSpecial: Increases minimum lust by 10.","Ring");
		public const FERTRN2:Jewelry = new Jewelry("FertRng", "FertiteRing", "fertite ring", "an enchanted fertite ring", MODIFIER_FERTILITY, 30, 2000, "This ring is topped with fertite. It is said that this will make you more virile and fertile. \n\nType: Jewelry (Ring) \nBase value: 2,500 \nSpecial: Increases cum production by 20 percent and ferility by 20.","Ring");
		public const ICE_RN2:Jewelry = new Jewelry("Ice_Rng", "Icestn.Ring", "icestone ring", "an enchanted icestone ring", MODIFIER_MINIMUM_LUST, -15, 4000, "This ring is topped with icestone. It is said that this will counter ever-burning desires. \n\nType: Jewelry (Ring) \nBase value: 2,000 \nSpecial: Reduces minimum lust by 10.","Ring");
		public const LIFERN2:Jewelry = new Jewelry("LifeRng", "Life Ring", "ring of life", "an enchanted emerald ring of life force", MODIFIER_HP, 40, 2000, "This ring is topped with emerald gemstone. It is said that this will make you feel a bit healthier. \n\nType: Jewelry (Ring) \nBase value: 1,000 \nSpecial: Increases maximum HP by 25.","Ring");
		public const MYSTRN2:Jewelry = new Jewelry("MystRng", "Mystic Ring", "ring of mysticality", "an enchanted sapphire ring of mysticality", MODIFIER_SPELL_POWER, 40, 3000, "This ring is topped with sapphire gemstone. It is said that this will make your spells more powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases spellpower by 25 percent.","Ring");
		public const POWRRN2:Jewelry = new Jewelry("PowrRng", "Power Ring", "ring of power", "an enchanted ruby ring of power", MODIFIER_ATTACK_POWER, 15, 3000, "This ring is topped with ruby gemstone. It is said that this will make you feel a bit powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases damage by 10 percent.","Ring");*/

		//Tier 3 rings - COMING SOON!
		/*public const CRIMRN3:Jewelry = new Jewelry("CrimRng", "Crimst.Ring", "crimstone ring", "an enchanted crimstone ring", MODIFIER_MINIMUM_LUST, 20, 3000, "This ring is topped with crimstone. It is said that this will help to keep your desires burning. \n\nType: Jewelry (Ring) \nBase value: 2,500 \nSpecial: Increases minimum lust by 10.","Ring");
		public const FERTRN3:Jewelry = new Jewelry("FertRng", "FertiteRing", "fertite ring", "an enchanted fertite ring", MODIFIER_FERTILITY, 40, 3000, "This ring is topped with fertite. It is said that this will make you more virile and fertile. \n\nType: Jewelry (Ring) \nBase value: 2,500 \nSpecial: Increases cum production by 20 percent and ferility by 20.","Ring");
		public const ICE_RN3:Jewelry = new Jewelry("Ice_Rng", "Icestn.Ring", "icestone ring", "an enchanted icestone ring", MODIFIER_MINIMUM_LUST, -20, 6000, "This ring is topped with icestone. It is said that this will counter ever-burning desires. \n\nType: Jewelry (Ring) \nBase value: 2,000 \nSpecial: Reduces minimum lust by 10.","Ring");
		public const LIFERN3:Jewelry = new Jewelry("LifeRng", "Life Ring", "ring of life", "an enchanted emerald ring of life force", MODIFIER_HP, 55, 3000, "This ring is topped with emerald gemstone. It is said that this will make you feel a bit healthier. \n\nType: Jewelry (Ring) \nBase value: 1,000 \nSpecial: Increases maximum HP by 25.","Ring");
		public const MYSTRN3:Jewelry = new Jewelry("MystRng", "Mystic Ring", "ring of mysticality", "an enchanted sapphire ring of mysticality", MODIFIER_SPELL_POWER, 55, 4500, "This ring is topped with sapphire gemstone. It is said that this will make your spells more powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases spellpower by 25 percent.","Ring");
		public const POWRRN3:Jewelry = new Jewelry("PowrRng", "Power Ring", "ring of power", "an enchanted ruby ring of power", MODIFIER_ATTACK_POWER, 20, 4500, "This ring is topped with ruby gemstone. It is said that this will make you feel a bit powerful. \n\nType: Jewelry (Ring) \nBase value: 1,500 \nSpecial: Increases damage by 10 percent.","Ring");*/

		//Normal ring
		public const DIAMRNG:Jewelry = new Jewelry("DiamRng", "Diam Ring", "gold and diamond ring", "a shining gold and diamond ring", 0, 0, 1000, "This shining ring is made of gold and topped with diamond. Truly expensive. \n\nType: Jewelry (Ring) \nBase value: 1,000","Ring");
		public const GOLDRNG:Jewelry = new Jewelry("GoldRng", "Gold Ring", "gold ring", "a shining gold ring", 0, 0, 400, "This shining ring is made of gold. \n\nType: Jewelry (Ring) \nBase value: 400","Ring");
		public const LTHCRNG:Jewelry = new Jewelry("LthcRng", "Lethic.Ring", "lethicite ring", "a glowing lethicite ring", 1, 0, 5000, "This ring appears to be made of platinum with some lethicite crystal. Very expensive as lethicite is rare. \n\nType: Jewelry (Ring) \nBase value: 5,000","Ring");
		public const PLATRNG:Jewelry = new Jewelry("PlatRng", "Plat Ring", "platinum ring", "a shining platinum ring", 0, 0, 1000, "This shining ring is made of platinum, one of the rare precious metals. It looks expensive! \n\nType: Jewelry (Ring) \nBase value: 1,000","Ring");
		public const SILVRNG:Jewelry = new Jewelry("SilvRng", "Silver Ring", "silver ring", "a normal silver ring", 0, 0, 200, "This ring looks like it's made of silver. \n\nType: Jewelry (Ring) \nBase value: 200","Ring");

		/*private static function mk(id:String,shortName:String,name:String,longName:String,effectId:Number,effectMagnitude:Number,value:Number,description:String,type:String,perk:String=""):Jewelry {
			return new Jewelry(id,shortName,name,longName,effectId,effectMagnitude,value,description,type,perk);
		}*/
		/*private static function mk2(id:String,shortName:String,name:String,longName:String,def:Number,value:Number,description:String,perk:String,
				playerPerk:PerkType,playerPerkV1:Number,playerPerkV2:Number,playerPerkV3:Number,playerPerkV4:Number,playerPerkDesc:String=null):ArmorWithPerk{
			return new ArmorWithPerk(id,shortName,name,longName,def,value,description,perk,
					playerPerk,playerPerkV1,playerPerkV2,playerPerkV3,playerPerkV4);
		}*/
		public function JewelryLib()
		{
		}
	}

}


code:
/**
 * Created by aimozg on 10.01.14.
 */
package classes.Items
{
	import classes.BaseContent;

	public final class MiscItemLib extends BaseContent
	{
		public function MiscItemLib()
		{
		}
	}
}