code:
// By Foxwells
// No wolf-fucking scenes because NO BESTIALITY. This is a WOLF and I am not having you fuck a LITERAL, NON-MORPH, ACTUAL WOLF.
// Note: You get bad-ended if you lose 5 times in a row. Amarok eats you. I avoided vore fetish as best as I could (though I admit to making some miscellaneous jokes about it in commentary), did my best not to sexualise it. I don't like vore either. Shit's weird. Anyway if I crossed a line, let me know and I'll fix it.

package classes.Scenes.Areas.GlacialRift
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.display.SpriteDb;
	import classes.internals.*;

	public class AmarokScene extends BaseContent
	{

		public function AmarokScene()
		{
		}

		public function amarokChowTime():void {
		//He's not actually going to eat you. Unless you fuck up 5 times.
			clearOutput();
			spriteSelect(SpriteDb.s_amarok);
			flags[kFLAGS.AMAROK_LOSSES]++;
			if (player.HP <= 0) {
				outputText("Your legs give out under you and your " + player.weaponName + " falls into the snow. The Amarok has you beat. Your face crashes into the snow, a refreshing cool on the heat of your wounds. You raise your head at the sound of footsteps and find yourself staring at the Amarok's nose as it sniffs you. You let your head drop and resign yourself to fate.");
				amarokFlagCheck();
			}
			else { //If you lust lost you kinda deserve it, he shouldn't tease if I did this right.
				outputText("You collapse into the snow, your lust uncontrollable. As your hand reaches for your loins, you silently curse yourself for bringing yourself to this state. You raise your head at the sound of footsteps and find yourself staring at the Amarok's nose as it sniffs you. You let your head drop and resign yourself to fate.");
				amarokFlagCheck();
			}
		}

		public function amarokFlagCheck():void {
			if (player.hasStatusEffect(StatusEffects.Infested)) {
				amarokNoEat();
			}
			else if (flags[kFLAGS.AMAROK_LOSSES] >= 5) {
				amarokBadEnd();
			}
			else if (flags[kFLAGS.AMAROK_LOSSES] < 5) {
				amarokChompo();
			}
		}

		public function amarokLustDefeatFemaleAdult():void{
			clearOutput();
			outputText("You're tackled over as you show your weakness to the wolf, leaving you on your knees. As you try to push yourself back up you're mounted and the full body weight of the wolf holds you down.");
			outputText("\n\nWith no strength left to get up, the wolf claims his prize immediately." + player.clothedOrNaked("You're surprised when you feel the wolf has somehow stripped you of your [armor]", "Being naked makes the creature's job much easier") + " as it begins sticking his wolf cock to the lips of your [vagina] and pushing forward, penetrating you.");
			player.cuntChange(monster.cockArea(0),true);
			outputText("\nAs he accommodates himself inside you, his hind legs get to work on filling your snatch with thick red dog dick, leaving you to groan on the floor as the wolf breeds you. While your arms may push against the snow, there's nothing stopping the beast on your back.");
			outputText("\n\nHe picks up the pace and slams harder against you, his slobber dripping onto your face as he starts panting. You feel every inch of his dick slide in and out of your [vagina] as you're abused by the wolf for his own animalistic pleasure.");
			outputText("The wolf shifts a bit, pushing more of its weight into its lower body as you start feeling an absurd pressure against your now abused [vagina]. It dawns on you exactly what he's going to do. With a sudden scramble you try your hardest to get away, whimpering and whining as you pull at the ground and snow to free yourself. Suddenly, you feel his sharp teeth on both ends of your neck. Quickly putting an end to your rebellion.");
			if (player.vaginas[0].vaginalLooseness < Vagina.LOOSENESS_GAPING_WIDE){
			outputText("\n\nThe Amarok's cock meat throbs hard, stretching your breeding hole wide as he swiftly manages to slide his knot inside of you, causing you, despite your shame, to start having an orgasm");
			if (player.vaginas[0].vaginalWetness < 3) outputText(" squirting ");
			else outputText(" splattering ");
			outputText(" your juices onto the dog's sheath and balls. You let out a muffled cry of pain, and you do your best to hold it back, not wanting to feel the wrath of the canine's teeth.");
			}else{
			outputText("The wolf's knot slides right in, knotting you instantly, without any effort on the canine's part. You give yourself to your pleasure, letting out a gasp and a quiet yet drawn out moan you quickly reach your own orgasm that coats the alpha's prick with your" +(player.vaginas[0].vaginalWetness < 3 ? " slick " : " copious " )+ "juices.");
			}
			outputText("As the humiliation comes to an end, you feel your womb being splattered and filled with his sperm. When you think it's all over, you realize you're going to be stuck like this for the next few hours...");
			player.orgasm('Vaginal');
			combat.cleanupAfterCombat();
			doNext(camp.returnToCampUseTwoHours);
		}

		public function amarokLustDefeatFemaleChild():void{
			clearOutput();
			outputText("Feeling dazed from the wolf's aggression but still willing to fight, you ready your [weapon], only for it and yourself to be knocked over by the beast's sheer mass. You slam hard against the floor, lightly scraping your back on a rock, as if the pain from the mean wolf's bites weren't enough.");
			outputText("\n\nThe wolf slowly pads and circles around you. Hearing his paws press against the snow and rocks your head turns to follow his movements. As you lock eyes with the wolf, he lunges at you, landing straight on top of you, with your head between his hind legs." + player.clothedOrNakedLower(" You hear the harsh tearing noise of your [armor] being removed from your body and", " You feel ") + " a hot breath run over your young [vagina].");
			outputText("\nYou watch and stay completely still, in fear of what he'll do next, but your curious eyes peer up at the wolf's cock, bobbing up and down with need, splatters of precum hitting your face. Your hips suddenly rise a few inches and you let out a short gasp, reacting to the dominant wolf's tongue dragging over your [vagina]. You feel yourself feeling tingly and ticklish again as the wolf continues lapping.");
			outputText("\n\nYour mouth stays open with soft gasps that each lick brings you. The wolf lowers his hind legs and you're suddenly assaulted by the smell and taste of salty doggy cock. Before you can react, the canine's cock is humping into your mouth, starting to fuck your agasp mouth. You squirm and try to get him to stop. The Amarok is aware of his superior mass and doesn't bother to react, knowing you can't get him off of you.");
			outputText("That tingly feeling is constantly there, rising as you feel his flat tongue lap over your [clit], but it's overwhelmed by the fear of choking on the full length of wolfy cock as he continues his assault on your mouth, causing you to gag and covering the inside of your mouth with precum.");
			outputText("\n\nIn your urgency to get away, you dig your heels into the snow to try and push yourself off from the licking and the canine cock. You try your hardest, but the Amarok's strength keeps its cock in your mouth, causing you to accidentally deepthroat the mutt. With in an instant your mouth fills with hot salty liquid that pours out of his cock, overflowing and causing you to sputter and cough half of it out in desperation.");
			outputText("\n\nOnce the wolf is finished ramming itself into your mouth, it removes its cock from your lips and begins padding away, leaving you feeling tingly and covered in aromatic cum.");
			dynStats("lus", 30);
			combat.cleanupAfterCombat();
			doNext(camp.returnToCampUseOneHour);
		}

		public function amarokLustDefeatMaleAdult():void{
			clearOutput();
			outputText("Weakened, you buckle over onto your knees. Your palms grip the snow below you. The wolf slowly pads around you. It leaves your field of vision, and when you think he's walked off, " + player.clothedOrNakedLower(" the wolf latches at the bottom of your [armor], rending them from your body.", " you hear the sound of his sniffing by your back.") +" With your [ass] on display, you're struck with fear over what he'll do next.");
			outputText("\n\nThe wolf presses his cold snout to your ass, making you jump for a moment with shock, before a warm breath and a wet tongue lap over your ring, licking your ass and drenching it in saliva. While weird at first, the feeling soon becomes pleasant. Suddenly, the wolf mounts you by your ass and immediately begins sinking his cock into you.");
			outputText("\nYou clench your teeth, looking behind you briefly to see the wolf's piercing eyes stare back at you. His pupils contract as your gaze meets his; he considers your stare a challenge! He picks up the pace, and the assault on your ass increases in intensity. You feel it being stretched, every inch of the red veiny cock sliding into your [asshole].");
			outputText("\n\nThe canine's sheer weight keeps you against the snow, face down, degrading you with each violent thrust into your ass. You only hope this will end shortly, hating how much your body betrays you as your [cock] throbs violently under you with need to release.");
			outputText(" When the canine has finally gotten you loose enough, he begins pushing the thick red bulb into your asshole.");
			if(player.ass.analLooseness <= 3){
			outputText("You cringe and groan, letting out a yell of pain as your ass is stretched out to its limits.");
			}else{
			outputText("You breathe deeply, used to having your ass stretched, but still overwhelmed by the sheer size of the cock filling you.");
			}
			outputText("\n\nThe growling continues as he knots you, your ass stretched around his cock as he starts rocking back and forth. The knot and cock grind against your prostate, sending several pulses of unwanted pleasure towards your tingling dick, beads of pre dripping onto the snow and quickly disappearing.");
			outputText("\n\nAfter several thrusts, you feel the canine cock inside you tense up, signalling the Amarok's climax. Your insides are flooded with thick gooey strands of hot wolf semen, enough to fill you to the brim. Your own mind is awash with lust, the heat warming your insides. The feel of cum and the extra pressure caused by his orgasm tips you over the edge, and you start shooting strands of your own cum right onto the ground, covering the snow with your seed.");
			if (player.cumQ() <= 150) outputText(" Against the white backdrop of the Glacial Rift, your strands of cum quickly merge with the snow and become indistinguishable.");
			else outputText(" Your cum forms a visible white pool against the snow, melting some of it.");
			outputText("\n\nWhen you think the humiliation is over, it dawns on you that you two will be stuck like this for the next hour or so. You close your eyes, hoping you can somehow sleep through this.");
			player.orgasm('Anal');
			player.buttChange(20, true);
			combat.cleanupAfterCombat();
			doNext(camp.returnToCampUseTwoHours);

		}

		public function amarokLustDefeatMaleHermChild():void{
			clearOutput();
			outputText("Feeling dazed from the wolf's aggression but still willing to fight, you ready your [weapon], only for it and yourself to be knocked over by the beast's sheer mass. You slam hard against the floor, lightly scraping your back on a rock, as if the pain from the mean wolf's bites weren't enough.");
			outputText("\n\nThe wolf slowly pads and circles around you. Hearing his paws press against the snow and rocks your head turns to follow his movements. As you lock eyes with the wolf, he lunges at you, landing straight on top of you, with your head between his hind legs." + player.clothedOrNakedLower(" You hear the harsh tearing noise of your [armor] being removed from your body and", " You feel ") + " a hot breath run over your young [cock].");
			outputText("\nYou watch and stay completely still, in fear of what he'll do next, but your curious eyes peer up at the wolf's cock, bobbing up and down with need, splatters of precum hitting your face. Your hips suddenly rise a few inches and you let out a short gasp, reacting to the dominant wolf's tongue dragging over your [cock]. You feel yourself feeling tingly and ticklish again as the wolf continues lapping.");
			outputText("\n\nYour mouth stays open with soft gasps that each lick brings you. The wolf lowers his hind legs and you're suddenly assaulted by the smell and taste of salty doggy cock. Before you can react, the canine's cock is humping into your mouth, starting to fuck your agasp mouth. You squirm and try to get him to stop. The Amarok is aware of his superior mass and doesn't bother to react, knowing you can't get him off of you.");
			outputText("That tingly feeling is constantly there, rising as you feel his flat tongue lap over your [cockhead], but it's overwhelmed by the fear of choking on the full length of wolfy cock as he continues his assault on your mouth, causing you to gag and covering the inside of your mouth with precum.");
			outputText("\n\nIn your urgency to get away, you dig your heels into the snow to try and push yourself off from the licking and the canine cock. You try your hardest, but the Amarok's strength keeps its cock in your mouth, causing you to accidentally deepthroat the mutt. With in an instant your mouth fills with hot salty liquid that pours out of his cock, overflowing and causing you to sputter and cough half of it out in desperation.");
			outputText("\n\nOnce the wolf is finished ramming itself into your mouth, it removes its cock from your lips and begins padding away, leaving you feeling tingly, hard, and covered in aromatic cum.");
			dynStats("lus", 30);
			combat.cleanupAfterCombat();
			doNext(camp.returnToCampUseOneHour);

		}

		public function amarokVictoryMale():void{
			clearOutput();
			outputText("The wolf, admitting defeat, bows before you, backing up a little.");
			outputText("\nHowever, with your [cock longest]" + player.clothedOrNakedLower(" pressing against the inside of your [armor] ", " visibly hard and throbbing ") + ", you decide to take advantage of the pesky mutt. You get on top of the wolf and shove your musky dick to his nose. He whines softly at first, but soon gets used to the smell.");
			outputText("Giving over rights of being alpha to you, the canine takes a long drawn out lick to the top of your cock, slathering it in your saliva with each lick.");
			outputText("You lay your head back and let the mutt lap at your dick for a while, your [cock longest] pulsing against its tongue.\n\n");
			if (player.longestCockLength() < 15) outputText("The wolf suddenly takes your length into his mouth");
			else outputText("The wolf suddenly takes as much of your length into his mouth as he can fit");
			outputText(", causing your stomach to sink in fear the creature may have decided to bite your [cock longest]. You soon relax, however, noticing it began suckling and lapping eagerly at your cock. Soon your [cock longest] is fully lubricated. You push the wolf from your cock and get behind him.");
			//[Small cock size (1-3.5 inches)]
			if (player.longestCockLength() < 4) outputText("\n\nYou sink your cock straight into the wolf's ass. It feels wonderful, quickly making you leak a bead of precum into his ass. The wolf lets out a soft whimper as you begin rocking back and forth, causing the wolf to groan in either discomfort or arousal.");
			//[Average cock size (4-9 inches)]
			else if (player.longestCockLength() < 10) outputText("\n\nYou bite your lips as you sink your cock slowly into the wolf's ass, having to stop now and again from the sheer tightness of the wolf's fuckhole. The creature yelps at first from the size of your cock but he slowly gets comfortable and relaxes. You begin slowly rocking back and forth, abusing the wolf. You hear him whine and pant harder as it gets used to your intrusion.");
			else outputText("\n\nYou sink your tip into the wolf and it yelps in pain. You worry about how much this mutt can take if it is already whining about the girth of your cockhead. Slowly, you push another inch in, then another, and then another. Every inch of penetration causes the wolf to let out an audible whine. After a few agonizing moments, you've inserted your entire [cock longest] into the mutt. You begin rocking back and forth, delighted by the tightness around your cock, hugging your dick and squeezing it each time you tug back, almost too tight to thrust.");
			outputText("\n\nGripping the wolf's fur, you start using him for your full gain. You thrust with extra vigor,  slamming against the Amarok's ass. The wolf's whines stop, giving way to slow panting, his own prick throbbing and drooling musty precum onto the snow below.");
			outputText("\nYou reach down, doing the dog a favor and grabbing that needy cock, stroking and milking it. The wolf humps your hand, but you quickly punish his eagerness by smacking his prick off. He yelps out in pain but understands the message once you put your hand back on it. You continue your stroking as the wolf refrains from humping, not wanting to anger you any more.");
			outputText("\n\nHis ass squeezes your dick constantly, pulling your cock back into him nearly every time you pull back. The pleasure nearly overwhelms you as your throbbing, aching [cock longest] drools precum, " + (player.balls > 0 ? " your [balls] tightening":" your taint tensing") + " warning you of your impending orgasm.");
			outputText("\nSeveral thrusts in and the wolf's cock is the first to blow, shooting hot mutt cum all over the cold snow. Each throb of the wolf's cock is a twitch around your own as you start reaching your peak.");
			if (player.cumQ() < 300) outputText(" Grabbing the wolf and pushing him face down into the snow, you arch your back and let out a loud animalistic grunt as you push as much into the canine's ass as you can, your body in ecstasy as you release torrents of cum into the pup. The wolf whines in pleasure, unfamiliar with the pleasure of being filled.");
			else{
			outputText(" Grabbing the wolf and pushing him face down into the snow, you arch your back and let out a loud animalistic grunt as you push as much into the canine's ass as you can, your body in ecstasy as you release letting a gargantuan flood of cum into the pup. The wolf whines in pain as you fill him to the brim, his stomach visibly expanding some as cum gushes out of his ass and onto the ground below.");
			}
			outputText("\n\nThe two of you fall to the ground, exhausted. When you leave your post-orgasm high, you notice the wolf is nowhere to be seen.");
			player.orgasm('Penis');
			combat.cleanupAfterCombat();

		}

		private function amarokNoEat():void { //He doesn't want to eat worms
			clearOutput();
			spriteSelect(SpriteDb.s_amarok);
			outputText("\n\nMuch to your surprise, however, the Amarok suddenly backs away with a low growl. It resumes sniffing you at a distance, eventually coming over to your lower half. The worms inside you wriggle about, and you let out a low groan of discomfort. As though on cue, the Amarok take a sniff of your crotch, then promptly backs off with another snarl. It must be able to detect your worm infestation, and more importantly, not like it! It turns away and kicks snow on you with one of its back legs, letting out a huff of irritation. You watch it walk off as blackness washes over your vision.");
			combat.cleanupAfterCombat();
		}

		private function amarokChompo():void {
			clearOutput();
			outputText(images.showImage("amarok-chompo"));
			spriteSelect(SpriteDb.s_amarok);
			outputText("It lets out a soft bark as you close your eyes and skips to the other side of you. You remain still in fear of what it plans to do. It picks you by your neck. Its grip isn't hard enough to even break your skin, but firm enough that it won't drop you. It then begins to drag you somewhere. Something in your mind tells you to struggle, but you can't seem to muster the will to try. It'd just bite through your neck and kill you anyway. The feeling of its hot breath running down your back is oddly soothing. You open your eyes long enough to make sense of your surroundings, then pass out.");
			outputText("\n\nYou awaken some time later to a chorus of yips. You've stopped moving. You're on the ground, with small paws and dull teeth prodding you all over. They don't hurt you outside of being uncomfortable, but you're sure you'll be left with bruises. You focus your vision and slowly make out where you are--the side of a short cliff, protected from snow by tall trees. You're laying atop of pine needles and dead leaves. A strong scent of feces causes you to jolt upright in disgust, and something that'd been gnawing on your ear fell to the ground with a squeak. You look back at it. It's a black wolf pup, likely the Amarok's. You spot three others scattered about the den. You must have been left as food for them. The pups, however, seem much more interested in using you as a toy than a meal. You get to your feet, shaking off the pups. You don't feel like sticking around for them to change their minds.");
			outputText("\n\nYou spot your " + player.armorName + " a bit away. It must've been ripped off you when you were passed out. You scramble to it and put it back on, then head back to camp as fast as you can.");
			combat.cleanupAfterCombat();
		}

		public function amarokBadEnd():void { //Hungry Hungry Hipp-- err, Wolves
			clearOutput();
			spriteSelect(SpriteDb.s_amarok);
			outputText(images.showImage("badend-amarok"));
			outputText("You've been here before. The Amarok will carry you to its den, let its pups deal with you as they will, and then vanish off somewhere. You'll wake up later and flee before it returns or its pups get hungry. You close your eyes and wait for it to pick you up. You just want to get this over with.");
			outputText("\n\nThe Amarok, however, has other plans. Instead of coming behind you and picking you up, it hits you with a paw that rolls you onto your back, then puts said paw on your chest. You wheeze under its weight. It managed to step in just the right spot to knock your breath out of you. As though the air wasn't freezing enough, a wave of cold horror washes through your spine. You don't know what's going to happen, but you don't like it.");
			outputText("\n\nYou writhe under its grasp as your throat closes in terror. Your efforts are fruitless, and the Amarok watches you in mild amusement. Your " + (player.isGoo() ? "core throbs frantically in your chest" : "blood starts to pound in your ears") + ". You need something--anything--that'll help you get away. You flop an arm at the leg holding you down, praying it'll knock the Amarok off. It doesn't work. You try to " + (player.isGoo() ? "wriggle out from" : "get " + (player.isNaga() ? "your tail" : "a foot")) + " under it and " + (player.lowerBody.legCount > 1 ? "kick" : "knock") + " it off, but you can't even " + (player.lowerBody.legCount > 2 ? "roll your legs up" : "manage to move your body") + ". You try to scream for help in a futile hope anyone is nearby. You instead choke on your own breath. The Amarok's cruel gaze watches you with glee.");
			outputText("\n\nYou stop thinking. You just want air.");
			outputText("\n\nLines of pain well in your abdomen and you take in the biggest breath of your life--only to promptly release it with a screech. You instinctively curl up to try and protect yourself, but the Amarok takes a hold of one of your arms and shakes you violently. It only releases you when it accidentally rips off part of your " + player.armorName + ". You get flung a bit away and take a small tumble. Before you can get up, though, the Amarok is on you. It holds you down with one of its paws and begins to tear off the rest of your " + player.armorName + ", carelessly tossing it aside. You jerk, and roll, and rip at its leg, but it refuses to release you. Instead, it opens its jaws and snaps them shut around your neck.");
			game.gameOver();
		}

		public function amarokBlowjob():void{
			clearOutput();
			outputText("You feel it'd be good to fill your belly with something nice and hot before continuing your trek in these frigid wastes. The amarok lays still, fatigued from your battle, as you approach licking your lips in anticipation. You crouch and crawl up to the beast's belly and slide a hand between his hind legs. At first, his tail stuffs itself between his legs in a sign of discomfort and stress. After some strained attempts to stroke the bestial sheathe, the amarok's arousal overpowers his inhibitions. With hind leg raising, your access to that steadily-swelling members is finally opened."
			+"\n\nThe slight musky scent of the wolf's pre-leaking cock wafts into your nostrils as you continue stroking him to a full mast. With only the slightest apprehension, you give it the first lick on the narrow tip, lapping up a bit of precum. Like sweet nectar on your tongue, you feel an inspiring drive lick more. You slide your tongue lustfully along the canine shaft, relishing every slightest change in texture and temperature. The warmth of the amarok's erect penis makes you forget the cold. You kiss and suckle the tapered end with an almost loving passion, your cheeks blushed with arousal."
			+"\nYour head sinks down toward the sheathe, swallowing inch after inch of the giant wolf's cock. The amarok whimpers and pants in response to the stimulation. He jerks his hips slightly, egging you on for more. You happily oblige, bobbing your head deeper and quicker. His long shaft stretches your throat as you go, noticably bulging your neck. The slight salty taste and bestial musk consume your mind in a zoophilic frenzy, hungrily slipping your tongue across every inch while inside your mouth. Soon the delicious doggy semen begins to flow and you dive your head as far as you can in your desperate urges, engulfing the entirety of the amarok's penis. The knot, now firmly lodged in your mouth, swells beyond your means and locks itself in place. You won't be going anywhere until you've swallowed every last drop of cum from the feral beast's wondrous tool."
			+"\n\nConsciousness begins to fade away as the orally-locked phallus makes breathing difficult. The only sensation you can register is warm fluid filling your belly. You return to reality after about 20 minutes, with the amarok pulling his shrinking dick away. You feel dizzy, but pleased, and happily trot off back to your camp to relax in safety.");
			player.slimeFeed();
			player.refillHunger(30);
			combat.cleanupAfterCombat();
		}

		public function winAgainstAmarok():void {
			flags[kFLAGS.AMAROK_LOSSES]--; //Kinda unfair to continually stack it imo
			if (flags[kFLAGS.AMAROK_LOSSES] < 0)
				flags[kFLAGS.AMAROK_LOSSES] = 0;
			clearOutput();
			menu();
			outputText("The Amarok collapses, unable to withstand any more.");
			if (player.lust >= 33) outputText("\n\nYou haven't dealt with your own growing arousal. You could always make the dog your bitch.");
			addButton(0, "Penetrate him", amarokVictoryMale).hint("Fuck the wolf's ass.").sexButton(MALE);
			addButton(1, "Blowjob", amarokBlowjob).hint("Suck that wolf's dick.").sexButton();
			if (player.playerResistSex(1, -10)) addButton(14, "Leave", combat.cleanupAfterCombat);
		}
	}
}


code:
package classes.Scenes.Areas.GlacialRift
{
	import classes.*;
	import classes.BodyParts.*;
import classes.BodyParts.Butt;
import classes.BodyParts.Hips;
	import classes.StatusEffects.Combat.GiantStrLossDebuff;
	import classes.internals.*;
	import classes.GlobalFlags.kFLAGS;

	public class FrostGiant extends Monster
	{
		private function giantStrengthLoss(magnitude:int = 0):void {
			var gsl:GiantStrLossDebuff = player.createOrFindStatusEffect(StatusEffects.GiantStrLoss) as GiantStrLossDebuff;
			gsl.applyEffect(magnitude);
		}

		public function giantAttackPunch():void {
			var damage:int = 0;
			outputText("The giant strides toward you, closing the distance faster than you can run. He rears back and strikes at you!  ");
			if (!combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).failed) {
				outputText("You deftly dodge the jumbo Jotun's paltry punch, spinning swiftly to charge your " + player.weaponName + " at his hand, leaving what looks like a crack. The giant roars in outrage, shaking snow from trees and making your " + player.armorName + " vibrate. He appears angrier than before.");
			}
			else {
				if (rand(player.spe + 40) < spe) {
					outputText("You take the full force of his grand slam, sending you flying a good 40 feet, plunging through a snowdrift. As you right yourself, his laugh shakes the ground, \"Puny! Haaaa!\" ");
					damage = ((str + 50) + rand(100));
					damage = player.reduceDamage(damage,this);
					if (damage < 40) damage = 40;
					player.takeDamage(damage, true);
				}
				else {
					outputText("You nearly avoid the giant's fist, stumbling as you regain your footing. The giant's growl is a deep bass as he bellows, \"Bah! Luck!\" ");
					damage = rand(str);
					damage = player.reduceDamage(damage,this);
					player.takeDamage(damage, true);
				}
			}

		}

		public function giantGrab():void {
			outputText("The giant yells something you don't understand and charges at you, hands outstretched!  ");
			if (!combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).failed) {
				outputText("You ");
				if (rand(player.spe) < spe) outputText("barely");
				else outputText("ably");
				outputText(" avoid his charge, jumping just in time to avoid his hands, and then his feet. He's unable to stop himself in time and collides head first with a boulder slightly smaller than his head. ");
				var giantDmg:Number = 10 + rand(20);
				HP -= giantDmg;
				outputText("The giant takes " + giantDmg + " damage from his impact.  ");
				outputText("The giant is stunned!");
				createStatusEffect(StatusEffects.Stunned, 1, 0, 0, 0);
			}
			else {
				outputText("Your attempt to make way fails, and the giant grabs you in his very large, very cold, very strong hands. \"Now, you die!\"");
				player.createStatusEffect(StatusEffects.GiantGrabbed, 2, 0, 0, 0);
			}

		}
		public function giantGrabStruggle():void {
			if (rand(100) >= player.str || rand(10) == 0) giantGrabFail();
			else giantGrabSuccess();
			tookAction = true;
		}
		public function giantGrabFail(struggle:Boolean = true):void {
			var damage:int = 0
			if (struggle) {
				clearOutput();
				if (player.str >= 80) {
					outputText("You push and pull and squeeze and worm with all your might, but all that does is make the giant's grip harder. ");
				}
				else if (player.str >= 60 && player.str < 80) {
					outputText("Your strength fails to help you escape this frosty situation, though the heat from the struggle is nice enough in this wasteland to nearly doze in it. The giant makes sure that doesn't happen, though. ");
					giantStrengthLoss(1);
				}
				else if (player.str >= 40 && player.str < 60) {
					outputText("Try as you might, the giant's grip is too much for your weak body; the best you can do is a few squirms and a shake. His grip remains as tough as ever. ");
					giantStrengthLoss(2);
				}
				else if (player.str >= 20 && player.str < 40) {
					outputText("The giant's grip nearly crushes you to bits right there; sheer force of will allows you to struggle and resist, though it proves futile. ");
					if (player.findPerk(PerkLib.Juggernaut) < 0 && armorPerk != "Heavy") {damage = 10 + rand(str * 0.5);
					player.takeDamage(damage, true);
					}
				}
				else if (player.str < 20) {
					outputText("The giant squeezes you mercilessly, the pressure on your body reaching critical levels. The giant doesn't seem to want to murder you, fortunately, so he lessens his grip slightly. No dice escaping it though. ");
					if (player.findPerk(PerkLib.Juggernaut) < 0 && armorPerk != "Heavy") {damage = 20 + rand(str * 0.75);
					player.takeDamage(damage, true);
					}
				}
				if (game.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
					outputText("The thought of being constricted turns you on a bit. ")
					game.dynStats("lust", 5);
				}
				outputText("\n\n");
			}
			else {
				if (game.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
					outputText("The thought of being constricted turns you on a bit. ")
					game.dynStats("lust", 5);
				}
				outputText("\n\n");
			}
			switch(rand(6)) {
				case 0:
				case 1:
				case 2: //Taunt
					outputText("\"Ha, ha, ha! Puny little " + player.race + "! You cannot escape my grasp!\" He flicks your head, nearly snapping your neck, and you see stars for a moment. ")
					player.removeStatusEffect(StatusEffects.GiantGrabbed);
					damage = 10 + rand(str * 0.5);
					damage = player.reduceDamage(damage,this);
					player.takeDamage(damage, true);

					break;
				case 3:
				case 4: //Ground Pound
					outputText("The giant brings you to his face to yell at you. His scream is probably the loudest thing you've ever heard, and while your ears are still ringing he raises you up, and up, and up and then punches the ground with all his might. ");
					outputText("The force of the punch leaves you reeling for a time; you come to your senses before he tries to do anything else. ");
					player.removeStatusEffect(StatusEffects.GiantGrabbed);
					damage = 100 + rand(str * 1.5);
					damage = player.reduceDamage(damage,this);
					player.takeDamage(damage, true);

					break;
				case 5: //Throw
					outputText("\"Oh, little " + player.race + " wants to be let go? Ha! Then GO!\" He rears back and chucks you as hard as he can against the nearest rock face. Fortunately, his aim is off and he throws you into a patch of snow. The snow helps cushion the impact, but you're still very disoriented. ");
					player.removeStatusEffect(StatusEffects.GiantGrabbed);
					player.createStatusEffect(StatusEffects.Stunned, 1 + rand(2), 0, 0, 0);
					damage = 20 + rand(str);
					damage = player.reduceDamage(damage,this);
					if (damage < 20) damage = 20;
					player.takeDamage(damage, true);

					break;
				default:

			}
		}
		public function giantGrabSuccess():void {
			clearOutput();
			if (player.str >= 100) outputText("You roar and force the giant's hand open. He gasps in surprise, using his other hand to close you in, but it's too late by then. You jump to the ground and roll away, readying for your next attack. ");
			if (player.str >= 80 && player.str < 100) outputText("You push, pull, squeeze, squirm and finally you escape the giant's grasp. You drop and roll and make distance before readying your weapon. ");
			if (player.str >= 60 && player.str < 80) outputText("With no small effort, you  pop out from the giant's clench. You run up his arm and jump down his back, making distance. ")
			if (player.str >= 40 && player.str < 60) outputText("Despite the cold, hard confines of the giant's hand, you manage to slip out of his hand and fall to the ground before scrambling up and running from the angry giant. ");
			if (player.str >= 20 && player.str < 40) outputText("Body aching, you exploit a light grip for a moment and drop to the ground with a hard thud. Forcing yourself to get up and MOVE, you run as quickly as your throbbing [ass] can handle. ");
			if (player.str < 20) {
				outputText("Struggling with every fiber of your being, you manage to tickle the giant into dropping you. Slightly embarrassed, you get as far away from the giant without running away as you can, and ready your weapon. You think it wise to try to escape. ");
			}
			player.removeStatusEffect(StatusEffects.GiantGrabbed);

		}

		public function giantBoulderThrow():void {
			outputText("The giant walks over to a boulder much larger than you and hefts it up. You had better wait and be ready to dodge, or this could be very bad. ");
			outputText("With a grunt and a shove, the giant throws the boulder directly at you!")
			if (!player.hasStatusEffect(StatusEffects.GiantBoulder)) player.createStatusEffect(StatusEffects.GiantBoulder, 0, 0, 0, 0);

		}
		public function giantBoulderFantasize():void {
			outputText("You wonder how you could fuck something so large. ");
			if (player.cocks.length > 0) {
				if (player.biggestCockArea() >= 24) {
					outputText("Oh wait, you could just fuck his ass with your ");
					if (player.cocks.length > 1) outputText("collection of dicks. ");
					else outputText(" one really big cock. ");
					outputText("He might have a nice nose... You try to get a size of his nose. He’s too far away to gauge it");
				}
				else if (player.biggestCockArea() < 24) {
					outputText("You suppose you could try to fuck a smaller hole that's not usually used for sex... Maybe his nose? You can't quite make out the size of his nostrils from here")
				}
			}
			else {
				outputText("You could just crawl onto some part of him and rub, though he looks very cold to be doing something like that. You wonder if there's not a way to fuck something else... Maybe his nose? You can't tell if it has a prominent tip from here");
			}
			giantBoulderHit(1);
		}
		public function giantBoulderHit(mode:int = 0):void {
			clearOutput();
			if (mode == 0) outputText("You charge at the giant, running as fast as you can, hoping to get to him before he can throw the huge rock. However, you getting closer just makes it easier for him to hit you, and he does, the full force of the boulder hitting your upper body square-on, whipping you directly down into the snow while the boulder mercifully lands some yards away. ");
			else if (mode == 1) outputText(", but you do look up just in time to nearly avoid the large boulder he chucked your way. Scrambling to react, you jump to the side, only to realize you chose the wrong side. The boulder hits you in the back, propelling you.  Battered, beaten, bruised, you struggle to stand, when the giant picks you up, laughs in his deep, mighty bellow, and punts you over a mountain. You land several feet deep in a snowbank, and see something flying toward you before passing out. ");
			else outputText("You begin to cast, focusing intently on summoning your magic. Too focused, though, as the giant propels the boulder in an arc to you. You notice the boulder just in time to not be crushed by it, though it still hits you and you fly several dozen yards before hitting a nice, jagged rock face. ");
			if (player.hasStatusEffect(StatusEffects.GiantBoulder)) player.removeStatusEffect(StatusEffects.GiantBoulder);
			var damage:int = (str * 2) + 100 + rand(250);
			damage = player.reduceDamage(damage,this);
			if (damage < 200) damage = 200;
			player.takeDamage(damage, true);
			outputText("\n\n");

		}
		public function giantBoulderMiss():void {
			clearOutput();
			outputText("His aim was perfect, if you had stood still. Watching him throw it at you gave you all the time you needed to avoid the large rock, though the debris from the impact might leave some bruises. ");
			if (player.hasStatusEffect(StatusEffects.GiantBoulder)) player.removeStatusEffect(StatusEffects.GiantBoulder);
			var damage:int = 10 + rand(str / 2);
			damage = player.reduceDamage(damage,this);
			player.takeDamage(damage, true);
			outputText("\n\n");

		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI()
				.add(giantAttackPunch, 6,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(giantGrab, 3, true, 10,FATIGUE_PHYSICAL,RANGE_MELEE);
			actionChoices.add(giantBoulderThrow, 1, true, 10,FATIGUE_PHYSICAL,RANGE_RANGED);
			actionChoices.exec();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.glacialRift.giantScene.winAgainstGiant();
		}

		override public function react(context:int):Boolean{
			switch(context){
				case CON_BEFOREATTACKED:
					if (player.hasStatusEffect(StatusEffects.GiantBoulder)) {
					giantBoulderHit(0);
					return false;
					}
					break;
				case CON_PLAYERWAITED:
					if (player.hasStatusEffect(StatusEffects.GiantGrabbed)) {
						clearOutput();
						giantGrabFail(false);
						tookAction = true;
						return false;
					}
					if (player.hasStatusEffect(StatusEffects.GiantBoulder)) {
						clearOutput();
						giantBoulderMiss();
						tookAction = true;
						return false;
					}
					break;
			}
			return true;
		}

		/*override public function beforeAttacked():Boolean{
			if (player.hasStatusEffect(StatusEffects.GiantBoulder)) {
				giantBoulderHit(0);
				return false;
			}
			return true;
		}*/

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			game.combat.cleanupAfterCombat();
		}

		public function FrostGiant()
		{
			this.a = "the ";
			this.short = "frost giant";
			this.imageName = "frost-giant";
			this.long = "The giant reminds you of the stories you heard as a child in Ingnam, at least twenty feet tall and wider than your height. The giant's skin is a deep, icy blue with patches of frost and ice covering his body in place of armor. Fortunately for you, he's unarmed. Unfortunately for you, being as large as a house has the added benefit of boulders, trees, and handfuls of frozen dirt being ready weapons, all of which is abundant in the area. Plus those hands could probably crush you like a bug. Your battle instincts are definitely going to be tested.";
			this.race = "Giant";
			// this.plural = false;
			this.createCock(36, 4, CockTypesEnum.HUMAN);
			this.balls = 2;
			this.ballSize = 2;
			this.cumMultiplier = 2;
			createBreastRow(Appearance.breastCupInverse("flat"));
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_NORMAL;
			this.tallness = 20*12;
			this.hips.rating = Hips.RATING_BOYISH;
			this.butt.rating = Butt.RATING_TIGHT;
			this.skin.tone = "deep blue";
			this.skin.setType(Skin.FUR);
			this.hair.color = "white";
			this.hair.length = 8;
			initStrTouSpeInte(120, 100, 60, 75);
			initLibSensCor(20, 15, 35);
			this.weaponName = "fists";
			this.weaponVerb="punch";
			this.weaponAttack = 27;
			this.armorName = "ice";
			this.armorDef = 30;
			this.bonusHP = 600;
			this.lust = 10;
			this.lustVuln = 0.4;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 22;
			this.gems = 45 + rand(25);
			this.drop = new WeightedDrop()
					.add(consumables.ICICLE_, 1)
					.add(null, 3);
			this.createPerk(PerkLib.Tank, 0, 0, 0, 0);
			this.createPerk(PerkLib.Tank2, 0, 0, 0, 0);
			checkMonster();
		}

	}

}

license: unknown


code:
package classes.Scenes.Areas.GlacialRift
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.GlobalFlags.kACHIEVEMENTS;

	public class FrostGiantScene extends BaseContent
	{

		public function FrostGiantScene()
		{

		}

		public function loseToGiant():void {
			combat.cleanupAfterCombat();
		}

		public function winAgainstGiant():void {
			clearOutput();
			outputText("The giant staggers and falls down on his knees. You wonder what you should do next.");
			if (player.weaponName == "fists" && player.armor.name == "nothing" && player.shieldName == "nothing") awardAchievement("Like Chuck Norris", kACHIEVEMENTS.GENERAL_LIKE_CHUCK_NORRIS);

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

			menu();
			addDisabledButton(0, "Nosefuck", "This scene requires you to have cock and sufficient arousal.");
			addDisabledButton(1, "RideVaginally", "This scene requires you to have vagina and sufficient arousal.");
			addDisabledButton(2, "Ride Anally", "This scene requires you to have sufficient arousal.");

			if (player.lust >= 33) {
				if (player.hasCock()) addButton(0, "Nosefuck", noseJob);
				if (player.hasVagina()) addButton(1, "RideVaginally", rideVaginally);
				addButton(2, "Ride Anally", rideAnally);
				//addButton(3, "Suck Him Off", suckHimOff);
			}

            setSexLeaveButton(combat.cleanupAfterCombat);
		}

		//Males and hermaphrodites
		private function noseJob():void {
			clearOutput();
			outputText("Looking at the fallen giant, only one option immediately springs to mind: Nosejob. You toy with the thought until you approach the giant's nose, which does in fact have nostrils of the proper size to shove your " + player.multiCockDescript() + " into. \n\n");
			outputText("You test a nostril with your hand warily, this dangerous proximity being close enough to the giant's mouth he could just as easily swallow you in an instant. The giant's breath, surprisingly, comes out warm enough that this could maybe work... \n\n");
			outputText("You reach into your " + player.armorName + " and whip out your cock");
			if (player.cocks.length > 1) outputText("s");
			outputText(". The cold air nearly instantly makes them soft, but the giant's breath eases them back to erection. You contemplate what you're about to do one more time, allowing your " + player.multiCockDescriptLight() + " to surge to full hardness. Taking a breath, you plunge into the depths. While not quite like a vagina, the giant is breathing hard to make up for the blockage you’re providing. ");
			//Multi-cock check
			if (player.cocks.length == 1) outputText("His contracting nostril massages your prick enough to get you going.");
			else outputText("His contracting nostrils massage your pricks enough to get you going.");
			outputText("After some awkward moments of fighting with the giant's sufficiently giant beard, you manage to slip into a rhythm, breathe in, cock out, breathe out, cock in. The alternating currents of cold air in and warm air out from the giant's nose is a strange feeling, but not unpleasant - the contrasts complement each other quite well, and as your balls tighten with anticipation, precum finally begins to dribble into the giant's throat. You hear the giant begin to gurgle and sputter, and you realize you better hurry this up. \n\n");
			//Balls check
			if (player.balls > 0) {
				outputText("To help speed your orgasm, you pull your balls out and let them slap against the giant's upper lip, the bristles of his mustache tickling your scrotum in ways you hadn't imagined even after all your time in this world. \n\n");
			}
			outputText("As more pre dribbles into his septum, the giant begins to sputter and cough. Knowing it's now or never, you give a few final, determined thrusts before blowing your entire load up his nose. \n\n");
			outputText("When you feel that first spurt, you hurry the rest along. The giant is now obviously irritated with the cum filling up his nasal cavities. \"EEEAAAHHHH! WHAT! WHAT IS IN MY NOSE? AAAAHHH!\" he screams, just coming back to consciousness. \n\n");
			outputText("Your spurts continue, producing more spunk as the second pass. You keep shooting ropes of jizz until finally he opens his bloodshot eyes and looks directly at you; knowing this is your cue to take your leave, you remove your " + player.multiCockDescriptLight() + " from the giant's nose and shoot your final rope into his eye. Jumping down before he can swat you off his face, the giant, now quite infuriated, looses another roar as he gets up and tries to hack out the copious gobs of cum in areas where it should not normally go.\n\n");
			outputText("As he continues to bellow and scream, you stuff your " + player.multiCockDescriptLight() + " back into your " + player.armorName + ", grab your loot and immediately DIP. The giant was mean enough before he was nasally violated, and you hear his cries well after he's beyond the horizon.");
			player.orgasm('Dick');
			combat.cleanupAfterCombat();
		}

		//Females and hermaphrodites
		private function rideVaginally():void {
			clearOutput();
			outputText("You reach into your " + player.armorName + " and rub your " + player.vaginaDescript() + " slowly, trying to ease its throbs for attention while you figure out how to calm it. As you inspect the unconscious giant's body, you notice a crack in his frost armor near the crotch. Using your " + player.weaponName + " to nick more frost away, you find that the giant is indeed male. The giant's huge cock strikes you; flaccid as it is, it still ");
			if (player.tallness < 36) outputText("dwarves your height.")
			else if (player.tallness >= 36 && player.tallness < 48) outputText("matches your height.");
			else outputText("is only slightly shorter than you are tall.");
			outputText("\n\n");
			if (player.cocks.length <= 0) outputText("Seeing no other option");
			else outputText("Deciding to give your vagina the attention it so craves");
			outputText(", you carefully remove and replace pieces of your " + player.armorName + " so you can rub your [chest] while you ready to slide your slit over the giant's cock without freezing the rest of your body.");
			outputText("Climbing to the giant's crotch, you straddle his dick and feel it before crouching. The giant's body heat makes up for the cold, warm enough to feed your hungry twat and dissuade your fears of getting stuck to the giant. You gather some juices from your " + player.vaginaDescript() + " and slather it on the cock, ready to slide yourself to release.");
			player.cuntChange(144, true, true, false);
			outputText("\n\nWith a bracing breath, you finally make contact. The giant's heat is more intense than your hand registered, and you find yourself easily able to slip back and forth. As you slide over the huge cock, it slowly grows erect, until it towers over you and you can do little more than gyrate your hips to pleasure yourself. You struggle to keep sliding, but it's futile. As you stop and ready to dismount the giant, he groans, \"No...\" and grabs a leg in each hand. You try to shout out, but before you have a chance he is quickly sliding you back and forth over his entire length, basically masturbating and taking you for the ride. Feeling every ridge and bump in his dick slide past you, it takes only a few moments for you to reach your limit.\n\n");
			if (player.hasCock()) outputText("You shoot ropes of jism from your " + player.multiCockDescriptLight() + " and cum all over his chest.  ")
			if (player.hasVagina()) outputText("Feminine juice splatters all over from your " + player.vaginaDescript() + " and onto his cock.  " )
			outputText("The giant, however, still needs his release and as he continues pumping, you reach climax more times than you can count. At last, you hear the giant moan, and he drops you on the base of his dick while he finishes himself off. Too exhausted to move, you lay there as the giant cums, gallons of cum shooting in an arc, in slow motion, landing directly on you. You barely manage to gulp down enough to keep from drowning. The giant laughs and grabs you, licks you clean, and sets you down, sheltering you from the cold with his hands and allowing you to fix your armor. Once you redress, the giant lets out a bellowing laugh and saunters off behind a mountain.");
			player.refillHunger(50);
			player.orgasm('Vaginal');
			combat.cleanupAfterCombat();
		}

		//All genders!
		private function rideAnally():void {
			clearOutput();
			outputText("You remove the bottom of your " + player.armorName + " slowly, trying to ease its throbs for attention while you figure out how to calm it. As you inspect the unconscious giant's body, you notice a crack in his frost armor near the crotch. Using your " + player.weaponName + " to nick more frost away, you find that the giant is indeed male. The giant's huge cock strikes you; flaccid as it is, it still ");
			if (player.tallness < 36) outputText("dwarves your height.")
			else if (player.tallness >= 36 && player.tallness < 48) outputText("matches your height.");
			else outputText("is only slightly shorter than you are tall.");
			outputText("\n\n");
			outputText("You carefully remove and replace pieces of your " + player.armorName + " so you can slide your " + player.assholeDescript() + " over the giant's cock without freezing the rest of your body.  Climbing to the giant's crotch, you straddle his dick and feel it before crouching. The giant's body heat makes up for the cold, warm enough to stuff your body. You get into position and slide yourself to release.");
			player.buttChange(144, true, true, false);
			outputText("\n\nWith a bracing breath, you finally make contact. The giant's heat is more intense than your hand registered, and you find yourself easily able to slip back and forth. As you slide over the huge cock, it slowly grows erect, until it towers over you and you can do little more than gyrate your hips to pleasure yourself. You struggle to keep sliding, but it's futile. Fortunately, you reach orgasm.  ")
			outputText("As you stop and ready to dismount the giant, he groans, \"No...\" and grabs a leg in each hand. You try to shout out, but before you have a chance he is quickly sliding you back and forth over his entire length, basically masturbating and taking you for the ride. Feeling every ridge and bump in his dick slide past you, it takes only a few moments for you to reach your limit.\n\n");
			if (player.hasCock()) outputText("You shoot ropes of jism from your " + player.multiCockDescriptLight() + " and cum all over his chest.  ")
			if (player.hasVagina()) outputText("Feminine juice splatters all over from your " + player.vaginaDescript() + " and onto his cock.  " )
			outputText("The giant, however, still needs his release and as he continues pumping, you reach climax more times than you can count. At last, you hear the giant moan, and he finally slides his entire length into you.");
			outputText("You yelp in surprise as as the giant cums, filling your bowels completely and stuffing your stomach. The giant laughs and grabs you, licks you clean, and sets you down, sheltering you from the cold with his hands and allowing you to fix your armor. Once you redress, the giant lets out a bellowing laugh and saunters off behind a mountain. You feel warm thanks to being stuffed with his cum.");
			player.refillHunger(30);
			player.orgasm('Anal');
			combat.cleanupAfterCombat();
		}

		private function suckHimOff():void {
			clearOutput();
			outputText("PLACEHOLDER");
			player.refillHunger(100);
			combat.cleanupAfterCombat();
		}

		private function exitGiant():void {
			menu();
			combat.cleanupAfterCombat();
		}
	}

}


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

	public class Valkyrie extends Monster
	{
		public function spearAttack():void {
			outputText("The valkyrie lunges at you, jabbing with her longspear.  You dodge the first attack easily, ")
			var result:Object = combatAvoidDamage({doDodge:true,doParry:false,doBlock:false});
			if (result.dodge == EVASION_EVADE) {
				outputText("and you anticipate the upcoming spear strikes, dodging her attacks thanks to your incredible evasive ability!");

				return;
			}
			else if (result.dodge == EVASION_FLEXIBILITY) {
				outputText("and you use your incredible flexibility to barely fold your body and avoid her attacks!");

				return;
			}
			else if (result.dodge == EVASION_MISDIRECTION) {
				outputText("and you use technique from Raphael to sidestep and completely avoid her barrage of attacks!");

				return;
			}
			else if (result.dodge == EVASION_BLIND) {
					outputText("and step away as you watch the valkyrie's blind attacks strike only air. ");

					return;
			}
			else if (result.dodge == EVASION_SPEED || result.dodge != null) {
				outputText("and you successfully dodge her barrages of spear attacks!");

				return;
			}
			else
			{
				outputText("but she follows through with a rapid flurry of spear strikes, tearing into your " + (player.armor.name == "nothing" ? "" : "[armorName] and the underlying") + " flesh. ");
				var attacks:int = 1 + rand(3);
				var damage:int = 0
				while (attacks > 0) {
					damage += ((str) + rand(50))
					damage = player.reduceDamage(damage,this);
					attacks--
				}
				player.takeDamage(damage, true);
			}

		}

		public function shieldBash():void {
			outputText("The valkyrie feints at you with her longspear; you dodge the blow, ")
			var result:Object = combatAvoidDamage({doDodge:true,doParry:false,doBlock:false});
			if (result.dodge == EVASION_EVADE) {
				outputText("and you anticipate the upcoming shield bash, dodging her thanks to your incredible evasive ability!");

				return;
			}
			else if (result.dodge == EVASION_FLEXIBILITY) {
				outputText("and you use your incredible flexibility to barely fold your body and avoid her shield bash!");

				return;
			}
			else if (result.dodge == EVASION_MISDIRECTION) {
				outputText("and you use technique from Raphael to sidestep and avoid her shield bash!");

				return;
			}
			else if (result.dodge == EVASION_BLIND) {
					outputText("and step away as you watch the valkyrie's blind bash strikes only air. ");

					return;
			}
			else if (result.dodge == EVASION_SPEED || result.dodge != null) {
				outputText("and you successfully dodge her shield bash attack!");

				return;
			}
			else
			{
				outputText("but you leave yourself vulnerable as she spins around and slams her heavy shield into you, knocking you ");
				if (player.stun(0,33))
				{
					outputText("off balance. ");
				}
				else outputText("backwards. ");
				var damage:int = ((str + 50) + rand(50))
				damage = player.reduceDamage(damage,this);
				player.takeDamage(damage, true);
			}

		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI()
				.add(eAttack, 1,true,0,FATIGUE_NONE,RANGE_RANGED);
			actionChoices.add(shieldBash, 1, true, 10,FATIGUE_PHYSICAL,RANGE_RANGED);//she can fly
			actionChoices.add(aerialRave, 1, true, 10,FATIGUE_PHYSICAL,RANGE_RANGED);
			actionChoices.add(spearAttack, 1, true, 10, FATIGUE_PHYSICAL, RANGE_RANGED);
			actionChoices.exec();
		}

		public function aerialRave():void {
			if (rand(2) == 0 || player.canFly() /* it would be stupid to do this with someone winged */) {
				spearAttack()
				return;
			}
			outputText("The valkyrie charges right at you!  You manage to dodge her spear-thrust, but she spins gracefully out of the attack and grabs you by the waist.  ")
			var result:Object = combatAvoidDamage({doDodge:true,doParry:false,doBlock:false});
			if (result.dodge == EVASION_EVADE) {
				outputText("You manage to shake her hand off thanks to evasion.  ");

				return;
			}
			else if (result.dodge == EVASION_FLEXIBILITY) {
				outputText("Thanks to your incredibly flexibility, her hand slips off your wrist.  ");

				return;
			}
			else if (result.dodge == EVASION_MISDIRECTION) {
				outputText("Using Raphael's technique, you slip freely from her grip.");

				return;
			}
			else if (result.dodge == EVASION_SPEED || result.dodge != null) {
				outputText("You suddenly jerk your arm away, causing her grip to break.");

				return;
			}
			else
			{
				outputText("Before you can react, she launches into the air, propelling the two of you upwards with her powerful wings.  You struggle, but it’s no use -- until she lets go.  You cry out in terror as you fall back to the earth, crashing painfully into a convenient snowbank, while your opponent lands gracefully a few feet away. ");
				var damage:int = ((str + 200) + rand(100))
				damage = player.reduceDamage(damage,this);
				player.takeDamage(damage, true);
			}

		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.glacialRift.valkyrieScene.winAgainstValkyrie();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			game.glacialRift.valkyrieScene.loseToValkyrie();
		}

		public function Valkyrie()
		{
			this.a = "a ";
			this.short = "valkyrie";
			this.imageName = "valkyrie";
			this.long = "She is a tall, pale-skinned woman with long golden locks spilling out from beneath her bronze helm.  She would look almost human, if not for the massive, powerful wings sprouting from her back, stretching perhaps a dozen feet across.  She is wearing a heavy bronze cuirass which curves perfectly around her perky C-cups, and is wielding a spear and shield as her weapons.  She has assumed the stance of a well-trained and experienced combatant, leaving few openings for you to exploit.";
			this.race = "Valkyrie";
			// this.plural = false;
			this.createVagina(false, 1, 1);
			createBreastRow(Appearance.breastCupInverse("C"));
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_NORMAL;
			this.tallness = 7*12;
			this.hips.rating = Hips.RATING_SLENDER;
			this.butt.rating = Butt.RATING_TIGHT;
			this.skin.tone = "light";
			this.skin.setType(Skin.PLAIN);
			this.hair.color = "white";
			this.hair.length = 12;
			initStrTouSpeInte(85, 70, 80, 60);
			initLibSensCor(40, 50, 15);
			this.weaponName = "spear and shield";
			this.weaponVerb="pummel";
			this.weaponAttack = 14;
			this.armorName = "bronze plates";
			this.armorDef = 17;
			this.bonusHP = 380;
			this.lust = 25 + rand(15);
			this.lustVuln = 0.46;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 18;
			this.gems = 30;
			this.drop = new WeightedDrop()
					.add(weapons.SPEAR, 1)
					.add(shields.GREATSH, 2)
					.add(consumables.W__BOOK, 4)
					.add(null, 18);
			this.wings.type = Wings.FEATHERED_LARGE;
			/*this.special1 = spearAttack;
			this.special2 = shieldBash;
			this.special3 = aerialRave;*/
			checkMonster();
		}

	}

}


code:
//Coded by Kitteh6660, courtesy of Savin.
package classes.Scenes.Areas.GlacialRift
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;

	public class ValkyrieScene extends BaseContent
	{

		public function ValkyrieScene()
		{
		}

		public function loseToValkyrie():void {
			clearOutput();
			outputText("Unable to resist ")
			if (player.HP <= 0) outputText("her onslaught")
			else outputText("your rising lust")
			outputText(", you collapse to your knees, utterly at the valkyrie’s mercy.  She plants her spear in the ground, just inches from your head, and rolls you onto your back with her foot. \n\n")
			if (monster.lust100 >= 70 && flags[kFLAGS.SFW_MODE] <= 0) loseToValkyrieForcedOral()
			else {
				outputText("With one swift, contemptuous kick to the head, she knocks you right out.")
				outputText("  You are utterly freezing after such long exposure to the cold.")
				if (player.str100 > 50) dynStats("str", -1);
				dynStats("str", -1);
				if (player.spe100 > 50) dynStats("spe", -1);
				dynStats("spe", -1);
				combat.cleanupAfterCombat();
			}
		}

		private function loseToValkyrieForcedOral():void {
			var gemPenalty:Number = (player.gems / 100) + 10 + rand(20)
			if (gemPenalty > 100) gemPenalty = 100;
			if (gemPenalty > player.gems) gemPenalty = player.gems;
			gemPenalty = Math.round(gemPenalty);
			outputText("The valkyrie stands over you, her thin skirt already soaked with the arousal you inflicted upon her. She swings one of her long legs over your head, letting you get a good look at her slick, tight cunt before she drops down atop you, smashing your face into her slit. \"You " + player.mf("bastard", "bitch") + ", trying to turn a valiant warrior into a drooling pile of lust. I won’t allow it -- you’ll finish what you started, weakling. Now lick!\n\n");
			outputText("Too ");
			if (player.HP <= 0) outputText("beaten");
			else outputText("lusty");
			outputText(" to put up any kind of a fight against your opponent, especially in this position, you don’t have much choice but to do as she asks. Your tongue snakes out, taking an experimental flick at the wet gash of the valkyrie’s vagina. Her thighs are already utterly soaked with her lust, and probing her lips sends your tongue back coated with her lubricant. \n\n");
			outputText("Apparently such a tentative lick wasn’t enough for the warrior woman, though; she squats down lower on your face, grinding her wet cunny across your face. You sputter and gasp, trying to breath under her assault, but find it difficult with her constant grinding and moving. Resigned, you grasp her hips to steady her and dig in, shooting your tongue as deep into her cunt as it will go. The valkyrie moans, grasping your shoulders to steady herself as you begin your work in earnest, giving her slit quick flicks and little bites.\n\n");
			outputText("Soon, your face is coated with her fem-juices, and you can feel your winged captor beginning to shake and shudder as you tongue-fuck her. You redouble your efforts, hoping to get her off as quickly as possible. You move your head up as far as you can with her sitting on it, giving yourself a clear line of tongue to her tiny pleasure buzzer. You put your lips to it and give her clit a hard suck, running your wet tongue all across it as you do.\n\n");
			outputText("You're rewarded by a high scream from the valkyrie and a sudden gush of femcum that squirts from her slick cunt, splattering across your chest and neck. Moaning, the girl gasps your shoulders and slams her hips into your face, grinding against you until you’re utterly soaked with her cum. By the time she’s finished, you feel light-headed from the overwhelming scent of musk and sex surrounded the two of you, but she finally lets you go and stands.\n\n")
			outputText("\"Hmm, not bad for a lusty pervert,\" she laughs, trying awkwardly to straighten out her sodden skirt. \"Maybe. . . Maybe I’ll let you do that again sometime. If you’re lucky.\"\n\n")
			outputText("Before you can respond, she reaches over and nicks " + gemPenalty + " gems from you and launches off into the sky. Half-dazed by lust of your own, you stagger to your feet and head back to camp.\n\n")
			dynStats("lust", 50);
			player.gems -= gemPenalty
			combat.cleanupAfterCombat();
			doNext(camp.returnToCampUseOneHour);
		}

		public function winAgainstValkyrie():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("Unable to contain her arousal, the valkyrie drops her weapons and collapses onto her knees, slipping a hand into her short skirt. ")
			outputText("\"I submit,\" she concedes weakly, avoiding eye contact with you.  \"I was too weak to defeat you, it seems.  Do with me what you will. \"")
			//(Display Options:
			//-If Male: [Aerial Fuck] [Fuck Anal] [Leave]
			//-If Female: [Get Licked] [Scissor]
			//-If Herm: All Options)
			menu();
			addDisabledButton(0, "Aerial Fuck", "This scene requires you to have cock and sufficient arousal.");
			addDisabledButton(1, "Anal Fuck", "This scene requires you to have cock and sufficient arousal.");
			addDisabledButton(2, "Get Licked", "This scene requires you to have vagina and sufficient arousal.");
			addDisabledButton(3, "Scissor", "This scene requires you to have vagina and sufficient arousal.");

			if (player.lust >= 33) {
				if (player.hasCock()) {
					addButton(0, "Aerial Fuck", valkyrieAerialFuck);
					addButton(1, "Anal Fuck", valkyrieAnalFuck);
				}
				if (player.hasVagina()) {
					addButton(2, "Get Licked", valkyrieLicksYou);
					addButton(3, "Scissor", valkyrieScissor);
				}
			}
            setSexLeaveButton(combat.cleanupAfterCombat);
		}

		//Aerial Fuck
		private function valkyrieAerialFuck():void {
			clearOutput();
			outputText("Standing over the defeated valkyrie, your eyes alight to her great white wings. They’re certainly powerful enough to keep a strong, fully armored woman aloft. . . So why not the both of you? You haul the warrior woman to her feet, free your " + player.cockDescript() + " from your " + player.armorName + ", and grip her in a tight embrace. You give her a hard slap on the ass and tell her to fly.\n\n")
			outputText("She hesitates for just a moment, prompting another harsh spank. Unable to resist your desires, the defeated girl unfolds her powerful wings and with a mighty flap, launches into the air. You soar on high, quickly rising above the icy wastes to look down upon the northern reaches of Mareth far below you. You can see other creatures roaming the wastes -- giants and vikings and other, low-flying valkyries, looking like little more than ants beneath you. The realization of your height over the world, combined with the closeness of the valkyrie girl, her breasts heaving into your chest and her breath hot on your cheek, serve to make your " + player.cockDescript() + " rock hard between the two of you, sandwiched snugly between your bellies.\n\n");
			outputText("Suddenly, you realize that without letting go of the girl, you aren’t liable to get your dick inside her. Well, shit. You lock eyes with the valkyrie, who gives you a shy smile and, to your surprise, wraps her arms tightly around you. You decide to trust her, and free one of your hands from her. You grab your " + player.cockDescript() + " and lift her skirt, guiding it smoothly into her wet and waiting cunt. She gasps as you enter her tight passage, and you quickly grab her again before she can forget to hold onto you.\n\n");
			outputText("Now inside her, you command the valkyrie to fly as fast as she can to wherever she’d like to go. She smiles and nods, giving her wings a mighty thrust toward the ocean. When she does, her vaginal muscles contract hard around your cock, squeezing you wonderfully with each beat of her powerful wings. You hold onto the valkyrie for dear life, kissing and caressing her soft neck and cheeks as she flies, letting each of her graceful motions gently massaging your dick.\n\n");
			outputText("She seems to be taking no little pleasure from flying full, either, and is soon moaning lewdly into your neck, abandoning her once-proud visage for that of a lusty maid. She wraps her legs around your waist, burying just a little more of your cock inside her until ")
			if (player.cockArea(0) >= 16) outputText("she can take no more of you.  ")
			else outputText("there is no more of you to take.  ")
			outputText("You return the favor, starting to buck your hips into her contracting passage, fucking her with quick, short strokes that keep the two of you close together.\n\n");
			outputText("\"I... Gotta land,\" she moans. Her muscles are contracting harder and faster now, and you can feel her slick fem-juice now leaking out around your prick. You give her a little nod, already close to the edge yourself, but it looks like it’s too late! The girl screams, clamping down hard on your cock as she cums, squirting her juices onto her thighs and yours. The mid-air orgasm, however, causes her to forget her wings, and soon you’re plummeting toward the earth!\n\n");
			outputText("You scream, half in pleasure and half in terror as your cock unloads inside her, pumping your hot load into her sodden box as the icy ground rises up to meet you. \n\n");
			player.orgasm('Generic');
			if (player.canFly())
				outputText("You try to beat your own wings to save yourself, but you have too much momentum and the valkyrie in all her heavy armor is completely entwined around you, refusing to let go as you both cum.\n\n")
			else outputText("You clutch at the valkyrie and brace for the inevitable, cumming more and more inside her despite your impending doom.\n\n");
			outputText("Then suddenly, the valkyrie spreads her wings and flies, pulling up with so little room to spare that you can feel your cheek brush the snow. Panting, she flaps her wings one last time before setting the two of you down on the coast, overlooking the glacial drop into the frigid water.\n\n");
			outputText("You shudder, reeling from the orgasm and near - death experience at the same time. No less exhausted, the valkyrie collapses onto you, her head coming to rest on your lap. It seems you made a good impression on the valkyrie as she drifts off to sleep, your cum and hers pooling between her legs. You fish a blanket (and a few gems) out of her pack, cover her up as best you can, and stumble on back to camp.");
			combat.cleanupAfterCombat();
		}
		//Anal Fuck
		private function valkyrieAnalFuck():void {
			clearOutput();
			outputText("You grab the defeated valkyrie by the hair and push her down onto all fours. She groans as you circle around behind her, giving her ass a hard slap. Defeated, though, she does not try to resist you as you kneel down behind her and flip up her skirt, revealing her lush ass cheeks, her slick cunt, and her tight, puckered little asshole. You reach into your " + player.armorName + " and pull out your " + player.cockDescript() + ", stroking yourself for warmth until your can get your shaft tucked in between the valkyrie’s butt.\n\n");
			outputText("You grab her hips and start to thrust upwards and back, slowly hotdogging the defeated girl’s ass, stopping only to slather a bit of her drooling cunt juices onto your shaft for some much-needed lubricant. You give her ass a quick, playful slap, making her reflexively squeeze down on your cock. Laughing, you get into a nice rhythm, spanking her once every few thrusts to get a little extra thrill out of her.\n\n");
			outputText("To your surprise, the valkyrie looks over her shoulder and, face flush with anxious lust, whispers, \"Well. . . What are you waiting for, huh? Just. . . stick it in already!\"\n\n");
			outputText("Well, if she’s so eager. You lean back and thrust in, slamming your " + player.cockDescript() + " into her tight pucker. She had already tried to relax, but your sudden and forceful intrusion makes her clamp down hard, squeezing your shaft like a wet silken vice. You moan as you shove more and more of your shaft into her blessedly warm depths, feeding her ass your cock one inch at a time until ");
			if (player.cockArea(0) >= 16) outputText("you bottom out.  ");
			else outputText("hilt the valkyrie.  ");
			outputText("She screams in pleasure and pain as you hammer into her backdoor, but settles down once you’ve stopped your advance, unable to continue. Slowly, you begin to rock your hips into her, fucking her ass slow and gentle.\n\n");
			outputText("You smile as she begins to moan and wiggle her hips, finally getting into the assfuck you’re giving her. Now that she’s settled, you pick up the pace, starting to thrust faster and more forcefully. You keep your increase gradual, letting the valkyrie keep up so that by the time you’re roughly pounding her ass, she’s groping herself and yelling \"Fuck me harder! Fuck me harder!\" You oblige her, ramming her ass and resuming your spanking, abusing her tush until she’s screaming.\n\n");
			outputText("With such a tight, eager partner, you manage to last quite some time. Yet, all good things come to an end. With a mighty roar, you slam your cock as far into her as it will go and cum, painting her insides with your seed. She, too, climaxes as you fill her, her pucker squeezing you for everything you’re worth as her unused cunny squirts a bit of femcum onto her thighs and legs. Laughing gaily, you keep on pounding her ass until you’re utterly spent and deflating, and your partner has collapsed, her face buried in the snow.\n\n")
			outputText("You withdraw with a wet “POP!”, and watch with a grin as your seed trickles out of her now-gaping anus, pooling with her own juices beneath her. You give her bruised, bright-red butt a gentle pat as you sheathe your cock back in your armor and head on back to camp, leaving your insensate lover in a cun-soaked heap on the ice.")
			player.orgasm('Dick');
			combat.cleanupAfterCombat();
		}
		//Get Licked
		private function valkyrieLicksYou():void {
			clearOutput();
			outputText("You decide to take advantage of the valkyrie girl’s kneeling state. You walk up to her and open the crotch of your " + player.armorName + ", revealing your " + player.vaginaDescript() + ". Before she can react, you grab the back of her blonde head and mash her face into your cunt. You tell her to lick, and to your surprise, she does so without hesitation.\n\n");
			outputText("The girl’s tongue is surprisingly skilled. She quickly teases it across your clitty, making you moan with sudden pleasure right away. You can see her smirking beneath you as she begins to tease and play with your pleasure buzzer, using the flat of her tongue to tickle the sensitive flesh around it. You return her grin, urging her on with little pats of the head and shoulders, even reaching down to cup one of her perky breasts beneath her breastplate.\n\n");
			outputText("She finally slips her tongue in and starts to caress the walls of your " + player.vaginaDescript() + ", running her soft, warm tongue along your innermost depths with delightful speed and gentleness. You smile and run your hands through her long hair, stroking her as she grips your hips and buries her face in your twat, utterly submitting to your pleasure.\n\n");
			outputText("You begin to grind your slit into her face as she eats you out, rubbing your cunt along her nose and forehead to the beat of her tongue’s skillful ministrations. After a few blissful minutes of this, though, you feel one of her hands begin to creep forward. You give her a little nod as she peels apart the cheeks of your " + player.buttDescript() + " and runs the tip of a finger across your [asshole].\n\n");
			outputText("You let out a little gasp as the valkyrie slips a finger into your asshole. She makes a slow, steady progression inward, fingering your asshole gently as she picks up the pace of her tonguefucking. Through your innermost depths, you feel her tongue and finger nearly touch, separated by only the thinnest of walls. You shudder as they rub and caress each other through your vaginal wall, sending incredible, mind-rending spikes of pleasure up through your body.\n\n");
			outputText("You cannot resist her double attack for long. Grabbing the valkyrie’s head, you force her face between your legs, getting every last bit of her tongue inside you as you can as you climax, spraying your femcum all across her face");
			if (player.hasCock()) outputText(" as your dick unloads, spraying her hair with your spunk");
			outputText(".\n\n");
			outputText("Utterly satisfied, you let the valkyrie go. She collapses, dragging her finger and tongue out of you before she face-plants in the snow. You giggle, giving her a pat on her cum-soaked head before grabbing a few of your gems and heading back to camp.");
			player.orgasm('Generic');
			combat.cleanupAfterCombat();
		}
		//Scissor
		private function valkyrieScissor():void {
			clearOutput();
			outputText("You gently push the kneeling valkyrie onto her back and unclasp your " + player.armorName +" just enough to reveal your " + player.vaginaDescript() + ". The girl squirms a bit, but a harsh word from you stops her in her tracks as you spread her legs and get in position. With ease, you heft one of her long legs over your shoulder, pressing her slick cunt against yours.");
			outputText("You give her a little grin and begin to grind against her leg, rubbing your " + player.vaginaDescript() + " along her thighs, feeling her smooth skin part your pussylips ever so slightly. Unwilling to just sit there, you’re gratified to see your partner begin to rub her own cunt against yours, returning your affections. Now that it’s a real two-way, you pick up the pace a little, settling into a good rhythm with the valkyrie.");
			outputText("You reach over and, with a little help from your lover, unclasp her breastplate. Now guarded by only a thin shift, you grasp her perky breasts and begin to squeeze and fondle them, working in a few pinches to her tiny nipples and rough gropes as you play with her soft chest. She lets out a little gasp at each grope or tease, eventually returning the favor, sliding her hands into your " + player.armorName + " and grabbing your " + player.breastDescript(0) + ". She gives your nipples a hard tweak, eliciting a sharp hiss from your lips.");
			outputText("You spend the next few minutes happily grinding and groping each other, but that doesn’t seem to quite do it for the valkyrie girl. She reaches up and, to your surprise, wraps you in a tight embrace. \"Please... Faster. I need this so badly...\" she admits, kissing your neck as she bucks her hips against you. Well, well. You happily agree to her request, picking up your pace until you’re well and truly fucking her, grinding your hips into each other as the valkyrie kisses and caresses you, surprisingly tender for someone who seemed so stoic and prideful a few minutes ago.");
			outputText("You cup her cheeks and give her a kiss full on the lips. When you break it, she’s smiling beautifully. That smile, and her pussy stroking yours, sends you over the edge. You hold your winged lover tight and cum, moaning into her shoulder as you ride out a powerful orgasm. Still smiling, the valkyrie wraps her wings around you and lets out a little moan, and you feel her squirting onto you, soaking your already sodden crotch with her femspunk.");
			outputText("Exhausted from the playful sex, the valkyrie collapses on her back, utterly spent. You give her a pat on the cheek and a quick kiss before grabbing a few gems and heading on back to camp. ")
			player.orgasm('Vaginal');
			if (player.hasStatusEffect(StatusEffects.ParasiteEel) && player.statusEffectv1(StatusEffects.ParasiteEel) > 1){
				outputText("\n\nAn eel parasite quietly slipped inside her while both of you were busy.");
				dynStats("spe", 1, "tou", 1, "str", 1);
				var parasiteamount:Number = player.statusEffectv1(StatusEffects.ParasiteEel);
				player.addStatusValue(StatusEffects.ParasiteEel, 1, -1);
				var hungerdecrease:Number = player.statusEffectv3(StatusEffects.ParasiteEelNeedCum) / parasiteamount;
				player.addStatusValue(StatusEffects.ParasiteEelNeedCum, 3, -hungerdecrease);
			}
			combat.cleanupAfterCombat();
		}

	}

}


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

	public class Yeti extends Monster
	{
		public var tempSpeedLoss:Number = 0;

		public function yetiClawAndPunch():void {
			if (!combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).failed) {
				outputText("The yeti beast charges at you, though his claws only strike at air as you move nimbly over the ice flooring beneath you. The beast lets out an annoyed snarl.")
			}
			else {
				if (hasStatusEffect(StatusEffects.Blind) && rand(3) > 0) {
					outputText("The yeti furiously charges at you but blind as he is, he ends up running into the wall face-first instead. ");
					var yetiDamage:Number = 30 + rand(50);
					HP -= yetiDamage;
					outputText("The beast takes " + yetiDamage + " damage. ");
					if (rand(2) == 0) {
						outputText("He is now stunned.");
						createStatusEffect(StatusEffects.Stunned, 2, 0, 0, 0);
					}

					return;
				}
				outputText("Like a white blur the yeti charges you, striking at you with his claws and slashing over your " + player.armorName + " before a fist collides with your side, sending you sliding over the icy floor. ")
				var damage:Number = str + 25 + rand(50);
				damage = player.reduceDamage(damage,this);
				player.takeDamage(damage, true);
			}

		}
		public function yetiTackleTumble():void {
			if (!combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).failed) {
				//yeti takes moderate damage
				outputText("Sensing the beast’s intentions as you hear the cracking of ice under his feet, you dart to the side as the beast launches at you. With wide eyes, the ice yeti collides face first into the wall of the cave with a yelped growl. It rubs its face as it glares at you. ");
				var yetiDamage:Number = 30 + rand(50);
				HP -= yetiDamage;
				outputText("The beast takes " + yetiDamage + " damage.");
			}
			else {
				//take heavy damage
				outputText("The beast’s hind claws dig into the ice before his giant furred body launches at you and he collides with you in a brutal tackle. The pair of you are sent rolling around on the floor as you trade blows with the furred beast, and then he lifts you up and tosses you aside, your body hitting the ice walls with a groan. You shakily get to your feet. ");
				var damage:Number = str + 50 + rand(150);
				damage = player.reduceDamage(damage,this);
				player.takeDamage(damage, true);
			}

		}
		public function yetiSnowball():void {
			if (!combatAvoidDamage({doDodge:true,doParry:false,doBlock:false}).failed) {
				outputText("The beast steps back, magic condensing mist into ice within his hand. With narrow eyes you ready your body, and as soon as the ball of frost is whipped at you, you dart to the side avoiding it. The ice shatters uselessly against the wall, the ice yeti looking quite annoyed in your direction. ");
			}
			else {
				if (hasStatusEffect(StatusEffects.Blind) && rand(3) > 0) {
					outputText("The beast takes a step back, mist forming into a ball in his clenched fist. It condenses into a ball before your eyes, and with a growl the beast whips it at you. Blind as he is, the ball ends up missing you and hitting the wall instead.");

					return;
				}
				outputText("The beast takes a step back, mist forming into a ball in his clenched fist. It condenses into a ball before your eyes, and with a growl the beast whips it at you. The ball slams into your " + player.armorName + " and explodes into frost, you hiss at the sting. The frost is also restricting your movement. ");
				var damage:Number = (str / 2) + rand(20);
				damage = player.reduceDamage(damage,this);
				player.takeDamage(damage, true);
				player.addCombatBuff("spe", -10);
			}

			//take slight damage, reduce speed
			//nothing
		}
		public function yetiTease():void {
			//lust increased
			if (rand(player.lib + player.cor) >= 30 && rand(3) > 0) {
				outputText("You stare the beast down, though it looks like he’s distracted, with a hand dipping down to fondle his own ballsack. As your eyes follow it, you see a girthy red tip peeking out of his sheath, looking slick and releasing a wisp of steam in the air. Watching something so lewd has brought warmth to your body in this frozen cave, and you begin to wonder if his intentions are to eat or fuck you.")
				game.dynStats("lust", 20 + rand(10));
			}
			else outputText("The beast before you seems a bit distracted, a hand dipping to fondle his ballsack, but you keep your focus fixed on the monsters face, unwilling to let your guard waver for even a moment.");

		}

		override protected function performCombatAction():void
		{
			var actionChoices:MonsterAI = new MonsterAI()
				.add(eAttack, 1,true,0,FATIGUE_NONE,RANGE_MELEE);
			actionChoices.add(yetiClawAndPunch, 4, true, 10,FATIGUE_PHYSICAL,RANGE_MELEE);
			actionChoices.add(yetiTackleTumble, 3, true, 10,FATIGUE_PHYSICAL,RANGE_MELEE);
			actionChoices.add(yetiTease, 2,true,0,FATIGUE_NONE,RANGE_TEASE);
			actionChoices.add(yetiSnowball,1,true,0,FATIGUE_NONE,RANGE_RANGED);
			actionChoices.exec();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.glacialRift.yetiScene.winAgainstYeti();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void
		{
			game.glacialRift.yetiScene.loseToYeti();
		}

		public function Yeti()
		{
			this.a = "a ";
			this.short = "yeti";
			this.imageName = "yeti";
			this.long = "You are fighting an ice yeti, a savage of the north built to endure and hunt in the unforgiving cold. Every inch of its body is covered in a thick white pelt, though you can still make out the definition of bulging muscles from underneath. Its face is beastial, with narrow slitted eyes, and a pressed in feline nose all over a large maw of sharp, jagged teeth. It’s a menacing sight to behold. It standing about eight feet tall, with long tree trunk wide limbs ending in claws sharp enough to dig into thick ice. There’s no question about gender; it’s obviously a male. A large, thick sheath  protects his manhood from the freezing weather, and below are a pair of baseball sized testicles, held tight against his warm body by a heavy, furred ballsack.";
			this.race = "Yeti";
			// this.plural = false;
			this.createCock(12, 1.5, CockTypesEnum.HUMAN);
			this.balls = 2;
			this.ballSize = 2;
			this.cumMultiplier = 2;
			createBreastRow(Appearance.breastCupInverse("flat"));
			this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
			this.ass.analWetness = Ass.WETNESS_NORMAL;
			this.tallness = 8*12;
			this.hips.rating = Hips.RATING_BOYISH;
			this.butt.rating = Butt.RATING_TIGHT;
			this.skin.tone = "light";
			this.skin.setType(Skin.FUR);
			this.hair.color = "white";
			this.hair.length = 8;
			initStrTouSpeInte(95, 80, 60, 50);
			initLibSensCor(40, 20, 45);
			this.weaponName = "fists";
			this.weaponVerb="punch";
			this.weaponAttack = 8;
			this.armorName = "thick fur";
			this.armorDef = 3;
			this.bonusHP = 400;
			this.lust = 10;
			this.lustVuln = 0.4;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 20;
			this.gems = 35 + rand(25);
			this.drop = NO_DROP;
			this.createStatusEffect(StatusEffects.GenericRunDisabled, 0, 0, 0, 0);
			checkMonster();
		}

	}

}