code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;

	public class EllyScene extends BaseContent
	{

		public function EllyScene()
		{
		}

	}

}

license: unknown


code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;

	public class PrisonCaptor extends BaseContent
	{
		public var roomEventOverride:Array = [false, true, true, false, false];

		public function PrisonCaptor() {}

		public function get captorTitle():String {
			return "Mistress";
		}

		public function get captorName():String {
			return "Elly";
		}

		public function get captorPronoun1():String {
			return "she";
		}
		public function get captorPronoun2():String {
			return "her";
		}
		public function get captorPronoun3():String {
			return "her";
		}

		public function get submitFuckFunc():Function {
			return prison.prisonCaptorSubmitFuck;
		}
		public function get resistFuckFunc():Function {
			return prison.prisonCaptorResistFuck;
		}

		/*public function prisonLoadCaptor(newPrisonTrainerID:String = "default") : void
		{
			prisonTrainerID = newPrisonTrainerID;
			prisonCaptor = new prisonTrainer();
			switch(newPrisonTrainerID)
			{
				case "test":
					captorTitle = "Master";
					captorName = "Testeroo";
					captorPronoun1 = "he";
					captorPronoun2 = "him";
					captorPronoun3 = "his";
					break;
				case "default":
			}
			prisonCaptor.updateNextRestraintCheckEvent(model.time.hours, model.time.days,rand(24));
			prisonCaptor.updateNextFeedingEvent(model.time.hours, model.time.days,rand(8));
		}*/

		public function prisonCaptorScratch(valueNum:Number) : Number
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScratch) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScratch,0,0,0,0);
			}
			return player["statusEffectv" + String(valueNum)](StatusEffects.PrisonCaptorEllyScratch);
		}

		public function prisonCaptorScratchSet(valueNum:Number, newVal:Number) : void
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScratch) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScratch,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScratch,valueNum,newVal);
		}

		public function prisonCaptorScratchChange(valueNum:Number, changeVal:Number) : void
		{
			var newVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScratch) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScratch,0,0,0,0);
			}
			newVal = player["statusEffectv" + String(valueNum)](StatusEffects.PrisonCaptorEllyScratch) + changeVal;
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScratch, valueNum, newVal);
		}

		public function selectPunishmentEvent(lightChance:int = 0):void {
			var lightOrHeavy:int = rand(100);
			var chooser:int = rand(6);
			if (lightOrHeavy < lightChance) { //Light
				if (chooser > 0) prison.prisonCaptorPunishmentRestrain();
				//else if (chooser == 4) prison.billieScene.prisonCaptorBilliePunishmentFuck();
				else prison.punishments.prisonCaptorPunishmentBJTrainer();
			}
			else { //Heavy
				if (chooser >= 2) prison.punishments.prisonCaptorPunishmentConfinement();
				else prison.punishments.prisonCaptorPunishmentStockades();
			}
		}

		/*public function restraintDescriptionsV1():Boolean {
			if (player.statusEffectv1(StatusEffects.PrisonRestraints) == 1) {
				return true;
			}
			else return false;
		}
		public function restraintDescriptionsV2():Boolean {
			if (player.statusEffectv2(StatusEffects.PrisonRestraints) == 1) {
				outputText("Your legs are fettered and chained securely to the wall.");
				return true;
			}
			else if (player.statusEffectv2(StatusEffects.PrisonRestraints) >= 2) {
				outputText("You are hogtied and chained to the wall. You find this demoralizing and fatiguing.");
				return true;
			}
			else return false;
		}
		public function restraintDescriptionsV3():Boolean {
			if (player.statusEffectv3(StatusEffects.PrisonRestraints) > 0) {
				outputText("Your arms are bound behind your back.");
				return true;
			}
			else return false;
		}
		public function restraintDescriptionsV4():Boolean {
			if (player.statusEffectv4(StatusEffects.PrisonRestraints) > 0) {
				return true;
			}
			else return false;
		}*/

		public function updateNextWaitRandomEvent(hours:int, days:int):void {

		}

		public function updateNextRoomRandomEvent(hours:int, days:int):void {

		}

		public function updateNextFeedingEvent(hours:int, days:int):Boolean {
			return prison.trainingFeed.prisonCaptorFeedingEvent();
		}

		public function timeForWaitRandomEvent(hours:int, days:int, goal:int):Boolean {
			var timesPassed:int = model.time.totalTime;
			if (timesPassed % goal == 0) return true;
			else return false;
		}
	}

}


code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;
	import classes.internals.WeightedDrop;
	import classes.Scenes.Areas.Plains.Gnoll;
	import classes.Scenes.Areas.Plains.GnollSpearThrower;
	import classes.Scenes.Areas.Plains.Satyr;
	import classes.Scenes.Areas.Mountain.Minotaur;
	import classes.Scenes.Monsters.Goblin;
	import classes.Scenes.Monsters.Imp;

	public class PrisonGuard extends BaseContent
	{
		private var randomGuardList:Array = ["imp", "goblin", "gnoll", "gnoll spear-thrower", "minotaur", "satyr"];

		public var guardType:String;
		public var guardPronoun1:String;
		public var guardPronoun2:String;
		public var guardPronoun3:String;
		public var guardA:String;
		public var guardCaptitalA:String;
		public var guardCombatID:Monster;
		public var guardEscapeSeduceBonus:int;
		public var guardEscapeBribeBonus:int;
		public var guardEscapeSneakBonus:int;

		public function PrisonGuard() {}

		public function get guardNoiseDetectionChance():int {
			return 10;
		}

		public function prisonCaptorRandomEventAbuse():Boolean
		{
			hideMenus();
			clearOutput();
			if (flags[kFLAGS.PRISON_TRAINING_LEVEL] == 0 && player.statusEffectv1(StatusEffects.PrisonCaptorEllyStatus) <= 1)
			{
				return prison.prisonCaptorRandomEventSounds();
			}
			prisonCaptorLoadGuard(true);
			outputText("You are startled by the sound of the door opening, and quickly find yourself wishing you hadn't heard it at all. " + guardCaptitalA + " " + guardType + " guard enters the room and quickly secures the door behind " + guardPronoun2 + ", then turns towards you with the clear intent of fucking you and showing you your place.\n\n",false);
			return prisonGuardAttack();
		}

		public function prisonGuardAttack():Boolean
		{
			if (prison.prisonCanEscapeFight(false))
			{
				outputText("It occurs to you that if you were to resist you just might get the better of your guard and make good an escape. ",false);
				if (rand(100) < player.obey - (player.level + player.esteem * 0.25))
				{
					if (player.obey < 45)
					{
						outputText("However, something deep inside you tells you that this is not the right moment to make a stand. Instead you cower meekly as your guard looms over you.\n",false);
					}
					else if (player.obey < 75)
					{
						outputText("However, your conditioning gets the better of your desire for freedom and you fall to your knees submissively as the " + guardPronoun1 + " looms over you.\n",false);
						dynStats("lus", 100);
					}
					else
					{
						outputText("However, you have no desire to fight back; to the contrary, your only desire is to absorb every ounce of punishment " + guardPronoun1 + " has in mind, and you silently communicate as much by bending over and assuming the most secuctively submissive stance you can manage.\n",false);
						dynStats("lus", 100);
					}

					prison.prisonEscapeFightAutoLose();
				}
				else
				{
					outputText("Do you make an escape attempt? " + prison.prisonWillCostDescript(15),false);
					outputText("\n",false);
					doYesNo(prisonGuardAttackFight, prisonGuardAttackSubmit);
					if (player.will >= prison.prisonWillCost(10)) {
						outputText("\nYou could tell the " + guardType + " to fuck off and leave you alone. " + prison.prisonWillCostDescript(10));
						addButton(2, "Fuck Off", giveGuardTheFinger);
					}
					return true;
				}
			}
			else
			{
				if (player.obey < 45)
				{
					outputText("Unfortunately for you,",false);
				}
				else if (player.obey < 75)
				{
					outputText("Something inside you is relieved that",false);
					dynStats("lus", 15);
				}
				else
				{
					outputText("It gives you pleasure when you realize that",false);
					dynStats("lus", 30);
				}

				outputText(" your restraints prevent you from putting up any significant fight",false);
				if (player.lust > 80)
				{
					outputText(" -- not that you'd last long in a fight with your current state of arousal anyway.  Seeing this fact written on your face, the " + guardType + " chuckles and temporarily removes your bindings.\n",false);
				}
				else
				{
					outputText(". As you struggle ineffectually, the " + guardType + " beats you senseless then temporarily removes your bindings.\n",false);
				}
				doNext(prison.prisonEscapeFightAutoLose);
				if (player.will >= prison.prisonWillCost(10)) {
					outputText("\nYou could tell the " + guardType + " to fuck off and leave you alone. " + prison.prisonWillCostDescript(10));
					addButton(2, "Fuck Off", giveGuardTheFinger);
				}
				return true;
			}
			doNext(playerMenu);
			return true;
		}

		public function prisonGuardAttackFight():void
		{
			if (player.will > prison.prisonWillCost(15))
			{
				outputText("\n\nYou steel yourself for combat, feeling a sudden rush of self confidence.",false);
				prison.changeWill(-prison.prisonWillCost(15));
				prison.prisonEscapeFightStart();
			}
			else
			{
				outputText("\n\nYou make a valiant effort to prepare for combat, but ultimately your will gives out and you collapse in front of the advancing " + guardType + ".",false);
				prison.changeEsteem(2, prison.inPrison);
				prison.prisonEscapeFightAutoLose();
			}
		}

		public function prisonGuardAttackSubmit():void
		{
			outputText("\n\n",false);
			if (player.obey < 45)
			{
				outputText("Something deep inside you tells you that this is not the right moment to make a stand. Instead you cower meekly as the " + guardType + " looms over you.\n",false);
			}
			else if (player.obey < 75)
			{
				outputText("Your conditioning gets the better of your desire for freedom and you fall to your knees submissively as the " + guardType + " looms over you.\n",false);
				dynStats("lus", 100);
			}
			else
			{
				outputText("However, you have no desire to fight back; to the contrary, your only desire is to absorb every ounce of punishment this " + guardType + " has in mind, and you silently communicate as much bending over and assuming the most secuctively submissive stance you can manage.\n",false);
				dynStats("lus", 100);
			}

			prison.changeObey(1, prison.inPrison);
			prison.prisonEscapeFightAutoLose();
		}

		public function giveGuardTheFinger():void {
			clearOutput();
			prison.changeWill(-prison.prisonWillCost(10));
			outputText("You flip the bird to the " + guardType + " to put a warning signal that you do not want " + guardPronoun2 + " to mess with you. You WANT Elly, not some random guards messing with your body.");
			outputText("\n\nThe " + guardType + " gets angry and storms off, leaving your cell and locking the cell door.");
			if (flags[kFLAGS.PRISON_DOOR_UNLOCKED] > 0) flags[kFLAGS.PRISON_DOOR_UNLOCKED] = 0;
			player.changeStatusValue(StatusEffects.PrisonRestraints, 1, 1);
			doNext(playerMenu);
		}

		public function prisonCaptorLoadGuard(randomGuard:Boolean, guardID:String = "default"):void
		{
			if (randomGuard)
			{
				var guardID:String = randomGuardList[rand(randomGuardList.length)];
			}
			switch(guardID)
			{
				case "imp":
					guardType = "imp";
					guardPronoun1 = "he";
					guardPronoun2 = "him";
					guardPronoun3 = "his";
					guardA = "an";
					guardCaptitalA = "An";
					guardCombatID = new Imp();
					guardEscapeSeduceBonus = 15;
					guardEscapeBribeBonus = 15;
					guardEscapeSneakBonus = 5;
					break;
				case "goblin":
					guardType = "goblin";
					guardPronoun1 = "she";
					guardPronoun2 = "her";
					guardPronoun3 = "her";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new Goblin();
					guardEscapeSeduceBonus = 15;
					guardEscapeBribeBonus = 15;
					guardEscapeSneakBonus = 5;
					break;
				case "gnoll":
					guardType = guardID;
					guardPronoun1 = "she";
					guardPronoun2 = "her";
					guardPronoun3 = "her";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new Gnoll();
					guardEscapeSeduceBonus = 15;
					guardEscapeBribeBonus = 20;
					guardEscapeSneakBonus = 5;
					break;
				case "gnoll spear-thrower":
					guardType = guardID;
					guardPronoun1 = "she";
					guardPronoun2 = "her";
					guardPronoun3 = "her";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new GnollSpearThrower();
					guardEscapeSeduceBonus = 15;
					guardEscapeBribeBonus = 20;
					guardEscapeSneakBonus = 5;
					break;
				case "minotaur":
					guardType = guardID;
					guardPronoun1 = "he";
					guardPronoun2 = "him";
					guardPronoun3 = "his";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new Minotaur();
					guardEscapeSeduceBonus = 20;
					guardEscapeBribeBonus = 10;
					guardEscapeSneakBonus = 15;
				case "satyr":
					guardType = guardID;
					guardPronoun1 = "he";
					guardPronoun2 = "him";
					guardPronoun3 = "his";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new Satyr();
					guardEscapeSeduceBonus = 20;
					guardEscapeBribeBonus = 10;
					guardEscapeSneakBonus = 15;
				case "default":
				default:
					guardType = guardID;
					guardPronoun1 = "he";
					guardPronoun2 = "him";
					guardPronoun3 = "his";
					guardA = "a";
					guardCaptitalA = "A";
					guardCombatID = new Minotaur();
					guardEscapeSeduceBonus = 20;
					guardEscapeBribeBonus = 10;
					guardEscapeSneakBonus = 15;
			}
			guardCombatID.drop = new WeightedDrop();
		}
	}

}


code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;

	public class PrisonLetters extends BaseContent
	{

		public function PrisonLetters() {}

		public function deliverChildWhileInPrison():Boolean {
			if (flags[kFLAGS.IN_PRISON] == 0) return false;
			if (player.vaginas.length == 0) {
				outputText("\nYou feel a terrible pressure in your groin... then an incredible pain accompanied by the rending of flesh.  You look down and behold a new vagina.\n", false);
				player.createVagina();
				player.genderCheck();
			}
			outputText("\nIt's time! You " + player.clothedOrNakedLower("remove your [lowergarment] and ") + "sit down at one of the corners and spread your [legs]. A sudden gush of fluids erupt from your [pussy] - your water just broke. You grunt painfully as you feel wriggling and squirming inside your belly, muscle contractions forcing it downwards. ");
			//Various scenes
			if (player.pregnancyType == PregnancyStore.PREGNANCY_MARBLE) {
				outputText("\n\nEventually, a newborn cow-girl comes out of your womb and into your cell; Marble would love to see them. You call for Mistress Elly and she rushes to your cell to see the newborn sirens. \"Don't worry. I promise your newborn cow-girl will be delivered to Marble. I've ordered two imps to carry her,\" she says. Two imp guards come into your cell to take away the newborn cow-girl. Hopefully you'll receive a letter.");
				outputText("\n\nSome time passes...");
				letterFromMarbleAfterGivingBirth();
				flags[kFLAGS.MINERVA_CHILDREN] += 2;
			}
			if (player.pregnancyType == PregnancyStore.PREGNANCY_MINERVA) {
				outputText("\n\nEventually, the twin sirens come out of your womb and into your cell; Minerva would love to see them. You call for Mistress Elly and she rushes to your cell to see the newborn sirens. \"Don't worry. I promise your newborn sirens will be delivered to Minerva. I've ordered two imps to carry them,\" she says. Two imp guards come into your cell to take away the siren twins. Hopefully you'll receive a letter.");
				outputText("\n\nSome time passes...");
				letterFromMinervaAfterGivingBirth();
				flags[kFLAGS.MINERVA_CHILDREN] += 2;
			}
			if (player.pregnancyType == PregnancyStore.PREGNANCY_BEHEMOTH) {
				outputText("\n\nEventually, the purple creature comes out of your womb and into your cell; Behemoth would love to see him. You call for Mistress Elly and she rushes to your cell to see the newborn sirens. \"Don't worry. I promise your newborn behemoth will be delivered to Behemoth. I've ordered two imps to carry him,\" she says. Two imp guards come into your cell to take away the newborn behemoth. Hopefully you'll receive a letter.");
				outputText("\n\nSome time passes...");
				letterFromMinervaAfterGivingBirth();
				flags[kFLAGS.BEHEMOTH_CHILDREN]++;
				if (flags[kFLAGS.BEHEMOTH_CHILDREN] == 1) flags[kFLAGS.BEHEMOTH_CHILD_1_BIRTH_DAY] = model.time.days;
				if (flags[kFLAGS.BEHEMOTH_CHILDREN] == 2) flags[kFLAGS.BEHEMOTH_CHILD_2_BIRTH_DAY] = model.time.days;
				if (flags[kFLAGS.BEHEMOTH_CHILDREN] == 3) flags[kFLAGS.BEHEMOTH_CHILD_3_BIRTH_DAY] = model.time.days;
			}
			//Post-birthing
			if (player.hipRating < 10) {
				player.hipRating++;
				outputText("\n\nAfter the birth your " + player.armorName + " fits a bit more snugly about your " + player.hipDescript() + ".", false);
			}
			player.knockUpForce(); //CLEAR!
			return true;
		}

		public function initialMessage(npcName:String):void {
			outputText("\nMistress Elly opens the door and hands you the letter. \"This is for you, slave. It's from " + npcName + ",\" she says as she walks out, leaving you in your cell with the letter. You open the letter and read. \n\n");
		}

		//------------
		// HELIA
		//------------
		//Helia gives birth
		public function letterFromHelia1():void {
			var randomNames:Array = ["Helara", "Helspawn", "Jayne", "Hesper", "Syn", "Chara"];
			var name:String = randomNames[rand(randomNames.length)];
			initialMessage("Helia");
			outputText("\"Hey lover! Sorry you have to miss out on me giving birth to my daughter. She's beautiful. I've named her \"" + name + "\". I've drawn something to describe what she looks like. I would save you but I can't find the prison.  -Helia\"");
			if (flags[kFLAGS.HELSPAWN_DADDY] == 0) outputText("\n\nLooking at the drawing, you notice that " + name + " has mostly the traits of Helia except that she has your eye colour.");
			else if (flags[kFLAGS.HELSPAWN_DADDY] == 1) outputText("\n\nLooking at the drawing, you notice that " + name + " isn't quite a salamander, though. The little girl has the same shape as her mothers, a body covered in leather scales and a brightly-flaming tail... but her scales are a midnight black, the same color as a spider's chitin.");
			else if (flags[kFLAGS.HELSPAWN_DADDY] == 2) outputText("\n\nLooking at the drawing, you notice that " + name + " isn't quite a salamander, though. The little girl looks mostly like her mother, with a full body of red scales and pale flesh, and a brightly flaming tail; but atop her head, rather than finned reptilian ears are a pair of perky, puppy-dog like ears.");
			outputText(" You chuckle and scratch your head. If only you've went there to witness the birth. Oh well!");
			flags[kFLAGS.HELSPAWN_NAME] = name;
			kGAMECLASS.helSpawnScene.helSpawnsSetup();
		}
		//No choices for you!
		public function noControlOverHelspawn():void {
			flags[kFLAGS.HELSPAWN_PERSONALITY] += 10;
			flags[kFLAGS.HELSPAWN_FUCK_INTERRUPTUS] = 1;
			outputText("\nYou have a feeling that " + (flags[kFLAGS.HELSPAWN_DADDY] == 0 ? "your" : "Hel's") + " daughter is making a slut out of herself. She is beyond your control as long as you're confined in this prison.\n");
		}

		//------------
		// IZMA
		//------------
		public function letterFromIzma():void {
			initialMessage("Izma");
			outputText("\"Hello, my Alpha. Today I gave birth to a ");
			if (rand(100) <= 59) {
				outputText("shark-girl", false);
				flags[kFLAGS.IZMA_CHILDREN_SHARKGIRLS]++;
			}
			else {
				outputText("tigershark", false);
				flags[kFLAGS.IZMA_CHILDREN_TIGERSHARKS]++;
			}
			outputText("daughter and you should come. She has already grew up quite a bit.  -Izma.\"");
		}

		//------------
		// KIHA
		//------------
		//Kiha gives birth to egg.
		public function letterFromKiha1(eggCounter:int):void {
			initialMessage("Kiha");
			//Increment children with Kiha.
			var maleCount:int = 0;
			var femaleCount:int = 0;
			var hermCount:int = 0;
			var genderChooser:int;
			var childList:Array = [];
			for (var i:int = 0; i < eggCounter; i++) {
				genderChooser = rand(100);
				if (genderChooser < 20) maleCount++;
				else if (genderChooser < 40) femaleCount++;
				else hermCount++;
			}
			if (maleCount > 0) {
				childList.push(num2Text(maleCount) + " " + (maleCount > 1 ? "boys" : "boy"));
				flags[kFLAGS.KIHA_CHILDREN_BOYS] += maleCount;
			}
			if (femaleCount > 0) {
				childList.push(num2Text(femaleCount) + " " + (femaleCount > 1 ? "girls" : "girl"));
				flags[kFLAGS.KIHA_CHILDREN_GIRLS] += femaleCount;
			}
			if (hermCount > 0) {
				childList.push(num2Text(hermCount) + " " + (hermCount > 1 ? "hermaphrodites" : "hermaphrodite"));
				flags[kFLAGS.KIHA_CHILDREN_HERMS] += hermCount;
			}
			outputText("\"How are you doing, Doofus? I laid a clutch of " + num2Text(eggCounter) + " fertilized eggs today and I wanted you to see me but you couldn't. The eggs hatched quickly and there are " + formatStringArray(childList) + ". I'm going to train them when they grow a bit more. I could have saved you but I don't know where you're imprisoned.  -Kiha\"");
		}
		//Kiha's egg hatches. (Not used anymore due to overhaul)
		/*public function letterFromKiha2():void {
			initialMessage("Kiha");
			outputText("\"How are you doing, Doofus? The egg hatched and I wanted you to see but you couldn't. ");
			var genderChooser:int = rand(100);
			//Male!
			if (genderChooser < 40) {
				outputText("It's a beautiful boy ");
				flags[kFLAGS.KIHA_CHILD_LATEST_GENDER] = 1;
				flags[kFLAGS.KIHA_CHILDREN_BOYS]++;
			}
			//Female!
			else if (genderChooser < 80) {
				outputText("It's a beautiful girl ");
				flags[kFLAGS.KIHA_CHILD_LATEST_GENDER] = 2;
				flags[kFLAGS.KIHA_CHILDREN_GIRLS]++;
			}
			//Hermaphrodite!
			else {
				outputText("It's a beautiful hermaphrodite ");
				flags[kFLAGS.KIHA_CHILD_LATEST_GENDER] = 3;
				flags[kFLAGS.KIHA_CHILDREN_HERMS]++;
			}
			outputText(" and " + (genderChooser < 40 ? "he" : "she") + " will definitely make a great warrior. I hope you'll come someday.  -Kiha\"");
		}*/
		//Kiha tells story.
		public function letterFromKiha3():void {
			initialMessage("Kiha");
			outputText("\"How are you doing, Doofus? I told my kids about the story and they were excited. They miss you and they want to see you. Please come back. You're my one and only Idiot.  -Kiha\"");
		}
		//Kiha's child grows up.
		public function letterFromKiha4():void {
			initialMessage("Kiha");
			outputText("\"How are you doing, Doofus? My children is quite the warrior now. I've taught them my fighting techniques and they put on quite the flame show! It's too bad you didn't get to see them. They miss you and they wants to see you. Please come back. You're my one and only Idiot.  -Kiha\"");
		}

		//------------
		// MARBLE
		//------------
		public function letterFromMarble():void {
			initialMessage("Marble");
			var boyOrGirl:Boolean; //true for boy, false for girl.
			if (flags[kFLAGS.MARBLE_PURIFIED] > 0 && rand(2) == 0) {
				flags[kFLAGS.MARBLE_BOYS]++;
				boyOrGirl = true;
			}
			else {
				boyOrGirl = false;
			}
			outputText("\"Sweetie, I'm sorry you could not come here. I've gave birth recently and I'd love you to come and see our new " + (boyOrGirl ? "son" : "daughter") + ". I don't know where the prison is so you're on your own until you can escape. I'm really sorry, sweetie.  -Marble\"");
			flags[kFLAGS.MARBLE_KIDS]++;
		}

		public function letterFromMarbleAfterGivingBirth():void {
			initialMessage("Marble");
			var boyOrGirl:Boolean; //true for boy, false for girl.
			if (flags[kFLAGS.MARBLE_PURIFIED] > 0 && rand(2) == 0) {
				flags[kFLAGS.MARBLE_BOYS]++;
				boyOrGirl = true;
			}
			else {
				boyOrGirl = false;
			}
			outputText("\"Sweetie, thank you for caring for my " + (boyOrGirl ? "son" : "daughter") + ". I don't know where the prison is so you're on your own until you can escape. I'm really sorry, sweetie.  -Marble\"");
		}
		//------------
		// SOPHIE
		//------------

		//------------
		// URTA
		//------------

		//------------
		// BEHEMOTH
		//------------
		public function letterFromBehemothAfterGivingBirth():void {
			initialMessage("Behemoth");
			outputText("\"Thank you " + player.mf("dude", "chick") + ". I have a new son now and he's helping to keep me company. I could save you but I don't know where the prison is. It's awfully hidden even though I've explored Mareth.  -Behemoth\"");
		}

		//------------
		// MINERVA
		//------------
		public function letterFromMinerva():void {
			initialMessage("Minerva");
			outputText("\"Darling, I gave birth to a twin today. They're little and beautiful! They want to see you. Sorry I can't come to save you as I have to look after my daughters.  -Minerva\"");
		}

		public function letterFromMinervaAfterGivingBirth():void {
			initialMessage("Minerva");
			outputText("\"Thank you darling for taking good care. I feel like a mother again even though I got you pregnant. I would love to come and save you but I have daughters to look after. They want to see you. Sorry I can't come.  -Minerva\"");
		}
	}

}


code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.Scenes.Monsters.Imp;

	public class Scruffy extends Imp
	{
		override public function defeated(hpVictory:Boolean):void
		{
			game.prison.scruffyScene.prisonCaptorRandomEventJizzJanitorBeatenUp();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			game.prison.scruffyScene.prisonCaptorRandomEventJizzJanitorLoss();
		}

		public function Scruffy()
		{
			this.a = "";
			this.short = "Scruffy";
			this.imageName = "scruffy";
			this.long = "Scruffy is a skinny imp. He has the typical features of an imp: red skin, curved horns, bat-like wings, and spaded tail. He's wearing a janitor's scrub top with a nametag that reads \"Scruffy\" and he's naked from the waist down, his large cock flopping freely. He's wielding his mop as a weapon.";
			// this.plural = false;
			this.createCock(11, 2.5, CockTypesEnum.DEMON);
			this.balls = 2;
			this.ballSize = 1;
			createBreastRow(0);
			this.ass.analLooseness = ANAL_LOOSENESS_STRETCHED;
			this.ass.analWetness = ANAL_WETNESS_NORMAL;
			this.tallness = 40;
			this.hipRating = HIP_RATING_BOYISH;
			this.buttRating = BUTT_RATING_TIGHT;
			this.skinTone = "red";
			this.hairColor = "black";
			this.hairLength = 5;
			initStrTouSpeInte(40, 35, 25, 28);
			initLibSensCor(45, 45, 90);
			this.weaponName = "mop";
			this.weaponVerb = "thwack";
			this.weaponAttack = 6;
			this.armorName = "leathery skin";
			this.lust = 40;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 7;
			this.gems = rand(5) + 25;
			this.drop = NO_DROP;
			this.special1 = lustMagicAttack;
			this.wingType = WING_TYPE_IMP;
			checkMonster();
		}

	}

}


code:
//Scruffy the Imp Janitor
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;

	public class ScruffyScene extends BaseContent
	{

		public function ScruffyScene()
		{

		}

		public function prisonCaptorScruffyStatusText():void
		{
			var scruffyMet:* = undefined;
			var happiness:* = prisonCaptorScruffyHappiness();
			scruffyMet = prisonCaptorScruffyMet();
			scruffyMet < 1;
		}

		public function prisonCaptorScruffyOptedOut():Boolean
		{
			var testVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			testVal = player.statusEffectv1(StatusEffects.PrisonCaptorEllyScruffy);
			if (testVal < 0)
			{
				return true;
			}
			return false;
		}

		public function prisonCaptorScruffyMet():Number
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			return player.statusEffectv1(StatusEffects.PrisonCaptorEllyScruffy);
		}

		public function prisonCaptorScruffyMetSet(newVal:Number):void
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,1,newVal);
		}

		public function prisonCaptorScruffyMetChange(changeVal:Number):void
		{
			var newVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			newVal = player.statusEffectv1(StatusEffects.PrisonCaptorEllyScruffy) + changeVal;
			if (newVal < 0)
			{
				newVal = 0;
			}
			if (newVal > 100)
			{
				newVal = 100;
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,1,newVal);
		}

		public function prisonCaptorScruffyHappiness():Number
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			return player.statusEffectv2(StatusEffects.PrisonCaptorEllyScruffy);
		}

		public function prisonCaptorScruffyHappinessSet(newVal:Number):void
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,2,newVal);
		}

		public function prisonCaptorScruffyHappinessChange(changeVal:Number):void
		{
			var newVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			newVal = player.statusEffectv2(StatusEffects.PrisonCaptorEllyScruffy) + changeVal;
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,2,newVal);
		}

		public function prisonCaptorScruffyEvent():Number
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			return player.statusEffectv3(StatusEffects.PrisonCaptorEllyScruffy);
		}

		public function prisonCaptorScruffyEventSet(newVal:Number):void
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,3,newVal);
		}

		public function prisonCaptorScruffyEventChange(changeVal:Number):void
		{
			var newVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			newVal = player.statusEffectv3(StatusEffects.PrisonCaptorEllyScruffy) + changeVal;
			if (newVal < 0)
			{
				newVal = 0;
			}
			if (newVal > 100)
			{
				newVal = 100;
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,3,newVal);
		}

		public function prisonCaptorScruffyScratch():Number
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			return player.statusEffectv4(StatusEffects.PrisonCaptorEllyScruffy);
		}

		public function prisonCaptorScruffyScratchSet(newVal:Number):void
		{
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,4,newVal);
		}

		public function prisonCaptorScruffyScratchChange(changeVal:Number):void
		{
			var newVal:* = undefined;
			if (player.findStatusEffect(StatusEffects.PrisonCaptorEllyScruffy) < 0)
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyScruffy,0,0,0,0);
			}
			newVal = player.statusEffectv4(StatusEffects.PrisonCaptorEllyScruffy) + changeVal;
			if (newVal < 0)
			{
				newVal = 0;
			}
			if (newVal > 100)
			{
				newVal = 100;
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyScruffy,4,newVal);
		}

		public function prisonCaptorRandomEventJizzJanitor():Boolean
		{
			hideMenus();
			clearOutput();
			var newCleanliness:int = 0;
			var refuse:Function = prisonCaptorRandomEventJizzJanitorRefuse;
			var accept:Function = prisonCaptorRandomEventJizzJanitorAccept;
			var reject:Function = prisonCaptorRandomEventJizzJanitorReject;
			var perform:Function = prisonCaptorRandomEventJizzJanitorPerform;
			outputText("You look up as the door squeaks open and see a skinny imp enter the room with a mop and a bucket.  He's wearing a janitor's scrub top with a nametag that reads \"Scruffy\" but you doubt it originally belonged to him since it is about five sizes too large and he is very noticeably not wearing the matching scrub pants that should go with it. He flatly ignores you as he begins the unenviable task of cleaning your cell, but after a few minutes of lackadaisical cleaning he turns and seems to notice your presence for the first time. ",false);
			outputText("\n\n\"Well, aren't you a tasty little thing?  The " + prison.prisonCaptor.captorTitle + " sure knows how to pick em'.\" he growls, looking you up and down appraisingly. You notice his not insubstantial cock begin to stir and start to get a sinking feeling.\n\n",false);
			outputText("\"Anyway, don't ever let me hear you complainin' about " + prison.prisonCaptor.captorPronoun2 + ", 'cause ",false);
			if (flags[kFLAGS.PRISON_DIRT_ENABLED] > 0)
			{
				outputText(prison.prisonCaptor.captorPronoun1 + "'s givin' you a break today sending me in to help clean out this pigsty of a cell that you seem to be content to live in.",false);
				newCleanliness = player.statusEffectv2(StatusEffects.PrisonCaptorEllyStatus) - 50;
				if (newCleanliness < 0)
				{
					newCleanliness = 0;
				}
				player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,2,newCleanliness);
			}
			else
			{
				outputText(prison.prisonCaptor.captorPronoun1 + " makes most of the cum-dumpsters in training clean up their own filth. Clearly " + prison.prisonCaptor.captorPronoun1 + " thinks you're something special though, sending me in to do your dirty work for you. ",false);
			}
			outputText("Seriously, I'll never understand the way you ungrateful little sluts disrespect " + prison.prisonCaptor.captorPronoun2 + ".\" As he finishes the sentence he seems to drift off in a cloud of love and reverence, but he soon comes back down to earth and turns his attention back to you.",false);
			outputText("\n\n\"Speaking of respect and gratitude,\" he says with a lecherous grin,\"",false);
			if (player.hunger < 20)
			{
				outputText("You look absolutely famished ",false);
			}
			else
			{
				outputText("I know good meals can be few and far between in this place ",false);
			}
			outputText("and I just happen to have some extra food I'd be willing to share with you if you were to show me some, ahem --\" he pauses to lewdly and intricately pantomime giving a blowjob, complete with creating a bulge in one cheek with his tongue, \"respect and gratitude for the great efforts I'm putting into making your cell a little more habitable.\"\n\n",false);
			outputText("You consider how you should respond to Scruffy's offer.\n\n",false);
			if (player.hunger <= 0 && (player.esteem < 40 || player.esteem < 60 && player.obey > 10))
			{
				outputText("\nYou are simply too hungry to turn the offer down.\n",false);
				refuse = null;
				reject = null;
			}
			else
			{
				outputText("You could politely refuse " + prison.prisonWillCostDescript(5),false);
				if (player.esteem < 20 || player.esteem < 40 && player.obey > 25)
				{
					outputText(" but you don't think you could manage any stronger a rebuke to someone trying to show you kindness due to your your obvious powerlessness and insignificance.",false);
					reject = null;
				}
				else
				{
					outputText(" or you could angrily reject the offer " + prison.prisonWillCostDescript(15) + ".",false);
				}
			}
			if (player.hunger > 0 && (player.esteem > 90 || player.esteem > 70 && player.obey < 10))
			{
				outputText("\n\nYou have too much dignity to accept, regardless of the fact that it seems like his intention was to help you, even if it was in his own perverted way.\n",false);
				accept = null;
				perform = null;
			}
			else
			{
				outputText("\n\nYou could accept Scruffy's charity, ",false);
				if (player.esteem > 60 || player.esteem > 40 && player.obey < 25)
				{
					outputText("but you have too much dignity to really put your heart into it.\n",false);
					perform = null;
				}
				else
				{
					outputText("or you could really show your gratitude and perform above and beyond what he's asked for. \n",false);
				}
			}
			menu();
			addButton(0, "Refuse", refuse);
			addButton(1, "Accept", accept);
			addButton(5, "Reject", reject);
			addButton(6, "Perform", perform);
			if (prisonCaptorScruffyScratch() >= 2) addButton(7, "FIGHT!", fightScruffy);
			return true;
		}

		public function prisonCaptorRandomEventJizzJanitorRefuse():void
		{
			clearOutput();
			if (player.will < prison.prisonWillCost(5))
			{
				outputText("While you'd like to preserve a bit of your dignity and politely turn down the offer, you simply don't have the willpower to resist Scruffy's advances right now. ",false);
				if (rand(player.esteem * 3) > player.obey + player.lust + player.cor)
				{
					prison.changeEsteem(2,prison.inPrison);
					outputText("\n\n",false);
					prisonCaptorRandomEventJizzJanitorAccept();
				}
				else
				{
					outputText(" In fact, while a second ago you thought you had the desire to resist him, now the thought of debasing yourself for his approval and the sight of his girthy dick are filling you with an overwheling desire to do the exact opposite and show him just how grateful you are for his kindness.\n\n",false);
					prisonCaptorRandomEventJizzJanitorPerform();
				}
			}
			else
			{
				outputText("You realize that this was probably the closest thing to a friendly gesture you are likely to encounter in this place, so you ",false);
				if (player.statusEffectv4(StatusEffects.PrisonRestraints) == 0)
				{
					outputText("politely but firmly turn down the offer. ",false);
				}
				else
				{
					outputText("assume a friendly posture and communicate your refusal by shaking your head. ",false);
				}
				outputText("\n\nBefore you can even begin to react, you see his face turn to a mask of rage as he hammers you over the head with the bucket he was so recently using to clean up your filth. You momentarily black out, and when you come to you realize that he has bound your hands behind your back and used them to hang you by a chain to an eyelet in the ceiling. Your body is suspended in a fashion such that your back is arched suggestively, your head is hanging at knee height, and your feet are only touching the ground with the tips of your toes. [if (isBiped = true) \"What's more, he has used his mop as a makeshift spreader bar to hold your ankles as far apart as they will go leaving your [vagOrAss] completely exposed between the parted cheeks of your [ass]\"][if (isBiped = false) \"With your [legs] hanging as they are your [vagOrAss] is completely exposed between the cheeks of your [ass]\"].",false);
				outputText("\n\n(Placeholder) Scruffy then fucks your [vagOrAss], makes you lick up the cum pool to 'feed' you, leaves you hogtied with a stern warning to improve your behavior.",false);
				if (player.hasVagina())
				{
					player.cuntChange(20, true, true, false);
					player.knockUp(PregnancyStore.PREGNANCY_IMP, PregnancyStore.INCUBATION_IMP);
				}
				else
				{
					player.buttChange(20,true,true,false);
				}
				player.slimeFeed();
				player.changeStatusValue(StatusEffects.PrisonRestraints,2,2);
				player.changeStatusValue(StatusEffects.PrisonRestraints,3,2);
				player.changeStatusValue(StatusEffects.PrisonRestraints, 4, 0);
				player.refillHunger(10);
				prison.changeEsteem(5,prison.inPrison);
				prison.changeObey(-1,prison.inPrison);
				prison.changeWill(-prison.prisonWillCost(5));
				prisonCaptorScruffyScratchChange(1);
				doNext(playerMenu);
			}
		}

		public function prisonCaptorRandomEventJizzJanitorAccept():void
		{
			clearOutput();
			outputText("Acknowledging how true it is that a good meal is hard to come by in your current situation, you decide that it wouldn't hurt to (as the imp put it) show a bit of gratitude in exchange for some extra food, especially considering that relative to your other experiences in this place Scruffy's offer was downright good natured. ",false);
			outputText("Your mind made up, you assume a subservient posture and meeky communicate your acceptance ",true);
			if (player.statusEffectv4(StatusEffects.PrisonRestraints) == 0)
			{
				outputText("with a mumbled word. ",false);
			}
			else
			{
				outputText("by nodding your head. ",false);
			}
			outputText("\n\n(Placeholder)  Scruffy puts on/switches you to an open mouth gag because he doesn't want you biting but removes other bindings, doesn't find your performance good enough and fucks your [face]. He leaves you telling you to improve your performance, and your body via the item he gives you.",false);
			outputText("\n\n\"Well, at least you show you understand that you are only here to be used by your betters. Put some effort into it next time and maybe I'll give you a little something extra as well. Be sure to eat what I have given you, though -- it'll help make your body more pleasing to old Scruffy the next time I come around.\"",false);
			player.slimeFeed();
			player.changeStatusValue(StatusEffects.PrisonRestraints,2,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,3,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,4,4);
			prison.changeEsteem(-5,prison.inPrison);
			outputText("\n\n", false);
			inventory.takeItem(consumables.SUCMILK, camp.returnToCampUseOneHour);
		}

		public function prisonCaptorRandomEventJizzJanitorReject():void
		{
			clearOutput();
			if (player.will < prison.prisonWillCost(15))
			{
				outputText("While you'd love nothing more than to outright reject the humiliating offer, you simply don't have the willpower to resist Scruffy's advances right now. ",false);
				if (rand(player.esteem * 3) > player.obey + player.lust + player.cor)
				{
					prison.changeEsteem(3,prison.inPrison);
					outputText("\n\n",false);
					prisonCaptorRandomEventJizzJanitorAccept();
				}
				else
				{
					outputText(" In fact, while a second ago you thought you had the desire to resist him, now the thought of debasing yourself for his approval and the sight of his girthy dick are filling you with an overwheling desire to do the exact opposite and show him just how grateful you are for his kindness.\n\n",false);
					prisonCaptorRandomEventJizzJanitorPerform();
				}
			}
			else
			{
				outputText("An attempt at kindness or not, the offer is humiliating in a way you aren't willing to accept at the moment. Gathering your courage, ",false);
				if (player.statusEffectv4(StatusEffects.PrisonRestraints) == 0)
				{
					outputText("you unleash a verbal stream of pent up aggression on the scrawny imp janitor, flatly rejecting his deal. ",false);
				}
				else
				{
					outputText("you assume a defensive posture and scream your rejection of the deal through your gag. ",false);
				}
				outputText("\n\nBefore you can even begin to react, you see his face turn to a mask of rage as he hammers you over the head with the bucket he was so recently using to clean up your filth. You momentarily black out, and when you come to you realize that ",false);
				if (player.statusEffectv2(StatusEffects.PrisonRestraints) != 2)
				{
					outputText("he has hogtied you. ",false);
				}
				else
				{
					outputText("he has savagely tightened your bindings. ",false);
				}
				outputText("You also notice that his dick has gone limp and wonder how that bodes for your fortunes. The answer comes quickly enough.\n\n ",false);
				outputText("\"You ungrateful little bitch. Normally I'd teach you a lesson in humility and obedience more directly, but somehow you've managed to kill my mood.\" He punctuates the sentence by delivering a swift kick to your ribs, and then dramatically draws the largest dildo gag you've ever seen from behind his back. \"Well, I suppose this will have to suffice for your reeducation today. Perhaps the next time you see me you'll remember how much better off you would have been with my prick in your mouth instead.\"",false);
				outputText("\n\nAnd with that he forces the monstrous rubber phallus into your mouth, locks the straps behind your head, grabs his mop and bucket and leaves the room in an exaggerated huff. You manage to take some solace in the fact that you stood up for yourself and avoided servicing the little jizz janitor, but you are unsure if the price was worth it.\n",false);
				player.changeStatusValue(StatusEffects.PrisonRestraints,2,2);
				player.changeStatusValue(StatusEffects.PrisonRestraints,3,2);
				player.changeStatusValue(StatusEffects.PrisonRestraints,4,3);
				prison.changeEsteem(10,prison.inPrison);
				prison.changeObey(-2,prison.inPrison);
				prison.changeWill(-prison.prisonWillCost(15));
				prisonCaptorScruffyScratchChange(1);
				doNext(playerMenu);
			}
		}

		public function prisonCaptorRandomEventJizzJanitorPerform():void
		{
			clearOutput();
			var freeitemslots:int = inventory.getMaxSlots() - inventory.getOccupiedSlots();
			outputText("(Placeholder) Scruffy puts on/switches you to an open mouth gag because he doesn't want you biting but removes other bindings, you give a super hot BJ including a titfuck if you have tits, and he leaves giving you praise for being a good slave, but tells you to improve your body with the items he gives you.",false);
			outputText("\n\n\"Well, it certainly is nice to see that you've been taking your lessons to heart and know how you are expected to behave. In fact, ",false);
			if (freeitemslots > 1)
			{
				outputText(" I think that quality of performance deserves extra rewards. Now be a good little cum-dumpster and be sure to eat it all -- it'll help make your body more pleasing to old Scruffy the next time I come around.",false);
			}
			else
			{
				outputText(" I'd be inclined to give you something extra if you didn't have such a stash of goodies saved up already. Be sure to eat what I have given you you, though -- it'll help make your body more pleasing to old Scruffy the next time I come around.",false);
			}
			outputText("\"",false);
			player.slimeFeed();
			player.changeStatusValue(StatusEffects.PrisonRestraints,2,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,3,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,4,4);
			prison.changeEsteem(-7,prison.inPrison);
			prison.changeObey(1,prison.inPrison);
			outputText("\n\n",false);
			inventory.takeItem(consumables.SUCMILK, camp.returnToCampUseOneHour);
			if (freeitemslots > 1)
			{
				outputText("\n\n",false);
				inventory.takeItem(consumables.NPNKEGG, camp.returnToCampUseOneHour);
			}
			if (freeitemslots > 2)
			{
				outputText("\n\n",false);
				inventory.takeItem(consumables.PINKEGG, camp.returnToCampUseOneHour);
			}
		}

		public function fightScruffy():void {
			clearOutput();
			outputText("How dare he keeps coming. If you refuse even in the slightest manner, he would flip out and punish you. Time to teach him a lesson.");
			prison.prisonCombatWinEvent = null;
			startCombat(new Scruffy());
		}

		public function prisonCaptorRandomEventJizzJanitorBeatenUp():void {
			clearOutput();
			if (monster.HP <= 0) outputText("Scruffy collapses from his injuries.");
			else outputText("Scruffy collapses from his overwhelming arousal.");
			outputText("\n\nYou drag him out the door. Hopefully he won't bother you for a while.");
			prison.randomCooldownScruffy += 12 + rand(36);
			combat.cleanupAfterCombat();
		}

		public function prisonCaptorRandomEventJizzJanitorLoss():void {
			clearOutput();
			if (player.HP <= 0) outputText("Scruffy has knocked you off your feet.");
			else outputText("You are too aroused to continue fighting. You give in.");
			outputText("\n\n\"You ungrateful little bitch. Normally I'd teach you a lesson in humility and obedience more directly, but somehow you've managed to kill my mood.\" He punctuates the sentence by delivering a swift kick to your ribs, and then dramatically draws the largest dildo gag you've ever seen from behind his back. \"Well, I suppose this will have to suffice for your reeducation today. Perhaps the next time you see me you'll remember how much better off you would have been with my prick in your mouth instead.\"",false);
			outputText("\n\nAnd with that he forces the monstrous rubber phallus into your mouth, locks the straps behind your head, grabs his mop and bucket and leaves the room in an exaggerated huff. You manage to take some solace in the fact that you stood up for yourself and avoided servicing the little jizz janitor, but you are unsure if the price was worth it.\n",false);
			player.changeStatusValue(StatusEffects.PrisonRestraints, 2, 2);
			player.changeStatusValue(StatusEffects.PrisonRestraints, 3, 2);
			player.changeStatusValue(StatusEffects.PrisonRestraints, 4, 3);
			combat.cleanupAfterCombat();
		}
	}
}