code:
//Mimic, one of the classic encounters from Unnamed Text Game, now modified to be up to modern standards, with new fight.
package classes.Scenes.Monsters
{
	import classes.BaseContent;
	import classes.PerkLib;
	import classes.GlobalFlags.*;
	import classes.Scenes.Monsters.Mimic;

	public class MimicScene extends BaseContent
	{
		public var mimicAppearance:int;

		public function MimicScene() {}

		public function mimicTentacleStart(loc:int = 0):void {
			clearOutput();
			//Random appearance :D
			mimicAppearance = rand(4);
			//lead in based on where the event occurs
			//desert = 1, mountain = 2, forest = anything else,
			if (loc == 1) outputText("The wind howls through the tall pillars of rock that thrust out of the sand on both sides ", true);
			else if (loc == 2) outputText("Thunder rumbles overhead ", true);
			else if (loc == 3) outputText("The peaceful sounds of nature are everywhere ", true);
			outputText("as you explore deeper into this strange land. The relative monotony of your journey is interrupted as you see ");
			//1 = giant rock, 2 = giant boob, 3 = giant dick, everything else = a treasure chest
			if (mimicAppearance == 1) outputText("a huge block of grey stone covered in bizarre runes and symbols ");
			else if (mimicAppearance == 2) outputText("what can only be described as an enormous, disembodied… boob ");
			else if (mimicAppearance == 3) outputText("what is unmistakably an enormous, flaccid penis, complete with gigantic balls, ");
			else outputText("a large wooden box with a hinged lid and tarnished brass fittings ");
			outputText("nestled in a shady alcove.\n\n",false);
			//Check if you're smart enough to even think about it
			if (rand(18) + (player.inte / 2) < 15) {
				outputText("You are entranced by the sight of ");
				if (mimicAppearance == 1) outputText("a magic rock");
				else if (mimicAppearance == 2) outputText("a giant boob");
				else if (mimicAppearance == 3) outputText("a huge penis");
				else outputText("what is clearly a treasure chest");
				outputText(". Ignoring the sad remnants of your better judgment, you walk over. ");
				doNext(mimicTentacle1); //call mimicTentacle1()
			}
			else {
				if (mimicAppearance == 1) outputText("While a magic rock ");
				else if (mimicAppearance == 2) outputText("While a giant boob ");
				else if (mimicAppearance == 3) outputText("While a huge penis ");
				else outputText("While what is clearly a treasure chest ");
				outputText("certainly warrants further investigation, you aren’t absolutely sure that this is the best idea. Do you choose to investigate? ");
				doYesNo(mimicTentacle1, camp.returnToCampUseOneHour); //call mimicTentacle1() or return to main screen
			}
		}

		public function mimicTentacle1():void
		{
			outputText("You approach within a few feet of the ", true);
			if (mimicAppearance == 1) outputText("stone ");
			else if (mimicAppearance == 2) outputText("huge tit ");
			else if (mimicAppearance == 3) outputText("giant dick ");
			else outputText("chest ");
			//d100 roll (0-99) + inte/3 vs 75
			if (rand(100) + Math.floor(player.inte / 1.5) >= 80) {
				//another d100 roll + inte/3 vs only 50 this time
				if (rand(player.inte) + Math.floor(player.inte / 3) >= 50 + player.newGamePlusMod() * 10) {
					//find a cool item!
					outputText("and begin to reach towards it. However, just as you begin to move your hand, the… thing gives a strange shudder and emits a bizarre, snorting sound. You quickly realize that not only is this some kind of creature, but you have somehow come upon it while it sleeps! As you begin to slowly back away, you notice a ");
					var itemRoll:int = rand(4);
					if (itemRoll == 0) outputText("glinting silver vial ",false);
					if (itemRoll == 1) outputText("small sack ");
					if (itemRoll == 2) outputText("large glass bottle ");
					if (itemRoll == 3) outputText("small clay jar ");
					outputText("in a pile of rubbish off to one side of the alcove. Careful not to disturb the… whatever it is, you grab the ");
					if (itemRoll == 0) outputText("vial ",false);
					if (itemRoll == 1) outputText("sack ");
					if (itemRoll == 2) outputText("bottle ");
					if (itemRoll == 3) outputText("jar ");
					outputText("and leave the monster to its slumber. ");
					if (itemRoll == 0) inventory.takeItem(consumables.PPHILTR, camp.returnToCampUseOneHour); //find purity philter
					if (itemRoll == 1) findSomeGems(); //find bag o gems
					if (itemRoll == 2) inventory.takeItem(consumables.NUMBOIL, camp.returnToCampUseOneHour); //find numbing oil
					if (itemRoll == 3) inventory.takeItem(consumables.HUMMUS_, camp.returnToCampUseOneHour); //find Hummanus
					return;
				}
				else { //you just escape, no fancy item!
					outputText("and slowly reach towards it with one hand. As your fingers hover within inches of touching it, you feel a sudden sense of danger, and leap back just as dozens of tentacles sprout from the thing's surface. The strange creature lunges for you again, but you have already escaped its reach and, to your great relief, it appears to be immobile. ");
					doNext(camp.returnToCampUseOneHour); //main screen
					return;
				}
			}
			else { //if you're dumb or fail, FIGHT!
				outputText("and slowly reach out to touch it with one hand. You get a sense that something is terribly wrong when you realize that your hand is stuck fast to the ");
				if (mimicAppearance == 1) outputText("stone's surface! ");
				else if (mimicAppearance == 2) outputText("enormous boob's skin! ");
				else if (mimicAppearance == 3) outputText("enormous cock's skin! ");
				else outputText("box's surface! ");
				outputText("As you struggle to pull your hand free, the monster, for that is clearly what it is, opens its beady little eyes and stares at you hungrily. ");
				outputText("\n\n");
				//It grabs you!
				if (mimicAppearance == 1) outputText("An enormous maw opens in front of you, lined with huge rocky teeth. Dozens of tentacles shoot out of the things gaping mouth, and you scream with terror as they begin to drag you into its rocky gullet. ");
				else if (mimicAppearance == 2) outputText("The enormous nipple opens wide to reveal a lamprey like mouth lined with hundreds of tiny pointy teeth and thin, whippy tongues shoot out and splatter milky saliva everywhere as they flail back and forth. Dozens of tentacles sprout from its quivering bulk and wrap around your limbs and waist, lifting you into the air. ");
				else if (mimicAppearance == 3) outputText("The monstrous cock rears up like a snake and a emits a horrible hissing garble as what would be its urethral opening splits open to reveal row after row of tiny, pointy teeth. Thin, whippy tongues shoot out and splatter gooey cum-spit everywhere as they flail back and forth. Dozens of tentacles sprout from its shaft and wrap around your limbs and waist, lifting you into the air. ");
				else outputText("The lid of the chest opens to reveal a giant mouth, filled with hundreds of tiny pointy teeth and a huge slavering tongue that lashes about wildly. Dozens of tentacles shoot out of the thing's gaping jaws, and you scream with terror as they begin to drag you into its gullet. ");
				outputText("\n\nYou shake and break free from the tentacles. It's a fight!");
				//Start the FIGHT!
				startCombat(new Mimic(mimicAppearance));
			}
			doNext(camp.returnToCampUseOneHour); //Failsafe
		}

		//If you lose to Mimic.
		public function mimicTentacle2():void
		{
			if (player.hasCock()) var tempSize:Number = Math.round((player.averageNippleLength() + player.cocks[0].cockLength / 2) * 100) / 100;
			var nippleCockDescript:String = player.nippleDescript(0);
			//If its a box or a rock, it swallows you whole!
			if (mimicAppearance != 2 && mimicAppearance != 3) outputText("\n\nWith you collapsing from being unable to put up any further fight, you are unable to prevent yourself from being dragged into the thing’s enormous maw. You are pulled deeper and deeper into the monster’s surprisingly vast innards, and the light streaming in through its jaws grows more and more faint, until with a final <i>*snap*</i>, the light is cut off completely. Surrounded by total darkness and gripped by what must be hundreds of tentacles, you let loose an involuntary moan of terror as the finality of your fate sinks home. ");
			outputText("You feel hundreds of tiny tendrils begin gently stroking and teasing your whole body. They seem to seek out every erogenous zone you have with unnatural precision. In a matter of minutes, you are quaking with arousal, ", true);
			//no parts!
			if (player.gender == 0)
			{
				outputText("but your crotch remains smooth and featureless. You sense that the creature is becoming angry with your genderless state, ");
				//nipplecocks?
				if (player.breastRows[0].nippleCocks)
				{
					outputText("but before it does something rash, your " + nippleCockDescript + " " + tempSize + " inch nipplecocks grow painfully erect, throbbing in time with your racing heart. The creature burbles appreciatively, clearly glad that you have something to offer. ");
					if (mimicAppearance == 2 || mimicAppearance == 3)
					{
						outputText("The tentacles move your torso towards the thing’s toothy maw, and with mounting terror, you realize that it intends to suck all of your throbbing dicknipples into its nightmare hole of a mouth! As the echoes of your screams finally die away, you realize that your breasts are still intact, and that the horrible looking teeth are actually fairly soft. However, you quickly understand their purpose when they dig painfully into your tits as you attempt to pull them free. ");
					}
					else
					{
						outputText("You feel some kind of tentacle collect ");
						if (player.totalBreasts() * player.breastRows[0].nipplesPerBreast == 2) outputText("both of your " + nippleCockDescript + " dicknipples and engulf them in some kind of orifice. ");
						else outputText("every single one of your " + int(player.totalBreasts() * player.breastRows[0].nipplesPerBreast) + " " + nippleCockDescript + " dicknipples into a big bundle and engulf them all in a single large orifice. ");
					}
					outputText("\n\nThe ");
					//Mouth or suckers?
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("creature's mouth begins ");
					else outputText("mouth-tentacle begins ");
					outputText("to suck and massage your cockteats with a sort of spinning motion. The combined sensations from that and the countless other tendrils quickly bring you to orgasm, causing you to spew unusually large amounts of ");
					if (player.breastRows[0].lactationMultiplier > 0) outputText("milky ");
					outputText("cum deep into the creatures hungry mouth. Unfortunately, the beast doesn’t seem satisfied with just one emission, and its ministrations become more forceful as you are made to cum again and again. Far beyond the limits of your endurance, you still manage to hold on to some last shred of consciousness. Even as dozens of small tendrils are forced into your tortured nippledicks in search of more cum, your only reaction is a weak moan. As the thing continues to alternate between scouring your body for any last traces of semen and attempting to coax you to further orgasm, you eventually slip into unconsciousness. ");
					//if you didnt get swallowed earlier, get swallowed now
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
				}
				//nipplecunts?
				if (player.hasFuckableNipples())
				{
					outputText("but before it does something rash, the ");
					//describe nipplecunts based on vag looseness
					if (player.vaginas[0].vaginalLooseness < 2) outputText("small openings ");
					if (player.vaginas[0].vaginalLooseness >= 2 && player.vaginas[0].vaginalLooseness < 4) outputText("puckered openings ");
					if (player.vaginas[0].vaginalLooseness >= 4) outputText("engorged lips ");
					outputText("on your nipples to ease open and begin ");
					//wetness + milkyness :P
					if (player.vaginas[0].vaginalWetness < 2) outputText("dripping ");
					if (player.vaginas[0].vaginalWetness >= 2 && player.vaginas[0].vaginalWetness < 4) outputText("drooling ");
					if (player.vaginas[0].vaginalWetness >= 4) outputText("spurting ");
					if (player.breastRows[0].lactationMultiplier > 0) outputText("milky ");
					outputText("fluids. The monster makes a surprised but appreciative gurgle as it begins to use its ");
					//what kind of tongue? box or rock = huge, boob/dick = whippy
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("long, whippy tongues ");
					else outputText("gigantic tongue");
					outputText("to slurp at this new bounty.\n\nYour mind reels as ");
					//what kind of tongue? box or rock = huge, boob/dick = whippy
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("the seemingly uncountable number of tongues and tendrils slurp, stroke, and suck at your breasts. ");
					else
					{
						outputText("the monster’s huge tongue covers the entire front of your body, dragging its bumpy, slick surface over your ");
						if (player.totalBreasts() > 2) outputText(player.totalBreasts() + " ");
						outputText("breasts in long strokes. ");
					}
					outputText("You orgasm again and again, far beyond the limits of your endurance. Yet you still hold on to some last shred of consciousness. The creature’s ministrations become more forceful, but you’re too far gone to care. Even when the creature shoves ");
					//what kind of tongue? box or rock = huge, boob/dick = whippy
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("what must be two dozen of its wriggling tongues deep into each of your tortured nippples, exploring every nook and crevice");
					else outputText("its huge tongue deep into each of your tortured nipples one by one");
					outputText(", your reaction is only a weak moan. ");
					outputText("As the thing continues to alternate between scouring your body for any last traces of nectar and attempting to coax you to further orgasm, you eventually slip into unconsciousness. ");
					//if you didnt get swallowed earlier, get swallowed now
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
				}
				//just a boring, genderless freak?
				if (!player.breastRows[0].nippleCocks && !player.hasFuckableNipples())
				{
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("and its eyes narrow, giving it a singularly furious expression. ");
					else outputText("and the tentacles holding you seem to quiver with a palpable fury. ");
					outputText("\n\nWithout warning, hundreds of tentacles begin whipping and beating you violently. You try to scream, but your shouts are cut off by a punishing series of blows to the stomach. Your ears are filled with the monster's burbling roars of fury as you are pummeled into unconsciousness. ");
					//if you didnt get swallowed earlier, get swallowed now
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
				}
			}
			//Man parts!
			if (player.gender == 1)
			{
				outputText("and your ");
				if (player.cockTotal() == 1) outputText(player.cockDescript() + " is ");
				else outputText(player.multiCockDescript() + " are ");
				outputText("soon rock hard. ");
				//did it swallow you, or does it have a mouth?
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					outputText("The tentacles move your crotch towards the thing’s toothy maw, and with mounting terror, you realize that it intends to suck your throbbing dick");
					if (player.cockTotal() > 1) outputText("s");
					outputText(" into its nightmare hole of a mouth! As the echoes of your screams finally die away, you realize that your junk is still intact, and that the horrible looking teeth are actually fairly soft. However, you quickly understand their purpose when they dig painfully into your cock");
					if (player.cockTotal() == 1) outputText(" as you attempt to pull it free. ");
					else outputText("s as you attempt to pull them free. ");
				}
				else
				{
					outputText("You feel some kind of orifice enveloping ");
					if (player.cockTotal() == 1) outputText("your " + player.cockDescript() + ". ");
					else outputText("all of your cocks at once. ");
				}
				//Do you have dicknipples?
				if (player.breastRows[0].nippleCocks)
				{
					outputText("\n\nMeanwhile, the tiny tendrils continue to stimulate the rest of your body, causing your " + nippleCockDescript + " " + tempSize + " inch nipplecocks to grow painfully erect, throbbing in time with your racing heart. The creature lets loose an irritated burble");
					//if not swallowed
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText(", and you see its eyes narrow with anger");
					outputText(". It seems to be annoyed that you would dare sprout more cocks in such an inconvenient location! Your affront is dealt with quickly as your errant dicknipples are engulfed in hastily sprouted sucker tentacles. ");
				}
				//back to the main action!
				outputText("\n\nThe ");
				//Mouth or suckers?
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					if (player.breastRows[0].nippleCocks) outputText("creature's mouths begin ");
					else outputText("creature's mouth begins ");
				}
				else
				{
					if (player.breastRows[0].nippleCocks) outputText("mouth-tentacles begin ");
					else outputText("mouth-tentacle begins ");
				}
				outputText("to suck and massage your cock");
				if (player.cockTotal() > 1 || player.breastRows[0].nippleCocks) outputText("s");
				outputText(" with a sort of spinning motion. The combined sensations from that and the countless other tendrils quickly bring you to orgasm, causing you to spew unusually large amounts of cum deep into the creatures hungry mouth",false);
				if (player.breastRows[0].nippleCocks) outputText("s");
				outputText(". Unfortunately, the beast doesn’t seem satisfied with just one emission, and its ministrations become more forceful as you are made to cum again and again. Far beyond the limits of your endurance, you still manage to hold on to some last shred of consciousness. Even as dozens of small tendrils are forced down your urethra");
				if (player.cockTotal() > 1 || player.breastRows[0].nippleCocks) outputText("s");
				outputText(" in search of more cum, your only reaction is a weak moan. As the thing continues to alternate between scouring your body for any last traces of semen and attempting to coax you to further orgasm, you eventually slip into unconsciousness. ");
				//if you didnt get swallowed earlier, get swallowed now
				if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
			}
			//Girl Parts!
			if (player.gender == 2)
			{
				outputText("and your " + player.vaginaDescript(), false);
				if (player.vaginas.length > 1) outputText("s are ");
				else outputText(" is ");
				//wetnesssss
				if (player.vaginas[0].vaginalWetness < 2) outputText("dripping ");
				if (player.vaginas[0].vaginalWetness >= 2 && player.vaginas[0].vaginalWetness < 4) outputText("drooling ");
				if (player.vaginas[0].vaginalWetness >= 4) outputText("spurting ");
				outputText("juices everywhere. The thing's ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3) outputText("thin, whippy tongues run");
				else outputText("huge tongue runs");
				outputText(" across your " + player.vaginaDescript(), false);
				if (player.vaginas.length > 1) outputText("s");
				outputText(", and you hear the creature burble with satisfaction. It clearly likes the taste. ");
				//do you have fuckable nipples?
				if (player.hasFuckableNipples())
				{
					outputText("\n\nMeanwhile, the tiny tendrils continue to stimulate the rest of your body, causing the ");
					//describe nipplecunts based on vag looseness
					if (player.vaginas[0].vaginalLooseness < 2) outputText("small openings ");
					if (player.vaginas[0].vaginalLooseness >= 2 && player.vaginas[0].vaginalLooseness < 4) outputText("puckered openings ");
					if (player.vaginas[0].vaginalLooseness >= 4) outputText("engorged lips ");
					outputText("on your nipples to ease open and begin ");
					//wetness + milkyness :P
					if (player.vaginas[0].vaginalWetness < 2) outputText("dripping ");
					if (player.vaginas[0].vaginalWetness >= 2 && player.vaginas[0].vaginalWetness < 4) outputText("drooling ");
					if (player.vaginas[0].vaginalWetness >= 4) outputText("spurting ");
					if (player.averageLactation() > 0) outputText("milky ");
					outputText("fluids. The monster makes a surprised but appreciative gurgle as it begins to use its ");
					//what kind of tongue? box or rock = huge, boob/dick = whippy
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("cluster of newly sprouted tongues ");
					else outputText("seemingly <i>even larger</i> tongue ");
					outputText("to slurp at this new bounty. ");
				}
				//back to the main action!
				outputText("\n\nYour mind reels as ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					outputText("the seemingly uncountable number of tongues and tendrils slurp, stroke, and suck at your " + player.vaginaDescript(), false);
					if (player.vaginas.length > 1) outputText("s");
					outputText(" and " ,false);
					if (player.totalBreasts() > 2) outputText(player.totalBreasts() + " ");
					outputText("breasts. ");
				}
				else
				{
					outputText("the monster’s huge tongue covers your crotch and the entire front of your body, dragging its bumpy, slick surface over ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript(), false);
					else outputText("all of your " + player.vaginaDescript() + "s");
					outputText(" and ");
					if (player.totalBreasts() > 2) outputText(player.totalBreasts() + " ");
					outputText("breasts in long strokes. ");
				}
				outputText("You orgasm again and again, far beyond the limits of your endurance. Yet you still hold on to some last shred of consciousness. The creature’s ministrations become more forceful, but you’re too far gone to care. Even when the creature shoves ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					outputText("what must be two dozen of its wriggling tongues deep into ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript(), false);
					else outputText("each of your " + player.vaginaDescript() + "s");
					outputText(", exploring every nook and crevice");
				}
				else
				{
					outputText("its huge tongue deep into ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript(), false);
					else outputText("each of your " + player.vaginaDescript() + "s one by one");
				}
				outputText(", your reaction is only a weak moan. ");
				if (player.hasFuckableNipples()) outputText("Your moan drags out a bit longer as your poor nipples receive the same treatment. ");
				outputText("As the thing continues to alternate between scouring your body for any last traces of nectar and attempting to coax you to further orgasm, you eventually slip into unconsciousness. ");
				//if you didnt get swallowed earlier, get swallowed now
				if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
			}
			//Futaz!
			if (player.gender == 3)
			{
				outputText(" your " + player.vaginaDescript(), false);
				if (player.vaginas.length > 1) outputText("s");
				//wetnesssss
				if (player.vaginas[0].vaginalWetness < 2) outputText(" dripping ");
				if (player.vaginas[0].vaginalWetness >= 2 && player.vaginas[0].vaginalWetness < 4) outputText(" drooling ");
				if (player.vaginas[0].vaginalWetness >= 4) outputText(" spurting ");
				outputText("juices everywhere while your ");
				if (player.cockTotal() == 1) outputText(player.cockDescript() + " rapidly becomes ");
				else outputText(player.multiCockDescript() + " rapidly become ");
				outputText("rock hard. Your eyes roll back in your head as the thing's ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3) outputText("thin, whippy tongues run");
				else outputText("huge tongue runs");
				outputText(" across your " + player.vaginaDescript(), false);
				if (player.vaginas.length > 1) outputText("s");
				outputText(". ");
				outputText("You feel some kind of orifice enveloping ");
				if (player.cockTotal() == 1) outputText("your " + player.cockDescript() + ". ");
				else outputText("all of your cocks at once. ");
				//fun with tits?
				if (player.breastRows[0].nippleCocks || player.hasFuckableNipples()) outputText("\n\nMeanwhile, the tiny tendrils continue to stimulate the rest of your body, causing ");
				//do you have fuckable nipples?
				if (player.hasFuckableNipples())
				{
					//describe nipplecunts based on vag looseness
					if (player.vaginas[0].vaginalLooseness < 2) outputText("the small openings ");
					if (player.vaginas[0].vaginalLooseness >= 2 && player.vaginas[0].vaginalLooseness < 4) outputText("the puckered openings ");
					if (player.vaginas[0].vaginalLooseness >= 4) outputText("the engorged lips ");
					outputText("on your nipples to ease open and begin ");
					//wetness + milkyness :P
					if (player.vaginas[0].vaginalWetness < 2) outputText("dripping ");
					if (player.vaginas[0].vaginalWetness >= 2 && player.vaginas[0].vaginalWetness < 4) outputText("drooling ");
					if (player.vaginas[0].vaginalWetness >= 4) outputText("spurting ");
					if (player.breastRows[0].lactationMultiplier > 0) outputText("milky ");
					outputText("fluids. The monster makes a surprised but appreciative gurgle as it begins to use its ");
					//what kind of tongue? box or rock = huge, boob/dick = whippy
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText("cluster of newly sprouted tongues ");
					else outputText("seemingly <i>even larger</i> tongue ");
					outputText("to slurp at this new bounty. ");
				}
				//do you have nipplecocks?
				if (player.breastRows[0].nippleCocks)
				{
					outputText("your " + nippleCockDescript + " " + tempSize + " inch nipplecocks to grow painfully erect, throbbing in time with your racing heart. The creature lets loose an irritated burble");
					//if not swallowed
					if (mimicAppearance == 2 || mimicAppearance == 3) outputText(", and you see its eyes narrow with anger");
					outputText(". It seems to be annoyed that you would dare sprout more cocks in such an inconvenient location! Your affront is dealt with quickly as your errant dicknipples are engulfed in hastily sprouted sucker tentacles. ");
				}
				//back to the main action!
				outputText("\n\nYour mind reels as ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					outputText("the seemingly uncountable number of tongues and tendrils slurp, stroke, and suck at your " + player.vaginaDescript(), false);
					if (player.vaginas.length > 1) outputText("s");
					outputText(" and ");
					if (player.totalBreasts() > 2) outputText(player.totalBreasts() + " ");
					outputText("breasts while the ");
					if (player.breastRows[0].nippleCocks) outputText("creature's mouths begin ");
					else outputText("creature's mouth begins ");
				}
				else
				{
					outputText("the monster’s huge tongue slithers over your crotch, around your ");
					if (player.cockTotal() == 1 && !player.hasSheath()) outputText("cock, ");
					else if (!player.hasSheath()) outputText("bundle of cocks, ");
					else outputText("sheath, ");
					outputText("and up the entire front of your body, dragging its bumpy, slick surface over ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript());
					else outputText("all of your " + player.vaginaDescript() + "s");
					outputText(" and " ,false);
					if (player.totalBreasts() > 2) outputText(player.totalBreasts() + " ");
					outputText("breasts in long strokes while the ");
					if (player.breastRows[0].nippleCocks) outputText("mouth-tentacles begin ");
					else outputText("mouth-tentacle begins ");
				}
				outputText("to suck and massage your cock");
				if (player.cockTotal() > 1 || player.breastRows[0].nippleCocks) outputText("s");
				outputText(" with a sort of spinning motion.");
				outputText("You orgasm again and again, far beyond the limits of your endurance. Yet you still hold on to some last shred of consciousness. The creature’s ministrations become more forceful, but you’re too far gone to care. Even when the creature shoves ");
				//what kind of tongue? box or rock = huge, boob/dick = whippy
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					outputText("what must be two dozen of its wriggling tongues deep into ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript());
					else outputText("each of your " + player.vaginaDescript() + "s");
					outputText(", exploring every nook and crevice, ");
				}
				else
				{
					outputText("its huge tongue deep into ");
					if (player.vaginas.length == 1) outputText("your " + player.vaginaDescript());
					else outputText("each of your " + player.vaginaDescript() + "s one by one");

				}
				outputText(" while dozens of small tendrils are forced down your urethra");
				if (player.cockTotal() > 1 || player.breastRows[0].nippleCocks) outputText("s");
				outputText(" in search of more cum, your reaction is only a weak moan. ");
				if (player.hasVagina()) player.cuntChange(60, true);
				if (player.hasFuckableNipples()) outputText("Your moan drags out a bit longer as your poor nipples receive the same treatment. ");
				outputText("As the thing continues to alternate between scouring your body for any last traces of fluid and attempting to coax you to further orgasm, you eventually slip into unconsciousness. ");
				//if you didnt get swallowed earlier, get swallowed now
				if (mimicAppearance == 2 || mimicAppearance == 3) outputText("\n\nJust before you black out, you look up to see yourself being lifted towards the beast’s suddenly huge, gaping maw. ");
			}
			player.orgasm();
			doNext(mimicTentacleEnd);
		}

		public function mimicTentacleEnd():void {
			clearOutput();
			outputText("Much to your surprise, you wake up some time later. You aren’t sure where you are, or how you got there, but you are certainly glad to be alive. You are covered in some kind of slime, and your body seems strangely sensitive. ");
			if (player.hasVagina()) {
				if (mimicAppearance == 2 || mimicAppearance == 3)
				{
					if (rand(5) > player.vaginas[0].vaginalWetness)
					{
						player.vaginas[0].vaginalWetness++;
						outputText("<b>Strangely, even after that ordeal, your vagina seems wetter than usual.</b> ");
					}
				}
				else
				{
					if (rand(5) > player.vaginas[0].vaginalLooseness)
					{
						player.vaginas[0].vaginalLooseness++;
						outputText("<b>Your cunt is painfully stretched from the ordeal, temporarily enlarged.</b> ");
					}
				}
			}
			dynStats("int", -2, "sen", 5, "cor", 2);
			combat.cleanupAfterCombat();
		}

		public function killTheMimic():void {
			clearOutput();
			outputText("The monster collapses, too brutally beaten to even harm you. You search the contents of the monster before heading off. ");
			combat.cleanupAfterCombat();
		}

		public function findSomeGems():void {
			var quantity:int = (rand(30) + 10 + player.level) * (1 + (player.perkv1(PerkLib.AscensionFortune) * 0.1));
			player.gems += quantity;
			outputText("Upon opening the small bag, you find " + quantity + " gems inside!");
			doNext(camp.returnToCampUseOneHour);
		}
	}

}


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

	public class Succubus extends AbstractSuccubus
	{

		public function succubusBarrage():void {
			outputText("The succubus looks like as if she's running towards you. ");
			if (getEvasionRoll()) {
				outputText("With your efforts in running, you manage to run until she stops giving chase.");
			}
			else {
				var damage:int = 0;
				outputText("Despite your sprint, it closes the distance and leaps on you, tearing and scratching. ");
				if (rand((player.str / 3) + 10) < ((str / 3) + 10)) {
					outputText("You try to shake her off, but she's too powerful and rains painful scratches and blows before pushing you onto the ground. You get up and get back to fighting. ");
					damage = (10 + str);
				}
				else {
					outputText("You bring your strength to bear and throw her off with only minor injuries. ");
					damage = Math.floor((5 + str) / 2);
				}
				player.takeDamage(damage, true);
			}
			combatRoundOver();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void {
			game.succubusScene.loseToSuccubus();
		}

		override public function defeated(hpVictory:Boolean):void {
			game.succubusScene.winAgainstSuccubus();
		}

		public function Succubus()
		{
			this.a = "the ";
			this.short = "ivory succubus";
			this.imageName = "ivorysuccubus";
			this.long = "The succubus before you is a typical example of a lusty demon. Two horns protrude from her forehead, a pair of wings sprout from her back, and a spaded tail swishes about. She's completely nude, leaving her G-cup breasts and moist pussy open for you to see. From time to time, you can see her jiggling ass clearly inviting you. She doesn't appear to be wielding anything.";
			this.createVagina(false, VAGINA_WETNESS_WET, VAGINA_LOOSENESS_NORMAL);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 40, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("G"));
			this.ass.analLooseness = ANAL_LOOSENESS_TIGHT;
			this.ass.analWetness = ANAL_WETNESS_NORMAL;
			this.createStatusEffect(StatusEffects.BonusACapacity,30,0,0,0);
			this.tallness = 35 + rand(4);
			this.hipRating = HIP_RATING_AMPLE+2;
			this.buttRating = BUTT_RATING_LARGE;
			this.skinTone = "ivory";
			this.hairColor = "black";
			this.hairLength = 4;
			initStrTouSpeInte(25, 20, 35, 42);
			initLibSensCor(75, 45, 90);
			this.weaponName = "fists";
			this.weaponVerb="punch";
			this.armorName = "skin";
			this.lust = 50;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 3;
			this.gems = rand(5) + 5;
			this.drop = new WeightedDrop().
					add(consumables.INCUBID, 1).
					add(consumables.SUCMILK, 1).
					add(consumables.SDELITE, 1);
			this.special1 = kissAttack;
			this.special2 = seduceAttack;
			this.special3 = succubusBarrage;
			checkMonster();
		}

	}

}

license: unknown


code:
//Succubus, one of the classic encounters from Unnamed Text Game, now modified to be up to modern standards, with new fight.
package classes.Scenes.Monsters
{
	import classes.BaseContent;

	public class SuccubusScene extends BaseContent
	{

		public function SuccubusScene() {}

		public function encounterSuccubus():void {
			clearOutput();
			//Glared at
			outputText("While you're minding your own business, you spot a figure in the distance. It appears to be a succubus with ivory skin and she glares at you.\n\n");
			if (player.hasCock()) {
				outputText("She's expressing interest in your [cock] and says, \"Hello dearie. You've got that wonderful cock of yours and I'd like to offer my pussy to you. It'll be very pleasurable. What do you say?\"");
				menu();
				addButton(0, "Fight", fightAgainstSuccubus);
				addButton(1, "Accept", loseToSuccubus, false);
				addButton(4, "Run", tryToFlee);
			}
			else {
				outputText("She starts to close the distance by charging at you! It's a fight!");
				startCombat(new Succubus());
			}
		}

		public function fightAgainstSuccubus():void {
			startCombatImmediate(new Succubus());
		}

		public function winAgainstSuccubus():void {
			clearOutput();
			outputText("The succubus falls to her knees, too badly " + (monster.HP <= 0 ? "beaten" : "aroused") + "beaten to continue fighting.");
			if (player.hasCock() && player.lust >= 33) { //Cocks only at the moment.
				outputText("\n\nSadly, your desires have not been met. Of course, you can always rape the poor thing. Do you?");
				doYesNo(winAgainstSuccubusRape, combat.cleanupAfterCombat);
			}
			else {
				combat.cleanupAfterCombat();
			}
		}

		public function winAgainstSuccubusRape():void {
			clearOutput();
			outputText("Seeing the succubus in such a vulnerable state \n\n");
			outputText("Lost in the moment, you grind your pelvic region into hers, feeling around for her fuckhole with your erect member", false);
			//Has cocks
			if (player.hasCock()) {
				if (player.cockTotal() > 1) outputText("s. When you feel at least one of them sink in a bit, you thrust in her hard, the others splaying out in all directions. The succubus screams at you, obviously violated. But that only serves to drive you on further, fucking her faster and harder. One of your cocks slips out, slathered in her own juices and someone else's cum, and another takes its place.\n\n", false);
				else outputText(" When you feel yourself sink in a bit, you thrust in her hard. The succubus screams at you, obviously violated. But that only serves to drive you on further, fucking her faster and harder.\n\n", false);
				outputText("Her tight cunt, combined with your crazed lust, has you shooting a huge load into her deepest reaches. But just once isn't enough right now. You keep going, staying hard the whole time.", false);
				if (player.cockTotal() > 1) outputText("She only wears herself out trying to wriggle away from you, and you use the chance to carefully cram another of your cocks into her. You can feel her getting stretched out. ", false);
				outputText("With the glint of a pervert in your eye, you look down on her, drinking in the anguish in her face as you rape her slowly this time. She gets increasingly wet as you keep fucking her, and you mock her openly for supposedly enjoying this. You lick the tears rolling down her face and continue for some time. When you decide she's ben broken, you decide to finish and change suddenly to much faster strokes. The succubus howls, ruffling your hair as you cum all over her insides yet again. Satisfied, you pull out and leave her there panting and wasted, evidence of the incursion leaking from her snatch. ", false);
			}
			player.orgasm();
			dynStats("lib", -2, "cor", 3);
			combat.cleanupAfterCombat();
		}

		public function loseToSuccubus(fromBattle:Boolean = true):void {
			clearOutput();
			if (fromBattle) outputText("Too badly " + (player.HP <= 0 ? "beaten" : "aroused") + " by the succubus, you give in and let the succubus do whatever she wants to you.\n\n");
			if (player.hasCock()) {
				outputText("She saunters toward you, swaying her hips the whole way. When she gets within your reach she kisses you instantly, shoving her tongue into your mouth as far as it can go. At the same time, she wraps a leg around you and hooks it behind you, grabbing your stiff cock and guiding it to her nethers.");
				outputText("\n\nHer insides and warm and wet already, squeezing around you and twisting eagerly. The succubus moans into your mouth as she caresses your body with her hands. She expertly lowers the both of you from standing to the ground, with her staying on top of you. She switches to bouncing on your cock, taking it as far as she can. Her powerful legs bounce at a pace few human women could match. She coaxes you to shoot inside her quite easily, and the feeling of this ejaculation is so powerful you feel like you could die of pleasure right there. The succubus moans erotically as she accepts your seed inside of her, and leans over to kiss you on the forehead as if to wish you good night.");
				outputText("\n\nStrangely, the kiss is the last thing you remember, and you awaken on the cold ground, feeling completely exhausted. It feels like she took part of your soul with her...but it felt so good.");
			}
			else {
				outputText("She saunters toward you, swaying her hips the whole way. When she gets within your reach, she caresses your cheeks and pulls your face in close to hers, sliding her tongue deep into your mouth. You " + (player.lib + player.cor < 80 ? "reluctantly" : "eagerly") + " engage in the kiss, dueling her tongue with your own, trying to pin it down. She expertly laps your tongue and crushes it against the floor of your mouth. She swings one leg up to your head to scissor against your pubic region, and grinds against it hard despite there being nothing there. She flits her gaze down, then back up to yours, her eyes filled with lust regardless. She makes out with you longer, going on to lick all around your lips. All the way she pushes against you hard enough to let you feel her pubic bone crushing against yours, along with her considerable wetness.", false);
				outputText("\n\nWhen it's finally over she leaves you wordlessly. Suddenly on the ground there's a bottle that wasn't there before. You pick it up and examine it. It's a viscous white fluid labeled 'Incubus Draft'.");
				inventory.takeItem(consumables.INCUBID, combat.cleanupAfterCombat); //it's Incubus Draft
			}
			player.orgasm();
			dynStats("lib", -2, "cor", 3);
			if (fromBattle)
				combat.cleanupAfterCombat();
			else
				doNext(camp.returnToCampUseTwoHours);
		}

		public function tryToFlee():void {
			clearOutput();
			startCombat(new Succubus());
			combat.runAway();
		}

	}

}


code:
package classes.Scenes.NPCs
{
	import classes.*;

	/**
	 * ...
	 * @author ...
	 */
	public class Amily extends Monster
	{

		override protected function performCombatAction():void
		{
			if (findStatusEffect(StatusEffects.Concentration) < 0 && rand(4) == 0) amilyConcentration();
			else if (rand(3) == 0) amilyDartGo();
			else if (rand(2) == 0) amilyDoubleAttack();
			else amilyAttack();
		}

		//COMBAT AMILY STUFF
		//(Has regular attack)
		public function amilyAttack():void {
			var damage:Number;
			//return to combat menu when finished
			doNext(game.playerMenu);
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0 && rand(3) < 2) {
				outputText(capitalA + short + " completely misses you with a blind attack!\n", false);
				game.combat.combatRoundOver();
				return;
			}
			//Determine if dodged!
			var dodged:String = player.getEvasionReason();
			//Determine damage - str modified by enemy toughness!
			damage = int((str + weaponAttack) - Math.random()*(player.tou+player.armorDef));
			//Dodged
			if (dodged != null) {
				outputText("Amily dashes at you and swipes her knife, but you quickly sidestep the blow.", false);
				//Add tags for miss/evade/flexibility/etc.
				switch(dodged) {
					case EVASION_SPEED:
						outputText(" [Dodge]", false);
						break;
					case EVASION_EVADE:
						outputText(" [Evade]", false);
						break;
					case EVASION_MISDIRECTION:
						outputText(" [Misdirect]", false);
						break;
					case EVASION_FLEXIBILITY:
						outputText(" [Flexibility]", false);
						break;
					case EVASION_UNHINDERED:
						outputText(" [Unhindered]", false);
						break;
					default:
						CoC_Settings.error();
						outputText(" [ERROR]", false);
						break;
				}
			}
			//Blocked
			else if (damage <= 0) {
				damage = 0;
				//Due to toughness or amor...
				if (rand(player.armorDef + player.tou) < player.armorDef) outputText("Your " + player.armorName + " absorb and deflect every " + weaponVerb + " from " + a + short + ".", false);
				else outputText("You deflect and block every " + weaponVerb + " " + a + short + " throws at you.", false);
			}
			//Got hit!
			else {
				outputText("Amily dashes at you and swipes her knife, cutting you. ", false);
				damage = player.takeDamage(damage, true);
			}
			if (damage > 0) {
				if (lustVuln > 0 && player.armorName == "barely-decent bondage straps") {
					if (!plural) outputText("\n" + capitalA + short + " brushes against your exposed skin and jerks back in surprise, coloring slightly from seeing so much of you revealed.", false);
					else outputText("\n" + capitalA + short + " brush against your exposed skin and jerk back in surprise, coloring slightly from seeing so much of you revealed.", false);
					lust += 10 * lustVuln;
				}
			}
			game.statScreenRefresh();
			outputText("\n", false);
			game.combat.combatRoundOver();
		}

		//(Special Attacks)
		//-Double Attack: Same as a normal attack, but hits twice.
		public function amilyDoubleAttack():void {
			var dodged:Number = 0;
			var damage:Number = 0;
			//return to combat menu when finished
			doNext(game.playerMenu);
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0 && rand(3) < 2) {
				dodged++;
			}
			//Determine if dodged!
			if (player.spe - spe > 0 && int(Math.random()*(((player.spe-spe)/4) +80)) > 80) {
				dodged++;
			}
			//Determine if evaded
			if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				dodged++;
			}
			//("Misdirection"
			if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 10 && player.armorName == "red, high-society bodysuit") {
				dodged++;
			}
			//Determine if cat'ed
			if (player.findPerk(PerkLib.Flexibility) >= 0 && rand(100) < 6) {
				dodged++;
			}
			//Get hit!
			if (dodged < 2) {
				//Determine damage - str modified by enemy toughness!
				damage = int((str + weaponAttack) - Math.random()*(player.tou+player.armorDef));
				//Double damage if no dodge.
				if (dodged == 0) damage *= 2;
				//Blocked?
				if (damage == 0) {
					outputText("Amily dashes at you and slashes at you twice in the time it would take most to throw a single blow, but she can't cut deep enough to wound you!", false);
				}
				//NOT BLOCKED!
				else {
					if (dodged > 0) outputText("Amily dashes at you and quickly slashes you twice; you manage to avoid the first blow, but the second one hits home, cutting you", false);
					else outputText("Amily dashes at you and slashes at you twice in the time it would take most to throw a single blow", false);
					outputText("! ", false);
					damage = player.takeDamage(damage, true);
				}
			}
			//Dodge all!
			else outputText("Amily dashes at you and quickly slashes you twice, but you quickly sidestep her first blow and jump back to avoid any follow-ups.", false);

			game.combat.combatRoundOver();
		}

		//-Poison Dart: Deals speed and str damage to the PC. (Not constant)
		private function amilyDartGo():void
		{
			var dodged:Number = 0;
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0 && rand(3) < 2) {
				outputText(capitalA + short + " completely misses you with a blind attack from her dartgun!\n", false);
				game.combat.combatRoundOver();
				return;
			}
			//Determine if dodged!
			if (player.spe - spe > 0 && int(Math.random() * (((player.spe - spe) / 4) + 80)) > 80) {
				dodged = 1;
			}
			//Determine if evaded
			if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				dodged = 2;
			}
			//("Misdirection"
			if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 15 && player.armorName == "red, high-society bodysuit") {
				dodged = 3;
			}
			//Determine if cat'ed
			if (player.findPerk(PerkLib.Flexibility) >= 0 && rand(100) < 15) {
				dodged = 4;
			}
			//Dodged
			if (dodged > 0) {
				outputText("Amily dashes at you and swipes her knife rather slowly. You easily dodge the attack; but it was all a feint, her other hands tries to strike at you with a poisoned dart. Luckily you manage to avoid it.", false);
				//Add tags for miss/evade/flexibility/etc.
				switch (dodged) {
					case 1:
						outputText(" [Dodge]", false);
						break;
					case 2:
						outputText(" [Evade]", false);
						break;
					case 3:
						outputText(" [Misdirect]", false);
						break;
					case 4:
						outputText(" [Flexibility]", false);
						break;
					default:
						CoC_Settings.error("");
						outputText(" [ERROR]", false);
						break;
				}
			}
			//Else hit!
			else {
				outputText("Amily dashes at you and swipes her knife at you, surprisingly slowly.  You easily dodge the attack; but it was a feint - her other hand tries to strike at you with a poisoned dart. However, she only manages to scratch you, only causing your muscles to grow slightly numb.", false);
				//Set status
				if (player.findStatusEffect(StatusEffects.AmilyVenom) < 0) player.createStatusEffect(StatusEffects.AmilyVenom, 0, 0, 0, 0);
				var poison:Number = 2 + rand(5);
				while (poison > 0) {
					poison--;
					if (player.str >= 2) {
						player.str--;
						showStatDown("str");
						// strDown.visible = true;
						// strUp.visible = false;
						player.addStatusValue(StatusEffects.AmilyVenom, 1, 1);
					}
					if (player.spe >= 2) {
						player.spe--;
						showStatDown("spe");
						// speDown.visible = true;
						// speUp.visible = false;
						player.addStatusValue(StatusEffects.AmilyVenom, 2, 1);
					}
				}
				//If PC is reduced to 0 Speed and Strength, normal defeat by HP plays.
				if (player.spe <= 2 && player.str <= 2) {
					outputText("  You've become so weakened that you can't even make an attempt to defend yourself, and Amily rains blow after blow down upon your helpless form.", false);
					player.takeDamage(8999);
				}
			}
			game.combat.combatRoundOver();
		}

		//Concentrate: always avoids the next attack. Can be disrupted by tease/seduce.
		private function amilyConcentration():void {
			outputText("Amily takes a deep breath and attempts to concentrate on your movements.", false);
			createStatusEffect(StatusEffects.Concentration,0,0,0,0);
			game.combat.combatRoundOver();
		}

		//(if PC uses tease/seduce after this)
		//Deals big lust increase, despite her resistance.
		override public function teased(lustDelta:Number):void
		{
			if (findStatusEffect(StatusEffects.Concentration) >= 0) {
				outputText("Amily flushes hotly; her concentration only makes her pay more attention to your parts!", false);
				lustDelta += 25+lustDelta;
				removeStatusEffect(StatusEffects.Concentration);
				applyTease(lustDelta);
			} else {
				super.teased(lustDelta);
			}
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.amilyScene.conquerThatMouseBitch();
		}

		public function Amily()
		{
			this.a = "";
			this.short = "Amily";
			this.imageName = "amily";
			this.long = "You are currently fighting Amily. The mouse-morph is dressed in rags and glares at you in rage, knife in hand. She keeps herself close to the ground, ensuring she can quickly close the distance between you two or run away.";
			// this.plural = false;
			this.createVagina(false, VAGINA_WETNESS_NORMAL, VAGINA_LOOSENESS_NORMAL);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 48, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("C"));
			this.ass.analLooseness = ANAL_LOOSENESS_VIRGIN;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.tallness = 4*12;
			this.hipRating = HIP_RATING_AMPLE;
			this.buttRating = BUTT_RATING_TIGHT;
			this.skinTone = "tawny";
			this.skinType = SKIN_TYPE_FUR;
			//this.skinDesc = Appearance.Appearance.DEFAULT_SKIN_DESCS[SKIN_TYPE_FUR];
			this.hairColor = "brown";
			this.hairLength = 5;
			initStrTouSpeInte(30, 30, 85, 60);
			initLibSensCor(45, 45, 10);
			this.weaponName = "knife";
			this.weaponVerb="slash";
			this.weaponAttack = 6;
			this.armorName = "rags";
			this.armorDef = 1;
			this.bonusHP = 20;
			this.lust = 20;
			this.lustVuln = .85;
			this.level = 4;
			this.gems = 2 + rand(5);
			this.drop = NO_DROP;
			checkMonster();
		}

	}

}


code:
package classes.Scenes.NPCs
{
	import classes.*;
	import classes.internals.WeightedDrop;

	public class Anemone extends Monster
	{

		override public function eAttack():void
		{
			outputText("Giggling playfully, the anemone launches several tentacles at you.  Most are aimed for your crotch, but a few attempt to caress your chest and face.\n", false);
			super.eAttack();
		}

		override public function eOneAttack():int
		{
			applyVenom(rand(4 + player.sens / 20) + 1);
			return 1;
		}

		//Apply the effects of AnemoneVenom()
		public function applyVenom(str:Number = 1):void
		{
			//First application
			if (player.findStatusEffect(StatusEffects.AnemoneVenom) < 0) player.createStatusEffect(StatusEffects.AnemoneVenom, 0, 0, 0, 0);
			//Gain some lust
			game.dynStats("lus", (2 * str));

			//Loop through applying 1 point of venom at a time.
			while (str > 0) {
				str--;
				//Str bottommed out, convert to lust
				if (player.str < 2) game.dynStats("lus", 2);
				//Lose a point of str.
				else {
					showStatDown("str");
					// strDown.visible = true;
					// strUp.visible = false;
					player.str--;
					player.addStatusValue(StatusEffects.AnemoneVenom, 1, 1);
				}
				//Spe bottomed out, convert to lust
				if (player.spe < 2) game.dynStats("lus", 2);
				//Lose a point of spe.
				else {
					showStatDown("spe");
					// speDown.visible = true;
					// speUp.visible = false;
					player.spe--;
					player.addStatusValue(StatusEffects.AnemoneVenom, 2, 1);
				}
			}
			game.statScreenRefresh();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.anemoneScene.defeatAnemone();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem to mind at all...");
				doNext(game.combat.endLustLoss);
			} else {
				game.anemoneScene.loseToAnemone();
			}
		}

		override public function outputAttack(damage:int):void
		{
			outputText("You jink and dodge valiantly but the tentacles are too numerous and coming from too many directions.  A few get past your guard and caress your skin, leaving a tingling, warm sensation that arouses you further.", false);
		}

		public function Anemone()
		{
			this.a = "the ";
			this.short = "anemone";
			this.imageName = "anemone";
			this.long = "The anemone is a blue androgyne humanoid of medium height and slender build, with colorful tentacles sprouting on her head where hair would otherwise be.  Her feminine face contains two eyes of solid color, lighter than her skin.  Two feathery gills sprout from the middle of her chest, along the line of her spine and below her collarbone, and drape over her pair of small B-cup breasts.  Though you wouldn't describe her curves as generous, she sways her girly hips back and forth in a way that contrasts them to her slim waist quite attractively.  Protruding from her groin is a blue shaft with its head flanged by diminutive tentacles, and below that is a dark-blue pussy ringed by small feelers.  Further down are a pair of legs ending in flat sticky feet; proof of her aquatic heritage.  She smiles broadly and innocently as she regards you from her deep eyes.";
			// this.plural = false;
			this.createCock(7,1,CockTypesEnum.ANEMONE);
			this.createVagina(false, VAGINA_WETNESS_SLICK, VAGINA_LOOSENESS_LOOSE);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 5, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("B"));
			this.ass.analLooseness = ANAL_LOOSENESS_NORMAL;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,10,0,0,0);
			this.tallness = 5*12+5;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_NOTICEABLE;
			this.skinTone = "purple";
			this.hairColor = "purplish-black";
			this.hairLength = 20;
			this.hairType = HAIR_ANEMONE;
			initStrTouSpeInte(40, 20, 40, 50);
			initLibSensCor(55, 35, 50);
			this.weaponName = "tendrils";
			this.weaponVerb="tentacle";
			this.weaponAttack = 5;
			this.armorName = "clammy skin";
			this.bonusHP = 120;
			this.lust = 30;
			this.lustVuln = .9;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 4;
			this.gems = rand(5) + 1;
			this.drop = new WeightedDrop(consumables.DRYTENT, 1);
			checkMonster();
		}

	}

}


code:
package classes.Scenes.NPCs
{
	import classes.*;
	import classes.GlobalFlags.kFLAGS;
	import classes.GlobalFlags.kGAMECLASS;
	import classes.internals.*;

	public class Ceraph extends Monster
	{

//[IN COMBAT SPECIALS]
//[SPECIAL 1] – Ubercharge!
		private function ceraphSpecial1():void
		{
			game.spriteSelect(7);
			if (findStatusEffect(StatusEffects.Uber) < 0) {
				if (rand(2) == 0) {
					outputText("Ceraph winks and says, \"Have you ever cum without being touched? You will.\"\n\n", false);
				}
				else {
					outputText("Ceraph titters, \"Let me show you the true power of an Omnibus.\"\n\n", false);
				}
				outputText("Despite her sultry tease, you can tell she's starting to build up to something big...", false);
				createStatusEffect(StatusEffects.Uber, 0, 0, 0, 0);
			}
			else {
				//(Next Round)
				if (statusEffectv1(StatusEffects.Uber) == 0) {
					addStatusValue(StatusEffects.Uber, 1, 1);
					if (rand(2) == 0) outputText("The demonic hermaphrodite begins forging demonic symbols in the air before her, each glowing brilliant pink before they blur away in a haze.", false);
					else outputText("The demonette makes obscene motions with her hands, as if masturbating an imaginary cock or vagina while her hands are wreathed in pink flames.", false);
					outputText("  She's about to unleash something huge!", false);
					if (player.inte > 50) outputText("  You should probably wait so you'll have a chance to avoid whatever's coming.", false);
				}
				//FIRE!
				else {
					removeStatusEffect(StatusEffects.Uber);
					//(Avoid!)
					if (flags[kFLAGS.IN_COMBAT_USE_PLAYER_WAITED_FLAG] == 1) {
						outputText("She throws her hands out, palms facing you, and a rush of pink flame washes towards you.  Thanks to your decision to wait, it's easy to avoid the onrushing flames and her attack.\n\n", false);
						outputText("Ceraph sighs and asks, \"Why would you move?  It would make you feel soooo good!\"", false);
					}
					//(AUTO-LOSE)
					else {
						outputText("She throws her hands out, palms facing you, and a rush of pink flame washes towards you.  Too busy with your own attack to effectively dodge, you're hit full on by the pink fire.  Incredibly, it doesn't burn.  The fire actually seems to flow inside you, disappearing into your skin.  You stumble, confused for a second, but then it hits you.  Every inch of your body is buzzing with pleasure, practically squirming and convulsing with sexual delight.  You collapse, twitching and heaving, feeling the constant sensation of sexual release running from your head to your " + player.feet() + ".  Too horny and pleasured to resist, you lie down and tremble, occasionally rubbing yourself to enhance the bliss.", false);
						game.dynStats("lus", 999);
					}
				}
			}
			combatRoundOver();
		}
//[SPECIAL] – Whip Binding
		private function ceraphSpecial2():void
		{
			if (player.findStatusEffect(StatusEffects.Bound) < 0) {
				outputText("Ceraph snaps her whip at you, lightning fast.  Unable to avoid the blinding speed of her attack, you find yourself wrapped from head to toe in the strong leather of her whip.  Remarkably, the fire dies out everywhere the whip touches you, leaving you bound but unharmed.", false);
				//If player has l2 piercing
				if (kGAMECLASS.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
					outputText("  Gods this turns you on!", false);
					game.dynStats("lus", 5);
				}
				player.createStatusEffect(StatusEffects.Bound, 2 + rand(5), 0, 0, 0);
			}
			//[SPECIAL WHILE PC RESTRAINED]
			else {
				if (rand(2) == 0) {
					outputText("Ceraph cuddles up against you, embracing you tenderly.  Her more-than-ample bosom crushes against your flank, and her demonic prick grinds and rubs against your " + player.skinDesc + ", smearing it with her juices.  Her hands slide over your bound form, sneaking underneath your " + player.armorName + " to caress you more intimately while you're at her mercy.", false);
					game.dynStats("lus", 9 + player.sens / 10);
				}
				//[SPECIAL 2 WHILE PC RESTRAINED]
				else {
					outputText("Ceraph blows hot kisses in your ear and slides and rubs against you as she slips over to embrace your front.  She holds up a finger, licks it, and wiggles it back and forth.  It begins to glow pink, dimly at first and then with increasing luminosity.  Once it's reached a brilliant intensity, the sparkling digit is roughly inserted into your mouth.  You can feel the dark magic soaking into your body just like water soaks into a sponge.  ", false);
					if (player.lust < 33) outputText("It makes you feel warm and flushed.", false);
					else if (player.lust < 60) outputText("It gets inside you and turns you on, stoking the flames of your desire.", false);
					else if (player.lust < 80) outputText("It makes you very horny, and you begin to wonder if it's worth resisting.", false);
					else outputText("It makes you ache and tremble with need, practically begging for another touch.", false);
					game.dynStats("lus", 5 + player.cor / 10 + player.lib / 20);
				}
			}
			combatRoundOver();
		}

		//(Struggle)
		public function ceraphBindingStruggle():void
		{
			clearOutput();
			outputText("You wriggle in the tight binding, trying your best to escape.  ", false);
			if (player.statusEffectv1(StatusEffects.Bound) - 1 <= 0) {
				outputText("With a mighty twist and stretch, the whip gives and uncurls from you all at once.  You've regained your freedom", false);
				if (kGAMECLASS.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
					outputText(", though you miss the tight leathery embrace", false);
				}
				outputText("!", false);
				player.removeStatusEffect(StatusEffects.Bound);
				combatRoundOver();
				return;
			}
			else {
				outputText("Despite your frantic struggling, all you manage to do is chafe against her impressively taut leather whip.", false);
				if (kGAMECLASS.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
					outputText("  You get nice and hot from being so effectively restrained, maybe you should just accept it?", false);
				}
				player.addStatusValue(StatusEffects.Bound, 1, -1);
				//Strong characters break free faster
				if (player.str > 65 && rand(player.str) > 45) {
					outputText("  Though you didn't break free, it seems like your mighty struggles loosened the whip slightly...", false);
					player.addStatusValue(StatusEffects.Bound, 1, -1);
				}
			}
			outputText("\n\n", false);
			doAI();
		}

//(Wait)
		public function ceraphBoundWait():void
		{
			clearOutput();
			outputText("Why bother resisting?  The feeling of the leather wrapped tightly around you, digging into your " + player.skinDesc + ", is intoxicating.", false);
			if (kGAMECLASS.fetishManager.compare(FetishManager.FETISH_BONDAGE)) {
				outputText("  You squirm inside the bindings as you get more and more turned on, hoping that Ceraph will strip away your armor and force you to parade around as her bound, naked pet.", false);
				game.dynStats("lus", 5);
			}
			game.dynStats("lus", player.lib / 20 + 5 + rand(5));
			outputText("\n\n", false);
			doAI();
		}

//[Double-Attack]
		private function ceraphSpecial3():void
		{
			//[Mini-cum] – takes place of double-attack if very horny
			if (lust >= 75) {
				outputText("Ceraph spreads her legs and buries three fingers in her sopping twat, her thumb vigorously rubbing against the base of her bumpy prick.  Her other hand wraps around the meaty pole and begins jerking it rapidly.  In one practiced movement she stops jerking long enough to wrap the whip around her nodule-studded demon-cock, using it like a cockring.  The organ swells thanks to the forced blood-flow, and after a few more seconds of intense masturbation, the demoness cums hard.  Her cunny squirts all over her hand, dripping clear feminine drool down her thighs.  Ceraph's masculine endowment pulses and twitches, blasting out two big squirts of jizm before it slows to a trickle.\n", false);
				outputText("Letting out a throaty sigh, the demon unties her self-induced binding and gives you a wink.  Did you really just stand there and watch the whole thing?  Amazingly Ceraph actually seems stronger after such a crude display...", false);
				//(+10 str/toughness, 1 level, and 10 xp reward.)
				XP += 10;
				level += 1;
				str += 10;
				tou += 10;
				HP += 20;
				lust = 33;
				game.dynStats("lus", 3);
				outputText("\n", false);
				combatRoundOver();
				return;
			}
			var damage:Number = 0;
			outputText("The demoness weaves her whip in the air until you can practically hear it slithering like a snake, cutting the air as it weaves back and forth, still magically alight with flames.  In a blink she lashes out twice in quick succession!\n", false);
			//First hit!
			doNext(game.playerMenu);
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0 && rand(10) != 9) {
				outputText(capitalA + short + " completely misses you with a blind attack!", false);
			}
			//Determine if dodged!
			else if (player.spe - spe > 0 && int(Math.random() * (((player.spe - spe) / 4) + 80)) > 80) {
				if (player.spe - spe < 8) outputText("You narrowly avoid " + a + short + "'s " + weaponVerb + "!", false);
				if (player.spe - spe >= 8 && player.spe - spe < 20) outputText("You dodge " + a + short + "'s " + weaponVerb + " with superior quickness!", false);
				if (player.spe - spe >= 20) outputText("You deftly avoid " + a + short + "'s slow " + weaponVerb + ".", false);
			}
			//Determine if evaded
			else if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				outputText("Using your skills at evading attacks, you anticipate and sidestep " + a + short + "'s attack.", false);
			}
			else if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 15 && player.armorName == "red, high-society bodysuit") {
				outputText("With Raphael's teachings and the easy movement afforded by your bodysuit, you easily anticipate and sidestep " + a + short + "'s attack.", false);
			}
			//Determine damage - str modified by enemy toughness!
			else {
				damage = int((str + weaponAttack) - Math.random() * (player.tou + player.armorDef));
				if (damage > 0) {
					damage = player.takeDamage(damage);
				}
				if (damage <= 0) {
					damage = 0;
					//Due to toughness or amor...
					if (rand(player.armorDef + player.tou) < player.armorDef) outputText("Your " + player.armorName + " absorb and deflect every " + weaponVerb + " from " + a + short + ".", false);
					else outputText("You deflect and block every " + weaponVerb + " " + a + short + " throws at you.", false);
				}
				if (damage > 0 && damage < 6) {
					outputText("You are struck a glancing blow by " + a + short + "! ", false);
				}
				if (damage > 5 && damage < 11) {
					outputText(capitalA + short + " wounds you! ", false);
				}
				if (damage > 10 && damage < 21) {
					outputText(capitalA + short + " staggers you with the force of " + pronoun3 + " " + weaponVerb + "! ", false);
				}
				if (damage > 20) {
					outputText(capitalA + short + " mutilates you with " + pronoun3 + " powerful " + weaponVerb + "! ", false);
				}
				if (damage > 0) outputText("(" + damage + ")", false)
				else outputText("(" + damage + ")", false)
			}
			game.statScreenRefresh();
			outputText("\n", false);
			//SECOND ATTACK HERE------
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0 && rand(10) != 9) {
				outputText(capitalA + short + " completely misses you with a blind attack!", false);
			}
			//Determine if dodged!
			else if (player.spe - spe > 0 && int(Math.random() * (((player.spe - spe) / 4) + 80)) > 80) {
				if (player.spe - spe < 8) outputText("You narrowly avoid " + a + short + "'s " + weaponVerb + "!", false);
				if (player.spe - spe >= 8 && player.spe - spe < 20) outputText("You dodge " + a + short + "'s " + weaponVerb + " with superior quickness!", false);
				if (player.spe - spe >= 20) outputText("You deftly avoid " + a + short + "'s slow " + weaponVerb + ".", false);
			}
			//Determine if evaded
			else if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				outputText("Using your skills at evading attacks, you anticipate and sidestep " + a + short + "'s attack.", false);
			}
			else if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 15 && player.armorName == "red, high-society bodysuit") {
				outputText("With Raphael's teachings and the easy movement afforded by your bodysuit, you easily anticipate and sidestep " + a + short + "'s attack.", false);
			}
			else {
				//Determine damage - str modified by enemy toughness!
				damage = int((str + weaponAttack) - Math.random() * (player.tou + player.armorDef));
				if (damage > 0) {
					damage = player.takeDamage(damage);
				}
				if (damage <= 0) {
					damage = 0;
					//Due to toughness or amor...
					if (rand(player.armorDef + player.tou) < player.armorDef) outputText("Your " + player.armorName + " absorb and deflect every " + weaponVerb + " from " + a + short + ".", false);
					else outputText("You deflect and block every " + weaponVerb + " " + a + short + " throws at you.", false);
				}
				if (damage > 0 && damage < 6) {
					outputText("You are struck a glancing blow by " + a + short + "! ", false);
				}
				if (damage > 5 && damage < 11) {
					outputText(capitalA + short + " wounds you! ", false);
				}
				if (damage > 10 && damage < 21) {
					outputText(capitalA + short + " staggers you with the force of " + pronoun3 + " " + weaponVerb + "! ", false);
				}
				if (damage > 20) {
					outputText(capitalA + short + " mutilates you with " + pronoun3 + " powerful " + weaponVerb + "! ", false);
				}
				if (damage > 0) outputText("(" + damage + ")", false)
				else outputText("(" + damage + ")", false)
			}
			game.statScreenRefresh();
			outputText("\n", false);
			combatRoundOver();
		}

		override protected function performCombatAction():void
		{
			var choice:Number = rand(4);
			if (player.findStatusEffect(StatusEffects.Bound) >= 0) {
				ceraphSpecial2();
				return;
			}
			if (findStatusEffect(StatusEffects.Uber) >= 0) {
				ceraphSpecial1();
				return;
			}
			switch (choice) {
				case 0:
					eAttack();
					break;
				case 1:
					ceraphSpecial1();
					break;
				case 2:
					ceraphSpecial2();
					break;
				case 3:
					ceraphSpecial3();
					break;
			}
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.ceraphScene.winRapeChoices();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (pcCameWorms){
				outputText("\n\nYour foe doesn't seem disgusted enough to leave...");
				doNext(game.combat.endLustLoss);
			} else {
				game.ceraphScene.loseFUCKME();
			}
		}

		public function Ceraph()
		{
			trace("Ceraph Constructor!");
			this.a = "";
			this.short = "Ceraph";
			this.imageName = "ceraph";
			this.long = "Ceraph the Omnibus is totally nude and reveling in it.  Her large yet perky breasts jiggle heavily against her chest as she moves.  The flawless purple skin of her twin mounds glistens with a thin sheen of sweat, inviting you to touch and rub your fingers along their slippery surface.  Her eyes are solid black, but convey a mix of amusement and desire, in spite of their alien appearance.  The demon's crotch is a combination of both genders – a drooling cunt topped with a thick demonic shaft, sprouting from where a clit should be.";
			// this.plural = false;
			this.createCock(10,2,CockTypesEnum.DEMON);
			this.createVagina(false, VAGINA_WETNESS_SLAVERING, VAGINA_LOOSENESS_GAPING);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 20, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("E"));
			this.ass.analLooseness = ANAL_LOOSENESS_STRETCHED;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,15,0,0,0);
			this.tallness = 5*12+6;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_NOTICEABLE;
			this.lowerBody = LOWER_BODY_TYPE_DEMONIC_HIGH_HEELS;
			this.skinTone = "purple";
			this.hairColor = "black";
			this.hairLength = 20;
			initStrTouSpeInte(65, 40, 80, 80);
			initLibSensCor(75, 15, 100);
			this.weaponName = "flaming whip";
			this.weaponVerb="flame-whip";
			this.weaponAttack = 15;
			this.armorName = "demon-skin";
			this.bonusHP = 200;
			this.lust = 30;
			this.lustVuln = 0.75;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 9;
			this.gems = rand(5) + 38;
			this.drop = NO_DROP;
			this.special1 = ceraphSpecial1;
			this.special2 = ceraphSpecial2;
			this.special3 = ceraphSpecial3;
			checkMonster();
		}

	}

}