code:
/**
 * Created by aimozg on 04.01.14.
 */
package classes.Scenes.Areas.Lake
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.Items.Armors.LustyMaidensArmor;
	import classes.display.SpriteDb;
	import classes.internals.*;
	import classes.lists.Gender;

	public class FetishZealotScene extends AbstractLakeContent
	{
		public function FetishZealotScene()
		{
		}

//Fetish Zealot
//The Fetish zealot is the guard, escort, and de-facto
//warrior for the Followers of the Fetish.  They are tasked
//with guarding their assets, protecting their members, and
//as the primary warriors when fighting becomes necessary.
//They wield daggers coated in aphrodisiacs, and like the
//cultist are able to change their clothing at will and cast
//a spell that transfers their lust to their opponent.
//Combat Stats
//Stats similar to the cultist (we can adjust for balance
		//later) +5 STR, god bless DnD
//Begins combat with 10 lust (so that he can transfer
		//something with the lust transfer spell), gains 5
		//lust on each turn of combat
//Standard attack enabled: does a little bit of lust damage
		//in addition to regular damage (lib/20 + rand(4) +1)

		/*
		 Appearance:
		 Male
		 (average) Height is 5'10\"
		 One dick, 6.5 inches (can vary in sex scenes)
		 One ass, loose
		 Loot
		 Lust Draft (same as Cultist drop)
		 Lust dagger (+3 attack, slight lust effect added to regular attacks)
		 \"A dagger with a short blade in a zigzag pattern(lightning bolt?).  Its edge seems to have been enchanted to always be covered in a light aphrodisiac to arouse anything cut with it.  \"
		 \"L. Dagger\"
		 Comfortable clothes (same as Cultist drop, and the starting armour of the player)
		 */

//Scenes
//Boat encounter
//After the cultists arrive at the Lake, a zealot will be found guarding the player's boat.  Once defeated, there is a 50% chance he will be guarding it the next time the PC goes to the boat, until the swamp is added.  When that happens, repeat encounters will not occur anymore.
		public function zealotBoat():void
		{
			clearOutput();
			if (player.statusEffectv1(StatusEffects.FetishOn) == 1) {
				zealotRepeat();
				return;
			}
			player.changeStatusValue(StatusEffects.FetishOn, 1, 1);
			clearOutput();
			outputText("As you get close to your boat, you are surprised to find someone standing at the end of the dock.  As you get closer, you see that it's a man wearing some kind of bizarre religious outfit.  He turns to face you as you approach and says \"This has been claimed by the Followers of the Fetish for security reasons, leave at once.\"\n\n\"What?  This is my boat!\" you cry out in surprise.  The zealot seems to take this as an aggressive action on your part and moves to attack you.");
			unlockCodexEntry(kFLAGS.CODEX_ENTRY_FETISHFOLLOWERS);
			//next button, go to zealot fight
			startCombat(new FetishZealot());
			spriteSelect(SpriteDb.s_fetish_zealot);
		}

//Regular encounter
//This is the regular pre combat text for wandering zealots (they'll be a regular mob at the swamp)
		private function zealotRepeat():void
		{
			clearOutput();
			outputText("While exploring, you hear someone cry out behind you \"This is sacred land!  You WILL be punished for trespassing!\"  It seems you've managed to stumble upon whatever land this zealot has been tasked to guard, and now you must fight him.");
			startCombat(new FetishZealot());
			spriteSelect(SpriteDb.s_fetish_zealot);
		}

//Raping the player
		public function zealotLossRape():void
		{
			if (doSFWloss()) return; //No rape in SFW mode.
			clearOutput();
			var broseph:String;
			switch (player.gender) {
				case Gender.MALE:
					broseph = "dude";
					break;
				case Gender.FEMALE:
					broseph = "chick";
					break;
				default:
					broseph = player.mf("dude", "chick");
			}
			//Pre Rape Scene - lose by hp
			if (player.HP < 1)
				outputText("You collapse from the pain of the zealot's attacks.  You feel your head swimming from the aphrodisiac; it seems to be having a stronger and stronger effect on you.  Soon your head is swimming with images of fetish scenes of all kinds.  The zealot walks up to you and puts his hand on your forehead.  Suddenly, all the images cascade into one.\n\n");
			//Pre Rape Scene – lose by lust
			else
				outputText("The constant images of fetishes overwhelm you and you fall to your knees, unable to resist the temptation. The zealot walks up to you and puts his hand on your forehead.  Suddenly all the images cascade into one.\n\n");

			//Student rape
			//Zealot in a student costume, the player is in a teacher costume.  The zealot asks for a sex aid lesson in a very nervous way.  The player is afraid of what his parents may do to them if they refuse, so they agree to help him.
			outputText("You stand up facing the chalkboard in your classroom.  For some reason you think you should be bothered by this, but you're in your classroom just after class.  Nothing seems to be out of place or missing.  You turn back to the rest of the classroom and notice that everyone but one boy seems to have left already.  You recognize that he is the cute nervous boy with the rich parents.  You shudder at the thought of his parents; last week they got a teacher fired for yelling at him to speak up.  ");
			//is that a guy?  Or does he just look like one?
			//Set asside a varaible for this, its used a few times
			if (broseph == "dude") {
				//set the player's armor to their new male teacher outfit, see lower down for a full description.
				if (player.armor == armors.C_CLOTH) {
					player.modArmorName = "formal vest, tie, and crotchless pants";  //can you think of a better way of putting this?
				}
				outputText("You smooth down your detached pants, and look at your exposed dick for a few moments, wondering if there was anything you said that may have upset him.  ");
			}
			//no its a girl, or it looks like one
			else {
				//Set armour to female teacher outfit with no back side.
				if (player.armor == armors.C_CLOTH) {
					player.modArmorName = "backless female teacher's clothes";  // again, change this if you've got a better name
				}
				outputText("You smooth out your half-skirt, trying to busy yourself as you try to remember if there was anything you said to upset him.  ");
			}
			outputText("\"Professor?\"  You hear him call out to you.  You look up and see him standing in front of your desk looking at the ground nervously.  \"Yes, what is it?\" you reply.  ");
			//same as before
			if (broseph == "dude") {
				outputText("He starts to look up, but then his gazes fixes directly on your ");
				if (player.cockTotal() > 0) {
					outputText(player.multiCockDescriptLight() + ".  You feel yourself grow hard ");
					if (player.hasVagina()) {
						outputText("and wet ");
					}
					outputText("under his gaze, ");
				}
				else outputText("bare crotch, ");
				outputText("and you silently wish that the dress code allowed for a small flap for covering your ");
				if (player.gender == 0) {
					outputText("lack of ");
				}
				else outputText("genitals.  ");
			}
			else {
				outputText("He starts to look up, but his gazes fixes on your skirt, just barely covering your ");
				if (player.hasVagina()) {
					outputText(player.vaginaDescript(0) + " ");
					if (player.cockTotal() > 0) {
						outputText("and your " + player.multiCockDescriptLight() + " ");
					}
				}
				else {
					outputText("bare crotch ");
				}
				outputText("from this angle.  You feel hot under his gaze ");
				if (player.cockTotal() > 0) {
					outputText(", and your " + player.multiCockDescriptLight() + " start");
					if (player.cockTotal() == 1) {
						outputText("s");
					}
					outputText(" to get hard, as your ");
				}
				outputText("cleft starts to moisten.  ");
			}
			outputText("You clear your throat nervously and he starts, finally raising his eyes to your face.\n\n");
			outputText("\"Ah, professor,\" he says again, \"I just got a " + player.mf("boyfriend", "girlfriend") + " and I have no idea how to have sex.  Could you please give me a lesson?\"  You stare at him in disbelief.  This boy still hadn't had a " + player.mf("man", "woman") + " at this school?  It would almost be laughable, if the threat of his parents didn't loom in the back of your mind.\n\n");
			outputText("\"Ok,\"  you say nervously, \"I can give you a lesson on pleasing " + player.mf("men", "women") + ".\"  He jumps up excitedly and runs around to the other side of the desk saying \"Ok, what do I have to do?\"  Feeling a bit put on the spot, you stop for a moment to take in the situation.  ");
			//again, is that a guy?  Or just look like one?
			if (broseph == "dude") {
				outputText("You're standing in front of your student behind your desk in your empty classroom.  You are in regular teacher's attire: an open vest and tie over your otherwise bare " + player.allBreastsDescript() + ", with formal dress pant legs attached to your vest with suspenders, plus your black dress shoes for dancing.  Your student is wearing the standard male student uniform, a collection of pieces of material held together with straps, that will all fall away easily when one gets pulled; but otherwise gives full coverage.\n\n");
				//How to please a man (in this zealot boy's fantasy)
				outputText("You take a deep breath and start to explain how to please a man.  You explain how important it is for men to have friendly competitions with each other.  Of special note is who can give the best blowjob, and who can jerk themselves off the best.  He nods to you and explains that he knew about the dick sucking part, but not the rest.  Usually one of them issues a challenge to the other, the one being challenged has the first go at the other's cock.  Then the challenger has their turn.  After that the two have to do their best to orgasm before the other by pumping their cocks with their hands.\n\n");
				//now if the player can have sex...
				if (player.gender != Gender.NONE) {
					//Give the zealot a blowjob
					outputText("You take a hold of his nicely sized balls in one hand and the base of his cock in the other.  You give the tip a few licks before running your tongue down its length, making sure to coat every bit of it in your saliva along the way.  His aroused groans let you know that you are giving a good demonstration.  You give his balls a soft rub as you stick the end inside your mouth and run your tongue around it; the taste of his pre is almost like candy to you.\n\n");
					//now the favor is returned
					outputText("You stand up and indicate to him that it is now his turn, and while he is disappointed that the blowjob ended before he came, he still eagerly kneels down in front of your exposed " + player.multiCockDescriptLight() + " and licks his lips eagerly.  He tries to imitate your performance on his manhood onto your " + player.cockDescript(0) + ", but he sometimes messes up the order, or does something too fast or slow.  Fortunately, he is a good student, and under your guidance he is soon sucking cock like a pro.  He tickles you with his tongue in just the right way, and gives just the right amount of attention to each part of your length.  ");
					if (player.hasVagina()) outputText("You slip one of your fingers inside your " + player.vaginaDescript(0) + ", wishing that it could get some attention, but this lesson is about pleasing men.  ");
					outputText("You feel yourself getting close to the edge and tell him to stop.  He looks up at you uncertain for a moment, and you tell him \"It's time for the main event.\"\n\n");
					//jerking off contest
					outputText("He eagerly stands up and wraps his hands around his fine cock, you quickly try to do the same with your " + player.multiCockDescript() + ".  \"I won't lose to you so easily, professor!\" he declares to you, \"Don't act so confidently on your first time.\" you reply.  Then the two of you are madly jerking yourselves off in a mad effort to get off before the other, your respective cocks already moist from the blowjobs they just received.  ");
					//just one cock
					if (player.totalCocks() == 1) {
						outputText("You piston your hands on your " + player.cockDescript(0) + ", ");
					}
					//nope two
					else if (player.totalCocks() == 2) {
						outputText("With one hand on each of your " + player.multiCockDescriptLight() + ", you piston them like mad, ");
					}
					//oh no, is more than that
					else {
						outputText("Rapidly moving your hands between each rod in your " + player.multiCockDescriptLight() + ", you manage to piston each of them at an incredible rate, ");
					}
					outputText("pushing your pleasure to incredible levels at an impressive rate.  Though, to your amazement, you hear your student give a gasp of pleasure just before you yourself are pushed over the edge.  The student had surpassed the teacher.\n\n");
				}
			}
			else {
				outputText("You're standing in front of your student behind your desk in your empty classroom.  You are in your regular dress clothes; a formal backless blouse and short semi skirt that only blocks the front from view, plus your two inch tall high heels.  Your student is wearing the standard male student uniform, a collection of pieces of material held together with straps, that will all fall away easily when one gets pulled; but otherwise gives full coverage.\n\n");
				//How to please a woman (in this zealot boy's fantasy...)
				outputText("You take a deep breath and start to explain how to please a woman.  You explain that one of the most important things is to show the woman that you want her, you want her body, and you want her to suck your dick.  He nods to you and explains that he knew about the dick sucking part, but not the rest.  Then you explain the proper way to thank a woman for the blowjob, by licking and sucking on her vagina.  After that, the man penetrates the pussy with his cock.\n\n");
				if (player.gender != Gender.NONE) {
					//he wants to do that to you, doesn't he?
					outputText("Throughout the whole conversation, your student gets more and more excited before finally saying \"Can we do it now?!\" and pulling his waist strings, causing his crotch piece to fall open.  At the site of his impressive erection, you eagerly kneel down in front of him as he says \"I want you, I want you to suck my cock so much!\"  You waste no time in obliging him.\n\n");
					//blowjob
					outputText("You take a hold of his nicely sized balls in one hand and the base of his cock in the other.  You give the tip a few licks before running your tongue down its length,  making sure to coat every bit of it in your saliva along the way.  His aroused groans let you know that you are giving a good demonstration.  You give his balls a soft rub as you stick the end inside your mouth and run your tongue around it; the taste of his pre is almost like candy to you.\n\n");
					//cunalinguss
					outputText("You stand up and indicate that it is now his turn, and while he is disappointed that the blowjob ended before he came, he still eagerly kneels down in front of your " + player.vaginaDescript(0) + ".  You gingerly lift up your skirt ");
					if (player.balls > 0) {
						outputText("and move your " + player.ballsDescriptLight() + " out of the way ");
					}
					outputText("so he has access to your " + player.vaginaDescript(0) + ".  He sets to work, and you give him careful instructions on where to lick, how hard, and such.  He easily catches on, and soon he is probing all the right places, and giving the right amount of attention to every part of you.  ");
					if (player.cockTotal() > 0) {
						outputText("You give your " + player.multiCockDescriptLight() + " a few gentle strokes, wishing he would give that a little attention too, but this is a lesson on how to please a woman.  ");
					}
					outputText("You feel yourself getting close to the edge and tell him to stop.  He looks up at you uncertain for a moment, and you tell him \"It's time for the main event.\"\n\n");
					//prick in the twat
					outputText("He eagerly stands up and starts to push you back against your desk, his fine cock already inside your " + player.vaginaDescript(0) + ".  He pushes you onto your back and grabs ahold of your legs, starting to make strong thrusts deep inside you, his cock seeming to fit your " + player.vaginaDescript(0) + " perfectly.  Any pretense of professionalism is lost in the moment, as all you can care about is the feeling of his exquisite cock perfectly filling you, pushing in and out.  All too soon, you hear him gasp, and the wonderful feeling of sweet release fills you.  ");
					if (player.cockTotal() > 0) {
						outputText("Your " + player.multiCockDescriptLight() + " spasms and covers you with a liberal amount of your own fluids.  ");
					}
					outputText("After a moment, your student pulls out of you and helps you back up.\n\n");
				}
			}
			//Wrapping things up
			if (player.gender != 0) {
				outputText("The two of you stand looking at each other again for a moment.  Then you help your student get his clothes back together.  Once you have him fixed up, you notice that he is looking at the ground again.  \"Professor?  I have a confession to make.\" he says very quietly.  \"What is it?\" you ask him.  \"I lied to you about getting a " + player.mf("boyfriend", "girlfriend") + ", I actually just wanted you.\"  Before you have a chance to respond, he quickly gives you a kiss on the mouth, before rushing out the door, blushing furiously.  You can't help but smile at how he is growing up.\n\n");
			}
			if (player.gender == 0) {
				outputText("Throughout the whole conversation, your student gets more and more excited.  Half way though he starts masturbating, and by the end he is ready to go over the edge.  \"Thank you so much for the lesson professor, gaahh.\" he tells you as he begins to cum. The sight of him cumming in front of you is enough to drive you to your own orgasm.  Breathing a sigh of relief, you let your student out of the room and go back to cleaning up.\n\n");
			}
			//After any zealot rape
			//Reduce intelligence, set lust to zero, then add some lust based on libido and corruption
			player.orgasm('Generic');
			dynStats("int", -1, "cor", 2);
			//Trigger bad end if player's intelligence is less than 10 after being drained.
			if (player.inte < 10 && rand(2) == 0) {
				outputText("You find that your mind is unable to return to reality, and it moves on to another, then another.  Later you feel a female body come and pick you up, but you are too messed up to react to it...");
				doNext(lake.fetishCultistScene.cultistBadEnd2);
				return;
			}
			//Otherwise, continue on here
			//continue on to Cultist bad end.  I'll expand these later when where doing the cathedral.
			else {
				outputText("A few hours later your mind finally returns to reality.  You look around and realize that you are no longer in the same place you were before, and the zealot is nowhere to be seen.");
			}
			//If there were changes to the player's genitals
			//same as cultist
			//If there were changes to the player's chest
			//same as cultist
			//If armour is replaced
			if (player.armor == armors.C_CLOTH) {
				outputText("\n\nYou notice that you still have the " + player.armorName + " from the fantasy that your mind was trapped in, with no sign of your original clothes.");
			}
			//If armour is not replaced
			else {
				outputText("\n\nYou find that your " + player.armorName + " are back to normal, and there is no sign of the strange clothes you were wearing before.");
			}
			outputText("  The ordeal has also left you with a slightly dulled mind, and some of the desire you felt still lingers.");
			dynStats("lus", player.cor / 20 + player.lib / 10);
			combat.cleanupAfterCombat();
		}

		public function zealotDefeated():void
		{
			//Defeated by health
			if (monster.HP < 1) outputText("The zealot collapses from his wounds, too hurt to continue controlling his powers.");
			//Defeated by lust
			else outputText("The zealot quivers for a moment before collapsing, his desires becoming too great for even him to control.");

			if (flags[kFLAGS.SFW_MODE] > 0) {
				combat.cleanupAfterCombat();
				return;
			}

			menu();

			addDisabledButton(0, "Sex", "This scene requires you to have genitals and sufficient arousal.");
			// Button 1 is used for Lusty Maidens Armor special scene and is hidden without it

			if (player.lust >= 33 && !player.isGenderless()) {
				outputText("\n\nDo you want to take advantage of his vulnerable state to sate your lusts?");
				addButton(0, "Sex", zealotWinRape);

				if (player.hasVagina() && player.biggestTitSize() >= 4 && player.armorName == "lusty maiden's armor")
					addButton(1, "B.Titfuck", (player.armor as LustyMaidensArmor).lustyMaidenPaizuri, player, monster);
			}

            setSexLeaveButton();
		}

//Raped by the player
		private function zealotWinRape():void
		{
			clearOutput();
			//Religious Costume Rape
			outputText("The zealot's attire seems to have settled on an outfit similar to those commonly worn by members of religious orders, though you aren't too surprised to see that it has a slit running down the front and back of the outfit that gives you full access to his sizable cock and asshole.\n\n");
			//If player has a dick, chose one of these at random if the player has both
			if (player.cockTotal() > 0 && (player.gender != 3 || rand(2) == 0)) {
				outputText("As you move towards him, he drops onto all fours with his head down and ass in the air.  He seems to have started making a prayer: \"Forgive me my lord, for I have failed to protect your holdings and will now accept your punishment by being violated by the one who defeated me.\" ");
				if (player.cor < 50) outputText("You stop and stare at him for a moment, in complete disbelief at this bizarre 'prayer'.  You consider just leaving him alone, but sensing your hesitation, the zealot looks up to you with a horrified expression.  \"You must violate me!\"  He cries out to you, \"Please, let me finish my prayer, put your " + player.cockDescript(0) + " in my ass.\"  Well, he did ask you...\n\n");
				else outputText("You chuckle at him, he accepts his punishment?  Oh, you are going to enjoy this so much.\n\n");
				outputText("You remove your " + player.armorName + " and stride up behind him, and grab his rear end to line up your " + player.cockDescript(0) + " with his loose hole as he continues his prayer: \"Soon a man will violate my ass, like so many others have done in your holy worship.  Woe is me, to be treated like this by someone who doesn't follow us.\" You shake your head at this absurdity and plunge your " + player.cockDescript(0) + " inside his waiting hole.  Amazingly, his hole somehow manages to fit you perfectly.  Since he seems to have no problem taking you, you waste no time in getting the anal rape on.\n\n");
				outputText("\"My shame brings the one within me their pleasure; such a tragedy has befallen me.\" he continues.  \"Shut up and take it like a man!\" you tell him, and start fucking him more and more roughly.  You reach around him and grab his balls, and start to grip them painfully.    He isn't perturbed, and continues his prayers between his gasps: \"Agh, The horror, I'm being tortur- ah, while being raped ungh, and I'm loving every moment.  Oug!\"  Having had enough, you squeeze his sack hard, at the same time as you cum inside his ass.\n\n");
				outputText("Your lusts sated for now, you rise up off of him and put your " + player.armorName + " back on.  You decide to leave him lying there, still doubled over in pain from the damage you did to his balls.\n\n");
			}
			//If player has a vagina, again, if both, chose one at random
			else if (player.hasVagina()) {
				outputText("As you move towards him, he lays back onto the ground, his cock almost pointing straight up in the air.  He clasps his hands in front of his face and starts praying: \"Forgive me my lord, for I have failed to protect your holdings and will now accept your punishment by being violated by the one who defeated me.\" ");
				if (player.cor < 50) outputText("You stop and stare at him for a moment, in complete disbelief at this bizarre 'prayer'.  You consider just leaving him alone, but sensing your hesitation, the zealot looks up to you with a horrified expression.  \"You must violate me!\"  He cries out at you, \"Please, let me finish my prayer, take me within your " + player.vaginaDescript(0) + " for your own pleasure.\"  Well, he did ask you...\n\n");
				else outputText("You chuckle at him, he accepts his punishment?  Oh, you are going to enjoy this so much.\n\n");
				outputText("You remove your " + player.armorName + " and stride over top of him, looking down at the defeated zealot as he continues his prayer.  \"I am a wretched man to have allowed a woman like you to have defeated me.  Woe is me, lying at your feet.\"  You shake your head at this absurdity and lower yourself down to get to the fun part.  You eagerly grab his cock and guide it towards your " + player.vaginaDescript(0) + ", awaiting the pleasure you are sure it will bring you.  \"Look at me, so eager to be violated despite why it is happening to me, and yet she teases me and draws it out, making it so much more painful.\"\n\n");
				outputText("With a laugh, you impale yourself on his cock and despite how ");
				if (player.vaginas[0].vaginalLooseness < Vagina.LOOSENESS_LOOSE) outputText("tight");
				else outputText("loose");
				outputText(" you are, he still seems to fit you like a glove.  With no need to adjust to his presence inside you, you immediately start to roughly fuck him.  To make sure he doesn't enjoy himself too much, you start to twist and pull at his nipples.  Between his gasps of pleasure and pain, he continues his prayer: \"Gah, oh woe is me, ah-gha, my punishment is my pleas- agh!  My eternal torment will be –ugha, never being able to –hah, enjoy this forever.  Ugha!\"  Finally tired of his antics, you punch him in the stomach, as his amazing rod pumping within your " + player.vaginaDescript(0) + " pushes you over the edge of an orgasm.\n\n");
				outputText("Your lusts sated for now, you rise up off of him and put your " + player.armorName + " back on.  You decide to leave him lying there, still coughing from the blow to his stomach.  ");
				player.cuntChange(monster.cockArea(0), true);
			}
			player.orgasm('Generic');
			combat.cleanupAfterCombat();
		}
	}
}


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

	public class GooGirl extends Monster
	{
		/*Fight-
		 You are fighting a goo-girl.
		 The goo-girl has a curious expression on her youthful, shimmering face. Her body is slender and globs of slime regularly drip from her limbs, splattering into the goo puddle pooling beneath her hips. A small, heart-shaped nucleus pulses in her chest with a red glow. [if the player has a c-cup or larger chest: She has apparently made herself a bit more like you, as her chest appears to be a perfect copy of your " + player.biggestBreastSizeDescript() + ".]
		 */

		override public function struggle():void{
			if (player.hasStatusEffect(StatusEffects.GooBind)) {
				clearOutput();
				//[Struggle](successful) :
				if (rand(3) == 0 || rand(80) < player.str) {
					outputText("You claw your fingers wildly within the slime and manage to brush against her heart-shaped nucleus. The girl silently gasps and loses cohesion, allowing you to pull yourself free while she attempts to solidify.");
					player.removeStatusEffect(StatusEffects.GooBind);
				}
				//Failed struggle
				else {
					outputText("You writhe uselessly, trapped inside the goo girl's warm, seething body. Darkness creeps at the edge of your vision as you are lulled into surrendering by the rippling vibrations of the girl's pulsing body around yours. ");
					game.combat.takeDamage(Math.min(.15 * player.maxHP(), 100 * (1 + (player.newGamePlusMod() * 0.2))), true);
				}
			tookAction = true;
			}
		}

		override public function react(context:int):Boolean{
			switch (context){
				case CON_PLAYERWAITED:
					if (player.hasStatusEffect(StatusEffects.GooBind)) {
					clearOutput();
					outputText("You writhe uselessly, trapped inside the goo girl's warm, seething body. Darkness creeps at the edge of your vision as you are lulled into surrendering by the rippling vibrations of the girl's pulsing body around yours.");
					var temp:Number = game.combat.takeDamage(.35 * player.maxHP(), true);
					tookAction = true;
					return false;
					}
				case CON_BURNED:
					outputText("  Your flames lick the girl's body and she opens her mouth in pained protest as you evaporate much of her moisture. When the fire passes, she seems a bit smaller and her slimy " + skin.tone + " skin has lost some of its shimmer.");
					if (!hasPerk(PerkLib.Acid)) createPerk(PerkLib.Acid, 0, 0, 0, 0);
					return true;
			}
			return true;
		}
//[Goo attacks]
//Slap – The slime holds its hands up and they morph into a replica of your " + weaponName + ". Happily, she swings at you, painfully smacking her gooey limbs against your head.  You shake your " + player.hairDescript() + ", clearing your head of the dazing slap. (lightly damages hit points)
//Acid Slap (Only after player's fire attack) – Her body quivering from your flames, the goo-girl delivers a painful slap across your cheek. You gasp when the light stinging becomes a searing burn that seems to get worse as time goes on! (heavily damages hit points and puts Acid Burn on the player)
		private function gooGalAttack():void
		{
			var damage:Number = 0;
			//return to combat menu when finished
			doNext(game.playerMenu);
			var result:Object = combatAvoidDamage({doFatigue:true});
			if (findPerk(PerkLib.Acid) >= 0) outputText("Her body quivering from your flames, the goo-girl ");
			else outputText("The slime holds its hands up and they morph into a replica of your " + player.weaponName + ".  Happily, she swings at you");
			//Determine if dodged!
			if (result.dodge == EVASION_SPEED) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you dodge her attack.");
				else outputText(", missing as you dodge aside.");
				return;
			}
			//Determine if evaded
			if (result.dodge == EVASION_EVADE) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you evade her attack.");
				else outputText(", but you evade the clumsy attack.");
				return;
			}
			//("Misdirection"
			if (result.dodge == EVASION_MISDIRECTION) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you.  You misdirect her, avoiding the hit.");
				else outputText(", missing as you misdirect her attentions.");
				return;
			}
			//Determine if cat'ed
			if (result.dodge == EVASION_FLEXIBILITY) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but misses due to your cat-like evasion.");
				else outputText(", missing due to your cat-like evasion.");
				return;
			}
			if (result.dodge != null){
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you manage to dodge it.");
				else outputText(", and misses as you avoid her attack.");
				return;
			}
			if (result.parry){
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you manage to parry her attack.");
				else outputText(", but you meet her weapon with yours, parrying the attack.");
				return;
			}
			if (result.block){
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you manage to block her attack.");
				else outputText(", but you raise your shield in time and parry her attack.");
				return;
			}
			//Determine damage - str modified by enemy toughness!
			if (findPerk(PerkLib.Acid) >= 0) damage = player.reduceDamage(str + 10 + weaponAttack,this);
			else damage = player.reduceDamage(str + weaponAttack,this);

			if (damage <= 0) {
				damage = 0;
				if (findPerk(PerkLib.Acid) >= 0) {
					if (rand(player.armorDef + player.tou) < player.armorDef) outputText("tries to slap you, but the acid-bearing slap spatters weakly off your " + player.armorName + ". ");
					else outputText("tries to slap you with an acid-loaded hand, but it splatters off you ineffectually. ");
				}
				else {
					//Due to toughness or amor...
					if (rand(player.armorDef + player.tou) < player.armorDef) outputText(", her attack slapping fruitlessly against your " + player.armorName + ". ");
					else outputText(", her attack splattering ineffectually against you. ");
				}
			}
			//everyone else
			else {
				if (findPerk(PerkLib.Acid) >= 0) {
					outputText("delivers a painful slap across your cheek.  You gasp when the light stinging becomes a searing burn that seems to get worse as time goes on! ");
					if (!player.hasStatusEffect(StatusEffects.AcidSlap)) player.createStatusEffect(StatusEffects.AcidSlap, 0, 0, 0, 0);
				}
				else outputText(", painfully smacking her gooey limbs against your head.  You shake your " + player.hairDescript() + ", clearing your head of the dazing slap. ");
			}
			if (damage > 0) {
				if (lustVuln > 0 && player.armorName == "barely-decent bondage straps") {
					if (!plural) outputText("\n" + capitalA + short + " brushes against your exposed skin and jerks back in surprise, coloring slightly from seeing so much of you revealed. ");
					else outputText("\n" + capitalA + short + " brush against your exposed skin and jerk back in surprise, coloring slightly from seeing so much of you revealed. ");
					lust += 5 * lustVuln;
				}
			}
			if (damage > 0) player.takeDamage(damage, true);
			statScreenRefresh();
			outputText("\n");

		}

//Play –
		private function gooPlay():void
		{
			outputText("The goo-girl lunges, wrapping her slimy arms around your waist in a happy hug, hot muck quivering excitedly against you. She looks up, empty eyes confused by your lack of enthusiasm and forms her mouth into a petulant pout before letting go.  You shiver in the cold air, regretting the loss of her embrace.");
			player.takeLustDamage(3 + rand(3) + player.sens / 10, true);

		}

//Throw –
		private function gooThrow():void
		{
			outputText("The girl reaches into her torso, pulls a large clump of goo out, and chucks it at you like a child throwing mud. The slime splatters on your chest and creeps under your " + player.armorName + ", tickling your skin like fingers dancing across your body. ");
			var damage:Number = 1;
			player.takeDamage(damage, true);
			player.takeLustDamage( 5 + rand(3) + player.sens / 10, true);

		}

//Engulf –
		private function gooEngulph():void
		{
			outputText("The goo-girl gleefully throws her entire body at you and, before you can get out of the way, she has engulfed you in her oozing form! Tendrils of " + skin.tone + " slime slide up your nostrils and through your lips, filling your lungs with the girl's muck. You begin suffocating!");
			if (!player.hasStatusEffect(StatusEffects.GooBind)) player.createStatusEffect(StatusEffects.GooBind, 0, 0, 0, 0);

		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(gooGalAttack,2,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(gooEngulph,1,true,5,FATIGUE_PHYSICAL,RANGE_MELEE);
			actionChoices.add(gooPlay, 2, true, 5,FATIGUE_NONE,RANGE_TEASE);
			actionChoices.exec();

		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.lake.gooGirlScene.beatUpGoo();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms) {
				outputText("\n\nThe goo-girl seems confused but doesn't mind.");
				doNext(game.combat.endLustLoss);
			} else {
				game.lake.gooGirlScene.getBeatByGooGirl();
			}
		}

		override public function teased(lustDelta:Number):void
		{
			if (lust100 <= 99) {
				if (lustDelta <= 0) outputText("\nThe goo-girl looks confused by your actions, as if she's trying to understand what you're doing.");
				else if (lustDelta < 13) outputText("\nThe curious goo has begun stroking herself openly, trying to understand the meaning of your actions by imitating you.");
				else outputText("\nThe girl begins to understand your intent. She opens and closes her mouth, as if panting, while she works slimy fingers between her thighs and across her jiggling nipples.");
			}
			else outputText("\nIt appears the goo-girl has gotten lost in her mimicry, squeezing her breasts and jilling her shiny " + skin.tone + " clit, her desire to investigate you forgotten.");
			applyTease(lustDelta);
		}

		public function GooGirl(noInit:Boolean = false)
		{
			if (noInit) return;
			var playerHasBigBoobs:Boolean = player.biggestTitSize() >= 3;
			this.a = "the ";
			this.short = "goo-girl";
			this.imageName = "googirl";
			this.long = "The goo-girl has a curious expression on her youthful, shimmering face. Her body is slender and globs of slime regularly drip from her limbs, splattering into the goo puddle pooling beneath her hips. A small, heart-shaped nucleus pulses in her chest with a red glow." + (playerHasBigBoobs ? ("  She has apparently made herself a bit more like you, as her chest appears to be a perfect copy of your " + player.chestDesc() + ".") : "");
			this.race = "Goo-Girl";
			// this.long = false;
			this.createVagina(false, Vagina.WETNESS_SLAVERING, Vagina.LOOSENESS_NORMAL);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 9001, 0, 0, 0);
			this.createBreastRow(playerHasBigBoobs ? player.biggestTitSize() : 3);
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_SLIME_DROOLING;
			this.createStatusEffect(StatusEffects.BonusACapacity,9001,0,0,0);
			this.tallness = rand(8) + 70;
			this.hips.rating = Hips.RATING_AMPLE;
			this.butt.rating = Butt.RATING_LARGE;
			this.lowerBody.type= LowerBody.GOO;
			var tone:String = randomChoice("blue", "purple", "crystal");
			this.skin.tone = tone;
			this.skin.setType(Skin.GOO);
			this.skin.adj = "goopey";
			this.hair.color = tone;
			this.hair.length = 12 + rand(10);
			initStrTouSpeInte(25, 25, 20, 30);
			initLibSensCor(50, 40, 10);
			this.weaponName = "hands";
			this.weaponVerb="slap";
			this.armorName = "gelatinous skin";
			this.bonusHP = 40;
			this.lust = 45;
			this.lustVuln = .75;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 3;
			this.fireRes = 1.5;
			this.gems = rand(5) + 1;
			this.drop = new ChainedDrop().add(weapons.PIPE,1/10)
					.add(consumables.WETCLTH,1/2)
					.elseDrop(useables.GREENGL);
/* These are actually green slime functions and were never called in GooGirl due to override of performCombatAction
			this.special1 = 5040;
			this.special2 = 5039;
			this.special3 = 5039;
*/
			checkMonster();
		}

//Color types are presented as [Blue slimes/Purple Slimes/Clear Slimes]
		public function gooColor():String
		{
			//blue, purple, or crystal
			return skin.tone;
		}

//[azure/plum/crystalline]
		public function gooColor2():String
		{
			if (skin.tone == "blue") return "azure";
			else if (skin.tone == "purple") return "plum";
			else return "crystalline";
		}

//[cerulean/violet/clear]
		public function gooColor3():String
		{
			if (skin.tone == "blue") return "cerulean";
			else if (skin.tone == "purple") return "violet";
			else return "clear";
		}

//[teal/lavender/glassy]
		public function gooColor4():String
		{
			if (skin.tone == "blue") return "teal";
			else if (skin.tone == "purple") return "lavender";
			else return "glassy";
		}

//[sapphire/amethyst/diamond]
		public function gooColor5():String
		{
			if (skin.tone == "blue") return "sapphire";
			else if (skin.tone == "purple") return "amethyst";
			else return "diamond";
		}

//[lapis/periwinkle/pure]
		public function gooColor6():String
		{
			if (skin.tone == "blue") return "sapphire";
			else if (skin.tone == "purple") return "amethyst";
			else return "diamond";
		}

//[blue berry/grape/crystal]
		public function gooColor7():String
		{
			if (skin.tone == "blue") return "blueberry";
			else if (skin.tone == "purple") return "grape";
			else return "crystal";
		}

//[aquamarine/plum/transparent]
		public function gooColor8():String
		{
			if (skin.tone == "blue") return "aquamarine";
			else if (skin.tone == "purple") return "plum";
			else return "transparent";
		}

//[an aquamarine/a lilac/a translucent]
		public function gooColor9():String
		{
			if (skin.tone == "blue") return "an aquamarine";
			else if (skin.tone == "purple") return "a plum";
			else return "a translucent";
		}

//[blueberries/grapes/strawberries]
		public function gooColor10():String
		{
			if (skin.tone == "blue") return "blueberries";
			else if (skin.tone == "purple") return "grapes";
			else return "strawberries";
		}

//[cerulean tint/violet tint/clear body]
		public function gooColor11():String
		{
			if (skin.tone == "blue") return "cerulean tint";
			else if (skin.tone == "purple") return "violet tint";
			else return "clear body";
		}
	}

}

license: unknown


code:
package classes.Scenes.Areas.Lake
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.BodyParts.Hips;
	import classes.internals.*;
	import classes.GlobalFlags.kFLAGS;

	public class GreenSlime extends Monster
	{

		override public function defeated(hpVictory:Boolean):void
		{
			game.lake.greenSlimeScene.slimeVictory();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms) {
				outputText("\n\nThe slime doesn't even seem to notice.\n\n");
			}
			doNext(game.lake.greenSlimeScene.slimeLoss);
		}

		private function lustAttack():void {
			outputText("The creature surges forward slowly with a swing that you easily manage to avoid.  You notice traces of green liquid spurt from the creature as it does, forming a thin mist that makes your skin tingle with excitement when you inhale it.");
			player.takeLustDamage(player.lib / 10 + 8, true);
			doNext(game.playerMenu);
		}

		private function lustReduction():void {
			outputText("The creature collapses backwards as its cohesion begins to give out, and the faint outline of eyes and a mouth form on its face.  Its chest heaves as if it were gasping, and the bolt upright erection it sports visibly quivers and pulses before relaxing slightly.");
			lust -= 13;
			doNext(game.playerMenu);
		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(eAttack,1,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(lustAttack,1,true,5,FATIGUE_NONE,RANGE_RANGED);
			actionChoices.add(lustReduction, 1, true, 10,FATIGUE_NONE,RANGE_SELF);
			actionChoices.exec();

		}

		public function GreenSlime()
		{
			//trace("GreenSlime Constructor!");
			this.a = "a ";
			this.short = "green slime";
			this.imageName = "greenslime";
			this.long = "The green slime has a normally featureless face that sits on top of wide shoulders that sprout into thick, strong arms.  Its torso fades into an indistinct column that melds into the lump of ooze on the ground that serves as a makeshift form of locomotion.";
			this.race = "Slime";
			// this.plural = false;
			this.createCock(18, 2, CockTypesEnum.HUMAN);
			this.cumMultiplier = 3;
			this.hoursSinceCum = 20;
			this.pronoun1 = "it";
			this.pronoun2 = "it";
			this.pronoun3 = "its";
			createBreastRow(0);
			this.ass.analLooseness = Ass.LOOSENESS_STRETCHED;
			this.ass.analWetness = Ass.WETNESS_SLIME_DROOLING;
			this.tallness = rand(8) + 80;
			this.hips.rating = Hips.RATING_AMPLE;
			this.butt.rating = Butt.RATING_LARGE;
			this.lowerBody.type= LowerBody.GOO;
			this.skin.tone = "green";
			initStrTouSpeInte(25, 20, 10, 5);
			initLibSensCor(50, 60, 20);
			this.weaponName = "hands";
			this.weaponVerb="slap";
			this.armorName = "gelatinous skin";
			this.bonusHP = 30;
			this.lust = 30;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 2;
			this.gems = rand(5) + 1;
			this.drop = new ChainedDrop().add(weapons.PIPE, 1 / 10)
					.add(consumables.WETCLTH, 1 / 2)
					.elseDrop(useables.GREENGL);
			/*this.special1 = lustReduction;
			this.special2 = lustAttack;
			this.special3 = lustAttack;*/
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Areas.Lake {
import classes.*;
import classes.GlobalFlags.kFLAGS;
	import classes.Scenes.API.Encounter;

public class SwordInStone extends AbstractLakeContent implements Encounter {

	public function SwordInStone() {}

	public function encounterName():String { return "sword"; }
	public function encounterChance():Number {
		return !player.hasStatusEffect(StatusEffects.TookBlessedSword)
			   && !player.hasStatusEffect(StatusEffects.BSwordBroken)
				? 1 : 0;
	}

	public function execEncounter():void {
			outputText(images.showImage("event-lake-bSword"));
			if (flags[kFLAGS.FACTORY_SHUTDOWN] < 2) {
				//Encounter it!
				outputText("While walking along the lake, the glint of metal catches your eye.  You drop into a combat stance, readying your " + player.weaponName + " for a fight.   Your eyes dart about, searching for the source of the light. You feel rather foolish when you locate the source of the reflection.  It came from a sword lodged hilt-deep in the trunk of a tree.  You relax a bit, approaching the odd sight to get a better look.\n\n");
				//Describe it!
				outputText("The tree is thick enough to encapsulate the entire blade.  Nothing protrudes from the far side at all.  In another odd twist, there is not any sap leaking around the undamaged bark that surrounds the sword.  The hilt itself appears made of bronze, with gold inlays along the outside of the handguard.  Looking closer, you realize they portray a stylized figure battling a horde of demons.  The handle is wrapped tightly with rugged leather that still looks brand new in spite of how long this sword must have been here for the tree to grow so thoroughly around it.\n\n");
				outputText("You suppose you could try to pull it free, do you?");
				doYesNo(tryToTakeSwordInStone,camp.returnToCampUseOneHour);
			}
			else {
				outputText("While walking along the lake, a massive tree catches your eye.  You carefully circle some bushes, wary of an ambush as you get closer.   As you close the distance, it becomes clear the tree is terribly corrupt.  It weeps black sap from gnashing mouths and clenching distorting twats.  The very center of the tree has a massive knot, as if it had sustained a massive injury there.  You decide to avoid it, given the hungry-looking nature of its mouths, but before you depart you spot the pieces of a broken sword scattered around the trunk, completely covered in rust.");
				outputText("You suppose you could gather the pieces, do you?");
				doYesNo(takeBrokenSword, camp.returnToCampUseOneHour);
				player.createStatusEffect(StatusEffects.BSwordBroken,0,0,0,0);
			}
		}

		private function tryToTakeSwordInStone():void {
			clearOutput();
			outputText(images.showImage("item-bSword"));
			if (!player.isPureEnough(25)) { //if corrupted...
				outputText("You grip the handle with both hands and ");
				if (player.str > 70) outputText("pull mightily, making the tree strain and groan from the force, ");
				if (player.str <= 70 && player.str >= 40) outputText("pull hard, feeling your muscles tighten from the strain, ");
				if (player.str < 40) outputText("pull as hard as you can, ");
				outputText("but the sword remains stubbornly lodged in its arboreal home.  Frustrated, you give up and resolve to try later.");
				doNext(camp.returnToCampUseOneHour);
			}
			else { //if not corrupted...
				outputText("You grip the handle with both hands and ");
				if (player.str > 70) outputText("pull so hard you fall on your ass when the sword slips free.  The tip buries itself a few inches from your head.  You count yourself lucky and stand up.  ");
				if (player.str <= 70 && player.str >= 40) outputText("give a mighty pull and nearly fall over as the sword easily slides free from the tree.  ");
				if (player.str < 40) outputText("easily pull the sword free, surprising yourself with how easy it was to remove.  ");
				outputText("Remarkably the tree's trunk is entirely intact.  While marveling at this new development, a leaf brushes your shoulder.  You look up and watch as every single leaf turns from healthy green, to brilliant orange, and finally changes to brown.  The leaves rain down around you, covering the ground in dead plant-matter, leaving you alone with the withering skeleton of a dead tree.  The sight saddens you, though you cannot fathom why.\n\n");
				outputText("The blade itself is three and a half feet of pure, although rusted, steel. Still, it truly is a beautiful blade.\n\n");
				dynStats("lib", -(player.lib/3), "lus", -15);
				inventory.takeItem(weapons.B_SWORD, camp.returnToCampUseOneHour);
				player.createStatusEffect(StatusEffects.TookBlessedSword,0,0,0,0);
			}
		}

		private function takeBrokenSword():void {
			clearOutput();
			outputText(images.showImage("item-brokenSword"));
			outputText("You decide to look over the pieces of the broken sword. Interestingly enough, it's broken into only two pieces and covered in rust as you've expected but as you look closer, you notice the pommel and guard look intricately designed as if the sword is expertfully crafted by a master craftsman.\n\n");
			outputText("While the sword might still have some uses, it won't be a very effective weapon. Maybe someone can restore the sword to its full glory or even twist it into a useful yet corrupt weapon?");
			inventory.takeItem(weapons.B_SWORD, camp.returnToCampUseOneHour);
		}
	}
}


code:
/* Created by aimozg on 06.01.14 */
package classes.Scenes.Areas {
	import classes.*;
	import classes.BodyParts.*;
	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.Mountain.*;
	import classes.Scenes.Monsters.Goblin;
	import classes.Scenes.Monsters.Imp;
	import classes.Scenes.Quests.UrtaQuest.MinotaurLord;
	import classes.display.SpriteDb;
	import classes.internals.*;
	import classes.Scenes.PregnancyProgression;
	import classes.Scenes.NPCs.HelScene;

	use namespace kGAMECLASS;

	public class Mountain extends BaseContent implements IExplorable {
		public var hellHoundScene:HellHoundScene;
		public var infestedHellhoundScene:InfestedHellhoundScene = new InfestedHellhoundScene();
		public var minotaurScene:MinotaurScene;
		public var wormsScene:WormsScene = new WormsScene();
		public var salon:Salon = new Salon();
		public var nephilaSlimeScene:NephilaSlimeScene = new NephilaSlimeScene();

		public function Mountain(pregnancyProgression:PregnancyProgression, output:GuiOutput) {
			this.minotaurScene = new MinotaurScene(pregnancyProgression, output);
			this.hellHoundScene = new HellHoundScene(pregnancyProgression, output);
		}

		public function isDiscovered():Boolean { return flags[kFLAGS.TIMES_EXPLORED_MOUNTAIN] > 0; }
		public function discover():void {
			flags[kFLAGS.TIMES_EXPLORED_MOUNTAIN] = 1;
			outputText(images.showImage("area-mountain"));
			outputText("Thunder booms overhead, shaking you out of your thoughts.  High above, dark clouds encircle a distant mountain peak.  You get an ominous feeling in your gut as you gaze up at it.\n\nYou've discovered the Mountain!");
			doNext(camp.returnToCampUseOneHour);
		}
		//Explore Mountain
		private var _explorationEncounter:Encounter = null;
		public function get explorationEncounter():Encounter {
			const fn:FnHelpers = Encounters.fn;
			if (_explorationEncounter == null) _explorationEncounter =
					Encounters.group(game.commonEncounters.withImpGob, {
						name: "salon",
						when: fn.not(salon.isDiscovered),
						call: salon.hairDresser
					}, /*{
						name: "mimic",
						when: fn.ifLevelMin(3),
								chance: 0.2,
						call: game.mimicScene.mimicTentacleStart
					},*/ {
						name: "highmountains",
						when: function ():Boolean {
							return !game.highMountains.isDiscovered() && (player.level >= 5 || flags[kFLAGS.TIMES_EXPLORED_MOUNTAIN] >= 40);
						},
						call: game.highMountains.discover
					}, {
						name: "snowangel",
						when: function():Boolean {
							return isSaturnalia()
								&& player.gender > 0
								&& flags[kFLAGS.GATS_ANGEL_DISABLED] == 0
								&& flags[kFLAGS.GATS_ANGEL_GOOD_ENDED] == 0
								&& (flags[kFLAGS.GATS_ANGEL_QUEST_BEGAN] > 0
								&& !player.hasKeyItem("North Star Key"))
						},
						call: game.xmas.snowAngel.gatsSpectacularRouter
					}, {
						name:"jackfrost",
						when: function ():Boolean {
							return isSaturnalia() && flags[kFLAGS.JACK_FROST_YEAR] < date.fullYear && silly();
						},
						call: game.xmas.jackFrost.meetJackFrostInTheMountains
					}, {
						name:"hellhound",
						call:hellHoundScene.hellhoundEncounter,
						mods:[game.commonEncounters.furriteMod]
					}, {
						name:"infhhound",
						when: function():Boolean {
							return player.hasStatusEffect(StatusEffects.WormsOn);
						},
						chance:function ():Number {
							return player.hasStatusEffect(StatusEffects.WormsHalf) ? 0.25 : 0.5;
						},
						call:infestedHellhoundScene.infestedHellhoundEncounter,
						mods:[game.commonEncounters.furriteMod]
					}, {
						name:"worms1",
						when: function():Boolean {
							return !player.hasStatusEffect(StatusEffects.WormsOn)
								&& !player.hasStatusEffect(StatusEffects.WormsOff);
						},
						call: wormsScene.wormToggle
					}, {
						name:"worms2",
						chance: function ():Number {
							return player.hasStatusEffect(StatusEffects.WormsHalf) ? 0.5 : 1;
						},
						when: function ():Boolean {
							return player.hasStatusEffect(StatusEffects.WormsOn)
								&& (!player.hasStatusEffect(StatusEffects.Infested) ||
									!player.hasStatusEffect(StatusEffects.MetWorms))
						},
						call: wormsScene.wormEncounter
					}, {
						name:"minotaur",
						chance:minotaurChance,
						call:minotaurRouter,
						mods:[game.commonEncounters.furriteMod]
					}, {
						name:"factory",
						when:function():Boolean {
							return flags[kFLAGS.MARAE_QUEST_START] >= 1 && flags[kFLAGS.FACTORY_FOUND] <= 0;
						},
						call: game.dungeons.enterFactory
					}, {
						name:"ceraph",
								chance:function ():Number {
									return (player.lust >= 33 ? 1 : 0.5);
								},
						when:function ():Boolean {
									return flags[kFLAGS.CERAPH_KILLED] == 0
										   && !game.ceraphFollowerScene.ceraphIsFollower()
								},
						call:ceraphFn,
						mods:[fn.ifLevelMin(2)]
					}, {
						name:"hhound_master",
						chance:2,
						when:function():Boolean {
							//Requires canine face (if not in noFur mode), [either two dog dicks, or a vag and pregnant with a hellhound], at least two other hellhound features (black fur, dog legs, dog tail, dog ears), and corruption >=60
							var check1:Boolean = (noFur() || player.face.type == Face.DOG) && player.cor >= 60;
							var check2:Boolean = player.dogCocks() >= 2
								|| (player.hasVagina() && player.pregnancyType == PregnancyStore.PREGNANCY_HELL_HOUND);
							var check3:int = (player.tail.type == Tail.DOG ? 1 : 0)
								+ (player.lowerBody.type == LowerBody.DOG ? 1 : 0)
								+ (player.hair.color == "midnight black" ? 1 : 0)
								+ (player.ears.type == Ears.DOG ? 1 : 0);
							var check4a:Boolean = flags[kFLAGS.HELLHOUND_MASTER_PROGRESS] == 0;
							var check4b:Boolean = flags[kFLAGS.HELLHOUND_MASTER_PROGRESS] == 1
								&& player.hasKeyItem("Marae's Lethicite")
								&& player.keyItemv2("Marae's Lethicite") < 3;
							return flags[kFLAGS.HELLHOUND_MASTER_PROGRESS] < 3
								&& check1
								&& check2
								&& check3
								&& (check4a || check4b);
						},
						call:hellHoundScene.HellHoundMasterEncounter
					}, {
						name  : "nephila",
						when  : function ():Boolean {
							return player.hasStatusEffect(StatusEffects.WormsOn)
								   && !player.hasStatusEffect(StatusEffects.ParasiteNephila);
						},
						chance: function ():Number {
							return player.hasStatusEffect(StatusEffects.WormsHalf) ? 0.5 : 1
						},
						call  : nephilaSlimeScene.encounterNephila
					}, {
						name:"hike",
						chance:0.2,
						call:hike
					});
			return _explorationEncounter
		}
		public function explore():void {
			clearOutput();
			player.location = "mountain";
			flags[kFLAGS.TIMES_EXPLORED_MOUNTAIN]++;
			explorationEncounter.execEncounter();
		}
		//Rarer 'nice' Ceraph encounter
		public function ceraphFn():void {
			if (game.fetishManager.compare(FetishManager.FETISH_EXHIBITION) && rand(2) < 1) game.ceraphScene.friendlyNeighborhoodSpiderManCeraph();
			else game.ceraphScene.encounterCeraph();
		}

		public function minotaurChance():Number {
			if (player.findPerk(PerkLib.MinotaurCumAddict) >= 0) return 3;
			if (flags[kFLAGS.MINOTAUR_CUM_ADDICTION_STATE] > 0) return 2;
			return 1;
		}

		private function minotaurRouter():void {
			spriteSelect(SpriteDb.s_minotaur);
			if (flags[kFLAGS.TIMES_EXPLORED_MOUNTAIN] % 16 == 0 && player.findPerk(PerkLib.MinotaurCumAddict) >= 0 && rand(3) == 0 && addictionEnabled())
				minotaurScene.minoAddictionBadEndEncounter(); //Every 16 explorations chance at mino bad-end!
			else {
				if (!player.hasStatusEffect(StatusEffects.TF2) && (player.level <= 5 || player.str <= 40)) {
					clearOutput();
					if (silly()) { //Ideally, this should occur the first time the player would normally get an auto-rape encounter with the minotaur. The idea is to give a breather encounter to serve as a warning of how dangerous the mountain is
						outputText("Crossing over the treacherous mountain paths, you walk past an ominous cave.  The bones and the smell of death convince you to hasten your pace.  However, as you walk by, you hear a deep bellow and a snort as a monstrous man with a bull's head steps out.  With hell in his eyes and a giant ax in his hand, he begins to approach you in clear rage.  As he comes out into the light, you see that he is completely naked and sports a monstrous erection as angry as the minotaur himself, freely leaking a steady stream of pre-cum as he stalks you.\n\n");
						outputText("You stumble in your attempt to escape and realize that you are completely helpless.  The minotaur towers over you and heaves his ax for a coup de grace.  As he readies the blow, a monstrous explosion rocks the entire mountainside, causing the bull-man to stumble before he can finish you off. You look around, bewildered, trying to understand this strange new turn of events, and notice a group of maybe half a dozen people approaching from further up the path.  They appear to be a motley crew clad in blue and carrying monstrous weapons.  The tallest man holds a weapon made of multiple rotating tubes, and begins spinning the barrels.  A second later, while screaming in a language you do not understand, a rain of lead begins shredding the minotaur into a cloud of blood and flesh.\n\n");
						outputText("An equally imposing black man with a patch over one eye begins firing canisters at the beast, which explode violently.  \"Ya ragged-arsed beast man!\" he taunts.  \"Ye should pick on someone yer own size, BOY-O! HEHEHE!\"\n");
						outputText(images.showImage("encounter-stranger"));
						outputText("Coming up the path next is a freak of a person clad in a contained shiny suit with a weapon that burns with flame.  He freely walks into the explosions and gunfire and begins igniting the beast.\n\n");
						outputText("\"MRPHHUMFHRUFH!!!!! HUMFHUFMMRUF!\" the freak mumbles through his mask.\n\n");
						outputText("\"I like me steak well done, ye crazy bugger!\" yells the black man.\n\n");
						outputText("The beast collapses in a charred and bloody heap.   As you stand back up, you hear a strange noise behind you.  You turn around to find a well-dressed man wearing a ski mask and smoking a cigarette.  \"Don't you know ze mountains are dangereuse,\" the man says with a thick accent.  \"You will get FUCKED up here if you are not careful.\"\n\n");
						outputText("You thank the man and his team, but they brush off your gratitude.  \"Non, non!\" the man with the accent says.  \"As zey say, everyone gets ONE.\" With that, he touches the watch on his wrist and disappears.  The rest of the group continues on their way.\n\n");
						outputText("As they leave, the giant with the chain gun yells in a horribly accented manner, \"YOU LEAVE SANDVICH ALONE! SANDVICH IS MINE!\"\n\n");
						outputText("With that, another hail of bullets break the scene as they walk away, leaving you safe from the minotaur, but utterly baffled as to what in hell just happened.");
					}
					else {
						outputText(images.showImage("monster-minotaur"));
						outputText("Crossing over the treacherous mountain paths, you walk past an ominous cave.  The bones and the smell of death convince you to hasten your pace.  However, as you walk by, you hear a deep bellow and a snort as a monstrous man with a bull's head steps out.  With hell in his eyes and a giant ax in his hand, he begins to approach you in clear rage.  As he comes out into the light, you see that he is completely naked and sports a monstrous erection as angry as the minotaur himself, freely leaking a steady stream of pre-cum as he stalks you.\n\n");
						outputText("You stumble in your attempt to escape and realize that you are completely helpless.  The minotaur towers over you and heaves his ax for a coup de grace.  As he readies the blow, another beast-man slams into him from the side.  The two of them begin to fight for the honor of raping you, giving you the opening you need to escape.  You quietly sneak away while they fight – perhaps you should avoid the mountains for now?\n\n");
						dynStats("lib", -1);
					}
					player.createStatusEffect(StatusEffects.TF2, 0, 0, 0, 0);
					doNext(camp.returnToCampUseOneHour);
				}
				else if (!player.hasStatusEffect(StatusEffects.MinoPlusCowgirl) || rand(10) == 0) {
					clearOutput();
					//Mino gangbang
					if (flags[kFLAGS.HAS_SEEN_MINO_AND_COWGIRL] == 1 && player.cowScore() >= 4 && player.lactationQ() >= 200 && player.biggestTitSize() >= 3 && player.minotaurAddicted()) { //PC must be a cowmorph (horns, legs, ears, tail, lactating, breasts at least C-cup) / Must be addicted to minocum
						outputText("As you pass a shadowy cleft in the mountainside, you hear the now-familiar call of a cowgirl echoing from within.  Knowing what's in store, you carefully inch closer and peek around the corner.\n\n");
						outputText("Two humanoid shapes come into view, both with pronounced bovine features - tails, horns and hooves instead of feet.  Their genders are immediately apparent due to their stark nudity.  The first is the epitome of primal femininity, with a pair of massive, udder-like breasts and wide child-bearing hips. The other is the pinnacle of masculinity, with a broad, muscular chest, a huge horse-like penis and a heavy set of balls more appropriate on a breeding stud than a person.  You have once again stumbled upon a cow-girl engaging in a not-so-secret rendezvous with her minotaur lover.");
						unlockCodexEntry(kFLAGS.CODEX_ENTRY_MINOTAURS);
						unlockCodexEntry(kFLAGS.CODEX_ENTRY_LABOVINES);
						outputText("\n\nYou settle in behind an outcropping, predicting what comes next.  You see the stark silhouettes of imps and goblins take up similar positions around this makeshift theatre, this circular clearing surrounded on the edge by boulders and nooks where all manner of creatures might hide. You wonder if they're as eager for the upcoming show as you are.  The heady scent of impending sex rises in the air... and with it comes something masculine, something that makes your stomach rumble in anticipation.  The mouth-watering aroma of fresh minotaur cum wafts up to your nose, making your whole body quiver in need.  Your [vagOrAss] immediately ");
						if (player.hasVagina()) outputText("dampens");
						else outputText("twinges");
						outputText(", aching to be filled");
						if (player.hasCock()) outputText(", while [eachCock] rises to attention, straining at your [armor]");
						outputText(".\n");
						outputText(images.showImage("minotaur-cumslut"));
						outputText("You can barely see it from your vantage point, but you can imagine it: the semi-transparent pre-cum dribbling from the minotaur's cumslit, oozing down onto your tongue.  Your entire body shivers at the thought, whether from disgust or desire you aren't sure.  You imagine your lips wrapping around that large equine cock, milking it for all of its delicious cum.  Your body burns hot like the noonday sun at the thought, hot with need, with envy at the cow-girl, but most of all with arousal.\n\n");
						outputText("Snapping out of your imaginative reverie, you turn your attention back to the show. You wonder if you could make your way over there and join them, or if you should simply remain here and watch, as you have in the past.");
						menu();
						addButton(0, "Join", minotaurScene.joinBeingAMinoCumSlut);
						addButton(1, "Watch", minotaurScene.watchAMinoCumSlut);
					}
					else {
						flags[kFLAGS.HAS_SEEN_MINO_AND_COWGIRL] = 1;
						if (!player.hasStatusEffect(StatusEffects.MinoPlusCowgirl))
							 player.createStatusEffect(StatusEffects.MinoPlusCowgirl, 0, 0, 0, 0);
						else player.addStatusValue(StatusEffects.MinoPlusCowgirl, 1, 1);
						outputText("As you pass a shadowy cleft in the mountainside, you hear the sounds of a cow coming out from it. Wondering how a cow got up here, but mindful of this land's dangers, you cautiously sneak closer and peek around the corner.\n\n");
						outputText("What you see is not a cow, but two large human-shaped creatures with pronounced bovine features -- tails, horns" + (noFur() ? "" : ", muzzles") + ", and hooves instead of feet. They're still biped, however, and their genders are obvious due to their stark nudity. One has massive, udder-like breasts and wide hips, the other a gigantic, horse-like dong and a heavy set of balls more appropriate to a breeding stud than a person. You've stumbled upon a cow-girl and a minotaur.");
						unlockCodexEntry(kFLAGS.CODEX_ENTRY_MINOTAURS);
						unlockCodexEntry(kFLAGS.CODEX_ENTRY_LABOVINES);
						outputText("[pg]A part of your mind registers bits of clothing tossed aside and the heady scent of impending sex in the air, but your attention is riveted on the actions of the pair. The cow-girl turns and places her hands on a low ledge, causing her to bend over, her ample ass facing the minotaur. The minotaur closes the distance between them in a single step.\n\n");
						outputText("She bellows, almost moaning, as the minotaur grabs her cushiony ass-cheeks with both massive hands. Her tail raises to expose a glistening wet snatch, its lips already parted with desire. She moos again as his rapidly hardening bull-cock brushes her crotch. You can't tear your eyes away as he positions himself, his flaring, mushroom-like cock-head eliciting another moan as it pushes against her nether lips.\n");
						outputText(images.showImage("minotaur-cumslut-encounter"));
						outputText("With a hearty thrust, the minotaur plunges into the cow-girl's eager fuck-hole, burying himself past one -- two of his oversized cock's three ridge rings. She screams in half pain, half ecstasy and pushes back, hungry for his full length. After pulling back only slightly, he pushes deeper, driving every inch of his gigantic dick into his willing partner who writhes in pleasure, impaled exactly as she wanted.\n\n");
						outputText("The pair quickly settles into a rhythm, punctuated with numerous grunts, groans, and moans of sexual excess. To you it's almost a violent assault sure to leave both of them bruised and sore, but the cow-girl's lolling tongue and expression of overwhelming desire tells you otherwise. She's enjoying every thrust as well as the strokes, gropes, and seemingly painful squeezes the minotaur's powerful hands deliver to her jiggling ass and ponderous tits. He's little better, his eyes glazed over with lust as he continues banging the fuck-hole he found and all but mauling its owner.");
						doNext(minotaurScene.continueMinoVoyeurism);
					}
				}
				else if (flags[kFLAGS.MINOTAUR_CUM_ADDICTION_STATE] == 3 && rand(2) == 0 && player.inte / 10 + rand(20) < 15) //Cum addictus interruptus!  LOL HARRY POTTERFAG
					minotaurScene.minoAddictionFuck(); //Withdrawal auto-fuck!
				else if (rand(5) == 0 && player.level >= 10) {
					clearOutput();
					outputText(images.showImage("monster-minotaurlord"));
					outputText("Minding your own business, you walk along the winding paths.  You take your time to enjoy the view until you see a shadow approaching you.  You turn around to see a minotaur!  However, he is much bigger than the other minotaurs you've seen.  You estimate him to be eleven feet tall and he's wielding a chain-whip.  He's intent on raping you!");
					startCombat(new MinotaurLord()); //Rare Minotaur Lord
				}
				else minotaurScene.getRapedByMinotaur(true);
			}
		}

		private function hike():void {
			clearOutput();
			outputText(images.showImage("area-mountain"));
			if (player.cor < 90) {
				outputText("Your hike in the mountains, while fruitless, reveals pleasant vistas and provides you with good exercise and relaxation.");
				dynStats("tou", .25, "spe", .5, "lus", player.lib / 10 - 15);
			}
			else {
				outputText("During your hike into the mountains, your depraved mind keeps replaying your most obscenely warped sexual encounters, always imagining new perverse ways of causing pleasure.\n\nIt is a miracle no predator picked up on the strong sexual scent you are emitting.");
				dynStats("tou", .25, "spe", .5, "lib", .25, "lus", player.lib / 10);
			}
			doNext(camp.returnToCampUseOneHour);
		}

		private function findOre():void { //Not used. Doubt if it will ever be added
			var ore:int = rand(3); //0 = copper, 1 = tin, 2 = iron
		}
	}
}


code:
package classes.Scenes.Areas.Mountain
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.internals.*;
	import classes.GlobalFlags.kGAMECLASS;

	public class HellHound extends Monster
	{
		protected function hellhoundFire():void {
			//Blind dodge change
			if(hasStatusEffect(StatusEffects.Blind)) {
				outputText(capitalA + short + " completely misses you with a wave of dark fire! Thank the gods it's blind!");

				return;
			}
			/*if(player.hasStatusEffect(StatusEffects.Web_dash_Silence)) {
				outputText("You reach inside yourself to breathe flames, but as you ready to release a torrent of fire, it backs up in your throat, blocked by the webbing across your mouth.  It causes you to cry out as the sudden, heated force explodes in your own throat.\n");
				changeFatigue(10);
				takeDamage(10+rand(20));
				combat.monsterAI();
				return;
			}*/
			if(player.findPerk(PerkLib.Evade) >= 0 && player.spe >= 35 && rand(3) != 0) {
				outputText("Both the hellhound's heads breathe in deeply before blasting a wave of dark fire at you.  You easily avoid the wave, diving to the side and making the most of your talents at evasion.");
			}
			else if(player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 20 && player.armorName == "red, high-society bodysuit") {
				outputText("Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + a + short + "'s fire.\n");
			}
			else if(player.findPerk(PerkLib.Flexibility) >= 0 && player.spe > 30 && rand(10) != 0) {
				outputText("Both the hellhound's heads breathe in deeply before blasting a wave of dark fire at you.  You twist and drop with incredible flexibility, watching the fire blow harmlessly overhead.");
			}
			else {
				//Determine the damage to be taken
				var temp:Number = 15 + rand(10);
				outputText("Both the hellhound's heads breathe in deeply before blasting a wave of dark fire at you. While the flames don't burn much, the unnatural heat fills your body with arousal. ");
				game.combat.monsterDamageType = game.combat.DAMAGE_FIRE;
				player.takeDamage(temp, true);
				player.takeLustDamage(20+(player.sens/10), true);
				statScreenRefresh();
				if(player.HP <= 0) {
					doNext(game.combat.endHpLoss);
					return;
				}
				if(player.lust >= player.maxLust()) {
					doNext(game.combat.endLustLoss);
					return;
				}
			}
			doNext(game.playerMenu);
		}
		protected function hellhoundScent():void {
			if(player.hasStatusEffect(StatusEffects.NoFlee)) {
				if(spe == 100) {
					hellhoundFire();
					return;
				}
				else {
					outputText("The hellhound sniffs your scent again, seemingly gaining more and more energy as he circles faster around you.");
					spe = 100;
				}
			}
			else {
				spe += 40;
				outputText("The hellhound keeps his four eyes on you as he sniffs the ground where you were moments ago. He raises his heads back up and gives you a fiery grin - he seems to have acquired your scent!  It'll be hard to get away now...");
				player.createStatusEffect(StatusEffects.NoFlee,0,0,0,0);
			}

		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(eAttack,1,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(hellhoundFire,1,true,15,FATIGUE_MAGICAL,RANGE_RANGED);
			actionChoices.add(hellhoundScent, 1, true, 10,FATIGUE_NONE,RANGE_SELF);
			actionChoices.exec();

		}

		override public function defeated(hpVictory:Boolean):void
		{
			clearOutput();
			if (hpVictory) {
				outputText("The hellhound's flames dim and the heads let out a whine before the creature slumps down, defeated and nearly unconscious.");
			} else {
				outputText("Unable to bear hurting you anymore, the hellhound's flames dim as he stops his attack. The two heads look at you, whining plaintively.  The hellhound slowly pads over to you and nudges its noses at your crotch.  It seems he wishes to pleasure you.\n\n");
			}
			game.output.menu();

			game.output.addButtonDisabled(0, "Fuck it", "Ride his twin cocks. This scene requires you to have vagina and sufficient arousal. This scene can not accommodate naga body.");
			game.output.addButtonDisabled(1, "Lick", "Make him use his tongues. This scene requires you to have genitals and sufficient arousal. This scene requires lust victory.");

			if (player.lust >= 33 && !player.isGenderless()) {
				if (player.hasVagina() && !player.isNaga()) {
					game.output.addButton(0, "Fuck it", game.mountain.hellHoundScene.hellHoundPropahRape).hint("Ride his twin cocks.");
				}
				if (!hpVictory) {
					game.output.addButton(1, "Lick", game.mountain.hellHoundScene.hellHoundGetsRaped).hint("Make him use his tongues.");
				}
			}
            game.setSexLeaveButton();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if(pcCameWorms){
				outputText("\n\nThe hellhound snorts and leaves you to your fate.");
				doNext(game.combat.cleanupAfterCombat);
			} else {
				game.mountain.hellHoundScene.hellhoundRapesPlayer();
			}
		}

		override protected function outputDefaultTeaseReaction(lustDelta:Number):void {
			if (lustDelta === 0) outputText("\n" + capitalA + short + " seems unimpressed.");
			else if (lustDelta < 4) outputText("\n" + capitalA + short + " looks intrigued by what " + pronoun1 + " sees.");
			else if (lustDelta < 10) outputText("\n" + capitalA + short + " definitely seems to be enjoying the show.");
			else if (lustDelta < 20) outputText("\n" + capitalA + short + " growls softly with lust, " + pronoun3 + " eyes filled with longing.");
			else outputText("\n" + capitalA + short + " licks " + pronoun3 + " lips in anticipation, " + pronoun3 + " twin cocks sticking prominently out of their sheath.");
		}

		public function HellHound(noInit:Boolean=false)
		{
			if (noInit) return;
			//trace("HellHound Constructor!");
			this.a = "the ";
			this.short = "hellhound";
			this.imageName = "hellhound";
			this.long = "It is a hulking beast that reassembles a really big rabid dog, with two canine heads placed side-by-side. Its eyes and mouth are filled with flames and its muscular legs are capped by paws featuring long and sharp claws. Its covered from head to toe in a thick black fur, dark as the night itself, acting like some sort of natural armor. Both its sets of eyes are staring you, meanacingly following your every move with feral desire as it slowly circles around you.";
			this.race = "Hellhound";
			// this.plural = false;
			this.createCock(8,2,CockTypesEnum.DOG);
			this.createCock(8,2,CockTypesEnum.DOG);
			this.balls = 2;
			this.ballSize = 4;
			this.cumMultiplier = 5;
			// this.hoursSinceCum = 0;
			this.createBreastRow();
			this.createBreastRow();
			this.createBreastRow();
			this.ass.analLooseness = Ass.LOOSENESS_NORMAL;
			this.ass.analWetness = Ass.WETNESS_NORMAL;
			this.tallness = 47;
			this.hips.rating = Hips.RATING_AVERAGE;
			this.butt.rating = Butt.RATING_AVERAGE+1;
			this.lowerBody.type= LowerBody.DOG;
			this.skin.tone = "black";
			this.skin.setType(Skin.FUR);
			this.hair.color = "red";
			this.hair.length = 3;
			initStrTouSpeInte(55, 60, 40, 1);
			initLibSensCor(95, 20, 100);
			this.weaponName = "claws";
			this.weaponVerb="claw";
			this.weaponAttack = 10;
			this.armorName = "thick fur";
			this.lust = 25;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 5;
			this.gems = 10+rand(10);
			this.drop = new WeightedDrop()
					.add(consumables.CANINEP, 6)
					.add(consumables.WOLF_PP, 1)
					.addMany(2,
						consumables.BULBYPP,
						consumables.KNOTTYP,
						consumables.BLACKPP,
						consumables.DBLPEPP,
						consumables.LARGEPP);
			this.tail.type = Tail.DOG;
			/*this.special1 = hellhoundFire;
			this.special2 = hellhoundScent;*/
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Areas.Mountain
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.internals.*;
	import classes.GlobalFlags.kGAMECLASS;

	/**
	 * ...
	 * @author Fake-Name
	 */

	public class InfestedHellhound extends HellHound
	{
		//[Extra special attack]
		private function hellHoundWormCannon():void
		{
			outputText("The thing rears up onto its hind legs.  It lurches forwards powerfully, its thickness twitching and flaring as it launches a wave of worm-filled canine cum at you.");
			outputText("\n");
			if (rand(2) == 0) {
				//Get hit – 10+ lust
				game.dynStats("lus", 5 + player.lib / 20);
				outputText("Taken off-guard by the unexpected sexual display, you fail to move out of the way, and the wormy jism splatters you from the chest down.");
				if (player.hasStatusEffect(StatusEffects.Infested) && player.totalCocks() > 0) {
					outputText("  The worms inside you begin moving and squirming. A few of your cum-soaked parasites crawl out from your shivering " + player.multiCockDescriptLight() + " as if attempting to meet the new arrivals.  You desperately want to brush them away, but the pleasure in your crotch is too good to fight, and you find yourself staying your hand as each and every one of the new worms makes it way into your " + player.multiCockDescriptLight() + ".");
					if (player.balls > 0) outputText("  Your " + player.ballsDescriptLight() + " grow weightier as the worms settle into their new home, arousing you beyond measure.");
					else outputText("  You can feel them shifting around inside you as they adjust to their new home, arousing you beyond measure.");
					player.takeLustDamage(10, true);
				}
				else if (player.totalCocks() > 0) {
					outputText("  The worms wriggle and squirm all over you, working their way towards your groin.  It tickles pleasantly, but you brush them away before they can get inside you.  The thought of being turned into a worm-dispensing cum fountain is horrifying, but it leaves you hard.");
					player.takeLustDamage((5 + Math.round(player.cor / 20)), true);
				}
				else if (player.hasVagina()) outputText("  Thankfully, the worms don't seem to want anything to do with you, and rapidly drop down to the ground.");
			}
			//Sidestep
			else {
				outputText("You sidestep the gush of wormy fluid, letting it splatter against the rocks behind you.");
				//(If infested +10 lust:
				if (player.hasStatusEffect(StatusEffects.Infested)  && player.hasCock()) {
					if (player.hasCock()) {
						outputText("  Despite avoiding the torrent of infected seed, your own wormy ");
						if (player.balls > 0) outputText(player.ballsDescriptLight());
						else outputText(player.multiCockDescriptLight());
						outputText(" wriggle");
						if (player.balls == 0 && player.cockTotal() == 1) outputText("s");
						outputText(" hotly, expelling a few of your own worms in response along with a dribble of thick pre-cum.   You wonder what it would feel like to let his worms crawl inside you...");
						player.takeLustDamage(10, true);
					} else {
						CoC_Settings.error("Infested but no cock!");
						player.takeLustDamage(5, true);
						outputText("  The idea of being covered in the beast's infested seed arouses you slightly, but you shake your head violently and clear away the unwelcome thought.");
					}
				}
				//if aroused by worms +5 lust:
				else if (player.hasStatusEffect(StatusEffects.WormsOn) && !player.hasStatusEffect(StatusEffects.WormsHalf)) {
					player.takeLustDamage(5, true);
					outputText("  The idea of being covered in the beast's infested seed arouses you slightly, but you shake your head violently and clear away the unwelcome thought.");
				}
			}
			lust -= 25;
			if (lust < 40) lust = 40;

		}

		override public function defeated(hpVictory:Boolean):void
		{
			clearOutput();
			if (hpVictory) {
				outputText("The hellhound's flames dim and the heads let out a whine before the creature slumps down, defeated, unconscious, and yet still drooling worms.");
			} else {
				outputText("Unable to bear its unnatural arousal, the infested hellhound's flames dim as he stops his attack. The two heads look at you, whining plaintively.  The hellhound slowly pads over to you and nudges its noses at your crotch.  It seems he wishes to pleasure you.\n\n");
			}

			game.output.menu();

			game.output.addButtonDisabled(0, "Lick", "Make him use his tongues. This scene requires you to have genitals and sufficient arousal. This scene requires lust victory.");

			if (player.lust >= 33 && !player.isGenderless()) {
				if (!hpVictory) {
					game.output.addButton(0, "Lick", game.mountain.hellHoundScene.hellHoundGetsRaped).hint("Make him use his tongues.");
				}
			}

            game.setSexLeaveButton();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms) {
				outputText("\n\nThe infested hellhound's heads both grin happily as it advances towards you...");
				doNext(game.mountain.infestedHellhoundScene.infestedHellhoundLossRape);
			} else if (hpVictory) {
				game.mountain.infestedHellhoundScene.infestedHellhoundLossRape();
			} else {
				game.mountain.infestedHellhoundScene.infestedHellhoundLossRape();
			}
		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI();
			actionChoices.add(eAttack,1,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(hellhoundFire,1,true,15,FATIGUE_MAGICAL);
			actionChoices.add(hellhoundScent, 1, true, 10,FATIGUE_NONE,RANGE_SELF);
			actionChoices.add(hellHoundWormCannon, 1, true, 10,FATIGUE_PHYSICAL,RANGE_RANGED);
			actionChoices.exec();

		}

		override protected function outputDefaultTeaseReaction(lustDelta:Number):void {
			if (lustDelta === 0) outputText("\n" + capitalA + short + " seems unimpressed.");
			else if (lustDelta < 4) outputText("\n" + capitalA + short + " looks intrigued by what " + pronoun1 + " sees.");
			else if (lustDelta < 10) outputText("\n" + capitalA + short + " definitely seems to be enjoying the show.");
			else if (lustDelta < 20) outputText("\n" + capitalA + short + " growls softly with lust, " + pronoun3 + " eyes filled with longing.");
			else outputText("\n" + capitalA + short + " licks " + pronoun3 + " lips in anticipation, " + pronoun3 + " twin cocks sticking prominently out of their sheath.");
		}

		public function InfestedHellhound()
		{
			super(true);
			//trace("InfestedHellhound Constructor!");
			this.a = "the ";
			this.short = "infested hellhound";
			this.imageName = "infestedhellhound";
			this.long = "It looks like a large four-legged demon with two heads placed side-by-side. Its eyes and mouth are filled with flames, and covering each of its paws are large and menacing claws. A thick layer of dark fur covers his entire body like armor.  Both heads are looking at you hungrily as the hellhound circles around you.  A pair of black, slightly pointed cocks hang exposed, dripping with cum and worms.  You get the feeling reasoning with this beast will be impossible.";
			this.race = "Hellhound";
			// this.plural = false;
			this.createCock(9, 2);
			this.createCock(9, 2);
			this.balls = 2;
			this.ballSize = 5;
			this.cumMultiplier = 8;
			this.createBreastRow();
			this.createBreastRow();
			this.createBreastRow();
			this.ass.analLooseness = Ass.LOOSENESS_NORMAL;
			this.ass.analWetness = Ass.WETNESS_NORMAL;
			this.tallness = 47;
			this.hips.rating = Hips.RATING_AVERAGE;
			this.butt.rating = Butt.RATING_AVERAGE + 1;
			this.skin.tone = "black";
			this.skin.setType(Skin.FUR);
			this.hair.color = "red";
			this.hair.length = 3;
			initStrTouSpeInte(65, 60, 50, 1);
			initLibSensCor(95, 20, 100);
			this.weaponName = "claws";
			this.weaponVerb="claw";
			this.weaponAttack = 5;
			this.armorName = "thick fur";
			this.lust = 50;
			this.lustVuln = 0.87;
			this.temperment = TEMPERMENT_LOVE_GRAPPLES;
			this.level = 5;
			this.gems = 10 + rand(10);
			this.drop = new WeightedDrop()
 					.add(consumables.CANINEP, 6)
 					.add(consumables.WOLF_PP, 1)
 					.addMany(2,
 						consumables.BULBYPP,
 						consumables.KNOTTYP,
 						consumables.BLACKPP,
 						consumables.DBLPEPP,
 						consumables.LARGEPP);
			/*this.special1 = hellhoundFire;
			this.special2 = hellhoundScent;
			this.special3 = hellHoundWormCannon;*/
			this.tail.type = Tail.DOG;
			checkMonster();
		}

	}

}