code:
//Courtesy of
package classes.Scenes.Areas.GlacialRift
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.Items.Armors.NaughtyNunsHabit;
	public class YetiScene extends BaseContent
	{

		public function YetiScene()
		{
		}

		public function loseToYeti():void {
			clearOutput();
			if (doSFWloss()) return;
			if (player.HP <= 0) outputText("You feel your strength give way as your fighting stance wavers; the yeti beast senses your exhaustion and tackles you to the ground. With a groan, you stare up at the yeti as he pins you beneath him. There is a brief comfort from having such a warm, furred creature pressed against you in the frozen cave, though you feel the heat and pressure of his monstrous prick sliding out of its sheath and grinding against your body. His intentions are clear: he’s going to enjoy your warmth forcefully.");
			else outputText("You reach your limit; your loins are distracting you too much as you give up on fighting entirely. Your hands instead take to touching yourself through your armor lewdly: the only thing convincing you to keep anything on is the chill of the ice caverns surrounding you, but as you look at the ice yeti moving closer to loom over you, his monstrous red prick unsheathed fully and streaming the frigid air with it’s heat, you doubt you’ll be cold much longer.");
			//The Yeti decides what to do with you.
			//if (rand(2) == 0) getFuckedByYetiDoggyStyle();
			//else getFuckedByYetiFacial();
			getFuckedByYetiDoggyStyle();
		}

		private function getFuckedByYetiDoggyStyle():void {
			outputText("Your body is pinned completely under the large beast, his hand roughly feeling you up through your armor as his monstrous prick slides from the furred sheath to grind over you. All the forceful touching and groping sends shivers down your spine, but despite all that, the warmth of his body pressed against yours is oddly soothing and you find yourself relaxing into it to avoid the cold. WIth a grunt, his large hands cup over your " + player.buttDescript() + " and fondle your ass through your " + player.armorName + ". His forceful touch combined with the heat of his monstrous slick cock grinding over you excites your body, and the scent of the beasts rutting musk edges you even further, ");
			//Genderless PCs
			if (!player.hasCock() && !player.hasVagina()) outputText("tingling your body with arousal.");
			//Gendered PCs
			if (player.hasCock()) outputText("sending blood swelling to your " + player.multiCockDescriptLight() + "");
			if (player.hasCock() && player.hasVagina()) outputText(" as well as ");
			if (player.hasVagina()) outputText("making the lips of your " + player.vaginaDescript(0) + " begin to drool and grow moist");
			outputText(". With a sudden jerk you are spun around and shoved onto your hands and knees, his limbs pinning down yours to the ice cavern floor. With a gasp, you feel frost collecting on your limbs, ice crawling up them as they are frozen in place, trapping you as the yeti has his way with you. With a strong yank of his hands, the yeti exposes your " + player.buttDescript() + ", you shiver as it’s briefly left in the cold air.\n\n");
			outputText("A hot slick throbbing length is quickly nestled between your asscheeks, humping between your firm mounds as you feel the welcome warmth of the yeti’s cock. You gasp as the naturally slick monster prick drools over your " + player.assholeDescript() + ", smearing the warm preparation fluids all along your taint. The yeti continues to hump you earnestly as his warm furred body lays over yours, and you can’t help but the soft warmth oddly pleasurable despite your limbs being trapped in ice.  ");
			if (player.hasCock()) outputText("Your " + player.multiCockDescriptLight() + " is now fully erect, despite being in the cold air.  ");
			outputText("With a needy grunt the yeti ceases his humping, and when you turn your head, you can see him lining up, one of his hands gripping the hilt of his monstrous length. He presses the pulsing cockhead to your pucker, pushing in against your resistance and coaxing a low moan from your lips. With a persistent shove he slides in past the stiff flesh of your rim, nestling in your warmth. The beast gives a guttural moan from his maw, bucking his hips as he gets more of his massive cock inside you. You can only whimper and strain against the ice binding your limbs in place as the beast takes your hole.\n\n");
			outputText(images.showImage("yeti-loss"));
			outputText("The sound of flesh smacking flesh bounces off the ice walls of the cavern as the yeti beats your ass into oblivion, his giant huge member impaling you fully over and over, each savage thrust making your limbs ache from the strain of your bindings. Moans slip past your lips despite your discomforts, the furred beast wrapped around you like a heated fur sweater, the brutal thrusts against your ass making it burn up in all the right ways. You can feel his prespunk dripping out of your pucker and leaving warm trails down your taint and legs.  ");
			if (player.hasCock()) {
				outputText("Some gets onto your fully erect " + player.multiCockDescriptLight() + ", making ");
				if (player.totalCocks() == 1) outputText("it");
				else outputText("them");
				outputText(" ache all the more.");
			}
			if (player.balls > 0) outputText("Your ballsack is slimy with the stuff. ");
			if (player.hasVagina()) outputText("You can feel it pooling along the lips of your mound. ");
			outputText("The yeti’s furred balls slap against you, bludgeoning you with their large size, your cheeks reddening under its abuse. ");
			if (player.mf("m", "f") == "m") outputText("The tip of the beast’s length rams into your prostate, making you cry out in pleasure.") ;
			outputText("Your moans grow louder and, as the monstrous length pounds away at your hole, you soon reach your limits.")
			if (player.hasCock()) outputText("Ropes of cum shoot from your " + player.multiCockDescriptLight() + ", splashing all over the cavern flooring and steaming against the cold ice. ")
			if (player.hasVagina()) outputText("Your  " + player.vaginaDescript(0) + " is drenched in your sex, leaving your legs slick in your pleasure and dripping down to steam on the icy flooring under you. ")
			player.buttChange(18, true);
			outputText("With a low snarl the yeti rams into you hard enough to make your ice bindings crack: hilted in you as much as he can manage, he begins to pump you full of his cold resistant spunk. It warms your gut and lower body in ways that make you groan, his baseball sized balls filling you well past your limits as it flood your inner confines, spilling out to drenching your taint and groin. Soon there is a large heated pool on the floor under you. With a wet pop the yeti pulls his spent cock from your over stuffed hole, more spunk spilling out to splash onto the floor. Without any further ceremony the beast’s prick returns to it’s sheath and the yeti leaves out the way he came in, leaving you a trapped, helpless fuckhole to be used later.\n\n")
			outputText("You struggle against the ice binding your limbs, one of them cracked from the earlier rutting, and with some effort you manage to break free. ")
			outputText("Collecting your things, you notice you lost some gems during the struggle, but you ignore them since you are eager to leave the cavern. Taking the exit the yeti had used to wander back out into the rift, you begin your long walk to camp.. but as you trek through the frigid fields of the glacial rift, you notice your ass stays hot despite the cold. Perhaps it’s a special quality of the yeti’s cum?")
			player.orgasm('Anal');
			combat.cleanupAfterCombat();
		}
		//Not used as it's not written and may or may not be added.
		/*private function getFuckedByYetiFacial():void {
			player.orgasm('Generic');
			combat.cleanupAfterCombat();
		}*/

		public function winAgainstYeti():void {
			clearOutput();

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

			else outputText("The beast looks at you with a hungry gaze, his hot thick member sliding from the sheath between his legs. Unable to fight it any longer, the yeti wraps his hands around his long hot prick, protecting it from the cold as he pleasures the slick, stiff flesh. You lower your guard as you realize the monster is no longer willing to fight, content to just touch himself while looking warily at you. So, what do you do now?");
			//Options
			menu()
			addDisabledButton(0, "Buttfuck", "This scene requires you to have cock and sufficient arousal.");
			addDisabledButton(1, "RideHisCock", "This scene requires you to have vagina and sufficient arousal.");
			if (player.armor is NaughtyNunsHabit) addButton(2, "Worship Cock", (player.armor as NaughtyNunsHabit).naughtyNunCockWorship).hint("Praise your lord through devotion to this creatures's cock.");
			if (player.lust >= 33){
				if (player.hasCock()) {
					addButton(0, "Buttfuck", fuckYetiInTheAss);
				}
				if (player.hasVagina()) {
					addButton(1, "RideHisCock", rideYetisCock);
				}
			}
            setSexLeaveButton(combat.cleanupAfterCombat);
		}

		private function fuckYetiInTheAss():void {
			clearOutput();
			outputText("You walk closer to the vulnerable form of the yeti beast, his body laid out on his back before you. A desire wells up in your gut as your gaze lowers down to the beast’s genitals and beyond, at his legs slightly parted, his muscled asscheeks on display. You kneel down to push the large legs aside, and when the beast offers no resistance to your touch, you expose his large rump fully. Your hands feel up the beast’s furred cheeks, the fur surprisingly soft and warm to your touch, and kneading with your fingers you coax the firm mounds apart to expose his tight puckered entrance. \n\n")
			outputText("With a spark of curiosity, you slide a finger over the soft flesh: it resists your prodding, stiff and tight. You hear a strained grunt from the beast’s maw, though he continues to lay still as you coax his hole loose. By the time you slide a finger in, the beast seems to be panting hot wisps of steam from its mouth. Your finger is wrapped tight in the yeti’s pucker: it feels so hot compared to your frigid surroundings, and your loins ache under your armor just thinking of how wonderful it would feel to be wrapped in such blissful heat. You decide to keep your armor on as you fish your " + player.multiCockDescriptLight() + " out into the air, rubbing over the warm rear before you as the beast begins to stroke along his monstrous length. \n\n");
			outputText("Once you are fully hard, you begin to prod against the yeti’s resistance, working " + player.oMultiCockDesc() + " inside.\n\n")
			if (player.cocks[0].cockType == CockTypesEnum.HORSE) outputText("Your flared head makes things difficult, but your drooling precum eases your attempts as you work the resistant pucker loose enough to fit the wide flare past the rim. The yeti gives low groans as a spurt of precum leaks from his red member and, feeling your flared head grid over his walls, you begin to thrust deeper into the hot hole. \n\n");
			if (player.cocks[0].cockType == CockTypesEnum.CAT) outputText("With a grunt you manage to slip past the resistant rim, your feline prick plunging in deep as the stiff barbs rubbing over the yeti’s inner walls coax moans of pleasure from the beast's maw. You begin to thrust and smack your hips against the furred rear as your barbs vibrate over the beasts blissfully warm hole. \n\n");
			if (player.cocks[0].cockType == CockTypesEnum.DOG) outputText("Your members tip slips in easily, and with a few slow thrusts you work more of your canine dong into the beasts wonderful warmth. The sound of your hips slapping his firm rear echoes in the cave as you begin to pound away at the tight yeti hole, your knot slowly swelling as you moan out in pleasure. The beast under you groans softly as he strokes along his own massive red prick. Eventually your knot swells to a size too big for the yeti’s rim, smacking against the stiff flesh as you feel your climax approaching. \n\n");
			else outputText("You groan out loud at the beast’s warmth wrapped around your prick, slapping your hips against the beast’s furred rump as you begin to thrust and dig deeper into the yeti’s depths. More of your length sliding in each time, slipping past the tight ring stroking your shaft, milking you of your seed as it tugs on your stiff flesh. \n\n");
			outputText("The yeti strokes his giant red prick as you fuck him, guttural moans escaping his maw as he lays still and lets you dominate his rear. Your hands grip his furred hips, clenching down tight as you pick up the pace. \n\n");
			if (player.biggestCockArea() >= 20) outputText("You shove as much into the beast as you can, taking what warmth you can get and moving one hand from the yeti’s hips to stroke along the inches of your length that simply won’t fit. \n\n");
			if (player.biggestCockArea() <= 20 && player.cocks[player.biggestCockIndex()].cockType == CockTypesEnum.DOG) outputText("With a final thrust, you pop your knot past the beast’s rim, joining you two together with you as the alpha and him your bitch as you ready to breed him with your seed. You lean forward, hitting your limit as you give out a low groan.\n\n");
			if (player.balls > 0) outputText("Your " + player.ballsDescriptLight() + " clench as your body readies to fire. You pump the yeti’s ass full of your spunk, firing out countless ropes of your seed, coating the beasts wall in your musky cum. \n\n");
			if (player.cocks.length > 1) outputText("Your other cocks unload and coat his furred rear, drenching his rump in your spunk and messing his white fur with your sticky cream. With a satisfied huff you pull out, trails of your seed following your cock and leaking out across his abused rear. The beast groans as he unloads over his chest, his giant globs of thick spunk matting his fur. \n\n");
			outputText("Without any delay you tuck your " + player.multiCockDescriptLight() + " into your " + player.armorName + " and make your way out of the cavern through the passageway the yeti came in through, leaving the fearsome yeti looking like a well used whore and collecting a few spoils along the way.")
			player.orgasm('Dick');
			combat.cleanupAfterCombat();
		}

		private function rideYetisCock():void {
			clearOutput();
			outputText(images.showImage("yeti-vag-ride"));
			outputText("More than a little wet yourself, you decide to give the fallen beast a nice, warm sheath for his vulnerable rod. You pull open your " + player.armorName + " just enough to expose your " + player.vaginaDescript() + " as you straddle the downed yeti. He looks up at you with wary, yet hopeful eyes. Grinning, you take his big, furry hands in yours and push them back from his stiff red prick. The yeti gives a little yelp as the cold air assaults him, but you’re quick to line yourself up with him and drop down, burying his length inside you in one powerful motion. \n\n");
			if (player.looseness(true) <= 1) outputText("You whimper slightly as his thick cock stretches your walls painfully.  ");
			player.cuntChange(18, true);
			outputText("\n\n");
			outputText("You settle atop the burly yeti, sliding down on his prick until his hefty baseball-sized nuts press into your [butt]. You give a few short bounces on the beast’s cock, but quickly find yourself shivering as a cold wind barrels through the cave, chilling you to your core. Seeing your discomfort, the Yeti reaches up and wraps his thick, powerful arms around you before pulling you down on top of him. Your face nestles into ");
			if (player.tallness < 60) outputText("his furry belly");
			if (player.tallness >= 60 && player.tallness < 72) outputText("the thick, soft fur of his chest");
			if (player.tallness >= 72) outputText("the nape of his neck");
			outputText(", the yeti’s thick musk surrounding you. \n\n")
			outputText("Now wrapped in thick, warm fur and benefitting from the yeti’s comforting body heat, your shivers soon subside. With surprising gentleness, the yeti shifts so that his back is pressed against the cave wall, putting the two of you into a sitting position with you cuddled up in his lap. You give the big softie a little wink and, burying your hands in his pelt, start to rock your hips slightly, gently taking a tiny portion of his cock in and out of your " + player.vaginaDescript() + ", careful to keep the remained locked in the warmth between between your bodies. \n\n")
			outputText("You continue to bounce on the yeti’s cock, grinding your hips against him and squeezing your vaginal muscles to milk him. Holding you tight against him, the yeti shifts one of his big hands from your back to your " + player.chestDesc() + ", giving you gentle squeezes and pinches through your " + player.armorName + " and forcing a little gasp from you. Letting out a deep, throaty laugh at your reaction, the yeti starts to move his own hips in tandem with yours, stuffing you with even more of his cock than ever before. You grit your teeth and moan as the narrow head of his prick slides through your cervix, poking at the entrance to your womb. \n\n")
			outputText("You give out a final, whimpered moan as you climax, humping on the yeti’s prick as fast as you can while his arms restrain you. Shocks of pleasure shoot through you, making your whole body spasm in the beasts embrace. As your " + player.vaginaDescript() + " squeezes down on him, the yeti throws his head back and, with a final mighty thrust into your depths, cums as well, hilting in you as much as he can manage as you pumps you full of his thick, hot spunk. Pouring into you, the yeti’s cum warms your gut and lower body in ways that make you groan and gasp with pleasure. His baseball-sized balls fill you well past your limits as spunk floods your innermost depths, spilling out to drench your thighs and groin, squelching wetly between your entwined bodies. \n\n")
			outputText("With a wet pop, the yeti’s cock slides from your over-stuffed hole and back into its sheathe, letting more spunk spill out to stain his fur. Still gasping from your recent orgasm, you spend the next few minutes snuggled up to the warm, damp yeti, clinging to his soft fur until you feel it’s time to go. You look up to the yeti to say goodbye, but find him snoring quietly, his chest hefting your entire body with every breath. With a little smirk, you give him a kiss on the cheek and, securing your equipment, head back to camp.")
			player.orgasm('Vaginal');
			combat.cleanupAfterCombat();
		}

	}

}


code:
/* Created by aimozg on 06.01.14 */
package classes.Scenes.Areas {
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.Scenes.API.Encounter;
	import classes.Scenes.API.Encounters;
	import classes.Scenes.API.FnHelpers;
	import classes.Scenes.API.IExplorable;
	import classes.Scenes.Areas.HighMountains.*;
	import classes.Scenes.PregnancyProgression;
	import classes.display.SpriteDb;
	import classes.internals.*;
	import classes.Scenes.NPCs.HelScene;

	use namespace kGAMECLASS;

	public class HighMountains extends BaseContent implements IExplorable {
		public var basiliskScene:BasiliskScene;
		public var harpyScene:HarpyScene = new HarpyScene();
		public var minervaScene:MinervaScene;
		public var minotaurMobScene:MinotaurMobScene = new MinotaurMobScene();
		public var izumiScenes:IzumiScene = new IzumiScene();
		public var phoenixScene:PhoenixScene = new PhoenixScene();
		public var cockatriceScene:CockatriceScene;

		public function HighMountains(pregnancyProgression:PregnancyProgression, output:GuiOutput) {
			this.basiliskScene = new BasiliskScene(pregnancyProgression, output);
			this.cockatriceScene = new CockatriceScene(pregnancyProgression, output);
			this.minervaScene = new MinervaScene(pregnancyProgression,output);
		}

		public function isDiscovered():Boolean { return flags[kFLAGS.DISCOVERED_HIGH_MOUNTAIN] > 0; }
		public function discover():void {
			clearOutput();
			outputText(images.showImage("area-highmountains"));
			outputText("While exploring the mountain, you come across a relatively safe way to get at its higher reaches.  You judge that with this route you'll be able to get about two thirds of the way up the mountain.  With your newfound discovery fresh in your mind, you return to camp.\n\n(High Mountain exploration location unlocked!)");
			flags[kFLAGS.DISCOVERED_HIGH_MOUNTAIN]++;
			doNext(camp.returnToCampUseOneHour);
		}
		//Explore Mountain
		private var _explorationEncounter:Encounter = null;
		public function get explorationEncounter():Encounter {
			const fn:FnHelpers = Encounters.fn;
			if (_explorationEncounter == null) _explorationEncounter =
					Encounters.group(game.commonEncounters, {
						name: "d3",
						when: function ():Boolean {
							return flags[kFLAGS.D3_DISCOVERED] == 0 && player.hasKeyItem("Zetaz's Map") && rand(5) == 0;
						},
						call: game.lethicesKeep.discoverD3
					}, {
						name: "snowangel",
						when: function ():Boolean {
							return player.gender > 0
								   && flags[kFLAGS.GATS_ANGEL_DISABLED] == 0
								   && flags[kFLAGS.GATS_ANGEL_GOOD_ENDED] == 0
								   && (flags[kFLAGS.GATS_ANGEL_QUEST_BEGAN] == 0
									   || player.hasKeyItem("North Star Key"));
						},
						call: game.xmas.snowAngel.gatsSpectacularRouter
					}, {
						name: "minerva",
						when: function ():Boolean {
							return flags[kFLAGS.MET_MINERVA] < 4;
						},
						call: minervaScene.encounterMinerva
					}, {
						name: "minomob",
						when: function ():Boolean {
							return flags[kFLAGS.ADULT_MINOTAUR_OFFSPRINGS] >= 3 && player.hasVagina();
						},
						call: minotaurMobScene.meetMinotaurSons,
						mods: [game.commonEncounters.furriteMod]
					}, {
						name: "harpychicken",
						when: function ():Boolean {
							return player.hasItem(consumables.OVIELIX)
								|| flags[kFLAGS.TIMES_MET_CHICKEN_HARPY] <= 0
						},
						chance: function():Number { return player.itemCount(consumables.OVIELIX); },
						call: chickenHarpy
					}, {
						name: "phoenix",
						when: game.dungeons.checkPhoenixTowerClear,
						call: phoenixScene.encounterPhoenix
					}, {
						name: "minotaur",
						when: function ():Boolean {
							return flags[kFLAGS.MINOTAUR_CUM_ADDICTION_STATE] > 0;
						},
						call: minoRouter,
						mods: [game.commonEncounters.furriteMod]
					}, {
						name: "harpy",
						call: harpyEncounter
					}, {
						name: "basilisk",
						call: basiliskScene.basiliskGreeting
					}, {
						name: "cockatrice",
						call: cockatriceScene.greeting,
						when: function():Boolean {
							return flags[kFLAGS.COCKATRICES_UNLOCKED] > 0;
						}
					}, {
						name: "sophie",
						when: function ():Boolean {
							return flags[kFLAGS.SOPHIE_BIMBO] <= 0
								&& flags[kFLAGS.SOPHIE_DISABLED_FOREVER] <= 0
								&& !game.sophieFollowerScene.sophieFollower();
						},
						call: game.sophieScene.sophieRouter
					}, {
						name: "nephilacoven",
						chance: function ():Number {
							return player.hasStatusEffect(StatusEffects.WormsHalf) ? 0.5 : 1;
						},
						when: function ():Boolean {
							return player.hasStatusEffect(StatusEffects.WormsOn)
								&& player.findPerk(PerkLib.NephilaQueen) >= 0
								&& !game.nephilaCovenFollowerScene.nephilaCovenIsFollower();
						},
						call: game.nephilaCovenScene.encounterNephilaCoven
					}, {
						name: "izumi",
						call: izumiScenes.encounter
					}, {
						name:"hike",
						chance:0.2,
						call:hike
					});
			return _explorationEncounter;
		}
		//Explore High Mountain
		public function explore():void {
			clearOutput();
			player.location = "highmountains";
			flags[kFLAGS.DISCOVERED_HIGH_MOUNTAIN]++;
			explorationEncounter.execEncounter();
		}

		public function harpyEncounter():void {
			clearOutput();
			outputText(images.showImage("encounter-harpy"));
			outputText("A harpy wings out of the sky and attacks!");
			unlockCodexEntry(kFLAGS.CODEX_ENTRY_HARPIES);
			startCombat(new Harpy());
			spriteSelect(SpriteDb.s_harpy);
		}

		public function minoRouter():void {
			spriteSelect(SpriteDb.s_minotaur);
			//Cum addictus interruptus!  LOL HARRY POTTERFAG
			if (flags[kFLAGS.MINOTAUR_CUM_ADDICTION_STATE] == 3) //Withdrawal auto-fuck!
				game.mountain.minotaurScene.minoAddictionFuck();
			else {
				game.mountain.minotaurScene.getRapedByMinotaur(true);
				spriteSelect(SpriteDb.s_minotaur);
			}
		}
		//\"Chicken Harpy\" by Jay Gatsby and not Savin he didn't do ANYTHING
		public function chickenHarpy():void {
			clearOutput();
			spriteSelect(SpriteDb.s_chickenHarpy);
			outputText(images.showImage("encounter-chicken-harpy"));
			if (flags[kFLAGS.TIMES_MET_CHICKEN_HARPY] == 0) { //Initial Intro
				outputText("Taking a stroll along the mountains, you come across a peculiar-looking harpy wandering around with a large wooden cart in tow.  She's far shorter and bustier than any regular harpy you've seen before, reaching barely 4' in height but managing to retain some semblance of their thick feminine asses.  In addition to the fluffy white feathers decorating her body, the bird-woman sports about three more combed back upon her forehead like a quiff, vividly red in color.");
				outputText("\n\nHaving a long, hard think at the person you're currently making uncomfortable with your observational glare, you've come to a conclusion - she must be a chicken harpy!");
				outputText("\n\nAs you take a look inside of the cart you immediately spot a large hoard of eggs stacked clumsily in a pile.  The curious collection of eggs come in many colors and sizes, protected by a sheet of strong canvas to keep it all together.");
				outputText("\n\nThe chicken harpy - rather unnerved by the unflattering narration of her appearance you've accidentally shouted out loud - decides to break the ice by telling you about the cart currently holding your interest.");
				outputText("\n\n\"Heya traveller, I noticed you were interested in my eggs here - they're not for sale, but perhaps we can come to some sort of agreement?\"");
				outputText("\n\nYou put a hand to your chin and nod.  You are travelling, that's correct. The chicken harpy takes the gesture as a sign to continue.");
				outputText("\n\n\"Well you see, these eggs don't really grow from trees - in fact, I've gotta chug down at least two or three ovi elixirs to get a good haul with my body, y'know?  Since it's tough for a lil' gal like me to find a few, I like to trade an egg over for some elixirs to those willing to part with them.\"");
				outputText("\n\nSounds reasonable enough, you suppose.  Two or three elixirs for an egg? Doable for sure.");
				outputText("\n\n\"So whaddya say, do y'have any elixirs you can fork over?\"");
			}
			else { //Repeat Intro
				outputText("Taking a stroll along the mountains, you come across a familiar-looking shorty wandering around with a large wooden cart in tow.");
				outputText("\n\nHaving a long, hard think at the person you're currently making uncomfortable with your observational glare, you've come to a conclusion - she must be the chicken harpy!");
				outputText("\n\nYou run towards her as she waves a 'hello', stopping the cart to allow you to catch up.  Giving out her usual spiel about the eggs, she giggles and thrusts out a hand.");
				outputText("\n\n\"Hey sunshine, do y'have any elixirs you can give me today?\"");
			}
			flags[kFLAGS.TIMES_MET_CHICKEN_HARPY]++;
			menu();
			if (player.hasItem(consumables.OVIELIX, 2)) addButton(0, "Give Two", giveTwoOviElix);
			if (player.hasItem(consumables.OVIELIX, 3)) addButton(1, "Give Three", giveThreeOviElix);
			addButton(4, "Leave", leaveChickenx);
		}
		public function giveTwoOviElix():void { //If Give Two
			clearOutput();
			spriteSelect(SpriteDb.s_chickenHarpy);
			player.consumeItem(consumables.OVIELIX);
			player.consumeItem(consumables.OVIELIX);
			outputText(images.showImage("item-oElixir"));
			outputText("You hand over two elixirs, the harpy more than happy to take them from you.  In return, she unties a corner of the sheet atop the cart, allowing you to take a look at her collection of eggs.");
			menu();
			addButton(0, "Black", getHarpyEgg, consumables.BLACKEG);
			addButton(1, "Blue", getHarpyEgg, consumables.BLUEEGG);
			addButton(2, "Brown", getHarpyEgg, consumables.BROWNEG);
			addButton(3, "Pink", getHarpyEgg, consumables.PINKEGG);
			addButton(4, "Purple", getHarpyEgg, consumables.PURPLEG);
			addButton(5, "White", getHarpyEgg, consumables.WHITEEG);
		}
		public function giveThreeOviElix():void { //If Give Three
			clearOutput();
			spriteSelect(SpriteDb.s_chickenHarpy);
			player.consumeItem(consumables.OVIELIX, 3);
			outputText(images.showImage("item-oElixir"));
			outputText("You hand over three elixirs, the harpy ecstatic over the fact that you're willing to part with them.  In return, she unties a side of the sheet atop the cart, allowing you to take a look at a large collection of her eggs.");
			menu();
			addButton(0, "Black", getHarpyEgg, consumables.L_BLKEG);
			addButton(1, "Blue", getHarpyEgg, consumables.L_BLUEG);
			addButton(2, "Brown", getHarpyEgg, consumables.L_BRNEG);
			addButton(3, "Pink", getHarpyEgg, consumables.L_PNKEG);
			addButton(4, "Purple", getHarpyEgg, consumables.L_PRPEG);
			addButton(5, "White", getHarpyEgg, consumables.L_WHTEG);
		}
		public function getHarpyEgg(itype:ItemType):void { //All Text
			clearOutput();
			spriteSelect(SpriteDb.s_chickenHarpy);
			flags[kFLAGS.EGGS_BOUGHT]++;
			outputText(images.showImage("item-egg-harpy"));
			outputText("You take " + itype.longName + ", and the harpy nods in regards to your decision.  Prepping her cart back up for the road, she gives you a final wave goodbye before heading back down through the mountains.\n\n");
			inventory.takeItem(itype, camp.returnToCampUseOneHour);
		}
		public function leaveChickenx():void { //If No
			clearOutput();
			spriteSelect(SpriteDb.s_chickenHarpy);
			outputText(images.showImage("area-highmountains"));
			outputText("At the polite decline of her offer, the chicken harpy gives a warm smile before picking her cart back up and continuing along the path through the mountains.");
			outputText("\n\nYou decide to take your own path, heading back to camp while you can.");
			doNext(camp.returnToCampUseOneHour);
		}

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

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

license: unknown


code:
package classes.Scenes.Areas.HighMountains
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.Scenes.Monsters.StareMonster;
	import classes.internals.ChainedAction;
	import classes.internals.ChainedDrop;
	import classes.GlobalFlags.*

	/**
	 * ...
	 * @author ...
	 */
	public class Basilisk extends StareMonster
	{
		//special 1: basilisk mental compulsion attack
		//(Check vs. Intelligence/Sensitivity, loss = recurrent speed loss each
		//round, one time lust increase):
		private function compulsion():void {
			outputText("The basilisk opens its mouth and, staring at you, utters words in its strange, dry, sibilant tongue.  The sounds bore into your mind, working and buzzing at the edges of your resolve, suggesting, compelling, then demanding you look into the basilisk's eyes.  ");
			//Success:
			if (player.inte / 5 + rand(20) < 24 + player.newGamePlusMod() * 5) {
				//Immune to Basilisk?
				if (player.findPerk(PerkLib.BasiliskResistance) >= 0 || player.canUseStare() || player.hasKeyItem("Laybans")) {
					outputText("You can't help yourself... you glimpse the reptile's gray, slit eyes. However, no matter how much you look into the eyes, you do not see anything wrong. All you can see is the basilisk. The basilisk curses as he finds out that you're immune!");
				}
				else {
					outputText("You can't help yourself... you glimpse the reptile's gray, slit eyes. You look away quickly, but you can picture them in your mind's eye, staring in at your thoughts, making you feel sluggish and unable to coordinate. Something about the helplessness of it feels so good... you can't banish the feeling that really, you want to look in the basilisk's eyes forever, for it to have total control over you.");
					game.dynStats("lus", 3);
					//apply status here
					speedReduce(player, 20);
					player.createStatusEffect(StatusEffects.BasiliskCompulsion,0,0,0,0);
					flags[kFLAGS.BASILISK_RESISTANCE_TRACKER] += 2;
				}
			}
			//Failure:
			else {
				outputText("You concentrate, focus your mind and resist the basilisk's psychic compulsion.");
			}

		}

		//Special 3: basilisk tail swipe (Small physical damage):
		private function basiliskTailSwipe():void {
			outputText("The basilisk suddenly whips its tail at you, swiping your " + player.feet() + " from under you!  You quickly stagger upright, being sure to hold the creature's feet in your vision.  ");
			if (damage == 0) outputText("The fall didn't harm you at all.  ");
			var damage:Number = int((str + 20) - Math.random()*(player.tou+player.armorDef));
			damage = player.takeDamage(damage, true);

		}

		//basilisk physical attack: With lightning speed, the basilisk slashes you with its index claws!
		//Noun: claw

		override protected function performCombatAction():void
		{
			var actionChoices:ChainedAction = new ChainedAction(eAttack);

			if (!player.hasStatusEffect(StatusEffects.BasiliskCompulsion) && !hasStatusEffect(StatusEffects.Blind))
				actionChoices.add(compulsion, 1 / 3);

			actionChoices.add(basiliskTailSwipe, 1 / 3);

			actionChoices.exec();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.highMountains.basiliskScene.defeatBasilisk();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			if (pcCameWorms){
				outputText("\n\nThe basilisk smirks, but waits for you to finish...");
				doNext(game.combat.endLustLoss);
			} else {
				game.highMountains.basiliskScene.loseToBasilisk();
			}
		}

		override public function playerLossCondition():Function {
			if (player.spe <= 1) return game.combat.endHpLoss;
			return null;
		}

		override public function get long():String
		{
			if (player.hasPerk(PerkLib.BasiliskResistance) || player.canUseStare() || player.hasKeyItem("Laybans")) {
				return "You are fighting a basilisk!  The basilisk is a male " + (game.noFur() ? "scaled humanoid" : "reptilian biped") + " standing a bit over 6' tall.  He has a thin but ropy build, his tightly muscled yellow " + (game.noFur() ? "abdomen" : "underbelly") + " the only part of his frame not covered in those deceptive, camouflaging gray-green scales.  A long, whip-like tail flits restlessly through the dirt behind his skinny legs, and sharp sickle-shaped index claws decorate each hand and foot.  His " + (game.noFur() ? "face is human, with a cruel jaw" : "face has a cruel jaw, a blunt lizard snout") + " and a crown of dull spines.";
			} else {
				return "You are fighting a basilisk!  From what you can tell while not looking directly at it, the basilisk is a male " + (game.noFur() ? "scaled humanoid" : "reptilian biped") + " standing a bit over 6' tall.  He has a thin but ropy build, his tightly muscled yellow " + (game.noFur() ? "abdomen" : "underbelly") + " the only part of his frame not covered in those deceptive, camouflaging gray-green scales.  A long, whip-like tail flits restlessly through the dirt behind his skinny legs, and sharp sickle-shaped index claws decorate each hand and foot.  You don't dare to look at his face, but you have the impression of " + (game.noFur() ? "a human face with a cruel jaw" : "a cruel jaw, a blunt lizard snout") + " and a crown of dull spines.";
			}
		}

		override public function react(context:int):Boolean{
			switch(context){
				case CON_BEFOREATTACKED:
					if (player.findPerk(PerkLib.BasiliskResistance) < 0 && !game.combat.isWieldingRangedWeapon() && player.statusEffectv1(StatusEffects.CounterAB) != 1) {
						if (hasStatusEffect(StatusEffects.Blind))
							outputText("Blind basilisk can't use his eyes, so you can actually aim your strikes!  ");
						//basilisk counter attack (block attack, significant speed loss):
						else if (player.inte/5 + rand(20) < 25) {
							outputText("Holding the basilisk in your peripheral vision, you charge forward to strike it.  Before the moment of impact, the reptile shifts its posture, dodging and flowing backward skillfully with your movements, trying to make eye contact with you. You find yourself staring directly into the basilisk's face!  Quickly you snap your eyes shut and recoil backwards, swinging madly at the lizard to force it back, but the damage has been done; you can see the terrible gray eyes behind your closed lids, and you feel a great weight settle on your bones as it becomes harder to move.");
							speedReduce(player,20);
							player.removeStatusEffect(StatusEffects.FirstAttack);

							flags[kFLAGS.BASILISK_RESISTANCE_TRACKER] += 2;
							return false;
						}
						//Counter attack fails: (random chance if PC int > 50 spd > 60; PC takes small physical damage but no block or spd penalty)
						else {
							outputText("Holding the basilisk in your peripheral vision, you charge forward to strike it.  Before the moment of impact, the reptile shifts its posture, dodging and flowing backward skillfully with your movements, trying to make eye contact with you. You twist unexpectedly, bringing your " + player.weaponName + " up at an oblique angle; the basilisk doesn't anticipate this attack!  ");
						}
					}
					break;
			}
			return true;
		}

		public function Basilisk()
		{
			this.a = "the ";
			this.short = "basilisk";
			this.imageName = "basilisk";
			this.long = ""; // Needs to be set to supress validation errors, but is handled by the override.
			this.race = "Basilisk";
			// this.plural = false;
			this.createCock(6,2);
			this.balls = 2;
			this.ballSize = 2;
			createBreastRow(0);
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,30,0,0,0);
			this.tallness = 6*12+2;
			this.hips.rating = Hips.RATING_SLENDER+1;
			this.butt.rating = Butt.RATING_AVERAGE;
			this.lowerBody.type= LowerBody.LIZARD;
			this.face.type = (game.noFur() ? Face.HUMAN : Face.LIZARD);
			this.ears.type = Ears.LIZARD;
			this.eyes.type = Eyes.BASILISK;
			this.hair.type = Hair.BASILISK_SPINES;
			this.skin.tone = "gray-green";
			this.skin.setType(Skin.LIZARD_SCALES);
			this.hair.color = "gray-green";
			this.hair.length = 2;
			initStrTouSpeInte(85, 70, 35, 70);
			initLibSensCor(50, 35, 60);
			this.weaponName = "claws";
			this.weaponVerb="claw";
			this.weaponAttack = 30;
			this.armorName = "scales";
			this.armorDef = 10;
			this.armorPerk = "";
			this.armorValue = 70;
			this.bonusHP = 200;
			this.lust = 30;
			this.lustVuln = .5;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 12;
			this.gems = rand(10) + 10;
			this.drop = new ChainedDrop().add(consumables.REPTLUM, 0.9)
					.elseDrop(useables.EBNFLWR);
			this.tail.type = Tail.LIZARD;
			this.tail.recharge = 0;
			this.createPerk(PerkLib.BasiliskResistance, 0, 0, 0, 0);
			checkMonster();
		}

	}

}


code:
package classes.Scenes.Areas.HighMountains
{
	import classes.*;
	import classes.BodyParts.*;
	import classes.BodyParts.Hips;
	import classes.Scenes.Monsters.StareMonster;
	import classes.internals.MonsterAI;
	import classes.internals.WeightedDrop;
	import classes.GlobalFlags.*

	/**
	 * ...
	 * @author ...
	 */
	public class Cockatrice extends StareMonster
	{
		public var spellCostCompulsion:int = 20;
		public var spellCostTailSwipe:int  = 25;
		public var spellCostSandAttack:int = 15;

		//special 1: cockatrice compulsion attack
		//(Check vs. Intelligence/Sensitivity, loss = recurrent speed loss each
		//round, one time lust increase):
		private function compulsion():void
		{
			if (fatigue > (100 - spellCostCompulsion)) {
				// Normal attack because too fatigued
				eAttack();
				return;
			}
			outputText("The cockatrice opens its " + (game.noFur() ? "mouth" : "beak") + " and, staring at you, utters words in its melodic tongue. The song wraps around your mind,"
			          +" working and burrowing at the edges of your resolve, suggesting, compelling,"
			          +" then demanding you to look into the cockatrice’s eyes.  ");
			//Success:
			if (player.inte / 5 + rand(20) < 24 + player.newGamePlusMod() * 5) {
				//Immune to Basilisk?
				if (player.findPerk(PerkLib.BasiliskResistance) >= 0 || player.canUseStare() || player.hasKeyItem("Laybans")) {
					outputText("You can't help yourself... you glimpse the cockatrice’s lightning blue eyes. However, no matter how much you look"
					          +" into the eyes, you do not see anything wrong. All you can see is the cockatrice."
					          +" The cockatrice curses as he finds out that you're immune!");
				}
				else {
					outputText("You concentrate, but can’t help but look into those lightning blue orbs. You look away quickly, but you can picture"
					          +" them in your mind’s eye, staring in at your thoughts, making you feel sluggish and unable to coordinate."
					          +" Something about the helplessness of it feels so good... you can’t banish the feeling that really,"
					          +" you want to look in the cockatrice’s eyes forever, for it to have total control over you.");
					player.takeLustDamage(3, true);
					//apply status here
					speedReduce(player, 20);
					player.createStatusEffect(StatusEffects.BasiliskCompulsion,0,0,0,0);
					flags[kFLAGS.BASILISK_RESISTANCE_TRACKER] += 2;
				}
			}
			//Failure:
			else {
				outputText("You concentrate, focus your mind and resist the cockatrice’s musical compulsion.");
			}
			fatigue += spellCostCompulsion;
		}

		//Special 2: cockatrice sand attack (blinds for 2-4 turns, 50% chance of success on hit):
		private function sandAttack():void
		{
			if (fatigue > (100 - spellCostSandAttack)) {
				// Normal attack because too fatigued
				eAttack();
				return;
			}
			outputText("The cockatrice [if (monster.canFly)unfurls his wings, flapping them hard against the ground. He whips up a flurry of loose"
			          +" dirt and rocks, directing it at you as he soars above you.|sweeps his tail along the ground, whipping up a flurry of loose"
			          +" dirt and small rocks. With a swift movement he then swipes across at you, flinging debris in your direction.]  ");
			if (player.spe / 5 + rand(20) < 28 + player.newGamePlusMod() * 5) { // dodge chance here
				if (rand(2) == 0) {
					// Hit
					outputText("The dirt and rocks engulf you, causing you to try to cover your eyes. You fail to move fast enough,"
					          +" dirt getting in your eyes, making them stream with tears and temporarily blinding you.");
					player.createStatusEffect(StatusEffects.Blind, 2 + rand(3), 0, 0, 0);
				} else {
					// Miss
					outputText("The dirt and rocks engulf you, causing you to cover your eyes."
					          +" You manage to cover them fast enough to block out the dirt, it showering you for a while before it settles again.");
				}
			} else {
				// Fail
				outputText("You thankfully manage to avoid the attack entirely, the mess of dust and dirt going wide of you.");
			}
			fatigue += spellCostSandAttack;
		}

		//Special 3: basilisk tail swipe (Small physical damage):
		private function tailSwipe():void
		{
			if (fatigue > (100 - spellCostTailSwipe)) {
				// Normal attack because too fatigued
				eAttack();
				return;
			}
			outputText("The cockatrice suddenly whips its tail at you, swiping your " + player.feet() + " from under you!  You quickly stagger upright, being sure to hold the creature's feet in your vision.  ");
			var damage:Number = int((str + 20) - Math.random()*(player.tou+player.armorDef));
			damage = player.takeDamage(damage, true);
			if (damage == 0) outputText("The fall didn't harm you at all.  ");
			fatigue += spellCostTailSwipe;
		}

		//Tease attack
		private function cockaTease():void
		{
			if (rand(2) == 0) {
				outputText("The cockatrice turns around slowly, looking over his shoulder as he slowly lifts his tail to reveal his tight rump."
				          +" He rubs his clawed fingers over the taut flesh of his " + (game.noFur() ? "" : "feathered ") + "cheeks, before his tail cracks against one cheek"
				          +" like a whip. You can’t help but flush at his brazen display.");
			} else {
				outputText("The cockatrice casually leans against a nearby rock, a scaled finger trailing down his lithe stomach and tracing around"
				          +" the edge of his genital slit as he looks to the distance. As the tip of his thick purple member starts to peek out he"
				          +" looks over at you with a smouldering gaze, cocking his head to the side as if beckoning you to ‘come play’."
				          +" You seriously consider his offer as you feel your loins burn with desire.");
			}
			player.takeLustDamage(12 + rand(player.lib / 8), true);
		}

		//basilisk physical attack: With lightning speed, the basilisk slashes you with its index claws!
		//Noun: claw

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI()
				.add(sandAttack, 40,true,spellCostSandAttack,FATIGUE_PHYSICAL,RANGE_RANGED)
				.add(cockaTease, 40,true,0,FATIGUE_NONE,RANGE_TEASE)
				.add(tailSwipe,  30,true,spellCostTailSwipe,FATIGUE_PHYSICAL,RANGE_MELEE)
				.add(eAttack,    20,true,0,FATIGUE_NONE,RANGE_MELEE);

			if (!player.hasStatusEffect(StatusEffects.BasiliskCompulsion) && !hasStatusEffect(StatusEffects.Blind))
				actionChoices.add(compulsion, 40,true,spellCostCompulsion,FATIGUE_NONE,RANGE_RANGED);

			actionChoices.exec();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.highMountains.cockatriceScene.defeatCockatrice();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			clearOutput();
			if (hpVictory) {
				player.HP = 1;
				outputText("Your wounds are too great to bear, and you fall unconscious.");
			}

			if (pcCameWorms) {
				outputText("\n\nThe cockatrice smirks, but waits for you to finish...");
				doNext(game.combat.endLustLoss);
			} else {
				game.highMountains.cockatriceScene.loseToCockatrice();
			}
		}

		public function Cockatrice()
		{
			this.a = "the ";
			this.short = "cockatrice";
			this.imageName = "cockatrice";
			this.long = "The cockatrice before you stands at about 6 foot 2. The harpy/basilisk hybrid hops from one clawed foot to the other,"
			           +" its turquoise neck ruff puffed out. From the creatures flat chest and tight butt, you assume that it must be male."
			           +" He watches you, his electric blue eyes glinting as his midnight blue tail swishes behind him. Every so often he lunges"
			           +" forward" + (game.noFur() ? "" : ", beak open") + " before revealing it was a feint. He is wielding his sharp claws as a weapon and is shielded only by his"
			           +" exotic plumage and " + (game.noFur() ? "scaled limbs" : "cream scaled belly") + "."
			           +" [if (monster.canFly) Every so often he spreads his large feathered wings in an attempt to intimidate you.]"
			           +" His lizard like feet occasionally gouge into the rubble of the plateau, flinging it up as he shifts his stance. ";
			this.race = "Cockatrice";
			// this.plural = false;
			this.createCock(8,2, CockTypesEnum.LIZARD);
			this.balls = 2;
			this.ballSize = 2;
			this.cumMultiplier = 4;
			createBreastRow(0);
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,30,0,0,0);
			this.tallness = 6*12+2;
			this.hips.rating = Hips.RATING_AMPLE;
			this.butt.rating = Butt.RATING_TIGHT;
			this.lowerBody.type= LowerBody.COCKATRICE;
			this.face.type = Face.COCKATRICE;
			this.tongue.type = Tongue.LIZARD;
			this.ears.type= Ears.COCKATRICE;
			this.eyes.type = Eyes.COCKATRICE;
			this.hair.type = Hair.FEATHER;
			this.skin.tone = "midnight blue";
			this.skin.setType(Skin.LIZARD_SCALES);
			this.hair.color = "blue";
			this.hair.length = 2;
			/*
			// Bassy:
			initStrTouSpeInte(85, 70, 35, 70);
			initLibSensCor(50, 35, 60);
			// Harpy:
			initStrTouSpeInte(60, 40, 90, 40);
			initLibSensCor(70, 30, 80);
			*/
			initStrTouSpeInte(65, 50, 85, 70);
			initLibSensCor(65, 25, 20);
			this.weaponName = "talons";
			this.weaponVerb = "claw";
			this.weaponAttack = 30;
			this.armorName = "scales and feathers";
			this.armorDef = 10;
			this.armorPerk = "";
			this.armorValue = 70;
			this.bonusHP = 200;
			this.lust = 30;
			this.lustVuln = .5;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 14;
			this.gems = rand(10) + 10;
			this.drop = new WeightedDrop()
				.add(consumables.REPTLUM, 35)
				.add(consumables.GLDSEED, 35)
				.add(consumables.TOTRICE, 20)
				.add(null,                10);
			this.tail.type = Tail.COCKATRICE;
			this.tail.recharge = 0;
			this.createPerk(PerkLib.BasiliskResistance, 0, 0, 0, 0);
			checkMonster();
		}
	}
}