code:
/**
 * Created by aimozg on 10.01.14.
 */
package classes.Items
{
	import classes.BaseContent;
	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:Consumable = new IncubiDraft(IncubiDraft.TAINTED);
		public const S_DREAM:Consumable = new SuccubisDream();
		public const SDELITE:Consumable = new SuccubisDelight(SuccubisDelight.TAINTED);
		public const SUCMILK:Consumable = new SuccubiMilk(SuccubiMilk.TAINTED);
		//Untainted
		public const P_DRAFT:Consumable = new IncubiDraft(IncubiDraft.PURIFIED);
		public const P_S_MLK:Consumable = new SuccubiMilk(SuccubiMilk.PURIFIED);
		public const PSDELIT:Consumable = new SuccubisDelight(SuccubisDelight.PURIFIED);
//		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 RUSSDYE:HairDye = new HairDye("RussetD", "Russet");
		public const YELLODY:HairDye = new HairDye("YelloDy", "Yellow");
		public const WHITEDY:HairDye = new HairDye("WhiteDy", "White");
//		SKIN OILS
		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 RED__OL:SkinOil = new SkinOil("Red Oil", "Red");
		public const ORANGOL:SkinOil = new SkinOil("OranOil", "Orange");
		public const YELLOOL:SkinOil = new SkinOil("YeloOil", "Yellow");
		public const GREENOL:SkinOil = new SkinOil("GrenOil", "Green");
		public const WHITEOL:SkinOil = new SkinOil("WhitOil", "White");
		public const BLUE_OL:SkinOil = new SkinOil("BlueOil", "Blue");
		public const BLACKOL:SkinOil = new SkinOil("BlakOil", "Black");
		public const PURPLOL:SkinOil = new SkinOil("PurpOil", "Purple");
		public const SILVROL:SkinOil = new SkinOil("SlvrOil", "Silver");
		public const YELGROL:SkinOil = new SkinOil("YlGrOil", "Yellow Green");
		public const SPRGROL:SkinOil = new SkinOil("SpGrOil", "Spring Green");
		public const CYAN_OL:SkinOil = new SkinOil("CyanOil", "Cyan");
		public const OCBLUOL:SkinOil = new SkinOil("OBluOil", "Ocean Blue");
		public const ELVIOOL:SkinOil = new SkinOil("EVioOil", "Electric Violet");
		public const MAGENOL:SkinOil = new SkinOil("MagenOl", "Magenta");
		public const DPPNKOL:SkinOil = new SkinOil("DPnkOil", "Deep Pink");
		public const PINK_OL:SkinOil = new SkinOil("PinkOil", "Pink");
//		BODY LOTIONS
		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:Consumable = new BlackRubberEgg(BlackRubberEgg.SMALL);
		public const BLUEEGG:Consumable = new BlueEgg(BlueEgg.SMALL);
		public const BROWNEG:Consumable = new BrownEgg(BrownEgg.SMALL);
		public const PINKEGG:Consumable = new PinkEgg(PinkEgg.SMALL);
		public const PURPLEG:Consumable = new PurpleEgg(PurpleEgg.SMALL);
		public const WHITEEG:Consumable = new WhiteEgg(WhiteEgg.SMALL);
		//Large
		public const L_BLKEG:Consumable = new BlackRubberEgg(BlackRubberEgg.LARGE);
		public const L_BLUEG:Consumable = new BlueEgg(BlueEgg.LARGE);
		public const L_BRNEG:Consumable = new BrownEgg(BrownEgg.LARGE);
		public const L_PNKEG:Consumable = new PinkEgg(PinkEgg.LARGE);
		public const L_PRPEG:Consumable = new PurpleEgg(PurpleEgg.LARGE);
		public const L_WHTEG:Consumable = new WhiteEgg(WhiteEgg.LARGE);
		//Others
		public const DRGNEGG:Consumable = new EmberEgg();
		public const NPNKEGG:NeonPinkEgg = new NeonPinkEgg();

//		FOOD & BEVERAGES
		public const BC_BEER:BlackCatBeer = new BlackCatBeer();
		public const BHMTCUM:Consumable = new BehemothCum();
		public const BIMBOCH:BimboChampagne = new BimboChampagne();
		public const C_BREAD:Consumable = new CumBread();
		public const CCUPCAK:Consumable = new GiantChocolateCupcake();
		public const FISHFIL:Consumable = new FishFillet();
		public const FR_BEER:Consumable = new FrothyBeer();
		public const GODMEAD:Consumable = new GodMead();
		public const H_BISCU:Consumable = new HardBiscuits();
		public const IZYMILK:Consumable = new IsabellaMilk();
		public const M__MILK:Consumable = new MarbleMilk();
		public const MINOCUM:Consumable = new MinotaurCum(MinotaurCum.STANDARD);
		public const P_BREAD:Consumable = new PrisonBread();
		public const P_M_CUM:Consumable = new MinotaurCum(MinotaurCum.PURIFIED);
		public const P_WHSKY:PhoukaWhiskey = new PhoukaWhiskey();
		public const P_SEED:PumpkinSeed = new PumpkinSeed();
		public const PROMEAD:Consumable = new ProMead();
		public const PURPEAC:Consumable = new PurityPeach();
		public const SHEEPMK:Consumable = new SheepMilk();
		public const S_WATER:Consumable = new SpringWater();
		public const TRAILMX:Consumable = new TrailMix();
		public const URTACUM:Consumable = new UrtaCum();
		public const W_PDDNG:Consumable = new WinterPudding();
//		GROWERS/SHRINKERS
		public const REDUCTO:Consumable = new Reducto();
		public const GROPLUS:Consumable = new GroPlus();
//		MAGIC BOOKS
		public const B__BOOK:Consumable = new BlackSpellBook();
		public const W__BOOK:Consumable = new WhiteSpellBook();
		public const G__BOOK:Consumable = new GraySpellBook();
//		RARE ITEMS (Permanent effects, gives perks on consumption)
		public const BIMBOLQ:Consumable = new BimboLiqueur();
		public const BROBREW:Consumable = new BroBrew();
		public const HUMMUS2:Consumable = new SuperHummus();
		public const LOLIPOP:LoliPop = new LoliPop();
		public const LIDDELL:Consumable = new Liddellium();
		public const P_PEARL:Consumable = new PurePearl();
//		NON-TRANSFORMATIVE ITEMS
		public const AKBALSL:Consumable = new AkbalSaliva();
		public const C__MINT:Consumable = new Mint();
		public const CERUL_P:Consumable = new CeruleanPotion();
		public const CLOVERS:Consumable = new Clovis();
		public const COAL___:Consumable = new Coal();
		public const DEBIMBO:DeBimbo = new DeBimbo();
		public const EXTSERM:HairExtensionSerum = new HairExtensionSerum();
		public const F_DRAFT:Consumable = new LustDraft(LustDraft.ENHANCED);
		public const H_PILL:Consumable = new HealPill();
		public const HRBCNT:Consumable = new HerbalContraceptive();
		public const ICICLE_:Consumable = new IceShard();
		public const KITGIFT:KitsuneGift = new KitsuneGift();
		public const L_DRAFT:Consumable = new LustDraft(LustDraft.STANDARD);
		public const LACTAID:Consumable = new Lactaid();
		public const LUSTSTK:LustStick = new LustStick();
		public const MILKPTN:Consumable = new MilkPotion();
		public const NUMBOIL:Consumable = new NumbingOil();
		public const NUMBROX:Consumable = new NumbRocks();
		public const OVIELIX:OvipositionElixir = new OvipositionElixir();
		public const OVI_MAX:OvipositionMax = new OvipositionMax();
		public const PEPPWHT:Consumable = new PeppermintWhite();
		public const PPHILTR:Consumable = new PurityPhilter();
		public const PRNPKR :Consumable = new PrincessPucker();
		public const SENSDRF:Consumable = new SensitivityDraft();
		public const SMART_T:Consumable = new ScholarsTea();
		public const VITAL_T:Consumable = new VitalityTincture();
		public const W_STICK:WingStick = new WingStick();
		public const B_SHARD:BeautifulSwordShard = new BeautifulSwordShard();

//		TRANSFORMATIVE ITEMS
		public const B_GOSSR:Consumable = new SweetGossamer(SweetGossamer.DRIDER);
		public const BOARTRU:Consumable = new PigTruffle(true);
		public const DRAKHRT:EmberTFs = new EmberTFs(1);
		public const DRYTENT:Consumable = new ShriveledTentacle();
		public const ECHIDCK:Consumable = new EchidnaCake();
		public const ECTOPLS:Consumable = new Ectoplasm();
		public const EMBERBL:EmberTFs = new EmberTFs();
		public const EQUINUM:Consumable = new Equinum();
		public const FOXBERY:Consumable = new FoxBerry(FoxBerry.STANDARD);
		public const FRRTFRT:Consumable = new FerretFruit();
		public const FOXJEWL:Consumable = new FoxJewel(FoxJewel.STANDARD);
		public const GLDRIND:GoldenRind = new GoldenRind();
		public const GLDSEED:Consumable = new GoldenSeed(GoldenSeed.STANDARD);
		public const GOB_ALE:Consumable = new GoblinAle();
		public const HUMMUS_:Consumable = new RegularHummus();
		public const IMPFOOD:Consumable = new ImpFood();
		public const KANGAFT:Consumable = new KangaFruit(KangaFruit.STANDARD);
		public const LABOVA_:LaBova     = new LaBova(LaBova.STANDARD);
		public const MAGSEED:Consumable = new GoldenSeed(GoldenSeed.ENHANCED);
		public const MGHTYVG:Consumable = new KangaFruit(KangaFruit.ENHANCED);
		public const MOUSECO:Consumable = new MouseCocoa();
		public const MINOBLO:Consumable = new MinotaurBlood();
		public const MYSTJWL:Consumable = new FoxJewel(FoxJewel.MYSTIC);
		public const OCULUMA:Consumable = new OculumArachnae();
		public const P_LBOVA:Consumable = new LaBova(LaBova.PURIFIED);
		public const PIGTRUF:Consumable = new PigTruffle(false);
		public const PRFRUIT:Consumable = new PurpleFruit();
		public const PROBOVA:Consumable = new LaBova(LaBova.ENHANCED);
		public const RDRROOT:Consumable = new RedRiverRoot();
		public const REPTLUM:Consumable = new Reptilum();
		public const RHINOST:Consumable = new RhinoSteak();
		public const RINGFIG:Consumable = new RingtailFig();
		public const RIZZART:Consumable = new RizzaRoot();
		public const S_GOSSR:Consumable = new SweetGossamer(SweetGossamer.SPIDER);
		public const SALAMFW:Consumable = new Salamanderfirewater();
		public const SATYR_W:Consumable = new SatyrWine();
		public const SHARK_T:Consumable = new SharkTooth(false);
		public const SNAKOIL:Consumable = new SnakeOil();
		public const TAURICO:Consumable = new Taurinum();
		public const TOTRICE:Consumable = new TonOTrice();
		public const TRAPOIL:Consumable = new TrapOil();
		public const TSCROLL:Consumable = new TatteredScroll();
		public const TSTOOTH:Consumable = new SharkTooth(true);
		public const VIXVIGR:Consumable = new FoxBerry(FoxBerry.ENHANCED);
		public const W_FRUIT:Consumable = new WhiskerFruit();
		public const WETCLTH:Consumable = new WetCloth();
		public const WOLF_PP:Consumable = new WolfPepper();
		public const UBMBOTT:Consumable = new UnlabeledBrownMilkBottle();
		//Bzzzzt! Bee honey ahoy!
		public const BEEHONY:Consumable = new BeeHoney(false, false);
		public const PURHONY:Consumable = new BeeHoney(true, false);
		public const SPHONEY:Consumable = new BeeHoney(false, true);
		//Canine puppers, I mean peppers
		public const CANINEP:Consumable = new CaninePepper(CaninePepper.STANDARD);
		public const LARGEPP:Consumable = new CaninePepper(CaninePepper.LARGE);
		public const DBLPEPP:Consumable = new CaninePepper(CaninePepper.DOUBLE);
		public const BLACKPP:Consumable = new CaninePepper(CaninePepper.BLACK);
		public const KNOTTYP:Consumable = new CaninePepper(CaninePepper.KNOTTY);
		public const BULBYPP:Consumable = new CaninePepper(CaninePepper.BULBY);

		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];
		public const CUM_ITEM:Array = [MINOCUM, URTACUM, BHMTCUM];

		public const foodItems:Array = [BC_BEER,C_BREAD,CCUPCAK,FISHFIL,FR_BEER,GODMEAD,H_BISCU,IZYMILK,M__MILK,P_BREAD,P_WHSKY,PROMEAD,PURPEAC,SHEEPMK,S_WATER,TRAILMX,W_PDDNG,BEEHONY, BLACKPP, BOARTRU, BULBYPP, CANINEP, DBLPEPP, FOXBERY, FRRTFRT, GOB_ALE, HUMMUS_, IMPFOOD, KANGAFT, KNOTTYP, MOUSECO, PIGTRUF, PRFRUIT, PURHONY, SALAMFW, SATYR_W, W_FRUIT, WOLF_PP,L_BLKEG,L_BLUEG,L_BRNEG,L_PNKEG,L_PRPEG,L_WHTEG,BLACKEG,BLUEEGG,BROWNEG,PINKEGG,PURPLEG,WHITEEG,P_SEED];

		public function ConsumableLib() {}
	}
}


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

	public class AkbalSaliva extends Consumable
	{
		public function AkbalSaliva()
		{
			super("AkbalSl","AkbalSlv", "a vial of Akbal's saliva", ConsumableLib.DEFAULT_VALUE,"This corked vial of Akbal's saliva is said to contain healing properties. ");
		}

		override public function useItem():Boolean
		{
			outputText("You uncork the vial and chug down the saliva.  ");
			player.HPChange((player.maxHP() / 4), true);
			player.refillHunger(5);

			return false;
		}

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

license: unknown


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

	public final class BeautifulSwordShard extends Consumable {

		public function BeautifulSwordShard() {
			super("S. Shard", "S. Shard", "a beautiful sword shard", 200, "A shard of the once mighty beautiful sword. The craftsmanship required to rebuild it has been lost; however, some of its holy power remains, and may be used in combat.");

			}

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

		override public function useItem():Boolean {
			clearOutput();
			outputText("You hold the shard of the beautiful sword and point it at the enemy. The shard glows brightly, and a beam of light emerges from it, speeding towards " + monster.a + monster.short + "!\n");
			if (monster.spe - 80 > Utils.rand(100) + 1) { //1% dodge for each point of speed over 80
				outputText("Somehow " + monster.a + monster.short + "'");
				if (!monster.plural) outputText("s");
				outputText(" incredible speed allows " + monster.pronoun2 + " to avoid the beam!  The shard rusts completely and turns into dust.");
			}
			else { //Not dodged
				var damage:Number = Math.round((70 + Utils.rand(61))*(1 + monster.cor/100)) ;
				outputText(monster.capitalA + monster.short + " is hit with the beam of light!  The shard rusts completely and turns into dust as the beam is channeled, scorching and blinding " + monster.pronoun2 + ". (" + damage + ")");
				monster.createStatusEffect(StatusEffects.Blind, 2, 0, 0, 0);
				monster.HP -= damage;
				if (monster.HP < 0) monster.HP = 0;
			}
			return(false);
		}
	}
}


code:
/**
 * Created by K.Quesom 11.06.14
 */
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	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 && 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 = player;
			var pure:Boolean = (value == PURE_HONEY_VALUE);
			var special:Boolean = (value == SPECIAL_HONEY_VALUE);
			mutations.initTransformation([2, 2, 2]);
			clearOutput();
			player.slimeFeed();
			//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 (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 (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.");
				}
				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");
				dynStats("cor", -(1 + (player.cor / 20)));
				//Libido Reduction
				if (player.cor > 0 && changes < changeLimit && Utils.rand(1.5) == 0 && player.lib100 > 40) {
					outputText(" and settling your overcharged sex-drive a bit.");
					dynStats("lib", -3, "lus", -20);
					changes++;
				}
				else if (player.cor > 0) outputText(".");
			}
			//bee item corollary:
			if (changes < changeLimit && player.hair.type == 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.hair.type = 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.inte100 < 80) {
				dynStats("int", 0.1 * (80 - player.inte100));
				outputText("\n\nYou spend a few moments analyzing the taste and texture of the honey's residue, feeling awfully smart.");
			}
			//Sexual Stuff
			//No idears
			//Appearance Stuff
			//Hair Color
			if (changes < changeLimit && (player.hair.color != "shiny black" && player.hair.color != "black and yellow") && player.hair.length > 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.hair.color = "black and yellow";
				else player.hair.color = "shiny black";
				outputText("Your hair is now " + player.hair.color + ", just like a bee-girl's!");
				changes++;
			}
			//Hair Length
			if (changes < changeLimit && player.hair.length < 25 && Utils.rand(3) == 0) {
				outputText("\n\nFeeling a bit off-balance, you discover your hair has lengthened, ");
				player.hair.length += Utils.rand(4) + 1;
				outputText("becoming " + player.hairDescript() + ".");
				changes++;
			}
			//-Remove extra breast rows
			if (changes < changeLimit && player.bRows() > 2 && Utils.rand(3) == 0 && !flags[kFLAGS.HYPER_HAPPY]) {
				mutations.removeExtraBreastRow(tfSource);
			}
			//Antennae
			if (changes < changeLimit && player.antennae.type == Antennae.NONE && player.horns.value == 0 && Utils.rand(3) == 0) {
				outputText("\n\nYour head itches momentarily as two floppy antennae sprout from your " + player.hairDescript() + ".");
				player.antennae.type = Antennae.BEE;
				changes++;
			}
			//Horns
			if (changes < changeLimit && player.horns.value > 0 && Utils.rand(3) == 0) {
				player.horns.value = 0;
				player.horns.type = 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.type != LowerBody.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.type = LowerBody.BEE;
				player.lowerBody.legCount = 2;
				changes++;
			}
			//(Arms to carapace-covered arms)
			if (player.arms.type !== Arms.BEE && changes < changeLimit && Utils.rand(4) === 0) {
				outputText("\n\n");
				if (player.arms.type === Arms.SPIDER) {
					outputText("On your upper arms slowly starting to grown yellow fuzz making them looks more like those of bee.");
				} else {
					//(Bird pretext)
					if (player.arms.type === Arms.HARPY) {
						outputText("The feathers covering your arms fall away, leaving them to return to a far more human appearance.  ");
					}
					outputText("You watch, spellbound, while your forearms gradually become shiny.  The entire outer structure of your arms tingles"
					          +" while it divides into segments, turning the [skinFurScales] into a shiny black carapace.  A moment later the"
					          +" pain fades and you are able to turn your gaze down to your beautiful new arms, covered in shining black chitin from"
					          +" the upper arm down, and downy yellow fuzz along your upper arm.");
				}
				player.arms.setType(Arms.BEE);
				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;
				}
			}
			//Neck restore
			if (player.neck.type != Neck.NORMAL && changes < changeLimit && rand(4) == 0) mutations.restoreNeck(tfSource);
			//Rear body restore
			if (player.hasNonSharkRearBody() && changes < changeLimit && rand(5) == 0) mutations.restoreRearBody(tfSource);
			//Lose reptile oviposition!
			if (rand(4) == 0) mutations.updateOvipositionPerk(tfSource);
			//Gain bee oviposition!
			if (changes < changeLimit && player.findPerk(PerkLib.BeeOvipositor) < 0 && player.tail.type == Tail.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.tail.type != Tail.BEE_ABDOMEN && (player.tail.type == Tail.NONE || Utils.rand(1.5) == 0) && Utils.rand(4) == 0) {
				if (player.tail.type > Tail.NONE) outputText("\n\nPainful swelling just above your " + 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 " + 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.tail.type = Tail.BEE_ABDOMEN;
				player.tail.venom = 10;
				player.tail.recharge = 2;
				changes++;
			}
			//Venom Increase
			if (changes < changeLimit && player.tail.type == Tail.BEE_ABDOMEN && player.tail.recharge < 15 && Utils.rand(2)) {
				if (player.tail.recharge < 5) player.tail.recharge += 1;
				if (player.tail.recharge < 10) player.tail.recharge += 1;
				if (player.tail.recharge < 15) player.tail.recharge += 1;
				player.tail.venom += 50;
				if (player.tail.venom > 100) player.tail.venom = 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.wings.type == Wings.BEE_LIKE_SMALL && Utils.rand(4)) {
				changes++;
				player.wings.type = Wings.BEE_LIKE_LARGE;
				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.wings.type == Wings.NONE || player.rearBody.type == RearBody.SHARK_FIN) && Utils.rand(4)) {
				if (player.rearBody.type == RearBody.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.");
					player.rearBody.restore();
				} 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.");
				}
				changes++;
				player.wings.type = Wings.BEE_LIKE_SMALL;
			}
			//Melt demon wings!
			if (changes < changeLimit && (player.wings.type == Wings.BAT_LIKE_TINY || player.wings.type == Wings.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.wings.type = Wings.NONE;
			}
			//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.hasCock()) {
				    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('Dick');
					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('Dick');
					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.increaseCock(0,(Utils.rand(3) + 4) * mult)//4 to 6 inches in length
					player.cocks[0].thickenCock((0.1 * Utils.rand(5) + 0.5) * mult); //0.5 to 1 inches in thickness
					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.increaseCock(0,5*mult);
					player.cocks[0].thickenCock(1*mult);
					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.increaseCock(0,(0.1 * Utils.rand(10) + 1) * mult) ;
						player.cocks[0].thickenCock((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?");
					}
					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);
					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.");
					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;
				}
				dynStats("lust", 0.2 * player.lib + 5);
			}
			flags[kFLAGS.TIMES_TRANSFORMED] += changes;
			return(false);
		}
    }
}


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

	public class BehemothCum extends Consumable
	{
		private static const ITEM_VALUE:int = 15;

		public function BehemothCum()
		{
			super("BhmtCum", "BhmtCum", "a sealed bottle of behemoth cum", ITEM_VALUE, "This bottle of behemoth cum looks thick and viscous.  You suspect that it might boost your strength and toughness.  It also has delicious taste.");
		}

		override public function useItem():Boolean
		{
			clearOutput();
			outputText("You uncork the bottle and drink the behemoth cum; it tastes great and by the time you've finished drinking, you feel a bit stronger. ");
			dynStats("str", 0.5, "tou", 0.5, "lus", 5 + (player.cor / 5));
			player.HPChange(Math.round(player.maxHP() * .25), true);
			player.slimeFeed();
			player.refillHunger(25);
			player.orgasm('Lips',false);

			return false;
		}

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


code:
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	import classes.GlobalFlags.*;
	import classes.Items.Consumable;
	import classes.PerkLib;
	import classes.Player;
	import classes.StatusEffect;
	import classes.StatusEffects;

	/**
	 * @since April 3, 2018
	 * @author Stadler76
	 */
	public class BimboChampagne extends Consumable
	{
		public function BimboChampagne()
		{
			super(
				"BimboCh",
				"BimboCh",
				"a bottle of bimbo champagne",
				1,
				"A bottle of bimbo champagne. Drinking this might incur temporary bimbofication."
			);
		}

		public function applyEffect(player:Player, clearScreen:Boolean = true, intro:Boolean = true):Boolean
		{
			if (clearScreen) {
				clearOutput();
			}
			if (intro) {
				if ((player.findPerk(PerkLib.FutaFaculties) >= 0 && player.findPerk(PerkLib.FutaForm) >= 0) || (player.findPerk(PerkLib.BimboBody) >= 0 && player.findPerk(PerkLib.BimboBrains) >= 0)) {
					outputText("You could've swore the stuff worked when you saw Niamh do it to others,"
					          +" but for some reason, it had, like, no effect on you. How weird!");
				} else if (!player.hasStatusEffect(StatusEffects.BimboChampagne)) {
					outputText("You uncork the bottle and breathe in the fizzy, spicy aroma of the sparkling liquor."
					          +" Breathing deeply, you open your mouth and begin pouring the ever-effervescent fluid inside."
					          +" It's sweet and slightly gooey, and the feel of it sliding down your throat is intensely... awesome? Like, totally!");
				} else {
					outputText("You find yourself falling even further into the dense bimbo mindset."
					          +" You do feel, like, super-good and all, though!\n\nMoaning lewdly, you begin to sway your hips from side to side,"
					          +" putting on a show for anyone who might manage to see you.   You just feel so... sexy.  Too sexy to hide it."
					          +" Your body aches to show itself and feel the gaze of someone, anyone upon it. Mmmm, it makes you so wet!"
					          +" You sink your fingers into your sloppy cunt with a groan of satisfaction."
					          +" Somehow, you feel like you could fuck anyone right now!");
				}
			}
			var champagneEffect:StatusEffect = player.statusEffectByType(StatusEffects.BimboChampagne);
			if (champagneEffect !== null) {
				//player.addStatusValue(StatusEffects.BimboChampagne, 1, 4);
				champagneEffect.value1 += 4;
				dynStats("spe", -2, "lib", 1, "lus", 10);
			} else {
				champagneEffect = player.createStatusEffect(StatusEffects.BimboChampagne, 8, 0, 0, 0);
				//(Player has breasts smaller than DD-cup:
				if (player.breastRows[0].breastRating < 5) {
					outputText("\n\nYou feel this, like, totally sweet tingling in your boobies... And then your [armor] gets, like, tighter;"
					          +" wow, it seems like Niamh's booze is making your boobies grow! That's so awesome!"
					          +" You giggle and gulp down as much as you can... Aw; your boobies are kinda big now, but, like,"
					          +" you wanted great big bouncy sloshy boobies like Niamh has.  That'd be so hot!");
					//player.changeStatusValue(StatusEffects.BimboChampagne,2,5-player.biggestTitSize());
					champagneEffect.value2 = 5 - player.biggestTitSize();
					player.breastRows[0].breastRating = 5;
				}
				//(Player does not have vagina:
				if (!player.hasVagina()) {
					player.createVagina();
					outputText("\n\nYou can feel ");
					if (player.hasCock()) {
						outputText("the flesh under your cock[if (hasBalls)  and behind your [balls]]");
					} else {
						outputText("the blank expanse of flesh that is your crotch");
					}
					outputText(" start to tingle and squirm... mmm... that feels nice! There's a sensation you, like, can't describe,"
					          +" and then your crotch feels all wet... but in a good, sticky sorta way. Oh, wow!"
					          +" You've, like, just grown a new virgin pussy!  Awesome!");
					//player.changeStatusValue(StatusEffects.BimboChampagne, 3, 1);
					champagneEffect.value3 = 1;
				}
				//(player ass smaller than bimbo:
				if (player.butt.rating < 12) {
					outputText("\n\nYour butt jiggles deliciously - it feels like the bubbles from the drink are pushing out your plump rump,"
					          +" filling it like bagged sparkling wine!  Your bubbly booty swells and inflates until it feels as airy as your head."
					          +" Like, this is soooo plush!");
					//player.changeStatusValue(StatusEffects.BimboChampagne, 4, 12 - player.butt.rating);
					champagneEffect.value4 = 12 - player.butt.rating;
					player.butt.rating = 12;
					if (player.hips.rating < 12) {
						// A wrapper around this for later use would be great, I guess... ~Stadler76
						if (champagneEffect.dataStore === null) {
							champagneEffect.dataStore = {};
						}
						champagneEffect.dataStore['hipRatingChange'] = 12 - player.hips.rating;
						player.hips.rating = 12;
					}
				}
				dynStats("spe", -10, "lib", 1, "lus", 25);
			}
			return false;
		}

		public function removeBimboChampagne():void
		{
			var champagneEffect:StatusEffect = player.statusEffectByType(StatusEffects.BimboChampagne);
			outputText("\nWhoah! Your head is clearing up, and you feel like you can think clearly for the first time in forever."
			          +" Niamh sure is packing some potent stuff!  You shake the cobwebs out of your head, glad to once again be less dense than"
			          +" a goblin with a basilisk boyfriend.");
			dynStats("spe", 10, "lib", -1);
			if (champagneEffect.value2 > 0) {
				player.breastRows[0].breastRating -= champagneEffect.value2;
				outputText("  As the trecherous brew fades, your [chest] loses some of its... bimboliciousness."
				          +" Your back feels so much lighter without the extra weight dragging down on it.");
			}
			if (champagneEffect.value3 > 0) {
				outputText("  At the same time, your [vagina] slowly seals itself up, disappearing as quickly as it came.  Goodbye womanhood.");
				player.removeVagina();
			}
			if (champagneEffect.value4 > 0) {
				player.butt.rating -= champagneEffect.value4;
				outputText("  Of course, the added junk in your trunk fades too, leaving you back to having a [butt].");
			}
			// A wrapper around this for later use would be great, I guess... ~Stadler76
			if (champagneEffect.dataStore !== null && champagneEffect.dataStore.hasOwnProperty('hipRatingChange') && champagneEffect.dataStore.hipRatingChange > 0) {
				player.hips.rating -= champagneEffect.dataStore.hipRatingChange;
			}
			player.removeStatusEffect(StatusEffects.BimboChampagne);
			outputText("\n");
		}

		override public function useItem():Boolean
		{
			return applyEffect(player);
		}
	}
}


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;
	import classes.Vagina;

	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 (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 (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 (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!");
					player.tallness = 77;
				}
				if (player.biggestTitSize() < 7) {
					if (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.");
					player.breastRows[0].breastRating = 7;
				}
				//(If vagina = 2tight:
				if (!player.hasVagina()) {
					outputText("  Before you can even take a breath, an extremely peculiar sensation emanates from your crotch.  You can't see through your " + player.armorName + ", but you can certainly feel the vagina splitting " + (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 (player.hips.rating < 12 || player.butt.rating < 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.");
					player.createVagina();
					player.setClitLength(0.25);
					if (player.hips.rating < 12) player.hips.rating = 12;
					if (player.butt.rating < 12) player.butt.rating = 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 (player.femininity < 80) 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 (player.findPerk(PerkLib.BroBrains) >= 0) outputText(", Bro Brains");
				outputText(")\n");
				outputText("(Perks Gained: Futa Form, Futa Faculties)\n");
				player.removePerk(PerkLib.BroBody);
				player.removePerk(PerkLib.BroBrains);
				player.createPerk(PerkLib.FutaFaculties, 0, 0, 0, 0);
				player.createPerk(PerkLib.FutaForm, 0, 0, 0, 0);
				if (player.inte > 35) {
					player.inte = 35;
					dynStats("int", -0.1);
				}
				if (player.lib < 50) {
					player.lib = 50;
					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 (player.hair.color != "platinum blonde") {
					outputText("The first change that you notice is to your " + player.hairDescript() + ".  It starts with a tingling in your scalp and intensifies ");
					if (player.hair.length < 36) {
						outputText("as you feel the weight of your hair growing heavier and longer.");
						player.hair.length = 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 " + player.hair.color + " hair.  It goes faster and faster until your hair has changed into perfectly bimbo-blonde, flowing locks.\n\n");
					player.hair.color = "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 (!player.hasVagina()) {
					player.createVagina();
					player.setClitLength(0.25);
					player.vaginas[0].vaginalWetness = Vagina.WETNESS_SLICK;
					if (player.isTaur()) outputText("Wait!? Wet? You wish you could touch yourself between the " + 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 " + player.legs() + " and groan when your fingers sink into a sloppy, wet cunt.");
				}
				else {
					if (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 (player.vaginas[0].vaginalWetness < Vagina.WETNESS_SLICK)
							player.vaginas[0].vaginalWetness = Vagina.WETNESS_SLICK;
					}
					else {
						outputText("You sink your fingers into your ");
						if (player.vaginas[0].vaginalWetness < Vagina.WETNESS_SLICK) {
							outputText("now ");
							player.vaginas[0].vaginalWetness = Vagina.WETNESS_SLICK;
						}
						outputText("sloppy, wet cunt with a groan of satisfaction.");
					}
				}
				if (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.");
					player.balls = 0;
					player.ballSize = 3;
					player.cumMultiplier = 2;
				}
				if (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 (player.cockTotal() == 1) outputText("a penis");
					else outputText("penises");
					outputText("!");
					while (player.hasCock()) {
						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 " + player.nippleDescript(0) + "s");
				if (player.breastRows[0].breastRating < 10) {
					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, " + player.breastCup(0) + " cleavage has you moaning with how sensitive it is, pinching a nipple with one hand ");
				}
				else {
					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, " + 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 ");
				}
				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 " + player.vaginaDescript(0) + " like no tomorrow.  By now, your " + player.clitDescript() + " is throbbing, and you give it an experimental ");
				if (player.getClitLength() >= 3) outputText("jerk ");
				else outputText("caress ");
				outputText("that makes your " + 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 (player.hips.rating < 12 || player.butt.rating < 12) {
					outputText("As you start to walk off in search of a sexual partner, you feel your center of balance shifting.");
					if (player.hips.rating < 12 && player.butt.rating < 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.");
						player.butt.rating = 12;
						player.hips.rating = 12;
					}
					else if (player.hips.rating < 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.");
						player.hips.rating = 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.");
						player.butt.rating = 12;
					}
					outputText("\n\n");
				}
				if (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.");
					player.tone = 0;
					if (player.str100 >= 30) {
						if (player.str100 >= 90) dynStats("str", -10);
						if (player.str100 >= 70) dynStats("str", -10);
						if (player.str100 >= 50) dynStats("str", -10);
						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 (player.findPerk(PerkLib.BimboBody) < 0) {
					outputText("(Bimbo Body - Perk Gained!)\n");
					player.createPerk(PerkLib.BimboBody, 0, 0, 0, 0);
				}
				if (player.findPerk(PerkLib.BimboBrains) < 0) {
					outputText("(Bimbo Brains - Perk Gained!)\n");//int to 20.  max int 50)
					player.createPerk(PerkLib.BimboBrains, 0, 0, 0, 0);
					if (player.inte > 21) {
						var boost:Number = player.inte / 5;
						player.inte = 21 + boost;
					}
				}
				player.orgasm('Vaginal');
				dynStats("int", -1, "lib", 4, "sen", 25);
				//FULL ON BITCHFACE
				player.modFem(100, 100);
				//Body
				//Tease/Seduce Boost
				//*boosts min lust and lust resistance)
				//*Tit size
				//Brain
				//Max int - 50
			}
			return(false);
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	import classes.GlobalFlags.*;
	import classes.Items.Consumable;
	import classes.Player;
	import classes.StatusEffects;

	/**
	 * @since April 3, 2018
	 * @author Stadler76
	 */
	public class BlackCatBeer extends Consumable
	{
		public function BlackCatBeer()
		{
			super(
				"BC Beer",
				"BC Beer",
				"a mug of Black Cat Beer",
				1,
				"A capped mug containing an alcoholic drink secreted from the breasts of Niamh. It smells tasty."
			);
		}

		public function applyEffect(player:Player, clearScreen:Boolean = true, newLine:Boolean = false):Boolean
		{
			if (clearScreen) {
				clearOutput();
			}
			if (newLine) {
				outputText("\n\n");
			}
			outputText("Uncapping the mug, you swill the stuff down in a single swig, gasping as it burns a fiery trail into your belly."
			          +" It's rich and sweet, and damn, but it's strong stuff!");
			outputText("\n\nA wonderful warmth fills your body, making your pain fade away.  However, it also makes your crotch tingle"
			          +" - combined with the relaxation imparted already, you feel very turned-on.  A beautiful, warm,"
			          +" fuzzy sensation follows and fills your head, like your brain is being wrapped in cotton wool."
			          +" You don't feel quite as smart as before, but that's all right, it feels so nice...");
			outputText("\n\nYour balance suddenly feels off-kilter and you stumble, narrowly avoiding falling."
			          +" You just can't move as fast as you could, not with your head feeling so full of fluff and fuzz;"
			          +" your body prickles and tingles with the warmth once your head feels full,"
			          +" the sensation concentrating around your erogenous zones."
			          +" You just feel so fluffy... you want to hold somebody and share your warmth with them, too; it's just so wonderful.");
			//Regain 40 to 60 lost health, increase lust by 10 to 20 points, decrease Intelligence and Speed by 5, increase Libido by 5//
			player.HPChange(40 + rand(21), false);
			var lib:Number = 0;
			if (player.getMaxStats('lib') - player.lib >= 10) {
				lib = 10;
			} else {
				lib = player.getMaxStats('lib') - player.lib;
			}
			if (!player.hasStatusEffect(StatusEffects.BlackCatBeer)) {
				player.createStatusEffect(StatusEffects.BlackCatBeer, 8, lib, 0, 0);
				dynStats("spe", -5, "int", -5, "lib", lib, "lus", 20 + rand(player.lib / 4));
			} else {
				player.addStatusValue(StatusEffects.BlackCatBeer, 1, 4);
				player.addStatusValue(StatusEffects.BlackCatBeer, 2, lib);
				outputText("\n\nDamn, it's even better with every extra drink!");
				dynStats("spe", -1, "int", -1, "lib", lib, "lus", 30 + rand(player.lib / 4));
			}
			player.slimeFeed();
			return false;
		}

		//Black Cat Beer Wears Off: This message is displayed eight hours after the last drink.
		public function blackCatBeerExpires():void
		{
			dynStats("spe", 4.5, "int", 4.5, "lib", (-1 * player.statusEffectv2(StatusEffects.BlackCatBeer)));
			player.removeStatusEffect(StatusEffects.BlackCatBeer);
			outputText("\nThe warm, fuzzy feeling finally dissipates, leaving you thinking clearer, focusing better, and less horny."
			          +" It was nice while it lasted, but it's also good to be back to normal."
			          +" Still, a part of you kind of wants another beer.\n");
		}

		override public function useItem():Boolean
		{
			return applyEffect(player);
		}
	}
}


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

	/**
	 * @since March 31, 2018
	 * @author Stadler76
	 */
	public class BlackRubberEgg extends Consumable
	{
		public static const SMALL:int = 0;
		public static const LARGE:int = 1;

		private var large:Boolean;

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

			large = type === LARGE;

			switch (type) {
				case SMALL:
					id = "BlackEg";
					shortName = "BlackEg";
					longName = "a rubbery black egg";
					description = "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.";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

				case LARGE:
					id = "L.BlkEg";
					shortName = "L.BlkEg";
					longName = "a large rubbery black egg";
					description = "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!";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

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

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

		override public function useItem():Boolean
		{
			clearOutput();
			outputText("You devour the egg, momentarily sating your hunger.");
			//Small
			if (!large) {
				//Change skin to normal if not flawless!
				if ((player.skin.adj !== "smooth" && player.skin.adj !== "latex" && player.skin.adj !== "rubber") || player.skin.desc !== "skin") {
					outputText("\n\nYour " + player.skin.desc + " tingles delightfully as it ");
					if (player.hasPlainSkin()) outputText(" loses its blemishes, becoming flawless smooth skin.");
					if (player.hasFur()) outputText(" falls out in clumps, revealing smooth skin underneath.");
					if (player.hasScales()) outputText(" begins dropping to the ground in a pile around you, revealing smooth skin underneath.");
					if (player.hasGooSkin()) outputText(" shifts and changes into flawless smooth skin.");
					player.skin.desc = "skin";
					player.skin.adj = "smooth";
					if (player.skin.tone == "rough gray") player.skin.tone = "gray";
					player.skin.type = Skin.PLAIN;
					player.underBody.restore();
					player.arms.updateClaws(player.arms.claws.type);
				}
				//chance of hair change
				else {
					//If hair isn't rubbery/latex yet
					if (player.hair.color.indexOf("rubbery") == -1 && player.hair.color.indexOf("latex-textured") && player.hair.length !== 0) {
						//if skin is already one...
						if (player.skin.desc == "skin" && player.skin.adj == "rubber") {
							outputText("\n\nYour scalp tingles and your " + player.hairDescript() + " thickens, the strands merging into ");
							outputText(" thick rubbery hair.");
							player.hair.color = "rubbery " + player.hair.color;
							dynStats("cor", 2);
						}
						if (player.skin.desc == "skin" && player.skin.adj == "latex") {
							outputText("\n\nYour scalp tingles and your " + player.hairDescript() + " thickens, the strands merging into ");
							outputText(" shiny latex hair.");
							player.hair.color = "latex-textured " + player.hair.color;
							dynStats("cor", 2);
						}
					}
				}
				player.refillHunger(20);
			}
			//Large
			if (large) {
				//Change skin to latex if smooth.
				if (player.skin.desc == "skin" && player.skin.adj == "smooth") {
					outputText("\n\nYour already flawless smooth skin begins to tingle as it changes again.  It becomes shinier as its texture changes subtly.  You gasp as you touch yourself and realize your skin has become ");
					if (rand(2) === 0) {
						player.skin.desc = "skin";
						player.skin.adj = "latex";
						outputText("a layer of pure latex.  ");
					}
					else {
						player.skin.desc = "skin";
						player.skin.adj = "rubber";
						outputText("a layer of sensitive rubber.  ");
					}
					flags[kFLAGS.PC_KNOWS_ABOUT_BLACK_EGGS] = 1;
					if (player.cor < 66) outputText("You feel like some kind of freak.");
					else outputText("You feel like some kind of sexy " + player.skin.desc + " love-doll.");
					dynStats("spe", -3, "sen", 8, "lus", 10, "cor", 2);
				}
				//Change skin to normal if not flawless!
				if ((player.skin.adj !== "smooth" && player.skin.adj !== "latex" && player.skin.adj !== "rubber") || player.skin.desc !== "skin") {
					outputText("\n\nYour " + player.skin.desc + " tingles delightfully as it ");
					if (player.hasPlainSkin()) outputText(" loses its blemishes, becoming flawless smooth skin.");
					if (player.hasFur()) outputText(" falls out in clumps, revealing smooth skin underneath.");
					if (player.hasScales()) outputText(" begins dropping to the ground in a pile around you, revealing smooth skin underneath.");
					if (player.hasGooSkin()) outputText(" shifts and changes into flawless smooth skin.");
					player.skin.desc = "skin";
					player.skin.adj = "smooth";
					if (player.skin.tone == "rough gray") player.skin.tone = "gray";
					player.skin.type = Skin.PLAIN;
					player.underBody.restore();
					player.arms.updateClaws(player.arms.claws.type);
				}
				//chance of hair change
				else {
					//If hair isn't rubbery/latex yet
					if (player.hair.color.indexOf("rubbery") == -1 && player.hair.color.indexOf("latex-textured") && player.hair.length !== 0) {
						//if skin is already one...
						if (player.skin.adj == "rubber" && player.skin.desc == "skin") {
							outputText("\n\nYour scalp tingles and your " + player.hairDescript() + " thickens, the strands merging into ");
							outputText(" thick rubbery hair.");
							player.hair.color = "rubbery " + player.hair.color;
							dynStats("cor", 2);
						}
						if (player.skin.adj == "latex" && player.skin.desc == "skin") {
							outputText("\n\nYour scalp tingles and your " + player.hairDescript() + " thickens, the strands merging into ");
							outputText(" shiny latex hair.");
							player.hair.color = "latex-textured " + player.hair.color;
							dynStats("cor", 2);
						}
					}
				}
				player.refillHunger(60);
			}

			return false;
		}
	}
}


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

	/**
	 * A spellbook that teaches the player one the following spells: 'Arouse', 'Heal' or 'Might'.
	 * May also raise int.
	 */
	public class BlackSpellBook extends Consumable
	{
		private static const ITEM_VALUE:int = 40;

		public function BlackSpellBook()
		{
			super("B. Book","B. Book", "a small book with a midnight-black cover", ITEM_VALUE, "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 monastery back home.");
		}

		override public function useItem():Boolean
		{
			clearOutput();
			outputText("You open the small black book, and discover it to be an instructional book on the use of black magic.  Most of it is filled with generic information about black magic - how it is drawn from emotions (typically lust), and how it has the power to affect bodies and emotions.  It also warns against using it on oneself, as it is difficult to draw on your emotions while meddling with your own body.  In no time at all you've read the whole thing, but it disappears into thin air before you can put it away.");
			if (player.inte100 < 30) {
				outputText("\n\nYou feel greatly enlightened by your time spent reading.");
				dynStats("int", 4);
			}
			else if (player.inte100 < 60) {
				outputText("\n\nSpending some time reading was probably good for you, and you definitely feel smarter for it.");
				dynStats("int", 2);
			}
			else if (player.inte100 < 80) {
				outputText("\n\nAfter reading the small tome your already quick mind feels invigorated.");
				dynStats("int", 1);
			}
			else {
				outputText("\n\nThe contents of the book did little for your already considerable intellect.");
				dynStats("int", .6);
			}
			//Smart enough for arouse and doesnt have it
			if (player.inte >= 25 && !player.hasStatusEffect(StatusEffects.KnowsArouse)) {
				outputText("\n\nYou blink in surprise, assaulted by the knowledge of a new spell: Arouse.");
				player.createStatusEffect(StatusEffects.KnowsArouse, 0, 0, 0, 0);
				return false;
			}
			//Smart enough for arouse and doesnt have it
			if (player.inte >= 30 && !player.hasStatusEffect(StatusEffects.KnowsHeal)) {
				outputText("\n\nYou blink in surprise, assaulted by the knowledge of a new spell: Heal.");
				player.createStatusEffect(StatusEffects.KnowsHeal, 0, 0, 0, 0);
				return false;
			}
			//Smart enough for arouse and doesnt have it
			if (player.inte >= 40 && !player.hasStatusEffect(StatusEffects.KnowsMight)) {
				outputText("\n\nYou blink in surprise, assaulted by the knowledge of a new spell: Might.");
				player.createStatusEffect(StatusEffects.KnowsMight, 0, 0, 0, 0);
			}

			//Removed for being awful

			//Smart enough for blackfire and doesnt have it
			/*if (player.inte >= 50 && !player.hasStatusEffect(StatusEffects.KnowsBlackfire)) {
				outputText("\n\nYou blink in surprise, assaulted by the knowledge of a new spell: Blackfire.");
				player.createStatusEffect(StatusEffects.KnowsBlackfire, 0, 0, 0, 0);
			}*/
			return false;
		}
	}
}


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

	/**
	 * @since March 31, 2018
	 * @author Stadler76
	 */
	public class BlueEgg extends Consumable
	{
		public static const SMALL:int = 0;
		public static const LARGE:int = 1;

		private var large:Boolean;

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

			large = type === LARGE;

			switch (type) {
				case SMALL:
					id = "BlueEgg";
					shortName = "BlueEgg";
					longName = "a blue and white mottled egg";
					description = "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.";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

				case LARGE:
					id = "L.BluEg";
					shortName = "L.BluEg";
					longName = "a large blue and white mottled egg";
					description = "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.";
					value = ConsumableLib.DEFAULT_VALUE;
					break;

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

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

		override public function useItem():Boolean
		{
			clearOutput();
			var temp:int; // game.temp was a great idea ... *cough, cough* ~Stadler76
			var temp2:Number = 0;
			var temp3:Number = 0;
			outputText("You devour the egg, momentarily sating your hunger.");
			if (!large) {
				//Kill pussies!
				if (player.vaginas.length > 0) {
					outputText("\n\nYour vagina clenches in pain, doubling you over.  You slip a hand down to check on it, only to feel the slit growing smaller and smaller until it disappears, taking your clit with it!  Your vagina is gone!");
					player.setClitLength(.5);
					player.removeVagina(0, 1);
				}
				//Dickz
				if (player.cocks.length > 0) {
					//Multiz
					if (player.cocks.length > 1) {
						outputText("\n\nYour " + player.multiCockDescript() + " fill to full-size... and begin growing obscenely.");
						temp = player.cocks.length;
						while (temp > 0) {
							temp--;
							temp2 = player.increaseCock(temp, rand(3) + 2);
							temp3 = player.cocks[temp].thickenCock(1);
						}
						player.lengthChange(temp2, player.cocks.length);
						//Display the degree of thickness change.
						if (temp3 >= 1) {
							if (player.cocks.length == 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " spreads rapidly, swelling an inch or more in girth, making it feel fat and floppy.");
							else outputText("\n\nYour " + player.multiCockDescriptLight() + " spread rapidly, swelling as they grow an inch or more in girth, making them feel fat and floppy.");
						}
						if (temp3 <= .5) {
							if (player.cocks.length > 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " feel swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. They are definitely thicker.");
							else outputText("\n\nYour " + player.multiCockDescriptLight() + " feels swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. It is definitely thicker.");
						}
						if (temp3 > .5 && temp2 < 1) {
							if (player.cocks.length == 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " seems to swell up, feeling heavier. You look down and watch it growing fatter as it thickens.");
							if (player.cocks.length > 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " seem to swell up, feeling heavier. You look down and watch them growing fatter as they thicken.");
						}
						dynStats("lib", 1, "sen", 1, "lus", 20);
					}
					//SINGLEZ
					if (player.cocks.length == 1) {
						outputText("\n\nYour " + player.multiCockDescriptLight() + " fills to its normal size... and begins growing... ");
						temp3 = player.cocks[0].thickenCock(1);
						temp2 = player.increaseCock(0, rand(3) + 2);
						player.lengthChange(temp2, 1);
						//Display the degree of thickness change.
						if (temp3 >= 1) {
							if (player.cocks.length == 1) outputText("  Your " + player.multiCockDescriptLight() + " spreads rapidly, swelling an inch or more in girth, making it feel fat and floppy.");
							else outputText("  Your " + player.multiCockDescriptLight() + " spread rapidly, swelling as they grow an inch or more in girth, making them feel fat and floppy.");
						}
						if (temp3 <= .5) {
							if (player.cocks.length > 1) outputText("  Your " + player.multiCockDescriptLight() + " feel swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. They are definitely thicker.");
							else outputText("  Your " + player.multiCockDescriptLight() + " feels swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. It is definitely thicker.");
						}
						if (temp3 > .5 && temp2 < 1) {
							if (player.cocks.length == 1) outputText("  Your " + player.multiCockDescriptLight() + " seems to swell up, feeling heavier. You look down and watch it growing fatter as it thickens.");
							if (player.cocks.length > 1) outputText("  Your " + player.multiCockDescriptLight() + " seem to swell up, feeling heavier. You look down and watch them growing fatter as they thicken.");
						}
						dynStats("lib", 1, "sen", 1, "lus", 20);
					}

				}
				player.refillHunger(20);
			}
			//LARGE
			else {
				//New lines if changes
				if (player.bRows() > 1 || player.butt.rating > 5 || player.hips.rating > 5 || player.hasVagina()) outputText("\n\n");
				//Kill pussies!
				if (player.vaginas.length > 0) {
					outputText("Your vagina clenches in pain, doubling you over.  You slip a hand down to check on it, only to feel the slit growing smaller and smaller until it disappears, taking your clit with it!\n\n");
					if (player.bRows() > 1 || player.butt.rating > 5 || player.hips.rating > 5) outputText("  ");
					player.setClitLength(.5);
					player.removeVagina(0, 1);
				}
				//Kill extra boobages
				if (player.bRows() > 1) {
					outputText("Your back relaxes as extra weight vanishes from your chest.  Your lowest " + player.breastDescript(player.bRows() - 1) + " have vanished.");
					if (player.butt.rating > 5 || player.hips.rating > 5) outputText("  ");
					//Remove lowest row.
					player.removeBreastRow((player.bRows() - 1), 1);
				}
				//Ass/hips shrinkage!
				if (player.butt.rating > 5) {
					outputText("Muscles firm and tone as you feel your " + player.buttDescript() + " become smaller and tighter.");
					if (player.hips.rating > 5) outputText("  ");
					player.butt.rating -= 2;
				}
				if (player.hips.rating > 5) {
					outputText("Feeling the sudden burning of lactic acid in your " + player.hipDescript() + ", you realize they have slimmed down and firmed up some.");
					player.hips.rating -= 2;
				}
				//Shrink tits!
				if (player.biggestTitSize() > 0)
				{
					player.shrinkTits();
				}
				if (player.cocks.length > 0) {
					//Multiz
					if (player.cocks.length > 1) {
						outputText("\n\nYour " + player.multiCockDescript() + " fill to full-size... and begin growing obscenely.  ");
						temp = player.cocks.length;
						while (temp > 0) {
							temp--;
							temp2 = player.increaseCock(temp, rand(3) + 5);
							temp3 = player.cocks[temp].thickenCock(1.5);
						}
						player.lengthChange(temp2, player.cocks.length);
						//Display the degree of thickness change.
						if (temp3 >= 1) {
							if (player.cocks.length == 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " spreads rapidly, swelling an inch or more in girth, making it feel fat and floppy.");
							else outputText("\n\nYour " + player.multiCockDescriptLight() + " spread rapidly, swelling as they grow an inch or more in girth, making them feel fat and floppy.");
						}
						if (temp3 <= .5) {
							if (player.cocks.length > 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " feel swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. They are definitely thicker.");
							else outputText("\n\nYour " + player.multiCockDescriptLight() + " feels swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. It is definitely thicker.");
						}
						if (temp3 > .5 && temp2 < 1) {
							if (player.cocks.length == 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " seems to swell up, feeling heavier. You look down and watch it growing fatter as it thickens.");
							if (player.cocks.length > 1) outputText("\n\nYour " + player.multiCockDescriptLight() + " seem to swell up, feeling heavier. You look down and watch them growing fatter as they thicken.");
						}
						dynStats("lib", 1, "sen", 1, "lus", 20);
					}
					//SINGLEZ
					if (player.cocks.length == 1) {
						outputText("\n\nYour " + player.multiCockDescriptLight() + " fills to its normal size... and begins growing...");
						temp3 = player.cocks[0].thickenCock(1.5);
						temp2 = player.increaseCock(0, rand(3) + 5);
						player.lengthChange(temp2, 1);
						//Display the degree of thickness change.
						if (temp3 >= 1) {
							if (player.cocks.length == 1) outputText("  Your " + player.multiCockDescriptLight() + " spreads rapidly, swelling an inch or more in girth, making it feel fat and floppy.");
							else outputText("  Your " + player.multiCockDescriptLight() + " spread rapidly, swelling as they grow an inch or more in girth, making them feel fat and floppy.");
						}
						if (temp3 <= .5) {
							if (player.cocks.length > 1) outputText("  Your " + player.multiCockDescriptLight() + " feel swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. They are definitely thicker.");
							else outputText("  Your " + player.multiCockDescriptLight() + " feels swollen and heavy. With a firm, but gentle, squeeze, you confirm your suspicions. It is definitely thicker.");
						}
						if (temp3 > .5 && temp2 < 1) {
							if (player.cocks.length == 1) outputText("  Your " + player.multiCockDescriptLight() + " seems to swell up, feeling heavier. You look down and watch it growing fatter as it thickens.");
							if (player.cocks.length > 1) outputText("  Your " + player.multiCockDescriptLight() + " seem to swell up, feeling heavier. You look down and watch them growing fatter as they thicken.");
						}
						dynStats("lib", 1, "sen", 1, "lus", 20);
					}
				}
				player.refillHunger(60);
			}
			if (rand(3) === 0) {
				if (large) outputText(player.modFem(0, 8));
				else outputText(player.modFem(5, 3));
			}

			return false;
		}
	}
}


code:
package classes.Items.Consumables
{
	import classes.BodyParts.*;
	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 phrase:String = "";
			switch(_adj) {
				case "smooth": phrase = randomChoice(["smooth liquid", "thick cream"]); break;
				case "rough":  phrase = randomChoice(["abrasive goop", "rough textured goop"]); break;
				case "sexy":   phrase = randomChoice(["smooth liquid", "attractive cream", "beautiful cream"]); break;
				case "clear":  phrase = randomChoice(["smooth liquid", "thick cream"]); break;
				default:       phrase = "cream"; //Failsafe
			}
			return phrase;
		}

		override public function useItem():Boolean {
			if (!player.hasUnderBody()) {
				lotionSkin();
				return true;
			}

			clearOutput();
			outputText("The skin on your underBody is different from the rest. Where do you want to apply the " + _adj + " body lotion?");

			menu();
			addButton(0, "Body", lotionSkin);
			addButton(1, "Underbody", lotionUnderBodySkin);
			addButton(4, "Nevermind", lotionCancel);
			return true;
		}

		public function lotionSkin():void {
			if (player.skin.adj == _adj) {
				outputText("You " + 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. ");
				player.HPChange(10, true);
			}
			else {
				if ([Skin.GOO, Skin.DRAGON_SCALES].indexOf(player.skin.type) == -1) { //If skin is goo or dragon scales, don't change.
					player.skin.adj = _adj != "clear" ? _adj : "";
				}
				switch (player.skin.type) {
					case Skin.PLAIN: //Plain
						outputText("You " + 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 [skinFurScales] is revealed without anything extra or unnecessary.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.FUR: //Fur
						outputText("" + 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 skin.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.LIZARD_SCALES: //Scales
					case Skin.FISH_SCALES: //Scales
						outputText("You " + 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 scales are smoother but in a natural healthy way.");
								break;
							case "rough":
								outputText("Soon your scales are rougher as if you’ve just finished a long day’s work.");
								break;
							case "sexy":
								outputText("Soon your scales are so sexy you find it hard to keep your hands off yourself.");
								break;
							case "clear":
								outputText("Soon the natural beauty of your [skinFurScales] is revealed without anything extra or unnecessary.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.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.DRAGON_SCALES: //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 " + 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.");
				}
			}
			inventory.itemGoNext();
		}

		public function lotionUnderBodySkin():void {
			if (player.underBody.skin.adj == _adj) {
				outputText("You " + 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 underbody. Once you’ve finished you feel reinvigorated. ");
				player.HPChange(10, true);
			}
			else {
				if (player.underBody.skin.type != Skin.GOO) { //If skin is goo, don't change.
					player.underBody.skin.adj = _adj != "clear" ? _adj : "";
				}
				switch (player.underBody.skin.type) {
					case Skin.PLAIN: //Plain
						outputText("You " + 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 underbody. As you rub the mixture onto your [chest], it begins to tingle pleasantly. ");
						switch(_adj) {
							case "smooth":
								outputText("Soon your skin on your underbody is smoother but in a natural healthy way.");
								break;
							case "rough":
								outputText("Soon your skin on your underbody is rougher as if you’ve just finished a long day’s work.");
								break;
							case "sexy":
								outputText("Soon your skin on your underbody is so sexy you find it hard to keep your hands off yourself.");
								break;
							case "clear":
								outputText("Soon the natural beauty of your [underBody.skinFurScales] is revealed without anything extra or unnecessary.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.FUR: //Fur
						outputText("" + 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 on your underbody to reveal smooth skin that still appears natural.");
								break;
							case "rough":
								outputText("Soon you part your fur on your underbody to reveal rough skin that still appears natural.");
								break;
							case "sexy":
								outputText("Soon you part your fur on your underbody to reveal sexy skin that makes you want to kiss yourself.");
								break;
							case "clear":
								outputText("Soon you part your fur on your underbody to reveal the natural beauty of your skin.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.LIZARD_SCALES: //Scales
					case Skin.DRAGON_SCALES: //Dragon scales
					case Skin.FISH_SCALES: //Scales
						outputText("You " + 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 underbody. As you rub the mixture into your arms and [chest], your whole body begins to tingle pleasantly.");
						switch(_adj) {
							case "smooth":
								outputText("Soon your scales on your underbody are smoother but in a natural healthy way.");
								break;
							case "rough":
								outputText("Soon your scales on your underbody are rougher as if you’ve just finished a long day’s work.");
								break;
							case "sexy":
								outputText("Soon your scales on your underbody are so sexy you find it hard to keep your hands off yourself.");
								break;
							case "clear":
								outputText("Soon the natural beauty of your [underBody.skinFurScales] is revealed without anything extra or unnecessary.");
								break;
							default: //Failsafe
								outputText("This text should not happen. Please let Kitteh6660 know.");
						}
						break;
					case Skin.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;
					default:
						outputText("You " + 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 on your underbody.");
				}
			}
			inventory.itemGoNext();
		}

		private function lotionCancel():void {
			clearOutput();
			outputText("You put the body lotion away.\n\n");
			inventory.returnItemToInventory(this);
		}
	}
}