-
Notifications
You must be signed in to change notification settings - Fork 217
/
harpySophie.as
1281 lines (1154 loc) · 104 KB
/
harpySophie.as
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//Harpy MILF. Hellzyeah
//-More fertile than average harpy.
//-In 'Upper Mountain' area (High Mountain?)
//-Blurb about other harpies flying away as PC approaches.
//-Too lazy/encumbered by her unusual breasts to fly away?
//-Asks PC for honey, sometimes is pissy and attacks
/*
Sophie vars:
-Met Sophy?
-Had Sex With Sophie Counter
-Breastfeed Sophie Counter
-Sophie Pissed Off?
Sophie max size:
-232
Harpy Hard Status:
Min lust of 50 or adds 10 to min lust.
Lasts 4-8 hours.
*/
//'Luststick' status
//v1 - time remaining
//50% chance to boost lust by 20-21(not reduced) every hour
//Forces minimum lust to be at least 50.
//[Discovery]
function meetSophie():void {
sophieSprite();
//increment met tag
flags[90]++;
outputText("", true);
outputText("You make the grueling trek through mountain passes with slow, weary determination. As you get higher, you feel almost like you could reach out and touch the omnipresent clouds that surround the summit. The fluttering of dozens of harpy wings fills the air when you get close to their nesting area. They flutter off and circle in the distance, seemingly content to watch you for now. You glance around and discover numerous egg-filled nests before deciding it would be wise to stay away from those. The mothers haven't gone far. Climbing higher, you take special care not to disturb the nests, but the effort is wasted.\n\n", false);
outputText("While hauling yourself up onto a particularly narrow ledge, you come face to face with a harpy's alien visage. She must have heard you climbing and come to investigate. Now she's scant inches away from you, looking ", false);
if(player.tallness <= 48) outputText("down ", false);
else if(player.tallness >= 72) outputText("up ", false);
outputText("at you with her curious, amber eyes. A faint sweet scent wafts from her, and she licks her yellow-glossed lips with a long, pointed tongue. You step to the side in an attempt to get away from the sharp drop-off behind you, but the harpy grabs your shoulders with both her hands and with a remarkably reassuring tone, says, \"<i>Relax cutey, I won't drop you.</i>\"\n\n", false);
outputText("The harpy smiles ingratiatingly when she feels your muscles start to relax, and you're given a chance to get a good, close look at her. She has two pairs of wings: a large set that sprout from her back and a secondary set that appear to be a combination of arm and wing. The smaller pair thickens behind the wrists, displaying long, lustrous plumage. What you had assumed to be pink hair is actually a mass of long, downy feathers that hang to her shoulders. The last and hardest thing to ignore is her breasts. Compared to the tiny buds on the harpies you spooked earlier, this woman's tits are MASSIVE. They'd be at least DD on a human of similar size!\n\n", false);
outputText("\"<i>Awww, how nice of you to notice my breasts! The other harpies are so mean to me because of them... I think they're jealous,</i>\" suggests the harpy. She pulls a hand off your shoulder and begins to preen her 'hair' with it, arranging the feathers into a more pleasing configuration as she introduces herself, \"<i>I don't get to see many cute " + player.mf("boys","girls") + " like yourself up here, and it's hard to fly very far with such heavy breasts weighing you down. My name's Sophie! What brings a delicious morsel like yourself to my little nest?</i>\"\n\n", false);
if(player.cor < 33) outputText("In the interest of politeness, ", false);
else if(player.cor < 66) outputText("Barely remembering your manners, ", false);
else outputText("Desiring to spread your name throughout all of this land, ", false);
outputText("you wrench your gaze away from her breasts and introduce yourself. It's hard to stay focused on introduction while she's wrapping her wing-like arms around her tits and squeezing them together, amplifying her cleavage. The matronly harpy is looking at you expectantly, and it occurs to you that she's still waiting on an answer to her question. Why did you come here?\n\n", false);
//[Looking for Demons] [Sex] [Got Lost] [Foraging]
simpleChoices("Foraging",2527,"Got Lost",2526,"Look4Demons",2522,"Sex",2524,"",0);
}
//[Repeat Meeting]
function meetSophieRepeat():void {
sophieSprite();
outputText("", true);
//(Pissed)
if(flags[96] > 0) {
outputText("During your exploration of the mountains you wind up passing close to the harpy nests again. Uh oh. There's a constant, irritating buzz in the background that makes it hard to focus on what you're doing. You crest a ledge and find yourself back on the edge of Sophie's nest. Shit. She glowers at you and raises one of her talons. It's a fight!\n\n", false);
doNext(1);
startCombat(26);
return;
}
//(Has dick)
if(player.totalCocks() > 0) {
//(Random Rape)
if(rand(2) == 0 && flags[93] <= 0) {
outputText("During your exploration of the mountains you wind up passing close to the harpy nests again, and Sophie flaps her way over to you. Her breasts jiggle pleasantly and she hooks her talons through the belt you use to hold your pouches before you can stop her. The force of her flapping wings pulls you off the mountain, suspending you hundreds of feet above the ground as she flies you back towards her nest. ", false);
if(player.tallness > 72) outputText("The harpy struggles with your weight and is clearly out of breath by the time she gets you up to her nest.", false);
else outputText("The flight is thankfully brief, and she actually gives you a good view of the mountain-side as she brings you up to her nest.", false);
outputText(" Sophie releases and you drops smartly onto the far side. She pants, \"<i>It's breeding time. " + player.mf("Boy","Girl") + ", fertilize me; NOW.</i>\"\n\n", false);
//(low lust?)
if(player.lust < 60 || rand(3) <= 1) {
outputText("Her need amplifies the compulsion, making it difficult to resist. It looks like if you turned her down now she'd probably try to force herself on you anyway. Do you give in to her demand?", false);
//[Yes-Consentual sex] [No - fight]
simpleChoices("Yes",2529,"No",2519,"",0,"",0,"",0);
}
//(high lust?)
else {
outputText("Her need amplifies the compulsion, and as turned on as you already are, there's no way you could resist.", false);
//To sex
doNext(2529);
}
return;
}
//(Have sexed)
if(flags[91] > 0) {
outputText("During your exploration of the mountains you wind up passing close to the harpy nests again, and Sophie flaps her way over to you. Her breasts jiggle pleasantly and she hooks her talons through through the belt you use to hold your pouches before you can stop her. The force of her flapping wings pulls you off the mountain, suspending you hundreds of feet above the ground as she flies you back towards her nest. ", false);
if(player.tallness > 72) outputText("The harpy struggles with your weight and is clearly out of breath by the time she gets you up to her nest.", false);
else outputText("The flight is thankfully brief, and she actually gives you a good view of the mountain-side as she brings you up to her nest.", false);
outputText(" Sophie releases you and flops down across from you, clearly tired. She asks, \"<i>Did you climb all the way up here to see me? That's sooo sweet! ", false);
if(flags[93] > 0) outputText("I still haven't laid your egg, but if you want it might be fun to take care of your naughty little urges.", false);
else outputText("I already laid your last egg, so why don't you come over her and give momma some sugar?", false);
outputText("</i>\" Her thighs spread apart, inviting you back for more of her pleasure.\n\n", false);
}
//(Haven't sexed)
else {
outputText("During your exploration of the mountains you wind up passing close to the harpy nests again. You hear a faint buzzing on the breeze but ignore it, focusing instead on climbing the rocky mountain. Pulling yourself up a ledge, you find yourself face-to-face with Sophie the harpy once again. She's pinching one of her nipples and stroking around the entrance to her sodden twat. It's flushed bright pink with desire and Sophie explains in between pleasured gasps, \"<i>I've been thinking about you since the last time I saw you, cutey. I'm normally a horny bundle of fuck anyway, but I'd sure love for a virile " + player.mf("boy","breeder") + " like yourself to fertilize my eggs.</i>\" She spreads her legs wide and leans back, giving you an offer that's part suggestion, part command, \"<i>Come here and put it inside me. I promise I'll be tighter than a virgin and wetter than a succubus.</i>\"\n\n", false);
}
outputText("(Her words sink into you, and a desire to go with her threatens to overcome your self-control. You take a deep breath and clear your head. Do you go with her, turn her down, or try to take control and be the dominant one? You'll probably have to fight her in order to dominate her...)", false);
stats(0,0,0,0,0,0,20,0);
//[Yes – consentacle sex] [No – sad harpy]
simpleChoices("Yes",2529,"No",2523,"Dominate",2519,"",0,"",0);
return;
}
//(NO DICK)
else {
//(NO LACTATE)
if(player.biggestLactation() < 1) {
outputText("Your climb manages to take you back into the harpy nests again. Sophie flutters down next to you and warns, \"<i>Cutey, a " + player.mf("neuter","girl") + " like you doesn't belong up here. The younger harpies don't really get the idea of conversation and see you as competition.</i>\"\n\n", false);
outputText("Do you see the wisdom of her words and climb back down the mountain, fight Sophie, or keep climbing?", false);
simpleChoices("Fight Sophie",2525,"Keep Climbing",2521,"",0,"",0,"Leave",13);
return;
}
//(LACTATE)
else {
outputText("Your climb manages to take you back into the harpy nests again. Sophie flutters down next to you and licks her lips hungrily. She asks, \"<i>Would you mind coming up to my nest and sharing some of your milk? I've worked up quite a craving for cute girl-milk.</i>\"\n\n", false);
outputText("Do you agree to breastfeed the hungry harpy?", false);
simpleChoices("Yes",2528,"No",2523,"Fight Her",2525,"",0,"",0);
//No(2528,2523);
//[Yes][No]
return;
}
}
doNext(13);
outputText("SOMETHING SCREWY HAPPENED IN SOPHIE'S MEETING", true);
return;
}
function consensualSexSelector():void {
sophieSprite();
if(player.cockThatFits(232) < 0) consensualSophieSexNoFit();
else consensualHotSophieDickings();
}
function fightSophie():void {
sophieSprite();
startCombat(26);
flags[96] += rand(24);
eventParser(1);
}
//[Yes]
function repeatBreastFeeding():void {
sophieSprite();
outputText("", true);
outputText("You agree and climb the rest of the way up to her nest, finding Sophie waiting for you there.", false);
//– to consentual breastfeeding.
doNext(2528);
}
//Normal Harpy Fight
function PCIgnoresSophieAndHarpyIsFought():void {
outputText("A harpy wings out of the sky and attacks!", true);
startCombat(25);
spriteSelect(26);
doNext(1);
}
//[Looking for Demons]
function sophieLookingForDemons():void {
sophieSprite();
outputText("", true);
outputText("Sophie throws her head back and laughs. \"<i>Don't worry about any demons here. Any time a demon is dumb enough to wander too close to our nests, we give him a 'foot-job' he won't forget.</i>\" To illustrate, the busty harpy lifts her leg and proudly displays her razor-sharp talons.", false);
//Check her out if you're in the mood or dirty-minded
//Requires wang
if((player.cor > 60 || player.lust > 60 || player.lib > 70) && player.hasCock()) {
outputText(" In spite of the danger of the situation, your gaze drops between her legs to her completely exposed sex. You nod in agreement with her, buying a few extra seconds to inspect her vagina. Tinged pink, it's much larger than a human's; perhaps due to the size of the eggs she lays?\n\n", false);
}
//Otherwise leave.
else {
outputText(" You gulp and nod, understanding quite clearly that the harpies don't care for demons in their nesting grounds. Sophie smiles and turns about, fluffing purple-tinted tail-feathers at you in what is clearly a dismissal.", false);
doNext(13);
return;
}
outputText("\"<i>Mmmm, have you gotten bored of the talk, ", false);
if(player.tallness <= 48) outputText("little ", false);
else if(player.tallness >= 72) outputText("big ", false);
outputText(player.mf("boy","girl") + "? You seem to see something you want,</i>\" observes the curvaceous bird-woman. \"<i>Come into my nest, " + player.short + "; it's been sooo long since I've been properly... fertilized.</i>\" Sophie relaxes as she awaits your response.\n\n", false);
outputText("Her words sink into you, and a compulsion to go with her threatens to overcome your self-control. You take a deep breath and clear your head. Do you go with her?", false);
//[Yes – consentacle sex] [No – sad harpy]
doYesNo(2529,2523);
}
//[No]
function shootDownSophieSex():void {
sophieSprite();
outputText("", true);
outputText("Sophie pouts for a moment, leaning forward to better display her cleavage. \"<i>Really? Well if you change your mind, come back and visit me.</i>\" She turns around and fluffs her tail-feathers at you in what is clearly a dismissal. You climb down, careful to avoid any other nests as you head back to check on your camp and its portal.", false);
doNext(13);
if(player.lib > 25) stats(0,0,0,0,-1,0,0,0);
if(player.lust > 50) stats(0,0,0,0,0,0,-5,0);
}
//[Sex]
function sophieMeetingChoseSex():void {
sophieSprite();
outputText("", true);
//(FEMALE\Unsexed)(Genderless – forces Leave.)
if(player.totalCocks() == 0) {
outputText("Sophie looks you up and down", false);
if(player.hasVagina()) outputText(" and insists, \"<i>Well, keep looking; if I wanted a girl I'd be busy with one of my nieces right now.</i>\"", false);
outputText(". She turns around and fluffs her tail-feathers at you in what is clearly a dismissal.", false);
if(player.hasVagina()) {
outputText(" What do you do?", false);
//[Stay&Sex] [Leave]
simpleChoices("Force Sex",2525,"Leave",13,"",0,"",0,"",0);
return;
}
doNext(13);
return;
}
//(Haz dick (male futa))
else {
outputText("Sophie retreats to the far side of the nest and spreads her well-muscled thighs invitingly. The harpy demands, \"<i>Well come on then, it's been so long since I've had such a virile young specimen servicing me. Don't make me wait, cutey.</i>\"\n\n", false);
outputText("As if you could deny the curvy, sexy body of the motherly harpy...", false);
//[To consentual sex]
doNext(2529);
return;
}
}
// [Stay&Sex] – starts combat
function FirstTimeSophieForceSex():void {
sophieSprite();
outputText("", true);
outputText("You say, \"<i>I'm not going anywhere until I'm satisfied. Don't worry, I'll be sure to give you a few licks back.</i>\"\n\n", false);
outputText("Sophie's large eyes widen in surprise at your statement, and her wings unfold as she counters, \"<i>Then you'll have to hope you can handle me.</i>\" Her foot comes up warningly.\n\n", false);
outputText("It's going to be a fight!", false);
startCombat(26);
doNext(1);
}
//[Got Lost]
function sophieMeetingGotLost():void {
sophieSprite();
outputText("", true);
outputText("You explain that you were exploring the mountains and sheepishly admit that you got lost. Sophie giggles, \"<i>Well then, you're fortunate I was here. Some of the other girls, they might have taken advantage of you. The younger harpies are so busy getting fertilized and laying eggs that they don't have much appreciation for good company and pleasant conversation like I do.</i>\"\n\n", false);
//(Incongruity here: she disdains the young ones for wanting to fuck instead of talk and then jumps right to wanting to fuck. Not that cougars aren't dumb as hell. - Z)
outputText("The older harpy reclines in her nest and dips a hand between her muscled thighs while she talks, \"<i>", false);
if(player.totalCocks() > 0) {
outputText("Would you stay and help a lonely matron with her needs?</i>\"\n\n", false);
//[To consensual sex or sophie sadface.
doYesNo(2529,2523);
}
else if(player.biggestLactation() >= 1.5) {
outputText("My, you're quite the laden little cow aren't you? Would you mind sharing?</i>\"\n\n", false);
//to b. feeding or sophie sadface.
doYesNo(2528,2523);
}
else {
outputText("Mmm, it's a shame you don't have a penis, or you could show me what I was missing.</i>\" The sexually deprived bird-woman plies you with questions about the world for the better part of an hour, masturbating to several mid-conversation orgasms. Once she exhausts herself, she thanks you and leans down for her nap. Her tail-feathers fluff in what is clearly a dismissal.", false);
//(+10 + libmod lust, +1 int up to 50 int))
stats(0,0,0,0,0,0,(10+player.lib/4),0);
if(player.inte < 50) stats(0,0,0,1,0,0,0,0);
//[Go to camp if neither of the above]
doNext(13);
}
}
//[Foraging For Supplies]
function tellSophieYoureForagingForStuff():void {
sophieSprite();
outputText("", true);
outputText("You explain to her that you were merely searching for supplies that would aid you in your quest. Sophie's eyes narrow dangerously as she warns you, \"<i>Don't even think of our eggs as food! Of course, I'm sure a cute little morsel like you would never do that. What's this about a quest?</i>\"\n\n", false);
outputText("It takes a little while to make her understand the situation, but after a lengthy explanation the harpy finally gets it. She doesn't comprehend your reasons, but at least she knows how important your mission is to you. Sophie sighs, clearly bored with the discussion, and spreads her sizable thighs to begin circling a finger around the large, puffy entrance to her pussy. Your eyes widen a bit at her brazen masturbation while your body heats with arousal of its own. Though her posture is open, the shameless harpy doesn't seem to want a partner. You take the hint that she's through talking and climb back down.\n\n", false);
//(+10 + libmod lust, +1 int up to 50 int))
stats(0,0,0,0,0,0,(10+player.lib/4),0);
if(player.inte < 50) stats(0,0,0,1,0,0,0,0);
doNext(13);
}
//[Harpy Breastfeeding]
function cramANippleInIt():void {
sophieSprite();
player.boostLactation(.01);
outputText("", true);
//Not a combat win
if(gameState != 1 && gameState != 2) outputText("Sophie steps back and drops onto her knees, balancing herself with her wings. You pull your " + player.armorName + " open with deliberate slowness, exposing your " + allBreastsDescript() + " one at a time. Sophie licks her lips as she patiently awaits the sharing of your bounty.\n\n", false);
//COMBAT
else {
//(Lust Win)
if(monster.lust > 99) outputText("Sophie pants and pulls herself up to her knees. She barely keeps her balance as she rams four of her fingers deep into her dripping pussy, fiddling at her clit with her thumb. The harpy opens her mouth to beg for your milk with her glossy lips as you slowly undress.\n\n", false);
//(HP Win)
else outputText("You pull the dazed and defeated harpy up to her knees. She sways unsteadily as you undress and expose your " + allBreastsDescript() + " to the cool mountain air. Sophie's eyes open wider as she struggles back to consciousness, and the hungry harpy happily opens her mouth into a wide 'O', begging for your milk.\n\n", false);
}
outputText("You make yourself comfortable in the soft, padded nest and pull Sophie down on top of you. Her glossy amber lips pucker and probe at your chest as she tries to find a nipple. The harpy doesn't resist at all when you place a hand on the back of her head and guide her towards your ", false);
if(player.breastRows.length > 1) outputText("top-", false);
outputText("left-most " + nippleDescript(0) + ". Her mouth latches on and begins to suckle; her lips tickle your sensitive tit-flesh and leave a pleasant tingle. Sophie grunts and moans around the nipple as she masturbates.\n\n", false);
//(Low PG)
if(player.biggestLactation() < 2) {
outputText("She suckles harder and harder until your feel your milk let down. A pleasant trickle of your breast-milk leaks from your " + nippleDescript(0) + " into her mouth. Sophie's arms close around your back, allowing her to lock herself onto you as she giddily sucks down your liquid nutrients. The expression on her ", false);
if(monster.HP < 1) outputText("battered ", false);
else outputText("lusty ", false);
outputText("visage is one of pure satisfaction, and you wonder at her strange love of milk. The harpy empties the first nipple and moves on to the ", false);
if(player.totalNipples() > 2) outputText("next", false);
else outputText("other", false);
outputText(", closing her eyes and relaxing in your embrace.", false);
if(player.totalNipples() > 2) {
outputText(" This nipple doesn't last long either, and she's forced to move on to the next, ", false);
if(player.totalNipples() < 5) outputText("before finishing the last one.", false);
else outputText("and the next, continuing until you're quite empty.", false);
}
outputText("\n\n", false);
}
//(Medium PG)
else if(player.biggestLactation() < 3.5) {
outputText("She suckles hard, but it seems unnecessary given how quickly your milk lets down. Breast-milk gushes into her mouth and causes her eyes to widen at the speed of the flow. Her arms lock around your back in a firm embrace, as if she were worried you'd pull back and deny her. She struggles to swallow all the milk you're putting out, but the expression on her face is one of pure bliss. You have to wonder just what would make a bird love milk this much. Her eyes droop closed while she relaxes against your " + nippleDescript(0) + ". The milk eventually runs dry, and she has to move on to your ", false);
if(player.totalNipples() == 2) outputText("other ", false);
else outputText("next ", false);
outputText(nippleDescript(0) + ". The suckling goes on nearly as long as it did with the first, until she finishes.", false);
if(player.totalBreasts() > 2) {
if(player.totalNipples() > 2) outputText("She drinks from each of the nipples that adorn your " + allBreastsDescript() + " until her belly is full and gurgling.", false);
else outputText("She drinks from each breast in turn until her belly is full and gurgling.", false);
}
else if(player.totalNipples() > 2) outputText("She drinks from each nipple in turn until her belly is full and gurgling.", false);
outputText("\n\n", false);
}
//(High PG)
else {
outputText("She suckles hard for a moment, and winds up sputtering at the flood of milk that you produce. Breast-milk gushes over her face, and she can only look on with a ecstatic pleasure at what she's started. Sophie leans forward and latches back on, her throat swallowing visibly and often as she struggles to keep up with your milk-flow. Her arms close around your back and lock together in an effort to hold onto you, even as your milk squirts out from the corners of her mouth. Her blissful expression makes you wonder just what would make a harpy love milk so much. Her eyelids droop while she relaxes against the " + nippleDescript(0) + ". The suckling goes on and on, until your milk slows to a reasonable trickle. Content to have drained one milk-spout, Sophie moves on to the ", false);
if(player.totalNipples()) outputText("other ", false);
else outputText("next ", false);
outputText("one and begins the cycle anew.", false);
if(player.totalNipples() >= 4) outputText(" With all your nipples, this goes on for quite some time.", false);
outputText("\n\n", false);
}
outputText("Sophie pulls back with ", false);
if(player.biggestLactation() >= 3.5) outputText("an incredibly loud burp and blushes red.", false);
else if(player.biggestLactation() >= 2) outputText("a satisfied burp.", false);
else outputText("a satisfied 'ahhh'.", false);
outputText(" She wipes a bit of milk from her lips and says, \"<i>", false);
if(gameState == 1 || gameState == 2) {
//(Fought HP won:
if(monster.HP < 1) outputText("You know you don't have to beat me up to get me to drink your milk right? It's too delicious to turn down!</i>\"\n\n", false);
//(Fought Lust won:
else {
outputText("Mmmm, you sure know how to get a woman's blood pumping before you give her what she wants, don't you?", false);
//(Dick:
if(player.totalCocks() > 0) outputText(" Maybe you'll let me try your 'other' milk next time?", false);
outputText("</i>\"", false);
if(player.totalCocks() > 0) {
outputText(" The harpy laughs and caresses your backside tenderly as she whispers, \"<i>It's been a long time, you know...</i>\"\n\n", false);
stats(0,0,0,0,0,0,25,0);
}
else outputText("\n\n", false);
}
flags[SOPHIE_FOLLOWER_PROGRESS] = 0;
}
//(Volunteered:
else {
outputText("Delicious! It's been so long since I've had someone to bring me such fresh milk.", false);
if(player.totalCocks() > 0) {
outputText(" Maybe you'll let me try your 'other' milk next time?</i>\" The harpie laughs and caresses your backside tenderly as she whispers, \"<i>It's been a long time, you know...</i>\"\n\n", false);
//(+25 lust)
stats(0,0,0,0,0,0,25,0);
}
else outputText("</i>\"\n\n", false);
flags[SOPHIE_FOLLOWER_PROGRESS]++;
}
//prevent lactation reduction and slightly boost
player.boostLactation(.1);
outputText("The busty harpy rubs her full belly as she disentangles herself from you. She accidentally gives a cute little burp and colors crimson. To hide her embarrassment, she turns and dismisses you with a wave of her tail-feathers. It looks like Sophie was rather happy with how things turned out.", false);
if(player.cor > 60) outputText(" You give her wide ass a playful slap and start climbing down before she can retaliate.", false);
stats(0,0,0,0,0,0,-50,0);
//increment times bfed.
flags[92]++;
if(gameState == 1 || gameState == 2) eventParser(5007);
else doNext(13);
//You've now been milked, reset the timer for that
if(player.hasStatusAffect("Feeder") >= 0) {
player.addStatusValue("Feeder",1,1);
player.changeStatusValue("Feeder",2,0);
}
}
//[Consensual Secks – Requires Dick]
function consensualHotSophieDickings():void {
sophieSprite();
outputText("", true);
flags[SOPHIE_FOLLOWER_PROGRESS]++;
var x:Number = player.cockThatFits(232);
if(x < 0) {
outputText("ERROR: No cock found that fits, yet 'fits' scene was called.", true);
doNext(1);
gameState = 0;
return;
}
else if(x > player.cocks.length-1) {
outputText("ERROR: Cock above max cocks selected for Sophie sex. Please report bug on fen's bug report forum.", true);
doNext(1);
gameState = 0;
return;
}
outputText("With her spread thighs beckoning you so invitingly, there's no way you could resist. You tear off your " + player.armorName + " and jump into her nest with her, hardening delightfully from your close proximity to the well-endowed woman. Sophie places a hand ", false);
if(player.biggestTitSize() < 1) outputText("on your chest", false);
else outputText("between your " + allBreastsDescript(), false);
outputText(", tracing up and down your " + player.skinDesc + " with slow, measured strokes. She boasts, \"<i>The last time a willing mate found his way up to my nest, it only took a few moments for him to fertilize me. He just couldn't handle all this.</i>\" She pulls you into her breasts for emphasis and squeezes them around your head.\n\n", false);
outputText("Sophie releases you from her bountiful bosom, but you take your time coming back out; you even stop to lick one of her pert nipples. The harpy takes you by the hips and pulls you on top of her, squeezing your " + assDescript() + " for good measure. With ", false);
if(player.biggestTitSize() >= 1) outputText("her breasts rubbing against your own", false);
else {
if(player.tallness <= 48) outputText("her breasts pressed into your face", false);
else outputText("her breasts pressing against your stomach", false);
}
outputText(", ", false);
if(player.totalCocks() > 1) outputText("each of ", false);
outputText("your " + multiCockDescriptLight() + " begins to poke and prod against her crotch and slightly parted slit. ", false);
if(player.cockArea(x) <= 6) {
outputText("She frowns and asks, \"<i>Is that all there is? You're so small you may as well get rid of it and become a girl! You'd be a cute little girl, you know that?</i>\"", false);
}
else if(player.cockArea(x) < 150) {
outputText("She grins and teases, \"<i>What are you waiting for? You aren't intimidated by how big my pussy is, are you? Trust me, my muscles will make it plenty tight for you. What you should be concerned about is how you're taking advantage of a needy older woman, you pig.</i>\"", false);
}
else {
outputText("Her eyes widen in delight, but she teases you anyway, \"<i>Oh by Marae, you're quite the big boy aren't you? Are you sure I can take that? Forcing such a huge, delicious member on a poor old woman, you should be ashamed!</i>\"", false);
}
if(player.cockTotal() > 1 && player.biggestCockArea() > 232) {
outputText(" Her hands push away the bloated flesh of your " + cockDescript(player.biggestCockIndex()) + " in an effort to better get at your " + cockDescript(x) + ". She grunts, \"<i>Tempting, but too much of a good thing.</i>\"", false);
}
outputText("\n\n", false);
outputText("Her teases and taunts sting far more than they should, ", false);
if(player.cor < 75) outputText("making you feel terrible and shamed. Your entire body flushes with embarrassment", false);
else outputText("making you a bit irritated at the older harpy. Your entire body flushes with anger and arousal", false);
outputText(" until the soft skin of her hand presses against your cheek and her voice soothes, \"<i>Don't worry, sweetheart. It's what inside of you that made me want you. To be precise, it's what's inside your ", false);
if(player.balls > 0) outputText("balls", false);
else outputText("cock", false);
outputText(". I've been milking cute " + player.mf("studs","herms") + " like you since the demons took over, and you're my latest conquest. That's okay with you, right? You don't mind me relieving all your pressure for my needy eggs do you? Of course you don't.</i>\" Her words carry more weight than they ought to, chasing away any reluctance or worries from your mind and replacing them with acceptance. Sophie really knows what she's doing. She's seduced you to the point of penetration. Being a conquest isn't that bad; you'll get to fuck this confident older woman until you're squirting all over her eggs.\n\n", false);
outputText("Sophie coos, \"<i>Go on " + player.mf("boy","girl") + ", give your " + cockDescript(x) + " a taste.</i>\" You oblige her request by rocking your hips forward, ", false);
if(player.cockArea(x) <= 6) outputText("plunging your " + cockDescript(x) + " inside the oversized vagina.", false);
else if(player.cockArea(x) <= 150) outputText("burying your " + cockDescript(x) + " deep into her massive gash.", false);
else outputText("slowly working your " + cockDescript(x) + " into her massive gash, finding it barely big enough for you.", false);
outputText(" Her warm, feathery thighs close around behind you, locking their talons together to hold your " + cockDescript(x) + " in the squelching wet walls of her pussy. The act of her 'imprisoning' you causes the slippery walls to squeeze tightly about your girth, just as she promised. Your hips rock with an ingrown need that's thwarted by Sophie's muscular thighs. There is no thrusting, no repeated penetration. There is only the slow rhythm of her muscles as they squeeze and massage your " + cockDescript(x) + ".\n\n", false);
outputText("It feels good, but the inability to control the act in any way is driving you mad with desire. ", false);
if(player.tallness <= 48) outputText("You lean into her breasts and nuzzle her nipple for a moment before suckling it into your mouth.", false);
else if(player.tallness < 72) outputText("You lean down and pull her breast up in order to suck the nipple into your mouth.", false);
else outputText("You'd love to suck her nipple but you're just too tall, so you settle for pinching both of her nipples between your thumbs and fore-fingers.", false);
outputText(" The harpy pants with pleasure and grabs your head with her hands, stroking behind your ears with her long-nailed, dextrous fingertips. She pulls you ", false);
if(player.tallness < 72) outputText("up", false);
else outputText("down", false);
outputText(" and kisses you, regaining control and giving you a sweet taste of her mouth. Her lips leave behind a pleasant tingle that seems to reach down into your groin and give your ", false);
if(player.balls == 0) outputText("prostate", false);
else outputText("balls", false);
outputText(" a squeeze.\n\n", false);
outputText("You pant and groan when Sophie pulls back. A strand of glittering, gold-tinted spit hangs between you as your eyes plead with her for release. The harpy pulls your ", false);
if(player.tallness <= 48) outputText("head back down between her breasts", false);
else outputText("body tightly against her, crushing her breasts in between the two of you", false);
outputText(", and increases the tempo of her vaginal contractions. Her leg muscles clench along with the perverted rhythm, forcibly shifting your position to rub her egg-stretched cunt in different ways. She ruffles your hair and hums out a powerful command, \"<i>Cum for me " + player.mf("boy","my sweet") + "; fertilize my eggs.</i>\"\n\n", false);
outputText("The compulsion to obey rocks you to your core. With the constant vice-like squeezing, you wouldn't be able to resist if you wanted to. Your " + cockDescript(x) + " twitches and begins to unload into your older lover's contracting love-tunnel. Sophie pants, \"<i>Good " + player.mf("boy","girl") + "! Squirt it all out for me.</i>\" Her fingers trace through your " + hairDescript() + " as you cum, and cum, and cum.", false);
if(player.cumQ() >= 500) {
if(player.cumQ() < 1000) outputText(" Jism starts to spurt from the harpy's pussy by the end, as you've filled her with more cum than her body can handle.", false);
else outputText(" Jism spurts from the harpy's pussy in short order, as the huge eruptions of spooge overfill her poor, unprepared body.", false);
if(player.cumQ() >= 4000) outputText(" Her nest is filled with enough spunk that it begins to run out over the lip, sliding down the rocks in a small river.", false);
}
outputText(" You sigh as you squirt out every ounce of seed for the motherly harpy, until your ", false);
if(player.balls > 0) outputText(ballsDescriptLight(), false);
else outputText(cockDescript(x) + " and prostate", false);
outputText(" are aching and sore.\n\n", false);
outputText("Completely spent by the encounter, you lean on her soft, downy chest and try to catch your breath. Her tight tunnel continues to squeeze and churn, milking any last bits of goo from your urethra. Sophie groans, \"<i>Mmm, such potent seed for one so young. ", false);
if(flags[91] == 0) {
outputText("Did you know in the old days we used to keep men trapped like this for a whole day? We'd keep stroking them like this and get a whole days worth of orgasm. It was magnificent. Of course we're so fertile now a single orgasm is enough to fertilize an egg. It looks like you got off lucky, huh?", false);
}
else if(flags[91] <= 2) outputText("You really like it when I milk you don't you? That must be why you keep coming back for more.", false);
else if(flags[91] <= 10) {
outputText("Do you have a fetish for ", false);
if(rand(2) == 0) outputText("older women", false);
else outputText("harpies", false);
outputText(", or are you just falling in love with me? It's been some time since I've had an admirer like you. We had a word for " + player.mf("boys","sluts") + " like you – perverts. I kid, I kid. Perverts like you have such pent up, potent cum, and I know you love to give it to me.", false);
}
else {
outputText("You're hooked aren't you? Shhh, don't answer. I know you love to nuzzle my breasts and squirt in my pussy. Come back soon so we can make some more eggs – the other girls have gotten sooo jealous of me.", false);
}
outputText("</i>\"\n\n", false);
outputText("Her legs slowly unwind and release you, letting you fall back ", false);
if(player.cumQ() < 1000) outputText("into the soft surface of her nest", false);
else if(player.cumQ() < 4000) outputText("into the soft, cum-slicked surface of her nest", false);
else outputText("into the massive cum-puddle you've turned her nest into", false);
outputText(". You struggle up to your feet and marvel at how rigid ", false);
if(player.cockTotal() > 1) outputText("each of ", false);
outputText(" your " + multiCockDescriptLight() + " remains. Sophie giggles, \"<i>", false);
if(flags[91] == 0) {
outputText("Sorry cutey, the lip gloss is going to keep you nice and hard. It's meant to help your ", false);
if(player.balls > 0) outputText("balls", false);
else outputText("body", false);
outputText(" fill back up with cum. If you want, we could cuddle until it passes.", false);
}
else outputText("I'm sorry, I just got so caught up in the moment that I got you all kissed up on my lip-gloss, didn't I cutey? Why don't you come snuggle with me for a few hours and I can stroke you until it wears off?", false);
outputText("</i>\"\n\n", false);
//Apply harpy status.
luststickApplication(4);
stats(0,0,0,0,0,0,-100,0);
//Sophiepreg
sophieFucked();
outputText("Do you take her up on her offer?", false);
//[Yes/No]
doYesNo(2530,2531);
}
//[Yes]
function postSophieSexSnuggle():void {
sophieSprite();
outputText("", true);
outputText("You sprawl out in Sophie's nest and allow her to wrap her wings about you protectively. Her hands stay busy the entire time, alternatively masturbating ", false);
if(player.cockTotal() > 1) outputText("each of ", false);
outputText("your " + multiCockDescriptLight() + " or her own cum-slicked twat. The harpy gets herself off numerous times, clearly enjoying your discomfort and the fullness of her vagina. After a few hours of this pleasure-hell you can feel your body dredging up another load, and Sophie whispers in your ear, \"<i>Relax and squirt it all out for me.</i>\"\n\n", false);
outputText("Her feathers tickle ", false);
if(player.cockTotal() > 1) outputText("all of ", false);
outputText("your " + multiCockDescriptLight(), false);
if(player.balls > 0) outputText(" and balls", false);
outputText(" while her hands stroke and squeeze, and in no time you're coming for the confident harpy again. Ropes of white jism ", false);
if(player.cumQ() < 50) outputText("squirt over your body", false);
else if(player.cumQ() < 500) outputText("splatter your body", false);
else if(player.cumQ() < 1000) outputText("drench your body in thick waves of cum", false);
else outputText("erupt over your body and send a thick river flowing down the mountain", false);
outputText(" as her skilled hands finish you off. Sinking deeper into her embrace, you sigh, and begin to go soft at last.\n\n", false);
outputText("You thank her and ", false);
if(player.cor > 50) outputText("nearly give her a good-bye kiss, but catch yourself at the last moment. She quips, \"<i>Too bad, it was nice.</i>\"\n\n", false);
else outputText("give her a kiss on the cheek, knowing all-too-well the dangers of her lips. She quips, \"<i>Ohh, too bad. I wanted to stroke you to sleep.</i>\"\n\n", false);
//Remove luststick
player.removeStatusAffect("Luststick");
//(+sensitivity, +libido
stats(0,0,0,0,1,1,0,0);
//4 hours pass
doNext(15);
}
//[No]
function postSexSophieSnuggleTurnedDown():void {
sophieSprite();
outputText("", true);
outputText("You turn down her offer and assure her that you'll be fine. Sophie giggles while you try to get dressed, and you see her amber eyes watching you as try to climb back down the mountain with a stiffy. She seems greatly amused by your predicament.", false);
//(+sensitivity, +libido
stats(0,0,0,0,1,1,0,0);
doNext(13);
}
//[Consentual Sex No Fito]
function consensualSophieSexNoFit():void {
sophieSprite();
var x:Number = player.biggestCockIndex();
flags[SOPHIE_FOLLOWER_PROGRESS]++;
outputText("", true);
outputText("With her spread thighs beckoning you so invitingly, there's no way you could resist. You tear off your " + player.armorName + " and jump into her nest with her, hardening delightfully from your close proximity to the well-endowed woman. Sophie places a hand ", false);
if(player.biggestTitSize() < 1) outputText("on your chest", false);
else outputText("between your " + allBreastsDescript(), false);
outputText(", tracing up and down your " + player.skinDesc + " with slow, measured strokes. She boasts, \"<i>The last time a willing mate found his way up to my nest, it only took a few moments for him to fertilize me. He just couldn't handle all this.</i>\" She pulls you into her breasts for emphasis and squeezes them around your head.\n\n", false);
outputText("Sophie releases you from her bountiful bosom, but you take your time coming back out; you even stop to lick one of her pert nipples. The harpy takes you by the hips and pulls you on top of her, squeezing your " + assDescript() + " for good measure. With ", false);
if(player.tallness <= 48) outputText("her breasts pressed into your face", false);
else if(player.tallness < 72) {
outputText("her breasts rubbing against your ", false);
if(player.biggestTitSize() >= 1) outputText("own", false);
else outputText("chest", false);
}
else outputText("her breasts pressing against your stomach", false);
outputText(", your " + cockDescript(x) + " begins to grow along the bottom of the nest. It rubs her lower lips delightfully as it lengthens underneath her. Her eyes go wide with shock and she exclaims, \"<i>That's bigger than a minotaur's! Just because I've laid a few hundred eggs in my time doesn't mean I can fuck a monstrous giant-cock. You do realize that with a pecker like that you belong in some demonic zoo, rather than in a beautiful harpy's nest.</i>\"\n\n", false);
if(player.cor < 50) outputText("Her teases and taunts sting far more than they should, making you feel terrible and shamed. Your entire body flushes with embarrassment ", false);
else outputText("Her teases and taunts sting far more than they should, making you feel irritated and humiliated. Your entire body flushes with forced embarrassment ", false);
outputText("until the soft skin of her hand presses against your cheek and her voice soothes, \"<i>Don't worry, sweetheart. It's what's INSIDE of that beast that makes me want you. I've been milking cute " + player.mf("studs","herms") + " like you since the demons took over, and you're just my latest conquest. That's okay with you right? You don't mind me relieving all that pressure for my needy eggs do you? Of course you don't.</i>\" Her words carry more weight than they ought to, chasing away any reluctance or worries from your mind and replacing them with acceptance. Sophie really knows what she's doing. You're unwilling or unable to resist her humiliating advances, and the worst part is: you don't mind. Being a conquest won't be so bad; she IS going to let you pack her cunt with cum...\n\n", false);
outputText("Sophie's wings curl forward past her shoulders and gently push you away. As you flop into the soft lining of the nest, your " + cockDescript(x) + " rises to point up at the sky. The harpy's wing-like arms encircle you with feathery softness, tickling at your base. She starts sliding her body up and down along the length of your shaft with the large orbs of her breasts crushed against your member. Sophie asks in a voice that sounds more like command than question, \"<i>Are you going to give me a taste, " + player.short + "? I'd like to know what kind of cum will be seeding my womb.</i>\"\n\n", false);
outputText("She leans down and gives you a kiss on the lips before whispering, \"<i>Be a good " + player.mf("boy","girl") + " and squeeze out a little pre-cum for momma.</i>\" She squeezes tightly around your base and drags her feathery arms up to the " + cockHead(x) + ", milking out a ", false);
if(player.cumQ() < 50) outputText("small dollop", false);
else if(player.cumQ() < 250) outputText("dollop", false);
else if(player.cumQ() < 1000) outputText("large squirt", false);
else outputText("torrential gush", false);
outputText(" of pre-cum. Sophie coos, \"<i>Such a fertile " + player.mf("boy","girl") + ",</i>\" and slurps down the sticky treat with a knowing smile. She turns about and lets her tail-feathers tickle your face, then sits down on your stomach. As light as she is it doesn't bother you much, and the unexpectedly soft bottoms of her bird-like feet begin rubbing ", false);
if(player.balls > 0) outputText("your " + ballsDescriptLight() + ", careful not to snag them with her talons", false);
else outputText("your thighs, careful not to snag you with her talons", false);
outputText(". The muscled flesh of her thighs contracts in a vice-like grip, acting like a cock-ring and forcing even more blood into your already over-aroused " + cockDescript(x) + ".\n\n", false);
outputText("Your body twists and squirms underneath her, aching for more stimulation, more aroused than it should be. Your grunts and moans grow to a feverish intensity until Sophie leans back to place a finger on your lips. She commands, \"<i>Shush now; I know the pollen in my lip-gloss makes it hard not to cum right away, but you need to wait until I'm ready for your seed.</i>\" You whine plaintively but it's no use. It feels like orgasm is so close that you could reach out and touch it, but it just won't come. Sophie giggles cruelly and circles your bloated " + cockHead(x) + " with her fingertip, assuring you: \"<i>You can cum soon, I promise. Just wait; once your tip is in my pussy you'll cum out all your seed. Your harpy queen commands it!</i>\" Her words seem... heavy, somehow; like they have some force or weight behind them.\n\n", false);
outputText("Sophie stands up and begins to flap her wings, kicking up dust and debris and forcing you to shield your eyes as she lifts off the ground. Her hands lock onto your " + cockDescript(x) + " and guide her over top of it. Beads of wetness drip from her vagina and roll over your tender, sensitive skin as she lowers herself down, planting your " + cockHead(x) + " inside her egg-widened pussy lips. Her primary wings flap in a frenzy, struggling to hold her aloft without the aid of her arms, but you barely notice. Your " + cockDescript(x) + " is cumming and cumming HARD for the matronly harpy, filling her waiting womb with spunk.", false);
if(player.cumQ() >= 1000) {
outputText(" In no time her belly distends and she slides off, stuffed with more gooey whiteness than she can handle.", false);
if(player.cumQ() >= 2000) outputText(" You continue to spurt, soaking yourself and the nest with waves of spooge until it is as filled as she is.", false);
if(player.cumQ() >= 4000) outputText(" A wave of the stuff slides down the mountain-side from your extreme production.", false);
}
outputText("\n\n", false);
outputText("The harpy giggles and gives you a long, wet kiss that makes your dick twitch", false);
if(player.balls > 0) outputText(" and your balls churn", false);
outputText(". She flops on her back", false);
if(player.cumQ() >= 2000) outputText(" in the semen-soaked nest", false);
outputText(" and runs her hands over her abdomen, clearly enjoying the idea of laying another egg. Sophie groans, \"<i>Mmm, such potent seed for one so young. ", false);
if(flags[91] == 0) {
outputText("Did you know in the old days we used to keep men trapped like this for a whole day? We'd keep stroking them like this and get a whole days worth of orgasm. It was magnificent. Of course we're so fertile now a single orgasm is enough to fertilize an egg. It looks like you got off lucky, huh?", false);
}
else if(flags[91] <= 2) outputText("You really like it when I milk you don't you? That must be why you keep coming back for more.", false);
else if(flags[91] <= 10) {
outputText("Do you have a fetish for ", false);
if(rand(2) == 0) outputText("older women", false);
else outputText("harpies", false);
outputText(", or are you just falling in love with me? It's been some time since I've had an admirer like you. We had a word for " + player.mf("boys","sluts") + " like you – perverts. I kid, I kid. Perverts like you have such pent up, potent cum, and I know you love to give it to me.", false);
}
else {
outputText("You're hooked aren't you? Shhh, don't answer. I know you love to nuzzle my breasts and squirt in my pussy. Come back soon so we can make some more eggs – the other girls have gotten sooo jealous of me.", false);
}
outputText("</i>\"\n\n", false);
outputText("You struggle up to your feet and marvel at how rigid ", false);
if(player.cockTotal() > 1) outputText("each of ", false);
outputText("your " + multiCockDescriptLight() + " remains. Sophie giggles, \"<i>", false);
if(flags[91] == 0) {
outputText("Sorry cutey, the lip gloss is going to keep you nice and hard. It's meant to help your ", false);
if(player.balls > 0) outputText("balls", false);
else outputText("body", false);
outputText(" fill back up with cum. If you want, we could cuddle until it passes.", false);
}
else outputText("I'm sorry, I just got so caught up in the moment that I got you all kissed up on my lip-gloss, didn't I cutey? Why don't you come snuggle with me for a few hours and I can stroke you until it wears off?", false);
outputText("</i>\"\n\n", false);
//Apply harpy status.
luststickApplication(4);
stats(0,0,0,0,0,0,-100,0);
//Sophiepreg
sophieFucked();
outputText("Do you take her up on her offer?", false);
//[Yes/No]
doYesNo(2530,2531);
//Go to same yes or no as 'fits' options.
}
function sophieFucked(dicked:Boolean = true):void {
//knock up if not knocked up
if(flags[93] <= 0 && dicked) {
flags[93] = 48 + rand(48);
}
//if forced to lesbosecks
if(!dicked) {
flags[98]++;
//If not pissed increment times pissed
if(flags[96] <= 0) {
flags[96] = 72 + rand(100);
flags[97]++;
}
//Increase pissed time
else flags[96] += rand(72);
}
//increment times fucked
flags[91]++;
}
function luststickApplication(hours:Number = 4):void {
//Immune to luststick?
if(player.hasPerk("Luststick Adapted") >= 0) return;
//Increment luststick resistance
flags[285] += Math.floor(hours/2);
if(!player.hasCock()) return;
//Max of 20.
if(hours > 20) hours = 20;
//Add duration if under effects
if(player.hasStatusAffect("Luststick") >= 0) {
//Max?
if(player.statusAffectv1("Luststick") >= 20)
{}
//Not maxed - increase duration
else {
//lower hours if it pushes it too high.
if(player.statusAffectv1("Luststick") + hours > 20) {
hours = 20 - player.statusAffectv1("Luststick");
}
//increase!
player.addStatusValue("Luststick",1,hours);
}
}
//Apply a little of doctor L (thats Dr Lipstick you tard!)
else player.createStatusAffect("Luststick",hours,0,0,0);
}
//Combat Attacks
//ON DICK'ED PCz
//Kiss (Only used on males) - +10 lust on kiss. 25% chance
//per round of increasing lust by 20. Repeat kisses add
//+20 lust. Each kiss adds 2 hours to length of status
//affect.
function sophieKissAttack():void {
sophieSprite();
outputText("Sophie bobs and weaves as she closes the distance between you in an instant. ", false);
//Blind dodge change
if(monster.hasStatusAffect("Blind") >= 0 && rand(3) < 2) {
outputText(monster.capitalA + monster.short + " looks like she's trying to kiss you, but it's easy to avoid the blind harpy!\n", false);
return;
}
//Determine if dodged!
if(player.spe - monster.spe > 0 && int(Math.random()*(((player.spe-monster.spe)/4)+80)) > 80) {
outputText("Sophie changes direction in a flash, trying to slip inside your guard, but you manage to sidestep the incredibly fast harpy's attack.\n", false);
return;
}
//Determine if evaded
if(player.hasPerk("Evade") >= 0 && rand(100) < 10) {
outputText("Using your skills at evading attacks, you anticipate and sidestep " + monster.a + monster.short + "'s attack.\n", false);
return;
}
if(player.hasPerk("Misdirection") >= 0 && rand(100) < 10 && player.armorName == "red, high-society bodysuit") {
outputText("Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + monster.a + monster.short + "'s attack.\n", false);
return;
}
//Determine if cat'ed
if(player.hasPerk("Flexibility") >= 0 && rand(100) < 6) {
outputText("With your incredible flexibility, you squeeze out of the way of " + monster.a + monster.short + "", false);
outputText("'s attack.\n", false);
return;
}
//YOU GOT HIT SON
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.", false);
//Already affected by it
if(player.hasStatusAffect("Luststick") >= 0) {
outputText(" Blood rushes to " + sMultiCockDesc() + " as you grow so hard so fast that it hurts. ", false);
luststickApplication(2);
stats(0,0,0,0,0,0,(12+player.lib/10),0);
if(player.lust < 70) outputText("The drugged lip-gloss is starting to get to you!\n", false);
else if(player.lust < 80) outputText("Her curvy thighs look so inviting. You barely stop yourself before you climb in between them!\n", false);
else if(player.lust < 90) outputText("A trickle of pre-cum leaks from " + sMultiCockDesc() + ". Sophie coos, \"<i>Why don't you give in and let mommy Sophie drain out all that juicy cum?</i>\"\n", false);
else if(player.lust < 100) outputText(SMultiCockDesc() + " twitches and bounces in time with your heartbeat, practically pulling you towards Sophie's gaping, pink-linked snatch.\n", false);
else outputText("So horny. You need to copulate - no, fuck - right NOW. Your hand touches your " + cockDescript(0) + " and you swoon, pumping your hips lewdly as you submit.\n", false);
}
else {
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. ", false);
luststickApplication(2);
stats(0,0,0,0,0,0,8+player.lib/10,0);
if(player.lust < 70) outputText("The drugged lip-gloss is starting to get to you!\n", false);
else if(player.lust < 80) outputText("Her curvy thighs look so inviting. You barely stop yourself before you climb in between them!\n", false);
else if(player.lust < 90) outputText("A trickle of pre-cum leaks from " + sMultiCockDesc() + ". Sophie coos, \"<i>Why don't you give in and let mommy Sophie drain out all that juicy cum?</i>\"\n", false);
else if(player.lust < 100) outputText(SMultiCockDesc() + " twitches and bounces in time with your heartbeat, practically pulling you towards Sophie's gaping, pink-linked snatch.\n", false);
else outputText("So horny. You need to copulate - no, fuck - right NOW. Your hand touches your " + cockDescript(0) + " and you swoon, pumping your hips lewdly as you submit.\n", false);
}
}
//Harpy-Boating (Only used on males)
//Takes off and flies directly at PC, locking her hips
//around PC's torso and smothering the PC with breasts
//for a few moments.
//Easily dodged with evade or flexibility.
function sophieHarpyBoatsPC():void {
sophieSprite();
outputText(monster.capitalA + monster.short + " flaps her wings and launches herself forwards with her talons up. ", false);
//Blind dodge change
if(monster.hasStatusAffect("Blind") >= 0 && rand(3) < 2) {
outputText(monster.capitalA + monster.short + "'s talons are easy to avoid thanks to her blindness!\n", false);
return;
}
//Determine if dodged!
if(player.spe - monster.spe > 0 && int(Math.random()*(((player.spe-monster.spe)/4)+80)) > 80) {
outputText(monster.a + monster.short + "'s movements are incredibly fast but you manage to sidestep them.\n", false);
return;
}
//Determine if evaded
if(player.hasPerk("Evade") >= 0 && rand(100) < 60) {
outputText("Using your skills at evading attacks, you determine " + monster.a + monster.short + " is aiming for your upper body and slide under the attack.\n", false);
return;
}
if(player.hasPerk("Misdirection") >= 0 && rand(100) < 40 && player.armorName == "red, high-society bodysuit") {
outputText("Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + monster.a + monster.short + "'s attack.\n", false);
return;
}
//Determine if cat'ed
if(player.hasPerk("Flexibility") >= 0 && rand(100) < 40) {
outputText("With your incredible flexibility, you squeeze out of the way of " + monster.a + monster.short + "", false);
outputText("'s attack.\n", false);
return;
}
//YOU GOT HIT SON
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!", false);
if(rand(2) == 0) outputText(" She jiggles them around you pleasantly and coos, \"<i>Don't fight it baby. Just let your body do what comes naturally.</i>\"\n", false);
else outputText(" She runs her long fingernails through your hair as she whispers, \"<i>Why fight it? I'll make you feel so good. Just relax and play with momma Sophie's tits.</i>\"\n", false);
stats(0,0,0,0,0,0,(13 + player.sens/10),0);
}
//Compulsion (Male Only)
function sophieCompulsionAttack():void {
sophieSprite();
outputText("Sophie spreads her thick thighs and slips four fingers into her slippery sex. She commands, \"<i>Touch yourself for me. Be a good pet and masturbate for me.</i>\" ", false);
//Autosucceeds if player inte < 40
//autofails if player inte > 80
//Player fails:
if(player.inte < 40 || (player.inte < 80 && rand(40) > (player.inte - 40))) {
outputText("You moan out loud as your arms move of their own volition. They reach inside your " + player.armorName + " and stroke " + sMultiCockDesc() + ", caress the tip, and continue to fondle you a few moments.", false);
outputText("Even after regaining control of your limbs, you're left far more turned on by the ordeal.", false);
stats(0,0,0,0,0,0,(15 + player.cor/20 + player.lib/20),0);
}
//Player resists
else {
outputText("You can feel her words carrying the force of a magical compulsion behind them, but you focus your willpower and overcome it.", false);
}
}
//ON FEMALE PCz
//Talons (Female Only)
//High damage attack easily avoided by evade/flexibility.
function talonsSophie():void {
sophieSprite();
outputText("Sophie pulls her leg up, cocking her thigh dangerously. Look out! ", false);
var damage:Number = 0;
//Blind dodge change
if(monster.hasStatusAffect("Blind") >= 0 && rand(3) < 2) {
outputText(monster.capitalA + monster.short + "'s talons are easy to avoid thanks to her blindness!\n", false);
return;
}
//Determine if dodged!
if(player.spe - monster.spe > 0 && int(Math.random()*(((player.spe-monster.spe)/4)+80)) > 80) {
outputText(monster.a + monster.short + "'s tears through the air, but you manage to just barely dodge it.\n", false);
return;
}
//Determine if evaded
if(player.hasPerk("Evade") >= 0 && rand(100) < 60) {
outputText("Using your skills at evading attacks, you watch " + monster.a + monster.short + " and deftly sidestep her brutal talons.\n", false);
return;
}
if(player.hasPerk("Misdirection") >= 0 && rand(100) < 30 && player.armorName == "red, high-society bodysuit") {
outputText("Using Raphael's teachings and the movement afforded by your bodysuit, you anticipate and sidestep " + monster.a + monster.short + "'s attack.\n", false);
return;
}
//Determine if cat'ed
if(player.hasPerk("Flexibility") >= 0 && rand(100) < 40) {
outputText("With your incredible flexibility, you squeeze out of the way of " + monster.a + monster.short + "", false);
outputText("'s attack.\n", false);
return;
}
outputText("Her leg lashes forwards, lightning-quick, and tears bloody gashes into your " + player.skinDesc + " with her razor-sharp talons! ", false);
//Determine damage - str modified by enemy toughness!
damage = int((monster.str + monster.weaponAttack) - Math.random()*(player.tou) - player.armorDef);
if(damage < 0) damage = 0;
damage += 40;
damage = takeDamage(damage);
outputText("(" + damage + ")\n", false);
}
//Batter (Female Only)
//Batters PC with wings – 4x attack impossible to dodge.*/
function batterAttackSophie():void {
sophieSprite();
var damage:Number = 0;
outputText("Sophie comes at you in a flurry of beating wings! There's no way to dodge the flurry of strikes!\n", false);
//Determine damage - str modified by enemy toughness!
damage = int((monster.str) - Math.random()*(player.tou) - player.armorDef);
if(damage < 0) damage = 0;
damage = takeDamage(damage);
outputText("Her left primary wing batters your head! (" + damage + ")\n", false);
//Determine damage - str modified by enemy toughness!
damage = int((monster.str) - Math.random()*(player.tou) - player.armorDef);
if(damage < 0) damage = 0;
damage = takeDamage(damage);
outputText("Her right, wing-like arm slaps at your torso! (" + damage + ")\n", false);
//Determine damage - str modified by enemy toughness!
damage = int((monster.str) - Math.random()*(player.tou) - player.armorDef);
if(damage < 0) damage = 0;
damage = takeDamage(damage);
outputText("Her other feathery arm punches at your shoulder! (" + damage + ")\n", false);
//Determine damage - str modified by enemy toughness!
damage = int((monster.str) - Math.random()*(player.tou) - player.armorDef);
if(damage < 0) damage = 0;
damage = takeDamage(damage);
outputText("Her right wing slams into the other side of your head! (" + damage + ")\n", false);
}
function sophieAI():void {
sophieSprite();
var select:Number=1;
var rando:Number=1;
//Update attacks for girls/neuters
if(!player.hasCock() || monster.hasStatusAffect("bimboBrawl") >= 0) {
//Talons
monster.special1 = 5141;
//Batter
monster.special2 = 5142;
//Clear
monster.special3 = 0;
}
//Dicks ahoy
else {
//kiss
monster.special1 = 5138;
//harpy-boating
monster.special2 = 5139;
//compulsion
monster.special3 = 5140;
}
if(player.hasCock() && monster.hasStatusAffect("bimboBrawl") < 0) rando = 1 + rand(3);
else rando = 1 + rand(2);
if(rando == 1) eventParser(monster.special1);
if(rando == 2) eventParser(monster.special2);
if(rando == 3) eventParser(monster.special3);
combatRoundOver();
}
function sophieLostCombat():void {
sophieSprite();
flags[SOPHIE_FOLLOWER_PROGRESS] = 0;
outputText("Sophie is down! ", true);
if(monster.HP < 1) outputText("She's too wounded to fight, and she lies in a miserable heap in the nest.", false);
else outputText("She's too turned on to be a threat and is happily masturbating.", false);
//RAEP OPTIONS
if(player.gender != 0) {
var dickRape:Number = 0;
var clitFuck:Number = 0;
var cuntFuck:Number = 0;
var bimbo:Number = 0;
if(player.lust >= 33 && player.totalCocks() > 0) {
//Set dick rape to correct scene.
//Too big
if(player.cockThatFits(232) == -1) dickRape = 2534;
//Fits
else dickRape = 2533;
}
//Girl options!
if(player.lust >= 33 && player.hasVagina()) {
//All girls get cuntfuck
cuntFuck = 2535;
//big clit girls
if(player.clitLength >= 5) clitFuck = 2536;
}
if(hasItem("BimboLq",1)) bimbo = 3036;
}
if(dickRape + cuntFuck + clitFuck + bimbo > 0) {
outputText(" What do you do to her?", false);
simpleChoices("Use Dick",dickRape,"Scissor",cuntFuck,"Fuck wClit",clitFuck,"Bimbo Her",bimbo,"Leave",5007);
}
else eventParser(5007);
}
function sophieWonCombat():void {
sophieSprite();
flags[SOPHIE_FOLLOWER_PROGRESS] = 0;
if(player.hasCock()) {
if(player.cockThatFits(232) < 0) tooBigForOwnGoodSophieLossRape();
else if(player.biggestCockArea() <= 5) tinyDickSupremeSophieLoss();
else normalLossRapuuuuSophie();
}
else {
SophieLossRapeNoDonguuuu();
}
}
//COMBAT STUFF HOOOO/
//Male 'Normal' – throw on back and grab ankles, force over head and fuck
function maleVictorySophieRape():void {
sophieSprite();
var x:Number = player.cockThatFits(232);
outputText("", true);
outputText("Sophie is ", false);
if(monster.HP < 1) outputText("too beaten to resist, and lies on the ground in a semi-conscious heap.", false);
else outputText("too turned on to resist, and is vigorously fisting her large pussy.", false);
outputText(" Not satisfied with a simple victory, you undress and expose your ", false);
if(player.lust > 90) outputText("dripping ", false);
else if(player.lust > 50) outputText("hard ", false);
else outputText("hardening ", false);
outputText("member. The harpy doesn't even notice your nudity until you're grasping her legs just above the talons. She struggles weakly, but you force her feet up over her head, pinning her to the ground. The view of her thick thighs and large, slippery slit is the perfect enticement.\n\n", false);
outputText("You force your " + cockDescript(x) + " into the waiting hole, surprised at how firmly it squeezes. Sophie grunts and struggles under you, but with your grip and the awkward angle she can't get anywhere. The half-conscious expression on her face makes it difficult to tell if she's trying to escape or merely attempting to take on a more dominant position. It doesn't matter; each struggle and flex of her thigh muscles only makes her slippery cunt clamp down more tightly around your member. You rock your hips back and forth and and tease, \"<i>Isn't this what you wanted, Sophie? You know you're loving this. Just don't think you'll get me with any more of whatever is in your lip-gloss!</i>\"\n\n", false);
outputText("The slap of flesh on flesh echoes through the cool mountain air, and even though you're raping one of them, the other harpies in the area don't seem to care. A few of them seem to be perched on the edges of their nests, touching themselves. It seems they aren't much interested in what happens to Sophie. You pound her pussy with increasing levels of vigor, watching her thighs and breasts jiggle with the force of the fucking. Her arms come up to steady her breasts, but her fingers wrap around her erect nipples and begin to pinch and pull on them. Sophie pants, \"<i>Oh gods yes! Breed me you fucking " + player.mf("stud","sexy bitch") + ". Stuff your nice young sperm inside me!</i>\"\n\n", false);
outputText("She's definitely starting to enjoy herself. The harpy wriggles and cums underneath you, her wings fluttering and flapping uncontrollably and kicking up dust. The velvet tunnel clamps tightly around you with each quivering, muscular contraction of her thighs. You just keep pounding away, splattering girl-cum with each thrust. Sophie screeches and moans as she starts to come down, but you pick up the pace, battering her pussy with relentless, hard fucks. Her eyes roll back from over-stimulation, and her hands fall away from her nipples, nervelessly. The unbound flesh jiggles obscenely, giving you something to watch as you have your way with the older woman.\n\n", false);
outputText("Warmth boils up in your loins, the telltale sign of your coming orgasm. You plunge inside her and bend over, biting her nipples as you cum. Jism boils out of your " + cockDescript(x) + ", creaming her pussy as Sophie has another blissful orgasm. You doubt she's even conscious at this point, but you don't care one way or another. ", false);
if(player.cumQ() < 50) outputText("Spooge spurts inside her until you're satisfied.", false);
else if(player.cumQ() < 300) outputText("Spooge spurts inside her until you're satisfied and her belly has a small cum-bloated bump in it.", false);
else if(player.cumQ() < 1000) outputText("Spooge bursts inside her until her belly is pregnant with your spunk and you're satisfied.", false);
else outputText("Spooge bursts inside her until her belly looks pregnant with your spunk. The cum squirts around your cock as it runs out of room inside her, and the nest quickly floods with the rising tide of sexual bliss. You sigh, satisfied at last.", false);
outputText(" Sophie's well-fucked slit gapes and drools whiteness once you pull out. It won't be long until she has an egg at this rate.", false);
//Victory - lust decrease, sensitivity decrease
stats(0,0,0,0,0,-1,-100,0);
//Fuck & Preg counter
sophieFucked();
eventParser(5007);
}
//Male 'Doesn't Fit'
function maleVictorySophieRapeHUGE():void {
sophieSprite();