code:
package classes.Scenes.Places.Prison
{
	import classes.*;
	import classes.GlobalFlags.*;
	import classes.BodyParts.*;
	public class TrainingPet extends BaseContent
	{

		public function TrainingPet() {}

		public function prisonCaptorPetStatusText():void
		{
			var currentTier:int = 0;
			var currentEvent:int = 0;
			var petScore:int = 0;
			currentTier = prisonCaptorPetTier();
			currentEvent = prisonCaptorPetEvent();
			petScore = prisonCaptorPetScore();
			if (currentTier < 3)
			{
				return;
			}
			outputText("Mistress Elly's Pet Status: ");
			switch(currentTier)
			{
				case 1:
					outputText("Curious\n");
					outputText("Licked bowl: " + currentEvent + " times\n");
					break;
				case 2:
					outputText("Dreaming\n");
					outputText("Dream Progress: ");
					if (currentEvent == 0)
					{
						outputText("none/teasing\n");
					}
					else if (currentEvent == 1)
					{
						outputText("intro seen\n");
					}
					else if (currentEvent == 2)
					{
						outputText("lazy seen\n");
					}
					else if (currentEvent == 3)
					{
						outputText("modest seen\n");
					}
					else if (currentEvent == 4)
					{
						outputText("excited seen\n");
					}
					else if (currentEvent == 5)
					{
						outputText("had a chance to play\n");
					}
					else
					{
						outputText("played " + (currentEvent - 5) + " times\n");
					}

					outputText("Refused training offer: ");
					if (flags[kFLAGS.PRISON_TRAINING_REFUSED] > 0)
					{
						outputText("yes\n");
					}
					else
					{
						outputText("no\n");
					}
					break;
				case 3:
					outputText("In Training\n");
					break;
				case 4:
					outputText("Well Trained\n");
					break;
				default:
					outputText("Something else!\n");
			}
			outputText("Current Pet Score: " + petScore + " \n");
		}

		public function prisonCaptorPetOptedOut():Boolean
		{
			var testVal:* = undefined;
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			testVal = player.statusEffectv1(StatusEffects.PrisonCaptorEllyPet);
			if (testVal < 0)
			{
				return true;
			}
			return false;
		}

		public function prisonCaptorPetScore():Number
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			return player.statusEffectv1(StatusEffects.PrisonCaptorEllyPet);
		}

		public function prisonCaptorPetScoreSet(newVal:Number):void
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyPet,1,newVal);
		}

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

		public function prisonCaptorPetTier():Number
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			return player.statusEffectv2(StatusEffects.PrisonCaptorEllyPet);
		}

		public function prisonCaptorPetTierSet(newVal:Number):void
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyPet,2,newVal);
		}

		public function prisonCaptorPetTierUpdate(forceUpdate:Boolean = false):void
		{
			var currentTier:int = 0;
			var currentEvent:int = 0;
			var petScore:int = 0;
			currentTier = prisonCaptorPetTier();
			currentEvent = prisonCaptorPetEvent();
			petScore = prisonCaptorPetScore();
			switch(currentTier)
			{
				case 0:
					prisonCaptorPetTierSet(1);
					prisonCaptorPetEventSet(0);
					break;
				case 1:
					if (petScore >= 5 && currentEvent > 0 && player.hasKeyItem("Mistress Elly's Slave Collar") && player.esteem < 30 && player.cor < 15)
					{
						prisonCaptorPetTierSet(2);
						prisonCaptorPetEventSet(0);
					}
					break;
				case 2:
					if (forceUpdate)
					{
						prisonCaptorPetTierSet(3);
						prisonCaptorPetEventSet(0);
						prisonCaptorPetScoreSet(0);
						flags[kFLAGS.PRISON_TRAINING_REFUSED] = 0;
					}
					break;
				case 3:
				case 4:
					break;
				default:
			}
		}

		public function prisonCaptorPetEvent():Number
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			return player.statusEffectv3(StatusEffects.PrisonCaptorEllyPet);
		}

		public function prisonCaptorPetEventSet(newVal:Number):void
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyPet,3,newVal);
		}

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

		public function prisonCaptorPetScratch():Number
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			return player.statusEffectv4(StatusEffects.PrisonCaptorEllyPet);
		}

		public function prisonCaptorPetScratchSet(newVal:Number):void
		{
			if (!player.hasStatusEffect(StatusEffects.PrisonCaptorEllyPet))
			{
				player.createStatusEffect(StatusEffects.PrisonCaptorEllyPet,0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyPet,4,newVal);
		}

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

		public function prisonCaptorPetLickCumBowl(branchChoice:String, previousEvent:Function = null):void
		{
			var currentScore:int = 0;
			var itemEvent:Function = null;

			if (branchChoice == "choose")
			{
				clearOutput();
				outputText("You look at the bowl full of cum with bits of soggy bread floating in it, and take a moment to decide whether you should eat it normally, or set the bowl on the ground and lick it clean using just your tongue.");
				outputText("\n\n");
				prison.prisonItemEventCheck = false;
				//prison.trainingPet.prisonCaptorPetScratchSet(previousEvent);
				menu();
				addButton(0, "Lick", prisonCaptorPetLickCumBowl, "lick");
				addButton(1, "Eat", prison.prisonItemBread, true, false);
				return;
			}
			if (branchChoice == "afterlick")
			{
				outputText("You have a strange feeling of tranquility echoing in the back of your head, as if for some reason this was something natural for you.");
				prisonCaptorPetScratchSet(0);
				doNext(inventory.inventoryMenu);
				player.refillHunger(20);
				return;
			}
			outputText("You decide to set the bowl in the floor, then you get down on all fours and start licking at it as if you were a dog. \n\n");
			prison.prisonItemBreadHeatEffect(15);
			if (prisonCaptorPetTier() == 1)
			{
				prisonCaptorPetEventChange(1);
			}
			currentScore = prisonCaptorPetScore();
			if (currentScore < 10)
			{
				prisonCaptorPetScoreChange(1);
			}
			else if (currentScore < 20)
			{
				prisonCaptorPetScoreChange(0.5);
			}
			prisonCaptorPetTierUpdate();
			//itemEvent = prisonCaptorPetScratch();
			prisonCaptorPetScratchSet( -1);
			prisonCaptorPetLickCumBowl("afterlick");
			doNext(playerMenu);
		}

		public function prisonCaptorPetDreamStart(branchChoice:String = "choose"):Boolean
		{
			//var _loc8_:* = undefined;
			var currentTier:* = prisonCaptorPetTier();
			var currentEvent:* = prisonCaptorPetEvent();
			var petScore:* = prisonCaptorPetScore();
			var demandFlagged:* = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			return false;
		}

		public function prisonCaptorPetDreamTeaser(branchChoice:String = "choose"):void
		{
			outputText("You find yourself in a green plain, undressed and laying on the sun with your arms crossed and your chin resting on them, a sense of tranquility over comes you and you feel unburdened; the tribulations of your life seem so distant now.\n\n");
			outputText("Your peace is abruptly cut off by a loud noise, as if a lightning had struck right behind you. You turn your head in desperation to find");
			if (player.cor >=30 || player.esteem >=30)
			{
				if (player.cor >= 30)
				{
					outputText("the omnibus Lethice herself wielding her flaming whip, crackling loudly as she laughs maniacly.\n\n");
				}
				else if (player.esteem >= 30 && player.cor < 30)
				{
					outputText("the godess Marae carrying a huge boulder tied to a chain.\n\n");
				}
				outputText("Panicked for the ghostly visages you jolt forwards, running as fast as your canine legs allow you. But you're unable to outrun the spectre. Just as she's about to catch you you wake up in your cell, sweating and out of breath.\n\n");
			}
			else
			{
				outputText("[captorTitle] Elly holding a bowl of food and with a smile on her face. You feel silly for getting startled by such a nonsense and roll over presenting your belly to her. She lowers herself and rubs it playfully while giggling, you feel a deep sense of tranquility and let out a cheerful yap before suddenly waking up in your cell, a guard is standing right at the door looking at you confused... did you just bark in your sleep?\n\n");
			}
			doNext(playerMenu);
		}

		public function prisonCaptorPetDreamIntro(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			var corChange:* = undefined;
			currentTier = prisonCaptorPetTier();
			if (branchChoice == "choose")
			{
				if (currentTier == 2)
				{
					prisonCaptorPetEventSet(1);
				}
				prisonCaptorPetScoreSet(5);
				outputText("\n\n");
				outputText("You open your eyes and you find yourself on a park, laying on the floor with your hands on your cheeks and your legs curled up, the blades of grass are as green as ever but the sky is gray. You, however do not care for this, indeed, you do not care for anything right now; you're so calm you do not even care about the fact that you're wearing nothing but a leathery collar with a cute badge in the shape of a bone with your name inscripted on it. From behind you, you hear a female voice, you rise your head and turn it towards the source of it; it's your owner Elly, who is skipping towards you, calling your name.\n\n");
				outputText("What do you do?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Go at her",prisonCaptorPetDreamIntro,1);
				addButton(1,"Stay there",prisonCaptorPetDreamIntro,2);
				addButton(2,"Growl",prisonCaptorPetDreamIntro,3);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("You rise up and let out a little yap before running straight to the girl, you jump straight on her and she hugs you tenderly. She proceeds to ruffle your hair and you lay down on your back, expossing your belly; Elly giggles as she starts rubbing it with passion.\n\n");
				outputText("You open your eyes and see a kobold staring straight at you from the other side of the door, laughing uncontrolably. Then you realize you were laying on your back and kicking your leg while you were sleeping... weird.\n\n");
				prisonCaptorPetScoreChange(3);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -1;
				dynStats("cor", corChange);
			}
			else if (branchChoice == "2")
			{
				clearOutput();
				outputText("You decide to stay there silently as the girl runs towards you, she kneels down and ruffles your hair a bit before sitting down with you. You both lay down side to side and stare at the clouds for a while until she gets up and attaches a leash to your collar\n\n");
				outputText("\"Lets go for a walk, buddy\" Elly says in a cheerful tone. You let out a short bark and let yourself be led by her. You wake up in your cell and scratch your head... you're not quite sure how you feel about this.\n\n");
			}
			else if (branchChoice == "3")
			{
				clearOutput();
				outputText("You growl and the girl and chase after her, she tries to run away but you quickly manage to catch her. She begs you to stop but you're enraged for this situation, you know she had something to do with you being reduced to this degrading form, you bite and claw at her until you end up all bloodied. You suddenly wake up in your cell munching on one of the chains that's attached to the wall. Dammit, why did you have to wake up from this wonderful dream.\n\n");
				prisonCaptorPetScoreSet(-1);
			}

			doNext(playerMenu);
		}

		public function prisonCaptorPetDreamLazy(branchChoice:String = "choose"):void
		{
			var currentTier:int = prisonCaptorPetTier()
			var currentEvent:int = prisonCaptorPetEvent();
			var previousDreamValue:int = 0;
			var dreamValue:int = 0;
			var dreamSelect:int = 0;
			var corChange:Number = 0;
			var petScore:int = prisonCaptorPetScore();
			previousDreamValue = prisonCaptorPetScratch();
			var demandFlagged:int = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			if (branchChoice == "choose")
			{
				if (currentTier == 2 && currentEvent < 2)
				{
					prisonCaptorPetEventSet(2);
				}
				outputText("\n\n");
				outputText("You wake up on grassy field on a cloudy day, your hands under your cheeks and your legs curled up. To your left, you can see Elly sleeping comfortably next to you.\n\n");
				dreamValue = 0;
				dreamSelect = 0;
				do
				{
					dreamSelect = rand(3);
					dreamValue = 10 + dreamSelect;
				}
				while(previousDreamValue == dreamValue);

				prisonCaptorPetScratchSet(dreamValue);
				switch(dreamSelect)
				{
					case 0:
						outputText("You want to do something, but you're just too tired. You just go and curl up next to your sleeping owner and let out a yawn before going back to sleep. \n\n");
						break;
					case 1:
						outputText("Elly slowly wakes up and finds you staring at her. She pulls out a cute little smile and ruffles your hair \n\n");
						break;
					case 2:
						outputText("Elly wakes up and sits up, she quickly rummages trough her pocket and pulls out a red ball \"Fetch buddy!\" she says throwing the ball far away. Exited, you get up and chase after the red ball. \n\n");
						break;
					default:
						outputText("You shouldn't see this text.");
				}
				outputText("What do you make of this\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Love it",prisonCaptorPetDreamLazy,1);
				addButton(1,"Disgusting",prisonCaptorPetDreamLazy,2);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("You wake up very well rested, and full of energy. You see Scruffy through the door cleaning up the mess of another slave, as he mops away he notices you smiling on his direction\n\n");
				outputText("\"What's the matter with you? You seem awfully happy today\" he says with a confused glare on his eyes. You give him a cheerful bark and he continues on with his cleaning\n\n");
				prisonCaptorPetScoreChange(1);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -0.25;
				dynStats("cor", corChange);
			}
			else if (branchChoice == "2")
			{
				clearOutput();
				outputText("You suddenly wake up feeling disgusted with yourself, you get up, wash your face with some water and go on with your daily activities...\n\n");
				prisonCaptorPetScoreChange(-1);
			}

			doNext(playerMenu);
		}

		public function prisonCaptorPetDreamModest(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			var currentEvent:* = undefined;
			var previousDreamValue:* = undefined;
			var dreamValue:* = undefined;
			var dreamSelect:* = undefined;
			var corChange:* = undefined;
			currentTier = prisonCaptorPetTier();
			currentEvent = prisonCaptorPetEvent();
			var petScore:* = prisonCaptorPetScore();
			previousDreamValue = prisonCaptorPetScratch();
			var demandFlagged:* = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			if (branchChoice == "choose")
			{
				if (currentTier == 2 && currentEvent < 3)
				{
					prisonCaptorPetEventSet(3);
				}
				outputText("\n\n");
				outputText("You open your eyes and see a nice looking living room; the walls are coated in a pristine white paint and there is a very nice rug on the floor, next to the fireplace there is a small wooden cofee table, around it, a nice looking chair and a couch; where you were sleeping just a moment ago. You're naked save a leather collar with a cute little badge in the shape of a bone with your name inscripted on it. \n\n");
				outputText("You can see Elly comming down the stairs with a leash \"Lets go for a walk, " + player.mf("boy", "girl") + "\" she says. You bark and let her put the leash on your collar and you are led outside. It is a charming stary night and you're walking through a very opulent neighborhood, not unlike the ones of the biggest cities back home. \n\n");
				dreamValue = 0;
				dreamSelect = 0;
				do
				{
					dreamSelect = rand(3);
					dreamValue = 20 + dreamSelect;
				}
				while(previousDreamValue == dreamValue);

				prisonCaptorPetScratchSet(dreamValue);
				switch(dreamSelect)
				{
					case 0:
						outputText("You walk besides your mistress for a while until you reach a very concluded marketplace, there, you see a strong looking centaur carrying two pets of his own: a femenine looking dog morph with a very small knotted penis and duo of balls and a plump lacta bovine with DD-cups. Elly doesn't pay atention to them and you both continue on with the execise. \n\n");
						outputText("By the end of the walk you're exhausted and your legs are sore, but you feel good after the nightly workout. \n\n");
						break;
					case 1:
						outputText("You walk besides your mistress for a while until you reach a very big house, she knocks on the door and a purple skinned omnibus emerges from within. \n\n");
						outputText("\"Oh, Elly, what a pleasant surprise, dear. Come on in!\" the omnibus says letting you inside her house. As you enter the living room past the foyer you see several household servants taking care of the house, as well as several pets of all kinds: dog morphs, goblins, even some incubus and succubus are there. The purple omnibus then takes notice of you and lowers herself to your level \"And who's this little one\" she says ruffling your hair. \"Oh it's [name], my new pet.\" Elly answers. \"Oh, " + player.mf("how a handsome puppy", "such a cute puppy") + "\" the omnibus says ruffling your hair, you can't help but bark cheerfully at the violet seductress \"Elly, dear, please sit down, I'll get a servant to get a cup of tea. And for you\" she says pulling out a small treat and handing it over to you. You much cheerfully as Elly and the omnibus chat away the night. \n\n");
						outputText("By the time you both head back home you feel energized and contempt, you both can agree it was a great night. \n\n");
						break;
					case 2:
						outputText("You walk besides your mistress for a while until you reach to an open park, despite being relatively late there is still a lot of people there, many of them playing the hip new application Champion Go (TM) on their Goblincorp (TM) Portable Handheld Remote Communication Device (TM), a lot of them carrying their own pets; lizans, nagas, morphs of all kinds, etc. \n\n");
						outputText("There, Elly leads you to a lesser populated area of the park and unlatches the leash from your collar, then, she pulls out a bunch of treats and tells you to roll; after a few tries you manage to get it just right and she awards you with one of them. She continues on teaching you simple tricks until your belly is full of treats and she's appeased. She puts the leash back on and then leads you back home. \n\n");
						outputText("By the time you actually reach home you both feel really happy with yourselves. \n\n");
						break;
					default:
						outputText("You shouldn't see this text.");
				}
				outputText("How do you feel about this\n\n");
				outputText("\n\n");
				outputText("\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Happy",prisonCaptorPetDreamModest,1);
				addButton(1,"Disgusted",prisonCaptorPetDreamModest,2);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("Elly takes out the leash and ruffles your hair, tells you you're a good " + player.mf("boy", "girl") + " and leaves you be. You go back to the couch you were laying on and set up for a good night's rest.\n\n");
				outputText("You wake up well rested and energized, maybe being a pet wouldn't be so bad...\n\n");
				prisonCaptorPetScoreChange(1);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -0.25;
				dynStats("cor", corChange);
			}
			else if (branchChoice == "2")
			{
				clearOutput();
				outputText("You abruptly wake up, and consider your existance. You really need to cut off on this petplay bullshit.\n\n");
				prisonCaptorPetScoreChange(-1);
			}

			doNext(playerMenu);
		}

		public function prisonCaptorPetDreamExcited(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			var currentEvent:* = undefined;
			var petScore:* = undefined;
			var previousDreamValue:* = undefined;
			var dreamValue:* = undefined;
			var dreamSelect:* = undefined;
			var corChange:* = undefined;
			currentTier = prisonCaptorPetTier();
			currentEvent = prisonCaptorPetEvent();
			petScore = prisonCaptorPetScore();
			previousDreamValue = prisonCaptorPetScratch();
			var demandFlagged:int = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			if (branchChoice == "choose")
			{
				if (currentTier == 2 && currentEvent < 4)
				{
					prisonCaptorPetEventSet(4);
				}
				outputText("\n\n");
				outputText("You find yourself, once again, laying on the sofa of a very nice looking living room; you're naked save a collar with your name marked in it. This time, however you're fully aware of what's going on, you remember who Elly really is and that you're her slave but you do not seem to care, these dreams just keep going and now that you're lucid you might find out what's going on.\n\n");
				outputText("You see Elly, once again, walk down the stairs with your leash on hand \"I see you are awake, [name], good, it's time for us to go for a walk.\" she says in a commanding voice, her tone isn't as sweet as you're used to but it still gives you a sense of familiarity. You let her strap the leash to your collar and she leads you outside. As you walk through the door you quickly realize you're not on the opulent neighborhood you're used to. Indeed, you seem to be in one of the suburbs of Tel Andre, still very fancy, but more familiar.\n\n");
				outputText("As you walk trough the streets you start realizing that this is quite an intresting version of Tel-Andre you've stumbled upon, the mapping of the city is very much the same as you remember it, but the buildings, the paving and even the people look different.\n\n");
				dreamValue = 0;
				dreamSelect = 0;
				do
				{
					dreamSelect = rand(3);
					dreamValue = 20 + dreamSelect;
				}
				while(previousDreamValue == dreamValue);

				prisonCaptorPetScratchSet(dreamValue);
				switch(dreamSelect)
				{
					case 0:
						outputText("You reach the Tel-Andre Marketplace, or what your mind wants to make of it at least, despite the time, it's a popular site still, many restaurants are still open, and you see quite a lot of people walking their own 'pets' as well.\n\n");
						outputText("After a brief walk you find yourself next to Tel-Andre's bar where a strong looking male centaur is walking his own pets, a blonde furred dog-morph and a plump cow girl; haven't you met these people before?\n\n");
						outputText("The centaur nails an eye on you, you can almost feel the burning desire on his eyes.\n\n");
						outputText("\"Nice catch you've got there, bit too pure lookin' for my taste but a nice catch still\" he tells your mistress \"So you thinkin of puttin " + player.mf("'im", "'er") + " for breed anytime soon? The girls sure could use a mate.\n\n");
						outputText("Elly briefly looks at you before turning to the centaur. \"May be intrested in making a deal, but understand [name] here is not a common " + player.mf("pet", "bitch") + ", I will be expecting you to pay me for lending " + player.mf("him", "her") + " to you\" she says\n\n");
						outputText("The centaur smirks triumphant \"You may've got 'charself a deal, lets meet up later to discuss the terms of our agreement\". As he says this he once again gives you a final penetrating, lust filled look before exchanging information with Elly and walking away. Elly just smiles at you and gives you a little pat before cointinuing on.\n\n");
						break;
					case 1:
						outputText("Elly leads you to a very nice looking mansion in one of the richest neighborhoods of the city. She knocks on the door and a female cat morph dressed up as a housemaid answers it. \n\n");
						outputText("\"You must be Mistress Elly, yes? Mistress Saint-Ange and Patrice are already waiting for you. Please come in\" after saying this, the cat morph steps aside and lets you enter the mansion.\n\n");
						outputText("As soon as you get past the foyer you are greeted by a finely dressed omnibus with purple skin sitting on a chair and holding a cup of tea. Sitting on the floor to her right, there's a ");
						if (player.hasCock())
						{
							outputText(" human female with clear skin, blonde hair and blue eyes, completely naked save a viridian collar on her neck and and a buttplug with a tail attached to it, panting like a dog; her breasts have been obviously endowed through either magic or drugs to reach at least DD-cups, between her legs lays a tight looking wet pussy pussy. As soon as she notices you she gets up on all fours and you can apreciate how her pussy begins to drench uncontrolably; judging from the lustful look in her eyes, she seems to have inquestionable sexual attraction towards you.\n\n");
						}
						else
						{
							outputText(" human male with clear skin, blonde hair and blue eyes, completely naked save a viridian collar on his neck and and a buttplug with a tail attached to it, panting like a dog; his 10 inch penis, bound at the base with a black cockring is constantly leaking pre-cum, making a complete mess on the floor. As soon as he notices you, he gets up on all fours and begins to bark at you, while he's in this position you can appreciate how his penis starts to leak even more pre-cum from it's tip; judging the lustful look in his eyes, he seems to have inquestionable sexual attraction towards you.\n\n");
						}
						outputText("You can't help but look at the other 'pet' as you sense your own lust commencing to grow ever stronger. Elly sits down on a chair in front of the omnibus and orders you to sit down beside her, just out of reach from the Omnibus' pet who continues to mire you.\n\n");
						outputText("\"I see that your tastes have not deteriorated with time, my old friend, this is a really nice looking pet you have here.\" Elly says to the omnibus while sipping from her own cup of tea\n\n");
						outputText("The omnibus lets out a soft laughter at Elly's smug remark \"and I see old age hasn't affected your sense of humor. But let us get down to business, shall we? I will be meeting with an old friend of mine in a short while and I would hate to make her wait for me.\"\n\n");
						outputText("\"I see... so, is this beautiful creature the mate in question, I suppose?\" Elly says setting aside her cup\n\n");
						outputText("\"You suppose correctly, my dearest friend, Patrice was caught by my good friend The Marquis as he was hunting in the nearby forest, poor creature was stray and savage, but after a week with the old demon Patrice could not even remember his name.\" the omnibus says stroking the human's cheek \"Now I tell you, The Marquis is a real gentleman, with superb skill for these matters. But a girl knows her ways when dealing with a man the likes of The Marquis, especially if she owns a 12 inch deal breaker such as mine\"\n\n");
						outputText("Ellie bursts out laughing at the remark \"Oh, you magnificent creature you\" she says.\n\n");
						outputText("You can't help but stare at the deranged human, pointly, at his crotch. Elly brought you here to mate with this pure (almost) uncorrupted human and you have absolutely no problems with that. As a matter of fact, you're looking forward to it.\n\n");
						outputText("As your owner and the omnibus are about to close the deal and let you both have some privacy you see a cat girl dressed up as a nun entering through the foyer. The omnibus' eyes flare up when she notices her.\n\n");
						outputText("\"Oh, Eugeene, how delightful to see you again after all this time!\" the violet omnibus says rushing to hug the cat girl before recovering composture and going back to your owner \"Excuse me Elly, but I fear we will have to end this some other time, lets say we meet up at your house in about... two or three hours.\"\n\n");
						outputText("Your owner leaves the cup on the table and grabs your leash \"Sounds perfect, you two have a good evening\" she says to the couple \"Lets go back home, [name].\"\n\n");
						break;
					case 2:
						outputText("(Placeholder) (Excited dream) Variation 2. \n\n");
						break;
					default:
						outputText("You shouldn't see this text.");
				}
				outputText("As you go back home you find yourself happy to have met new people and very, very horny. Your owner unstraps the leash and ruffles your [hair]\n\n");
				outputText("\"That was an intresting night, wouldn't you agree [name]?\"\n\n");
				outputText("\n\n");
				outputText("\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Woof!",prisonCaptorPetDreamExcited,1);
				addButton(1,"Enough!",prisonCaptorPetDreamExcited,2);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("You bark cheerfully.\n\n");
				outputText("Elly gives you a head pat \"Good [boy], now lets gussy you up, you'll have a bussy night.\" After saying this, you follow her upstairs where she gives you a bath and takes care of your [skinfurscales]. You feel refreshed and lay down on your back expossing your belly. \n\n");
				prisonCaptorPetScoreChange(1);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -0.25;
				dynStats("cor", corChange);
				if (petScore >= 20)
				{
					outputText("Elly reaches down and begins rubbing your belly; it feels good, so good... and so real...\n\n");
					menu();
					addButton(0,"Enjoy it!",prisonCaptorPetPlayOffer);
					return;
				}
				if (petScore < 20)
				outputText("As Elly is about to rub your belly you wake up on your cell, laying on your back with your hands risen up mimicking paws and your [legs] flexed. When you sit up you see a goblin staring at you from the other side of your cell door, confused.\n\n");
				outputText("\"Are you allright, " + player.mf("stud?", "cutie?") + " looks like you have a fever or something, you were panting like a dog there\" the goblin says. \n\n");
				outputText("You look angerly at the goblin and she just walks away. Man... why do these dreams always stop at the best part!\n\n");
			}
			else if (branchChoice == "2")
			{
				clearOutput();
				outputText("You stand up and look at Elly in the eye, with a decieving and authoritary tone yell \"Enough!\" just to realize you have woken yourself up and scared the shit out of the one small innocent rat that keeps you company in this cold and desolated cell, you're a bad person, you know that? .\n\n");
				prisonCaptorPetScoreChange(-2);
			}

			doNext(playerMenu);
		}

		public function prisonCaptorPetPlayOffer(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			var currentEvent:* = undefined;
			var petScore:* = undefined;
			var corChange:* = undefined;
			currentTier = prisonCaptorPetTier();
			currentEvent = prisonCaptorPetEvent();
			petScore = prisonCaptorPetScore();
			var previousDreamValue:* = prisonCaptorPetScratch();
			var demandFlagged:int = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			corChange = 0;
			if (prisonCaptorPetEvent() < 5 && currentTier == 2)
			{
				prisonCaptorPetEventSet(5);
			}
			if (branchChoice == "choose")
			{
				clearOutput();
				outputText("You let yourself go as Elly rubs your belly and yap away as you kick your legs and paddle your limbs, this feels so good that you don't realize but Elly has just gotten up to get the door. In this time something occurs to you, why does this feels so real? You open your eyes and find Mistress Elly, as in the actual Mistress Elly rubbing your belly while you yap and paddle your limbs like a dog.\n\n");
				outputText("\"Having fun, [boy]?\" she says when she notices you're awake.\n\n");
				outputText("\"HOLY FUCKING SHIT!\" you instinctivly scream at the top of your lungs as you roll away as fast as you can, your heart racing as if you were about to have a heart attack. \n\n");
				outputText("Mistress Elly looks at you and lets out a little giggle \"You should've seen you, I've never seen you so happy. I didn't know could be this cute.\" Elly's words strike deep into your heroic soul, as your face turns redder than the mountains at the Volcanic Crag.\n\n");
				outputText("You're still quite shocked from the scare and the embarrasment of the whole situation \"I just- I was-\" as hard as you try you can't help but stumble upon your words, unable to actually find a viable reason to explain your behavior. \n\n");
				outputText("Elly just keeps giggling as you try to make your point through, after a short while she decides to interrupt you, \"relax, [boy] it's not the first time any of my slaves had done something like this. Here, I even bought you a little something for us to play with\" she says as she pulls out a leash from behind her back \"come on [boy], lets go for a walk.\"\n\n");
				outputText("What do you say?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Woof!",prisonCaptorPetPlayOffer,1);
				addButton(1,"O-okay...",prisonCaptorPetPlayOffer,2);
				addButton(2,"No thx",prisonCaptorPetPlayOffer,3);
				if (currentTier == 2)
				{
					addButton(3,"Leave!",prisonCaptorPetPlayOffer,4);
				}
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("You let out a playful bark and jump straight at her, sitting down like a dog as she attaches the leash to your collar and leads you outside your cell for a small walk around the prison. After passing several cells Elly leads you to an inner garden you didn't know existed, it is surprisingly quite beautiful, with green grass, flowers, trees and the like. There, she pulls out a small ball and you spend the evening playing fetch and recieving headpats and belly rubs. After an hour or so she tells you it's time to go back to your cell, you give a short whine and let yourself be led back.\n\n");
				outputText("As you're walking back you notice a few curious views from the rest of the inmates and from the guards, some of them even comment about how well trained you are. Even if you know they're just teasing you, you can't help but feel accomplished in some way or another, happy");
				if (player.lib >= 25)
				{
					outputText(" and quite aroused")
				}
				outputText(" to be honest. When you reach your cell, Elly gives you a treat and asks you if you had fun. You give her a cheerful bark and then roll over exposing your belly, she then proceeds to rub it while you yap and paddle your limbs unconsciously. You might be getting addicted to belly rubs.\n\n");
				prisonCaptorPetScoreChange(3);
				if (currentTier == 2)
				{
					prisonCaptorPetEventChange(1);
				}
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -0.25;
				dynStats("cor", corChange);
				if (petScore >= 30 && currentTier == 2 && currentEvent >= 7)
				{
					outputText("This time, after finishing playing, Misstress Elly stays in your cell, giving you a calculating glance.\"\n\n");
					menu();
					addButton(0,"Woof?",prisonCaptorPetTrainingOffer);
					return;
				}
				outputText("After finishing playing, Misstress Elly goes back to her usual cold attitude, fixes her hair and leaves your cell. It's a nice change to see her in such a... liberated mood.\n\n");
			}
			else if (branchChoice == "2")
			{
				clearOutput();
				outputText("You're obviously uncomfortable with the idea, but you are still intrested in it. This hesitant attitude of yours does not go unnoticed by your Mistress, who puts down the leash and pulls out a small red ball.\n\n");
				outputText("\"I knew somthing like this would happen... Lets do something, pal, since you're still untrained I'll let this one pass; what do you say if we just play some fetch instead? Right here, just you and me.\"\n\n");
				outputText("The idea isn't quite pleasant, but it's still less humiliating than having you walk around in public naked, so you give her a small woof and continue with the plan.\n\n");
				outputText("By the time you're both done you feel exhausted, humiliated, but still rather relaxed. Be it a good or a bad thing, it was a nice change from the depressing routine you've been subjected to recently.\n\n");
				prisonCaptorPetScoreChange(2);
				if (currentTier == 2)
				{
					prisonCaptorPetEventChange(1);
				}
				corChange = -0.25;
				dynStats("cor", corChange);
				if (petScore >= 30 && currentTier == 2 && currentEvent >= 7)
				{
					outputText("This time, after finishing playing, Misstress Elly stays in your cell, giving you a calculating glance.\"\n\n");
					menu();
					addButton(0,"Woof?",prisonCaptorPetTrainingOffer);
					return;
				}
				outputText("After finishing playing, Misstress Elly goes back to her usual cold attitude, fixes her hair and leaves your cell. It's a nice change to see her in such a... liberated mood.\n\n");
			}
			else
			{
				if (branchChoice == "3")
				{
					clearOutput();
					outputText("Misstress puts an over exagerated gest of sadness \"Are you sure about that, [name]?\"\n\n");
					outputText("\"Absolutely\" You say with a diligent tone, there is just no way you're going to-\n\n");
					outputText("You notice Misstress waving something in front of you... is that... \"Not even if I give you a Hellhound Snack™?\"\n\n");
					outputText("\n\n");
					outputText("\n\n");
					outputText("\n\n");
					menu();
					addButton(0,"Alright...",prisonCaptorPetPlayOffer,5);
					if (currentTier == 2)
					{
						addButton(1,"No!",prisonCaptorPetPlayOffer,6);
					}
					return;
				}
				if (branchChoice == "4")
				{
					clearOutput();
					outputText("\"FUCKING LEAVE!\" Be it for surprise, anger or a mixture of both; you find it in yourself to make a stand against the outrageous proposal and yell at Elly with all your might. You can tell by her face that you've actually managed to give her quite a scare.\n\n");
					outputText("Then it hits you... what the fuck did you just did. Elly's face becomes the pure image of psychopathy, the rage of a thousand suns is printed on her expression \"I tried to be nice to you, you disrespectful whore!\" she yells \"If you're not going to be my pet, you will be reminded of what you are!\"\n\n");
					outputText("\n\n");
					outputText("Oh crap...\n\n");
					prisonCaptorPetScoreSet(-1);
					prison.prisonPunishment(0);
					return;
				}
				if (branchChoice == "5")
				{
					clearOutput();
					outputText("Well, if she puts it like that...\n\n");
					outputText("\"That's a good [boy]\" Elly says giving you the crunchy bisquit, it tastes quite spicy but it bests bread crumps floating in cum or stale bread by a lot as a matter of fact. However the treat itself is quite small and after a few munches it has completely dissappeared from your mouth, you look up to Elly and you notice she's holding another one of them you want that.\n\n");
					outputText("Elly looks at you, as if she was expecting something, holding the delicious snack in her hand; you put two and two together and realize she probably wants you to act more like a dog.\n\n");
					outputText("\"Uhm... woof?\" You say while looking at her and tilting your head sideways. She smiles and throws you another treat. After eating the delicious bisquit, and far from full, you look up to her once again.\n\n");
					outputText("\"Lets try something else, I'll give you this one right here if you roll over\" She says teasing you yet again with another treat.\n\n");
					outputText("You're at first hesitant to do so but... the treat... is just there teasing you, tempting you, so close yet so far, YOU NEED THAT. you comply and roll over, Misstress Elly rewards you once again.\n\n");
					outputText("This goes on for a while and by the end of it your belly is full of treats and you're quite sure you picked up a bunch of new tricks. You would feel embarrased had it been not for the fact that this is, no exagerations, the best meal you had since you arrived to this depressing place.\n\n");
					prisonCaptorPetScoreChange(1);
					if (currentTier == 2)
					{
						prisonCaptorPetEventChange(1);
					}
					corChange = -0.25;
					dynStats("cor", corChange);
					if (petScore >= 30 && currentTier == 2 && currentEvent >= 7)
					{
						outputText("This time, after finishing playing, Misstress Elly stays in your cell, giving you a calculating glance.\"\n\n");
						menu();
						addButton(0,"Woof?",prisonCaptorPetTrainingOffer);
						return;
					}
					outputText("After finishing playing, Misstress Elly goes back to her usual cold attitude, fixes her hair and leaves your cell. It's a nice change to see her in such a... liberated mood.\n\n");
				}
				else if (branchChoice == "6")
				{
					clearOutput();
					outputText("No, what are you thinking. I mean, it's good and all but this is way too much. You look at her in the eye and reaffirm your possition in the subject.\n\n");
					outputText("\"Suit yourself, I'll be giving this bag full of treats to a more well behaved puppy then\" Elly says stuffing the bag in between her breasts and leaving the room. There goes the best meal you could've have in weeks... but hey, at least you didn't get punished (placeholder you will get punished, you cunt, where the hell do you think you are).\n\n");
					prisonCaptorPetScoreSet(20);
					corChange = -0.25;
					dynStats("cor", corChange);
				}

			}

			doNext(playerMenu);
		}

		public function prisonCaptorPetTrainingOffer(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			var corChange:* = undefined;
			currentTier = prisonCaptorPetTier();
			var currentEvent:* = prisonCaptorPetEvent();
			var petScore:* = prisonCaptorPetScore();
			var previousDreamValue:* = prisonCaptorPetScratch();
			var demandFlagged:int = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			corChange = 0;
			if (branchChoice == "choose")
			{
				outputText("\n\n");
				outputText("\"Hmm... I do believe we're not getting the entire experience out of this, wouldn't you agree?\" She says keeping her eye on you \"The way you walk, the way you bark... it's just not... right.\".\n\n");
				outputText("Misstress Elly measures her options before returning to you \"Say, [name] wouldn't it be better if you were to act more as a puppy? If it comes to this, I could even go out of my way to provide you with the necessary 'didactic materials' for such an endevour.\"\n\n");
				outputText("How do you react to this offer?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Accept",prisonCaptorPetTrainingOffer,1);
				addButton(1,"Decline",prisonCaptorPetTrainingOffer,2);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("You couldn't agree more, you give Misstress a small bark and she proceeds to pat you in the head.\n\n");
				prisonCaptorPetTierUpdate(true);
				prisonCaptorPetScoreChange(15);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				player.refillHunger(40);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Continue...",prisonCaptorPetTrainingAcceptedIntro,0);
				return;
			}
			if (branchChoice == "2")
			{
				clearOutput();
				outputText("You just cannot say yes, the headpats and belly rubs are good and all but this is just too much for you to fathom. You stand up and as politely as you can you tell her \"This needs to stop.\".\n\n");
				outputText("\"Are you sure? We could be having so much fun if you just said yes.\" Elly says with an over exagerated expression of sadness in her face.\n\n");
				outputText("You move forwards and hold Elly's' hands, depicting a charm you haven't trained since you left Ingam. \"It's time to stop\" You tell her in a lovely yet respectful tone, almost in a whisper.\n\n");
				outputText("Elly's eyes meet with you, the atmosphere is almost tangible at this moment. Elly closes up her face to yours, you close your eyes and brace yourself expecting her to bite you or something, but instead she just whispers something on your ear \"Not even if I give you a Hellhound Snack™?\"\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Alright...",prisonCaptorPetTrainingOffer,3);
				addButton(1,"No!",prisonCaptorPetTrainingOffer,4);
				return;
			}
			if (branchChoice == "3")
			{
				clearOutput();
				outputText("She really knows how to push your buttons; it's not because you want to do it, but you just can't say no to that delicious spicy bisquit.\n\n");
				outputText("You sit down and humor her. She pats your head and smiles.\n\n");
				prisonCaptorPetTierUpdate(true);
				prisonCaptorPetScoreChange(10);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Continue...",prisonCaptorPetTrainingAcceptedIntro,1);
				return;
			}
			if (branchChoice == "4")
			{
				clearOutput();
				outputText("\"No, it's time to stop!\" you dilligently tell your mistress, grabbing her shoulders and putting her again on arm's lenght.\n\n");
				outputText("Her expression of dramatic sadness suddenly changes into one of dissapointment as she stuffs the snack back between her breasts. \"Suit yourself\" she says heading for the door \"You've made me loose my desire to play anyway.\"\n\n");
				prisonCaptorPetScoreSet(30);
				if (currentTier == 2)
				{
					prisonCaptorPetEventSet(5);
				}
				flags[kFLAGS.PRISON_TRAINING_REFUSED] = 1;
				corChange = -0.25;
				dynStats("cor", corChange);
			}
			doNext(playerMenu);
		}

		public function prisonCaptorPetTrainingDemand(branchChoice:String = "choose"):void
		{
			var corChange:* = undefined;
			var currentTier:* = prisonCaptorPetTier();
			var currentEvent:* = prisonCaptorPetEvent();
			var petScore:* = prisonCaptorPetScore();
			var previousDreamValue:* = prisonCaptorPetScratch();
			var demandFlagged:int = flags[kFLAGS.PRISON_TRAINING_REFUSED];
			corChange = 0;
			if (branchChoice == "choose")
			{
				outputText("\n\n");
				outputText("Mistress Elly enters the room and you instantly fall to your knees, panting\n\n");
				if (player.tail.type > Tail.NONE)
				{
					outputText("and wagging your tail exitedly.\n\n");
				}
				else
				{
					outputText(".\n\n");
				}
				outputText("\"You amuse me, [boy], I might permanently make you my pet...\" She says patting your head \"Yes, I think such a thing would suit you... walking around completely naked on all fours, letting everyone see how depraved you trully are are. I might even add some suplements on the long run, lust enhancing drugs and some canine peppers...\"\n\n");
				outputText("The mere thought of this makes you aroused, but still concerned, do you really want to spend the rest of your life like this? a pet? As you rise up your head again you see Mistress Elly holding a leash, apparently waiting for your response.\n\n");
				outputText("What do you do?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Woof!",prisonCaptorPetTrainingDemand,1);
				addButton(1,"Stand up",prisonCaptorPetTrainingDemand,2);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("Your lust overcomes your judgement, you just don't care about anything anymore. You know being... like this makes you feel content, unburdained, free. You bark at your Mistress and let her leash you up.\n\n");
				outputText("\"That's a good [boy]\" she says \"This was enough of a symbol of your submissiveness, you're learning quickly. I'll let you be as I have important business to attent to. But worry not, as I will be checking on you from now on.\"\n\n");
				outputText("You somehow worry this was the right choice; but on a second thought, who cares.\n\n");
				prisonCaptorPetTierUpdate(true);
				prisonCaptorPetScoreChange(10);
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Continue...",prisonCaptorPetTrainingAcceptedIntro,1);
				return;
			}
			if (branchChoice == "2")
			{
				clearOutput();
				outputText("You stand up and open your mouth to voice your opinion, but Elly hastefully covers your mouth and forces you back on your knees.\n\n");
				outputText("\"I am not asking, stand still and let me leash you\" She says dilligently, her face shifted into that of anger.\n\n");
				outputText("How do you react?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Stand Still",prisonCaptorPetTrainingDemand,3);
				addButton(1,"Resist",prisonCaptorPetTrainingDemand,4);
				return;
			}
			if (branchChoice == "3")
			{
				clearOutput();
				outputText("More out of fear than of submission, you stand still in silence, and let the purple dominatrix strap the leash on your neck.\n\n");
				outputText("\"See? It wasn't that hard, now wasn't it?\" she says.\n\n");
				prisonCaptorPetTierUpdate(true);
				prisonCaptorPetScoreChange(7);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Continue...",prisonCaptorPetTrainingAcceptedIntro,2);
				return;
			}
			if (branchChoice == "4")
			{
				clearOutput();
				outputText("You're not having none of that, you quickly back away and give Elly a defiant glare. She cracks the leash and it instantly turns into a flaming whip.\n\n");
				outputText("\"I'm warning you [boy], do not get on my bad side; this is happening wether you like it or not!\"\n\n");
				outputText("How do you react?\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Easy...",prisonCaptorPetTrainingDemand,5);
				addButton(1,"Never!",prisonCaptorPetTrainingCrateIntro);
				return;
			}
			if (branchChoice == "5")
			{
				clearOutput();
				outputText("\"Okay, okay, okay; no need to take out the demonic bdsm magic, I'll do it\" You say trembling in fear.\n\n");
				outputText("\"Smart [boy]\" Elly says, turning the whip back into a leash, as she inches in closer to strap it to your collar you can't help it but feel affraid. This behavior does not go unnoticed, as Elly gently starts rubbing the side of your cheek \"I'm sorry for being so... hard with you, it's just that you being so unwilling to learn makes me so frustrated.\" Her words are harsh and derogatory, but strangely comforting.\n\n");
				prisonCaptorPetTierUpdate(true);
				prisonCaptorPetScoreChange(5);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Continue...",prisonCaptorPetTrainingAcceptedIntro,2);
				return;
			}
			doNext(playerMenu);
		}

		public function prisonCaptorPetTrainingCrateIntro(branchChoice:String = "choose"):void
		{
			var currentTier:* = undefined;
			currentTier = prisonCaptorPetTier();
			var currentEvent:* = prisonCaptorPetEvent();
			var petScore:* = prisonCaptorPetScore();
			var previousDreamValue:* = prisonCaptorPetScratch();
			clearOutput();
			if (branchChoice == "choose")
			{
				player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,4,0);
				prison.changeEsteem(20, prison.inPrison);
			}
			else
			{
				player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,4,1);
			}
			outputText("You manage to gather the forces to stand for yourself, it's just a flaming demonic whip, it's not like it's the worst thing you've been hit with. You stand up and get in battle possition, but the whip is just too fast for you, it hits you on the side and you fall back against the wall, the magic in the whip has left your whole body feeling numb, unable to put up enough of a fight.\n\n");
			outputText("Mistress Elly walks towards you and kicks you in the side, throwing your whole body on the ground. \"After all we've been through you still dare to oppose me, pathethic!\" She says transforming her whip back into a leash \"You will become my pet, but in order to train a feral soul like yours you first need to learn to obey.\"\n\n");
			outputText("With a snaps of her fingers the door swings open, and you see two imps hauling a large metallic cage. Elly instructs them to put it down on the corner of your cell and to open the side of it.\n\n");
			outputText("\"Since you insist to be so uncooperative I'll have this teach you your place, as I have more important things to worry than to humor a feral " + player.mf("dog", "bitch") + ". \" Elly grabs you by the collar and drags you across the floor into the cage, locking it after you're completely inside. It's large but not that large, there is barely enough room for you to turn in, and there is no way you'll be able to stand up, luckily, the bottom of it is cushy so sleeping won't be much of a problem, on the side of the gate there are two dog plates, one full of water and the other empty, with your name inscripted in it.\n\n");
			outputText("After locking the door, Elly takes the leash and puts it next to your face. \"When you decide to cooperate you'll show me by putting the leash on, grabbing it with your mouth like a the puppy you really are and then beg me to train you, until then, you're to remain locked up in this kennel.\" After saying this, Elly leaves the room.\n\n");
			if (currentTier == 2)
			{
				prisonCaptorPetTierUpdate(true);
			}
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,0);
			if (!player.hasKeyItem("Training Crate - Installed In Prison Cell"))
			{
				player.createKeyItem("Training Crate - Installed In Prison Cell",0,0,0,0);
			}
			player.changeStatusValue(StatusEffects.PrisonRestraints,1,2);
			player.changeStatusValue(StatusEffects.PrisonRestraints,2,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,3,0);
			player.changeStatusValue(StatusEffects.PrisonRestraints,4,0);
			flags[kFLAGS.PRISON_PUNISHMENT] = 4;
			doNext(playerMenu);
		}

		public function prisonCaptorPetTrainingCrateBehave(branchChoice:String = "choose"):void
		{
			var behaviorCounter:int = 0;
			behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) + 1;
			if (player.fatigue > player.maxFatigue() - 20)
			{
				outputText("You try to lay down on your small bed and rest your muscles but as fatigued as you are you find it impossible, and end up wallowing and whining instead.\n\n");
				player.damageHunger(5);
			}
			else if (player.hunger < 20)
			{
				outputText("(Placeholder) (Training Crate Behave) You pass an hour trying to behave but are too hungry to settle down, and end up wallowing and whining instead.\n\n");
				player.changeFatigue(7);
			}
			else if (player.lust > 90)
			{
				outputText("(Placeholder) (Training Crate Behave) You pass an hour trying to behave but are too horny to settle down, and end up wallowing and whining instead.\n\n");
				player.changeFatigue(7);
			}
			else
			{
				outputText("(Placeholder) (Training Crate Behave) You pass an hour on your best behavior, sitting quietly on your bed and occasionally lapping water from your bowl.\n\n");
				prison.changeEsteem(-1);
				behaviorCounter++;
			}

			player.changeFatigue(7);
			outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
			doNext(camp.returnToCampUseOneHour);
		}

		public function prisonCaptorPetTrainingCrateMisbehave(branchChoice:String = "choose"):void
		{
			var behaviorCounter:* = undefined;
			outputText("(Placeholder) (Training Crate Misbehave) Tired, hungry, horny and upset, you thrash about in your cage alternating between screaming angrily and crying for help.\n\n");
			if (player.will < 10)
			{
				outputText("(Placeholder) (Training Crate Misbehave) Being low on willpower, your tantrum is especially pathetic.");
				player.changeFatigue(20);
				prison.changeEsteem(1);
			}
			else
			{
				player.changeFatigue(15);
				prison.changeEsteem(2);
			}
			prison.changeWill(-10);
			behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) - 2;
			outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
			doNext(camp.returnToCampUseOneHour);
		}

		public function prisonCaptorPetTrainingCrateMasturbate(branchChoice:String = "choose"):void
		{
			var behaviorCounter:int = undefined;
			outputText("(Placeholder) (Training Crate Masturbate) Overwhelmed with desire, you sheepishly masturbate, staining your bedding with your fluids.\n\n");
			player.orgasm('Generic');
			behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) - 2;
			outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
			player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
			doNext(camp.returnToCampUseOneHour);
		}

		public function prisonCaptorPetTrainingCrateCallOut(branchChoice:String = "choose"):void
		{
			var corChange:* = undefined;
			var lustChange:* = undefined;
			var behaviorCounter:* = undefined;
			corChange = 0;
			lustChange = 0;
			behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus);
			if (branchChoice == "choose")
			{
				outputText("(Placeholder) (Training Crate Callout) Politely as you can, you call out for  Mistress Elly. She comes to see you, makes some comments about your current state of esteem, lust, hunger, and fatigue, as well as your recent behavior. She then asks \"What's wrong [boy]?\"\n\n");
				//Esteem
				if (player.esteem >= 50)
				{
					outputText("(placeholder) High esteem comment.\n\n");
				}
				else if (player.esteem > 15 && player.esteem < 50)
				{
					outputText("(placeholder) Low esteem comment.\n\n");
				}
				else if (player.esteem <= 15)
				{
					outputText("(placeholder) Broken esteem comment.\n\n");
				}
				//Lust
				if (player.lust > 25){
					outputText("(placeholder) I can't control my horny level.\n\n");
				}
				else if (player.lust < 25){
					outputText("(placeholder) Not horny.\n\n");
				}
				outputText("How do you respond?\n\n");
				outputText("\n\n");
				outputText("\n\n");
				outputText("\n\n");
				menu();
				if (player.lust < 100)
				{
					addButton(0,"Food",prisonCaptorPetTrainingCrateCallOut,1);
					addButton(1,"Release",prisonCaptorPetTrainingCrateCallOut,2);
				}
				if (player.lust >= 70)
				{
					addButton(2,"\"Release\"",prisonCaptorPetTrainingCrateCallOut,5);
				}
				if (player.esteem < 3)
				{
					addButton(3,"Submit",prisonCaptorPetTrainingCrateLeash,0);
				}
				if (player.lust < 100)
				{
					addButton(4,"Nothing",prisonCaptorPetTrainingCrateCallOut,6);
				}
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("(Placeholder) (Training Crate Callout) You indicate that you are hungry. Depending on your recent behavior and your hunger level, she might feed you.\n\n");
				if (player.hunger > 60)
				{
					outputText("(Placeholder) (Training Crate Callout) She chides you for begging for food when you aren't really hungry.\n\n");
				}
				else if (player.hunger > 40 && behaviorCounter < 0)
				{
					outputText("(Placeholder) (Training Crate Callout) She says that perhaps a little hunger will inspire you to behave better.\n\n");
				}
				else
				{
					outputText("(Placeholder) (Training Crate Callout) She feeds you, but probably with variations based on recent behavior.\n\n");
					behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) + 1;
					outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
					player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
					prison.changeEsteem(-1, prison.inPrison);
					player.refillHunger(50);
				}

				corChange = -0.25;
				dynStats("cor", corChange);
			}
			else
			{
				if (branchChoice == "2")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Callout) You indicate that you are are restless, and need to move around. She will offer you a chance to walk around the room, but only if you allow her to leash you.\n\n");
					outputText("How do you respond?\n\n");
					outputText("\n\n");
					menu();
					addButton(0,"Accept",prisonCaptorPetTrainingCrateCallOut,3);
					if (player.fatigue < player.maxFatigue() - 20)
					{
						addButton(1,"Nevermind",prisonCaptorPetTrainingCrateCallOut,4);
					}
					return;
				}
				if (branchChoice == "3")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Callout) You allow her to leash you, and she walks you around your cell so that you can stretch and work the cramps out of your muscles.\n\n");
					prison.changeEsteem(-2, prison.inPrison);
					player.changeFatigue(-50);
					behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) + 2;
					outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
					player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
					corChange = -0.25;
					dynStats("cor", corChange);
				}
				else if (branchChoice == "4")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Callout) You decline her offer. She chastises you, and leaves you to continue to stew in your cage. \n\n");
					prison.changeEsteem(1, prison.inPrison);
					behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) - 1;
					outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
					player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
					corChange = -0.25;
					dynStats("cor", corChange);
				}
				else if (branchChoice == "5")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Callout) You indicate that you are horny, and don't want to make a mess of your bed.'.\n\n");
					if (behaviorCounter < 0)
					{
						outputText("(Placeholder) (Training Crate Callout) You haven't behaved well enough to be able to leave your cage, so she instructs you to get on your hands and knees, put your food/water bowl below you, and then she gets you off with her tail, with most of the mess getting in your bowls instead of on your bedding.\n\n");
					}
					else
					{
						outputText("(Placeholder) (Training Crate Callout) She allows you to exit your cage and masturbate at her feet.\n\n");
					}
					prison.changeEsteem(-1, prison.inPrison);
					behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) + 1;
					outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
					player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
					player.orgasm('Generic');
					corChange = -0.25;
					dynStats("cor", corChange);
				}
				else if (branchChoice == "6")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Callout) You sheepishly say you don't need anything.\n\n");
					if (behaviorCounter < 0)
					{
						outputText("(Placeholder) (Training Crate Callout) Bad dog! Bad!.\n\n");
					}
					else
					{
						outputText("(Placeholder) (Training Crate Callout) Aww, you just wanted to see me that badly, eh? Still, a good dog doesn't bother [his] owner.\n\n");
					}
					behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) - 1;
					outputText("(Placeholder) new behavior value is " + behaviorCounter + "\n\n");
					player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
				}

			}
			doNext(camp.returnToCampUseOneHour);
		}

		public function prisonCaptorPetTrainingCrateLeash(branchChoice:String = "choose"):void
		{
			var corChange:Number = 0;
			var behaviorCounter:int = 0;
			var trainingSource:int = 0;
			var entryPath:Number = 0;
			behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus);
			trainingSource = player.statusEffectv4(StatusEffects.PrisonCaptorEllyStatus);
			entryPath = prisonCaptorPetScratch();
			if (!(entryPath == 1) && !(entryPath == 2))
			{
				entryPath = 1;
			}
			if (branchChoice == "choose")
			{
				prisonCaptorPetScratchSet(1);
				outputText("(Placeholder) (Training Crate Leash) You examine the leash that Mistress Elly has left for you.\n\n");
				outputText("You consider what to do with the leash");
				if (player.esteem > 15)
				{
					outputText(" but you find you still have too much dignity to anything but put it back down");
				}
				outputText(".\n\n");
				outputText("\n\n");
				menu();
				if (player.esteem < 15)
				{
					addButton(0,"Fasten",prisonCaptorPetTrainingCrateLeash,1);
				}
				addButton(1,"Put Down",prisonCaptorPetTrainingCrateLeash,2);
				return;
			}
			if (branchChoice == "0")
			{
				clearOutput();
				prisonCaptorPetScratchSet(2);
				outputText("(Placeholder) (Training Crate Leash) Mistress Elly points at your leash.\n\n");
				outputText("\n\n");
				menu();
				addButton(0,"Fasten",prisonCaptorPetTrainingCrateLeash,1);
				return;
			}
			if (branchChoice == "1")
			{
				clearOutput();
				outputText("(Placeholder) (Training Crate Leash) You attach the leash to the ring on the back of your collar.\n\n");
				if (entryPath == 2)
				{
					outputText("(Placeholder) (Training Crate Leash) Mistress Elly watches with approval.\n\n");
				}
				outputText("What do you do next?\n\n");
				outputText("\n\n");
				prison.changeEsteem(-0.25, prison.inPrison);
				corChange = -0.25;
				dynStats("cor", corChange);
				menu();
				addButton(0,"Bite Leash",prisonCaptorPetTrainingCrateLeash,3);
				return;
			}
			if (branchChoice == "2")
			{
				clearOutput();
				outputText("(Placeholder) (Training Crate Leash) You can't bring yourself to go any farther at the moment. Perhaps if you focus on behaving like a good dog, you might be able to get your ego in check enough to ask her to train you.\n\n");
				prison.changeEsteem(0.5, prison.inPrison);
				behaviorCounter = player.statusEffectv3(StatusEffects.PrisonCaptorEllyStatus) - 1;
				player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,3,behaviorCounter);
			}
			else
			{
				if (branchChoice == "3")
				{
					clearOutput();
					outputText("(Placeholder) (Training Crate Leash) You pick the leash up with your mouth.\n\n");
					outputText("What do you do next?\n\n");
					outputText("\n\n");
					prison.changeEsteem(-0.25, prison.inPrison);
					corChange = -0.25;
					dynStats("cor", corChange);
					menu();
					if (entryPath == 2)
					{
						addButton(0,"Beg",prisonCaptorPetTrainingCrateLeash,6);
					}
					else
					{
						if (player.esteem < 5)
						{
							addButton(0,"Call Out",prisonCaptorPetTrainingCrateLeash,4);
							addButton(1,"Wait Patiently",prisonCaptorPetTrainingCrateLeash,5);
						}
						if (player.esteem > 2)
						{
							addButton(2,"Nevermind",prisonCaptorPetTrainingCrateLeash,2);
						}
					}
					return;
				}
				if (branchChoice == "4" || branchChoice == "5")
				{
					clearOutput();
					if (branchChoice == "4")
					{
						outputText("(Placeholder) (Training Crate Leash) You bark around the leather strap in your mouth, and Mistress Elly appears. She is quite pleased to see you wearing your leash and prepared to give it to her.\n\n");
						prisonCaptorPetScoreChange(1);
					}
					else
					{
						outputText("(Placeholder) (Training Crate Leash) You decide to wait patiently, and Mistress Elly appears. She is quite pleased to see you wearing your leash and prepared to give it to her, and even more pleased that you waited deferentially until she was ready to see you.\n\n");
						prisonCaptorPetScoreChange(3);
					}
					outputText("(Placeholder) (Training Crate Leash) She lets you out of your cage and looks at you expectantly.\n\n");
					outputText("What do you do next?\n\n");
					outputText("\n\n");
					corChange = -0.25;
					dynStats("cor", corChange);
					menu();
					addButton(0,"Beg",prisonCaptorPetTrainingCrateLeash,6);
					return;
				}
				if (branchChoice == "6")
				{
					clearOutput();
					if (entryPath == 2)
					{
						outputText("(Placeholder) (Training Crate Leash) Transition directly from bite leash for players who submit.\n\n");
					}
					outputText("(Placeholder) (Training Crate Leash) You make an appealing show of begging like a dog, and she congratulates you for being such a good [boy] in accepting what you are...\n\n");
					prisonCaptorPetScoreChange(3);
					prison.changeEsteem(-5, prison.inPrison);
					corChange = -2;
					dynStats("cor", corChange);
					prisonCaptorPetScratchSet(0);
					prison.prisonCaptor.updateNextWaitRandomEvent(game.time.hours, game.time.days);
					prison.prisonCaptor.updateNextRoomRandomEvent(game.time.hours, game.time.days);
					player.changeStatusValue(StatusEffects.PrisonRestraints,1,2);
					player.changeStatusValue(StatusEffects.PrisonRestraints,2,0);
					player.changeStatusValue(StatusEffects.PrisonRestraints,3,0);
					player.changeStatusValue(StatusEffects.PrisonRestraints,4,0);
					flags[kFLAGS.PRISON_PUNISHMENT] = 0;
					flags[kFLAGS.PRISON_TRAINING_REFUSED] = 1;
					menu();
					if (trainingSource == 0)
					{
						addButton(0, "Continue...", prisonCaptorPetTrainingAcceptedIntro, 3);
					}
					else
					{
						addButton(0, "Continue...", camp.returnToCampUseOneHour);
					}
					return;
				}
			}
			prisonCaptorPetScratchSet(0);
			doNext(camp.returnToCampUseOneHour);
		}

		public function prisonCaptorPetTrainingAcceptedIntro(branchChoice:String = "choose"):void
		{
			clearOutput();
			outputText("(Placeholder) (Training Accepted Intro) Now that you've agreed to be trained as a dog, Elly explains what this means and what is expected of you.\n\n");
			switch(branchChoice)
			{
				case 0:
					outputText("Eager variation\n\n");
					break;
				case 1:
					outputText("Reluctant variation\n\n");
					break;
				case 2:
					outputText("Very reluctant variation\n\n");
					break;
				case 3:
					outputText("Crate broken variation\n\n");
					break;
				default:
					outputText("You shouldn't see this text.");
			}
			flags[kFLAGS.PRISON_TRAIN_PUPPY_TRICKS_UNLOCKED] = 1;
			doNext(playerMenu);
		}

		public function prisonCaptorPetCrateDescribe():void
		{
			outputText("\n\nYour training crate sits in the corner of the room, complete with comfortable bedding, your water dish, and your food bowl.");
		}

		public function prisonCaptorPetCrateRest():void
		{
			menu();
			if (game.time.hours < 6 || game.time.hours > 20)
			{
				outputText("You crawl into your training crate, curl up on your bedding, and go to sleep for the night.");
				addButton(0, "Sleep", camp.doSleep);
			}
			else
			{
				outputText("You crawl into your training crate, curl up on your bedding, and rest for a while.");
				addButton(0, "Rest", camp.rest);
			}
			prisonCaptorPetScoreChange(0.25);
		}

		public function prisonCaptorPetDreamFailure(branchChoice:String = "choose"):void
		{
			outputText("(Placeholder) (Dream Failure) Replace with actual code when it's complete!");
			doNext(playerMenu);
		}

		public function prisonCaptorFeedingBJTrainingPerformPuppyFinale(branchChoice:String) : void
		{
			var lustChange:int = 75;
			var shortName:ItemType = null;
			prisonCaptorPetTierUpdate();
			if (branchChoice == "complain")
			{
				outputText("\"B-but...\" you whisper almost silently, mouth still hanging open. As she doesn't even seem to notice, you can't help but release a mournful whimper, too overcome with shame and arousal to muster much else.\n\n");
				outputText("At that, the light clicking of her departure ceases, and you see her turn. Her expression is difficult to make out through your misty eyes, but another light chuckle betrays an amused curiosity. \"Why, whatever's the matter, dear?\" As you timidly lower your eyes to the bowl of soup before you, she gives a short, sympathetic breath of understanding.\n\n");
				outputText("\"Oh, you didn't want it in a bowl? But...however would you manage a loaf when all you seem to know how to use is that cute little tongue?\" She sounds genuinely considerate, but the words still sting. You bite your lip to avoid crying any more and look even deeper at the floor as she continues: \"Could you even hold it with those, ah, 'hands' of yours?\"\n\n");
				outputText("Your eyes can't help but flicker to your arms at her implication, where you find that even now your fingers remain half-curled into a semblance of paws. Starting to tremble with insecurity over her utterly debasing analysis, you try to blink the tears from your eyes and look back to her with a hopeless, pleading expression -- your heartbreak even more obvious than perhaps you wanted. She merely absorbs your gaze for a time, maintaining the cool, considerate countenance that doubtless carried her incisive rationale. It slowly warms, though, into sympathy, and then pity.\n\n");
				outputText("\"Well...\" she muses in a solemn, pondering tone, before her eyes roll dramatically and she blows a bang from her face with a sarcastic huff of feigned resignation. \"I suppose I did promise you a treat.\" Out of thin air she produces...\n\n");
				outputText("...oh...\n\n");
				outputText("A mischievous grin spreads across Mistress Elly's face as she reveals a modest chunk of bread. It's nothing special, but it looks a little better than the pitiful slabs you're used to. \"Is...this...is what you wanted?\" she asks, plucking off a piece and gently slipping it between her lips. A modest grunt of delight escapes a moment later. Fixed on the soft, fluffy inside that her tease revealed, you merely bob your head in answer, your eyes widening with excitement. \"Well then,\" she concludes, turning the prize in her hands to give you a better view, \"if you want it so much...\"\n\n");
				outputText("\"Show me.\" She abruptly draws her arms behind her back, hiding your treat from view. You look at her blankly for a moment, unsure of how to respond; your enthusiasm certainly felt well showcased... but after you take no further action she fixes you with a firm but gentle expression.\n\n");
				outputText("\"Come, now... if you really want your treat, be a good [boy] and ask for it properly. You remember how to be a good [boy], don't you?\" She tilts her head and raises an eyebrow expectantly.\n\n");
				outputText("Your throat knots and your heart skips a beat as you realize what she wants from you. You did do it once already... but that was different, and the tranquility you felt playing for her before is a faint memory beside the heat in your loins and the spunk coating your upper torso. Still, you earned that chunk of bread and it hurts to let it go. As you begin to tremble again, your Mistress crosses her arms and awaits your answer.\n\n");
				outputText("You could give in and play her dog again. It should earn you your real meal, but might also give Mistress Elly the impression that you enjoy this treatment.\n\n");
				outputText("On the other hand, you still have your bowl of soup to keep you fed, and merely seeing her other offer has sated your hunger a little. It's tough to let your reward go, but even you know that what she's asking just isn't fair for a bit of plain bread.\n\n");
				outputText("And if you do refuse her, you could proclaim your resolve to never allow yourself to be treated this way to discourage her from trying to put you in such a position in the future.\n\n");
				outputText("\n\n");
				prison.changeEsteem(1, prison.inPrison);
				menu();
				addButton(0, "Beg...", prisonCaptorFeedingBJTrainingPerformPuppyFinale, "beg");
				addButton(1, "Nevermind...", prisonCaptorFeedingBJTrainingPerformPuppyFinale, "nevermind");
				addButton(2, "Never again", prisonCaptorFeedingBJTrainingPerformPuppyFinale, "optout");
				return;
			}
			if (branchChoice == "letgo")
			{
				outputText("You decide there's not much point trying to convince her and watch your [if (obey < 20) captor\"][if (obey >= 20) \"Mistress\"] depart. As you look down at your reward, you can't help but admit that your performance was asking for this a little -- and even though her suggestion was a tease, the thought of lapping up your meal on all fours makes your heart flutter for a moment.\n\n");
				outputText("You figure that if you want to avoid being treated like an animal, you should probably avoid acting like one.\n\n");
				shortName = consumables.C_BREAD;
			}
			else if (branchChoice == "beg")
			{
				outputText("You give your Mistress a faint nod. She responds with a delighted smile, giving another encouraging show of your treat, and you close your eyes. You begin a deep breath in an attempt to compose yourself, but your lungs stagger under the battering sensations of the heat in your loins, the hole in your heart, and the chill creeping down your torso in slow, viscous rivulets. As you give up -- swallowing the rest of your breath in an apprehensive gulp -- you lower your head, let your vision seep back, and look upon your half-curled hands...\n\n");
				outputText("...with no idea how you managed to do this in a single movement before. Not only do you find your limbs numb with embarrassment at the thought of it, but the practical considerations alone are disorienting. You did do it once, though...\n\n");
				outputText("Deciding to take it in pieces, you begin with your paws, hesitantly raising your left off the floor and holding it before your eyes like some sort of foreign object. You repeat the motion with your right, and then look painfully between them as you try to arrange them in front of your face at some approximation of equal height, depth, and distance. Now and then you flick your eyes to your Mistress in a meek attempt to measure her expression, and each time her lips widen for a moment in approval.\n\n");
				outputText("Finally satisfied with the placement of your paws, you lean back and begin shifting your legs. They're almost asleep from how long you've been sitting on them, but after some ineffectual squirming they begin to wake and you shudder with dread as a tingling sensation begins creeping through you. You don't think you'll be able to do this with another distraction.\n\n");
				outputText("In a rush of panic, you decide to end this and get your treat before your body can betray you any further. Rising up on your haunches a little, you confirm the position of your paws and fix Mistress Elly with a submissive, doe-eyed expression.\n\n");
				outputText("\"That's all?\" she says plainly, her lips curling into a curious smirk. You feel your eyes welling at her plain disappointment as she walks over to you, her expression fading into thoughtful concern. \"What's wrong, [boy]?\" she asks, searching your misty gaze as though there was nothing behind it. \"You did it so well before...\"\n\n");
				outputText("You shut your eyes and sink into your shoulders, cowering away from her appraisal as you try to determine what you did wrong. Were your hands off balance? Was your head too low? Did you forget to straighten your back? Your legs still feel far away -- had they not actually moved?\n\n");
				outputText("\"Stop,\" a voice whispers sharply in your ear. It's not harsh, but it gets your attention.\n");
				outputText("\"Open your eyes and look at me.\" You do as you're told, shyly lifting your head just enough to meet the violet orbs lying in wait. They glow with what seems like genuine sympathy.\n");
				outputText("\"You're thinking too much,\" she whispers playfully, as if letting you in on some clever secret.\n");
				outputText("\"Or at least...\" she adds, breaking your gaze as she leans to the side, \"...thinking about the wrong things.\" You feel a smooth digit on your left, downturned palm.\n\n");
				outputText("\"Raise your paw,\" she orders gently, pressing just enough to make it clear which she's referring to. You glance over to determine how much, but find your eyes drifting the other way as golden-brown blur passes in front of them. \"Wouldn't you rather focus on this right now..?\"\n\n");
				outputText("Your mouth drops open and you forget all about your hand as she holds the crisp, smooth chunk of bread only inches from your face. It was palatable from afar, but up close... and the smell... your nostrils twitch as you slowly inhale, teary eyes glazing over as you imagine how it must taste. \"Or...ah, this?\"\n\n");
				outputText("Your heart skips and your body jumps as a velvet spade ");
				if (player.hasCock())
				{
					outputText("briefly flicks across the length of your cock, bringing it back to full attention and");
				}
				else if (player.hasVagina())
				{
					outputText("gives a fierce but playful flick at your [clit]");
				}
				else
				{
					outputText("prods playfully at your [asshole]");
				}

				outputText(" inducing another deluge of need. You feel your hips buck at the air, raising your stance a little farther as they chase her departing tail. You begin sobbing in earnest, then, a stream of tears washing a path down your sticky face. You tell yourself you've done your best, but you know you're just not strong enough to endure being teased and humiliated and denied like  Desperate to fulfill at least one of your cravings, you lean forward and bite at your prize with a needy whine.\n\n");
				outputText("\"Uh-uh,\" Mistress Elly chides, retracting her hand as your mouth, too, catches only air and you let your gaze drop to the floor with a sniffle. \"Don't pout, [boy],\" she comforts with feigned admonishment. \"You're already doing much better.\" Curious of her unexpected compliment in spite of your embarrassment, you can't help but look up as you feel another tap on your palm and find her gently holding your left hand. You feel as though your center of gravity has shifted, and realize with a quiet, unbidden gasp that while distracting you with her teasing she actually improved your posture tremendously.\n\n");
				outputText("You know you should probably be angry about how she's treating you, but can't help feeling something closer to guilt as you dwell on her sly assistance. As your eyes drift back to her, you find yourself offering an abashed, apologetic expression. She responds with no more than a knowing, absolving wink, but it lights a spark in your heart and you feel your guilt turn to gratitude.\n\n");
				outputText("\"Now the rest,\" she says, letting your hand go as her violet gaze darts over your kneeling form, \"you need to do on your own. But I know you can do that, can't you [boy]?\" she asks, her eyes meeting yours in invitation; while you're still not particularly confident, she seems to be, and you find yourself trusting in that as you answer her with a timid nod. \"Well then,\" she chimes, cupping her chin as she gently tilts her head in appraisal, \"Right paw up.\"\n\n");
				outputText("You blink, a little surprised by the flat tone of the order, but quickly eye your right hand and lift it to the level that she had placed your left. You look down your arm to make sure your elbows align, when her tail sharply whips your [ass]. \"Back straight.\" Your shoulders jolt back from the harmless but startling strike, and you hear the light tapping of boots as Mistress Elly begins circling you.\n\n");
				outputText("\"Part your legs. Relax your wrists. Just your wrists -- left paw back up; that's it...\" You can't help but feel pathetic, shifting your body to her whims like a marionette, and with each command you follow, buds of deep, warm blush speckle your face, then your torso, then even your limbs. But even if she's toying with you, you find yourself a little proud as her criticisms become smaller and she takes more time between them. As her commands become more esoteric, you even have some fun determining how to obey them with the most speed and elegance. You keep your eyes closed to concentrate, but as her voice becomes more affectionate and she even begins chuckling a little between the odd order, you nearly forget there's a demon only inches away and some of the buds on your torso begin to blossom.\n\n");
				outputText("\"There now,\" your Mistress coaxes, her voice coming from in from in front of you. \"Feeling better, [boy]?\" It's hard to deny that you do, a soft, soothing heat seeming to follow wherever your flush skin starts to flourish. You shiver with ticklish delight as the sensation mixes with the cool air of your cell and bite your lip to avoid giggling as a trail of her seed slips into your navel. At that, some of the flowers on your face begin to bloom.\n\n");
				outputText("\"I thought so,\" she says knowingly. \"Alright, up off your haunches...\" Despite the physical strain, you find your legs relaxing as warmth winds its way through them and they bask in the same glow quickly overtaking the rest of you. As you reach your peak, you take another long, staggered breath -- only this time shake by excitement.\n\n");
				outputText("\"Chin up.\" You obey, faintly smiling as you imagine your pleased owner right in front of you.\n");
				outputText("\"Mouth open.\" You obey, your ears perking up at the sound of a few soft clicks.\n");
				outputText("\"Tongue out.\" You obey, letting your chest fall in a relaxed breath.\n");
				outputText("\"Good [boy].\" What few flush buds remain on your skin unravel as your body fills with radiance and your eyes flutter open with an expression of warm, docile serenity.\n\n");
				outputText("You blink, feeling a soft weight hit the back of your tongue. Mistress Elly, now standing a few meters away, quickly raises something held between her thumb and forefinger before giving a playful wink and flicking her hand. A small object gently arcs through the air towards you, and when it begins curving to your left, you lean to the side and intercept it it your open mouth on sheer reflex.\n\n");
				outputText("\"Oh~ very good [boy]!\" she coos. You're glad she's excited; hopefully that means you'll finally get your treat. And sliding your tongue back as a delightful taste suggests what she just tossed you, you're not sure you'll be able to save it for very long. The flavor, while fairly plain, is still rich and filling, but the texture! Until your prospects turned to stale husks and seed soup, you never imagined how good a piece of soft, fluffy bread could feel.\n\n");
				outputText("\"The tricks I could teach that mouth of yours...\" she muses to herself, closing the distance again. You look up at her expectantly, unfazed by the comment, and she smiles back down with a glint in her eye. \"But right now you've earned a treat, haven't you?\" she asks, again revealing your well-baked reward. You nod fervently. While the humiliation of being made to beg like a dog still smolders somewhere in the back of your mind, it's difficult to notice behind the bright glow of pride at having performed the physical feat and anticipation of the prize it's won.\n\n");
				outputText("She plucks off a piece and holds it in front of you. Looking it over hungrily, you give her another nod, unsure of how else to close this \"deal.\" With a titter, she raises an eyebrow and looks at you expectantly. \"You need to open your mouth, [boy],\" she says instructively, as if you're merely being slow. You lose some of your luster as you realize her intentions, your brow furrowing into a recalcitrant pout. You know how precarious it is to resist her and really aren't trying to upset her, but she promised to feed you, not feed you.\n\n");
				outputText("Fortunately, Mistress Elly's smile merely widens, her features taking a skeptical slant. You're relieved at first, but your \"hard\" eyes begin to wilt as you realize how quaint your \"defiance\" must look in the midst of your overwhelmingly submissive posture. Suddenly feeling very shy, you find your eyes searching the room for anything that isn't violet.\n\n");
				outputText("\"Didn't we go over this?\" she asks, not even addressing your insignificant rebellion as her hand lowers the bite beneath the edge of your vision, \"How are you going to eat it yourself without your little paws making a mess of things? You have to keep your room clean, remember?\" You purse your lips in an indignant huff at that. You know she's being unfair; she could crumble it into a bowl for you like other bread, after all. \"And honestly?\" she adds in a sincere, almost pitying whisper, \"if the state of your face is any indication, you'll be lucky to handle the soup.\"\n\n");
				outputText("You wouldn't have thought you could flush any further, but the entire shade wreathing your body deepens at her implication. \"Now say 'aaah~'\" she orders again, but before you can contemplate obeying or refusing her, you feel a ");
				if (player.hasCock())
				{
					outputText("velvet loop around your cock");
				}
				else if (player.hasVagina())
				{
					outputText("velvet spade flick at the entrance to your [vagina]");
				}
				else
				{
					outputText("velvet spade tickle at your [asshole]");
				}

				outputText(" and a soft pressure against your belly-button; they pull upward in unison.\n\n");
				outputText(" \"Aaaaah!\" you moan with an undignified lilt, your jaw dropping as you shudder from the mix of sensations. The bite of your treat returns to your face, though now it appears coated like a proper pastry. \"Aah!\" you cry in refusal as you realize the nature of the frosting, but by then she's already pressed it hard to your tongue. \"A-ah-uuh...uhh...\"\n\n");
				outputText("Mistress Elly fixes you with a gaze of casual, almost indifferent triumph -- as if she's used to constantly proving you wrong about yourself. You feel yourself getting frightfully used to it, too, but seeing it mean so little to her very nearly breaks your luminous reverie. But before you have time to reflect, she slowly closes her own mouth, shifts her jaw around to imitate chewing, and slowly withdraws her fingers, teasing out a long strand of saliva before flicking it over your nose and lips. Your will to struggle with this heartbreaking charade any further finally and thoroughly devastated, you feel your quivering jaw repeat her motions, the cum-coated bread crumbling and soaking into your mouth, and then a knot in your throat.\n\n");
				outputText("It's delicious. Her seed did nothing to the dense, fluffy texture, but the flavor. What was once a simple, filling snack now tastes like a lush, cinnamon delicacy. It hurts to admit it, but as your throat relaxes you manage to swallow and the delectable sensation travels all the way down your gullet, you want more.\n\n");
				outputText("Your Mistress merely smirks at your dazed expression, rising and again stepping around to your side. As she does so, she plucks off another piece, swirls it affectionately on your cheek for a moment, then places it against your lips, which immediately open to accept her deposit. You feel your hair being ruffled as the click of her steps ceases directly behind you. A soft brush swipes under your drippy chin, then pulls up, tilting your head back to see your Mistress looking down at you with predatory delight.\n\n");
				outputText("\"You know,\" she says, holding another succulent morsel before your lips.\n");
				outputText("\"I really did think you were only pretending.\" You open your mouth to accept, your ravenous eyes imploring her with suppliant innocence.\n");
				outputText("\"And well, maybe you were, in one way.\" She does not lower the bread, and as you strain a little more to clutch it, she lifts it slightly farther.\n");
				outputText("\"Maybe you still will, when we're done here.\" You faintly realize you must have been slouching, because as you stretch upwards your legs give out. Whether it's due to the burning in your muscles or the burning in your loins, you see no option but to stick out your tongue and hope your owner indulges your begging.\n\n");
				outputText("\"But now, at least... I see you're finally being honest with yourself.\" With a wink to your effort, she lets the makeshift cinnamon bun fall into your mouth. And after a long, soft stroke snakes across your chest and under your jaw, you see her hold up what appears to be the remainder of your treat, now amply flavored.\n\n");
				outputText("\"And I'm so, so proud of you!\" She holds it to your mouth, and you voraciously devour the tasty block, then begin nibbling her palm and licking through her fingers for the crumbs.\n\n");
				outputText("\"So proud, in fact, that my good [boy] gets another reward.\" Her velvet tail stirs again and you shudder as the surge of need grants you a moment of lucidity. Startled and still reeling from what has transpired, your shyness overcomes your arousal and you fumble an awkward attempt to push away from her, but ultimately fall back into your compromised position and resume your fevered lapping -- desperately trying to clean her hand of both bread and frosting -- as your mind and body scramble to sort out exactly what it wants and what it needs.\n\n");
				outputText("\"There, there...\" she chimes, almost as an aside, as her free hand clutches your throat with surprising force. Her tail quickens and your limbs begin to writhe, and as you lose your balance she tugs you backward into a soft embrace. \"You don't have to pretend any more...\"\n\n");
				outputText("\"Just let go and accept how much you want to be a docile...\" Your tongue seizes up, finally ceasing to chase her fingers, your jaw begins to shake uncontrollably, and your entire body tenses as her velvet ministrations build to a frenzied pace.\n\n");
				outputText("\"Obedient...\" Every flush flowered across your body seems as though they're blossoming all over again, your skin feeling hot enough against the air and stone to steam.\n\n");
				outputText("\"Pet.\" Your eyes roll skyward and your hips buck against her tail as you climax, ");
				if (player.hasCock())
				{
					outputText("your own ample seed adding to the contents of the bowl in front of you.");
				}
				else if (player.hasVagina())
				{
					outputText("an explosion of fluid coating your thighs and seasoning the contents of the bowl in front of you.");
				}
				else
				{
					outputText("[asshole] spasming with need.");
				}

				outputText(" A long whine slips through your lips, an undulating harmonic of fear, shame, and relief, before your body finally overwhelms you and your dainty pose collapses. You immediately follow, plummeting forward, nearly landing your soup, before your owner tilts you to the side and gently sets your head down beside it instead.\n\n");
				outputText("\"Or am I wrong?\" she whispers in your ear, her voice quieter than the breath that carries it. You have no time to contemplate, your consciousness quickly fading as your ");
				if (player.tail.type > 0)
				{
					outputText("tail");
				}
				else
				{
					outputText("leg");
				}
				outputText(" twitches in the wake of your pleasure.\n\n");
				outputText("You should come to in about an hour, having learned a profound lesson about the potential rewards -- and consequences -- of behaving too convincingly as an animal in Mistress Elly's presence.\n\n");
				prison.changeEsteem(-1, prison.inPrison);
				prison.changeWill(10);
				player.refillHunger(40);
				prisonCaptorPetScoreChange(2);
				player.orgasm('Lips');
				prisonCaptorPetTierUpdate();
				shortName = consumables.C_BREAD;
			}
			else if (branchChoice == "optout")
			{
				outputText("This is outrageous! You know you can't stop her from refusing you your meal, but your performance is over and you're not going to let yourself be treated this way ever again.\n\n");
				outputText("\"I'm not your damn DOG!\" you yell viciously, tears clouding your eyes as your body strains against your show of rebellion. A stone seems to settle in your stomach as you realize what you've done, and your enraged expression goes blank as you blink away the dampness to find that Mistress Elly isn't there anymore.\n\n");
				outputText("\"No,\" you hear a voice seethe behind you. \"I suppose you're not.\"\n\n");
				outputText("As you turn, your vision blurs again as a deafening impact fills your right ear. You feel your left cheek meet the floor, and next you know your head is pounding as a pressure on your shoulder rolls you onto your back. Your vision is still unfocused, but you can make out the who's standing above you well enough. Her arms are crossed admonishingly, but her expression appears somewhat... delighted?\n\n");
				outputText("\"You're my slave,\" she declares strangely quietly, her lips opening wide as she mouths the words. \"So remember your manners.\"\n\n");
				outputText("With a far away giggle, she steps away and you faintly hear your cell door close with a thud. Well, a knuckle-sandwich wasn't the meal you had in mind, but you do feel a bit less hungry and you think you still got your point across. Your hearing should return to normal within the hour.\n\n");
				prisonCaptorPetScoreSet(-1);
				player.refillHunger(15);
				prison.changeEsteem(3, prison.inPrison);
				shortName = consumables.C_BREAD;
			}
			else if (branchChoice == "nevermind")
			{
				outputText("You look away from her indecisively and finally lift your hands from the floor. When you unravel your paws and cross your arms in a meek show of reticence, she lets slip an affectionate laugh.\n\n");
				outputText("\"You're a bit late to play shy, dear, but alright. Enjoy your bowl, okay?\" She finishes with expected sincerity, and you can't help but glance back at her as she turns to depart. There's a violet glint as she gives you a parting wink, and you feel yourself blush as you look down at your reward.\n\n");
				outputText("It still stings to have been denied your prize, but maybe your performance was asking for this a little -- and even though her suggestion was a tease, the thought of lapping up your meal on all fours makes your heart flutter for a moment.\n\n");
				outputText("You figure that if you want to avoid being treated like an animal, you should probably avoid acting like one.\n\n");
				player.refillHunger(5);
				prison.changeEsteem(1, prison.inPrison);
				shortName = consumables.C_BREAD;
			}

			player.slimeFeed();
			player.refillHunger(5);
			dynStats("lus", lustChange);
			prison.changeEsteem(-5, prison.inPrison);
			prison.changeObey(2, prison.inPrison);
			flags[kFLAGS.PRISON_TRAINING_LEVEL]++;
			if (flags[kFLAGS.PRISON_TRAINING_LEVEL] > 4 && player.obey > 25 + rand(3))
			{
				player.changeStatusValue(StatusEffects.PrisonCaptorEllyStatus,1,3);
				flags[kFLAGS.PRISON_TRAINING_LEVEL] = 0;
			}
			inventory.takeItem(shortName, camp.returnToCampUseOneHour);
		}

	}

}