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

	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
		{
			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.", false);
			if (flags[kFLAGS.CODEX_ENTRY_FETISHFOLLOWERS] <= 0) {
				flags[kFLAGS.CODEX_ENTRY_FETISHFOLLOWERS] = 1;
				outputText("\n\nNew codex entry unlocked: Followers of the Fetish!")
			}
			//next button, go to zealot fight
			startCombat(new FetishZealot());
			spriteSelect(20);
		}

//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.", false);
			startCombat(new FetishZealot());
			spriteSelect(20);
		}

//Raping the player
		public function zealotLossRape():void
		{
			if (doSFWloss()) return; //No rape in SFW mode.
			clearOutput();
			var broseph:String = 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", false);
			//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", false);

			//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.  ", false);
			//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.  ", false);
			}
			//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.  ", false);
			}
			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.  ", false);
			//same as before
			if (broseph == "dude") {
				outputText("He starts to look up, but then his gazes fixes directly on your ", false);
				if (player.cockTotal() > 0) {
					outputText(player.multiCockDescriptLight() + ".  You feel yourself grow hard ", false);
					if (player.hasVagina()) {
						outputText("and wet ", false);
					}
					outputText("under his gaze, ", false);
				}
				else outputText("bare crotch, ", false);
				outputText("and you silently wish that the dress code allowed for a small flap for covering your ", false);
				if (player.gender == 0) {
					outputText("lack of ", false);
				}
				else outputText("genitals.  ", false);
			}
			else {
				outputText("He starts to look up, but his gazes fixes on your skirt, just barely covering your ", false);
				if (player.hasVagina()) {
					outputText(player.vaginaDescript(0) + " ", false);
					if (player.cockTotal() > 0) {
						outputText("and your " + player.multiCockDescriptLight() + " ", false);
					}
				}
				else {
					outputText("bare crotch ", false);
				}
				outputText("from this angle.  You feel hot under his gaze ", false);
				if (player.cockTotal() > 0) {
					outputText(", and your " + player.multiCockDescriptLight() + " start", false);
					if (player.cockTotal() == 1) {
						outputText("s", false);
					}
					outputText(" to get hard, as your ", false);
				}
				outputText("cleft starts to moisten.  ", false);
			}
			outputText("You clear your throat nervously and he starts, finally raising his eyes to your face.\n\n", false);
			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", false);
			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.  ", false);
			//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", false);
				//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", false);
				//now if the player can have sex...
				if (player.gender != 0) {
					//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", false);
					//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.  ", false);
					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.  ", false);
					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", false);
					//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.  ", false);
					//just one cock
					if (player.totalCocks() == 1) {
						outputText("You piston your hands on your " + player.cockDescript(0) + ", ", false);
					}
					//nope two
					else if (player.totalCocks() == 2) {
						outputText("With one hand on each of your " + player.multiCockDescriptLight() + ", you piston them like mad, ", false);
					}
					//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, ", false);
					}
					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", false);
				}
			}
			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", false);
				//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", false);
				if (player.gender != 0) {
					//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", false);
					//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", false);
					//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 ", false);
					if (player.balls > 0) {
						outputText("and move your " + player.ballsDescriptLight() + " out of the way ", false);
					}
					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.  ", false);
					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.  ", false);
					}
					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", false);
					//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.  ", false);
					if (player.cockTotal() > 0) {
						outputText("Your " + player.multiCockDescriptLight() + " spasms and covers you with a liberal amount of your own fluids.  ", false);
					}
					outputText("After a moment, your student pulls out of you and helps you back up.\n\n", false);
				}
			}
			//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", false);
			}
			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", false);
			}
			//After any zealot rape
			//Reduce intelligence, set lust to zero, then add some lust based on libido and corruption
			player.orgasm();
			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...", false);
				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.", false);
			}
			//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.", false);
			}
			//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.", false);
			}
			outputText("  The ordeal has also left you with a slightly dulled mind, and some of the desire you felt still lingers.", false);
			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.", false);
			//Defeated by lust
			else outputText("The zealot quivers for a moment before collapsing, his desires becoming too great for even him to control.", false);
			if (player.lust >= 33 && player.gender > 0 && flags[kFLAGS.SFW_MODE] <= 0) {
				outputText("\n\nDo you want to take advantage of his vulnerable state to sate your lusts?", false);
				var bikiniTits:Function = null;
				if (player.hasVagina() && player.biggestTitSize() >= 4 && player.armorName == "lusty maiden's armor") bikiniTits = createCallBackFunction2((player.armor as LustyMaidensArmor).lustyMaidenPaizuri,player,monster);
				simpleChoices("Yes", zealotWinRape, "", null, "", null, "B.Titfuck", bikiniTits, "Leave", combat.cleanupAfterCombat);
			}
			else combat.cleanupAfterCombat();
		}

//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", false);
			//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.\" ", false);
				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", false);
				else outputText("You chuckle at him, he accepts his punishment?  Oh, you are going to enjoy this so much.\n\n", false);
				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", false);
				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", false);
				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", false);
			}
			//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.\" ", false);
				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", false);
				else outputText("You chuckle at him, he accepts his punishment?  Oh, you are going to enjoy this so much.\n\n", false);
				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", false);
				outputText("With a laugh, you impale yourself on his cock and despite how ", false);
				if (player.vaginas[0].vaginalLooseness < VAGINA_LOOSENESS_LOOSE) outputText("tight", false);
				else outputText("loose", false);
				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", false);
				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.  ", false);
				player.cuntChange(monster.cockArea(0), true);
			}
			player.orgasm();
			combat.cleanupAfterCombat();
		}
	}
}


code:
package classes.Scenes.Areas.Lake
{
	import classes.*;
	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() + ".]
		 */

//[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);
			if (findPerk(PerkLib.Acid) >= 0) outputText("Her body quivering from your flames, the goo-girl ", false);
			else outputText("The slime holds its hands up and they morph into a replica of your " + player.weaponName + ".  Happily, she swings at you", false);
			//Determine if dodged!
			if (player.spe - spe > 0 && int(Math.random() * (((player.spe - spe) / 4) + 80)) > 80) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you dodge her attack.", false);
				else outputText(", missing as you dodge aside.", false);
				return;
			}
			//Determine if evaded
			if (short != "Kiha" && player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but you evade her attack.", false);
				else outputText(", but you evade the clumsy attack.", false);
				return;
			}
			//("Misdirection"
			if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 10 && player.armorName == "red, high-society bodysuit") {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you.  You misdirect her, avoiding the hit.", false);
				else outputText(", missing as you misdirect her attentions.", false);
				return;
			}
			//Determine if cat'ed
			if (player.findPerk(PerkLib.Flexibility) >= 0 && rand(100) < 6) {
				if (findPerk(PerkLib.Acid) >= 0) outputText("tries to slap you, but misses due to your cat-like evasion.", false);
				else outputText(", missing due to your cat-like evasion.", false);
				return;
			}
			//Determine damage - str modified by enemy toughness!
			if (findPerk(PerkLib.Acid) >= 0) damage = int((str + 10 + weaponAttack) - rand(player.tou) - player.armorDef);
			else damage = int((str + weaponAttack) - rand(player.tou) - player.armorDef);

			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 + ". ", false);
					else outputText("tries to slap you with an acid-loaded hand, but it splatters off you ineffectually. ", false);
				}
				else {
					//Due to toughness or amor...
					if (rand(player.armorDef + player.tou) < player.armorDef) outputText(", her attack slapping fruitlessly against your " + player.armorName + ". ", false);
					else outputText(", her attack splattering ineffectually against you. ", false);
				}
			}
			//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! ", false);
					if (player.findStatusEffect(StatusEffects.AcidSlap) < 0) 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. ", false);
			}
			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. ", false);
					else outputText("\n" + capitalA + short + " brush against your exposed skin and jerk back in surprise, coloring slightly from seeing so much of you revealed. ", false);
					lust += 5 * lustVuln;
				}
			}
			if (damage > 0) player.takeDamage(damage, true);
			statScreenRefresh();
			outputText("\n", false);
			combatRoundOver();
		}

//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.", false);
			game.dynStats("lus", 3 + rand(3) + player.sens / 10);
			combatRoundOver();
		}

//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. ", false);
			var damage:Number = 1;
			player.takeDamage(damage, true);
			game.dynStats("lus", 5 + rand(3) + player.sens / 10);
			combatRoundOver();
		}

//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 " + skinTone + " slime slide up your nostrils and through your lips, filling your lungs with the girl's muck. You begin suffocating!", false);
			if (player.findStatusEffect(StatusEffects.GooBind) < 0) player.createStatusEffect(StatusEffects.GooBind, 0, 0, 0, 0);
			combatRoundOver();
		}

		override protected function performCombatAction():void
		{
			//1/3 chance of base attack + bonus if in acid mode
			if ((findPerk(PerkLib.Acid) >= 0 && rand(3) == 0) || rand(3) == 0)
				gooGalAttack();
			else if (rand(5) == 0) gooEngulph();
			else if (rand(3) == 0) gooPlay();
			else gooThrow();
		}

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

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):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 (lust <= 99) {
				if (lustDelta <= 0) outputText("\nThe goo-girl looks confused by your actions, as if she's trying to understand what you're doing.", false);
				else if (lustDelta < 13) outputText("\nThe curious goo has begun stroking herself openly, trying to understand the meaning of your actions by imitating you.", false);
				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.", false);
			}
			else outputText("\nIt appears the goo-girl has gotten lost in her mimicry, squeezing her breasts and jilling her shiny " + skinTone + " clit, her desire to investigate you forgotten.", false);
			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.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 = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_SLIME_DROOLING;
			this.createStatusEffect(StatusEffects.BonusACapacity,9001,0,0,0);
			this.tallness = rand(8) + 70;
			this.hipRating = HIP_RATING_AMPLE;
			this.buttRating = BUTT_RATING_LARGE;
			this.lowerBody = LOWER_BODY_TYPE_GOO;
			var tone:String = randomChoice("blue", "purple", "crystal");
			this.skinTone = tone;
			this.skinType = SKIN_TYPE_GOO;
			//this.skinDesc = Appearance.Appearance.DEFAULT_SKIN_DESCS[SKIN_TYPE_GOO];
			this.skinAdj = "goopey";
			this.hairColor = tone;
			this.hairLength = 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.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 skinTone;
		}

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

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

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

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

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

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

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

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

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

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

}

license: unknown


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

	public class GreenSlime extends Monster
	{

		override public function defeated(hpVictory:Boolean):void
		{
			outputText("You smile in satisfaction as the " + short + " collapses, unable to continue fighting.", true);
			//Boobfeed.
			if (player.findStatusEffect(StatusEffects.Feeder) >= 0 && flags[kFLAGS.SFW_MODE] <= 0) {
				//Eligable to rape
				if (player.lust >= 33 && player.gender > 0) {
					outputText("\n\nYou're horny enough to try and rape it, though you'd rather see how much milk you can squirt into it.  What do you do?", false);
					game.simpleChoices("B.Feed",game.lake.greenSlimeScene.rapeOozeWithMilk,"Rape",game.lake.greenSlimeScene.slimeVictoryRape,"",null,"",null,"Leave",game.combat.cleanupAfterCombat);
				}
				//Rapes not on the table.
				else {
					outputText("\n\nYour nipples ache with the desire to forcibly breastfeed the gelatinous beast.  Do you?", false);
					game.doYesNo(game.lake.greenSlimeScene.rapeOozeWithMilk,game.combat.cleanupAfterCombat);
				}
			}
			//Not a breastfeeder
			else if (player.lust >= 33 && player.gender > 0 && flags[kFLAGS.SFW_MODE] <= 0) {
				outputText("  Sadly you realize your own needs have not been met.  Of course, you could always play with the poor thing... Do you rape it?", false);
				game.doYesNo(game.lake.greenSlimeScene.slimeVictoryRape, game.combat.cleanupAfterCombat);
			}
			else game.combat.cleanupAfterCombat();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):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.");
			game.dynStats("lus", player.lib / 10 + 8);
			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);
		}

		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.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 = ANAL_LOOSENESS_STRETCHED;
			this.ass.analWetness = ANAL_WETNESS_SLIME_DROOLING;
			this.tallness = rand(8) + 80;
			this.hipRating = HIP_RATING_AMPLE;
			this.buttRating = BUTT_RATING_LARGE;
			this.lowerBody = LOWER_BODY_TYPE_GOO;
			this.skinTone = "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();
		}

	}

}