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

	public class Kiha extends Monster
	{
		private function kihaTimeWaster():void {
			game.spriteSelect(72);
			outputText("She supports the axe on a shoulder, cracking her neck and arching her back to stretch herself, giving you an unintended show.  ", false);
			game.dynStats("lus", 5);
			combatRoundOver();
		}

		//This could be silly mode worthy! Should Expand? oh ok
		private function sillyModeKihaAttack():void {
			game.spriteSelect(72);
			outputText("Before you can stop to think, the dragon-woman steps back - throwing her axe into the air before she starts sprinting towards you. In seconds she's reached a hair's distance between her lithe form and your own, her fist recoiling and time seemingly stopping to allow you to note the powerful energy seeping from her arms.  ", false);
			//Miss:
			if (player.spe - spe > 0 && int(Math.random()*(((player.spe-spe)/4) +80)) > 80) {
				outputText("You take the opportunity to walk away, watching the slow-motion attack unravel before you; the fire bursts from her knuckle in the shape of a bird in flight, wings unfurled.  ", false);
				if (rand(2) == 0) outputText("You only owned an XJasun back home, so you don't really understand the reference.", false);
				else outputText("You stifle a laugh as your memories turn to many an evening spent with your friends in front of your SharkCube console, contesting each other in games of ridiculous, stylized combat.", false);
			}
			else {
				//Determine damage - str modified by enemy toughness!
				var damage:int = int((str + weaponAttack) - rand(player.tou) - player.armorDef);
				damage += 5;

				outputText("A torrent of heat bursts from between her fingertips as she thrusts her clenched fist forward, the ball of intense flame writhing and burning with a fury unknown to mankind. With one fell swoop, the combined power of her love, anger, and sorrow pushes you backward, launching you out of the swamp and into Marble's pillowy chest. \"Ara ara,\" she begins, but you've already pushed yourself away from the milky hell-prison as you run back towards ");
				if (!game.kihaFollower.followerKiha()) outputText("the swamp");
				else outputText("the fight");
				outputText(". ", false);
				damage = player.takeDamage(damage, true);
				outputText("\n");
				if (player.HP >= 1) outputText("You follow the shrill cry of \"B-BAKA!\" in the distance until you reach the exact location you were in a few seconds earlier, prepared to fight again.", false);
			}
			combatRoundOver();
		}

		private function kihaFirePunch():void {
			game.spriteSelect(72);
			outputText("The draconic girl throws her trusty weapon into the sodden ground, using the distraction to build up balls of flame around her fists.  She runs towards you, launching herself in your direction with a flurry of punches.\n", false);

			//Dodged
			if (player.spe - spe > 0 && int(Math.random()*(((player.spe-spe)/4) +80)) > 80) {
				outputText("You manage to jump to the side, intense heat rushing past you as you narrowly avoid her advance.  You twist around, finding that she's reunited with her axe and angrier than before.", false);
			}
			//Determine if evaded
			else if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				outputText("Using your skills at evasion, you manage to jump to the side, intense heat rushing past you as you narrowly avoid her advance.  You twist around, finding that she's reunited with her axe and angrier than before.", false);
			}
			//("Misdirection"
			else if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 10 && player.armorName == "red, high-society bodysuit") {
				outputText("Using your skills at misdirection, you manage to make Kiha think you're going to dodge one way before stepping in the other direction.  You turn back, finding she has her axe in hand and looks rather steamed.", false);
			}
			//Determine if cat'ed
			else if (player.findPerk(PerkLib.Flexibility) >= 0 && rand(100) < 6) {
				outputText("Using your cat-like reflexes, you manage to jump to the side, intense heat rushing past you as you narrowly avoid her advance.  You twist around, finding that she's reunited with her axe and angrier than before.", false);
			}
			//HIT!
			else {
				var damage:int = int((str) - (player.armorDef));
				outputText("Before you can react, you're struck by the power of her blows, feeling an intense pain in your chest as each fist makes contact.  With a final thrust, you're pushed backwards onto the ground; the dragoness smiles as she pulls her axe out of the ground, her hands still steaming from the fingertips. ", false);
				damage = player.takeDamage(damage, true);
				outputText("\n");
			}
			combatRoundOver();
		}

		//Fire breath
		private function kihaFireBreath():void {
			game.spriteSelect(72);
			outputText("Kiha throws her arms back and roars, exhaling a swirling tornado of fire directly at you!\n", false);
			//Miss:
			//Determine if evaded
			if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				outputText("Using your talent for evasion, you manage to sidestep the flames in the nick of time; much to the dragoness' displeasure.", false);
			}
			//("Misdirection"
			else if (player.findPerk(PerkLib.Misdirection) >= 0 && rand(100) < 10 && player.armorName == "red, high-society bodysuit") {
				outputText("Using your talent for misdirection, you manage to sidestep the flames in the nick of time; much to the dragoness' displeasure.", false);
			}
			//Determine if cat'ed
			else if (player.findPerk(PerkLib.Flexibility) >= 0 && rand(100) < 6) {
				outputText("Using your cat-like flexibility, you manage to sidestep the flames in the nick of time; much to the dragoness' displeasure.", false);
			}
			else {
				var damage:Number = Math.round(90 + rand(10) + (player.newGamePlusMod() * 30));
				outputText("You try to avoid the flames, but you're too slow!  The inferno slams into you, setting you alight!  You drop and roll on the ground, putting out the fires as fast as you can.  As soon as the flames are out, you climb back up, smelling of smoke and soot. ", false);
				damage = player.takeDamage(damage, true);
				outputText("\n");
			}
			combatRoundOver();
		}
		/*
		Special 2: Kiha lifts her axe overhead and then hurls it at you in a surprising feat of speed and strength. Not keen on getting cleaved in two, you sidestep the jagged metal.
		Hit: But when your attention refocuses on the dragoness, you realize she's right in front of you! She hits you in the face with a vicious straight punch, knocking you on your back.
		Miss: When your gaze returns to the dragoness, you realize she's right in front of you! Luckily your reflexes are good enough that you manage to duck under the incoming punch. By the time you've recovered, Kiha is already standing, battle-ready and axe in hand. (uh, no? in the time it takes the PC to unbend from a simple duck, she's already disentangled herself from close quarters, run over to where the axe landed on the opposite side of him, extracted it from whatever it may be stuck in, and toted it back to the player? do it again with sense; she should be stunned or disarmed for at least a turn if she misses -Z)

		Special 3: Kiha suddenly lets out a roar, swings her axe down and then charges headlong at you!
		Hit: Like a runaway boulder, the dragoness slams into you, brutally propelling you to the ground, jarring bone and leaving you dazed. //Stun effect applies for 2 rounds//
		Miss: You nimbly turn aside and roll her off your shoulder at the last moment, leaving her ploughing on uncontrollably until she (catches her foot in a sinkhole and twists her ankle painfully, faceplanting in the bog)/(slams headfirst into a half-rotten tree with a shower of mouldering splinters). She quickly rights herself and turns to face you, but it clearly took its toll on her. //Kiha takes damage//
		*/
		override protected function handleFear():Boolean
		{
			removeStatusEffect(StatusEffects.Fear);
			outputText("Kiha shudders for a moment, then looks your way with a clear head.  \"Fear was the first thing the demons taught us to overcome.  Do you think it would stay my blade?\"\n", false);
			return true;
		}

		override protected function handleBlind():Boolean
		{
			return true;
		}

		override protected function postAttack(damage:int):void
		{
			super.postAttack(damage);
			var flame:int = level + rand(6);
			outputText("\nAn afterwash of flames trails behind her blow, immolating you! ", false);
			flame = player.takeDamage(flame, true);
		}

		override protected function performCombatAction():void
		{
			var select:Number = rand(5);
			if (select <= 1) eAttack();
			else if (select == 2) {
				if (game.silly()) sillyModeKihaAttack();
				else kihaFirePunch();
			}
			else if (select == 3) kihaFireBreath();
			else kihaTimeWaster();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			if (findStatusEffect(StatusEffects.spiderfight) >= 0)
				game.kihaFollower.playerBeatsUpKihaPreSpiderFight();
			else if (findStatusEffect(StatusEffects.DomFight) >= 0)
				game.kihaFollower.pcWinsDomFight();
			else if (findStatusEffect(StatusEffects.Spar) >= 0)
				game.kihaFollower.winSparWithKiha();
			else game.kihaScene.kihaVictoryIntroduction();
		}

		override public function won(hpVictory:Boolean, pcCameWorms:Boolean):void
		{
			if (findStatusEffect(StatusEffects.spiderfight) >= 0)
				game.kihaFollower.loseKihaPreSpiderFight();
			else if (findStatusEffect(StatusEffects.DomFight) >= 0)
				game.kihaFollower.pcLosesDomFight();
			else if (findStatusEffect(StatusEffects.Spar) >= 0)
				game.kihaFollower.sparWithFriendlyKihaLose();
			else if (pcCameWorms){
				outputText("\n\nKiha seems visibly disturbed by your infection, enough that she turns to leave.");
				doNext(game.combat.endLustLoss);
			} else {
				game.kihaScene.kihaLossIntro();
			}
		}

		public function Kiha()
		{
			this.a = "";
			this.short = "Kiha";
			this.imageName = "kiha";
			this.long = "Kiha is standing across from you, holding a double-bladed axe that's nearly as big as she is.  She's six feet tall, and her leathery wings span nearly twelve feet extended.  Her eyes are pure crimson, save for a black slit in the center, and a pair of thick draconic horns sprout from her forehead, arcing over her ruby-colored hair to point behind her.  Dim red scales cover her arms, legs, back, and strong-looking tail, providing what protection they might to large areas of her body.  The few glimpses of exposed skin are dark, almost chocolate in color, broken only by a few stray scales on the underside of her bosom and on her cheekbones.  ";
			if (game.flags[kFLAGS.KIHA_UNDERGARMENTS] > 0)
				this.long += "Damp patch forms in her silk " + (game.flags[kFLAGS.KIHA_UNDERGARMENTS] == 1 ? "panties" : "loincloth") + ", regardless of her state of arousal.  Despite her near nudity, Kiha stands with the confidence and poise of a trained fighter.";
			else
				this.long += "Her vagina constantly glistens with moisture, regardless of her state of arousal.  Despite her nudity, Kiha stands with the confidence and poise of a trained fighter.";
			// this.plural = false;
			this.createVagina(false, VAGINA_WETNESS_DROOLING, VAGINA_LOOSENESS_NORMAL);
			this.createStatusEffect(StatusEffects.BonusVCapacity, 40, 0, 0, 0);
			createBreastRow(Appearance.breastCupInverse("D"));
			this.ass.analLooseness = ANAL_LOOSENESS_LOOSE;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.createStatusEffect(StatusEffects.BonusACapacity,40,0,0,0);
			this.tallness = 6*12+1;
			this.hipRating = HIP_RATING_AMPLE;
			this.buttRating = BUTT_RATING_AVERAGE+1;
			this.lowerBody = LOWER_BODY_TYPE_HOOFED;
			this.skinTone = "dark";
			this.skinType = SKIN_TYPE_DRACONIC;
			this.skinDesc = "skin and scales";
			this.hairColor = "red";
			this.hairLength = 3;
			initStrTouSpeInte(65, 60, 85, 60);
			initLibSensCor(50, 45, 66);
			this.weaponName = "double-bladed axe";
			this.weaponVerb="fiery cleave";
			this.weaponAttack = 25;
			this.armorName = "thick scales";
			this.armorDef = 30;
			if (game.flags[kFLAGS.KIHA_UNDERGARMENTS] > 0)
				this.armorDef += 2;
			this.bonusHP = 430;
			this.lust = 10;
			this.lustVuln = 0.4;
			this.temperment = TEMPERMENT_LUSTY_GRAPPLES;
			this.level = 16;
			this.gems = rand(15) + 95;
			this.drop = new ChainedDrop().add(useables.D_SCALE, 0.2);
			this.wingType = WING_TYPE_IMP;
			this.wingDesc = "huge";
			this.tailType = TAIL_TYPE_LIZARD;
			checkMonster();
		}

	}

}

license: unknown


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

	public class Marble extends Monster
	{
		private function marbleSpecialAttackOne():void {
			//Special1: Heavy overhead swing, high chance of being avoided with evasion, does heavy damage if it hits.
			var damage:Number = 0;
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0) {
				outputText("Marble unwisely tries to make a massive swing while blinded, which you are easily able to avoid.", false);
				combatRoundOver();
				return;
			}
			//Determine if dodged!
			if (player.spe - spe > 0 && int(Math.random()*(((player.spe-spe)/4) +80)) > 60) {
				outputText("You manage to roll out of the way of a massive overhand swing.", false);
				combatRoundOver();
				return;
			}
			//Determine if evaded
			if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 60) {
				outputText("You easily sidestep as Marble tries to deliver a huge overhand blow.", false);
				combatRoundOver();
				return;
			}
			//Determine damage - str modified by enemy toughness!
			damage = int((str + 20 + weaponAttack) - Math.random()*(player.tou) - player.armorDef);
			if (damage <= 0) {
				damage = 0;
				//Due to toughness or amor...
				outputText("You somehow manage to deflect and block Marble's massive overhead swing.", false);
			}
			if (damage > 0) {
				outputText("You are struck by a two-handed overhead swing from the enraged cow-girl.  ", false);
				damage = player.takeDamage(damage, true);
			}
			statScreenRefresh();
			combatRoundOver();
		}
		private function marbleSpecialAttackTwo():void {
			//Special2: Wide sweep; very high hit chance, does low damage.
			var damage:Number = 0;
			//Blind dodge change
			if (findStatusEffect(StatusEffects.Blind) >= 0) {
				outputText("Marble makes a wide sweeping attack with her hammer, which is difficult to avoid even from a blinded opponent.\n", false);
			}
			//Determine if evaded
			if (player.findPerk(PerkLib.Evade) >= 0 && rand(100) < 10) {
				outputText("You barely manage to avoid a wide sweeping attack from marble by rolling under it.", false);
				combatRoundOver();
				return;
			}
			//Determine damage - str modified by enemy toughness!
			damage = int((str + 40 + weaponAttack) - Math.random()*(player.tou) - player.armorDef);
			damage /= 2;
			if (damage <= 0) {
				damage = 0;
				//Due to toughness or amor...
				outputText("You easily deflect and block the damage from Marble's wide swing.", false);
			}
			outputText("Marble easily hits you with a wide, difficult to avoid swing.  ", false);
			if (damage > 0) player.takeDamage(damage, true);
			statScreenRefresh();
			combatRoundOver();
		}

		override public function defeated(hpVictory:Boolean):void
		{
			game.marbleScene.marbleFightWin();
		}

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

		public function Marble()
		{
			trace("Marble Constructor!");
			this.a = "";
			this.short = "Marble";
			this.imageName = "marble";
			this.long = "Before you stands a female humanoid with numerous cow features, such as medium-sized cow horns, cow ears, and a cow tail.  She is very well endowed, with wide hips and a wide ass.  She stands over 6 feet tall.  She is using a large two handed hammer with practiced ease, making it clear she is much stronger than she may appear to be.";
			// this.plural = false;
			this.createVagina(false, VAGINA_WETNESS_NORMAL, VAGINA_LOOSENESS_NORMAL);
			createBreastRow(Appearance.breastCupInverse("F"));
			this.ass.analLooseness = ANAL_LOOSENESS_VIRGIN;
			this.ass.analWetness = ANAL_WETNESS_DRY;
			this.tallness = 6*12+4;
			this.hipRating = HIP_RATING_CURVY;
			this.buttRating = BUTT_RATING_LARGE;
			this.lowerBody = LOWER_BODY_TYPE_HOOFED;
			this.skinTone = "pale";
			this.hairColor = "brown";
			this.hairLength = 13;
			initStrTouSpeInte(75, 70, 35, 40);
			initLibSensCor(25, 45, 40);
			this.weaponName = "large hammer";
			this.weaponVerb="hammer-blow";
			this.weaponAttack = 10;
			this.armorName = "tough hide";
			this.armorDef = 5;
			this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
			this.level = 7;
			this.gems = rand(5) + 25;
			this.drop = new WeightedDrop(weapons.L_HAMMR, 1);
			this.tailType = TAIL_TYPE_COW;
			this.special1 = marbleSpecialAttackOne;
			this.special2 = marbleSpecialAttackTwo;
			checkMonster();
		}

	}

}