code:
package classes.Scenes.Areas.Plains{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Armors.LustyMaidensArmor;
	import classes.Scenes.Monsters.pregnancies.PlayerSatyrPregnancy;
	import classes.Scenes.PregnancyProgression;
	import classes.display.SpriteDb;
	import classes.internals.*;

	public class SatyrScene extends BaseContent{

	public function SatyrScene(pregnancyProgression:PregnancyProgression, output:GuiOutput)
	{
		new PlayerSatyrPregnancy(pregnancyProgression, output);
	}

//const SATYR_KIDS:int = 603;
//Game Implementation (code from here)
//Fight Encounter (Z)
//Happens either in the plains or the swamp.
//Fighting Descript (Z)

/*You are fighting a satyr! (Level: sumthin')
Note: Satyrs actively increase their own lust in order to use their lust charge, if increasing their own lust will cause the satyr to lose the battle, then he should do something else! In other words, the conditions to execute a lust charge are mutually exclusive with the conditions to execute a lust increase.
*/

public function satyrEncounter(location:int = 0):void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	if (rand(2) == 0 || player.pregnancyIncubation > 0 || player.buttPregnancyIncubation > 0 || player.gender == 0) {
		outputText(images.showImage("monster-satyr"));
		outputText("As you cross the ");
		if (location == 0) outputText("grassy plains");
		else outputText("sodden expanse of the swamp");
		outputText(", you hear lewd bellowings and drunken curses.  From out of the expanse of green comes a humanoid figure with a set of goat-like horns curling from his head.  Seeing you, he lets out a randy bleat and charges, naked erection jabbing before him!");
		unlockCodexEntry(kFLAGS.CODEX_ENTRY_SATYRS);
		startCombat(new Satyr());
	}
	//Non-aggressive Encounter (Z)
	//Happens in either the plains or swamp
	//Pregnant PCs can't get this encounter.
	else {
		outputText("You wander through the ");
		if (location == 0) outputText("grassy plains");
		else outputText("sodden expanse of the swamp");
		outputText(" when you hear strange music emanating not far from where you are.  Do you investigate?");
		//[Yes][No]
		if (location == 0) doYesNo(createCallBackFunction(consensualSatyrFuck,0), camp.returnToCampUseOneHour);
		else doYesNo(createCallBackFunction(consensualSatyrFuck,0), camp.returnToCampUseOneHour);
	}
}

//[=Yes=]
private function consensualSatyrFuck(loc:int = 0):void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText(images.showImage("monster-satyr"));
	outputText("You decide to search for the source of the music.");

	outputText("\n\nSitting in a small circle of ");
	if (loc == 0) outputText("trampled-down grass");
	else outputText("relatively dry and solid ground");
	outputText(" is a strange figure, resembling a man with the legs and horns of a goat - a satyr.  He is surrounded by bottles and skins of drinkables and plates of food.  Currently playing a set of panpipes, he stops the music to grab a skin and messily guzzles down its contents, spilling purplish liquid across his chest and producing a strong smell of alcoholic liquor.  He finishes quenching his thirst, wipes his lips with the back of one hairy arm, and laughs contentedly.  Finally noticing you, he beams widely.  \"Welcome!  Welcome, friend; please, come!  Sit!  Drink with me!  I rarely have good company to share my meals with these days!\" he exhorts you, full of cheer.");

	outputText("\n\nYour stomach grumbles at the sight of food and drink, suddenly you feel like you haven't eaten in ages... you eagerly accept the satyr's invitation, taking a seat across him.");

	outputText("\n\nSmiling jubilantly, the satyr wastes no time in offering you the pick of the food around you, handing over a whole skin of wine (or something just as alcoholic) so full it can't even slosh.  \"Eat!  Drink!  Make merry!  It's not everyday that you find someone who merely wants to enjoy the good things in life, after all.\"  He laughs, then shakes his head with exaggerated sadness.  \"Such a pity everyone is so impatient these days - all rush-rush, fuck-fuck, rape-rape.  No one has time to party anymore.\"  He says, giving a melodramatic sigh of disapproval.");

	outputText("\n\nYou barely hear him as you shove as much food inside your mouth as you can and begin drinking from the skin he offered you.  Once the deliciously alcoholic liquid hits your tongue, you feel a wave of warmth sweep through you, spreading all over your body (and focusing on your genitals.)");

	outputText("\n\nThe satyr laughs heartily.  \"That's good!  Eat up, drink your fill; it does me proud to see someone enjoying themselves.\"  He sighs softly.  \"Once, we satyrs threw the most riotous parties... but those days are in the past, I guess.\"  He shakes his head and smiles.  \"Then again, these times have their good sides too.\"");

	outputText("\n\nYou barely register what he's saying, the beverage hits you with such force you immediately stop drinking and start coughing, spilling some of the booze on the floor.");
	//(+Lust)
	dynStats("lus", 25, "scale", false);
	outputText("\n\nThe satyr bellows with laughter and takes a huge swig of his own wineskin.  \"Looks like you need more practice with your liquor!\" he chortles.  \"Go on, drink up; practice makes perfect.\"");

	outputText("\n\nIt suddenly dawns upon you that this satyr might not have the most noble intentions... you're pretty sure there's some sort of aphrodisiac inside this beverage he offered you, judging by the heat that spreads through your body.");
	//Trick him only available to High Int PCs and Skip Foreplay only available to High Libido PCs.

	//(if High Int)
	if (player.inte > 60 && player.lust < player.maxLust()) {
		outputText("\n\nPerhaps you could trick him into knocking himself out with it?");
		addButton(0, "Trick Him", trickZeSatyr);
	} else addDisabledButton(0, "Trick Him", "Tricking him into knocking himself out would require some smart moves and clear enough head.");
	//(if High Libido)
	if (player.lib > 60) {
		outputText("\n\nThat cock of his looks yummy, though... there's no need for all this ruse, you're pretty sure you know how to handle a dick; maybe you should skip foreplay and let him fill you up...");
		addButton(2, "Skip Foreplay", skipForeplay);
	} else addDisabledButton(2, "Skip Foreplay", "You are not lusty enough to rush things.");
	if (player.lust >= 33) {
		outputText("\n\nYou could drink just one more and have sex with him if you like.");
		addButton(3, "Drink & Sex", drinkAndSex);
	} else addDisabledButton(3, "Drink & Sex", "You are not lusty enough to rush things.");

	//What should you do?
	//[Trick him] [Keep Drinking] [Skip Foreplay] [Leave]
	addButton(1, "Keep Drinking", keepDrinking);
	addButton(4, "Leave", leavePartySatyr);
}

//[=Keep Drinking=]
private function keepDrinking():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText("You grin at the satyr's encouragement and continue drinking, setting on a slower pace so you won't spill any more; shortly you pass him the empty skin and ask for more.");
	outputText("\n\nThe satyr, who has been happily matching you drink for drink, gladly takes the empty skin and passes you a new source of liquor; a glass bottle, this time.  \"This stuff is over thirty years old; trust me, there's nothing better.\"  In fact, he seems to decide he needs to prove his rhetoric, uncorking the bottle and taking a copious swig before passing it to you.");

	outputText("\n\nYou're only too happy to relieve him of his bottle and see just how good the 'stuff' is. You take a swig and taste the satyr's saliva along with the delicious wine contained in the bottle; it truly is delicious! You don't bother offering him the bottle back' you down the whole thing.  Before you even realize, your world is reduced to little more than drinking booze and eating the delicious food offered.");

	outputText("\n\nThe satyr eats and drinks right alongside you, exhorting you to just enjoy yourself.  Eventually, though, he stops eating and instead pulls out his pan pipes, starting to play a soft, gentle tune that almost reminds you of a lullaby.");

	outputText("\n\nYou can't resist the soft melody and begin to feel sleepy; you stop your drinking and eating to yawn... now that you've stopped, you feel awfully hot.  You strip off your [armor] without a second thought, not even bothering to protect your modesty.  Once you feel the cool air against your " + player.skinFurScales() + " you sigh and lay to relax for a nap.");
	outputText("\n\nThe satyr keeps playing, smiling.  The last thing you see before unconsciousness takes you is an eager light in strangely goat-like eyes...");
	//[hymen check]
	if (player.hasVagina()) {
		player.cuntChange(25,true,true,false);
	}
	else {
		player.buttChange(25,true,true,false);
	}
	outputText(images.showImage("satyr-hangover"));
	outputText("\n\nYou wake up you don't know how many hours later, head spinning in pain at the heavy drinking you did earlier.  Come to think of it... all the bottles and dishes of food seem to be gone.  The only thing left are puddles of warm cum all around you and on you.  You get up, dazed, only to feel a strange feeling inside your [vagOrAss]; you double over as pain explodes from your [vagOrAss] and gasp as a flood of semen dribbles from your used ");
	if (player.hasVagina()) outputText("vagina");
	else outputText("ass");
	outputText(".  This must be the work of that satyr!  Mentally, you remind yourself to watch out for him next time.  You clean yourself up as best as you can and redress, then wobble your way towards your camp, trying to stifle the pain, in your head and elsewhere, along the way.");
	//(8 hours lost) (PC is pregnant (either vagina or ass) with a satyr, slimefeed)
	satyrPreggo();
	doNext(camp.returnToCampUseFourHours);
}

		//[=Leave=]
private function leavePartySatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText("You thank the satyr for his generosity, but you don't think you can handle this kind of booze, so you get up and start on your way back to your camp.");

	if (rand(2) == 0) {
		outputText("\n\nThere is a sudden loud, indignant bleat from behind you, and you hear something suddenly charging clumsily forward.  Though you only realize this when something slams into your back, knocking you to the ground.  When you roll around, you find the satyr standing over you, face contorted in fury.  \"Nobody leaves me until I'm done with them!\" he roars, and attacks you again!\n\n");
		var satyr:Satyr = new Satyr();
		startCombat(satyr);
		//proc first attack;
		satyr.satyrCharge();
		//(Initiate combat with frenzied satyr, on the first round PC suffers the effects of a satyr charge (some HP lost and stunned))
	}
	else {
		outputText("\n\nDespite moments having passed, you turn back to see the satyr continuing to drink and not seeming to mind the fact that you have left. Seems like you're safe for the time being and you make your trip back to the camp without incidents.");
		doNext(camp.returnToCampUseOneHour);
	}
}
//[=Trick Him=]
private function trickZeSatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText(images.showImage("monster-satyr"));
	outputText("You come up with a plan and pretend to start drinking again; once you notice the satyr is distracted, you quickly spill most of your drink on the floor and return an empty skin to him.");

	outputText("\n\nHe blinks in surprise.  \"Finished already?  My, someone knows how to enjoy their liquor!\" he laughs.  Your companion promptly grabs another skin and passes it to you.  \"Drink up, drink up!  I can't remember the last time I had a good drinking match!\"  The caprine humanoid chortles with glee, already opening a very potent-smelling bottle of beer.");

	outputText("\n\nOnce again you pretend to drink, only to spill most of your drink on the floor; although this time you take care not to empty the skin too fast.");

	outputText("\n\nStartled at how quickly you manage to finish, the satyr quickly chugs down the entire bottle, visibly wobbling as the alcohol hits him.  He takes the empty skin and gives you a glass bottle, then starts drinking from a fresh skin.");

	outputText("\n\nYou repeat the process, until the satyr looks absolutely smashed, not to mention horny... his massive shaft stands erect, dribbling pre as he empties another bottle.");

	outputText("\n\nThe satyr lifts yet another skin to his lips, but ends up simply slopping it all over himself.  He belches, sways side to side, then finally topples over.  \"How... never lost a drinkin' contest before...\" he slurs, eyes fluttering closed as the alcohol in his system renders him unconscious.");

	outputText("\n\nGuess there's a first time for everything... you throw the last skin of booze away and proceed to check on the snoring satyr; searching him, you manage to find a pouch filled with gems.  Since he tried to trick you, you might as well as get something in return, so you pocket the gems in the pouch and discard it.");

	player.gems += 10+rand(10);
	statScreenRefresh();
	doNext(camp.returnToCampUseOneHour);
}
//[=Skip Foreplay=]
private function skipForeplay():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText("You smirk and crawl towards the satyr, discarding the skin of alcohol and knocking over several dishes and bottle in your way.  Once you're close enough, you roughly grab at his massive shaft and begin stroking it.  \"We both know where this is headed...\" you whisper, \"so why not skip the foreplay?\"");

	outputText("\n\nThe satyr looks surprised, then grins.  \"Very well, if you insist...\" he purrs, reaching out to grab and push you to the ground, tearing roughly at your [armor] until you are naked.");

	//Play appropriate willing sex scene//
	doNext(willinglyBoneSatyr);
}

private function drinkAndSex():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText("You grin at the satyr's encouragement and continue drinking, setting on a slower pace so you won't spill any more.  You tell him that you'd like to have sex with him.");

	outputText("\n\nThe satyr gladly takes the empty skin and puts it away.  He nods in agreement, giving you the signal to slowly strip your [armor] off and present your ");
	if (player.hasCock()) outputText("[cock]");
	if (player.hasCock() && player.hasVagina()) outputText(", ");
	if (player.hasVagina()) outputText("[vagina]");
	if (player.hasCock() || player.hasVagina()) outputText(" and ");
	outputText("[butt] to the satyr.  He looks up and down at you.  You waste no time caressing his cock and at the same time, he caresses your [butt].");
	doNext(willinglyBoneSatyr);
}

//Sex Scenes
//Loss Rape (Z)
//If PC has a vagina, Satyrs will use that. If not, use ass instead.
internal function loseToSatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	//[Lust loss
	if (player.lust >= player.maxLust()) outputText("You pant as you begin masturbating furiously, too horny to care about anything the grinning satyr before you has in mind.");
	else outputText("You try to steady yourself, clutching your body in pain as the satyr grins at you.");
	outputText("\n\nThe horned demihuman wastes no time on foreplay or savoring his victory, instead tramping triumphantly forward and pushing you over onto your back.  He squats down and roughly yanks off your [armor] until your crotch is bared.  Impatiently, he ");
	if (player.isNaga()) outputText("pins down your serpentine body");
	else if (player.isBiped()) outputText("spreads your [legs]");
	else outputText("pins you down");
	outputText(" and reaches forward, probing for a vagina.  ");
	if (player.hasVagina()) outputText("Upon finding one, he grins lustfully, his already impressively erect cock rising to full flag.");
	else outputText("Finding you lacking that trait, he grunts disdainfully and probes roughly for an asshole, which he locates right between your buttcheeks where it belongs, then jerks himself with several strokes to help coax his masculinity to full erection.");
	outputText(" He grabs your [ass] and roughly squeezes your cheeks, kneeling down while lifting you up so he can impale your [vagOrAss].");

	outputText("\n\nYou can only watch in lust and horror as his massive cock aligns with your hole.  Finally, with a grunt, he pushes forward and spears you mercilessly on his shaft");
	if ((player.hasVagina() && player.vaginalCapacity() < monster.cockArea(0)) || (!player.hasVagina() && player.analCapacity() < monster.cockArea(0))) outputText(", not even bothered by the fact that his cock doesn't fit inside you");
	outputText(".");
	//[cunt/buttchange]
	if (player.hasVagina()) {
		player.cuntChange(monster.cockArea(0), true, true, false);
		outputText(images.showImage("satyr-sex-vag"));
	}
	else {
		player.buttChange(monster.cockArea(0), true, true, false);
		outputText(images.showImage("satyr-sex-butt"));
	}
	outputText("\n\nYou scream in pain and pleasure from the satyr's rough entry, and struggle in a vain attempt to escape his imposing shaft.");

	outputText("\n\nThe beast-man merely shifts his grip from your [butt] to your shoulders, grunting lewdly as he starts to roughly piston himself in and out of your abused orifice; he doesn't care anything about you, only that he can empty his aching, needy balls into your belly.");

	outputText("\n\nYou moan in shame as you feel yourself growing ");
	if (player.hasVagina()) outputText("wet ");
	if (player.gender == 3) outputText("and ");
	if (player.hasCock()) outputText("hard ");
	if (player.gender == 0) outputText("aroused ");
	outputText("from your rough fucking.  Beads of lubricant splatter about as his brutal thrusts rock you.  Each loud slap from his hips sends a wave of shock and pleasure quaking throughout your body, and you find yourself moaning each time.  The scent of sex grows so overpowering that it even manages to block the thick reek of alcohol emanating from your goat-like partner.");

	outputText("\n\nThe satyr's thrusts pick up the pace as he grows more excited at finally having a victim to fuck, his pumps cause his swollen nuts to slap meatily against your ass, rocking you in his strong, powerful arms.  He grunts and coughs in his throat; he's on the very verge of climax...");
	outputText("\n\nYou scream as your [vagOrAss] clenches, strangling the satyr's cock in a vice-like grip.");
	if (player.hasCock()) outputText("  [EachCock] throbs as it send strings of cum flying straight into the satyr's chest, painting it white.");
	if (player.hasVagina()) outputText("  A veritable flood of girlcum escapes the small space between your vaginal walls and the satyr's massive shaft, covering his balls and legs with your female fluids.");

	outputText("\n\nThe satyr barely notices your orgasm as his own climax finally hits, letting out a surprisingly bleat-like cry as he cums inside you, a torrent of thick, hot cum gushing into your body, flooding into your guts until the sheer quantity forces it into your ");
	if (player.hasVagina()) outputText("womb");
	else outputText("stomach");
	outputText("; your belly begins to swell and bulge as he pumps liters of semen into you.");

	outputText("\n\nFinally, by the time you look like a pregnant woman in her second trimester, he gives out a few last grunts and stops.  Messily he pulls out of you with an audible slurping sound, his cum-slicked cock dangling limply.  The beast grabs a wineskin from his belt, chugs down several mouthfuls and then belches, scratching his chest before loping away without a care in the world.");

	outputText("\n\nOnce you recover from your brutal fucking, you ");
	if (player.cor < 50) outputText("shamefully");
	else outputText("shamelessly");
	outputText(" gather and re-dress in your garments and head back to camp, cum still dribbling from you as you go.");
	//reduce lust, slimefeed, pregnatize me cap'n
	player.slimeFeed();
	satyrPreggo();
	player.orgasm('VaginalAnal');
	dynStats("sen", 3);
	if (player.cor < 50) dynStats("cor", 1);
	combat.cleanupAfterCombat();
}

//Victory Rapes
internal function defeatASatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);

	if (flags[kFLAGS.SFW_MODE] > 0) {
		outputText("You smile in satisfaction as the " + monster.short + " collapses, unable to continue fighting.");
		combat.cleanupAfterCombat();
		return;
	}

	//Lust Victory
	if (monster.lust >= monster.maxLust()) outputText("The satyr collapses to its caprine knees, bleating in dismay as it paws frantically at its huge cock, oblivious to everything in its need to get off.  Already, pre-cum is fountaining from the goat-man's shaft, his jerking motions smearing the pungent sexual fluid across the crown.");
	//HP Victory
	else outputText("Beaten and dazed, the satyr collapses to its caprine knees, shaking his head in a futile attempt to recover himself from the brutal trouncing you've just given him.  The combination of the blows and his previous drunken state mean he's quite incapable of getting back, however.");

	menu();
	addDisabledButton(0, "FuckHisButt", "This scene requires you to have fitting cock and sufficient arousal.", "Fuck His Butt");
	addDisabledButton(1, "Ride Face", "This scene requires you to have vagina and sufficient arousal.");
	// Button 2 is used for Lusty Maidens Armor special scene and is hidden without it

	if (player.lust >= 33 && !player.isGenderless()) {
		outputText("\n\nYou wonder if you should give the satyr some sort of payback for attempting to rape you... do you take advantage of the helpless goat-man?");
		//[Male][Female][Leave]
		if (player.hasCock() && player.cockThatFits(monster.analCapacity()) >= 0) {
			addButton(0, "FuckHisButt", malesTakeAdvantageOfSatyrs);
		}
		if (player.hasVagina()) {
			addButton(1, "Ride Face", femaleTakesAdvantageOfSatyr);
			if (player.biggestTitSize() >= 4 && player.armor == armors.LMARMOR) {
				addButton(2, "Ride Face", (player.armor as LustyMaidensArmor).lustyMaidenPaizuri);
			}
		}
	}

    setSexLeaveButton();
}
//Female (Z)
private function femaleTakesAdvantageOfSatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText(images.showImage("monster-satyr"));
	outputText("You eye his massive shaft speculatively, then decide against it.  Why should he receive the true pleasures of your cunt when he attacked you so rudely?  No, if there will be anyone taking pleasure from this, it will be you alone.  With that in mind, you cast aside your [armor] in the most imperious manner you can muster, until you are standing stark naked.");
	outputText("\n\nThe satyr bleats as his eyes widen in expectation, setting his gaze squarely on your [vagina]; he starts panting as his massive cock grows even harder, hoping for the release that he was denied.");
	outputText("\n\nYou saunter forward and topple him over onto his back.  He lets out a noise like a goat that's been struck, even as you move to pin him to the ground, swivelling your hips until you are practically sitting on his face with your [vagina] over his mouth.  You grind your crotch into his face and demand he lick you, taking hold of the copious hair around his privates and pulling to suggest what refusal may mean.");

	outputText("\n\nToo horny to fight back or protest, the satyr wastes no time in burying his face into you, licking and kissing your netherlips, nipping at your [clit]");
	if (player.hasCock()) {
		outputText(", even going as far as to deliver a tongue-stroke or two to ");
		if (player.balls > 0) outputText("your [sack]");
		else outputText("the base of your " + player.multiCockDescriptLight());
	}
	outputText("; despite your earlier hint about how disobedience might be dealt with, the satyr bucks and thrusts against your hands, hoping to achieve release by any means available.  You scowl and grab hold of his shaft, slimy with pre-cum already, and squeeze it tightly to warn him to stay still and focus on licking you, gripping his head with your thighs in an effort to hold him in place.");

	outputText("\n\nThe satyr bleats in pain, but rather than staying still he ups the pace of his thrusting; his pre coated dick slides easily through your tight grasp and the more you squeeze on his lust-inflated shaft, the quicker he bucks, with not a care for the pain you're inflicting to his sensitive tool.  His attention to your [vagina] never wavers either; he licks and sucks at your pussy, eager to have more of your sweet juices, rubbing his face against your moist nethers with the savage thirst of a wild animal.  Any semblance of intelligence has long since been wiped clean of the bucking and slurping mess under you; all the satyr can do now is bleat in pain and pleasure as you tighten your grip on his manhood and slurp at your juices until he drowns.");

	outputText("\n\nYou quiver and gyrate as his tongue slurps and licks its lewd way into your most intimate of places, sending delicious waves of pleasure shuddering and rippling through you.  Deciding to 'encourage' him to work harder, you tighten the grip of your [legs] and begin to stroke his shaft, dragging your clenched hands up and down in a rough handjob for the satyr's oversized male tool.");

	outputText("\n\nThe satyr's muffled bleat of pleasure is all the warning that you get, as his massive prick throbs powerfully enough to break your grasp on its slimy length.  You can see it enlarging, as the little cum-slit at the tip opens up into a 'O' shape and fountains cum several feet over you head.  Several gobs of smelly, hot goat-cum rain down upon the both you as the satyr ejects gallons of pent-up jism into the air, no doubt catching the attention of any passers-by that might be around.");

	outputText("\n\nThe unexpected rain is so gross, and yet so hot, that you find your own orgasm rapidly following.  With a buck and a gasp and a moan, you grind your sopping wet gash squarely into the goat-man's mouth, painting his face as you cum all over it");
	if (player.hasCock()) outputText(", your own cock belching its usual load across his stomach and the surroundings");
	outputText(".");

	outputText("\n\nAfter a few minutes, the perverted fountain of goat-spunk is reduce to nothing but a trickle; yet the satyr's cock is still hard as a rock, throbbing and spurting longs strings of leftover cum over its slimy length.  The satyr himself goes limp; he seems to have passed out sometime during his explosive orgasm.");

	outputText("\n\nYou grind your pussy into his face one last time, then, with regal delicacy, you remove yourself from the unconscious, sex-splattered satyr.  Picking up your clothes, you redress yourself.  Once you're decent, you leave the unconscious goatman as prey for whatever creature comes to investigate the stink of cum spattered about in such copious quantities.");
	//reduce lust
	player.orgasm('Vaginal');
	combat.cleanupAfterCombat();
}

//Male (Z)
private function malesTakeAdvantageOfSatyrs():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	var x:int = player.cockThatFits(monster.analCapacity());
	if (x < 0) x = player.smallestCockIndex();
	outputText("You examine your conquest, trying to decide how it is you should use him to find some sexual release.  For a better view, you stride over, push him to the ground, and roughly cup his face.  The satyr looks up to you in fear, struggling in your grasp as you better examine him; he is most definitely male; you can't ignore the goat-like lines on his cheeks, nor the small goatee that grows from his chin, and his nose flares as he breathes and he bleats weakly while you pull his face this way and that way.  Finally, the satyr manages to yank his face out of your hands and lie prone on the floor, still gauging your movements.");

	outputText("\n\nYou decide that you don't want to fuck his mouth, at least not this time, and promptly flip the startled satyr over onto his back.  He bleats again in panic, and you silence him with a swift, cracking slap on the ass.  Ah, yes, his ass... it jiggles and ripples far more than it should of any male.  You grope it and examine it in further detail; it's plump and rounded, kinda soft - you might say cushiony.  Spreading his cheeks apart, you see a rather loose hole winking at you even as the satyr renews his struggles to get away from your grasp; seems like this goatman is no stranger to being on the receiving end of anal sex...");

	outputText("\n\nYour [cock] bulges and swells in your crotch and you nod your head approvingly, licking your lips in anticipation.  Yes, this will do nicely.  Wasting no time in pulling down your pants to let your rapidly-stiffening prick out into the world, you wonder if you should lube it first before you shove it in... the satyr struggles with renewed vigor as soon as you expose yourself, trying to kick you off, bleating and crying like a trapped goat.");

	outputText("\n\nYou ignore his efforts and do your best to brutally pin him to the ground, reaching around to take hold of his girthy prick... hah!  The monster's cock is already oozing pre-cum, no matter how much he struggles.  You roughly pump your hand up and down the satyr's shaft, gathering a great handful of his pre and then smearing it onto your own cock as makeshift lube.  Not very effective, but you guess it will suffice.  You take a second handful, and then a third, which you instead massage into the satyr's black rosebud - the ease with which two, then three of your fingers slide inside him confirms he's not a virgin when it comes to this particular act.");

	outputText("\n\nThe moment your fingers slide inside the helpless satyr he bleats, not in horror, but in delight.  His insistent struggles to get away from you make a complete U-turn, and instead he struggles to get more of your hand inside his gripping hole; his cock throbs and grows even harder, spurting pre on the ground below, as his balls churn and slosh eager for the prostate massage you'll be giving him with your own " + player.cockDescript(x) + ".  You can't help but laugh at the satyr's change of heart; what a slut.");
	outputText(images.showImage("satyr-sex-anally"));
	outputText("\n\nWell, you know what to do with buttsluts who are in the mood, now don't you?  You whisper as much to the satyr, who lets out a soft bleat of anticipation, then take hold of his horns for extra leverage and, without further ado, shove your cock as far as you can into him.  The satyr emits a screaming bleat of pleasure and immediately begins to push his ass against you, humping you with a ferociousness you could only attribute to a wild animal.  His hands stop supporting his upper body, and immediately travel to his rock hard erection, milking it.");

	outputText("\n\nYou groan in surprise at the satyr's enthusiasm, but you're the one in charge here, and you feel like you should make that clear to the horny goat-man.  You slap his ass, drawing a sharp bleat from the humping satyr, yet he doesn't seem to stop; all he does is impale himself on you with even more vigor, using you like a dildo to achieve his desired release.  You'd almost be offended, but the truth is you don't care; his ass is milking you like an expert milkmaid, his warm, slick inner walls rippling with practiced ease around your shaft.  You spank him, the retort echoing across the grass around you, and jeer him as the pathetically horny little buttslut he is.");

	outputText("\n\nEvery time you enter his stretched hole and rub at his prostate, his cock emits a jet of pre which soon begins pooling on the sod; the process repeats itself over and over until, with a screaming bleat, the satyr cums.  His balls bulge out, seemingly inflating within seconds, then churn as he begins spilling his load in one continuous jet of smelly goat seed; it doesn't take long until the puddle overflowing its little basin and begins expanding outward, until the satyr is rubbing his face against the semen mud of his own making.  His ass goes on overdrive, sucking you in with rippling muscles, trying to draw your fertile seed inside to paint his guts.");

	outputText("\n\nYou groan deep and low, and then let loose your own orgasm into his waiting bowels.");
	//Low Cum Amount
	if (player.cumQ() < 250) outputText("  He tries to milk you for far more than you can give him, and at one point you feel like his anal muscles are going to tear your dick off, until finally they go lax and lets you slip out.");
	//(Medium Cum Amount)
	else if (player.cumQ() < 1000) outputText("  You dump far more than you usually do; the satyr's clenching asshole makes sure to drain you of every little drop of cum you have until finally it goes lax and lets you slip out, leaving the goat-man with a pudgy belly.");
	//(High Cum Amount)
	else outputText("  You shoot jet after jet of cum, far faster than the satyr's ass can milk you for it, and still he doesn't seem to stop trying.  His rippling muscles draw your cum inside his bowels in big bubbles.  When his ass finally goes lax, you're propelled halfway out of him by the force of your own backflowing seed; the satyr's ass looks like a wreck, and his belly is overflowing with so much spunk you're surprised it didn't come out of his mouth.");

	outputText("\n\nSated for the moment, your gaze drifts towards the satyr.  He makes no sound; indeed, when you take a better look at him, you realize he's fallen asleep, still idly shaking his ass back and forth and jerking his cum-dribbling cock.  You don't even spare him a contemptuous look as you pull your bottoms up and head back.");
	//reduce lust
	player.orgasm('Dick');
	combat.cleanupAfterCombat();
}

//Willing Sex (Z)
//from skip foreplay or drink & sex
//always impregnates PC
private function willinglyBoneSatyr():void {
	clearOutput();
	spriteSelect(SpriteDb.s_satyr);
	outputText("The satyr eyes you up and down hungrily; his hands move to grope your [chest], gently tweaking your [nipples], then he moves down towards your ");
	if (player.hasCock()) outputText("hardening maleness, giving it a few strokes to bring it to full mast, then he moves on to your ");
	if (player.balls > 0) outputText("[balls], rolling each of your orbs around with reverence at the life-giving load they produce; finally he addresses your ");
	//((if PC has a pussy)
	if (player.hasVagina()) outputText("[vagina], spreading your labia wide to see the interior of your rapidly moistening walls.");
	else outputText("[ass], spreading your cheeks apart to gaze at your winking rosebud.");

	outputText("\"Wonderful!  With a [vagOrAss] like this I'm sure you'll make a great " + player.mf("father","mother") + " for our children,\" he says, leaning closer to sniff at your ");
	if (player.hasVagina()) outputText("[vagina], licking all over your netherlips and tasting your juices.");
	else outputText("[butt], licking all around your hole to prepare it for what's coming.");

	outputText("\n\nHe bleats and exclaims, \"You drive me crazy!  I have a half-mind to fill you up and knock you up right now... but I want you to remember me, so let's make this special.  What do you say?\"");

	outputText("\n\nYou moan softly, telling him that sounds great, thinking to yourself how rare it is to find someone in these lands who's actually willing to ask your opinion on sex instead of just forcing you to do it the way they want.  The satyr smiles at your agreement and gently takes his cock in his hands, stroking and milking it for pre to help his entrance.  It doesn't take long; excited by the imminent pounding he's about to deliver you, his slit drizzles like a leaky tap.");

	outputText("\n\nHe takes hold of your hips and aligns his massive meat with your [vagOrAss]; then with a bleat he pushes in agonizingly slowly.  He slips a few inches in, then waits as his cock throbs, painting your [vagOrAss] walls with a slick dose of pre, then pulls out a couple inches and pushes more inches in. This process is repeated over and over, until finally he's hilted deep inside you.");
	//(cunt/buttchange)
	if (player.hasVagina()) {
		player.cuntChange(25,true,true,false);
		outputText(images.showImage("satyr-sex-vag"));
	}
	else {
		player.buttChange(25, true, true, false);
		outputText(images.showImage("satyr-sex-butt"));
	}

	outputText("\n\nYou cry out as his massive manhood fills you, wrapping your [legs] around your caprine lover and pulling yourself fiercely against him, imploring him to hold you tight and fuck you senseless.  The satyr begins trembling and bucking lightly against you, slapping his balls on your [butt] softly with each small thrust.  Yet he resists letting his lust dominate him and smiles at you.  \"I said I want you to remember me... and no matter how much I want to unload into you right now, this is exactly what I'm going to do.\"");

	outputText("\n\nIn a swift move he rolls you on top of him, changing places with you in an instant, leaving you sitting on his softly bucking, erect, massive flagpole.  With a groan that quickly turns into a bleat he gathers his strength and thrusts up into you; the force of the impact is enough to make the resulting slap echo, followed shortly by a second, his balls hitting your butt like a paddle.  The satyr's great thrust is enough to lift you off his mast all the way to the tip, and all you have to do is wait for gravity to bring you back down into his impaling shaft with an equally loud slap.  \"Just relax and let me take care of everything,\" the satyr pants, winding up for the next thrust.");

	outputText("\n\nYou grasp and claw at your caprine lover, eagerly slamming your hips into his, revelling at the feeling of being stretched so deliciously full, marvelling at the meaty smacking of flesh on flesh.  Babbling madly, you try to convey how good he is making you feel and how much you want him. Spurred on, the satyr begins not only to send you away with increasingly faster bucks, but to receive you on your way down with equally powerful thrusts. You writhe against him, clawing wildly at his back in your ecstasy, reaching up and grabbing one of his horns to yank his head up into a carnal, tongue-tangling kiss.");

	outputText("\n\nThe satyr breaks the kiss and bleats loudly, slamming his hips against you, forcing his huge cock to dig in as deep as it can before unloading all his seed into your ");
	if (!player.hasVagina()) outputText("clenching butt");
	else outputText("spasming vagina");
	outputText(".  It's like someone shoved a hose into you and opened the nozzle, filling you with an endless stream of hot spooge; you can feel it pooling inside you, inflating your belly with his gigantic load.");

	outputText("\n\nYou cry out, howling your joy as his hot masculinity fills you with his potent seed, and then shudder as orgasm rocks through your body in turn;  your own ");
	if (player.hasVagina()) outputText("pussy gushes fluids down his massive manhood");
	if (player.gender == 3) outputText(" and ");
	if (player.hasCock()) outputText("cock spurts cream across your intertwined forms");
	outputText(".  Moaning softly and heaving in great lungfuls of breath, you sink back down onto him, feeling well and truly sated.");

	outputText("\n\nThe satyr's load has reduced to a trickle, but he still tries to pump more of it inside your ");
	if (!player.hasVagina()) outputText("bowels");
	else outputText("womb");
	outputText("; making slow, short thrusts to ensure you've got all the seed that you need.  Panting, he grins at you from his prone position.  \"Tell me then... did you like it?  Think that was enough baby batter to put a little satyr inside you?  Because if not I can go again.\"  He grins confidently.");

	//(if male/genderless and 0 satyr children)
	if (!player.hasVagina() && flags[kFLAGS.SATYR_KIDS] == 0) {
		outputText("\n\nYou stare at him blankly, then, as coherent thought returns to you, you ask how he can knock you up when you don't have a womb.");
		outputText("\n\nHe winks at your disquieted expression.  \"Satyr seed is so potent that we can impregnate anything, even ");
		if (player.hasCock()) outputText("males");
		else outputText("neuters");
		outputText(" like you, lover.\"");

		outputText("\n\nYou stare at your partner, then place a hand on your stomach in disbelief. You're going to have a baby?  Without even being female?  Shivering, you wonder if maybe having sex with this satyr was worth it, in that case...");
	}
	//(Medium Corruption)
	if (player.cor < 66) {
		outputText("\n\nAs good as the invitation sounds, you just have to decline.  You think you got enough for a baby, and you think two little satyrs might be a bit above your capacity.");
		outputText("\n\nYour lover simply laughs.  \"Suit yourself.\"");
	}
	//(High Corruption)
	else {
		outputText("\n\nYou scratch your chin in thought and decide that you still need a bit more seed; reaching back, you give his balls a good squeeze, prompting a sick bleat from the satyr and a few more weak jets of jism from his overworked maleness.");
		outputText("\n\nHe rubs his stomach and laughs up at you.  \"That was mean... but I'm happy to provide.\"");
	}
	outputText("\n\nWith a soft groan of effort from your tired muscles, you slowly pull yourself free of the satyr-cock impaling you, letting his pungent cum flow out of your abused hole and splatter all over him, then collapse a short distance away.");
	outputText("\n\nThe satyr gets up on unsteady hooves, visibly shaken after this session with you.  \"Well, sorry for not sticking around.  But I have places to get and people to fuck, so I guess we'll bump into each other some other time.\"  The goat-man gives your [butt] a friendly pat and begins packing away whatever leftovers he manages to find; then turns to blow you a kiss and dashes off.");
	outputText("\n\nYou watch him as he goes, then manage to force yourself back to your feet and stagger off, lest something far less hospitable find you here.");
	//slimefeed, reduce lust, impregnational geographic
	player.slimeFeed();
	player.orgasm('VaginalAnal');
	satyrPreggo();
	doNext(camp.returnToCampUseOneHour);
}

//Pregnancy Stuff (Z)
private function satyrPreggo():void {
	if (player.hasVagina()) {
		player.knockUp(PregnancyStore.PREGNANCY_SATYR, PregnancyStore.INCUBATION_SATYR); //Satyrs can now fertilize eggs for ovipositing players
	}
	else {
		player.buttKnockUp(PregnancyStore.PREGNANCY_SATYR, PregnancyStore.INCUBATION_SATYR, 1, 1);
	}
}

//Birthing (Z)
//Baby is always male.
public function satyrBirth(vag:Boolean):void {
	spriteSelect(SpriteDb.s_satyr);
	outputText(images.showImage("birth-satyr"));
	outputText("\nSudden sharp, intense pangs rip through your gut, seeming to emanate from your ");
	if (vag && !player.hasVagina()) {
		outputText("newly grown vagina");
		player.createVagina();
	}
	else if (vag) outputText("[vagina]");
	else outputText("[butt]");
	outputText(", a gripping, writhing sensation as if something is thrashing around inside you and wants to get out.  Looks like it's time for whatever is inside you to emerge.");

	outputText("\n\nYou strip your [armor] and lay down, waiting for the incoming contractions, and sure enough they come.  Your body is wracked with intense pain as you push to get your newborn out; your muscles writhe and flex, anxious to fulfil their task and empty your distended belly of the new life grown within it.");

	outputText("\n\nIt doesn't take long until you see a small round head poking out of your ");
	if (vag) outputText("[vagina]");
	else outputText("[asshole]");
	outputText("; it's adorned with a pair of miniscule horns.  You groan in pain as its shoulders stretch you even wider, but the worst part of it is over and, within moments, you are delivered of your child.  ");
	if (vag) player.cuntChange(40,true,false,true);
	else player.buttChange(40,true,false,true);
	outputText("Long minutes pass as your body recovers from the strain, bouncing back with unnatural vitality from the exhaustion and pain of giving birth, but finally you are ready to look at it.");

	outputText("\n\nIt looks like a cute little goat-man; the proof of such hangs between his legs, far larger than it should be on any infant.  He bleats at you meekly, and then begins to grow on his own!  His horns extend into curling, extravagant loops of bone, bending over his head; his soft flesh becomes tougher as his muscles develop, giving him a nice athletic build.  Finally his cock and balls grow to an impressive size, not only because of his natural - or unnatural - growth, but because it hardens with each passing moment; despite having been born only moments ago, your new son seems to be sexually aware.  Moments later he unbends and you get to take a good look at your newborn, and grown up, satyr.");

	outputText("\n\nHe strokes his small beard and gives you a wicked grin, thrusting his hips at you and spattering you with a few drops of pre-cum, then turns and bounds off.  Exhausted");
	if (player.cor < 33) outputText(" and more than a bit disgusted");
	outputText(", you slip into a short, fitful sleep.");
	//badabingbadaboom
	flags[kFLAGS.SATYR_KIDS]++;
    //Butt increase
    if (player.butt.rating < 10 && rand(2) == 0) {
        player.butt.rating++;
        outputText("\n\nYou notice your " + player.buttDescript() + " feeling larger and plumper after the ordeal.");
    }
    else if (player.hips.rating < 10) {
        player.hips.rating++;
        outputText("\n\nAfter the birth your " + player.armorName + " fits a bit more snugly about your " + player.hipDescript() + ".");
    }
    outputText("\n");
}

}
}


code:
/* Created by aimozg on 06.01.14 */
package classes.Scenes.Areas {
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
import classes.GlobalFlags.kGAMECLASS;
import classes.GlobalFlags.kGAMECLASS;
import classes.Scenes.API.Encounter;
import classes.Scenes.API.Encounters;
import classes.Scenes.API.FnHelpers;
import classes.Scenes.API.IExplorable;
import classes.Scenes.Areas.Swamp.*;
import classes.Scenes.PregnancyProgression;
import classes.internals.GuiOutput;

	use namespace kGAMECLASS;

	public class Swamp extends BaseContent implements IExplorable {
		public var corruptedDriderScene:CorruptedDriderScene;
		public var femaleSpiderMorphScene:FemaleSpiderMorphScene = new FemaleSpiderMorphScene();
		public var maleSpiderMorphScene:MaleSpiderMorphScene;
		public var rogar:Rogar = new Rogar();
		public var alrauneScene:AlrauneScene = new AlrauneScene();

		public function Swamp(pregnancyProgression:PregnancyProgression, output:GuiOutput) {
			maleSpiderMorphScene = new MaleSpiderMorphScene(pregnancyProgression, output);
			corruptedDriderScene = new CorruptedDriderScene(pregnancyProgression, output);
		}

		public function isDiscovered():Boolean { return flags[kFLAGS.TIMES_EXPLORED_SWAMP] > 0; }
		public function discover():void {
			flags[kFLAGS.TIMES_EXPLORED_SWAMP] = 1;
			outputText(images.showImage("area-swamp"));
			outputText("All things considered, you decide you wouldn't mind a change of scenery.  Gathering up your belongings, you begin a journey into the wasteland.  The journey begins in high spirits, and you whistle a little traveling tune to pass the time.  After an hour of wandering, however, your wanderlust begins to whittle away.  Another half-hour ticks by.  Fed up with the fruitless exploration, you're nearly about to head back to camp when a faint light flits across your vision.  Startled, you whirl about to take in three luminous will-o'-the-wisps, swirling around each other whimsically.  As you watch, the three ghostly lights begin to move off, and though the thought of a trap crosses your mind, you decide to follow.\n\n");
			outputText("Before long, you start to detect traces of change in the environment.  The most immediate difference is the increasingly sweltering heat.  A few minutes pass, then the will-o'-the-wisps plunge into the boundaries of a dark, murky, stagnant swamp; after a steadying breath you follow them into the bog.  Once within, however, the gaseous balls float off in different directions, causing you to lose track of them.  You sigh resignedly and retrace your steps, satisfied with your discovery.  Further exploration can wait.  For now, your camp is waiting.\n\n");
			outputText("<b>You've discovered the Swamp!</b>");
			doNext(camp.returnToCampUseTwoHours);
		}

		private var _explorationEncounter:Encounter = null;
		public function get explorationEncounter():Encounter {
			const fn:FnHelpers = Encounters.fn;
			if (_explorationEncounter == null) _explorationEncounter =
					Encounters.group(game.commonEncounters, {
						name: "bog",
						when: function ():Boolean {
							return (flags[kFLAGS.TIMES_EXPLORED_SWAMP] >= 25) && !game.bog.isDiscovered();
						},
						call: game.bog.discover
					}, {
						name: "kihaxhel",
						when: function ():Boolean {
							return flags[kFLAGS.KIHA_KILLED] == 0
								   && !game.kihaFollower.followerKiha()
								   && player.cor < 60
								   && flags[kFLAGS.KIHA_AFFECTION_LEVEL] >= 1
								   && flags[kFLAGS.HEL_FUCKBUDDY] > 0
								   && player.hasCock()
								   && flags[kFLAGS.KIHA_AND_HEL_WHOOPIE] == 0;
						},
						call: game.kihaFollower.kihaXSalamander
					}, {
						name  : "ember",
						when  : function ():Boolean {
							return flags[kFLAGS.TOOK_EMBER_EGG] == 0
								   && flags[kFLAGS.EGG_BROKEN] == 0
								   && flags[kFLAGS.TIMES_EXPLORED_SWAMP] > 0;
						},
						chance: 0.1,
						call  : game.emberScene.findEmbersEgg
					},{
                        name: "goblinSharpshooter",
                        call: game.goblinSharpshooterScene.meetGoblinSharpshooter,
                        when: game.goblinSharpshooterScene.encounterWhen,
                        chance: game.goblinSharpshooterScene.encounterChance
                    }, {
						name: "rogar",
						when: function ():Boolean {
							return flags[kFLAGS.ROGAR_DISABLED] == 0 && flags[kFLAGS.ROGAR_PHASE] < 3;
						},
						call: rogar.encounterRogarSwamp
					}, {
						name: "mspider",
						call: maleSpiderMorphScene.greetMaleSpiderMorph
					}, {
						name: "fspider",
						call: femaleSpiderMorphScene.fSpiderMorphGreeting
					}, {
						name: "drider",
						call: corruptedDriderScene.driderEncounter
					}, {
						name: "kiha",
						call: function ():void {
							if (flags[kFLAGS.KIHA_KILLED]
								|| game.kihaFollower.followerKiha()
								|| flags[kFLAGS.KIHA_TOLL_DURATION] > 1) game.kihaScene.kihaExplore();
							else game.kihaScene.encounterKiha();
						}
					}, {
						name: "alraune",
						call: alrauneScene.alrauneEncounter
					}, {
						name: "walk",
						call: walkingSwampStatBoost
					});
			return _explorationEncounter;
		}
		public function explore():void {
			clearOutput();
			player.location = "swamp";
			flags[kFLAGS.TIMES_EXPLORED_SWAMP]++;
			return explorationEncounter.execEncounter();
		}

		private function walkingSwampStatBoost():void {
			clearOutput();
			outputText(images.showImage("area-swamp"));
			outputText("You walk through the swamp lands for an hour, finding nothing.\n\n");
			//Chance of boost == 50%
			if (rand(2) == 0) {
				if (rand(2) == 0 && player.spe100 < 50) { //50/50 speed/toughness
					outputText("The effort of struggling with the uncertain footing has made you quicker.");
					dynStats("spe", .5);
				}
				else if (player.tou100 < 50) { //Toughness
					outputText("The effort of struggling with the uncertain footing has made you tougher.");
					dynStats("tou", .5);
				}
			}
			doNext(camp.returnToCampUseOneHour);
		}
	}
}

license: unknown


code:
/**
 * Created by aimozg on 03.01.14.
 */
package classes.Scenes.Areas.Swamp
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.WeaponLib;
	import classes.internals.MonsterAI;
	import classes.StatusEffects.Combat.WebDebuff;

public class AbstractSpiderMorph extends Monster
	{
		public function AbstractSpiderMorph()
		{
		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(spiderSilence, 20, !player.hasStatusEffect(StatusEffects.WebSilence) && player.hasSpells(), 10, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.add(spiderDisarm, 20, !player.hasStatusEffect(StatusEffects.Disarmed) && !player.weapon.isAttached(), 10, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.add(spiderMorphWebAttack, 33, player.spe >= 2 && !player.hasStatusEffect(StatusEffects.Web), 10, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.add(eAttack, 25, true, 0, FATIGUE_NONE, RANGE_MELEE);
			actionChoices.add(game.monsterAbilities.approach, 10, distance == DISTANCE_DISTANT, 15, FATIGUE_PHYSICAL, RANGE_SELF);
			actionChoices.add(getBitten, player.spe < 2 ? 100 : 10, true, 5, FATIGUE_PHYSICAL, RANGE_MELEE);
			actionChoices.exec();
		}

		/**
		 * -Web - lowers speed by 25 each application and disables
		 * flight once hit.*/
		public function spiderMorphWebAttack():void
		{
			outputText("Turning to the side, " + a + short + " raises " + mf("his", "her") + " abdomen and unleashes a spray of webbing in your direction!  ");
			var customOutput:Array = [
			"[BLIND]" + capitalA + short + " misses completely due to their blindness.",
			"[SPEED]You dodge away, avoiding the sticky strands!",
			"[EVADE]You evade, avoiding the sticky strands!",
			"[MISDIRECTION]Your misleading movements allow you to easily sidestep the sticky strands!",
			"[FLEXIBILITY]You throw yourself out of the way with cat-like agility at the last moment, avoiding " + mf("his", "her") + " attack.",
			"[BLOCK]You raise your shield and catch the sticky strands, and then remove them with a swipe of your [weapon].",
			"[UNHANDLED]You manage to roll out of the way of the sticky strands."];

			if(!playerAvoidDamage({doDodge:true, doParry:false, doBlock:true, doFatigue:false}, customOutput)){
				var web:WebDebuff = player.statusEffectByType(StatusEffects.Web) as WebDebuff;
				if (web == null) {
					outputText("The silky strands hit you, webbing around you and making it hard to move with any degree of speed.");
					if (player.canFly()) outputText("  Your wings struggle uselessly in the bindings, no longer able to flap fast enough to aid you.");
					outputText("\n");
					web = new WebDebuff();
					player.addStatusEffect(web);
				}
				else {
					outputText("The silky strands hit you, weighing you down and restricting your movement even further.\n");
				}
				web.increase();

			}

		}

		/**-Bite - Raises arousal by 30*/
		public function getBitten():void
		{
			//-Languid Bite - Inflicted on PC's who have been reduced to 1 speed by webbing, raises arousal by 60.
			if (player.spe < 2 && player.hasStatusEffect(StatusEffects.Web)) {
				outputText("The arachnid aggressor slowly saunters forward while you struggle under the heaps of webbing, gently placing " + mf("his", "her") + " arms around your back in a tender hug.  " + mf("His", "Her") + " fangs slide into your neck with agonizing slowness, immediately setting off a burning heat inside you that makes you dizzy and weak.  ");
				if (player.hasCock()) {
					outputText(player.SMultiCockDesc() + " turns rock hard and squirts weakly, suddenly so aroused that it starts soaking your " + player.armorName);
					if (player.hasVagina()) outputText(" along with your " + player.vaginaDescript());
					outputText(".  ");
				}
				else if (player.hasVagina()) outputText("Your " + player.vaginaDescript() + " grows wet as hell and so sensitive that every step and movement reminds you of the powerful need for something between your sopping nether-lips.  ");
				outputText("While " + mf("his", "her") + " venom pours into you, the spider-" + mf("boy", "girl") + " reaches into your gear to play with your " + player.nippleDescript(0) + ", and you moan like a whore from the dual stimulation of " + mf("his", "her") + " venom and nipple-play.\n\n");
				if (hasVagina()) outputText("The saucy dominatrix exhausts her supply of aphrodisiac toxin for the moment and finally steps back, admiring her work and giving you a lewd wink.  You ");
				else outputText("The confident male exhausts his supply of aphrodisiac toxin for the moment and finally steps back, admiring his work and giving you a lewd wink.  You ");
				player.takeLustDamage(60, true);
				if (player.lust >= player.maxLust()) outputText("wobble, utterly defeated and about to cave in to your lust.");
				else outputText("struggle not to fall down and start masturbating on the spot.");
				outputText("\n");

				return;
			}
			outputText("The spider-" + mf("boy", "girl") + " lunges forward with " + mf("his", "her") + " mouth open, " + mf("his", "her") + " two needle-like fangs closing rapidly.  ");
			var customOutput:Array = [
			"[BLIND]" + capitalA + short + " misses completely due to their blindness.",
			"[SPEED]You dodge away, avoiding " + mf("his", "her") + " bite!",
			"[EVADE]You evade, avoiding the bite!",
			"[MISDIRECTION]Your misleading movements allow you to easily sidestep the spider bite!",
			"[FLEXIBILITY]You throw yourself out of the way with cat-like agility at the last moment, avoiding " + mf("his", "her") + " attack.",
			"[BLOCK]You raise your shield in time, and are strong enough to hold the weight of your opponent's lunge.",
			"[UNHANDLED]You manage to roll out of the way of the bite."];
			var container:Object = {doDodge:true, doParry:false, doBlock:true, doFatigue:true};
			if(!playerAvoidDamage(container, customOutput)){
				if (rand(5) == 0) {
					outputText("You react far too slowly, and before you can even think to dodge, " + mf("he", "she") + "'s bitten deep into you, pumping large squirts of venom deep into your body.  Unnatural heat rolls through you, pooling in your groin until you're lewdly bucking your hips against the spider-morph's thigh.  " + mf("He", "She") + " pulls out and steps back, ");
					if (hasVagina()) outputText("casually cupping her breasts while you watch with venom-dilated eyes, slowly touching yourself.  Once she stops, you shake your head and master yourself, remembering that you're supposed to be fighting this " + mf("boy", "girl") + "!\n");
					else outputText("casually tugging on his relatively short, girthy dick as you watch with venom-dilated eyes, slowly touching yourself.  Once he stops, you shake your head and master yourself, remembering that you're supposed to be fighting this " + mf("boy", "girl") + "!\n");
					player.takeLustDamage(50, true);
				}
				else {
					outputText("You react too slowly, and before you can dodge, " + mf("he", "she") + "'s bitten you, leaving behind a burning venom that warms your blood and stokes your lust.\n");
					player.takeLustDamage(30, true);
				}
			}

		}

		/**-Disarm - hits the PC's weapon with web and sticks it to a
		 nearby tree, reducing PC's attack to 0 for the rest of the fight.*/
		public function spiderDisarm():void
		{
			outputText(capitalA + short + " shifts and sprays webbing, aiming a tight strand of it at your " + player.weaponName + ".  ");
			var customOutput:Array = [
			"[BLIND]The blind web-shot goes horribly wide, missing you entirely.",
			"[SPEED]You pull your weapon back and the webbing goes wide, missing entirely.",
			"[EVADE]You pull your weapon back evasively and the webbing goes wide, missing entirely!",
			"[MISDIRECTION]Your misleading movements allow you to easily sidestep the webbing!",
			"[FLEXIBILITY]You throw yourself out of the way with cat-like agility at the last moment, avoiding " + mf("his", "her") + " attack.",
			"[UNHANDLED]You manage to pull your weapon back before it is out of your reach."];
			if(!playerAvoidDamage({doDodge:true, doParry:false, doBlock:false, doFatigue:false}, customOutput)){
				if (player.weapon.isFist()) {
				outputText("The webbing hits your ");
				if (player.weaponName == "spiked gauntlet") outputText("gauntlet, but it's so effectively fastened to your hands that the attack fails to disarm you.\n");
				else outputText("gauntlets, but they're so effectively fastened to your hands that the attack fails to disarm you.\n");
			}
			else {
				outputText("You don't react fast enough and the sticky webbing pulls your " + player.weaponName + " out of your grip, gluing it to a nearby tree.  There's no way to get it back right now, you'll have to fight bare-handed!");
				player.disarm(0);
			}

			}
		}

		/**-Silence - sprays webs on the PC's mouth, silencing them for 1 to 3 turns.*/
		public function spiderSilence():void
		{
			outputText(capitalA + short + " squirts a concentrated spray of " + mf("his", "her") + " webs directly at your face!  ");
			var customOutput:Array = [
			"[BLIND]The blind web-shot goes horribly wide, missing you entirely.",
			"[SPEED]You lean back and let them pass harmlessly overhead, avoiding the attack.",
			"[EVADE]You pull your weapon back evasively and the webbing goes wide, missing entirely.",
			"[MISDIRECTION]Your misleading movements allow you to easily sidestep the webbing!",
			"[FLEXIBILITY]You throw yourself out of the way with cat-like agility at the last moment, avoiding " + mf("his", "her") + " attack.",
			"[UNHANDLED]You manage to pull your weapon back before it is out of your reach.",
			"[BLOCK]You raise your shield and catch the sticky strands, and then remove them with a swipe of your [weapon]."];
			if(!playerAvoidDamage({doDodge:true, doParry:false, doBlock:true, doFatigue:true}, customOutput)){
				outputText("They hit you before you can move, covering most of your nose and mouth and making it hard to breathe.  You'll be unable to use your magic while you're constantly struggling just to draw air!\n");
				player.createStatusEffect(StatusEffects.WebSilence, 0, 0, 0, 0);
			}

		}
	}
}


code:
package classes.Scenes.Areas.Swamp
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.internals.*;
	import classes.StatusEffects.Combat.*;

	public class Alraune extends Monster {

		private var rooted:Boolean = true;
		private var didTrip:Boolean = false;

		private function root(silent:Boolean = false):void {
			//Sanity check
			if (!rooted) {
				rooted = true;
				isImmobilized = true;
				if (!silent) outputText("Exhausted from the high-speed brawl, the alraune retreats to her floral nest.");
				updateDesc();
				dynStats("spe", -40);
				weaponName = "vines";
				weaponVerb = "whip";
				armorDef += 10;
				shieldBlock += 15;
				lustVuln -= 0.4;
				removePerk(PerkLib.ExtraDodge);
				addHP(maxHP() * 0.05);
			}
		}

		private function uproot(silent:Boolean = false):void {
			//Sanity check
			if (rooted) {
				rooted = false;
				isImmobilized = false;
				if (!silent) outputText("As the alraune has become fed up with stationary combat, a squelching and cracking sound signals her uprooting. Her somewhat moist lower-body appears to be coiled roots, bent sharply into the shape of legs. The vines of her arms pull closer to her hands, forming large, thorny claws.");
				updateDesc();
				dynStats("spe", 40);
				weaponName = "claws";
				weaponVerb = "swipe";
				armorDef -= 10;
				if (armorDef < 0) armorDef = 0;
				shieldBlock -= 15;
				if (shieldBlock < 0) shieldBlock = 0;
				lustVuln += 0.4;
				createPerk(PerkLib.ExtraDodge, 20, 0, 0, 0);
			}
		}

		private function updateDesc():void {
			long = "The alluring plant-girl before you stands at what would be nearly a typical female height if she were human, though the many black vines snaking out and around her body assure you that she is as monstrous as anything else. The deep and dark purples and indigos of her lips, eyes, and hair are in stark contrast with her pale and almost lifeless-looking skin. " + (rooted ? "The base of her body, below the waist, is a giant flower of black, violet, and red, and the many smaller flowers sprouting from her vines and hair share those colors." : "Below her thighs are thick, charcoal-black roots bent sharply in the form of digitigrade legs, ending in long claws.") + " Her hands seem gentle and soft, but coiled around and extending beyond them are thorn-covered vines she can use as whips."
		}

		private function rootPassives():void {
			//Stimulating aura
			if (player.hasStatusEffect(StatusEffects.StimulatingAura)) {
				(player.statusEffectByType(StatusEffects.StimulatingAura) as StimulatingAuraDebuff).increase();
			}
			else player.createStatusEffect(StatusEffects.StimulatingAura);
			//Fatigue regen
			changeFatigue(-5);
		}

		private function vineTrip():Boolean {
			var dodged:Boolean = combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).success;
			outputText("Vines hidden in the grass and muck spring to action as you attempt to quickly move, " + (dodged ? "nearly snaring your [legs]! The alraune seems very unamused." : "snaring your [legs]! With the momentum you had, you immediately fall heavily into the ground as the alraune laughs at you."));
			didTrip = !dodged;
			return dodged;
		}

		private function entangle():void {
			var toHit:Number = didTrip ? 100 : player.standardDodgeFunc(this) / 2;
			outputText("Stealthy dark vines sling themselves at your [legs], ");
			if (player.isGoo()) outputText("careening into your slimy mass, but failing to maintain a hold as you slip out.");
			else if (combatAvoidDamage({toHitChance:toHit, doDodge:true, doParry:false, doBlock:false}).success) outputText("missing widely as you leap away.");
			else {
				outputText("twirling around you until they have you tightly bound in place.");
				player.addStatusEffect(new VineTangled(3));
			}
		}

		private function whip():void {
			var toHit:Number = didTrip ? 100 : player.standardDodgeFunc(this);
			var damage:Number;
			var customOutput:Array = [
				"[SPEED]nearly smacking you.",
				"[EVADE]nearly smacking you.",
				"[MISDIRECTION]nearly smacking you.",
				"[UNHANDLED]nearly smacking you.",
				"[FLEXIBILITY]nearly smacking you.",
				"[BLIND]nearly smacking you.",
				"[PARRY]but you manage to keep them away with your [weapon]."];
			var combatContainer:Object = {toHitChance:toHit, doDodge:true, doParry:true, doBlock:false};

			outputText("The black vines near you swipe at your position, ");
			if (!playerAvoidDamage(combatContainer, customOutput)) {
				outputText("careening directly into your body.");
				damage = player.reduceDamage(str + weaponAttack, this);
				player.takeDamage(damage, true);
				if (didTrip || rand(5) == 0) player.bleed(this);
			}
		}

		private function tease():void {
			var teaseList:Array = [];
			teaseList.push("The alraune shakes her hips, bringing several of her rose-sprouting vines near her to frame her feminine form.");
			teaseList.push("[say: Come taste nature's nectar,] she says, lowering the petals around her groin nearly enough to expose her pussy.");
			teaseList.push("Stretching, the alraune bares her soft and modestly-sized breasts, capped with pink nipples.");
			if (player.isMale()) teaseList.push("Curling her finger in an inviting fashion, the alraune says, [say: Please, sow your seeds in this fertile ground.]");
			if (player.dryadScore() >= 3 && player.hasGenitals()) teaseList.push("[say: " + (player.hasCock() ? randomChoice("Wouldn't you like your pistil to meet my stamen?","Come here and pollinate me,") : "Aren't you curious how it'll feel for our flowers to kiss?") + "] she says with a wink.");

			var lustDamage:Number = rand(10) + rand(10) + rand(10);
			outputText(randomChoice(teaseList));
			player.takeLustDamage(lustDamage, true);
		}

		private function charge():void {
			var toHit:Number = didTrip ? 100 : player.standardDodgeFunc(this);
			var damage:Number;
			var customOutput:Array = [
				"[SPEED]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[EVADE]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[MISDIRECTION]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[UNHANDLED]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[FLEXIBILITY]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[BLIND]By unfathomable fortune, you react swiftly enough to evade her dangerous swipe.",
				"[BLOCK]By unfathomable fortune, you react swiftly enough to raise your [shield] in time."];
			var combatContainer:Object = {toHitChance:toHit, doDodge:true, doParry:false, doBlock:true, doFatigue:true};
			outputText("The sound of her dense roots flexing is the only brief warning before the alraune suddenly sprints toward you, claws at the ready! ");
			if (!playerAvoidDamage(combatContainer, customOutput)) {
				outputText("She slams into you, sinking her claws as deeply as she can manage before you fight her off.");
				damage = player.reduceDamage((str + weaponAttack) * 1.5, this);
				player.takeDamage(damage, true);
				player.bleed(this, 3+rand(4), 3);
			}
		}

		private function lash():void {
			var toHit:Number = didTrip ? 100 : player.standardDodgeFunc(this);
			var damage:Number;
			var customOutput:Array = [
				"[SPEED]You steer clear, if only just.",
				"[EVADE]You steer clear, if only just.",
				"[MISDIRECTION]You steer clear, if only just.",
				"[UNHANDLED]You steer clear, if only just.",
				"[FLEXIBILITY]You steer clear, if only just.",
				"[BLIND]You steer clear, if only just.",
				"[BLOCK]You block the strike with your [shield].",
				"[PARRY]You barely manage to knock her claw away with you with your [weapon]."];
			var combatContainer:Object = {toHitChance:toHit, doDodge:true, doParry:true, doBlock:true};

			outputText("The mobile alraune, cackling menacingly, swipes with her vine-claw, swinging it out a short distance ahead of her. ");
			if (!playerAvoidDamage(combatContainer, customOutput)) {
				outputText("The sudden increase in range, however slight, is hard to account for, and her claws bite into you.");
				damage = str + weaponAttack;
				damage = player.reduceDamage(randBetween(damage, 1.5*damage), this);
				player.takeDamage(damage, true);
				if (didTrip || rand(4) > 0) player.bleed(this, didTrip?3:4, didTrip?1:1+rand(2));
			}
		}

		override public function react(context:int):Boolean {
			switch (context) {
				case CON_DISTANCED:
				case CON_APPROACHED:
					return vineTrip();
				default:
					return true;
			}
		}

		override public function combatRoundUpdate():void {
			didTrip = false;
			if (rooted) rootPassives();
			super.combatRoundUpdate();
		}

		override protected function performCombatAction():void {
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(entangle, 2, rooted && player.canMove(), 5, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.add(whip, 2, rooted, 5, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.add(tease, 2, rooted, 0, FATIGUE_NONE, RANGE_TEASE);
			actionChoices.add(uproot, 1, rooted, 0, FATIGUE_NONE, RANGE_SELF);
			actionChoices.add(charge, 3, !rooted, 15, FATIGUE_PHYSICAL, RANGE_MELEE_CHARGING);
			actionChoices.add(lash, 3, !rooted, 10, FATIGUE_PHYSICAL, RANGE_MELEE);
			actionChoices.add(root, 1, !rooted, 0, FATIGUE_NONE, RANGE_SELF);
			actionChoices.exec();
		}
		override public function defeated(hpVictory:Boolean):void {
			game.swamp.alrauneScene.alrauneDefeated(rooted);
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void {
			game.swamp.alrauneScene.alrauneWon();
		}

        override public function getBaseCritChance():Number {
            var critChance:Number = 5;
			if (!rooted) critChance += 10;
			return critChance;
		}

		override public function getEvasionChance():Number {
			if (rooted) return 0;
			return super.getEvasionChance();
		}

		override public function handleAwardItemText(itype:ItemType):void {
			switch (itype) {
				case consumables.COAL___:
					outputText("\nSearching what remains of her after the ordeal, you find a lump of coal! Eyeshadow, perhaps? ");
					break;
				case consumables.P_WHSKY:
					outputText("\nWith a degree of shock, you notice a bottle of whiskey inside the gaping hole in her back. ");
					break;
				case consumables.P_SEED:
					outputText("\nYou discover a huge pumpkin seed amongst the petals of her flower. At least, you think it's a pumpkin seed. It's unlikely the land around your camp could support growing an alraune anyway. ");
					break;
				case null:
				default:
					if (rand(10 == 0) && game.silly()) outputText("\nRummaging through her things, you find some old earthy gown of grass and twigs. It's rather cheap-looking, clearly not well-designed at all. Recognizing garbage for what it is, you toss it. ");
			}
		}

		function Alraune() {
			this.a = "the ";
			this.short = "black velvet alraune";
			this.imageName = "alraune";
			updateDesc();
			this.race = "alraune";
			this.createVagina(false, Vagina.WETNESS_WET, Vagina.LOOSENESS_NORMAL);
			createBreastRow(Appearance.breastCupInverse("B"));
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_DRY;
			this.tallness = 5*12 + 4;
			this.hips.rating = Hips.RATING_AVERAGE;
			this.butt.rating = Butt.RATING_TIGHT;
			this.skin.tone = "pale";
			this.hair.color = "deep purple";
			this.hair.length = 4;
			initStrTouSpeInte(55, 70, 10, 60);
			initLibSensCor(50, 30, 60);
			this.weaponName = "vines";
			this.weaponVerb = "whip";
			this.weaponAttack = 25;
			this.armorName = "skin";
			this.armorDef = 15;
			this.canBlock = true;
			this.shieldName = "vines";
			this.shieldBlock = 20;
			this.fatigue = 0;
			this.bonusHP = 200;
			this.lust = 0;
			this.lustVuln = 0.4;
			this.level = 12;
			this.gems = rand(15) + 25;
			//Drops handled in post-combat scenes.
			this.drop = new WeightedDrop()
				.add(consumables.COAL___, 1)
				.add(consumables.P_WHSKY, 1)
				.add(consumables.P_SEED, 1)
				.add(null, 1);
			this.createPerk(PerkLib.PoisonImmune);
			this.createPerk(PerkLib.BleedImmune);
			this.fireRes = 1.5;
			this.isImmobilized = true;
			checkMonster();
		}
	}
}


code:
package classes.Scenes.Areas.Swamp
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.internals.*;

	/**
	 * ...
	 * @author ...
	 */
	public class FemaleSpiderMorph extends AbstractSpiderMorph
	{

		override public function defeated(hpVictory:Boolean):void
		{
			game.swamp.femaleSpiderMorphScene.defeatASpiderBitch();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms){
				outputText("\n\nThe spider flashes a predatory grin while she waits it out...");
				doNext(game.combat.endLustLoss);
			} else {
				game.swamp.femaleSpiderMorphScene.loseToFemaleSpiderMorph();
			}
		}

		public function FemaleSpiderMorph()
		{
			this.a = "the ";
			this.short = "female spider-morph";
			this.imageName = "femalespidermorph";
			this.long = "The female spider-morph is completely nude, save for her thigh-high stockings and forearm-length gloves, which upon closer inspection, appear to be actually be part of her body - her exoskeleton.  Her exposed skin is pale as the full moon, save for the dusky skin of her nipples and the black-skinned delta of her sex.  Her breasts and ass are both full and well-rounded, and just above her ass-cheeks there's a bulbous spider-abdomen.  The spider-girl is currently eyeing you with a strange expression and her fangs bared.";
			this.race = "Spider-Morph";
			// this.plural = false;
			this.createVagina(false, Vagina.WETNESS_DROOLING, Vagina.LOOSENESS_LOOSE);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 40, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("E+"));
			this.ass.analLooseness = Ass.LOOSENESS_VIRGIN;
			this.ass.analWetness = Ass.WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,30,0,0,0);
			this.tallness = 7*12+6;
			this.hips.rating = Hips.RATING_CURVY+2;
			this.butt.rating = Butt.RATING_LARGE+1;
			this.lowerBody.type= LowerBody.CHITINOUS_SPIDER_LEGS;
			this.skin.tone = "dusky";
			this.hair.color = "red";
			this.hair.length = 13;
			initStrTouSpeInte(60, 50, 99, 99);
			initLibSensCor(35, 35, 20);
			this.weaponName = "dagger";
			this.weaponVerb="stab";
			this.weaponAttack = 15;
			this.armorName = "exoskeleton";
			this.armorDef = 14;
			this.armorPerk = "";
			this.armorValue = 50;
			this.bonusHP = 200;
			this.lust = 20;
			this.lustVuln = .6;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 13;
			this.gems = rand(10) + 10;
			this.drop = new WeightedDrop().add(consumables.S_GOSSR,5)
					.add(useables.T_SSILK,1)
					.add(null,4);
			this.tail.type = Tail.SPIDER_ABDOMEN;
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Areas.Swamp
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.internals.*;

	public class MaleSpiderMorph extends AbstractSpiderMorph
	{

		override public function defeated(hpVictory:Boolean):void
		{
			game.swamp.maleSpiderMorphScene.defeatSpiderBoy();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms){
				outputText("\n\nThe spider flashes a predatory grin while she waits it out...");
				doNext(game.combat.endLustLoss);
			} else {
				game.swamp.maleSpiderMorphScene.loseToMaleSpiderMorph();
			}
		}

		public function MaleSpiderMorph()
		{
			this.a = "the ";
			this.short = "male spider-morph";
			this.imageName = "malespidermorph";
			this.long = "The male spider-morph is completely nude, save for his thigh-high stockings and forearm-length gloves, which upon closer inspection, appear to be actually be part of his body - his exoskeleton.  His exposed skin is pale as the full moon, save for the dusk of his nipples and a patch of jet-black that spreads out over his groin, glossing the male's foreskinned cock and dangling sack in glistening ebon.  His ass is small but well-rounded, with a weighty spider-abdomen hanging from just above.  The spider-man is currently eyeing you with a strange expression and his fangs bared.";
			this.race = "Spider-Morph";
			// this.plural = false;
			this.createCock(6,2);
			this.balls = 2;
			this.ballSize = 2;
			createBreastRow(0);
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,40,0,0,0);
			this.tallness = 7*12+6;
			this.hips.rating = Hips.RATING_CURVY+2;
			this.butt.rating = Butt.RATING_LARGE+1;
			this.lowerBody.type= LowerBody.CHITINOUS_SPIDER_LEGS;
			this.skin.tone = "dusky";
			this.hair.color = "red";
			this.hair.length = 13;
			initStrTouSpeInte(60, 50, 99, 99);
			initLibSensCor(35, 35, 20);
			this.weaponName = "dagger";
			this.weaponVerb="stab";
			this.weaponAttack = 15;
			this.armorName = "exoskeleton";
			this.armorDef = 14;
			this.armorPerk = "";
			this.armorValue = 70;
			this.bonusHP = 200;
			this.lust = 20;
			this.lustVuln = .6;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 13;
			this.gems = rand(10) + 10;
			this.drop = new WeightedDrop().add(consumables.S_GOSSR,5)
					.add(useables.T_SSILK,1)
					.add(null,4);
			this.tail.type = Tail.SPIDER_ABDOMEN;
			this.tail.recharge = 0;
			checkMonster();
		}

	}

}