code:
package classes.Items.Armors
{
	import classes.FetishManager;
	import classes.GlobalFlags.kFLAGS;
	import classes.ItemType;
	import classes.Items.Armor;
	import classes.Player;

	/**
	 * ...
	 * @author Kitteh6660
	 */
	public class PureMaraeArmor extends Armor
	{
		public function PureMaraeArmor()
		{
			super("DB.Armr","D.B.Armor","divine bark armor","a suit of divine bark armor",40,1100,"This suit of armor is finely made from the white bark you've received from Marae as a reward.");
		}

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

		override public function get def():Number { return 40 - int(game.player.cor / 5); }

		override public function useText():void
		{
			outputText("You strip yourself naked before you proceed to put on the armor. ");

			outputText("\n\nFirst, you clamber into the breastplate. ");
			if (getGame().player.isBiped()) //Some variants.
			{
				if (getGame().player.lowerBody == 0) outputText("Then you put your feet into your boots. With the boots fully equipped, you move on to the next piece. ");
				else outputText("Then you attempt to put your feet into your boots. You realize that the boots are designed for someone with normal feet. You have to modify the boots to fit and when you do put on your boots, your feet are exposed. ");
			}
			outputText("Next, you put on your reinforced bark bracers to protect your arms.\n\n")
			if (!getGame().player.isTaur()) {
				outputText("Last but not least, you put your silken loincloth on to cover your groin. You thank Rathazul for that and you know that you easily have access to your ");
				if (getGame().player.hasCock()) outputText(getGame().player.multiCockDescriptLight());
				if (getGame().player.hasCock() && getGame().player.hasVagina()) outputText(" and ");
				if (getGame().player.hasVagina()) outputText(getGame().player.vaginaDescript());
				//Genderless
				if (!getGame().player.hasCock() && !getGame().player.hasVagina()) outputText("groin");
				outputText(" should you need to. ");
				if (getGame().player.hasCock())
				{
					if (getGame().player.biggestCockArea() >= 40 && getGame().player.biggestCockArea() < 100)
					{
						outputText("Large bulge forms against your silken loincloth. ");
					}
					if (getGame().player.biggestCockArea() >= 100)
					{
						outputText("Your manhood is too big to be concealed by your silken loincloth. Part of your " + getGame().player.cockDescriptShort(getGame().player.biggestCockIndex()) + " is visible. ");
						if (getGame().player.cor < 33) outputText("You let out a sigh. ");
						else if (getGame().player.cor >= 33 && getGame().player.cor < 66) outputText("You blush a bit, not sure how you feel. ");
						else if (getGame().player.cor >= 66 || game.fetishManager.compare(FetishManager.FETISH_EXHIBITION)) outputText("You admire how your manhood is visible. ");
					}
				}
				if (getGame().player.cor >= 66 || game.fetishManager.compare(FetishManager.FETISH_EXHIBITION))
				{
					outputText("You'd love to lift your loincloth and show off whenever you want to. ");
				}
			}
			else {
				outputText("Last but not least, you take a silken loincloth in your hand but stop short as you examine your tauric body. There is no way you could properly conceal your genitals! ");
				if (getGame().player.cor < 33) outputText("You let out a sigh. Being a centaur surely is inconvenient! ");
				else if (getGame().player.cor >= 33 && getGame().player.cor < 66) outputText("You blush a bit, not sure how you feel. ");
				else if (getGame().player.cor >= 66 || game.fetishManager.compare(FetishManager.FETISH_EXHIBITION)) outputText("Regardless, you are happy with what you are right now. ");
				outputText("You leave the silken loincloth in your possessions for the time being.");
			}
			outputText("You are suited up and all good to go. ");
		}
	}

}


code:
/**
 * Created by aimozg on 15.01.14.
 */
package classes.Items.Armors
{
	import classes.FetishManager;
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Armor;
	import classes.Items.ArmorLib;
	import classes.Player;

	public final class SeductiveArmor extends Armor {

		public function SeductiveArmor()
		{
			super("SeductA", "SeductA", "scandalously seductive armor", "a set of scandalously seductive armor", 0, 1, "A complete suit of scalemail shaped to hug tightly against every curve, it has a solid steel chest-plate with obscenely large nipples molded into it.  The armor does nothing to cover the backside, exposing the wearer's cheeks to the world.");
		}

		override public function useText():void {
			if (!game.ceraphFollowerScene.ceraphIsFollower()) {
				outputText("After struggling to get it on, you feel a sudden shift in your scandalous new armor.  To your horror, it begins folding into itself, revealing more and more of your " + game.player.skinDesc + " and the comfortable underclothes you had on underneath it.  The transforming armor gradually covers less and less of you until it's little more than a pair of huge nipple-coverings and a silver chain.  A loud KA-CHUNK startles you, and then you're screaming as you feel something stabbing through your nipples.  Goosebumps cover your flesh as you twist in unexpected agony.\n\n");
				outputText("After you've had a chance to recover, you inspect your abused nipples and discover that your armor has totally disappeared.  The only thing left behind is a pair of seamless black nipple-studs, embedded into your vulnerable flesh.  There doesn't appear to be any way to remove them either.  Thankfully, your comfortable underclothes have been unaffected by the sudden disappearance of your armor.  The thought of having to run around naked stays stubbornly locked in your mind, and you mentally curse the demon for what she's done to you.\n\n");
				outputText("As if summoned by your thoughts, you can hear her voice on the wind, taunting you again, \"Enjoy your new bondage fetish, pet!  One more piercing and you'll be ready.  Don't have too much fun being tied down and fucked, ok?\"\n\n");
				if (game.player.nipplesPierced > 0) outputText("You're left to wonder - where did the old piercings go?\n\n");
				game.player.nipplesPierced = 1;
				game.player.nipplesPShort = "seamless black nipple-studs";
				game.player.nipplesPLong = "Seamless black nipple-studs";
				game.fetishManager.giveFetish(FetishManager.FETISH_EXHIBITION + FetishManager.FETISH_BONDAGE);//Gives both Exhibitionist and Bondage fetish.

			}
			else {
				outputText("As you're trying to put on the armor, Ceraph appears from nowhere, apologizing profusely and stopping you before you can slide the last strap into place.  \"Please don't put that on, " + game.player.mf("Master","Mistress") + ".  I trapped that armor to pierce new fetishes the unwary so that I could add them to my harem.  I'd hate to garner your anger.\"  She wrings her hands nervously.  \"If you'll hand it here, I'll get rid of it for you. Noone would buy it anyway.\"");
				outputText("\n\nYou shrug and toss her the armor, disappointed that you're down a potentially sexy outfit.");
				outputText("\n\nCeraph bows gratefully and swiftly backpedals, offering, \"And if you ever want me to stuff you full of magic fetishes, just ask, okay?\"");
				outputText("\n\nShe's gone before you can reply.  Sometimes she's more trouble than she's worth.");
			}
		}

		override public function playerEquip():Armor {
			super.playerEquip();
			return ArmorLib.COMFORTABLE_UNDERCLOTHES; //After seductive armor magic the player is left in their underclothes
		}
	}
}

license: unknown


code:
package classes.Items.Armors
{
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Armor;
	import classes.Player;
	import classes.PerkLib;
	import classes.PerkType;

	public class SeductiveArmorUntrapped extends ArmorWithPerk
	{

		override public function useText():void
		{
			outputText("\n\nYou are relieved to find out that this armor is not trapped.");
		}

		public function SeductiveArmorUntrapped()
		{
			super("SeductU","U.SeductA","untrapped seductive armor","a set of untrapped scandalously seductive armor",10,1,"A complete suit of scalemail shaped to hug tightly against every curve, it has a solid steel chest-plate with obscenely large nipples molded into it.  The armor does nothing to cover the backside, exposing the wearer's cheeks to the world.  This armor is not trapped.", "Heavy", PerkLib.SluttySeduction,5,0,0,0);
		}

	}

}


code:
/**
 * Created by aimozg on 18.01.14.
 */
package classes.Items.Armors
{
	import classes.Items.Armor;
	import classes.Items.ArmorLib;
	import classes.PerkLib;
	import classes.Player;

	public class SluttySwimwear extends ArmorWithPerk {

		public function SluttySwimwear() {
			super("S.Swmwr", "S.Swmwr", "slutty swimwear", "a skimpy black bikini", 0, 6, "An impossibly skimpy black bikini. You feel dirty just looking at it... and a little aroused, actually.", "Light", PerkLib.SluttySeduction, 6, 0, 0, 0, "", true, false);
		}

		override public function useText():void { //Produces any text seen when equipping the armor normally
			game.dynStats("lus", 5);
			if (game.player.biggestTitSize() < 1)
				outputText("You feel rather stupid putting the top part on like this, but you're willing to bear with it. It could certainly be good for distracting.  ");
			else {
				outputText("The bikini top clings tightly to your bustline, sending a shiver of pleasure through your body. It serves to turn you on quite nicely.  ");
				game.dynStats("lus", 5);
			}
			if (game.player.totalCocks() == 0) {
				outputText("The thong moves over your smooth groin, clinging onto your buttocks nicely.  ");
				if (game.player.balls > 0) {
					if (game.player.ballSize > 5) outputText("You do your best to put the thong on, and while the material is very stretchy, it simply can't even begin to cover everything, and your " + game.player.ballsDescriptLight() + " hang on the sides, exposed.  Maybe if you shrunk your male parts down a little...");
					else outputText("However, your testicles do serve as an area of discomfort, stretching the material and bulging out the sides slightly.  ");
				}
			}
			else {
				if (game.player.totalCocks() == 1) {
					outputText("You grunt in discomfort, your " + game.player.cockDescript(0) + " flopping free from the thong's confines. The tight material rubbing against your dick does manage to turn you on slightly.  ");
				}
				else {
					outputText("You grunt in discomfort, your " + game.player.multiCockDescriptLight() + " flopping free from the thong's confines. The tight material rubbing against your dicks does manage to turn you on slightly.  ");
				}
				game.dynStats("lus", 5);
				if (game.player.biggestCockArea() >= 20) outputText("You do your best to put the thong on, and while the material is very stretchy, it simply can't even begin to cover everything, and your " + game.player.cockDescript(game.player.biggestCockIndex()) + " has popped out of the top, completely exposed.  Maybe if you shrunk your male parts down a little...");
				//[If dick is 7+ inches OR balls are apple-sized]
				else if (game.player.ballSize > 5) outputText("You do your best to put the thong on, and while the material is very stretchy, it simply can't even begin to cover everything, and your " + game.player.ballsDescriptLight() + " hang on the sides, exposed.  Maybe if you shrunk your male parts down a little...");
			}
			outputText("\n\n");
		}
	}
}


code:
/**
 * Created by aimozg on 09.01.14.
 */
package classes.Items
{
	import classes.CoC;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.ItemType;
	import classes.Player;

	use namespace kGAMECLASS;

	public class CommonItem extends ItemType{

		public function get game():CoC{
			return kGAMECLASS;
		}
		public function getGame():CoC{
			return kGAMECLASS;
		}

		public function clearOutput():void{
			kGAMECLASS.clearOutput();
		}
		public function outputText(text:String):void{
			kGAMECLASS.outputText(text);
		}

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

		}
	}
}


code:
/**
 * Created by aimozg on 09.01.14.
 */
package classes.Items
{
	import classes.GlobalFlags.*;
	import classes.CoC_Settings;
	import classes.Player;

/**
	 * An item, that is consumed by player, and disappears after use. Direct subclasses should override "doEffect" method
	 * and NOT "useItem" method.
	 */
	public class Consumable extends Useable
	{
		include "../../../includes/appearanceDefs.as";

		protected function get mutations():Mutations { return kGAMECLASS.mutations; }
		protected function get changes():int { return mutations.changes; }
		protected function set changes(val:int):void { mutations.changes = val; }
		protected function get changeLimit():int { return mutations.changeLimit; }
		protected function set changeLimit(val:int):void { mutations.changeLimit = val; }

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

		override public function get description():String {
			var desc:String = _description;
			//Type
			desc += "\n\nType: Consumable ";
			if (shortName == "Wingstick") desc += "(Thrown)";
			if (shortName == "S.Hummus") desc += "(Cheat Item)";
			if (shortName == "BroBrew" || shortName == "BimboLq" || shortName == "P.Pearl"|| shortName == "Loli.P") desc += "(Rare Item)";
			if (longName.indexOf("dye") >= 0) desc += "(Dye)";
			if (longName.indexOf("egg") >= 0) desc += "(Egg)";
			if (longName.indexOf("book") >= 0) desc += "(Magic Book)";
			//Value
			desc += "\nBase value: " + String(value);
			return desc;
		}

/*
		public function canUse(player:Player,output:Boolean):Boolean
		{
			return true;
		}
*/

		/**
		 * Perform effect on player WITHOUT requiring item being in player's inventory and removing it
		 */
/*
		public function doEffect(player:Player,output:Boolean):void
		{
			CoC_Settings.errorAMC("Consumable","doEffect",id);
		}
*/

		/**
		 * Removes item from player and does effect
		 */
/*
		override public function useItem(player:Player, output:Boolean, external:Boolean):void
		{
			if (canUse(player,output)){
				if (!external && !game.debug) player.consumeItem(this,1);
				doEffect(player,output);
			}
		}
*/
	}
}


code:
/**
 * Created by aimozg on 10.01.14.
 */
package classes.Items
{
	import classes.BaseContent;
	import classes.CoC;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.Items.Consumables.*;
	import classes.Player;

	public final class ConsumableLib extends BaseContent
	{
		//public var consumableItems:Array = [];

		public static const DEFAULT_VALUE:Number = 6;

		//DEMONIC POTIONS
		//Tainted
		public const INCUBID:SimpleConsumable = mk("IncubiD","IncubiD", "an Incubi draft", curry(m.incubiDraft, true), "The cork-topped flask swishes with a slimy looking off-white fluid, purported to give incubi-like powers.  A stylized picture of a humanoid with a huge penis is etched into the glass.");
		public const S_DREAM:SimpleConsumable = mk("S.Dream","S.Dream", "a bottle of 'Succubus' Dream'", m.succubisDream, "This precious fluid is often given to men a succubus intends to play with for a long time, though this batch has been enhanced by Lumi to have even greater potency.");
		public const SDELITE:SimpleConsumable = mk("SDelite","S.Delite", "a bottle of 'Succubi's Delight'", curry(m.succubisDelight, true),"This precious fluid is often given to men a succubus intends to play with for a long time.");
		public const SUCMILK:SimpleConsumable = mk("SucMilk","SucMilk", "a bottle of Succubi milk", curry(m.succubiMilk, true), "This milk-bottle is filled to the brim with a creamy white milk of dubious origin.  A pink label proudly labels it as \"Succubi Milk\".  In small text at the bottom of the label it reads: \"To bring out the succubus in YOU!\"");
		//Untainted
		public const P_DRAFT:SimpleConsumable = mk("P.Draft","P.Draft", "an untainted Incubi draft", curry(m.incubiDraft, false), "The cork-topped flask swishes with a slimy looking off-white fluid, purported to give incubi-like powers.  A stylized picture of a humanoid with a huge penis is etched into the glass. Rathazul has purified this to prevent corruption upon use.", 20);
		public const P_S_MLK:SimpleConsumable = mk("P.S.Mlk","P.S.Mlk", "an untainted bottle of Succubi milk", curry(m.succubiMilk, false), "This milk-bottle is filled to the brim with a creamy white milk of dubious origin.  A pink label proudly labels it as \"Succubi Milk\".  In small text at the bottom of the label it reads: \"To bring out the succubus in YOU!\"  Purified by Rathazul to prevent corruption.", 20);
		public const PSDELIT:SimpleConsumable = mk("PSDelit","PSDelit", "an untainted bottle of \"Succubi's Delight\"", curry(m.succubisDelight, false),  "This precious fluid is often given to men a succubus intends to play with for a long time.  It has been partially purified by Rathazul to prevent corruption.", 20);

		//DYES
		public const AUBURND:HairDye = new HairDye("AuburnD", "Auburn");
		public const BLACK_D:HairDye = new HairDye("Black D", "Black");
		public const BLOND_D:HairDye = new HairDye("Blond D", "Blond");
		public const BLUEDYE:HairDye = new HairDye("BlueDye", "Blue");
		public const BROWN_D:HairDye = new HairDye("Brown D", "Brown");
		public const GRAYDYE:HairDye = new HairDye("GrayDye", "Gray");
		public const GREEN_D:HairDye = new HairDye("Green D", "Green");
		public const ORANGDY:HairDye = new HairDye("OrangDy", "Orange");
		public const PINKDYE:HairDye = new HairDye("PinkDye", "Pink");
		public const PURPDYE:HairDye = new HairDye("PurpDye", "Purple");
		public const RAINDYE:HairDye = new HairDye("RainDye", "Rainbow");
		public const RED_DYE:HairDye = new HairDye("Red Dye", "Red");
		public const WHITEDY:HairDye = new HairDye("WhiteDy", "White");

		//SKIN OILS & BODY LOTIONS
		public const DARK_OL:SkinOil = new SkinOil("DarkOil", "Dark");
		public const EBONYOL:SkinOil = new SkinOil("EbonyOl", "Ebony");
		public const FAIR_OL:SkinOil = new SkinOil("FairOil", "Fair");
		public const LIGHTOL:SkinOil = new SkinOil("LightOl", "Light");
		public const MAHOGOL:SkinOil = new SkinOil("MahogOl", "Mahogany");
		public const OLIVEOL:SkinOil = new SkinOil("OliveOl", "Olive");
		public const RUSS_OL:SkinOil = new SkinOil("RussOil", "Russet");

		public const CLEARLN:BodyLotion = new BodyLotion("ClearLn", "Clear", "smooth thick creamy liquid");
		public const ROUGHLN:BodyLotion = new BodyLotion("RoughLn", "Rough", "thick abrasive cream");
		public const SEXY_LN:BodyLotion = new BodyLotion("SexyLtn", "Sexy", "pretty cream like substance");
		public const SMTH_LN:BodyLotion = new BodyLotion("SmthLtn", "Smooth", "smooth thick creamy liquid");

		//EGGS
		//Small
		public const BLACKEG:SimpleConsumable = mk("BlackEg","BlackEg", "a rubbery black egg", curry(m.blackRubberEgg, false), "This is an oblong egg, not much different from a chicken egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const BLUEEGG:SimpleConsumable = mk("BlueEgg","BlueEgg", "a blue and white mottled egg", curry(m.blueEgg, false), "This is an oblong egg, not much different from a chicken egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const BROWNEG:SimpleConsumable = mk("BrownEg","BrownEg", "a brown and white mottled egg", curry(m.brownEgg, false), "This is an oblong egg, not much different from a chicken egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const PINKEGG:SimpleConsumable = mk("PinkEgg","PinkEgg", "a pink and white mottled egg", curry(m.pinkEgg, false),"This is an oblong egg, not much different from a chicken egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const PURPLEG:SimpleConsumable = mk("PurplEg","PurplEg", "a purple and white mottled egg", curry(m.purpleEgg, false),"This is an oblong egg, not much different from a chicken egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const WHITEEG:SimpleConsumable = mk("WhiteEg", "WhiteEg", "a milky-white egg", curry(m.whiteEgg, false), "This is an oblong egg, not much different from a chicken egg in appearance.  Something tells you it's more than just food.");
		//Large
		public const L_BLKEG:SimpleConsumable = mk("L.BlkEg","L.BlkEg", "a large rubbery black egg", curry(m.blackRubberEgg, true), "This is an oblong egg, not much different from an ostrich egg in appearance (save for the color).  Something tells you it's more than just food.  For all you know, it could turn you into rubber!");
		public const L_BLUEG:SimpleConsumable = mk("L.BluEg","L.BluEg", "a large blue and white mottled egg", curry(m.blueEgg, true),"This is an oblong egg, not much different from an ostrich egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const L_BRNEG:SimpleConsumable = mk("L.BrnEg","L.BrnEg", "a large brown and white mottled egg", curry(m.brownEgg, true),"This is an oblong egg, not much different from an ostrich egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const L_PNKEG:SimpleConsumable = mk("L.PnkEg","L.PnkEg", "a large pink and white mottled egg", curry(m.pinkEgg, true),"This is an oblong egg, not much different from an ostrich egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const L_PRPEG:SimpleConsumable = mk("L.PrpEg","L.PrpEg", "a large purple and white mottled egg", curry(m.purpleEgg, true),"This is an oblong egg, not much different from an ostrich egg in appearance (save for the color).  Something tells you it's more than just food.");
		public const L_WHTEG:SimpleConsumable = mk("L.WhtEg","L.WhtEg", "a large white egg", curry(m.whiteEgg, true), "This is an oblong egg, not much different from an ostrich egg in appearance.  Something tells you it's more than just food.");
		//Others
		public const DRGNEGG:SimpleConsumable = mk("DrgnEgg","DrgnEgg","an unfertilized dragon egg", m.eatEmberEgg,"A large, solid egg, easily the size of your clenched fist.  Its shell color is reddish-white, with blue splotches.");
		public const NPNKEGG:SimpleConsumable = mk("NPnkEgg","NPnkEgg", "a neon pink egg", curry(m.neonPinkEgg,false), "This is an oblong egg with an unnatural neon pink coloration.  It tingles in your hand with odd energies that make you feel as if you could jump straight into the sky.");

		//FOOD & BEVERAGES
		public const BC_BEER:SimpleConsumable = mk("BC Beer", "BC Beer", "a mug of Black Cat Beer", function(player:Player):void { getGame().telAdre.niamh.blackCatBeerEffects(player) }, "A capped mug containing an alcoholic drink secreted from the breasts of Niamh.  It smells tasty.", 1);
		public const BHMTCUM:SimpleConsumable = mk("BhmtCum", "BhmtCum", "a sealed bottle of behemoth cum", m.behemothCum, "This bottle of behemoth cum looks thick and viscous.  You suspect that it might boost your strength and toughness.  It also has delicious taste.", 15);
		public const BIMBOCH:SimpleConsumable = mk("BimboCh","BimboCh", "a bottle of bimbo champagne", curry(function(player:Player):void{getGame().telAdre.niamh.bimboChampagne(player,true,true)}), "A bottle of bimbo champagne. Drinking this might incur temporary bimbofication.", 1);
		public const C_BREAD:CumBread         = new CumBread();
		public const CCUPCAK:SimpleConsumable = mk("CCupcak","CCupcak", "a gigantic, chocolate cupcake", m.giantChocolateCupcake, "A gigantic, chocolate cupcake. You could easily get full from eating this!", 250);
		public const FISHFIL:SimpleConsumable = mk("FishFil", "FishFil", "a fish fillet", m.fishFillet, "A perfectly cooked piece of fish.  You're not sure what type of fish is, since you're fairly certain \"delicious\" is not a valid species.");
		public const FR_BEER:SimpleConsumable = mk("Fr Beer", "Fr Beer", "a mug of frothy beer", m.frothyBeer, "A bottle of beer from The Black Cock.");
		public const GODMEAD:SimpleConsumable = mk("GodMead","GodMead", "a pint of god's mead", m.godMead,"A horn of potent, honey-colored mead. A single whiff makes your head swim and your thoughts turn to violence and heroism.");
		public const H_BISCU:SimpleConsumable = mk("H.Bisct", "H.Biscuits", "a pack of hard biscuits", m.hardBiscuits, "These biscuits are tasteless, but they can stay edible for an exceedingly long time.", 5);
		public const IZYMILK:SimpleConsumable = mk("IzyMilk","IzyMilk", "a bottle of Isabella's milk", m.isabellaMilk, "This is a bottle of Isabella's milk.  Isabella seems fairly certain it will invigorate you.");
		public const M__MILK:SimpleConsumable = mk("M. Milk","M. Milk", "a clear bottle of milk from Marble", m.useMarbleMilk, "A clear bottle of milk from Marble's breasts. It smells delicious.");
		public const MINOCUM:SimpleConsumable = mk("MinoCum", "MinoCum", "a sealed bottle of minotaur cum", curry(m.minotaurCum, false), "This bottle of minotaur cum looks thick and viscous.  You know it has narcotic properties, but aside from that its effects are relatively unknown.", 60);
		public const P_BREAD:SimpleConsumable = mk("P.Bread", "P.Bread", "a stale loaf of prison bread", m.prisonBread, "An impossibly hard loaf of stale bread.  Despite its age, still quite nutritious.");
		public const P_M_CUM:SimpleConsumable = mk("P.M.Cum","P.MinoCum", "a sealed bottle of purified minotaur cum", curry(m.minotaurCum, true), "This bottle of minotaur cum looks thick and viscous.  You know it has narcotic properties, but aside from that its effects are relatively unknown.  This bottle of cum has been purified to prevent corruption and addiction.", 80);
		public const P_WHSKY:PhoukaWhiskey    = new PhoukaWhiskey();
		public const PROMEAD:SimpleConsumable = mk("ProMead", "ProMead", "a pint of premium god\'s mead", m.proMead, null);
		public const PURPEAC:SimpleConsumable = mk("PurPeac", "PurPeac", "a pure peach", m.purityPeach, "This is a peach from Minerva's spring, yellowy-orange with red stripes all over it.", 10);
		public const SHEEPMK:SimpleConsumable = mk("SheepMk","SheepMk", "a bottle of sheep milk", m.sheepMilk,"This bottle of sheep milk is said to have corruption-fighting properties.  It may be useful.");
		public const S_WATER:SimpleConsumable = mk("S.Water", "SpringWtr", "a waterskin filled with spring water", m.springWater, "A waterskin full of purified water from Minerva's spring.  It's clean and clear, with a faint sweet scent to it.  You're sure it would be a very refreshing drink.");
		public const TRAILMX:SimpleConsumable = mk("TrailMx", "Trail Mix", "a pack of trail mix", m.trailMix, "This mix of nuts, dried fruits and berries is lightweight, easy to store and very nutritious.", 20);
		public const URTACUM:SimpleConsumable = mk("UrtaCum", "UrtaCum", "a sealed bottle of Urta's cum", m.urtaCum, "This bottle of Urta's cum looks thick and viscous.  It's quite delicious.", 15);
		public const W_PDDNG:SimpleConsumable = mk("W.Pddng","W.Pudding", "a slice of winter pudding", m.winterPudding,"A slice of delicious Winter Pudding.  It smells delicious. \n\nNote: Eating this might cause antlers to grow from your head.", 35);

		//GROWERS/SHRINKERS
		public const REDUCTO:Consumable = new Reducto();
		public const GROPLUS:Consumable = new GroPlus();

		//MAGIC BOOKS
		public const B__BOOK:SimpleConsumable = mk("B. Book","B. Book", "a small book with a midnight-black cover", m.blackSpellbook, "This solid black book is totally unmarked, saved for a blood red clasp that holds the covers closed until you are ready to read it.  The pages are edged with gold, like some of the fancy books in the monastary back home.", 40);
		public const W__BOOK:SimpleConsumable = mk("W. Book","W. Book", "a small book with a pristine white cover", m.whiteSpellbook, "This white book is totally unmarked, and the cover is devoid of any lettering or title.  A shiny brass clasp keeps the covers closed until you are ready to read it.", 40);

		//RARE ITEMS (Permanent effects, gives perks on consumption.)
		public const BIMBOLQ:BimboLiqueur = new BimboLiqueur();
		public const BROBREW:SimpleConsumable = mk("BroBrew","BroBrew", "a can of Bro Brew", m.broBrew, "This aluminum can is labelled as 'Bro Brew'.  It even has a picture of a muscly, bare-chested man flexing on it.  A small label in the corner displays: \"Demon General's Warning: Bro Brew's effects are as potent (and irreversible) as they are refreshing.", 1000);
		public const HUMMUS2:SimpleConsumable = mk("Hummus2","S.Hummus", "a blob of cheesy-looking super hummus", m.superHummus, "This pile of hummus doesn't look that clean, and you really don't remember where you got it from.  It looks bland.  So bland that you feel blander just by looking at it.");
		public const LOLIPOP:LoliPop = new LoliPop();
		public const P_PEARL:SimpleConsumable = mk("P.Pearl","P.Pearl", "a pure pearl", m.purePearl, "Marae gave you this pure pearl as a reward for shutting down the demonic factory.", 1000);

		//NON-TRANSFORMATIVE ITEMS
		public const AKBALSL:SimpleConsumable = mk("AkbalSl","AkbalSlv", "a vial of Akbal's saliva", m.akbalSaliva,"This corked vial of Akbal's saliva is said to contain healing properties. ");
		public const C__MINT:SimpleConsumable = mk("C. Mint","C. Mint", "a calm mint", m.calmMint,"This is a sprig of silver-colored mint.  Its strong scent makes you feel calmer and less lustful.");
		public const CERUL_P:SimpleConsumable = mk("Cerul P","Cerulean P.", "a cerulean-tinted potion", m.ceruleanPotion, "This is a mysterious bottle filled with a sky-blue liquid that sloshes gently inside.  Supposedly it will make you irresistible, though to what or who you cannot say.");
		public const COAL___:SimpleConsumable = mk("Coal   ","Coal", "two pieces of coal", m.coal, "These two pieces of coal may look ordinary but it makes you wonder what happens when you rub them.");
		public const DEBIMBO:DeBimbo = new DeBimbo();
		public const EXTSERM:HairExtensionSerum = new HairExtensionSerum();
		public const F_DRAFT:SimpleConsumable = mk("F.Draft","FuckDraft", "a vial of roiling red fluid labeled \"Fuck Draft\"", curry(m.lustDraft, true), "This vial of red fluid bubbles constantly inside the glass, as if eager to escape.  It smells very strongly, though its odor is difficult to identify.  The word \"Fuck\" is inscribed on the side of the vial.");
		public const H_PILL:SimpleConsumable  = mk("H. Pill", "Heal Pill", "a small healing pill", m.healPill, "A small healing pill that's guaranteed to heal you by a bit.");
		public const HRBCNT:SimpleConsumable  = mk("HrblCnt", "HrblCnt", "a bundle of verdant green leaves", m.herbalContraceptive, "A small bundle of verdant green leaves.");
		public const ICICLE_:SimpleConsumable = mk("Icicle ","Icicle", "an ice shard", m.iceShard,"An icicle that seems to be incapable of melting.  It numbs your hands as you hold it. ");
		public const KITGIFT:KitsuneGift		= new KitsuneGift();
		public const L_DRAFT:SimpleConsumable = mk("L.Draft","LustDraft", "a vial of roiling bubble-gum pink fluid", curry(m.lustDraft,false), "This vial of bright pink fluid bubbles constantly inside the glass, as if eager to escape.  It smells very sweet, and has \"Lust\" inscribed on the side of the vial.", 20);
		public const LACTAID:SimpleConsumable = mk("Lactaid","Lactaid", "a pink bottle labelled \"Lactaid\"", m.lactaid, "Judging by the name printed on this bottle, 'Lactaid' probably has an effect on the ability to lactate, and you doubt that effect is a reduction.");
		public const LUSTSTK:LustStick        = new LustStick();
		public const MILKPTN:SimpleConsumable = mk("MilkPtn","ProLactaid", "a bottle labelled \"Pro Lactaid\"", m.milkPotion, "A bottle filled with white liquid which is distilled from Lactaid and LaBovas.  Rathazul mentioned that this potion will greatly improve your lactation. There's the possibility of permanently lactating, even if you're a male.", 120);
		public const NUMBOIL:SimpleConsumable = mk("NumbOil","Numb Oil", "a bottle of numbing oil", m.numbingOil, "This bottle feels a bit warm to the touch. From the look of the label on the bottle of oil, you suspect this will make you less sensitive.", 100);
		public const NUMBROX:SimpleConsumable = mk("NumbRox","Numb Rox", "a strange packet of candy called 'Numb Rocks'", m.numbRocks, "This packet of innocuous looking 'candy' guarantees to reduce troublesome sensations and taste delicious.", 15);
		public const OVIELIX:OvipositionElixir = new OvipositionElixir();
		public const PEPPWHT:SimpleConsumable = mk("PeppWht","PeppWht", "a vial of peppermint white", function(player:Player):void{getGame().xmas.xmasMisc.peppermintWhite(player)}, "This tightly corked glass bottle gives of a pepperminty smell and reminds you of the winter holidays.  How odd.", 120);
		public const PPHILTR:SimpleConsumable = mk("PPhiltr","P.Philter", "a vial of purity philter", m.purityPhilter, "This silver vial feels cool to the touch. In fact, it feels a bit cold. Given the label, you suspect this will help to erase corruption.", 100);
		public const PRNPKR :SimpleConsumable  = mk("PrnsPkr", "P.Pucker", "a vial of pinkish fluid", m.princessPucker, "A vial filled with a viscous pink liquid. A label reads \"Princess Pucker\".");
		public const SENSDRF:SimpleConsumable = mk("SensDrf","SensDraft", "a bottle of sensitivity draft", m.sensitivityDraft, "This carefully labelled potion is a 'Sensitivity Draft', and if the diagrams are any indication, it will make your body more sensitive.", 15);
		public const SMART_T:SimpleConsumable = mk("Smart T","Scholars T.", "a cup of scholar's tea", m.scholarsTea, "This powerful brew supposedly has mind-strengthening effects.");
		public const VITAL_T:SimpleConsumable = mk("Vital T", "Vitality T.", "a vitality tincture", m.vitalityTincture, "This potent tea is supposedly good for the strengthening the body.");
		public const W_STICK:WingStick = new WingStick();

		//TRANSFORMATIVE ITEMS
		public const B_GOSSR:SimpleConsumable = mk("B.Gossr","B.Gossr", "a bundle of black, gossamer webbing", curry(m.sweetGossamer, 1), "These strands of gooey black gossamer seem quite unlike the normal silk that driders produce.  It smells sweet and is clearly edible, but who knows what it might do to you?");
		public const BEEHONY:BeeHoney         = new BeeHoney(false, false);
		public const BLACKPP:SimpleConsumable = mk("BlackPp","BlackPp", "a solid black canine pepper", curry(m.caninePepper, 3), "This solid black canine pepper is smooth and shiny, but something about it doesn't seem quite right...", 10);
		public const BOARTRU:SimpleConsumable = mk("BoarTru", "BoarTruffle", "a boar truffle", curry(m.pigTruffle, true), "It’s clear where the pigtail truffle gets its name.  A small, curly sprig resembling a pig’s tail can be seen jutting out of it. Now that it’s been enhanced by Lumi, it’s larger and fuzzier than it was before, almost like a peach.");
		public const BULBYPP:SimpleConsumable = mk("BulbyPp","BulbyPp", "a bulbous pepper", curry(m.caninePepper, 5), "This bulbous pepper has a slightly different shape than the other canine peppers, with two large orb-like protrusions at the base.", 10);
		public const CANINEP:SimpleConsumable = mk("CanineP","CanineP", "a Canine pepper", curry(m.caninePepper,0), "The pepper is shiny and red, bulbous at the base but long and narrow at the tip.  It smells spicy.");
		public const DBLPEPP:SimpleConsumable = mk("DblPepp","DblPepp", "a double canine pepper", curry(m.caninePepper, 2), "This canine pepper is actually two that have grown together due to some freak coincidence.", 10);
		public const DRAKHRT:SimpleConsumable = mk("DrakHrt","DrakeHeart", "a drake's heart's flower", curry(m.drakeHeart), "A rare, beautiful flower.  It could make an exquisite perfume.  According to a legend, dragons give this flower to the ones they intend to court.", 50);
		public const DRYTENT:SimpleConsumable = mk("DryTent","DryTent", "a shriveled tentacle", m.shriveledTentacle, "A dried tentacle from one of the lake anemones.  It's probably edible, but the stingers are still a little active.");
		public const ECTOPLS:SimpleConsumable = mk("EctoPls","EctoPls", "a bottle of ectoplasm", m.ectoplasm, "The green-tinted, hardly corporeal substance flows like a liquid inside its container. It makes you feel... uncomfortable, as you observe it.");
		public const EQUINUM:SimpleConsumable = mk("Equinum","Equinum", "a vial of Equinum", m.equinum, "This is a long flared vial with a small label that reads, \"Equinum\".  It is likely this potion is tied to horses in some way.");
		public const FOXBERY:SimpleConsumable = mk("FoxBery","Fox Berry", "a fox berry", curry(m.foxTF,false), "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.");
		public const FRRTFRT:SimpleConsumable = mk("Frrtfrt","FerretFrt","a ferret fruit", m.ferretTF, "This fruit is curved oddly, just like the tree it came from.  The skin is fuzzy and brown, like the skin of a peach.");
		public const FOXJEWL:SimpleConsumable = mk("FoxJewl", "Fox Jewel", "a fox jewel", curry(m.foxJewel, false), "A shining teardrop-shaped jewel.  An eerie blue flame dances beneath the surface.");
		public const GLDRIND:GoldenRind       = new GoldenRind();
		public const GLDSEED:SimpleConsumable = mk("GldSeed","GoldenSeed", "a golden seed", curry(m.goldenSeed,0),"This seed looks and smells absolutely delicious.  Though it has an unusual color, the harpies prize these nuts as delicious treats.  Eating one might induce some physical transformations.");
		public const GOB_ALE:SimpleConsumable = mk("Gob.Ale","Gob.Ale", "a flagon of potent goblin ale", m.goblinAle, "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.");
		public const HUMMUS_:SimpleConsumable = mk("Hummus ","Hummanus", "a jar of cheesy-looking hummus", m.regularHummus, "This small clay jar contains a substance known as hummus. Given the label, it's probably going to help you regain lost humanity.", 100);
		public const IMPFOOD:SimpleConsumable = mk("ImpFood","ImpFood", "a parcel of imp food", m.impFood, "This is a small parcel of reddish-brown bread stuffed with some kind of meat.  It smells delicious.");
		public const KANGAFT:SimpleConsumable = mk("KangaFt","KangaFruit", "a piece of kanga fruit", curry(m.kangaFruit,0),"A yellow, fibrous, tubular pod.  A split in the end reveals many lumpy, small seeds inside.  The smell of mild fermentation wafts from them.");
		public const KNOTTYP:SimpleConsumable = mk("KnottyP","KnottyP", "a knotty canine pepper", curry(m.caninePepper, 4), "This knotted pepper is very swollen, with a massive, distended knot near the base.", 10);
		public const LABOVA_:SimpleConsumable = mk("LaBova ","La Bova", "a bottle containing a misty fluid labeled \"LaBova\"", curry(m.laBova,true,false), "A bottle containing a misty fluid with a grainy texture, it has a long neck and a ball-like base.  The label has a stylized picture of a well endowed cowgirl nursing two guys while they jerk themselves off.");
		public const LARGEPP:SimpleConsumable = mk("LargePp","LargePp", "an overly large canine pepper", curry(m.caninePepper, 1), "This large canine pepper is much bigger than any normal peppers you've seen.", 10);
		public const MAGSEED:SimpleConsumable = mk("MagSeed","MagSeed", "a magically-enhanced golden seed", curry(m.goldenSeed, 1),"This seed glows with power.  It's been enhanced by Lumi to unlock its full potential, allowing it to transform you more easily.");
		public const MGHTYVG:SimpleConsumable = mk("MghtyVg","MghtyVg", "a mightily enhanced piece of kanga fruit", curry(m.kangaFruit, 1),"A yellow, fibrous, tubular pod.  A split in the end reveals many lumpy, small seeds inside.  The smell of mild fermentation wafts from them.  It glows slightly from Lumi's enhancements.");
		public const MOUSECO:SimpleConsumable = mk("MouseCo","MouseCo", "a handful of mouse cocoa", m.mouseCocoa, "A handful of rare aromatic beans with sharp creases in the middle, making them look like small mouse ears.  Allegedly very popular and plentiful before the mice-folk were wiped out.");
		public const MINOBLO:SimpleConsumable = mk("MinoBlo","MinoBlo", "a vial of Minotaur blood", m.minotaurBlood, "You've got a scratched up looking vial full of bright red minotaur blood.  Any time you move it around it seems to froth up, as if eager to escape.");
		public const MYSTJWL:SimpleConsumable = mk("MystJwl","MystJwl", "a mystic jewel", curry(m.foxJewel, true), "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...", 20);
		public const P_LBOVA:SimpleConsumable = mk("P.LBova", "P.LBova", "a bottle containing a white fluid labeled \"Pure LaBova\"", curry(m.laBova, false, false), "A bottle containing a misty fluid with a grainy texture; it has a long neck and a ball-like base.  The label has a stylized picture of a well-endowed cow-girl nursing two guys while they jerk themselves off. It has been purified by Rathazul.");
		public const PIGTRUF:SimpleConsumable = mk("PigTruf", "PigTruffle", "a pigtail truffle", curry(m.pigTruffle, false), "It’s clear where this fungus gets its name.  A small, curly sprig resembling a pig’s tail can be seen jutting out of it.");
		public const PRFRUIT:SimpleConsumable = mk("PrFruit","PrFruit", "a purple fruit", m.purpleFruitEssrayle, "This sweet-smelling produce looks like an eggplant, but feels almost squishy, and rubbery to the touch. Holding it to your ear, you think you can hear some fluid sloshing around inside.");
		public const PROBOVA:SimpleConsumable = mk("ProBova","ProBova", "a bottle containing a misty fluid labeled \"ProBova\"", curry(m.laBova, true, true), "This cloudy potion has been enhanced by the alchemist Lumi to imbue its drinker with cow-like attributes.");
		public const PURHONY:BeeHoney			= new BeeHoney(true, false);
		public const REPTLUM:SimpleConsumable = mk("Reptlum","Reptilum", "a vial of Reptilum", m.reptilum, "This is a rounded bottle with a small label that reads, \"Reptilum\".  It is likely this potion is tied to reptiles in some way.");
		public const RINGFIG:SimpleConsumable = mk("RingFig","RingFig","a ringtail fig", m.ringtailFig,"A dried fig with two lobes and thin dark rings just below its stem.  The skin is wrinkly and it looks vaguely like a bulging scrotum.");
		public const RIZZART:RizzaRoot			= new RizzaRoot();
		public const S_GOSSR:SimpleConsumable = mk("S.Gossr","S.Gossr", "a bundle of pink, gossamer webbing", curry(m.sweetGossamer,0), "These strands of gooey pink gossamer seem quite unlike the normal silk that spider-morphs produce.  It smells sweet and is clearly edible, but who knows what it might do to you?");
		public const SALAMFW:SimpleConsumable = mk("SalamFW","SalamFW", "a hip flask of Salamander Firewater", m.salamanderfirewater, "This hip flask contain high-proof beverage called 'Salamander Firewater', which one sip can makes your throat feel like it been set on fire.  What whould happen if you drink whole flask content?");
		public const SATYR_W:SatyrWine        = new SatyrWine();
		public const SHARK_T:SimpleConsumable = mk("Shark.T","Shark.T", "a sharp shark tooth", curry(m.sharkTooth,0), "A glinting white tooth, very sharp and intimidating.");
		public const SNAKOIL:SimpleConsumable = mk("SnakOil", "SnakOil", "a vial of snake oil", m.snakeOil, "A vial the size of your fist made of dark brown glass. It contains what appears to be an oily, yellowish liquid. The odor is abominable.");
		public const SPHONEY:Consumable		  = new BeeHoney(false, true);
		public const TAURICO:SimpleConsumable = mk("Taurico","Taurinum", "a vial of Taurinum", m.taurinum, "This is a long flared vial with a small label that reads, \"Taurinum\".  It is likely this potion is tied to centaurs in some way.");
		public const TRAPOIL:SimpleConsumable = mk("TrapOil","TrapOil", "a vial of trap oil", m.trapOil, "A round, opaque glass vial filled with a clear, viscous fluid.  It has a symbol inscribed on it, a circle with a cross and arrow pointing out of it in opposite directions.  It looks and smells entirely innocuous.");
		public const TSCROLL:SimpleConsumable = mk("TScroll","TScroll", "a tattered scroll", m.tatteredScroll, "This tattered scroll is written in strange symbols, yet you have the feeling that if you tried to, you could decipher it.");
		public const TSTOOTH:SimpleConsumable = mk("TSTooth","TSTooth", "a glowing tiger shark tooth", curry(m.sharkTooth, 1),"This looks like a normal shark tooth, though with an odd purple glow.");
		public const VIXVIGR:SimpleConsumable = mk("VixVigr","VixVigr", "a bottle labelled \"Vixen's Vigor\"", curry(m.foxTF, true), "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.", 30);
		public const W_FRUIT:SimpleConsumable = mk("W.Fruit","W.Fruit", "a piece of whisker-fruit", m.catTransformation, "This small, peach-sized fruit has tiny whisker-like protrusions growing from the sides.");
		public const WETCLTH:SimpleConsumable = mk("WetClth","WetClth", "a wet cloth dripping with slippery slime", m.gooGasmic, "Dripping with a viscous slime, you've no doubt rubbing this cloth on your body would have some kind of strange effect.");
		public const WOLF_PP:SimpleConsumable = mk("Wolf Pp","WolfPepper", "a Wolf pepper", curry(m.caninePepper, 6), "The pepper is shiny and black, bulbous at the base but long and narrow at the tip.  It has a fuzzy feel to it and it smells spicy.", 10);

		public const LARGE_EGGS:Array = [L_BLKEG,L_BLUEG,L_BRNEG,L_PNKEG,L_PRPEG,L_WHTEG];
		public const SMALL_EGGS:Array = [BLACKEG,BLUEEGG,BROWNEG,PINKEGG,PURPLEG,WHITEEG];
		private function get m():Mutations { return Mutations.init(); }

		/**
		 * A handy function to create SimpleConsumables (useable by any player, effect is a function accepting player:Player,
		 * shortName, longName, description and value are const)
		 * @param id id. Must be String 7 chars long
		 * @param shortName shortName, null to use id as shortName
		 * @param longName null to use shortName as longName
		 * @param effect function(player:Player) called to produce effect
		 * @param description null to use longName as description
		 */
		private static function mk(id:String, shortName:String, longName:String, effect:Function, description:String, value:Number = DEFAULT_VALUE):SimpleConsumable {
			return new SimpleConsumable(id, shortName, longName, effect, value, description);
		}
		public function ConsumableLib() {}
	}
}


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

	public class BeeHoney extends Consumable
	{
		private const PURE_HONEY_VALUE:int = 40;
		private const SPECIAL_HONEY_VALUE:int = 20;

		public function BeeHoney(pure:Boolean, special:Boolean) {
			var honeyName:String;
			var honeyLong:String;
			var honeyDesc:String;
			var honeyValue:int;
			if (special) {
				honeyName = "SpHoney";
				honeyLong = "a bottle of special bee honey";
				honeyDesc = "A clear crystal bottle of a dark brown fluid that you got from the bee handmaiden.  It gives off a strong sweet smell even though the bottle is still corked.";
				honeyValue = SPECIAL_HONEY_VALUE;
			}
			else {
				honeyName = (pure ? "PurHony" : "BeeHony");
				honeyLong = (pure ? "a crystal vial filled with glittering honey" : "a small vial filled with giant-bee honey");
				honeyDesc = "This fine crystal vial is filled with a thick amber liquid that glitters " + (pure ? "" : "dully ") + "in the light.  You can smell a sweet scent, even though it is tightly corked.";
				honeyValue = (pure ? PURE_HONEY_VALUE : 6);
			}
			super(honeyName, honeyName, honeyLong, honeyValue, honeyDesc);
        }

		override public function canUse():Boolean {
			if (value == SPECIAL_HONEY_VALUE && getGame().player.statusEffectv1(StatusEffects.Exgartuan) == 1) { //Exgartuan doesn't like the special honey
				outputText("You uncork the bottle only to hear Exgartuan suddenly speak up.  “Hey kid, this beautiful cock here doesn’t need any of that special bee shit.  Cork that bottle up right now or I’m going to make it so that you can’t drink anything but me.”  You give an exasperated sigh and put the cork back in the bottle.");
				return false;
			}
			return true;
		}

		override public function useItem():Boolean
		{
			var tfSource:String = "BeeHoney";
			var player:Player = getGame().player;
			var pure:Boolean = (value == PURE_HONEY_VALUE);
			var special:Boolean = (value == SPECIAL_HONEY_VALUE);
			changes = 0;
			changeLimit = 1;
			clearOutput();
			player.slimeFeed();
			//Chances of boosting the change limit.
			if (Utils.rand(2) == 0) changeLimit++;
			if (Utils.rand(2) == 0) changeLimit++;
			if (Utils.rand(2) == 0) changeLimit++;
			if (player.findPerk(PerkLib.HistoryAlchemist) >= 0) changeLimit++;
			if (player.findPerk(PerkLib.TransformationResistance) >= 0) changeLimit--;
			//Drink text
			if (special) {
				outputText("You uncork the bottle and pour the incredibly strong smelling concentrated honey down your throat.  Its taste is also mighty intense.  All at once you feel the effects of the substance start to course through your body.");
			}
			else { //Text for normal or pure
				outputText("Opening the crystal vial, you are greeted by a super-concentrated wave of sweet honey-scent.  It makes you feel lightheaded.  You giggle and lick the honey from your lips, having drank down the syrupy elixir without a thought.");
			}
			player.refillHunger(15);
			if ((pure || special) && player.pregnancyType == PregnancyStore.PREGNANCY_FAERIE) { //Pure or special honey can reduce the corruption of a phouka baby
				if (getGame().flags[kFLAGS.PREGNANCY_CORRUPTION] > 1) { //Child is phouka, hates pure honey
					outputText("\n\nYou 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.  Then again, maybe pure honey is good for it.");
				}
				else if (getGame().flags[kFLAGS.PREGNANCY_CORRUPTION] < 1) { //Child is faerie, loves pure honey
					outputText("\n\nA warm sensation starts in your belly and runs all through your body.  It's almost as if you're feeling music and you guess your passenger enjoyed the meal.");
				}
				else { //Child is on the line, will become a faerie with this drink
					outputText("\n\nAt first you feel your baby struggle against the honey, then it seems to grow content and enjoy it.");
				}
				getGame().flags[kFLAGS.PREGNANCY_CORRUPTION]--;
				if (pure) return(false); //No transformative effects for the player because the pure honey was absorbed by the baby - Special honey will keep on giving
			}
			//Corruption reduction
			if (changes < changeLimit && pure) { //Special honey will also reduce corruption, but uses different text and is handled separately
				outputText("\n\n");
				changes++;
				if (player.cor > 80) outputText("Your head aches, as if thunder was echoing around your skull.  ");
				else if (player.cor > 60) outputText("You feel a headache forming just behind your eyes.  In no time flat it reaches full strength.  ");
				else if (player.cor > 40) outputText("A wave of stinging pain slices through your skull.  ");
				else if (player.cor > 20) outputText("A prickling pain spreads throughout your skull.  ");
				else outputText("You feel a mildly unpleasant tingling inside your skull.  ");
				if (player.cor > 0) outputText("It quickly passes, leaving you more clearheaded");
				getGame().dynStats("cor", -(1 + (player.cor / 20)));
				//Libido Reduction
				if (player.cor > 0 && changes < changeLimit && Utils.rand(1.5) == 0 && player.lib > 40) {
					outputText(" and settling your overcharged sex-drive a bit.");
					getGame().dynStats("lib", -3, "lus", -20);
					changes++;
				}
				else if (player.cor > 0) outputText(".");
			}
			//bee item corollary:
			if (changes < changeLimit && player.hairType == 4 && Utils.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 sticky-sweet honey, your head begins to feel heavier.  Reaching up, you notice your tentacles becoming soft and somewhat fibrous.  Pulling one down reveals that it feels and smells like the honey you just ate; you watch as it dissolves into many thin strands coated in the sugary syrup.  Your hair is back to normal (well, once you wash the honey out)!");
				player.hairType = 0;
				changes++;
			}
			//(removes tentacle hair status, restarts hair growth if not prevented by reptile status)
			//Intelligence Boost
			if (changes < changeLimit && Utils.rand(2) == 0 && player.inte < 80) {
				getGame().dynStats("int", 0.1 * (80 - player.inte));
				outputText("\n\nYou spend a few moments analyzing the taste and texture of the honey's residue, feeling awfully smart.");
				changes++;
			}
			//Sexual Stuff
			//No idears
			//Appearance Stuff
			//Hair Color
			if (changes < changeLimit && (player.hairColor != "shiny black" && player.hairColor != "black and yellow") && player.hairLength > 10 && Utils.rand(5) == 0) {
				outputText("\n\nYou feel your scalp tingling, and you grab your hair in a panic, pulling a strand forward.  ");
				if (Utils.rand(9) == 0) player.hairColor = "black and yellow";
				else player.hairColor = "shiny black";
				outputText("Your hair is now " + player.hairColor + ", just like a bee-girl's!");
				changes++;
			}
			//Hair Length
			if (changes < changeLimit && player.hairLength < 25 && Utils.rand(3) == 0) {
				outputText("\n\nFeeling a bit off-balance, you discover your hair has lengthened, ");
				player.hairLength += Utils.rand(4) + 1;
				outputText("becoming " + getGame().player.hairDescript() + ".");
				changes++;
			}
			//-Remove extra breast rows
			if (changes < changeLimit && player.bRows() > 2 && Utils.rand(3) == 0 && !getGame().flags[kFLAGS.HYPER_HAPPY]) {
				changes++;
				outputText("\n\nYou stumble back when your center of balance shifts, and though you adjust before you can fall over, you're left to watch in awe as your bottom-most " + getGame().player.breastDescript(player.breastRows.length - 1) + " shrink down, disappearing completely into your ");
				if (player.bRows() >= 3) outputText("abdomen");
				else outputText("chest");
				outputText(". The " + player.nippleDescript(player.breastRows.length - 1) + "s even fade until nothing but ");
				if (player.skinType == CoC.SKIN_TYPE_FUR) outputText(player.hairColor + " " + player.skinDesc);
				else outputText(player.skinTone + " " + player.skinDesc);
				outputText(" remains. You've lost a row of breasts!");
				getGame().dynStats("sen", -5);
				player.removeBreastRow(player.breastRows.length - 1, 1);
			}
			//Antennae
			if (changes < changeLimit && player.antennae == CoC.ANTENNAE_NONE && player.horns == 0 && Utils.rand(3) == 0) {
				outputText("\n\nYour head itches momentarily as two floppy antennae sprout from your " + getGame().player.hairDescript() + ".");
				player.antennae = CoC.ANTENNAE_BEE;
				changes++;
			}
			//Horns
			if (changes < changeLimit && player.horns > 0 && Utils.rand(3) == 0) {
				player.horns = 0;
				player.hornType = CoC.HORNS_NONE;
				outputText("\n\nYour horns crumble, falling apart in large chunks until they flake away to nothing.");
				changes++;
			}
			//Bee Legs
			if (changes < changeLimit && player.lowerBody != CoC.LOWER_BODY_TYPE_BEE && Utils.rand(4) == 0) {
				outputText("\n\nYour legs tremble with sudden unbearable pain, as if they're being ripped apart from the inside out and being stitched together again all at once.  You scream in agony as you hear bones snapping and cracking.  A moment later the pain fades and you are able to turn your gaze down to your beautiful new legs, covered in shining black chitin from the thigh down, and downy yellow fuzz along your upper thighs.");
				player.lowerBody = CoC.LOWER_BODY_TYPE_BEE;
				player.legCount = 2;
				changes++;
			}
			//-Nipples reduction to 1 per tit.
			if (player.averageNipplesPerBreast() > 1 && changes < changeLimit && Utils.rand(4) == 0) {
				outputText("\n\nA chill runs over your " + player.allBreastsDescript() + " and vanishes.  You stick a hand under your " + player.armorName + " and discover that your extra nipples are missing!  You're down to just one per ");
				if (player.biggestTitSize() < 1) outputText("'breast'.");
				else outputText("breast.");
				changes++;
				//Loop through and reset nipples
				for (var temp:int = 0; temp < player.breastRows.length; temp++) {
					player.breastRows[temp].nipplesPerBreast = 1;
				}
			}
			//Lose reptile oviposition!
			if (Utils.rand(4) == 0) mutations.updateOvipositionPerk(tfSource);
			//Gain bee oviposition!
			if (changes < changeLimit && player.findPerk(PerkLib.BeeOvipositor) < 0 && player.tailType == CoC.TAIL_TYPE_BEE_ABDOMEN && Utils.rand(2) == 0) {
				outputText("\n\nAn odd swelling starts in your insectile abdomen, somewhere along the underside.  Curling around, you reach back to your extended, bulbous bee part and run your fingers along the underside.  You gasp when you feel a tender, yielding slit near the stinger.  As you probe this new orifice, a shock of pleasure runs through you, and a tubular, black, semi-hard appendage drops out, pulsating as heavily as any sexual organ.  The new organ is clearly an ovipositor!  A few gentle prods confirm that it's just as sensitive; you can already feel your internals changing, adjusting to begin the production of unfertilized eggs.  You idly wonder what laying them with your new bee ovipositor will feel like...");
				outputText("\n\n(Perk Gained:  Bee Ovipositor - Allows you to lay eggs in your foes!)");
				player.createPerk(PerkLib.BeeOvipositor, 0, 0, 0, 0);
				changes++;
			}
			//Bee butt - 66% lower chance if already has a tail
			if (changes < changeLimit && player.tailType != CoC.TAIL_TYPE_BEE_ABDOMEN && (player.tailType == CoC.TAIL_TYPE_NONE || Utils.rand(1.5) == 0) && Utils.rand(4) == 0) {
				if (player.tailType > CoC.TAIL_TYPE_NONE) outputText("\n\nPainful swelling just above your " + getGame().player.buttDescript() + " doubles you over, and you hear the sound of your tail dropping off onto the ground!  Before you can consider the implications, the pain gets worse, and you feel your backside bulge outward sickeningly, cracking and popping as a rounded bee-like abdomen grows in place of your old tail.  It grows large enough to be impossible to hide, and with a note of finality, your stinger slides free with an audible 'snick'.");
				else outputText("\n\nPainful swelling just above your " + getGame().player.buttDescript() + " doubles you over.  It gets worse and worse as the swollen lump begins to protrude from your backside, swelling and rounding with a series of pops until you have a bulbous abdomen hanging just above your butt.  The whole thing is covered in a hard chitinous material, and large enough to be impossible to hide.  You sigh as your stinger slides into place with a 'snick', finishing the transformation.  You have a bee's abdomen.");
				player.tailType = CoC.TAIL_TYPE_BEE_ABDOMEN;
				player.tailVenom = 10;
				player.tailRecharge = 2;
				changes++;
			}
			//Venom Increase
			if (changes < changeLimit && player.tailType == CoC.TAIL_TYPE_BEE_ABDOMEN && player.tailRecharge < 15 && Utils.rand(2)) {
				if (player.tailRecharge < 5) player.tailRecharge += 1;
				if (player.tailRecharge < 10) player.tailRecharge += 1;
				if (player.tailRecharge < 15) player.tailRecharge += 1;
				player.tailVenom += 50;
				if (player.tailVenom > 100) player.tailVenom = 100;
				outputText("\n\nYour abdomen swells with vitality and a drop of venom escapes your stinger as it begins producing it in slightly larger quantities.");
				changes++;
			}
			//Wings
			//Grow bigger bee wings!
			if (changes < changeLimit && player.wingType == CoC.WING_TYPE_BEE_LIKE_SMALL && Utils.rand(4)) {
				changes++;
				player.wingType = CoC.WING_TYPE_BEE_LIKE_LARGE;
				player.wingDesc = "large bee-like";
				outputText("\n\nYour wings tingle as they grow, filling out until they are large enough to lift you from the ground and allow you to fly!  You now have large bee wings!  You give a few experimental flaps and begin hovering in place, a giddy smile plastered on your face by the thrill of flight.");
			}

			//Grow new bee wings if player has none.
			if (changes < changeLimit && (player.wingType == CoC.WING_TYPE_NONE || player.wingType == CoC.WING_TYPE_SHARK_FIN) && Utils.rand(4)) {
				changes++;
				if (player.wingType == CoC.WING_TYPE_SHARK_FIN) outputText("\n\nYou feel an itching on your large back-fin as something begins growing there.  You twist and contort yourself, trying to scratch and bring yourself relief, and failing miserably.  A sense of relief erupts from you as you feel something new grow out from your fin.  You hastily remove the top portion of your " + player.armorName + " and marvel as a pair of small bee-like wings sprout from your back, replacing the fin that once grew there.  Tenderly flexing your new muscles, you find you can flap them quite fast.  Unfortunately you can't seem to flap your little wings fast enough to fly, but they would certainly slow a fall.  A few quick modifications to your " + player.armorName + " later and you are ready to continue your journey with your new bee wings.");
				else outputText("\n\nYou feel an itching between your shoulder-blades as something begins growing there.  You twist and contort yourself, trying to scratch and bring yourself relief, and failing miserably.  A sense of relief erupts from you as you feel something new grow out from your body.  You hastily remove the top portion of your " + player.armorName + " and marvel as a pair of small bee-like wings sprout from your back.  Tenderly flexing your new muscles, you find you can flap them quite fast.  Unfortunately you can't seem to flap your little wings fast enough to fly, but they would certainly slow a fall.  A few quick modifications to your " + player.armorName + " later and you are ready to continue your journey with your new bee wings.");
				player.wingType = CoC.WING_TYPE_BEE_LIKE_SMALL;
				player.wingDesc = "small bee-like";
			}
			//Melt demon wings!
			if (changes < changeLimit && (player.wingType == CoC.WING_TYPE_BAT_LIKE_TINY || player.wingType == CoC.WING_TYPE_BAT_LIKE_LARGE)) {
				changes++;
				outputText("\n\nYour demonic wings ripple, jelly-like.  Worried, you crane back to look, and to your horror, they're melting away!  Runnels of amber honey trail down the wings' edges, building into a steady flow.  In a moment, the only remnant of your wings is a puddle of honey in the dirt.  Even that is gone in seconds, wicked into the dry soil.");
				player.wingType = CoC.WING_TYPE_NONE;
				player.wingDesc = "";
			}
			//Remove gills!
			if (Utils.rand(4) == 0 && player.hasGills() && changes < changeLimit) mutations.updateGills();

			if (special) { //All the speical honey effects occur after any normal bee transformations (if the player wasn't a full bee morph)
				//Cock growth multiplier.
				var mult:int = 1.0;
				if (player.cocks[0].cArea() >= 140) mult -= 0.2;
				if (player.cocks[0].cArea() >= 180) mult -= 0.2;
				if (player.cocks[0].cArea() >= 220) mult -= 0.2;
				if (player.cocks[0].cArea() >= 260) mult -= 0.2;
				if (player.cocks[0].cArea() >= 300) mult -= 0.1;
				if (player.cocks[0].cArea() >= 400) mult -= 0.1; //Cock stops growing at that point.
				//Begin TF
				if (!player.hasCock()) {
					outputText("\n\nYou double over in pain as the effects start to concentrate into your groin.  You need to get release, but what you’ve got just isn’t cutting it.  You fall to the ground and grab at your crotch, trying desperately to get the release you need.  Finally, it happens.  With a sudden burst of intense relief and sexual satisfaction, a new human looking penis bursts from your skin and sprays your seed all over the ground in front of you.  When you’re able to recover and take a look at your new possession.  You now have an eight inch long human cock that is very sensitive to stimulation.");
					player.createCock();
					player.cocks[0].cockLength = Utils.rand(3) + 8;
					player.cocks[0].cockThickness = 2;
					player.orgasm();
					getGame().dynStats("sen", 10);
				}
				else if (player.cocks.length > 1) {
					var biggest:int = player.biggestCockIndex();
					outputText("\n\nThe effects of the honey move towards your groin, and into your " + player.multiCockDescriptLight() + ", causing them to stand at attention.  They quiver for a moment, and feel rather itchy.  Suddenly you are overwhelmed with pleasure as your " + player.cockDescript(biggest) + " is absorbed into your " + player.cockDescript(0) + "!  You grab onto the merging cock and pump it with your hands as it increases in size and you cum in pleasure.  Your " + player.cockDescript(0) + " seems a lot more sensitive now...");
					player.cocks[0].cockLength		+= 5 * Math.sqrt(0.2 * player.cocks[biggest].cArea());
					player.cocks[0].cockThickness	+= Math.sqrt(0.2 * player.cocks[biggest].cArea());
					player.removeCock(biggest, 1);
					player.orgasm();
					getGame().dynStats("sen", 5);
				}
				else if (player.cocks[0].cArea() < 100) {
					outputText("\n\nYour " + player.cockDescript(0) + " suddenly becomes rock hard and incredibly sensitive to the touch.  You pull away your " + player.armorName + ", and start to masturbate furiously as it rapidly swells in size.  When the change finally finishes, you realize that your " + player.cockDescript(0) + " has both grown much longer and wider!  ");
					if (player.cocks[0].cArea() <= 20)
						outputText("It now swings as low as your knees!");
					else if (player.cocks[0].cArea() <= 50)
						outputText("While erect, your massive member fills the lower half of your vision.");
					else outputText("Your member is now simply huge, you wonder what in the world could actually take your massive size now?");
					outputText("");
					player.cocks[0].cockLength += (Utils.rand(3) + 4) * mult; //4 to 6 inches in length
					player.cocks[0].cockThickness += (0.1 * Utils.rand(5) + 0.5) * mult; //0.5 to 1 inches in thickness
					getGame().dynStats("sen", 5);
				}
				else if (player.cocks[0].cockType != CockTypesEnum.BEE && player.race() == "bee-morph") {
					outputText("\n\nYour huge member suddenly starts to hurt, especially the tip of the thing.  At the same time, you feel your length start to get incredibly sensitive and the base of your shaft starts to itch.  You tear off your " + player.armorName + " and watch in fascination as your " + player.cockDescript(0) + " starts to change.  The shaft turns black, while becoming hard and smooth to the touch, while the base develops a mane of four inch long yellow bee hair.  As the transformation continues, your member grows even larger than before.  However, it is the tip that keeps your attention the most, as a much finer layer of short yellow hairs grow around it.  Its appearance isn’t the thing that you care about right now, it is the pain that is filling it.\n\n");
					outputText("It is entirely different from the usual feeling you get when you’re cock grows larger from imbibing transformative substances.  When the changes stop, the tip is shaped like a typical human mushroom cap covered in fine bee hair, but it feels nothing like what you’d expect a human dick to feel like.  Your whole length is incredibly sensitive, and touching it gives you incredible stimulation, but you’re sure that no matter how much you rub it, you aren’t going to cum by yourself.  You want cool honey covering it, you want tight walls surrounding it, you want to fertilize hundreds of eggs with it.  These desires are almost overwhelming, and it takes a lot of will not to just run off in search of the bee girl that gave you that special honey right now.  This isn’t good.\n\n");
					outputText("You now have a bee cock!");
					player.cocks[0].cockType = CockTypesEnum.BEE;
					player.cocks[0].cockLength += 5 * mult;
					player.cocks[0].cockThickness += 1 * mult;
					getGame().dynStats("sen", 15);
				}
				else {
					if (mult > 0) {
						outputText("\n\nThe effects of the honey don’t seem to focus on your groin this time, but you still feel your "  + player.cockDescript(0) + " grow slightly under your " + player.armorName + ".");
						player.cocks[0].cockLength += (0.1 * Utils.rand(10) + 1) * mult;
						player.cocks[0].cockThickness += (0.1 * Utils.rand(2) + 0.1) * mult;
					}
					else {
						outputText("\n\nThe effects of the honey don’t seem to focus on your groin this time and you have a feeling that your " + player.cockDescript(0) + " hasn't grown at all! Perhaps you've reached the upper limit of cock growth from special honey?");
					}
					getGame().dynStats("sen", 3);
				}
				if (player.cor >= 5) {
					outputText("\n\nYour mind feels surprisingly clear of the twisted thoughts that have plagued it as of late, but you find yourself feeling more and more aroused than usual.");
					var corLoss:int = Math.min(0.1 * player.cor + 5, player.cor);
					getGame().dynStats("cor", -corLoss, "lib", corLoss); //Lose corruption and gains that much libido
				}
				else {
					outputText("\n\nYou find your mind is drifting to the thought of using your member to fertilize hundreds and hundreds of eggs every day.  You shake your head, the bizarre fantasy catching you completely off guard.");
					getGame().dynStats("cor=", 0, "lib", 5);
				}
				if (player.femininity >= 60 || player.femininity <= 40) {
					outputText("\n\nYour face shifts in shape, becoming more androgynous.");
					if (player.femininity >= 60)
						player.femininity -= 3;
					else player.femininity += 3;
				}
				getGame().dynStats("lust", 0.2 * player.lib + 5);
			}
			game.flags[kFLAGS.TIMES_TRANSFORMED] += changes;
			return(false);
		}
    }
}


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

	public class BimboLiqueur extends Consumable {

		public function BimboLiqueur() {
			super("BimboLq", "BimboLq", "a potent bottle of 'Bimbo Liqueur'", 1000, "This small bottle of liqueur is labelled 'Bimbo Liqueur'.  There's a HUGE warning label about the effects being strong and usually permanent, so you should handle this with care.");
		}

		override public function canUse():Boolean {
			if (game.player.findPerk(PerkLib.FutaForm) < 0) return true;
			outputText("Ugh.  This stuff is so, like... last year.  Maybe you can find someone else to feed it to?\n\n");
			return false;
		}

		override public function useItem():Boolean {
			if (game.player.findPerk(PerkLib.BroBody) >= 0) {
				outputText("You wince as the stuff hits your stomach, already feeling the insidious effects beginning to take hold.  A lengthy belch escapes your lips as your stomach gurgles, and you giggle abashedly to yourself.");
				if (game.player.tallness < 77) {
					outputText(" ...Did the ground just get farther away?  You glance down and realize, you're growing!  Like a sped-up flower sprout, you keep on getting taller until finally stopping around... six and a half feet, you assume.  Huh.  You didn't expect that to happen!");
					game.player.tallness = 77;
				}
				if (game.player.biggestTitSize() < 7) {
					if (game.player.biggestTitSize() < 1)
						outputText("  Tingling, your chest begins to itch, then swell into a pair of rounded orbs.  ");
					else outputText("  You feel a tingling inside your breasts.  ");
					outputText("They quiver ominously, and you can't help but squeeze your tits together to further appreciate the boobquake as another tremor runs through them.  Unexpectedly, the shaking pushes your hands further apart as your tits balloon against each other, growing rapidly against your now-sunken fingers.  The quakes continue until calming at around an E-cup.");
					game.player.breastRows[0].breastRating = 7;
				}
				//(If vagina = 2tight:
				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 more... feminine?  Heavy, filling lips purse in disappointment as your face takes on a very feminine cast.  You're probably pretty hot now!\n\n");
				if (game.player.femininity < 80) game.player.femininity = 80;

				outputText("Your surging, absurdly potent libido surges through your body, reminding you that you need to fuck.  Not just bitches, but guys too.  Hard cocks, wet pussies, hell, you don't care.  They can have both or a dozen of either.  You just want to get laid and bone something, hopefully at the same time!");
				outputText("\n\n(Perks Lost: Bro Body");
				if (game.player.findPerk(PerkLib.BroBrains) >= 0) outputText(", Bro Brains");
				outputText(")\n");
				outputText("(Perks Gained: Futa Form, Futa Faculties)\n");
				game.player.removePerk(PerkLib.BroBody);
				game.player.removePerk(PerkLib.BroBrains);
				game.player.createPerk(PerkLib.FutaFaculties, 0, 0, 0, 0);
				game.player.createPerk(PerkLib.FutaForm, 0, 0, 0, 0);
				if (game.player.inte > 35) {
					game.player.inte = 35;
					game.dynStats("int", -0.1);
				}
				if (game.player.lib < 50) {
					game.player.lib = 50;
					game.dynStats("lib", .1);
				}
			}
			else {
				outputText("You pop the cork from the flask and are immediately assaulted by a cloying, spiced scent that paints visions of a slutty slave-girl's slightly-spread folds.  Wow, this is some potent stuff!  Well, you knew what you were getting into when you found this bottle!  You open wide and guzzle it down, feeling the fire of alcohol burning a path to your belly.  The burning quickly fades to a pleasant warmth that makes you light-headed and giggly.\n\n");
				if (game.player.hairColor != "platinum blonde") {
					outputText("The first change that you notice is to your " + game.player.hairDescript() + ".  It starts with a tingling in your scalp and intensifies ");
					if (game.player.hairLength < 36) {
						outputText("as you feel the weight of your hair growing heavier and longer.");
						game.player.hairLength = 36;
					}
					else outputText("as your hair grows thicker and heavier.");
					outputText("  You grab a lock of the silken strands and watch open-mouthed while streaks so blonde they're almost white flow down the " + game.player.hairColor + " hair.  It goes faster and faster until your hair has changed into perfectly bimbo-blonde, flowing locks.\n\n");
					game.player.hairColor = "platinum blonde";
				}

				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 {
					if (game.player.isTaur()) {
						outputText("You wish you could sink your fingers into your sloppy, wet cunt, but as a centaur, you can't quite reach.");
						if (game.player.vaginas[0].vaginalWetness < Appearance.VAGINA_WETNESS_SLICK)
							game.player.vaginas[0].vaginalWetness = Appearance.VAGINA_WETNESS_SLICK;
					}
					else {
						outputText("You sink your fingers into your ");
						if (game.player.vaginas[0].vaginalWetness < Appearance.VAGINA_WETNESS_SLICK) {
							outputText("now ");
							game.player.vaginas[0].vaginalWetness = Appearance.VAGINA_WETNESS_SLICK;
						}
						outputText("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:
package classes.Items.Consumables
{
	import classes.GlobalFlags.kGAMECLASS;
	import classes.internals.Utils;
	import classes.Items.Consumable;
	import classes.Items.ConsumableLib;

	/**
	 * Body lotions, courtesy of Foxxling.
	 * @author Kitteh6660
	 */
	public class BodyLotion extends Consumable
	{
		private var _adj:String;

		public function BodyLotion(id:String, adj:String, longAdj:String)
		{
			this._adj = adj.toLowerCase();
			var shortName:String = adj + " Ltn";
			var longName:String = "a flask of " + this._adj + " lotion"
			var value:int = ConsumableLib.DEFAULT_VALUE;
			var description:String = "A small wooden flask filled with a " + longAdj + " . A label across the front says, \"" + adj + " Lotion.\""
			super(id, shortName, longName, value, description);
		}

		private function liquidDesc():String {
			var liquidDesc:String = "";
			switch(_adj) {
				case "smooth":
					switch(Utils.rand(2)) { //Nested switch-and-case FTW!
						case 0:
							liquidDesc = "smooth liquid";
							break;
						case 1:
							liquidDesc = "thick cream";
							break;
						default:
							liquidDesc = "smooth liquid";
					}
					break;
				case "rough":
					switch(Utils.rand(2)) {
						case 0:
							liquidDesc = "abrasive goop";
							break;
						case 1:
							liquidDesc = "rough textured goop";
							break;
						default:
							liquidDesc = "abrasive goop";
					}
					break;
				case "sexy":
					switch(Utils.rand(3)) {
						case 0:
							liquidDesc = "smooth liquid";
							break;
						case 1:
							liquidDesc = "attractive cream";
							break;
						case 2:
							liquidDesc = "beautiful cream";
							break;
						default:
							liquidDesc = "smooth liquid";
					}
					break;
				case "clear":
					switch(Utils.rand(2)) {
						case 0:
							liquidDesc = "smooth liquid";
							break;
						case 1:
							liquidDesc = "thick cream";
							break;
						default:
							liquidDesc = "smooth liquid";
					}
					break;
				default: //Failsafe
					liquidDesc = "cream";
			}
			return liquidDesc;
		}

		override public function useItem():Boolean {
			if (game.player.skinTone == _adj) {
				outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the flask of lotion and rubbing", "uncork the flask of lotion and rub") + " the " + liquidDesc() + " across your body. Once you’ve finished you feel reinvigorated. ");
				game.HPChange(10, true);
			}
			else {
				if ([SKIN_TYPE_GOO, SKIN_TYPE_DRACONIC].indexOf(game.player.skinType) == -1) { //If skin is goo or dragon scales, don't change.
					if (_adj != "clear") game.player.skinAdj = _adj;
					else game.player.skinAdj = "";
				}
				switch(game.player.skinType) {
					case SKIN_TYPE_PLAIN: //Plain
						outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the flask of lotion and rubbing", "uncork the flask of lotion and rub") + " the " + liquidDesc() + " across your body. As you rub the mixture into your arms and [chest], your whole body begins to tingle pleasantly. ");
						switch(_adj) {
							case "smooth":
								outputText("Soon your skin is smoother but in a natural healthy way.");
								break;
							case "rough":
								outputText("Soon your skin is rougher as if you’ve just finished a long day’s work.");
								break;
							case "sexy":
								outputText("Soon your skin is so sexy you find it hard to keep your hands off yourself.");
								break;
							case "clear":
								outputText("Soon the natural beauty of your " + game.player.skinFurScales() + " is revealed without anything extra or unnecessary.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case SKIN_TYPE_FUR: //Fur
						outputText("" + game.player.clothedOrNaked("Once you’ve disrobed you take the lotion and", "You take the lotion and") + " begin massaging it into your skin despite yourself being covered with fur. It takes little effort but once you’ve finished... nothing happens. A few moments pass and then your skin begins to tingle. ");
						switch(_adj) {
							case "smooth":
								outputText("Soon you part your fur to reveal smooth skin that still appears natural.");
								break;
							case "rough":
								outputText("Soon you part your fur to reveal rough skin that still appears natural.");
								break;
							case "sexy":
								outputText("Soon you part your fur to reveal sexy skin that makes you want to kiss yourself.");
								break;
							case "clear":
								outputText("Soon you part your fur to reveal the natural beauty of your " + game.player.skinFurScales() + " skin.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case SKIN_TYPE_SCALES: //Scales
						outputText("You " + game.player.clothedOrNaked("take a second to disrobe before uncorking the flask of lotion and rubbing", "uncork the flask of lotion and rub") + " the " + liquidDesc() + " across your body. As you rub the mixture into your arms and [chest], your whole body begins to tingle pleasantly.");
						switch(_adj) {
							case "smooth":
								outputText("Soon you part your fur to reveal smooth skin that still appears natural.");
								break;
							case "rough":
								outputText("Soon you part your fur to reveal rough skin that still appears natural.");
								break;
							case "sexy":
								outputText("Soon you part your fur to reveal sexy skin that makes you want to kiss yourself.");
								break;
							case "clear":
								outputText("Soon you part your fur to reveal the natural beauty of your " + game.player.skinFurScales() + " skin.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case SKIN_TYPE_GOO: //Goo
						outputText("You take the lotion and pour the " + liquidDesc() + " into yourself. The concoction dissolves, leaving your gooey epidermis unchanged. As a matter of fact nothing happens at all.");
						//No changes due to gooey skin.
						break;
					case SKIN_TYPE_DRACONIC: //Dragon scales
						outputText("You take the lotion and pour the " + liquidDesc() + " on your scales. The concoction dissolves, leaving your dragon scales unchanged. As a matter of fact nothing happens at all.");
						//No changes due to dragon scales.
						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 " + _adj + " skin.");
				}
			}
			game.inventory.itemGoNext();
			return true;
		}
	}

}


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

	public class CumBread extends Consumable
	{

		public function CumBread() {
			super("C.Bread","C.Bread", "a bowl of cum with bread pieces floating in it", ConsumableLib.DEFAULT_VALUE, "A bowl of cum with pieces of bread floating in it.  Eating this would take the edge off your hunger but damage your dignity.");
		}

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

		override public function useItem():Boolean {
			game.prison.prisonItemBread(true, true);
			return true;
		}

	}

}


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

	public final class DeBimbo extends Consumable {

		public function DeBimbo() {
			super("Debimbo", "Debimbo", "a bottle marked as 'Debimbo'", 250);
		}

		override public function get description():String
		{
			if (game.player.findPerk(PerkLib.BimboBrains) >= 0 || game.player.findPerk(PerkLib.FutaFaculties) >= 0)
				return "This should totally like, fix your brain and stuff.  You don't really think anything is wrong with your head - it feels all pink and giggly all the time.";
			else
				return "This draft is concocted from five scholar's teas and who knows what else.  Supposedly it will correct the stupifying effects of Bimbo Liqueur. \n\nType: Consumable";
		}

		override public function canUse():Boolean {
			if (game.player.findPerk(PerkLib.BimboBrains) >= 0 || game.player.findPerk(PerkLib.FutaFaculties) >= 0 || game.player.findPerk(PerkLib.BroBrains) >= 0) return true;
			outputText("You can't use this right now, and it's too expensive to waste!\n\n");
			return false;
		}

		override public function useItem():Boolean {
			if (game.player.findPerk(PerkLib.BimboBrains) >= 0) {
				outputText("\n\n(Perk Removed:  Bimbo Brains - Your intelligence and speech patterns are no longer limited to that of a bimbo.)");
				game.player.removePerk(PerkLib.BimboBrains);
			}
			else if (game.player.findPerk(PerkLib.FutaFaculties) >= 0) {
				outputText("\n\n(Perk Removed:  Futa Faculties - Your intelligence and speech patterns are no longer limited to that of a futanari bimbo.)");
				game.player.removePerk(PerkLib.FutaFaculties);
			}
			else if (game.player.findPerk(PerkLib.BroBrains) >= 0) {
				outputText("\n\n(Perk Removed:  Bro Brains - Your intelligence and speech patterns are no longer limited to that of a male who constantly works out.)");
				game.player.removePerk(PerkLib.BroBrains);
			}
			return(false);
		}

		override public function useText():void {
			if (game.player.findPerk(PerkLib.BroBrains) >= 0) {
				outputText("You pinch your nose and swallow the foul-tasting mixture with a grimace.  Oh, that's just nasty!  You drop the vial, which shatters on the ground, clutching at your head as a wave of nausea rolls over you.  Stumbling back against a rock for support, you close your eyes.  A constant, pounding ache throbs just behind your temples, and for once, you find yourself speechless.  A pained groan slips through your lips as thoughts and memories come rushing back.  One after another, threads of cognizant thought plow through the simple matrices of your bro mind, shredding and replacing them.");
				outputText("\n\nYou... you were a brute who constantly thinks of working out and fucking!  You shudder as your faculties return, the pain diminishing with each passing moment.");
			}
			else {
				outputText("Well, time to see what this smelly, old rat was on about!  You pinch your nose and swallow the foul-tasting mixture with a grimace.  Oh, that's just nasty!  You drop the vial, which shatters on the ground, clutching at your head as a wave of nausea rolls over you.  Stumbling back against a rock for support, you close your eyes.  A constant, pounding ache throbs just behind your temples, and for once, you find yourself speechless.  A pained groan slips through your lips as thoughts and memories come rushing back.  One after another, threads of cognizant thought plow through the simple matrices of your bimbo mind, shredding and replacing them.");
				outputText("\n\nYou... you were an air-headed ditz!  A vacuous, idiot-girl with nothing between her ears but hunger for dick and pleasure!  You shudder as your faculties return, the pain diminishing with each passing moment.");
			}
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.Items.*;
	/**
	 * 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 {
			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.");
			getGame().player.refillHunger(10);
			getGame().forest.erlkingScene.deerTFs();
			return false;
		}
	}

}