code:
package classes.Scenes.Dungeons.DeepCave
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.internals.WeightedDrop;

	public class Vala extends Monster
	{
		//Vala AI

		//Blood magic?
		public function valaSpecial1():void {
			outputText("Vala dabs at one of her wounds and swoons.  Is she actually getting off from the wounds?  Damn she's damaged!  Vala licks the blood from her fingers, winks, and blows pink mist from her mouth.", false);
			//Lightly wounded.
			if (HPRatio() > .7) {
				outputText("  The sweet-smelling cloud rapidly fills the room, but the volume of mist is low enough that you don't end up breathing in that much of it.  It does make your pulse quicken in the most pleasant way though...", false);
				game.dynStats("lus", 5 + player.lib/20);
			}
			else if (HPRatio() > .4) {
				outputText("  The rose-colored vapor spreads throughout the room, forcing you to breathe it in or pass out from lack of air.  It smells sweet and makes your head swim with sensual promises and your crotch tingle with desire.  Panicked by the knowledge that you're being drugged, you gasp, but it only draws more of the rapidly disappating cloud into your lungs, fueling your lust.", false);
				game.dynStats("lus", 10 + player.lib/20);
			}
			else {
				outputText("  The cloying, thick cloud of pink spools out from her mouth and fills the room with a haze of bubblegum-pink sweetness.  Even the shallowest, most experimental breath makes your heart pound and your crotch thrum with excitement.  You gasp in another quick breath and sway back and forth on your feet, already on the edge of giving in to the faerie.", false);
				game.dynStats("lus", 30 + player.lib/10);
			}
			combatRoundOver();
		}
		//Milk magic
		public function valaSpecial2():void {
			outputText("With a look of ecstasy on her face, Vala throws back her head and squeezes her pillowy chest with her hands, firing gouts of thick faerie milk from her over-sized bosom!  You try to dodge, but she's squirting so much it's impossible to dodge it all, and in no time you're drenched with a thick coating of Vala's milk.", false);
			outputText("  She releases her breasts, shaking them back and forth for your benefit, and flutters her wings, blowing shiny, glitter-like flakes at you.  They stick to the milk on your skin, leaving you coated in milk and faerie-dust.", false);
			outputText("\nVala says, \"Now you can be sexy like Vala!\"\n", false);

			if (findStatusEffect(StatusEffects.Milk) >= 0) {
				addStatusValue(StatusEffects.Milk,1,5);
				outputText("Your " + player.skinDesc + " tingles pleasantly, making you feel sexy and exposed.  Oh no!  It seems each coating of milk and glitter is stronger than the last!", false);
			}
			else {
				createStatusEffect(StatusEffects.Milk,5,0,0,0);
				outputText("You aren't sure if there's something in her milk, the dust, or just watching her squirt and shake for you, but it's turning you on.", false);
			}
			game.dynStats("lus", statusEffectv1(StatusEffects.Milk) + player.lib/20);
			combatRoundOver();
		}
		//Masturbation
		public function valaMasturbate():void {
			outputText("The mind-fucked faerie spreads her alabaster thighs and dips a finger into the glistening slit between her legs, sliding in and out, only pausing to circle her clit.  She brazenly masturbates, putting on quite the show.  Vala slides another two fingers inside herself and finger-fucks herself hard, moaning and panting lewdly.  Then she pulls them out and asks, \"Did you like that?  Will you fuck Vala now?\"", false);
			game.dynStats("lus", 4 + player.cor/10);
			combatRoundOver();
		}

		//[Fight dialog]
		public function valaCombatDialogue():void {
			if (findStatusEffect(StatusEffects.Vala) < 0) {
				outputText("\"Sluts needs to service the masters!\" the fairy wails, flying high. \"If they are not pleased, Bitch doesn't get any cum!\"", false);
				createStatusEffect(StatusEffects.Vala,0,0,0,0);
			}
			else {
				addStatusValue(StatusEffects.Vala,1,1);
				if (statusEffectv1(StatusEffects.Vala) == 1) outputText("\"If you won't fuck Bitch, you must not be a master,\" she realizes, the fight invigorating her lust-deadened brain. \"You get to be a pet for the masters, too!\"", false);
				else if (statusEffectv1(StatusEffects.Vala) == 2) outputText("\"If the masters like you, maybe they will let Bitch keep you for herself! Won't you like that?\"", false);
				else if (statusEffectv1(StatusEffects.Vala) == 3) outputText("\"We obey the masters. They fed Bitch until she became big enough to please them. The masters love their pets so much, you'll see.\"", false);
				else if (statusEffectv1(StatusEffects.Vala) == 4) outputText("\"Thoughts are so hard. Much easier to be a toy slut. Won't you like being a toy? All that nasty memory fucked out of your head.\"", false);
				else if (statusEffectv1(StatusEffects.Vala) == 5) outputText("\"Bitch has given birth to many of the masters' children. She will teach you to please the masters. Maybe you can birth more masters for us to fuck?\"", false);
				else outputText("\"Bitch loves when her children use her as their fathers did. Sluts belong to them. Slut love them. You will love them too!\"", false);
			}
		}

		override protected function performCombatAction():void
		{
			//VALA SPEAKS!
			valaCombatDialogue();
			outputText("\n\n", false);
			//Select Attack
			//BLood magic special
			if (HPRatio() < .85 && rand(3) == 0) valaSpecial1();
			//25% chance of milksquirt.
			else if (rand(4) == 0) valaSpecial2();
			else valaMasturbate();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.dungeons.deepcave.fightValaVictory();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem put off enough to leave...");
				doNext(game.combat.endLustLoss);
			} else {
				game.dungeons.deepcave.loseToVala();
			}
		}

		public function Vala()
		{
			this.a = "";
			this.short = "Vala";
			this.imageName = "vala";
			this.long = "While the fey girl is whip-thin, her breasts are disproportionately huge. They'd be at least a DD-cup on a normal human, but for her height and body type, they're practically as large as her head. They jiggle at her slow, uneven breathing, tiny drops of milk bubbling at her nipples with every heartbeat.  She seems fixated on mating with you, and won't take no for an answer.";
			// this.plural = false;
			this.createVagina(false, VAGINA_WETNESS_SLICK, VAGINA_LOOSENESS_GAPING_WIDE);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 25, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("E"));
			this.ass.analLooseness = ANAL_LOOSENESS_STRETCHED;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,10,0,0,0);
			this.tallness = 4*12;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_LARGE;
			this.skinTone = "fair";
			this.hairColor = "purple";
			this.hairLength = 22;
			initStrTouSpeInte(40, 50, 50, 60);
			initLibSensCor(55, 35, 50);
			this.weaponName = "fists";
			this.weaponVerb="caresses";
			this.armorName = "skin";
			var lustVuln:Number = .5;
			if (game.flags[kFLAGS.TIMES_PC_DEFEATED_VALA] > 0) lustVuln += .25;
			if (game.flags[kFLAGS.TIMES_PC_DEFEATED_VALA] > 2) lustVuln += .5;
			var lust:Number = 30 + game.flags[kFLAGS.TIMES_PC_DEFEATED_VALA] * 10;
			if (lust > 80) lust = 80;
			this.bonusHP = 350;
			this.lust = lust;
			this.lustVuln = lustVuln;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 11;
			this.gems = 1;
			this.additionalXP = 50;
			if (game.flags[kFLAGS.TIMES_PC_DEFEATED_VALA] > 0) this.XP = 5;
			if (game.flags[kFLAGS.TIMES_PC_DEFEATED_VALA] > 2) this.XP = 1;
			this.special1 = special1;
			this.special2 = special2;
			this.special3 = special3;
			var wingDesc:String = "shimmering wings";
			if (flags[kFLAGS.TIMES_PC_DEFEATED_VALA] == 0) this.drop = new WeightedDrop(consumables.NUMBROX);
			else this.drop = NO_DROP;
			this.wingType = WING_TYPE_BEE_LIKE_LARGE;
			this.wingDesc = wingDesc;
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Dungeons.DeepCave
{
	import classes.*;
	import classes.internals.*;

	public class Zetaz extends Monster
	{
		public function zetazAI():void {
			//Zetaz taunts.
			zetazTaunt();
			outputText("\n\n", false);
			//If afflicted by blind or whispered and over 50% lust,
			//burns lust and clears statuses before continuing with
			//turn.
			if (lust > 50 && (findStatusEffect(StatusEffects.Fear) >= 0 || findStatusEffect(StatusEffects.Blind) >= 0)) {
				removeStatusEffect(StatusEffects.Fear);
				removeStatusEffect(StatusEffects.Blind);
				lust -= 10;
				outputText("Zetaz blinks and shakes his head while stroking himself.  After a second his turgid member loses some of its rigidity, but his gaze has become clear.  He's somehow consumed some of his lust to clear away your magic!", false);
			}

			//STANDARD COMBAT STATUS AFFECTS HERE
			if (findStatusEffect(StatusEffects.Stunned) >= 0) {
				outputText("Your foe is too dazed from your last hit to strike back!", false);
				removeStatusEffect(StatusEffects.Stunned);
				combatRoundOver();
				return;
			}
			var select:Number=1;
			var rando:Number=1;
			//Exgartuan gets to do stuff!
			if (player.findStatusEffect(StatusEffects.Exgartuan) >= 0 && player.statusEffectv2(StatusEffects.Exgartuan) == 0 && rand(3) == 0) {
				game.exgartuan.exgartuanCombatUpdate();
				outputText("\n\n", false);
			}
			if (findStatusEffect(StatusEffects.Constricted) >= 0) {
				//Enemy struggles -
				outputText("Your prey pushes at your tail, twisting and writhing in an effort to escape from your tail's tight bonds.", false);
				if (statusEffectv1(StatusEffects.Constricted) <= 0) {
					outputText("  " + capitalA + short + " proves to be too much for your tail to handle, breaking free of your tightly bound coils.", false);
					removeStatusEffect(StatusEffects.Constricted);
				}
				addStatusValue(StatusEffects.Constricted,1,-1);
				combatRoundOver();
				return;
			}
			//STANDARD COMBAT STATUS AFFECTS END HERE
			//-If over 50 lust and below 50% hp
			//--burns 20 lust to restore 20% hp.
			if (lust > 50 && HPRatio() <= .5) {
				outputText("The imp lord shudders from his wounds and the pulsing member that's risen from under his tattered loincloth.  He strokes it and murmurs under his breath for a few moments.  You're so busy watching the spectacle of his masturbation that you nearly miss the sight of his bruises and wounds closing!  Zetaz releases his swollen member, and it deflates slightly.  He's used some kind of black magic to convert some of his lust into health!", false);
				addHP(0.25 * eMaxHP());
				lust -= 20;
				game.dynStats("lus", 2);
			}
			else {
				var attackChoice:Number = rand(3);
				if (attackChoice == 0) {
					//Chucks faux-heat draft ala goblins. -
					outputText("Zetaz grabs a bottle from a drawer and hurls it in your direction!  ", false);
					if ((player.findPerk(PerkLib.Evade) >= 0 && rand(4) == 0) ||
						(player.findPerk(PerkLib.Flexibility) >= 0 && rand(6) == 0) ||
						(player.spe > 65 && rand(10) == 0) ||
						(player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 20 && player.armorName == "red, high-society bodysuit")) {
						outputText("You sidestep it a moment before it shatters on the wall, soaking the tapestries with red fluid!", false);
					}
					else {
						outputText("You try to avoid it, but the fragile glass shatters against you, coating you in sticky red liquid.  It seeps into your " + player.skinDesc + " and leaves a pleasant, residual tingle in its wake.  Oh no...", false);
						//[Applies: "Temporary Heat" status]
						if (player.findStatusEffect(StatusEffects.TemporaryHeat) < 0) player.createStatusEffect(StatusEffects.TemporaryHeat,0,0,0,0);
					}
				}
				else if (attackChoice == 1) {
					//'Gust' – channels a pidgy's spirit to beat
					//his wings and kick up dust, blinding the PC
					//next turn and dealing light damage. -
					outputText("The imp leaps into the air with a powerful spring, beating his wings hard to suspend himself in the center of his bedchamber.  Dust kicks up into the air from the force of his flight and turns the room into a blinding tornado!  Small objects smack off of you, ", false);
					//(causing little damage/
					if (player.tou > 60) outputText("causing little damage", false);
					else {
						var dmg:Number = 1 + rand(6);
						outputText("wounding you slightly ", false);
						dmg = player.takeDamage(dmg, true);
					}
					outputText(" while the dust gets into your eyes, temporarily blinding you!", false);
					player.createStatusEffect(StatusEffects.Blind,1,0,0,0);
				}
				//Gigarouse – A stronger version of normal imp's
				//'arouse' spell. - copy normal arouse text and
				//spice it up with extra wetness!
				else {
					gigaArouse();
				}
			}
			combatRoundOver();
		}

		public function gigaArouse():void {
			outputText("You see " + a + short + " make familiar arcane gestures at you, but his motions seem a lot more over the top than you'd expect from an imp.\n\n", false);
			game.dynStats("lus", rand(player.lib/10) +player.cor/10+15);
			if (player.lust < 30) outputText("Your nethers pulse with pleasant warmth that brings to mind pleasant sexual memories.  ", false);
			if (player.lust >= 30 && player.lust < 60) outputText("Blood rushes to your groin in a rush as your body is hit by a tidal-wave of arousal.  ", false);
			if (player.lust >= 60) outputText("Your mouth begins to drool as you close your eyes and imagine yourself sucking off Zetaz, then riding him, letting him sate his desires in your inviting flesh.  The unnatural visions send pulses of lust through you so strongly that your body shivers.  ", false);
			if (player.cocks.length > 0) {
				if (player.lust >= 60 && player.cocks.length > 0) outputText("You feel " + player.SMultiCockDesc() + " dribble pre-cum, bouncing with each beat of your heart and aching to be touched.  ", false);
				if (player.lust >= 30 && player.lust < 60 && player.cocks.length == 1) outputText(player.SMultiCockDesc() + " hardens and twitches, distracting you further.  ", false);
			}
			if (player.vaginas.length > 0) {
				if (player.lust >= 60 && player.vaginas[0].vaginalWetness == VAGINA_WETNESS_NORMAL && player.vaginas.length == 1) outputText("Your " + player.vaginaDescript() + " dampens perceptibly, feeling very empty.  ", false);
				if (player.lust >= 60 && player.vaginas[0].vaginalWetness == VAGINA_WETNESS_WET && player.vaginas.length > 0) outputText("Your crotch becomes sticky with girl-lust, making it clear to " + a + short + " just how welcome your body finds the spell.  ", false);
				if (player.lust >= 60 && player.vaginas[0].vaginalWetness == VAGINA_WETNESS_SLICK && player.vaginas.length == 1) outputText("Your " + player.vaginaDescript() + " becomes sloppy and wet, dribbling with desire to be mounted and fucked.  ", false);
				if (player.lust >= 60 && player.vaginas[0].vaginalWetness == VAGINA_WETNESS_DROOLING && player.vaginas.length > 0) outputText("Thick runners of girl-lube stream down the insides of your thighs as your crotch gives into the demonic magics.  You wonder what " + a + short + "'s cock would feel like inside you?  ", false);
				if (player.lust >= 60 && player.vaginas[0].vaginalWetness == VAGINA_WETNESS_SLAVERING && player.vaginas.length == 1) outputText("Your " + player.vaginaDescript() + " instantly soaks your groin with the heady proof of your need.  You wonder just how slippery you could " + a + short + "'s dick when it's rammed inside you?  ", false);
			}
			if (player.lust >= player.maxLust()) doNext(game.combat.endLustLoss)
			else combatRoundOver();
		}

		public function zetazTaunt():void {
			if (findStatusEffect(StatusEffects.round) < 0) {
				createStatusEffect(StatusEffects.round,1,0,0,0);
				outputText("Zetaz asks, \"Do you even realize how badly you fucked up my life, ", false);
				if (player.humanScore() >= 4) outputText("human", false);
				else outputText("'human'", false);
				outputText("?  No, of course not.  That's the kind of attitude I'd expect from one of you!\"", false);
			}
			else {
				addStatusValue(StatusEffects.round,1,1);
				if (statusEffectv1(StatusEffects.round) == 2) outputText("\"I lost my post!  And when you screwed up the factory?  I barely escaped with my life!  You ruined EVERYTHING!\" screams Zetaz.", false);
				else if (statusEffectv1(StatusEffects.round) == 3) outputText("Zetaz snarls, \"Do you know how hard it is to hide from Lethice?  DO YOU HAVE ANY IDEA!?  I've had to live in this fetid excuse for a jungle, and just when I found some friends and made it livable, you show up and DESTROY EVERYTHING!\"", false);
				else if (statusEffectv1(StatusEffects.round) == 4) outputText("Zetaz explains, \"I won't let you go.  I'm going to break you.\"", false);
				else if (statusEffectv1(StatusEffects.round) == 5) outputText("\"Would it have been that bad to go along with me?  You've seen the factory.  We would've kept you fed, warm, and provided you with limitless pleasure.  You would've tasted heaven and served a greater purpose.  It's not too late.  If you come willingly I can make sure they find a good machine to milk you with,\" offers the imp lord.", false);
				else if (statusEffectv1(StatusEffects.round) == 6) outputText("\"Why won't you fall?\" questions Zetaz incredulously.", false);
				else if (statusEffectv1(StatusEffects.round) == 7) outputText("The imp lord suggests, \"If you give up and let me fuck your ass maybe I'll let you go.\"", false);
				else if (statusEffectv1(StatusEffects.round) == 8) outputText("Zetaz pants, \"Just give up!  I'm nothing like the weakling you met so long ago!  I've been through hell to get here and I'm not giving it up just because you've shown up to destroy my hard work!\"", false);
				else outputText("He glares at you silently.", false);
			}
		}

		override public function doAI():void
		{
			zetazAI();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.dungeons.deepcave.defeatZetaz();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem put off enough to care...");
				doNext(game.combat.endLustLoss);
			} else {
				game.dungeons.deepcave.loseToZetaz();
			}
		}

		public function Zetaz()
		{
			this.a = "";
			this.short = "Zetaz";
			this.imageName = "zetaz";
			this.long = "Zetaz has gone from a pipsqueak to the biggest imp you've seen!  Though he has the familiar red skin, curving pointed horns, and wings you would expect to find on an imp, his feet now end in hooves, and his body is covered with thick layers of muscle.  If the dramatic change in appearance is any indication, he's had to toughen up nearly as much as yourself over the past "+(game.model.time.days < 60? "weeks":"months") +".  Zetaz still wears the trademark imp loincloth, though it bulges and shifts with his movements in a way that suggest a considerable flaccid size and large, full sack.  His shoulders are wrapped with studded leather and his wrists are covered with metallic bracers.  The imp has clearly invested in at least a little additional protection.  It does not look like he carries a weapon.";
			this.createCock(rand(2) + 11,2.5,CockTypesEnum.DEMON);
			this.balls = 2;
			this.ballSize = 1;
			this.cumMultiplier = 3;
			this.hoursSinceCum = 20;
			createBreastRow(0);
			this.ass.analLooseness = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.tallness = 4*12+1;
			this.hipRating = HIP_RATING_BOYISH;
			this.buttRating = BUTT_RATING_TIGHT;
			this.lowerBody = LOWER_BODY_TYPE_KANGAROO;
			this.skinTone = "red";
			this.hairColor = "black";
			this.hairLength = 5;
			initStrTouSpeInte(65, 60, 45, 52);
			initLibSensCor(55, 35, 100);
			this.weaponName = "claws";
			this.weaponVerb="claw-slash";
			this.armorName = "leathery skin";
			this.bonusHP = 350;
			this.lust = 40;
			this.lustVuln = .35;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 12;
			this.gems = rand(55) + 150;
			this.additionalXP = 100;
			this.drop = new WeightedDrop(consumables.BIMBOLQ, 1);
			this.wingType = WING_TYPE_IMP;
			this.wingDesc = "small";
			this.createPerk(PerkLib.ImprovedSelfControl, 0, 0, 0, 0);
			checkMonster();
		}

	}

}

license: unknown


code:
package classes.Scenes.Dungeons.DesertCave
{
	import classes.*;

	public class SandMother extends Monster
	{
		//Notes:
		//Starts combat with sandstorm.  GigaFire's every fifth round.
		//Whispers every fourth.
		public function sandWitchMotherAI():void {
			if (findStatusEffect(StatusEffects.Sandstorm) < 0) {
				sandStormAttack();
				return;
			}
			if (findStatusEffect(StatusEffects.Gigafire) >= 0) {
				gigaFire2();
				return;
			}
			var choices:Array = [];
			if (player.findStatusEffect(StatusEffects.Whispered) < 0) choices[choices.length] = getWhispered;
			choices[choices.length] = eatALightningBolt;
			choices[choices.length] = sandMotherTelekinesis;
			choices[choices.length] = gigaFire;
			choices[choices.length] = earthShield;
			choices[rand(choices.length)]();
		}
		//Earthshield
		public function earthShield():void {
			//Surrounds the witch a vortex of stones, raising her defense greatly and conferring 25% block to standard attacks.
			outputText("Lowering her scepter towards the ground, the eight-foot tall sorceress suddenly grunts, lifting it as if carrying great weight.  As the small staff passes her chest, bits of stone and rock begin to lift out of the ground, accelerating into a vortex of earth that spins around her.  It's going to be harder to hit her with physical attacks now!");
			createStatusEffect(StatusEffects.Earthshield,0,0,0,0);
			combatRoundOver();
		}
		//*GigaFire
		public function gigaFire():void {
			//Begins focusing into her staff, which floats in front of her.  PC disrupt attack by attacking.  Attack hits at half strength if disrupted.
			outputText("Releasing the scepter, the Sand Mother spreads her hands, each glowing with eldritch, white flames.  Her heels slowly float up off the ground as she closes her eyes in concentration.  You can sense the power and heat rolling off her in waves, and if you don't do something to disrupt her, you'll likely be burned to a crisp.");
			if (player.inte > 40) outputText("  She's not even looking at you and seems steeled against lusty interruptions.  Perhaps you can hit her hard enough to shatter her concentration.");
			createStatusEffect(StatusEffects.Gigafire,0,0,0,0);
			combatRoundOver();
		}
		public function gigaFire2():void {
			var damage:int = 40 + rand(11);
			//Not interrupted:
			if (statusEffectv1(StatusEffects.Gigafire) < 10) {
				outputText("The Sand Mother grabs her scepter in both hands, combining the flames that wreath them into an immense, blinding conflagration.  She points at you, and the fire washes out in a wave like a serpent, twisting at you as you try to avoid it, doubling back on itself whenever it misses.  It's unavoidable!  You're enveloped in the consuming fire!");
				damage *= 3;
			}
			//Interrupted:
			else {
				outputText("Thumbling back to the ground from your damaging hit, the Sand Mother grabs at her head, one flame going out.  She recovers in time to grab the staff and fling it towards you, but it's at a fraction of the strength she intended.  Still, it burns all the same. ");
			}
			damage = player.takeDamage(damage, true);
			removeStatusEffect(StatusEffects.Gigafire);
			combatRoundOver();
		}

		//*Telekinesis
		//Throws the PC against the wall.  Does more damage to shorter, thinner PCs.
		public function sandMotherTelekinesis():void {
			outputText("She narrows her eyes at you, and an immense, magical pressure reaches out, taking hold of you.  It spins you in the air before slamming you into the walls!");

			var sizeMod:Number = 100;
			var thickMod:Number = player.thickness / 100 + 0.5;
			sizeMod += player.tallness * thickMod;
			if (sizeMod < 140) outputText("  You immediately wish you weren't so small, as you're sure she couldn't have flung a heavier champion nearly as easily. ");
			else if (sizeMod >= 200) outputText("  You're glad for your size, as she couldn't seem to accelerate you into the stone as fast as she'd like.  Sometimes eating plenty pays off. ");
			//0 thickness, 4' tall: 124
			//100 thickness, 4' tall: 172
			//0 thickness, 6' tall: 136
			//100 thickness, 6' tall: 208
			//0 thickness, 8' tall: 148
			//100 thickness, 8' tall: 244
			var multiplier:Number = sizeMod / 170;
			var damage:Number = 20;
			damage = multiplier * damage;
			damage = player.takeDamage(damage, true);
			combatRoundOver();
		}

		//*Lightning Bolt
		//Unavoidable magic damage.
		public function eatALightningBolt():void {
			outputText("Holding her staff back, she lifts her free hand with her fingers outstretched in a fan.  Sparks dance between her slender digits, coiling around them like snakes.  In a flash, they rush to her palm and erupt in a lightning bolt, striking you instantly and unavoidably! ");
			var damage:int = 30 + rand(10);
			damage = player.takeDamage(damage, true);
			combatRoundOver();
		}
		//*Whisper:
		//As ackbal, stuns the PC 1 round.  Cannot be resisted.
		public function getWhispered():void {
			outputText("Mouthing, \"Can you hear me?\" the witch's voice intrudes into your mind, matching her mouth word for word.  She floods your psyche with words and thoughts, all of your defeat or submission, each more degrading and more humiliating than the last.  Perhaps the worst are the ones where she turns you over to Lethice after you're broken...  The tumultous thoughts and emotions both stun and arouse you, preventing you from attacking while you try to clear your beleaguered consciousness.");
			player.createStatusEffect(StatusEffects.Whispered,0,0,0,0);
			game.dynStats("lus", 15);
			combatRoundOver();
		}
		public function sandStormAttack():void {
			outputText("With a smirk, the Sand Mother decrees, \"You fight not just me, but the shifting sands as well.\"  She casually flicks her wrist, and sand rises up from the floors, the walls, everywhere really.  It begins to spin about, blown by an unseen wind, and the entire chamber is wreathed in a shifting sandstorm.  The grit constantly tries to get into your eyes.  It's likely you're going to be blinded by it every now and then.");
			createStatusEffect(StatusEffects.Sandstorm,0,0,0,0);
			combatRoundOver();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.dungeons.desertcave.defeatTheSandMother();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			game.dungeons.desertcave.loseToTheSandMother();
		}

		public function SandMother()
		{
			this.a = "the ";
			this.short = "Sand Mother";
			this.imageName = "sandmother";
			this.long = "The Sand Mother is a towering woman of imposing stature and bust.  She wears a much silkier, regal-looking robe than her sisters, and it barely serves to contain her four milk-laden breasts, straining under their jiggling weight.  Dangling around her in a way that reminds you oddly of a halo, the Sand Mother's blonde-white hair fans around her, hanging long behind her.  The queen witch is brandishing a pearly white scepter rather threateningly, though from the way she holds it, it's clear she doesn't intend to use it as a physical weapon.";
			// this.plural = false;
			this.createVagina(false, VAGINA_WETNESS_WET, VAGINA_LOOSENESS_LOOSE);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 70, 0, 0, 0);
			this.createBreastRow(Appearance.breastCupInverse("DD"));
			this.createBreastRow(Appearance.breastCupInverse("DD"));
			this.ass.analLooseness = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_NORMAL;
			this.createStatusEffect(StatusEffects.BonusACapacity,50,0,0,0);
			this.tallness = 8*12+6;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_LARGE;
			this.skinTone = "bronzed";
			this.hairColor = "platinum-blonde";
			this.hairLength = 15;
			initStrTouSpeInte(55, 55, 35, 45);
			initLibSensCor(55, 40, 30);
			this.weaponName = "fists";
			this.weaponVerb="punches";
			this.weaponAttack = 0;
			this.weaponPerk = "";
			this.weaponValue = 150;
			this.armorName = "robes";
			this.armorDef = 1;
			this.bonusHP = 130;
			this.lust = 20;
			this.lustVuln = .6;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 7;
			this.gems = rand(15) + 55;
			this.createPerk(PerkLib.Resolute,0,0,0,0);
			this.createPerk(PerkLib.Focused,0,0,0,0);
			this.createPerk(PerkLib.ImprovedSelfControl, 0, 0, 0, 0);
			this.drop = NO_DROP;
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Dungeons.DesertCave
{
	import classes.*;

	public class SandWitchMob extends Monster
	{
		public function sandWitchMobAI():void {
			if (findStatusEffect(StatusEffects.Sandstorm) < 0) sandStormAttack();
			else if (HPRatio() < .5) drankSomeMialk();
			else if (findStatusEffect(StatusEffects.Sandstorm) >= 0 && rand(2) == 0 && player.findStatusEffect(StatusEffects.LustStones) < 0) sandstonesAreCool();
			else if (rand(3) == 0) headbuttABitch();
			else gangrush();
		}

		//Sand Witch Mob Attacks:
		//Swarm
		//-Mob gangrushes the PC; multiple hits, light damage
		public function gangrush():void {
			outputText("The witches close ranks and advance with raised fists, intent on beating you into submission!\n");
			//3-5 attacks.at half strength
			str -= 10;
			createStatusEffect(StatusEffects.Attacks,2 + rand(3),0,0,0);
			eAttack();
			str += 10;

		}

		//Headbutt
		//Single, high damage attack
		//High hit chance
		public function headbuttABitch():void {
			outputText("The crowd parts, and a stockier, sturdier sorceress ambles out, fists up and head cocked back.  She makes to punch at you before pulling her fist at the last second, snapping her head forward in a powerful headbutt!  You barely have time to react!");
			var damage:int = Math.round((str + weaponAttack + 10) - rand(player.tou) - player.armorDef);
			//Dodge
			if (player.getEvasionRoll()) {
				outputText("\nThrowing yourself out of the way, you manage to avoid the hit.  Your foe doesn't seem nearly as pleased while she fades back in between her sisters.");
			}
			//Block
			else if (damage <= 0) {
				outputText("\nYou catch the hit on your forearm, stopping her cold.  The thuggish woman snarls as she fades back in between her sisters, disappointed at doing so little damage.");
			}
			//Hit
			else {
				outputText("\nShe hits you square in the face, bloodying your face and sending you stumbling back in agony. ");
				damage = player.takeDamage(damage, true);
			}
			combatRoundOver();
		}

		//Sand Stones
		//-Mob summons vibrating sands sands to  lust increase PCs lust
		//- Lust gained each round they use it is determined by how many naughty bits a PC has.
		//-For every dick, set of breast(nips?), cunts and ass-hole on a PC, the lust gain is increased by 3, Not accounting for lust resistance.
		//-Goo bodies will gain 30 Lust by default, not accounting lust resistance.
		//-Stones will randomly vibrate throughout the battle if they get the PC.

		public function sandstonesAreCool():void {
			outputText("The sandstorm whirling around the room suddenly ceases, and all the tiny sand particles gather together into balls, growing into several smooth stones.  Then, all the sand stones fall to the ground and slither towards you.");

			var bonus:int = 0;
			//[If they attack lands]
			if (!player.getEvasionRoll()) {
				//[IF PC has solid body]
				if (!player.isGoo()) {
					outputText("\n\nThey crawl up your [legs].  You try to swat them all off, but there are too many.");
					//If PC has 1 cock:
					if (player.cockTotal() == 1) outputText("  A stone crawls onto your [cock].");
					//[If PC has multi-cocks:
					if (player.cockTotal() > 1) outputText("  A bunch of the stones crawl onto your " + player.multiCockDescriptLight() + ".");
					if (player.hasCock()) bonus++;
					//[If PC has cunt]
					if (player.hasVagina()) {
						outputText("  One stone slides up your inner thigh");
						if (player.balls > 0) outputText(" behind your [sack]");
						outputText(" and pops itself right into your [vagina]");
						if (player.hasVirginVagina()) outputText(", robbing you of your virginity as a trickle of blood runs down your [leg].");
						bonus++;
					}
					//[If PC has balls:
					if (player.balls > 0) {
						outputText("  A small set of stones settle on your [balls].");
						bonus++;
					}
					outputText("  " + num2Text(player.totalNipples()) + " crawl up to your chest and over your top " + player.nippleDescript(0) + "s");
					if (player.bRows() > 1) {
						if (player.bRows() == 2) outputText(" and");
						else outputText(",");
						outputText(" your middle " +  player.nippleDescript(1) + "s");
						bonus++;
					}
					if (player.bRows() > 2) {
						outputText(", and your bottom " + player.nippleDescript(2) + "s");
						bonus++;
					}
					outputText(".");
					outputText("  The last stone travels up the back of your [legs] and slides right into your [asshole].");
					outputText("\n\nYou try to get the stones off and out of you, but some kind of magic is keeping them stuck to you like glue.  One sand-witch snaps her fingers, and all the of the smooth stones begin vibrating, making numbing waves of pleasure that rattle your body.  You have to end this quick, or else!");
				}
				//[IF PC has goo body]
				else {
					outputText("\n\nThe stones launch themselves into your gooey body.  You try your best to dislodge these foreign objects from your insides, but some-kind of magic is holding them in place.  A sand-witch snaps her fingers and all the stones begin vibrating, sending ripples throughout your sentative gooey body.  It feels like your whole body is one, big pleasure-bomb right now.  You had better end this fight soon!");
					bonus = 5;

				}
				player.createStatusEffect(StatusEffects.LustStones,bonus,0,0,0);
				game.dynStats("lus", bonus * 2 + 5 + player.sens/7);
			}
			//[If attack misses]
			else {
				outputText("\nThe stones then make a ninety degree turn into the purple fire, and then nothing.  One sand-witch smacks another upside the head, yelling something about focusing.");
			}
			removeStatusEffect(StatusEffects.Sandstorm);
			combatRoundOver();
		}

		//Milk is Good
		//-Mob's members start sucking on each other's tits. Arouses PC and restores health to mob, decreases (increases?) mob's lust.
		public function drankSomeMialk():void {
			outputText("One of the blonde beauties turns to another and asks, \"A drink, sister?  Fighting this intruder has given me a powerful thirst.\"  The other woman wordlessly opens her robe, baring her breasts, exposing four heaving, milk-fueled mounds to the air before the other woman claims a nipple for herself.  Three others crowd in on the exposed teats, their rumps shaking contentedly as they grab a quick snack.");
			outputText("\n\nAfter wiping the excess from their lips, they close their robes and resume a fighting stance, seeming healthier than before.");
			game.dynStats("lus", 4 + player.lib/10);
			//+ 30 HP, +light lust damage to PC and mob
			addHP(30);
			combatRoundOver();
		}

		//*Sandstorm
		//Creates a sandstorm that blinds the PC one out of every 3 rounds.  Used first turn. Deals light HP damage every turn.  Reduces breath attacks damage by 80%.  Makes bow miss 50% of the time.
		public function sandStormAttack():void {
			outputText("The witches link their hands together and begin to chant together, lifting their voices high as loose sand trickles in from every corner, every doorway, even the ceiling.  \"Enevretni llahs tresed eht!\"  Swirling around the chamber, a cloud of biting, stinging sand clouds your vision and bites into your skin.  It's going to keep blinding you and hurting you every round!");
			createStatusEffect(StatusEffects.Sandstorm,0,0,0,0);
			combatRoundOver();
		}

		override protected function performCombatAction():void
		{
			sandWitchMobAI();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.dungeons.desertcave.yoYouBeatUpSomeSandWitchesYOUMONSTER();
		}

		override public function won(hpVictory:Boolean,pcCameWorms:Boolean):void
		{
			game.dungeons.desertcave.loseToSammitchMob();
		}

		public function SandWitchMob()
		{
			this.a = "the ";
			this.short = "sand witches";
			this.imageName = "sandwitchmob";
			this.long = "You are surrounded by a veritable tribe of sand witches.  Like the ones that roam the sands, they have simple robes, blond hair, and four big breasts that push at the concealing cloth immodestly.  Glowering at you hatefully, the pack of female spellcasters readies itself to drag you down with sheer numbers.";
			this.plural = true;
			this.pronoun1 = "they";
			this.pronoun2 = "them";
			this.pronoun3 = "their";
			this.createVagina(false, VAGINA_WETNESS_WET, VAGINA_LOOSENESS_LOOSE);
			this.createBreastRow(Appearance.breastCupInverse("DD"));
			this.createBreastRow(Appearance.breastCupInverse("DD"));
			this.ass.analLooseness = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_NORMAL;
			this.tallness = rand(12) + 55;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_LARGE;
			this.skinTone = "bronzed";
			this.hairColor = "sandy-blonde";
			this.hairLength = 15;
			initStrTouSpeInte(25, 25, 35, 45);
			initLibSensCor(55, 40, 30);
			this.weaponName = "fists";
			this.weaponVerb="punches";
			this.weaponAttack = 0;
			this.weaponPerk = "";
			this.weaponValue = 150;
			this.armorName = "robes";
			this.armorDef = 1;
			this.armorPerk = "";
			this.armorValue = 5;
			this.bonusHP = 80;
			this.lust = 30;
			this.lustVuln = .5;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 4;
			this.gems = rand(15) + 5;
			this.drop = NO_DROP;
			checkMonster();

		}

	}

}


code:
package classes.Scenes.Dungeons
{
	import classes.*;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.Scenes.Dungeons.DungeonCore;

	/**
	 * ...
	 * @author Kitteh6660
	 */
	public class DungeonAbstractContent extends BaseContent
	{
		protected function get dungeons():DungeonCore {
			return kGAMECLASS.dungeons;
		}
		public function DungeonAbstractContent()
		{
		}

	}

}


code:
package classes.Scenes.Dungeons
{
	import classes.*;
	import classes.BaseContent;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;

	import coc.view.MainView;

	public class DungeonCore extends BaseContent
	{
		//Dungeon constants
		//Factory
		public static const DUNGEON_FACTORY_FOYER:int			=  0;
		public static const DUNGEON_FACTORY_BREAK_ROOM:int		=  1;
		public static const DUNGEON_FACTORY_PUMP_ROOM:int		=  2;
		public static const DUNGEON_FACTORY_FURNACE_ROOM:int	=  3;
		public static const DUNGEON_FACTORY_REPAIR_CLOSET:int	=  4;
		public static const DUNGEON_FACTORY_MAIN_CHAMBER:int	=  5;
		public static const DUNGEON_FACTORY_FOREMANS_OFFICE:int	=  6;
		public static const DUNGEON_FACTORY_PUMP_CONTROL:int	=  7;
		public static const DUNGEON_FACTORY_STORE_ROOM:int		=  8;
		public static const DUNGEON_FACTORY_BATHROOM:int		=  9;
		//Deep Cave
		public static const DUNGEON_CAVE_ENTRANCE:int			= 10;
		public static const DUNGEON_CAVE_TUNNEL:int				= 11;
		public static const DUNGEON_CAVE_GATHERING_HALL:int		= 12;
		public static const DUNGEON_CAVE_FUNGUS_CAVERN:int		= 13;
		public static const DUNGEON_CAVE_TORTURE_ROOM:int		= 14;
		public static const DUNGEON_CAVE_SECRET_TUNNEL:int		= 15;
		public static const DUNGEON_CAVE_ZETAZ_CHAMBER:int		= 16;
		//Phoenix Tower
		public static const DUNGEON_HEL_GUARD_HALL:int			= 17;
		public static const DUNGEON_HEL_WINE_CELLAR:int			= 18;
		public static const DUNGEON_HEL_STAIR_WELL:int			= 19;
		public static const DUNGEON_HEL_DUNGEON:int				= 20;
		public static const DUNGEON_HEL_MEZZANINE:int			= 21;
		public static const DUNGEON_HEL_THRONE_ROOM:int			= 22;
		//Desert Cave
		public static const DUNGEON_WITCH_ENTRANCE_GATEWAY:int	= 23;
		public static const DUNGEON_WITCH_CAVERNOUS_COMMONS:int	= 24;
		public static const DUNGEON_WITCH_WEST_WARRENS_MAIN:int	= 25;
		public static const DUNGEON_WITCH_CHILDRENS_PLAYROOM:int= 26;
		public static const DUNGEON_WITCH_PREGNANT_LUST_ROOM:int= 27;
		public static const DUNGEON_WITCH_WEST_WARRENS_WEST:int	= 28;
		public static const DUNGEON_WITCH_NURSERY:int			= 29;
		public static const DUNGEON_WITCH_PHARMACY:int			= 30;
		public static const DUNGEON_WITCH_EAST_WARRENS_MAIN:int	= 31;
		public static const DUNGEON_WITCH_SLEEPING_CHAMBER:int	= 32;
		public static const DUNGEON_WITCH_BATH_ROOM:int			= 33;
		public static const DUNGEON_WITCH_EAST_WARRENS_EAST:int	= 34;
		public static const DUNGEON_WITCH_CUM_WITCH_BEDROOM:int	= 35;
		public static const DUNGEON_WITCH_CUM_WITCH_OFFICE:int	= 36;
		public static const DUNGEON_WITCH_SACRIFICIAL_ALTAR:int	= 37;
		public static const DUNGEON_WITCH_THRONE_ROOM:int		= 38;
		//Anzu's Palace
		public static const DUNGEON_ANZU_OUTSIDE:int			= 39;
		public static const DUNGEON_ANZU_HALL_FLOOR1:int 		= 40;
		public static const DUNGEON_ANZU_LIVING_ROOM:int 		= 41;
		public static const DUNGEON_ANZU_BATHROOM:int 			= 42;
		public static const DUNGEON_ANZU_DINING_ROOM:int 		= 43;
		public static const DUNGEON_ANZU_KITCHEN:int 			= 44;
		public static const DUNGEON_ANZU_HALL_FLOOR2:int		= 45;
		public static const DUNGEON_ANZU_BEDROOM:int 			= 46;
		public static const DUNGEON_ANZU_LIBRARY:int 			= 47;
		public static const DUNGEON_ANZU_MULTIUSE_ROOM:int 		= 48;
		public static const DUNGEON_ANZU_HALL_FLOOR3:int 		= 49;
		public static const DUNGEON_ANZU_PALACE_VAULTS:int 		= 50;
		public static const DUNGEON_ANZU_ALCHEMY_ROOM:int 		= 51;
		public static const DUNGEON_ANZU_ROOF:int 				= 52;
		public static const DUNGEON_ANZU_BASEMENT:int 			= 53;
		public static const DUNGEON_ANZU_ARMORY:int 			= 54;

		//Register dungeons
		public var factory:Factory = new Factory;
		public var deepcave:DeepCave = new DeepCave;
		public var desertcave:DesertCave = new DesertCave;
		public var heltower:HelDungeon = new HelDungeon;
		public var palace:AnzuPalace = new AnzuPalace;
		public var cabin:YourCabin = new YourCabin;

		public var map:DungeonMap = new DungeonMap;

		public function DungeonCore() {}

		public function checkRoom():void
		{
			//Cabin
			if (kGAMECLASS.dungeonLoc == -10) cabin.enterCabin();
			//Factory
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_FOYER) factory.roomLobby();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_BREAK_ROOM) factory.roomBreakRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_PUMP_ROOM) factory.roomPumpRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_FURNACE_ROOM) factory.roomFurnaceRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_REPAIR_CLOSET) factory.roomRepairCloset();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_MAIN_CHAMBER) factory.roomMainChamber();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_FOREMANS_OFFICE) factory.roomForemanOffice();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_PUMP_CONTROL) factory.roomControlRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_STORE_ROOM) factory.roomPremiumStorage();
			if (kGAMECLASS.dungeonLoc == DUNGEON_FACTORY_BATHROOM) factory.roomBathroom();
			//Deep Cave
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_ENTRANCE) deepcave.roomEntrance();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_TUNNEL) deepcave.roomTunnel();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_GATHERING_HALL) deepcave.roomGatheringHall();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_FUNGUS_CAVERN) deepcave.roomFungusCavern();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_TORTURE_ROOM) deepcave.roomTortureRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_SECRET_TUNNEL) deepcave.roomSecretPassage();
			if (kGAMECLASS.dungeonLoc == DUNGEON_CAVE_ZETAZ_CHAMBER) deepcave.roomZetazChamber();
			//Tower of the Phoenix (Helia's Quest)
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_GUARD_HALL) heltower.roomGuardHall();
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_WINE_CELLAR) heltower.roomCellar();
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_STAIR_WELL) heltower.roomStairwell();
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_DUNGEON) heltower.roomDungeon();
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_MEZZANINE) heltower.roomMezzanine();
			if (kGAMECLASS.dungeonLoc == DUNGEON_HEL_THRONE_ROOM) heltower.roomThroneRoom();
			//Desert Cave
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_ENTRANCE_GATEWAY) desertcave.roomEntrance();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_CAVERNOUS_COMMONS) desertcave.roomCaveCommons();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_WEST_WARRENS_MAIN) desertcave.roomWestHall1();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_CHILDRENS_PLAYROOM) desertcave.roomPlayRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_PREGNANT_LUST_ROOM) desertcave.roomLustRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_WEST_WARRENS_WEST) desertcave.roomWestHall2();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_NURSERY) desertcave.roomNursery();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_PHARMACY) desertcave.roomPharmacy();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_EAST_WARRENS_MAIN) desertcave.roomEastHall1();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_SLEEPING_CHAMBER) desertcave.roomSleepingChamber();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_BATH_ROOM) desertcave.roomBathroom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_EAST_WARRENS_EAST) desertcave.roomEastHall2();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_CUM_WITCH_BEDROOM) desertcave.roomCumWitchBedroom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_CUM_WITCH_OFFICE) desertcave.roomCumWitchOffice();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_SACRIFICIAL_ALTAR) desertcave.roomSacrificalAltar();
			if (kGAMECLASS.dungeonLoc == DUNGEON_WITCH_THRONE_ROOM) desertcave.roomSandMotherThrone();
			//Anzu's Palace
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_OUTSIDE) palace.roomEntrance();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_HALL_FLOOR1) palace.roomFoyer();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_LIVING_ROOM) palace.roomLivingRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_BATHROOM) palace.roomBathroom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_DINING_ROOM) palace.roomDiningRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_KITCHEN) palace.roomKitchen();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_HALL_FLOOR2) palace.roomHallFloor2();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_BEDROOM) palace.roomBedroom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_LIBRARY) palace.roomLibrary();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_MULTIUSE_ROOM) palace.roomMultiuse();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_HALL_FLOOR3) palace.roomHallFloor3();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_PALACE_VAULTS) palace.roomVault();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_ALCHEMY_ROOM) palace.roomAlchemyRoom();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_ROOF) palace.roomRoof();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_BASEMENT) palace.roomBasement();
			if (kGAMECLASS.dungeonLoc == DUNGEON_ANZU_ARMORY) palace.roomArmory();
		}

		public function checkFactoryClear():Boolean {
			return (flags[kFLAGS.FACTORY_SHUTDOWN] > 0 && flags[kFLAGS.FACTORY_SUCCUBUS_DEFEATED] > 0 && flags[kFLAGS.FACTORY_INCUBUS_DEFEATED] > 0 && flags[kFLAGS.FACTORY_OMNIBUS_DEFEATED] > 0);
		}
		public function checkDeepCaveClear():Boolean {
			return (flags[kFLAGS.ZETAZ_IMP_HORDE_DEFEATED] > 0 && flags[kFLAGS.ZETAZ_FUNGUS_ROOM_DEFEATED] > 0 && flags[kFLAGS.FREED_VALA] == 1 && player.hasKeyItem("Zetaz's Map") >= 0);
		}
		public function checkSandCaveClear():Boolean {
			return ((flags[kFLAGS.ESSRAYLE_ESCAPED_DUNGEON] > 0 || flags[kFLAGS.MET_ESSY] == 0) && (flags[kFLAGS.SAND_WITCHES_FRIENDLY] > 0 || flags[kFLAGS.SAND_WITCHES_COWED] > 0));
		}
		public function checkPhoenixTowerClear():Boolean {
			return (flags[kFLAGS.HARPY_QUEEN_EXECUTED] != 0 && flags[kFLAGS.HEL_HARPIES_DEFEATED] > 0 && flags[kFLAGS.HEL_PHOENIXES_DEFEATED] > 0 && flags[kFLAGS.HEL_BRIGID_DEFEATED] > 0);
		}
		public function checkLethiceStrongholdClear():Boolean {
			return (flags[kFLAGS.D3_MIRRORS_SHATTERED] > 0 && flags[kFLAGS.D3_JEAN_CLAUDE_DEFEATED] > 0 && flags[kFLAGS.D3_GARDENER_DEFEATED] > 0 && flags[kFLAGS.D3_CENTAUR_DEFEATED] > 0 && flags[kFLAGS.LETHICE_DEFEATED] > 0);
		}

		public function enterFactory():void {
			factory.enterDungeon();
		}
		public function enterDeepCave():void {
			deepcave.enterDungeon();
		}
		public function enterAnzuPalace():void {
			palace.enterDungeon();
		}

		public function navigateToRoom(room:Function = null, timeToPass:Number = 1/12):void {
			cheatTime(timeToPass);
			room();
		}

		/**
		 * Set the top buttons for use while in dungeons.
		 */
		public function setTopButtons():void { //Set top buttons.
			mainView.showMenuButton( MainView.MENU_APPEARANCE );
			mainView.showMenuButton( MainView.MENU_PERKS );
			mainView.showMenuButton( MainView.MENU_STATS );
			mainView.hideMenuButton( MainView.MENU_DATA );
			if ((player.XP >= (player.level) * 100 && player.level < kGAMECLASS.levelCap) || player.perkPoints > 0 || player.statPoints > 0) {
				if (player.XP < player.level * 100 || player.level >= kGAMECLASS.levelCap)
				{
					if (player.statPoints > 0) mainView.setMenuButton( MainView.MENU_LEVEL, "Stat Up" );
					else mainView.setMenuButton( MainView.MENU_LEVEL, "Perk Up" );
				}
				else {
					mainView.setMenuButton( MainView.MENU_LEVEL, "Level Up" );
					if (flags[kFLAGS.AUTO_LEVEL] > 0) {
						getGame().playerInfo.levelUpGo();
						return;
					}
				}
				mainView.showMenuButton( MainView.MENU_LEVEL );
				mainView.statsView.showLevelUp();
			}
			else {
				mainView.hideMenuButton( MainView.MENU_LEVEL );
				mainView.statsView.hideLevelUp();
			}
		}

		/**
		 * Set the buttons for use in dungeons. The parameters can be used to connect to rooms.
		 * @param	northFunction
		 * @param	southFunction
		 * @param	westFunction
		 * @param	eastFunction
		 */
		public function setDungeonButtons(northFunction:Function = null, southFunction:Function = null, westFunction:Function = null, eastFunction:Function = null):void {
			statScreenRefresh();
			hideUpDown();
			spriteSelect(-1);
			menu();
			if (northFunction != null) addButton(6, "North", navigateToRoom, northFunction);
			if (southFunction != null) addButton(11, "South", navigateToRoom, southFunction);
			if (westFunction != null) addButton(10, "West", navigateToRoom, westFunction);
			if (eastFunction != null) addButton(12, "East", navigateToRoom, eastFunction);
			if (player.lust >= 30) addButton(8, "Masturbate", getGame().masturbation.masturbateGo);
			else addButtonDisabled(8, "Masturbate", "You are not horny enough to do that.");
			addButton(13, "Inventory", inventory.inventoryMenu, null, null, null, "The inventory allows you to use an item.  Be careful as this leaves you open to a counterattack when in combat.");
			addButton(14, "Map", map.displayMap, null, null, null, "View the map of this dungeon.");
			setTopButtons();
			palace.setAnzuButton();
		}

	}

}


code:
package classes.Scenes.Dungeons {
	import classes.*;
	import classes.GlobalFlags.*;
	import classes.Scenes.Dungeons.*;

	public class DungeonMap extends BaseContent
	{

		public function DungeonMap()
		{
		}

		public function findLockedDoor1():void { //Door that requires iron key.
			rawOutputText("\n     " + (player.hasKeyItem("Iron Key") >= 0 ? "|": "L") +"     ");
		}

		public function findLockedDoor2():void { //Door that requires supervisors key.
			rawOutputText("\n " + (player.hasKeyItem("Supervisor's Key") >= 0 ? "|": "L") + "        ");
		}

		public function findLockedDoor3():void { //Door in Zetaz's lair.
			rawOutputText("\n     " + (flags[kFLAGS.ZETAZ_DOOR_UNLOCKED] > 0 ? "|": "L") + "   | ");
		}

		public function findLockedDoor4():void { //Door in desert cave.
			rawOutputText("\n |   |   " + (flags[kFLAGS.SANDWITCH_THRONE_UNLOCKED] > 0 ? "|": "L") + "   |     ");
		}

		public function findLockedDoorLethiceThrone():void {
			if (kGAMECLASS.d3.unlockedThroneRoom()) rawOutputText("\n      |      ");
			else rawOutputText("\n      L      ");
		}

		public function chooseRoomToDisplay():void {
			if (kGAMECLASS.dungeonLoc >= 0 && kGAMECLASS.dungeonLoc < 10) { //Factory
				outputText("Factory, " + (kGAMECLASS.dungeonLoc >= 6 && kGAMECLASS.dungeonLoc < 9 ? "2": "1") + "F");
				if (kGAMECLASS.dungeonLoc == 0) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[ ]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[P]—[ ]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 1) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[ ]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[ ]—[P]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 2) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[P]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 3) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[ ]—[P]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 4) {
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[ ]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 5) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[P]—[ ]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 6) {
					rawOutputText("\n[P]—[ ]    ");
					findLockedDoor2();
					rawOutputText("\n[ ]        ");
				}
				else if (kGAMECLASS.dungeonLoc == 7) {
					rawOutputText("\n[S]—[P]    ");
					findLockedDoor2();
					rawOutputText("\n[ ]        ");
				}
				else if (kGAMECLASS.dungeonLoc == 8) {
					rawOutputText("\n[S]—[ ]    ");
					findLockedDoor2();
					rawOutputText("\n[P]        ");
				}
				else if (kGAMECLASS.dungeonLoc == 9) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[S]—[ ]—[ ]");
					findLockedDoor1();
					rawOutputText("\n[P]—[ ]—[ ]");
					rawOutputText("\n     |     ");
				}
			}
			else if (kGAMECLASS.dungeonLoc >= 10 && kGAMECLASS.dungeonLoc < 17) { //Zetaz's Lair
				rawOutputText("Zetaz's Lair");
				if (kGAMECLASS.dungeonLoc == 10) {
					rawOutputText("\n    [ ]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 11) {
					rawOutputText("\n    [ ]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 12) {
					rawOutputText("\n    [ ]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[P]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 13) {
					rawOutputText("\n    [ ]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[P]—[ ]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 14) {
					rawOutputText("\n    [ ]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[ ]—[P]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 15) {
					rawOutputText("\n    [ ]—[P]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 16) {
					rawOutputText("\n    [P]—[ ]");
					findLockedDoor3();
					rawOutputText("\n[ ]—[ ]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
			}
			else if (kGAMECLASS.dungeonLoc >= 17 && kGAMECLASS.dungeonLoc < 23) { //Tower of the Phoenix
				rawOutputText("Tower of the Phoenix");
				if (kGAMECLASS.dungeonLoc == 17) {
					rawOutputText(", 1F");
					rawOutputText("\n    [S]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
				else if (kGAMECLASS.dungeonLoc == 18) {
					rawOutputText(", B1");
					rawOutputText("\n    [S]    ");
					rawOutputText("\n           ");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
				else if (kGAMECLASS.dungeonLoc == 19) {
					rawOutputText(", 1F");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [S]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
				else if (kGAMECLASS.dungeonLoc == 20) {
					rawOutputText(", B1");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n           ");
					rawOutputText("\n    [S]    ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
				else if (kGAMECLASS.dungeonLoc == 21) {
					rawOutputText(", 2F");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
				else if (kGAMECLASS.dungeonLoc == 22) {
					rawOutputText(", 3F");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n           ");
				}
			}
			else if (kGAMECLASS.dungeonLoc >= 23 && kGAMECLASS.dungeonLoc < 39) { //Desert Cave
				rawOutputText("Cave of the Sand Witches");
				if (kGAMECLASS.dungeonLoc == 23) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [P] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 24) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[P]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 25) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[P]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 26) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [P] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 27) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [P] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 28) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[P]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 29) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[P] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 30) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[P] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 31) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[P]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 32) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [P]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 33) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[P]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 34) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[P]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 35) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[P]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 36) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [P]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 37) {
					rawOutputText("\n        [ ]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [P] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
				else if (kGAMECLASS.dungeonLoc == 38) {
					rawOutputText("\n        [P]        ");
					rawOutputText("\n         |         ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					findLockedDoor4();
					rawOutputText("\n[ ]—[ ]—[ ]—[ ]—[ ]");
					rawOutputText("\n |   |   |       | ");
					rawOutputText("\n[ ] [ ] [ ] [ ]—[ ]");
					rawOutputText("\n         |         ");
				}
			}
			else if (kGAMECLASS.dungeonLoc >= 39 && kGAMECLASS.dungeonLoc < 55) { //Anzu's Palace
				outputText("Anzu's Palace, ");
				//Floor label
				if (kGAMECLASS.dungeonLoc >= 39 && kGAMECLASS.dungeonLoc <= 44) outputText("1F");
				if (kGAMECLASS.dungeonLoc >= 45 && kGAMECLASS.dungeonLoc <= 48) outputText("2F");
				if (kGAMECLASS.dungeonLoc >= 49 && kGAMECLASS.dungeonLoc <= 51) outputText("3F");
				if (kGAMECLASS.dungeonLoc == 52) outputText("Roof");
				if (kGAMECLASS.dungeonLoc == 53 || kGAMECLASS.dungeonLoc == 54) outputText("Basement");
				//Map display
				if (kGAMECLASS.dungeonLoc == 39) { //Floor 1
					rawOutputText("\n[ ]     [ ]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[ ]—[S]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 40) {
					rawOutputText("\n[ ]     [ ]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[ ]—[P]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 41) {
					rawOutputText("\n[ ]     [ ]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[P]—[S]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 42) {
					rawOutputText("\n[P]     [ ]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[ ]—[S]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 43) {
					rawOutputText("\n[ ]     [ ]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[ ]—[S]—[P]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 44) {
					rawOutputText("\n[ ]     [P]");
					rawOutputText("\n |       | ");
					rawOutputText("\n[ ]—[S]—[ ]");
					rawOutputText("\n     |     ");
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
				}
				else if (kGAMECLASS.dungeonLoc == 45) { //Floor 2
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[ ]—[P]—[ ]");
				}
				else if (kGAMECLASS.dungeonLoc == 46) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[P]—[S]—[ ]");
				}
				else if (kGAMECLASS.dungeonLoc == 47) {
					rawOutputText("\n    [P]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[ ]—[S]—[ ]");
				}
				else if (kGAMECLASS.dungeonLoc == 48) {
					rawOutputText("\n    [ ]    ");
					rawOutputText("\n     |     ");
					rawOutputText("\n[ ]—[S]—[P]");
				}
				else if (kGAMECLASS.dungeonLoc == 49) { //Floor 3
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n[ ]—[P]—[ ]");
				}
				else if (kGAMECLASS.dungeonLoc == 50) {
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n[P]—[S]—[ ]");
				}
				else if (kGAMECLASS.dungeonLoc == 51) {
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n[ ]—[S]—[P]");
				}
				else if (kGAMECLASS.dungeonLoc == 52) { //Roof
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n    [P]    ");
				}
				else if (kGAMECLASS.dungeonLoc == 53) { //Basement
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n[ ]—[P]    ");
				}
				else if (kGAMECLASS.dungeonLoc == 54) {
					rawOutputText("\n           ");
					rawOutputText("\n           ");
					rawOutputText("\n[P]—[S]    ");
				}
			}
		}

		public function chooseRoomToDisplayD3():void {
			//Basilisk Cave
			if (getGame().d3._currentRoom == "entrance") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [ ]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]—[ ]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[P]—[ ]    ");
			}
			else if (getGame().d3._currentRoom == "tunnel1") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [ ]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]—[ ]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[ ]—[P]    ");
			}
			else if (getGame().d3._currentRoom == "antechamber") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [ ]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [P]—[ ]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[ ]—[ ]    ");
			}
			else if (getGame().d3._currentRoom == "roomofmirrors") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [ ]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]—[P]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[ ]—[ ]    ");
			}
			else if (getGame().d3._currentRoom == "magpiehalls" || getGame().d3._currentRoom == "magpiehalln") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [ ]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [P]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]—[ ]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[ ]—[ ]    ");
			}
			else if (getGame().d3._currentRoom == "tunnel2") {
				rawOutputText("Basilisk Cave");
				rawOutputText("\n     [P]—   ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]    ");
				rawOutputText("\n      |     ");
				rawOutputText("\n     [ ]—[ ]");
				rawOutputText("\n      |     ");
				rawOutputText("\n—[ ]—[ ]    ");
			}
			//Lethice's Keep
			if (getGame().d3._currentRoom == "edgeofkeep") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[P]     ");
			}
			else if (getGame().d3._currentRoom == "northentry") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [P] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "southcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[P]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "southwestcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[P]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "southwestwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [P]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "westwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [P]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "northwestwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[P]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "northwestcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [P]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "northcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[P]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "northeastcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[P] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "northeastwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [P]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "eastwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[P] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "southeastwalk") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [P] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "southeastcourtyard") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[P]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "courtyardsquare") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[P]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "greatlift") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [ ]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [P] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
			else if (getGame().d3._currentRoom == "throneroom") {
				rawOutputText("Lethice's Keep");
				rawOutputText("\n     [P]     ");
				findLockedDoorLethiceThrone();
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]     [ ]—");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]—[ ]—[ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n [ ]     [ ] ");
				rawOutputText("\n  |       |  ");
				rawOutputText("\n—[ ]—[ ]—[ ]—");
				rawOutputText("\n      |   |  ");
				rawOutputText("\n     [ ] [ ] ");
				rawOutputText("\n      |      ");
				rawOutputText("\n    —[ ]     ");
			}
		}

		public function displayMap():void {
			clearOutput();
			outputText("<b><font face=\"_typewriter\">");
			if (inRoomedDungeon) chooseRoomToDisplayD3();
			else chooseRoomToDisplay();
			outputText("</font></b>");
			outputText("\n\n<b><u>Legend</u></b>");
			outputText("\n<font face=\"_typewriter\"><b>P</b></font> — Player Location");
			outputText("\n<font face=\"_typewriter\"><b>L</b></font> — Locked Door");
			outputText("\n<font face=\"_typewriter\"><b>S</b></font> — Stairs");
			menu();
			addButton(0, "Close Map", playerMenu);
		}

	}

}


code:
package classes.Scenes.Dungeons.Factory
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Armors.LustyMaidensArmor;
	import classes.Scenes.Dungeons.Factory;
	import classes.internals.*;
	import flash.display.InteractiveObject;
	import classes.GlobalFlags.kFLAGS;

	public class IncubusMechanic extends Monster {

		override public function defeated(hpVictory:Boolean):void
		{
			if (flags[kFLAGS.D3_DISCOVERED] == 0)
			{
				defeatedInDungeon1(hpVictory);
			}
			else
			{
				defeatedInDungeon3(hpVictory);
			}
		}

		private function defeatedInDungeon1(hpVictory:Boolean):void {
			clearOutput();
			game.menu();
			if (hpVictory)
				outputText("You smile in satisfaction as the " + short + " collapses, unable to continue fighting.");
			else outputText("You smile in satisfaction as the " + short + " collapses, masturbating happily.");
			if (player.gender == 0) {
				outputText("  Now would be the perfect opportunity to test his demonic tool...\n\nHow do you want to handle him?");
				if (flags[kFLAGS.NEW_GAME_PLUS_LEVEL] >= 2 && flags[kFLAGS.FACTORY_INCUBUS_BRIBED] == 0) outputText("\n\nYou swear you can hear a clicking sound coming from the west.");
				game.addButton(0, "Anally", game.dungeons.factory.doRideIncubusAnally, null, null, null, "Ride him anally.");
				game.addButton(1, "Orally", game.dungeons.factory.doOralIncubus, null, null, null, "Service the incubus orally.");
				game.addButton(4, "Leave", game.combat.cleanupAfterCombat);
			}
			else {
				game.dynStats("lus", 1);
				if (hpVictory) {
					outputText("  Now would be the perfect opportunity to put his tool to use...\n\nWhat do you do, rape him, service him, or let him take you anally?");
					if (flags[kFLAGS.NEW_GAME_PLUS_LEVEL] >= 2 && flags[kFLAGS.FACTORY_INCUBUS_BRIBED] == 0) outputText("\n\nYou swear you can hear a clicking sound coming from the west.");
				}
				else {
					outputText("  Now would be the perfect opportunity to put his tool to use...\n\nWhat do you do?");
					if (flags[kFLAGS.NEW_GAME_PLUS_LEVEL] >= 2 && flags[kFLAGS.FACTORY_INCUBUS_BRIBED] == 0) outputText("\n\nYou swear you can hear a clicking sound coming from the west.");
					if (player.hasVagina() && player.biggestTitSize() >= 4 && player.armor == armors.LMARMOR) game.addButton(3, "B.Titfuck", (player.armor as LustyMaidensArmor).lustyMaidenPaizuri, player, this);
				}
				game.addButton(0, "Rape", game.dungeons.factory.doRapeIncubus, null, null, null, player.hasCock() ? "Fuck his butt." : "Ride him vaginally.");
				game.addButton(1, "Service Him", game.dungeons.factory.doOralIncubus, null, null, null, "Service the incubus orally.");
				game.addButton(2, "Anal", game.dungeons.factory.doRideIncubusAnally, null, null, null, "Ride him anally.");
				game.addButton(4, "Nothing", game.combat.cleanupAfterCombat);
			}
		}

		private function defeatedInDungeon3(hpVictory:Boolean):void
		{
			game.d3.incubusMechanic.beatDaMechanic(hpVictory);
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (flags[kFLAGS.D3_DISCOVERED] == 0)
			{
				wonInDungeon1(hpVictory, pcCameWorms);
			}
			else
			{
				wonInDungeon3(hpVictory, pcCameWorms);
			}
		}

		private function wonInDungeon1(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem to care...");
				doNext(game.combat.endLustLoss);
			} else {
				game.dungeons.factory.doLossIncubus();
			}
		}

		private function wonInDungeon3(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (flags[kFLAGS.LETHICE_DEFEATED] > 0) game.dungeons.factory.doLossIncubus();
			else game.d3.incubusMechanic.mechanicFuckedYouUp(hpVictory, pcCameWorms);
		}

		private function cockTripAttack():void {
			if (findStatusEffect(StatusEffects.Blind) >= 0) { //Blind dodge change
				outputText(capitalA + short + " suddenly grows it's dick to obscene lengths and tries to trip you with it.  Thankfully he's so blind he wasn't aiming anywhere near you!");
				game.combat.combatRoundOver();
				return;
			}
			outputText("The incubus lunges forward in a clumsy attack that you start to side-step, only to feel something grip behind your " + player.buttDescript() + " and pull your " + player.legs() + " out from under you.");
			if ((player.spe-30) > rand(60)) {
				outputText("  You spin as you fall, twisting your " + player.legs() + " free and springing back to your " + player.feet() + " unharmed.");
			}
			else { //Fall down go boom
				outputText("  You land hard on your ass, momentarily stunned as the demonic cock-tentacle curls around your " + player.legs() + ", smearing them with oozing demonic fluids.");
				if (player.lust >= 80 || player.cor >= 80) {
					outputText("  Moaning with desire, you lick your lips as you slide your well-lubricated " + player.legs() + " free.  You gather a dollop of cum and lick it seductively, winking at the incubus and hoping to make him cave into his desire.");
					game.dynStats("lus", 13, "cor", 1);
				}
				else if (player.lust >= 50 || player.cor >= 50) {
					outputText("  Blushing at the scent and feel of cum on your " + player.legs() + ", you twist and pull free.  You find yourself wondering what this demon's dick would taste like.");
					game.dynStats("lus", 8 + player.cor / 20);
				}
				else {
					outputText("  Disgusted, you pull away from the purplish monstrosity, the act made easier by your well-slimed " + player.legs() + ".");
					game.dynStats("lus", 5 + player.cor / 20);
				}
				player.takeDamage(5);
			}
			outputText("\nThe incubus gives an overconfident smile as his cock retracts away from you, returning to its normal size.");
			game.combat.combatRoundOver();
		}

		private function spoogeAttack():void {
			if (findStatusEffect(StatusEffects.Blind) >= 0) { //Blind dodge change
				outputText(capitalA + short + " pumps and thrusts his hips lewdly before cumming with intense force in your direction!  Thankfully his aim was off due to the blindness currently affect him.");
				game.combat.combatRoundOver();
				return;
			}
			outputText("Your demonic foe places his hands behind his head and lewdly pumps and thrusts his hips at you.  Your eyes open wide as a globule of cum erupts from the demon-prick and flies right at you.  ");
			if (player.shield == game.shields.DRGNSHL && rand(2) == 0)
			{
				outputText("Your shield managed to absorb the attack!")
				combatRoundOver();
				return;
			}
			outputText("You do your best to dodge, but some still lands on your ");
			switch (rand(3)) {
				case 0: //Face
					outputText("face.  The gooey demon-seed oozes and slides over you with a mind of its own, forcing its way into your mouth and nose!  You can feel it moving around inside you, doing its best to prepare you for its master.");
					game.dynStats("lus", 3);
					if (player.findStatusEffect(StatusEffects.DemonSeed) < 0)
						player.createStatusEffect(StatusEffects.DemonSeed, 5, 0, 0, 0);
					else player.addStatusValue(StatusEffects.DemonSeed, 1, 7);
					player.slimeFeed();
					break;
				case 1: //Chest
					if (player.hasFuckableNipples()) {
						outputText(allBreastsDescript() + ".  The gooey demon-seed oozes and slides over you with a mind of its own, forcing its way into your open nipples.  You can feel it moving around inside you, doing its best to prepare you for its master.");
						game.dynStats("lus", 3);
						if (player.findStatusEffect(StatusEffects.DemonSeed) < 0)
							player.createStatusEffect(StatusEffects.DemonSeed, 5, 0, 0, 0);
						else player.addStatusValue(StatusEffects.DemonSeed, 1, 8);
						player.slimeFeed();
					}
					else outputText(allBreastsDescript() + ".  Thankfully it doesn't seem to have much effect.");
					break;
				default: //Crotch
					if (player.vaginas.length > 0) {
						outputText("crotch.  The gooey demon-seed oozes and slides over you with a mind of its own, forcing its way past your " + player.armorName + " and into your " + player.vaginaDescript(0) + ".  You can feel it moving around inside you, doing its best to prepare you for its master.");
						game.dynStats("lus", 3);
						if (player.findStatusEffect(StatusEffects.DemonSeed) < 0)
							player.createStatusEffect(StatusEffects.DemonSeed, 5, 0, 0, 0);
						else player.addStatusValue(StatusEffects.DemonSeed, 1, 8);
						player.slimeFeed();
					}
					else outputText("crotch.  Thankfully, it doesn't seem to have much effect.");
			}
			game.combat.combatRoundOver();
			lust -= 10;
			if (lust < 0) lust = 10;
		}

		public function IncubusMechanic() {
			this.a = "the ";
			this.short = "incubus mechanic";
			this.imageName = "incubusmechanic";
			this.long = "The demon before you is clad only in cut-off denim overalls.  Covered in stains of oil and other strange fluids, they appear to be in pretty rough shape.  There is a large hole ripped in the crotch, allowing the demon's foot-long member to hang free.  His skin is light purple and perfect, contrasting with the slovenly appearance of his clothing.  His face is rugged and handsome, topped with a simple black ponytail and two large horns that sprout from his forehead like twisted tree-trunks.  He wears a narrow goatee on his chin that is kept skillfully braided.  A cocky smile always seems to grace his features, giving him an air of supreme confidence.";
			// this.plural = false;
			this.createCock(12,1.75,CockTypesEnum.DEMON);
			this.balls = 2;
			this.ballSize = 2;
			this.cumMultiplier = 3;
			// this.hoursSinceCum = 0;
			createBreastRow(0);
			this.ass.analLooseness = ANAL_LOOSENESS_STRETCHED;
			this.ass.analWetness = ANAL_WETNESS_SLIME_DROOLING;
			this.tallness = rand(9) + 70;
			this.hipRating = HIP_RATING_AMPLE;
			this.buttRating = BUTT_RATING_TIGHT;
			this.lowerBody = LOWER_BODY_TYPE_DEMONIC_CLAWS;
			this.skinTone = "light purple";
			this.hairColor = "black";
			this.hairLength = 12;
			initStrTouSpeInte(65, 40, 45, 85);
			initLibSensCor(80, 70, 80);
			this.weaponName = "claws";
			this.weaponVerb="claw";
			this.weaponAttack = 10;
			this.weaponPerk = "";
			this.weaponValue = 150;
			this.armorName = "demonic skin";
			this.armorDef = 10;
			this.bonusHP = 150;
			this.lust = 50;
			this.lustVuln = .5;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 8;
			this.drop = new WeightedDrop(consumables.GROPLUS, 1);
			this.gems = rand(25) + 10;
			this.additionalXP = 50;
			if (flags[kFLAGS.D3_MECHANIC_LAST_GREET] > 0) {
				this.gems += rand(25) + 50;
				this.additionalXP += 50;
				this.level += 13;
				this.bonusHP += 225;
				this.str += 25;
				this.tou += 20;
				this.spe += 15;
				this.inte += 20;
				this.weaponAttack += 5;
				this.HP = eMaxHP();
			}
			this.special1 = cockTripAttack;
			this.special2 = spoogeAttack;
			this.tailType = TAIL_TYPE_DEMONIC;
			this.wingType = WING_TYPE_BAT_LIKE_TINY;
			this.wingDesc = "tiny hidden";
			checkMonster();
		}
	}
}


code:
package classes.Scenes.Dungeons.Factory
{
	import classes.*;
	import classes.Scenes.Dungeons.Factory;
	import classes.internals.*;

	public class OmnibusOverseer extends Monster
	{
		public var factory:Factory = new Factory()
		private var temp:Number = 0;

		override public function defeated(hpVictory:Boolean):void
		{
			factory.winAgainstOmnibus();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem to care...");
				doNext(game.combat.endLustLoss);
			} else {
				factory.doLossOmnibus();
			}
		}

		private function lustAura():void {
			outputText("The demoness blinks her eyes closed and knits her eyebrows in concentration.  The red orbs open wide and she smiles, licking her lips.   The air around her grows warmer, and muskier, as if her presence has saturated it with lust.");
			if (findStatusEffect(StatusEffects.LustAura) >= 0) {
				outputText("  Your eyes cross with unexpected feelings as the taste of desire in the air worms its way into you.  The intense aura quickly subsides, but it's already done its job.");
				game.dynStats("lus", (8 + int(player.lib / 20 + player.cor / 25)));
			}
			else {
				createStatusEffect(StatusEffects.LustAura, 0, 0, 0, 0);
			}
			game.combat.combatRoundOver();
		}

		private function milkAttack():void {
			if (rand(2) == 0)
				outputText("The demoness grips her sizable breasts and squeezes, spraying milk at you.\n");
			else outputText("Your foe curls up to pinch her nipples, tugging hard and squirting milk towards you.\n");
			if ((player.spe > 50 && rand(4) == 0) || (player.findPerk(PerkLib.Evade) >= 0 && rand(3) == 0) || (player.findPerk(PerkLib.Misdirection) >= 0 && rand(4) == 0 && player.armorName == "red, high-society bodysuit")) {
				outputText("You sidestep the gushing fluids.");
			}
			//You didn't dodge
			else {
				if (rand(2) == 0) {
					outputText("The milk splatters across your face and chest, soaking you with demonic cream.  Some managed to get into your mouth, and you swallow without thinking.  It makes you tingle with warmth.  ");
				}
				else {
					outputText("The milk splashes into your " + player.armorName + ", soaking you effectively.  ");
					if (player.cocks.length > 0) {
						outputText("Your " + player.cockDescript(0) + " gets hard as the milk lubricates and stimulates it.  ");
						game.dynStats("lus", 5);
					}
					if (player.vaginas.length > 0) {
						outputText("You rub your thighs together as the milk slides between your pussy lips, stimulating you far more than it should.  ");
						game.dynStats("lus", 5);
					}
				}
				game.dynStats("lus", 7 + player.sens / 20);
				if (player.biggestLactation() > 1) outputText("Milk dribbles from your " + player.allBreastsDescript() + " in sympathy.");
			}
			game.combat.combatRoundOver();
		}

		public function OmnibusOverseer()
		{
			this.a = "the ";
			this.short = "Omnibus Overseer";
			this.imageName = "omnibusoverseer";
			this.long = "The 'woman' before you is clothed only in a single strip of fabric that wraps around her bountiful chest.  She has striking red eyes that contrast visibly with her blue skin and dark make-up.  Shiny black gloss encapsulates her kissable bubbly black lips.  Her most striking feature is her crotch, which appears neither male nor female.  She has a puffy wet vulva, but a cock-shaped protrusion sprouts from where a clit should be.";
			// this.plural = false;
			this.createCock(10,1.5);
			this.balls = 0;
			this.ballSize = 0;
			this.cumMultiplier = 3;
			// this.hoursSinceCum = 0;
			this.createVagina(false, VAGINA_WETNESS_DROOLING, VAGINA_LOOSENESS_NORMAL);
			createBreastRow(Appearance.breastCupInverse("DD"));
			this.ass.analLooseness = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_SLIME_DROOLING;
			this.tallness = rand(9) + 70;
			this.hipRating = HIP_RATING_AMPLE+2;
			this.buttRating = BUTT_RATING_TIGHT;
			this.lowerBody = LOWER_BODY_TYPE_DEMONIC_HIGH_HEELS;
			this.skinTone = "light purple";
			this.hairColor = "purple";
			this.hairLength = 42;
			initStrTouSpeInte(65, 45, 45, 85);
			initLibSensCor(80, 70, 80);
			this.weaponName = "claws";
			this.weaponVerb="claw";
			this.weaponAttack = 10;
			this.weaponPerk = "";
			this.weaponValue = 150;
			this.armorName = "demonic skin";
			this.armorDef = 15;
			this.bonusHP = 200;
			this.lust = 20;
			this.lustVuln = 0.75;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 8;
			this.gems = rand(25) + 10;
			this.additionalXP = 75;
			this.drop = new WeightedDrop(null, 1);
			this.special1 = lustAura;
			this.special2 = milkAttack;
			this.wingType = WING_TYPE_BAT_LIKE_TINY;
			this.wingDesc = "tiny hidden";
			this.tailType = TAIL_TYPE_DEMONIC;
			this.createPerk(PerkLib.ImprovedSelfControl, 0, 0, 0, 0);
			checkMonster();
		}

	}

}