Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.53 KB | None | 0 0
  1. if (player.wings.type == Wings.FEATHERED_LARGE) outputTepackage classes.Scenes.NPCs {
  2. import classes.*;
  3. import classes.BodyParts.*;
  4. import classes.Scenes.Areas.HighMountains.Harpy;
  5. import classes.internals.*;
  6.  
  7. /**
  8. * ...
  9. * @author Fake-Name
  10. */
  11.  
  12. public class Sophie extends Harpy {
  13. //Combat Attacks
  14. //ON DICK'ED PCz
  15. //Kiss (Only used on males) - +10 lust on kiss. 25% chance
  16. //per round of increasing lust by 20. Repeat kisses add
  17. //+20 lust. Each kiss adds 2 hours to length of status
  18. //affect.
  19. private function sophieKissAttack():void {
  20. game.sophieBimbo.sophieSprite();
  21. outputText("Sophie bobs and weaves as she closes the distance between you in an instant. ");
  22. var customOutput:Array = ["[BLIND]" + capitalA + short + " looks like she's trying to kiss you, but it's easy to avoid the blind harpy!\n", "[SPEED]Using your skills at evading attacks, you anticipate and sidestep " + a + short + "'s attack.\n"];
  23. var container:Object = {doDodge: true, doParry: false, doBlock: false, doFatigue: false};
  24. if (!playerAvoidDamage(container, customOutput)) {
  25. //YOU GOT HIT SON
  26. outputText("Before you can react, she gives you a chaste peck on the lips. The harpy pulls back with a sultry smile, watching you expectantly.");
  27.  
  28. //Already affected by it
  29. if (player.hasStatusEffect(StatusEffects.Luststick)) {
  30. outputText(" Blood rushes to [eachcock] as you grow so hard so fast that it hurts. ");
  31. game.sophieScene.luststickApplication(2);
  32. player.takeLustDamage(12 + player.lib / 10, true);
  33. if (player.lust100 < 70) outputText("The drugged lip-gloss is starting to get to you!\n");
  34. else if (player.lust100 < 80) outputText("Her curvy thighs look so inviting. You barely stop yourself before you climb in between them!\n");
  35. else if (player.lust100 < 90) outputText("A trickle of pre-cum leaks from [eachcock]. Sophie coos, [say: Why don't you give in and let mommy Sophie drain out all that juicy cum?]\n");
  36. else if (player.lust100 < 100) outputText(player.SMultiCockDesc() + " twitches and bounces in time with your heartbeat, practically pulling you towards Sophie's gaping, pink-linked snatch.\n");
  37. else outputText("So horny. You need to copulate - no, fuck - right NOW. Your hand touches your [cock] and you swoon, pumping your hips lewdly as you submit.\n");
  38. }
  39. else {
  40. outputText(" Your whole body blushes as your lips tingle with some unnatural sensation. Her lips were drugged! Your whole body flushes as arousal begins to course through your veins. ");
  41. game.sophieScene.luststickApplication(2);
  42. player.takeLustDamage(8 + player.lib / 10, true);
  43. if (player.lust100 < 70) outputText("The drugged lip-gloss is starting to get to you!\n");
  44. else if (player.lust100 < 80) outputText("Her curvy thighs look so inviting. You barely stop yourself before you climb in between them!\n");
  45. else if (player.lust100 < 90) outputText("A trickle of pre-cum leaks from [eachcock]. Sophie coos, [say: Why don't you give in and let mommy Sophie drain out all that juicy cum?]\n");
  46. else if (player.lust100 < 100) outputText(player.SMultiCockDesc() + " twitches and bounces in time with your heartbeat, practically pulling you towards Sophie's gaping, pink-linked snatch.\n");
  47. else outputText("So horny. You need to copulate - no, fuck - right NOW. Your hand touches your [cock] and you swoon, pumping your hips lewdly as you submit.\n");
  48. }
  49. }
  50. }
  51.  
  52. //Harpy-Boating (Only used on males)
  53. //Takes off and flies directly at PC, locking her hips
  54. //around PC's torso and smothering the PC with breasts
  55. //for a few moments.
  56. //Easily dodged with evade or flexibility.
  57. private function sophieHarpyBoatsPC():void {
  58. var customOutput:Array = ["[BLIND]" + capitalA + short + "'s talons are easy to avoid thanks to her blindness!\n", "[SPEED]" + a + short + "'s movements are incredibly fast but you manage to sidestep them.\n", "[EVADE]Using your skills at evading attacks, you determine " + a + short + " is aiming for your upper body and slide under the attack.\n", "[MISDIRECTION]Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + a + short + "'s attack.\n"];
  59. game.sophieBimbo.sophieSprite();
  60. var container:Object = {doDodge: true, doParry: false, doBlock: false, doFatigue: false, toHitChance: player.standardDodgeFunc(this, -15)};
  61. outputText(capitalA + short + " flaps her wings and launches herself forwards with her talons up. ");
  62. if (!playerAvoidDamage(container, customOutput)) {
  63. //YOU GOT HIT SON
  64. outputText("She hits you hard, nearly bowling you over. Thankfully, her talons passed to either side of your torso. They lock together behind your back and your face is pulled tightly into Sophie's smotheringly large mounds!");
  65. if (rand(2) == 0) outputText(" She jiggles them around you pleasantly and coos, [say: Don't fight it baby. Just let your body do what comes naturally.]\n");
  66. else outputText(" She runs her long fingernails through your hair as she whispers, [say: Why fight it? I'll make you feel so good. Just relax and play with momma Sophie's tits.]\n");
  67. player.takeLustDamage(13 + player.sens / 10, true);
  68. }
  69. }
  70.  
  71. //Compulsion (Male Only)
  72. private function sophieCompulsionAttack():void {
  73. game.sophieBimbo.sophieSprite();
  74. outputText("Sophie spreads her thick thighs and slips four fingers into her slippery sex. She commands, [say: Touch yourself for me. Be a good pet and masturbate for me.] ");
  75. //Autosucceeds if player inte < 40
  76. //autofails if player inte > 80
  77. //Player fails:
  78. if (player.inte < 40 || (player.inte < 80 && rand(40) > (player.inte - 40))) {
  79. outputText("You moan out loud as your arms move of their own volition. They reach inside your [armor] and stroke [eachcock], caress the tip, and continue to fondle you a few moments.");
  80. outputText("Even after regaining control of your limbs, you're left far more turned on by the ordeal.");
  81. player.takeLustDamage(15 + player.cor / 20 + player.lib / 20, true);
  82. }
  83. //Player resists
  84. else {
  85. outputText("You can feel her words carrying the force of a magical compulsion behind them, but you focus your willpower and overcome it.");
  86. }
  87. }
  88.  
  89. //ON FEMALE PCz
  90. //Talons (Female Only)
  91. //High damage attack easily avoided by evade/flexibility.
  92. private function talonsSophie():void {
  93. var customOutput:Array = ["[BLIND]" + capitalA + short + "'s talons are easy to avoid thanks to her blindness!\n", "[SPEED]" + a + short + "'s tears through the air, but you manage to just barely dodge it.\n", "[EVADE]Using your skills at evading attacks, you watch " + a + short + " and deftly sidestep her brutal talons.\n", "[MISDIRECTION]Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + a + short + "'s attack.\n"];
  94. outputText("Sophie pulls her leg up, cocking her thigh dangerously. Look out! ");
  95. game.sophieBimbo.sophieSprite();
  96. var container:Object = {doDodge: true, doParry: false, doBlock: false, doFatigue: false, toHitChance: player.standardDodgeFunc(this, -15)};
  97. if (!playerAvoidDamage(container, customOutput)) {
  98. outputText("Her leg lashes forwards, lightning-quick, and tears bloody gashes into your [skindesc] with her razor-sharp talons! ");
  99. //Determine damage - str modified by enemy toughness!
  100. var damage:Number = int((str + weaponAttack) * player.damagePercent() * 0.01025);
  101. if (damage < 0) damage = 0;
  102. damage += 40;
  103. damage = player.takeDamage(damage);
  104. outputText("(" + damage + ")\n");
  105. }
  106. }
  107.  
  108. //Batter (Female Only)
  109. //Batters PC with wings — 4x attack impossible to dodge.*/
  110. private function batterAttackSophie():void {
  111. game.sophieBimbo.sophieSprite();
  112. var damage:Number = 0;
  113. outputText("Sophie comes at you in a flurry of beating wings! There's no way to dodge the flurry of strikes!\n");
  114.  
  115. //Determine damage - str modified by enemy toughness!
  116. damage = player.reduceDamage(str, this);
  117. if (damage < 0) damage = 0;
  118. damage = player.takeDamage(damage);
  119. outputText("Her left primary wing batters your head! (" + damage + ")\n");
  120. //Determine damage - str modified by enemy toughness!
  121. damage = player.reduceDamage(str, this);
  122. if (damage < 0) damage = 0;
  123. damage = player.takeDamage(damage);
  124. outputText("Her right, wing-like arm slaps at your torso! (" + damage + ")\n");
  125. //Determine damage - str modified by enemy toughness!
  126. damage = player.reduceDamage(str, this);
  127. if (damage < 0) damage = 0;
  128. damage = player.takeDamage(damage);
  129. outputText("Her other feathery arm punches at your shoulder! (" + damage + ")\n");
  130. //Determine damage - str modified by enemy toughness!
  131. damage = player.reduceDamage(str, this);
  132. if (damage < 0) damage = 0;
  133. damage = player.takeDamage(damage);
  134. outputText("Her right wing slams into the other side of your head! (" + damage + ")\n");
  135. }
  136.  
  137. override protected function performCombatAction():void {
  138. var actionChoices:MonsterAI = new MonsterAI();
  139. //Sophie has special AI in harpySophie.as
  140. game.sophieBimbo.sophieSprite();
  141. //Update attacks for girls/neuters
  142. actionChoices.add(talonsSophie, 1, !player.hasCock() || hasStatusEffect(StatusEffects.BimboBrawl), 0, FATIGUE_NONE, RANGE_MELEE_FLYING);
  143. actionChoices.add(batterAttackSophie, 1, !player.hasCock() || hasStatusEffect(StatusEffects.BimboBrawl), 10, FATIGUE_PHYSICAL, RANGE_MELEE_FLYING);
  144. actionChoices.add(sophieKissAttack, 1, !player.hasCock() || hasStatusEffect(StatusEffects.BimboBrawl), 5, FATIGUE_NONE, RANGE_MELEE_FLYING);
  145. actionChoices.add(sophieHarpyBoatsPC, 1, player.hasCock() && !hasStatusEffect(StatusEffects.BimboBrawl), 0, FATIGUE_NONE, RANGE_MELEE_FLYING);
  146. actionChoices.add(sophieCompulsionAttack, 1, player.hasCock() && !hasStatusEffect(StatusEffects.BimboBrawl), 10, FATIGUE_MAGICAL, RANGE_TEASE);
  147. actionChoices.add(eAttack, 1, true, 0, FATIGUE_NONE, RANGE_MELEE_FLYING);
  148. actionChoices.exec();
  149. }
  150.  
  151. override public function defeated(hpVictory:Boolean):void {
  152. if (hasStatusEffect(StatusEffects.BimboBrawl)) game.sophieFollowerScene.beatUpDebimboSophie();
  153. else game.sophieScene.sophieLostCombat();
  154. }
  155.  
  156. override public function won(hpVictory:Boolean, pcCameWorms:Boolean = false):void {
  157. if (hasStatusEffect(StatusEffects.BimboBrawl)) game.sophieFollowerScene.debimboSophieBeatsYouUp();
  158. else if (pcCameWorms) {
  159. outputText("[pg]Your foe seems disgusted by the display and leaves you to recover alone...");
  160. game.combat.cleanupAfterCombat();
  161. }
  162. else {
  163. game.sophieScene.sophieWonCombat();
  164. }
  165. }
  166.  
  167. public function Sophie() {
  168. super(true);
  169. //trace("Sophie Constructor!");
  170.  
  171. this.a = "";
  172. this.short = "Sophie";
  173. this.imageName = "sophie";
  174. this.long = "Sophie is approximately the size of a normal human woman, not counting the large feathery wings that sprout from her arms. Her face is gorgeous, with large rounded eyes and glimmering amber lip-gloss painted on her lush, kissable lips. In spite of her beauty, it's clear from the barely discernible laugh lines around her mouth that she's been around long to enough to have quite a few children. Her feathers are light pink, though the downy plumage that comprises her 'hair' is brighter than the rest. She moves with practiced grace despite the large, jiggling breasts that hang from her chest. Judging from her confident movements, she's an experienced fighter.";
  175. this.race = "Harpy";
  176. // this.plural = false;
  177. this.createVagina(false, Vagina.WETNESS_DROOLING, Vagina.LOOSENESS_GAPING_WIDE);
  178. this.createStatusEffect(StatusEffects.BonusVCapacity, 40, 0, 0, 0);
  179. createBreastRow(Appearance.breastCupInverse("DD"));
  180. this.ass.analLooseness = Ass.LOOSENESS_TIGHT;
  181. this.ass.analWetness = Ass.WETNESS_DRY;
  182. this.createStatusEffect(StatusEffects.BonusACapacity, 10, 0, 0, 0);
  183. this.tallness = 5 * 12 + 5;
  184. this.hips.rating = Hips.RATING_INHUMANLY_WIDE;
  185. this.butt.rating = Butt.RATING_EXPANSIVE;
  186. this.skin.tone = "pink";
  187. this.skin.type = Skin.PLAIN;
  188. this.skin.desc = "feathers";
  189. this.hair.color = "pink";
  190. this.hair.length = 16;
  191. initStrTouSpeInte(55, 40, 110, 60);
  192. initLibSensCor(60, 50, 60);
  193. this.weaponName = "talons";
  194. this.weaponVerb = "slashing talons";
  195. this.weaponAttack = 20;
  196. this.armorName = "feathers";
  197. this.armorDef = 5;
  198. this.bonusHP = 250;
  199. this.lust = 10;
  200. this.lustVuln = .3;
  201. this.temperment = TEMPERMENT_RANDOM_GRAPPLES;
  202. this.level = 11;
  203. this.gems = 20 + rand(25);
  204. this.drop = new ChainedDrop().add(armors.W_ROBES, 1 / 10)
  205. .elseDrop(consumables.GLDSEED);
  206. this.wings.type = Wings.FEATHERED_LARGE;
  207. /*this.special1 = harpyUberCharge;
  208. this.special2 = harpyTease;*/
  209. checkMonster();
  210. }
  211. }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement