-
Notifications
You must be signed in to change notification settings - Fork 216
/
Copy pathkatherine.as
1518 lines (1250 loc) · 145 KB
/
katherine.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
//CAPACITY: 70
const KATHERINE_UNLOCKED:int = 398;
const KATHERINE_DICK_COUNT:int = 399;
const KATHERINE_DICK_LENGTH:int = 400;
const KATHERINE_KNOT_THICKNESS:int = 401;
const KATHERINE_BALL_SIZE:int = 402;
const KATHERINE_TIMES_SEXED:int = 403;
function kathCock():String {
return NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
}
function kathCocks():String {
if(flags[KATHERINE_DICK_COUNT] < 2) return NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
else return NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]) + "s";
}
function eKathCock():String {
if(flags[KATHERINE_DICK_COUNT] < 2) return "her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
else return "each of her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
}
function EKathCock():String {
if(flags[KATHERINE_DICK_COUNT] < 2) return "Her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
else return "Each of her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
}
function oKathCock():String {
if(flags[KATHERINE_DICK_COUNT] < 2) return "her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
else return "one of her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
}
function OKathCock():String {
if(flags[KATHERINE_DICK_COUNT] < 2) return "Her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
else return "One of her " + NPCCockDescript(2,flags[KATHERINE_DICK_LENGTH]);
}
//(small/moderate/huge)
function katBalls():String {
if(flags[KATHERINE_BALL_SIZE] <= 1) return "small";
else if(flags[KATHERINE_BALL_SIZE] <= 3) return "moderate";
else return "huge";
}
//[average/long]
//(average/long/huge)
function katCock():String {
if(flags[KATHERINE_DICK_LENGTH] <= 10) return "average";
else if(flags[KATHERINE_DICK_LENGTH] <= 14) return "long";
else return "huge";
return "DONE";
}
//If player has Silver Bell key item and is at Wet Bitch when Scylla is not busy with her Addicts Anonymous group
function catMorphIntr():void {
outputText("\n\nThe cum-drinking nun Scylla is here, apparently resting up between one of her missions. Recalling the last 'mission' you went on, your hand unthinkingly touches the silver bell you received from that strange herm cat-morph. Scylla could probably help you find her again.", false);
}
function katherineGreeting():void {
outputText("", true);
//[If Player chooses 'Scylla' button]
outputText("Scylla smiles when she sees you approaching, and politely greets you. \"<i>Why, hello, " + player.short + "; it's good to see you. Do you need something?</i>\"\n\n", false);
outputText("You tell her that you do, and, showing her the bell you have, you ask her if she remembers that little mission the two of you went on where she ended up ministering to those milk-hungry cats.\n\n", false);
outputText("Scylla nods, a pleased expression and a soft blush blooming on her features. \"<i>Yes. Poor things... to be so hungry as to do something like that.</i>\" Then she stops and her eyes focus on the bell, glittering with mirth. \"<i>I take it you want to see the friendly dear who gave you that bell again?</i>\" she asks. When you admit that is what you hoped she'd help you with, she promptly stands up, decisively. \"<i>Well then, let's go and re-introduce you two.</i>\" She smiles softly as she turns and walks away at a brisk pace, forcing you to hurry to catch up.\n\n", false);
outputText("Scylla takes you on a very different route from the last time you 'encountered' the cat-morphs in question, leading you to a surprisingly seedy part of the city. Strangely, despite all of the houses you know are empty and uninhabited from the people lost to the demons, there are myriad people around who are quite clearly vagrants. Centaurs, dog-morphs, cat-morphs, mouse-morphs, fox-morphs, wolf-morphs, and stranger things beside - you think you see something that looks vaguely like a centaur/wolf-morph hybrid at one point. Curious, you can't help but ask Scylla what you're doing here.\n\n", false);
outputText("The towering nun suddenly calls out. \"<i>I did a little asking around after that first incident. They told me that those cats in particular like to hang out in this part of town. In fact... there! Hello! Mr. Kitty? I want to talk with you and your friends... Maybe, if you're thirsty, I can offer you a drink?</i>\"\n\n", false);
outputText("You're caught off-guard by Scylla's actions, but then spot a familiar-ish feline face peeking warily out from behind a corner. You make a point of walking away from Scylla, and one of the male cats who basically mugged Scylla for her milk promptly slips out of hiding, the other eleven or so males and females quickly joining him. The mutated nun, smiling with all three lips, is already innocently removing her habit to expose her huge, milk-filled breasts. The cats barely hesitate before swarming towards her, pushing and shoving to be the first to start making out with her lipples and drinking their fill of creamy nun-milk. You watch the situation dispassionately - it is, after all, a lot more voluntary on Scylla's part than it was the first time - and then pull out the silver bell, which you start idly jingling.\n\n", false);
outputText("\"<i>...Is that really you? You actually came?</i>\" A voice from just off to the side sounds; quiet, hesitant, filled with hope, doubt and fear in equal parts.\n\n",false);
outputText("Looking around, you quickly spot the lonely herm cat-morph, the reason behind your coming here. Still dressed in her ragged clothes, her too-large shirt covers up her B-cup breasts, while her too-tight pants make her canine sheath and small balls stand out to a casual observer. Under these calmer conditions, you can make out her eyes, a rather pretty shade of green, while her shoulder-length hair is neon pink, a stark contrast to her black fur. Funny, you don't recall it being that color before... finally remembering that she's addressed you, you smile and agree.\n\n", false);
outputText("She looks from you to the small milk-drinking orgy and then shyly indicates an alleyway nearby. \"<i>Do you want to talk somewhere more privately?</i>\" she asks. When you indicate your assent, she gives a relieved smile and leads you away. Once you're out of sight of the other cats, she suddenly hugs you fiercely. \"<i>I can't believe you actually came! Oh, I dreamed that this would happen!</i>\" She purrs, happily rubbing her cheek against you, then pulls away timidly, blushing brightly. \"<i>I'm sorry... It's just, I've never had anyone show interest in me before. Not with this...</i>\" She strokes the bulge of her puppy pecker meaningfully. Then, a thought seems to occur to her and she turns a fearful look at you. \"<i>You - are - interested in me, aren't you? You didn't come here just to tell me off for liking you?</i>\" From the tone of her voice, this last question was more a plea than an icebreaker.\n\n", false);
outputText("You smile and assure her that you are interested... though you have to confess that more intimate conversations may have to wait for another time. As if on cue, the happy purring of other cat-morphs reaches you in the alleyway as they start to finish up with Scylla.\n\n", false);
outputText("The dog-dicked cat nods. \"<i>Right.... hey, there's a pawnshop in the main street - run by a golden retriever named Oswald? You know it?</i>\" When you nod your head, she continues, \"<i>Well, Oswald's a pretty nice guy, he buys things I find sometimes and always gives me a fair price even though it's obvious how desperate I am; these guys don't really care whether I'm here or not, so I'll start hanging around in the back alley behind his place. We can meet up there - is that okay with you?</i>\"\n\n", false);
outputText("You tell her that sounds much better than needing to get Scylla to come here as a distraction each time. The silver bell you return to her, with a coy remark that it looks better on her anyway. Giving you a heartfelt smile, she gently takes it, then reattaches it to her leather collar.\n\n", false);
outputText("As you walk away, she realizes something. \"<i>Oh! My name's Katherine! What's yours?</i>\" she asks. With another smile, you tell her. She mouths the name to herself, her eyes a-twinkle with happiness.\n\n", false);
outputText("The other cats are lying sprawled in the street, swollen with the milk they've drunk from Scylla, who is merrily pulling her habit back on. She gives you a knowing look but doesn't speak as she leads you back toward the main street.", false);
outputText("\n\n<b>(Kath's Alley unlocked in Oswald's Pawn shop menu!)</b>", false);
//Silver Bell key item removed
player.removeKeyItem("Silver Kitty-Bell");
flags[KATHERINE_DICK_COUNT] = 1;
flags[KATHERINE_DICK_LENGTH] = 8;
flags[KATHERINE_KNOT_THICKNESS] = 6;
flags[KATHERINE_BALL_SIZE] = 1;
//Player can now encounter Katherine by using the Back Alley button at the Pawn Shop
flags[KATHERINE_UNLOCKED] = 1;
doNext(13);
}
//Seeing Katherine
function visitKatherine():void {
outputText("", true);
//If Back Alley button is selected
outputText("The back alley behind Oswald's pawnshop is quite unremarkable, except that it's reasonably clean. A number of empty crates, old blankets and torn strips of cloth have been assembled into a makeshift \"<i>nest</i>\", the kind of place that a homeless vagrant would use as a resting place.\n\n", false);
outputText("Katherine the cat is currently ", false);
var num:Number = rand(5);
if(num == 0) outputText("sitting in a corner", false);
else if(num == 1) outputText("pacing back and forth", false);
else if(num == 2) outputText("sipping furtively at a bottle of milk", false);
else if(num == 3) outputText("yawning and stretching", false);
else outputText("waking up from a cat-nap", false);
outputText(", and she smiles when she sees you. \"<i>" + player.short + "! Did you come to see me?</i>\"", false);
katherineMenu();
}
function katherineMenu():void {
//[Sex] [Talk] [Appearance] [Give Item]
var sex:int = 0;
if(player.lust >= 33) sex = 3335;
simpleChoices("Sex",sex,"Talk",3319,"Appearance",3326,"Give Item",3327,"Back",2211);
}
//Talk
function talkToKatherine():void {
outputText("", true);
outputText("You tell Katherine that you'd like to talk. The pink-haired black cat looks shy, but excited at that. \"<i>Okay... what do you want to talk about?</i>\" she asks, nervously looking at her feet.", false);
//[Racial Tension] [Her History] [Gang] [Dog Cock] [Vagrancy] [Love & Lust]
choices("RacialTension",3320,"Her History",3321,"Gang",3322,"Dog Cock",3323,"Vagrancy",3324,"LoveAndLust",3325,"",0,"",0,"",0,"Back",3318);
}
//Talk Scenes
//Racial Tension
function katherineDefur():void {
outputText("", true);
outputText("You comment to Katherine that you can't help but notice that she and all of her.... ah, 'friends' are cats, and the city seems to be mainly populated by dogs. Does that have anything to do with her basically being a vagrant?\n\n", false);
outputText("\"<i>Ah... well, I wouldn't go so far as to say it's entirely to blame for us being on the streets, but I confess that it's definitely had a role to play. Most of the watch are canines of some description and, well, they do tend to think the worst of any cats they suspect of causing trouble.</i>\" Katherine shrugs.\n\n", false);
outputText("You comment that you would have thought the demonic threat would make people forget about prejudices like that.\n\n", false);
outputText("\"<i>We're a lot more united now than we were before, but, honestly, old beliefs die hard, you know? Horses are dumb, sex-crazed brutes, centaurs are horses with big egos and bad attitudes, dogs are dull-witted, wolves are savage, cats are lazy, mice are cowardly, foxes are shiftless... Well, you can see how it goes.</i>\" The herm cat-morph delivers this proclamation while airly waving one furry hand. \"<i>Besides, it's not as if there are demons beating on the walls day in and day out to remind us all of the greater threat every morning, you know?</i>\"\n\n", false);
outputText("You click your tongue reflexively. Politely thanking Katherine for the talk, you turn and walk away.\n\n", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Her History
function katherinesHistory():void {
outputText("", true);
outputText("You tell Katherine you're curious about her. How did she end up on the streets? Was she born there - or did she simply lose her family?\n\n", false);
outputText("\"<i>No, no, nothing quite so dramatic as that.</i>\" The cat-woman laughs. \"<i>My people basically all moved to Tel'Adre before I was born - mother used to complain I was kicking in her womb all the way - when our own cities were ransacked by the demons. We had to settle in the bad parts of the city - we were lucky Tel'Adre had already lost a lot of people, or they might have turned us away. I was born in the streets, and I've grown up here,</i>\" she explains.\n\n", false);
outputText("You ask if that means Katherine's entire family are street-people like she is?\n\n", false);
outputText("\"<i>No, no, nothing of the sort.</i>\" She looks sheepishly at her hands for a moment. \"<i>I... uh... it's actually kind of embarrassing. All right, well... my mother and father always had a talent for dealing with people, getting them what they want and what they need for bargain prices. So, it didn't take them long to set up and run this little shop together, off the main street. I grew up living there; a bit cramped, but cozy - it was a quiet, safe life. Unfortunately, I was what you'd call a rebellious teen; I used to hang out on the street all day long, and refused to go to school or learn a trade. Then, one night, I decided I'd run away and live in the street full-time, because I heard them talking about sending me to join the Watch as a new recruit.</i>\"\n\n", false);
outputText("She grins. \"<i>Unfortunately, that means I've had to be a vagrant ever since; I don't dare go home as I have no intention of ever joining the Watch, but, well, I don't have a single way of earning myself an honest coin.</i>\"\n\n", false);
outputText("She sees the look you're giving her and hastily anticipates your reaction. \"<i>But don't worry, I actually like my life! Nobody telling me what to do, I make my own hours... really, it's not so bad.</i>\"\n\n", false);
outputText("You're skeptical, but reason there's nothing you can do about it right now. Politely thanking Katherine for the talk, you turn and walk away.", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Gang
function askKatherineAboutGang():void {
outputText("", true);
outputText("You ask Katherine if she can tell you anything about the gang of cats you found her running with.\n\n", false);
outputText("She looks around, as if expecting them to suddenly appear. \"<i>Okay... just, promise me you won't tell them anything I tell you?</i>\" When you give your word, she sighs softly. \"<i>Well, we're basically just what we look like; a bunch of homeless cats who figured out there was strength in numbers. We're not really friends, exactly, we just know we can trust each other and we band together to do what we need to do.</i>\"\n\n", false);
outputText("You ask her just what they actually do; after all, you did first meet them when they ambushed you and Scylla to get at some milk.\n\n", false);
outputText("Katherine flushes with embarrassment. \"<i>Yes, well... that's honestly not the first time they've done that. We all like milk and sometimes have problems getting food, and so we go after lactating women and herms to feed on them - we don't usually mug people,</i>\" she hastily appends, \"<i>so the Watch aren't chasing us constantly. Much as they may complain, milk thefts with no actual monetary damages generally aren't important enough for them to bother with.</i>\"\n\n", false);
outputText("You point out that, either way, attacking people for what is basically their bodily fluid has got to be a dangerous risk to take in this city. A lot of the people around look like they can take care of themselves.\n\n", false);
outputText("\"<i>You're not wrong there,</i>\" Katherine agrees. \"<i>We actually used to have another male cat named Joey in our gang, 'til he fell afoul of a 'victim' of ours.</i>\" Curious, especially by the way she's smiling at the recollection, you ask her to share the tale.\n\n", false);
outputText("\"<i>Well, he sees this mouse woman one day, dolled up in a long dress with milk seeping from nipples attached to breasts as big as her head, and decides to go after her without the rest of us. He stumbled back to the gang later that day, gut swollen, face smeared with white, and looking very shocked.</i>\" She grins wickedly. \"<i>Turns out she was a hermaphrodite; had a horsecock this big,</i>\" Here she touches first her elbow, then the tip of her middle finger. \"<i>And two inches thick. She apparently led him to a quiet place, acting like she was going to give him the milk he wanted, then she whipped out her dick, knocked him down and tied him up, then made him suck her off - and as she had balls as big and full as her tits under the dress, well...</i>\"\n\n", false);
outputText("You can't help but picture that in your head and chuckle softly, then ask what happened to him.\n\n", false);
outputText("\"<i>The others gave him such hell: mocking him for losing to a mouse, teasing him about liking dickgirls, and jeering that at least he got a meal anyway, that he vowed he'd get even; he went back after her again. And again. And kept losing. He didn't always come home with a gut full of dick-milk, but she played with him sexually whenever she won, which was as often as he'd challenge her. Funny thing was, she never actually raped him, per se - never tried sticking that horsecock up his ass... at least, not if he didn't want her to. She seemed to think it was all a game and, to be honest, I think he started thinking that way too. One day, he never came back; he's just shacked up with her permanently, I think.</i>\"\n\n", false);
outputText("<b>That</b> certainly wasn't the sort of ending you were expecting. You press her to explain; did they really just move in together?\n\n", false);
outputText("\"<i>I've actually seen them a few times; they both look very happy, and he's even wearing a little heart tag with her name on it at his neck.</i>\" The cat-herm shakes her head and sighs. \"<i>The other cats never talk about him except to call him a wimp and a sellout. Personally, I can't help but think he was the smart one.</i>\"\n\n", false);
outputText("Mulling that over, you remember what you were originally talking about and ask her what the gang does aside from milk-muggings.\n\n", false);
outputText("She shrugs. \"<i>Panhandling, a little pickpocketing, some stall-robbing... Mostly we're urban scavengers - you know, sneaking into abandoned homes and things to pick up stuff we can pawn for money. It's not as easy as it sounds, and the law really cracks down on it, so if they catch us... it won't go easy. We do that only when we're sure we can get away with it.</i>\"\n\n", false);
outputText("Politely thanking Katherine for the talk, you turn and walk away.\n\n", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Dog Cock
function askKatherineAboutDogCock():void {
outputText("", true);
outputText("You confess to Katherine that you're curious about her dog cock. How did a cat end up with a canine penis?\n\n", false);
outputText("Katherine sighs softly. \"<i>I knew you would ask this eventually. Well, to answer the obvious question right away, I was born a herm - and no, I never got any grief over it. The other part happened not too long after I ran away from home to become a street-cat; I was starving hungry, and I was hanging around the markets - one of the traders had managed to bring a load of produce through, so I snuck in and grabbed the first crate of food I could carry on my own before running away.</i>\" She shrugs. \"<i>It was full of canine peppers, but my belly was growling, so I started tucking in... Unfortunately, I was too naive to realise that raw canine peppers have their transformative effects, and these were raw peppers. Native Marethians are resistant to interspecies transformation, but that didn't stop me from changing in my most vital part.</i>\"\n\n", false);
outputText("Your eyes unthinkingly go to her waist, and she nods. \"<i>I was scared, at first... but it felt so good. Plus, well...</i>\" She blushes. \"<i>It made me grow a bit bigger.</i>\" As you look questioningly, she sheepishly explains, \"<i>You have to understand, big dicks aren't really what we cats are known for, and in this city, where a foot long seems to be the new average, well...</i>\" She wriggles in embarrassment. \"<i>So, I hit on what at the time seemed to be a great idea; eat canine peppers until I got as big as I wanted to be, then just steal and eat a whisker fruit to give myself a cat penis back.</i>\" She sighs. \"<i>Unfortunately, I didn't realise they weren't just any old peppers - they were knotty canine peppers. They don't make your canine penis grow, they make your knot grow. I ate the whole crate and all I ended up with for my troubles was an eight inch dick - double what I'd originally had, but entirely due to the initial transformation - a bellyache, and, as I was all too quick to find out, a knot so huge that even whores won't fuck me because it'd rip them apart.</i>\" She sighs lamely.\n\n", false);
outputText("You ask why she never went with her plan and used a whisker fruit to change it back.\n\n", false);
outputText("\"<i>Because, soon afterwards, I found out the last trader who regularly brought whisker fruit into the city vanished. We still get some in, but the big bakeries and restaurants snap them up - you never see them on sale in the market any more.</i>\" She then looks aside. \"<i>To be honest, I've kinda grown to like the cock itself... I just wish I could shrink the knot down. But that would take Reducto salve, and that's incredibly rare and expensive.</i>\" This last remark is accompanied with a weak shrug.\n\n", false);
outputText("Curious, you prod her with another question; would she ever change her dog-dick for something else, given the opportunity?\n\n", false);
outputText("She shakes her head. \"<i>No... like I said, I'm accustomed to the dog-dick now, I even rather like it. I just want to change the knot. I'm not saying I want to get my hands on bulbous peppers or double peppers or anything like that. Actually, I don't think I'd mind the bulbous peppers, and a double pepper might be interesting. I definitely would like to get my hands on an overly large pepper or two...</i>\" She trails off murmuring, half to you, half to herself.\n\n", false);
outputText("Politely thanking Katherine for the chat, you turn and walk away.", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Vagrancy
function askKatherineAboutVagrancy():void {
outputText("", true);
outputText("You ask Katherine to explain to you how exactly she and her friends can be vagrants; with all the empty houses left in the city, you'd think it would be easy for them to find a house in.\n\n", false);
outputText("Katherine scowls. \"<i>It's the government's idea. Basically, they've repossessed all of the houses that are empty, and you can't get into them until and unless you prove you can make enough money to pay taxes and buy a lease. No money, no house - that's why we, and many others like us, live on the street. The Watch spends more time cracking vagrants over the head and expelling us from perfectly good empty houses than doing anything useful.</i>\"\n\n", false);
outputText("You can't help wondering how much of that is true and how much of that is prejudice. Politely thanking Katherine for the talk, you turn and walk away.", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Love & Lust
function askKatherineAboutLoveAndLust():void {
outputText("", true);
outputText("Trying to phrase your question politely, you ask why it was that Katherine wanted to see you again, particularly given the circumstances under which you met.\n\n", false);
outputText("The dog-dicked herm cat blushes and scrapes one foot nervously along the ground in embarrassment. \"<i>Well, I... uh... Truth be told? You're basically the only person I've ever had sex with.</i>\"\n\n", false);
outputText("Automatically, your eyes are drawn to her crotch and you can't help asking if her canine member is really that off-putting to others.\n\n", false);
outputText("\"<i>It is, yeah. Most cats can't get over it, most dogs can't get over the fact the rest of me is still a cat, and even centauresses are wary of letting me shove what is basically a melon in their cunts.</i>\" Katherine nods, sadly. \"<i>But then, you came along... I don't know why you did what you did, but I'm too happy to care.</i>\" A beatific expression covers her face.\n\n", false);
outputText("Politely thanking Katherine for the talk, you turn and walk away.", false);
//Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
doNext(2211);
}
//Katherine Appearance:
function katherinesAppearance():void {
outputText("", true);
outputText("Katherine stands before you, nervously watching as you scrutinize her form. \"<i>Um... do you like what you see?</i>\" Nervously trying to break the ice and amateurishly trying to flaunt her body, she strikes what might be a sexy pose... in her mind.\n\n", false);
outputText("Katherine is a lean-built hermaphroditic cat-morph, standing maybe 5' 2\" tall. Her fur is black, but her shoulder-length hair, often worn forward and obscuring one of her leaf-green eyes, is neon pink. She wears weatherbeaten, somewhat ragged, clearly second-hand clothing, consisting of a too-large shirt and a very tight pair of shorts. At your gesture, she meekly undresses herself so that you can get a better look at her.\n\n", false);
outputText("Palmable B-cup breasts sit on her chest, while just below her belly button sits the unmistakable form of an animalistic penis sheath. Shyly, her phallus begins to slip from its length; ", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("a canine cock", false);
else outputText("a pair of canine cocks", false);
outputText(", 1.5\" thick and " + flags[KATHERINE_DICK_LENGTH] + "\" long reveals ", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("itself", false);
else outputText("themselves", false);
outputText(", with ", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("a ", false);
outputText(flags[KATHERINE_KNOT_THICKNESS] + "\" thick knot", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s at their bases. A pair of " + flags[KATHERINE_BALL_SIZE] + "\" wide balls sway below her cocks, hanging just above her wet, eager cunt.\n\n", false);
else outputText(" at its base. A pair of " + flags[KATHERINE_BALL_SIZE] + "\" wide balls sway below her cock, hanging just above her wet, eager cunt.\n\n", false);
outputText("When you're finished looking at her she quickly redresses herself, flaunting her rear at you as if by accident and waiting to see what else you want, reassured by your lack of comments.\n\n", false);
//Display default Katherine options
katherineMenu();
}
//Give Item:
function giveKatherineAnItem():void {
outputText("", true);
outputText("You tell Katherine that you have a present for her.\n\n", false);
outputText("The cat-morph's face lights up, but then she guiltily lowers her eyes. \"<i>I can't - you're too good to me already...</i>\" You cut her off, insisting that you want to give it to her. \"<i>Okay, if you're sure... what is it?</i>\"\n\n", false);
var reducto:Number = 0;
var bulb:Number = 0;
var double:Number = 0;
var large:Number = 0;
if(hasItem("Reducto",1)) reducto = 3328;
if(hasItem("BulbyPp",1)) bulb = 3332;
if(hasItem("DblPepp",1)) double = 3333;
if(hasItem("LargePp",1)) large = 3334;
//[Reducto] [Bulbous Pepper] [Double Pepper] [Overly Large Pepper]
simpleChoices("Reducto",reducto,"BulbPepper",bulb,"DblPeppr",double,"LrgPepp",large,"Back",3318);
}
//Reducto
function useReductoOnKat():void {
outputText("", true);
if(flags[KATHERINE_DICK_LENGTH] <= 8 && flags[KATHERINE_KNOT_THICKNESS] <= 2 && flags[KATHERINE_BALL_SIZE] <= 1) {
//If min size on all Kat parts reached:
outputText("She looks at the jar and then visibly thinks about it, but shakes her head. \"<i>I'm sorry, " + player.short + ", but I don't think it's possible for that stuff to make any of my remaining parts shrink any more... Or rather, I should say I don't want to get any smaller than I am now, thank you.</i>\"\n\n", false);
outputText("You nod in understanding and put the jar away. She looks apologetic. \"<i>Did you maybe want to do something else?</i>\" she asks.", false);
//Display main Kat menu
doNext(3327);
}
else {
var knot:Number = 0;
var leng:Number = 0;
var balls:Number = 0;
if(flags[KATHERINE_DICK_LENGTH] > 8) leng = 3330;
if(flags[KATHERINE_KNOT_THICKNESS] > 2) knot = 3329;
if(flags[KATHERINE_BALL_SIZE] > 1) balls = 3331;
outputText("You extract the small jar of salve and offer it to her. Her face lights up in delight. \"<i>Reducto?! For me? It's so expensive!</i>\" At your nod, she yowls happily and snatches it up, yanking down her shorts to expose her sheath. All of a sudden, she stops abruptly and looks up at you, a dangerous gleam in her eye. \"<i>Would you like to... help me apply it?</i>\" she asks, softly. You nod your head", false);
if(player.lib > 50) outputText(" with a salacious grin", false);
outputText(" and she happily plunks down on a nearby crate, holding the precious jar of ointment and waiting for you to begin.\n\n", false);
outputText("You kneel before her, looking at her sheath ", false);
if(player.lib > 50) outputText("and planning exactly what you're going to do to it.", false);
else outputText("and wondering how to begin.", false);
//[Knot] [Length] [Balls]
simpleChoices("Knot",knot,"Length",leng,"Balls",balls,"",0,"Back",3327);
}
}
function useRedoctoOnKatsKnot():void {
outputText("", true);
outputText("You gently reach out and start to stroke her sheath up and down, feeling the long bone of ", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("each of her canine cocks, and rubbing one finger across the exposed tips. The cat wriggles and squirms, and quickly blooms under your care, until all " + flags[KATHERINE_DICK_LENGTH] + " inches of both shafts are exposed. Knot just barely visible as a bulge at the base of each cock, you start to stroke them next. Katherine coos and moans as your fingers glide up and down, and the responsive flesh starts to swell like red, hard balloons. They puff up and up, swelling to full size, " + flags[KATHERINE_KNOT_THICKNESS] + " inches in diameter. With subjects prepared, you stop, leaving Katherine hovering at the edge of release.\n\n", false);
else outputText("her canine cock, and rubbing one finger across the exposed tip. The cat wriggles and squirms, and quickly blooms under your care, until all " + flags[KATHERINE_DICK_LENGTH] + " inches of her shaft is exposed. Knot just barely visible as a bulge at the base of her cock, you start to stroke them next. Katherine coos and moans as your fingers glide up and down, and the responsive flesh starts to swell like a red, hard balloon. It puff up and up, swelling to full size, " + flags[KATHERINE_KNOT_THICKNESS] + " inches in diameter. With subjects prepared, you stop, leaving Katherine hovering at the edge of release.\n\n", false);
outputText("She is, however, too wound up to do anything, so you are forced to take the Reducto from her slack fingers and smear the foul-smelling gunk across her knot", false);
if(flags[KATHERINE_DICK_COUNT] > 1) {
outputText("s. She gasps and suddenly lets out a yowl, her cocks visibly spasming as her knots shrink... and then promptly begins spurting cum, which you ", false);
if(player.lib > 50) outputText("joyously attempt to catch in your mouth like rain", false);
else outputText("narrowly dodge in surprise", false);
outputText(", at the expense of dropping and spilling what's left of the salve. The hard flesh shrinks until the width has dropped by two whole inches, at which the salve's effects wear off and her climax finishes... though, given that her knots remain swollen and her cocks remain erect, you think she could probably go again.\n\n", false);
}
else {
outputText(". She gasps and suddenly lets out a yowl, her cock visibly spasming as her knot shrinks... and then promptly begins spurting cum, which you ", false);
if(player.lib > 50) outputText("joyously attempt to catch in your mouth like rain", false);
else outputText("narrowly dodge in surprise", false);
outputText(", at the expense of dropping and spilling what's left of the salve. The hard flesh shrinks until the width has dropped by two whole inches, at which the salve's effects wear off and her climax finishes... though, given that her knot remains swollen and her cock remains erect, you think she could probably go again.\n\n", false);
}
outputText("She rewards you with a glowing, orgasmic smile. \"<i>That was... incredible. Thank you so much for the present... did you want to do anything else? Maybe... have a little fun?</i>\" she asks, her voice low and husky with desire.\n\n", false);
//use 1x Reducto, reduce Kat knot size by 2, increase PC lust value, go to Kat sex menu
flags[KATHERINE_KNOT_THICKNESS] -= 2;
if(flags[KATHERINE_KNOT_THICKNESS] < 2) flags[KATHERINE_KNOT_THICKNESS] = 2;
stats(0,0,0,0,0,0,10+player.lib/20,0);
consumeItem("Reducto",1);
katSexMenu();
}
//[Cock Length] (unavailable unless Kat cocklength is >8)
function useReductoOnKatsKock():void {
outputText("", true);
outputText("With a gesture, you indicate for her to expose herself. In obedience, she begins to stroke her sheath and expose its contents, bashfully at first but with increasing vigor as her erection takes hold. Soon she's masturbating happily with her eyes closed and her head rolled back on her neck, having nearly forgotten what she was doing in the first place. You ", false);
if(player.lib > 50) outputText("allow her to continue until her scrotum tightens up and it looks like she'll blow her load with one more touch, and then ", false);
outputText("clear your throat noisily to regain her focus. Blushing red underneath her sable fur, she guiltily withdraws her hand from her shivering cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(".\n\n", false);
outputText("With a playful eyebrow, you take a knee in front of the throbbing-hard member", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" and uncap the salve. As if to tease, you dip into it and then, at a glacial pace, draw the paste closer to her shaft", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" while remarking how cold it is compared to the desert air. She quivers at the comment, setting her ", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("twin cocks", false);
else outputText("cock", false);
outputText(" to bobbing", false);
if(player.lib > 50) outputText(", then quivers again as the movement brings her a hair closer to her climax", false);
outputText(".\n\n", false);
outputText("Gingerly, you lift your unemployed hand up and tilt her puppy pecker", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" toward her face and chest; she shivers as you touch the sensitive underside", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(". As you hold her in that position, ", false);
if(player.lib > 50) outputText("staring at Katherine with a lewd smirk as she trembles and tries to maintain control, ", false);
outputText("you bring the occupied hand up and begin rubbing the paste into the shaft", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" proper with brisk up-and-down strokes.", false);
if(player.lib > 50) outputText(" Barely any time has passed before Katherine, with a husky groan of protest and acquiescence mingled, begins unloading her steamy cargo; the first squirt stains her shirt while the later and more energetic ones after it reach all the way to her neck and spatter on her chin.", false);
outputText(" Katherine trembles ", false);
if(player.lib > 50) outputText("and her orgasm continues ", false);
outputText("as you apply a goodly amount of paste, smearing it over every inch of the twitching cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" and mingling it with the copious pre-cum from her errant masturbation. Suddenly a gasp interrupts the chorus of low moans from your felid companion, as the effects begin. Her shaft", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" spasm and shrink, ", false);
if(player.lib > 50) outputText("still pushing out the aftershocks of her climax onto her belly, ", false);
outputText("ending up two inches shorter than before.\n\n", false);
outputText("\"<i>God, that was... uughh,</i>\" Katherine groans, wiping her fur. \"<i>I'm still so hard and horny, too... feels like I'll never go soft now. Do you maybe... wanna help me with that?</i>\" She turns a hopeful", false);
if(player.lib > 50) outputText(", if fatigued,", false);
outputText(" look on you.\n\n", false);
//remove 2 inches from Kat's length, use 1x Reducto, increase PC lust value, go to Kat sex menu
flags[KATHERINE_DICK_LENGTH] -= 2;
if(flags[KATHERINE_DICK_LENGTH] < 8) flags[KATHERINE_DICK_LENGTH] = 8;
stats(0,0,0,0,0,0,10+player.lib/20,0);
consumeItem("Reducto",1);
katSexMenu();
}
//[Ball Size](unavailable until Kat balls >1</i>\")
function reductoBallSize():void {
outputText("", true);
outputText("You extract the small jar of salve and offer it to her. Her face lights up in delight. \"<i>Reducto?! For me? It's so expensive!</i>\" At your nod, she yowls happily and snatches it up, yanking down her shorts to expose her sheath. All of a sudden, she stops abruptly and looks up at you, a dangerous gleam in her eye. \"<i>Would you like to... help me apply it?</i>\" she asks, softly. You nod your head", false);
if(player.lib > 50) outputText(" with a salacious grin", false);
outputText(" and she happily plunks down on a nearby crate, holding the precious jar of ointment and waiting for you to begin.\n\n", false);
outputText("With a little help from you, she wriggles out of her shorts, exposing her swollen testes. You wonder for a moment if the fur on her distended sack will interfere with the process, then decide it can't hurt to try. Uncertainly, you open the jar and begin smearing your fingers with the salve, which you then start painting across Katherine's balls. The hermaphrodite feline shivers at your touch, but bites her lip and says nothing as you massage the shrinking cream into her semen-factories, rolling the globular orbs around in the palm of your hand to ensure a thorough, even coating.\n\n", false);
outputText("You finish applying the salve and watch as they visibly shrink, contracting in on themselves until they have lost two inches in diameter. It's at that point you realise the man-meat above them is jutting straight up from her sheath, pre-cum starting to bubble from the pointy tip", false);
if(flags[KATHERINE_DICK_COUNT] > 1)
outputText(". \"<i>Uh... I think shrinking my balls put their contents under pressure. You wanna help me vent some?</i>\" she meekly suggests, coloring and biting her lip in either embarrassment or anticipation.\n\n", false);
//use 1x Reducto, reduce Kat ball size by two inches, increase PC lust by small value, go to Kat sex menu
flags[KATHERINE_BALL_SIZE] -= 2;
if(flags[KATHERINE_BALL_SIZE] < 1) flags[KATHERINE_BALL_SIZE] = 1;
stats(0,0,0,0,0,0,10+player.lib/20,0);
consumeItem("Reducto",1);
katSexMenu();
}
//Bulbous Pepper
function giveKatABulbousPepper():void {
outputText("", true);
outputText("You hold out your bulbous canine pepper and ask if she'd like to eat it.\n\n", false);
//(if Kat still has balls to go)
if(flags[KATHERINE_BALL_SIZE] < 5) {
outputText("\"<i>Oh, sure, why not? Bigger balls have got to be better, right?</i>\" she replies. Her tone is sarcastic, but she gives you a friendly wink and then takes the pepper, munching it down. With a moan and an arched back, she produces a new swell in her tight shorts as you look on, her balls visibly growing. They roughly double in size, then stop, leaving the cat herm panting. She throws you a sultry look. \"<i>So... you wanna give them a test run?</i>\" she purrs.\n\n", false);
//add 2 to Kat ball size, use 1x Bulby Pepper, Display Katherine Sex options
flags[KATHERINE_BALL_SIZE] += 2;
if(flags[KATHERINE_BALL_SIZE] > 5) flags[KATHERINE_BALL_SIZE] = 5;
stats(0,0,0,0,0,0,10+player.lib/20,0);
consumeItem("BulbyPp",1);
katSexMenu();
}
//(else If KathBallSize maxed at 5 inches)
else {
outputText("She looks at the bulbous pepper and then shakes her head. \"<i>No thank you. Any bigger and I'm going to have trouble walking, and I think I make enough of a mess now as it is. Thank you for the offer, though. Was there anything else?</i>\" she adds, trying to be diplomatic.", false);
katherineMenu();
}
}
//Double Pepper
function giveKatADoublePepper():void {
outputText("", true);
//(if Kat has only 1 cock so far)
if(flags[KATHERINE_DICK_COUNT] == 1) {
outputText("You hold out your double canine pepper and ask if she'd like to eat it.\n\n", false);
outputText("\"<i>Double your fun, huh? Okay... this is a really weird thing, but if it makes you happy,</i>\" she notes. She takes the pepper and, pausing only to slip her pants down to expose her sheath, polishes the pepper off with a smack of her lips for good measure. \"<i>Mmm... Not bad. Oh!</i>\" She gasps and then arches her back suddenly.\n\n", false);
outputText("Your gaze goes to her crotch, where her canine cock slides free with deceptive slowness, crowning itself at " + flags[KATHERINE_DICK_LENGTH] + " inches and filling its knot to " + flags[KATHERINE_BALL_SIZE] + " inches thick as the knot pops free. Then the sheath's opening stretches even wider as a second distinctive tip pops up, sliding up and out until she is sporting two bulging dog-cocks, each exactly the same size as the last. She reaches down and gently strokes one with each hand, casting you a come hither look.\n\n", false);
//set Kat cock number to 2, use 1x double pepper, Display Katherine Sex options
flags[KATHERINE_DICK_COUNT] = 2;
}
//(else if she has 2 already)
else {
outputText("Katherine looks at the twinned peppers with a puzzled expression. \"<i>Uh... you do know that it won't make me grow any more cocks, right? Two's the limit from this thing, as far as I know.</i>\"\n\n", false);
outputText("You tell her you think she could use a good meal, and you know how much she likes peppers. The cat gives you a nervous smile and accepts the double pepper. She eats it daintily, swallows, and then develops a peculiar expression. As she pants loudly, you can see her cocks starting to poke out of her pants.\n\n", false);
outputText("\"<i>Oh dear... I think that was maybe a bit too spicy. You want to help me out with this?</i>\" she purrs, already starting to stroke her twin shafts.\n\n", false);
}
stats(0,0,0,0,0,0,10+player.lib/20,0);
consumeItem("DblPepp",1);
katSexMenu();
}
//Overly Large Pepper
function giveKatAOverlyLargePepper():void {
outputText("", true);
//(if Kat is not yet capped on size at 16 inches)
if(flags[KATHERINE_DICK_LENGTH] < 16) {
outputText("You ask if Katherine would really like to make her cock bigger, holding up the overly large canine pepper from your inventory.\n\n", false);
outputText("\"<i>Yes! Please!</i>\" she says, clearly excited. She snatches it from your hands and wolfs it down noisily, licking her fingers and then pulling her pants down with obvious excitement. Her cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" immediately thrust", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("s", false);
outputText(" from her sheath, growing to full size and then a full two inches further before stopping. She moans softly, licks her lips and smiles at you. \"<i>Care to have a test run? Be a shame to let the chance go to waste...</i>\" she purrs.\n\n", false);
//use 1x large pepper, increase Kat length by 2, Display Katherine Sex options
stats(0,0,0,0,0,0,10+player.lib/20,0);
flags[KATHERINE_DICK_LENGTH] += 2;
consumeItem("LargePp",1);
katSexMenu();
}
//else if capped)
else {
outputText("She looks at the pepper eagerly, then visibly reins herself in. \"<i>I'm sorry... I really would like to eat it, but I have to be practical. I'm nearly a foot and a half long already! Momma didn't raise me to be a size queen, and if I get much longer I'll be like that poor sap who leads the guard - can't get a date because there's nobody big enough for me to stick my cock in,</i>\" she declares, crossing her arms and looking firm.\n\n", false);
outputText("\"<i>Though if you have anything else you're thinking of giving, I'm sure we can salvage the gesture. Otherwise, thank you for thinking of me,</i>\" she adds, quickly trying to make nice with you.", false);
//return to main Kat menu
katherineMenu();
}
}
//Sex
function katherineSex():void {
outputText("", true);
outputText("You ask Katherine if she feels in the mood to have sex.\n\n", false);
outputText("The cat herm is visibly startled by your directness, then rallies and gives you an ear-to-ear grin. \"<i>Mmm... am I ever... Any particular preference?</i>\" she asks, swishing her tail languidly from side to side.\n\n", false);
katSexMenu();
}
function katSexMenu():void {
//[Penetrate] [Get Penetrated] [Oral] [Double Helix] [Suckle]
var penetrate:Number = 0;
var getPen:Number = 0;
var helix:Number = 0;
var suckle:Number = 0;
if(player.lust >= 33) {
if(player.hasCock()) {
if(player.cockThatFits(70) >= 0) penetrate = 3337;
}
getPen = 3343;
if(player.hasCock() && player.hasVagina() && player.cockThatFits(70) >= 0) helix = 3353;
}
if(player.lactationQ() > 0 && player.biggestLactation() >= 1 && player.biggestTitSize() >= 1)
suckle = 3354;
simpleChoices("Penetration",penetrate,"GetPenetrated",getPen,"Oral",3348,"DoubleHelix",helix,"Suckle",suckle);
}
//Penetrate
function katPenetrate():void {
outputText("", true);
outputText("You suggest that maybe you could try penetrating one of Katherine's holes. Without further ado, she strips herself off until she's wearing nothing but a lecherous grin. She then turns around and leans on a crate, waving her tail to freely show off both her tailhole and her already-dripping cunt above her dangling balls. \"<i>So, come on in,</i>\" she purrs.\n\n", false);
//[Vagina] [Anus] [Both(not yet implemented)] [Suck 'n' Fuck]
var vagina:int = 3340;
var anus:int = 3341;
var sucknFucks:int = 0;
if(flags[KATHERINE_KNOT_THICKNESS] <= 4) sucknFucks = 3342;
simpleChoices("Vagina",vagina,"Anus",anus,"",0,"SucknFuck",sucknFucks,"",0);
}
//PC Penetrates Kath: Vaginal (doin' a cat doggy-style)
function penetrateKatsVag():void {
var x:Number = player.cockThatFits(70);
outputText("", true);
outputText("You don't even need to think about it. Your eyes are locked on the cat-herm's silken, sopping wet pussycat pussy, which is already dribbling femlube down her ", false);
outputText(katBalls() + " scrotum and puddling it onto the ground in anticipation. Slipping off your garments, you saunter forward and gently stroke her damp lips, stage-whispering to her that it seems an obvious choice which hole you should take. Katherine gives a playful giggle, a mewl of arousal, and repositions herself so that it's easier for her to support the two of you.\n\n", false);
outputText("As soon as she's ready, you waste no time in sliding your " + cockDescript(x) + " home, causing her to yowl in delight at being filled. Her slippery walls, soft and slick like greased velvet, seem to ripple as if to purposefully swallow your cock, seemingly eager to have you bury yourself to the hilt. Sopping wet as they are they pose no resistance, allowing you to glide in smooth as butter, yet they grip you and try in vain to hold you in. Your thrusts and surges elicit the lewdest squelches and slurps, her slobbering cunny drooling all over your shaft and ", false);
if(player.balls > 0) outputText("both sets of ", false);
else outputText("her ", false);
outputText("balls.\n\n", false);
outputText("\"<i>Oh, yeah! Yes - AH! It feels so good!</i>\" Katherine yowls mindlessly, babbling in her delight at your penetrations. You, for your part, just grab her silken fur, hold onto her narrow hips and keep on thrusting. While you may have started out firmly in charge, as the pace picks up the cat-herm is the one to take the lead; she pushes back against you, bucking and thrashing so wildly you find yourself having to hang on for dear life as she fucks you senseless. If it weren't for how wet she is, she'd be rubbing your cock raw from friction and the vice-like grip around your shaft. You can just make out the way her cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" flail", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("s", false);
outputText(" around, stiff as iron with knot", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" swollen to full size - she can't be much further from climax...\n\n", false);
outputText("And, indeed, she's not. Arching her back in a way that would break a human spine, she lets out an ear splitting scream of ecstasy, making you unconsciously recall nights of being woken up by courting cats back in Ingnam. Cum gushes like a river from her cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" and her cunny floods over with femspray, splattering you and soaking the ground and everything from your waist down. As if signalled by her orgasm, your own climax seizes you by surprise. ", false);
if(player.hasVagina()) outputText("Your " + vaginaDescript() + " releases its own girl-cum in sympathy, even as y", false);
else outputText("Y", false);
outputText("our cock discharges into her depths, flooding her inviting nethers with your spunk, her pussy-lips drinking every last drop you have to give with insatiable greed.", false);
if(player.cumQ() >= 1500) outputText(" Her belly puffs up and out, swelling like an advancing pregnancy with insatiable speed, until finally you have finished, leaving her with a barrel-sized balloon of a gut, cum audibly sloshing inside her as her motions churn the liquid.", false);
outputText(" Gasping, having spent yourself, you pull out, letting her nethers drool their sexual fluids onto the ground undisturbed.\n\n", false);
outputText("Katherine sprawls against the barrel, flicking her tail lazily and purring loudly. \"<i>Mmm... you have no idea how good you are, lover,</i>\" she tells you, before patting her belly and giggling softly. \"<i>I'm not saying I want to be a mom just yet", false);
if(player.cumQ() >= 1500) outputText(" - though, honestly, you may not give me much of a choice - ", false);
outputText(" but I think your little boys and girls and herms will make people very, very happy when they come of age.</i>\"\n\n", false);
outputText("With a smile, you scratch her behind the ears in a way that the cats in your village loved, enjoy her contented purr, clean yourself off with some old rags that the cat laid aside, and then politely say goodbye, redressing yourself and heading back out in Tel'Adre.\n\n", false);
//lust -100, Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
stats(0,0,0,0,0,-1,-100,0);
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//PC Penetrates Kath: Anal
function pcPenetratesKatAnally():void {
outputText("", true);
var x:Number = player.cockThatFits(70);
outputText("Thinking it over, your gaze falls upon the cat's ebony pucker, and you smile to yourself before telling Katherine that you want a shot at her back door. Her eyes widen and she swallows hard, then she nods. \"<i>O-Okay... if you're into that sort of thing...</i>\"\n\n", false);
outputText("She turns her head back and around and repositions herself so that she's properly supporting herself on the crate, timidly waiting for your approach. Confidently you saunter up behind her, taking the opportunity to appraise your partner. It's true that she's nothing to write home about in terms of ass size or perkiness, but her lean butt is solidly muscled and covered in surprisingly luxurious-looking fur considering her probably-irregular diet, and you take this opportunity to run your hands appreciatively through the soft hair. She coos and wriggles in delight, drawing your attention back to the matter at hand. Katherine's vagina is already drooling in anticipation, despite her nervousness, and it's a simple matter for you to expose yourself and gather up some of her juices in the palm of your hand. You painstakingly rub the juices into your " + cockDescript(x) + ", bringing it to full mast even as you get it nice and slick. Then, you start massaging what's left of your handful of girl-lube into Katherine's tight asshole, making her squeak and moan as you get her wet. Finally, you ask if she's ready.\n\n", false);
outputText("\"<i>I-I am!</i>\" She insists, visibly trying to relax. \"<i>Just... j-jam it in!</i>\"\n\n", false);
outputText("No further encouragement needed, you press forward and begin sinking yourself into her tight black tailhole. She moans like a virgin, her " + katCock() + " dog-cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" visibly jolting and her empty kitty-cunt clenching in sympathy as you slide yourself in. Her anal walls lock around you like a vice of heated silk, gripping you and squeezing as if already trying to wring every last drop of cum out of you. But you forge on, sliding inch after inch into her bowels until you can slide no more. Then, slowly, you try to extract yourself - fighting every inch of the way, as her virgin-tight ass tries to suck you back. Finally drawing most of what you put inside, you slide yourself home again, slamming harder and faster into her hips, then pulling out, repeating this over and over.\n\n", false);
outputText("The herm cat gasps and moans, thrusting her sparsely-fleshed ass back to try and meet your hips as you continue to push, her inner walls milking and squeezing. \"<i>Ah! Do you - oh! - know what the - yeah, yeah, fuck me like that, fuck me there! - advantage of a herm - yesyesyes! - girlfriend is, " + player.short + "?</i>\" she manages to gasp out.\n\n", false);
outputText("You grunt and hiss as you abuse her insides, but manage to spare the breath to admit you don't.\n\n", false);
outputText("\"<i>The advantage is - oh! ah! - I've got both sets of bits, so - ah! ah! AH! - it's good for me, like it'd be good for a guy!</i>\" She lets out an excited yowl of bliss as you thrust particularly hard. \"<i>Ohh... You're squeezing my prostate, rubbing all the parts in my ass that make my cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" jump, it's so good back there... so hard, so hot! Fuck me, fuck me like an animal!</i>\" she screams, starting to jerk her own hips, knot-swollen cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" spewing pre-cum as she mock-humps the air. She's gonna blow any second now...\n\n", false);
outputText("But you beat her to the punch and, with a howl of your own, you cum inside her, flooding her bowels with your spunk", false);
if(player.cumQ() >= 500) outputText(" until her belly begins to bulge from all you've dumped in her", false);
if(player.cumQ() >= 1500) outputText(", swelling out and out until she looks like she could give birth soon and a part of you wonders if maybe she's going to start spouting your cum from her mouth", false);
outputText(". In the midst of your orgasm, her own yowling cry goes unnoticed as her cunt spasms, raining femcum down onto the ground below and her ", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("cocks spray", false);
else outputText("cock sprays", false);
outputText(" cum all along the crate and ground. Finally, you are spent, and pull yourself wetly from your gasping lover's ass.\n\n", false);
outputText("She slinks bonelessly to the ground, still quivering from the afterglow, then smiles dreamily up at you", false);
if(player.cumQ() >= 1500) outputText(", absently cradling her distended belly", false);
outputText(". \"<i>What a fuck... can't say I don't prefer it in my pussy, but I'll always be up for another go if you want.</i>\"", false);
if(player.cumQ() >= 1500) outputText(" She looks at her gut and shakes her head in disbelief. \"<i>Sheesh... if they ever figure out a way to let folks get pregnant by taking it up the ass, you're gonna knock up every damn person you meet, aren't you, stud?</i>\"", false);
outputText("\n\n", false);
outputText("With a smirk at her flattery, you give her a hand getting dressed, then dress yourself and head back out into the street.", false);
//lust -100, Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
stats(0,0,0,0,0,-1,-100,0);
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//Suck 'n' Fuck (unavailable if knot > 4</i>\")
function suckNFuck():void {
var x:Number = player.cockThatFits(70);
outputText("", true);
outputText("You think it over, then find your gaze drifting to Katherine's sheath and the canine cockflesh within. Recalling how you helped the poor herm shrink down her monster knot", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(", and remembering the flexibility of the cats you've seen, you find a very kinky idea coming to you. You ask Katherine if she'd be willing to try a suck 'n' fuck.\n\n", false);
outputText("\"<i>Excuse me?</i>\" she asks, raising an eyebrow. You quickly explain the idea: that you penetrate her vagina at the same time that she performs oral sex on her cock, at which her eyes light up. \"<i>Sounds kinky - but also genius! Sure, I'm game.</i>\" She smiles, and turns around so that she is sitting on the crate instead of leaning on it.\n\n", false);
outputText("Still smiling, she begins to gently stroke her sheath, balls and pussy, coaxing out her dog cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(". Making sure she's positioned so that she's not going to tumble off in mid-fuck, she takes hold of her thighs and bends over... and over... until she has practically pressed her nose into her own crotch.", false);
if(player.hasPerk("Flexibility") < 0) outputText(" The sight is enough to make your spine wince in sympathy.", false);
//(player has Feline Flexibility:
else outputText(" You watch how she does it, resolving to test your body and see if you can bend like that.", false);
outputText(" Having loosened up, she straightens her back until her mouth is hovering in front of the tip of her ", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("topmost ", false);
outputText("dog cock. Her cat-like tongue, long and flat and bristly looking, reaches out to stroke the rubbery, conical tip, slurping around it and getting it nice and slick. Then, she opens her mouth and starts bending forward again, gulping down all " + flags[KATHERINE_DICK_LENGTH] + " inches of dog cock until she reaches the knot. A moment's hesitation, to muster her courage, and then she engulfs it as well, pressing her nose flat against her own ballsack.\n\n", false);
outputText("This is your moment, and you step forward, gently but firmly taking hold of her thighs, positioning your " + cockDescript(x) + " against her slavering cunt. Certain you are in position, you glide it home. She shudders and audibly slurps on her cock as you sheathe yourself in her slick, velvety, burning hot nether lips. You pull back and thrust home again, even as she begins to bob her head.\n\n", false);
outputText("It is awkward, at first, the two of you trying to set up mutually complementary rhythms. She hums and rumbles in her throat, striving to coax the most pleasure from her male genitalia, even as your thrusts and bucks make her cunt slurp and squelch, her copious lubricants slopping across your dick", false);
if(player.balls > 0) outputText(", your balls,", false);
outputText(" and your inner thighs. But, as you keep going, you get into the rhythm and it becomes more pleasurable.\n\n", false);
outputText("It's impossible to describe just how kinky this is; her hot, wet walls wrapped like a silken vise around your cock, her head bobbing and gurgling on her own right in front of you", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", and her lower shaft waving in the air between you as if to conduct the performance", false);
outputText(". You thrust into her harder and harder; you can feel your climax coming... but she's the one who comes first. With a muffled yowl, she squirts femcum from her cunt, splattering your belly in her juices. The cry is cut off and her lips and cheeks visibly bulge as her knot suddenly inflates, trapping her cock in her own mouth and forcing her to drink every last drop as her balls release their cargo into her. ", false);
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText("She gulps several times, loudly drinking until her balls are empty, but even so she remains locked in place, her knot trapping her until she's fully climaxed.", false);
else if(flags[KATHERINE_BALL_SIZE] <= 3) outputText("She has to drink quickly to avoid choking on her own copious discharge, but finally, belly beginning to bulge, she's drunk it all.", false);
else outputText("With a frantic look she swallows and swallows, and you can't help the frightening thought she may drown in her own spunk. But, as her belly swells and she looks verifiably pregnant, her balls stop trembling and she's done, panting and taking deep, grateful breathes through her nose.", false);
outputText("\n\n", false);
outputText("And now, at last, it's your turn to cum, and with a loud moan you release into her. ", false);
if(player.cumQ() <= 250) outputText("You spray everything you have into her sloppy, sopping-wet cunt, allowing it to join the other fluids already dripping from her gash.", false);
//Moderate Cum + 1</i>\" katballs:
else if(player.cumQ() <= 750) {
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText(" Her belly bulges as you flood her womb with your sperm, visibly distended from your efforts.", false);
else outputText(" She looks heavily pregnant by the time you are done, her bellybutton beginning to brush against her chin.", false);
}
else {
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText(" Your unnatural orgasm leaves her visibly bloated and distended, stomach swollen and round in the curve of her body.", false);
else outputText(" The cat herm looks panicked as you just keep pouring jet after jet into her body, her womb swelling and her skin already distended from her own massive discharge into her stomach. Her belly swells out and out until it is visibly pushing against her neck and upper torso, her own body forming an impenetrable barrier that leaves it with nowhere to expand to, the pressure making your cum squirt out in jets that splatter all over the alley.", false);
}
outputText("\n\n", false);
outputText("Your climax finished, you pull out", false);
if(player.cumQ() > 250) outputText(", allowing a cascade of jism to flow like a perverse waterfall in miniature from her cunt,", false);
outputText(" and step back to catch your breath. Your smile at her, initially one of pleased relief, turns to wry grin as you realise she's still knotted up and plugged inside her own mouth. She looks at you as best she can and blinks. With a gentle expression you step close and reach out to stroke her ears; nothing sexual, just gentle and relaxing. She closes her eyes and visibly leans into the caresses.\n\n", false);
outputText("You stay like that until her knot shrinks down and, with a wet popping sound, she uncurls herself. \"<i>Boy, that was really something,</i>\" she declares in an amazed tone", false);
if(player.cumQ() > 250) {
outputText(", slapping her ", false);
if(player.cumQ() > 750) outputText("hugely ", false);
outputText("swollen, cum-filled gut for emphasis", false);
}
outputText(". \"<i>I'm ready to try that again if ever you are.</i>\"\n\n", false);
outputText("You promise her you'll remember that. Redressed, you bid her farewell and head back out into the streets of Tel'Adre.\n\n", false);
//lust -100, Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
stats(0,0,0,0,0,-1,-100,0);
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//Get Penetrated
function letKatKnotYou():void {
var x:Number = player.biggestCockIndex();
outputText("", true);
outputText("You ask Katherine if she'd like to penetrate you. She looks startled, then grins like the proverbial cat that ate the canary. \"<i>Well, all right then...</i>\" she declares, swiftly stripping off her clothes. \"<i>Get undressed, turn around and kneel on the ground.</i>\" Her canine cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s are", false);
else outputText(" is", false);
outputText(" already starting to peek out of her sheath, as if to echo her instructions.\n\n", false);
outputText("You do as you are told, but you can't resist teasing her about wanting 'doggy-style' sex.\n\n", false);
outputText("The mismatched herm steps up behind you and gives you a playful slap on your " + buttDescript() + ". \"<i>Well, I've got dog dick", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(", so I'm just doing it the way nature intended,</i>\" she cracks.", false);
//(if player has anus & vagina:
if(player.hasVagina()) outputText(" \"<i>So, which hole do you want me to use?</b>\"", false);
//[Vagina] [Anus] [Double Penetrate] [Sucked 'n' Fucked]
var dubs:Number = 0;
if(flags[KATHERINE_DICK_COUNT] > 1 && player.hasVagina()) dubs = 3346;
var sukn:Number = 0;
var vag:Number = 0;
if(player.hasVagina()) vag = 3344;
//This scene requires the PC has a penis and has fucked Kat at least once since moving her
if(player.hasCock() && flags[KATHERINE_TIMES_SEXED] > 0) sukn = 3347;
simpleChoices("Vagina",vag,"Anus",3345,"DblPenetr",dubs,"SuckNFuckd",sukn,"",0);
}
//Get Penetrated (Vaginal)
function letKatKnotYourCuntPussyFuck():void {
var x:Number = player.biggestCockIndex();
outputText("", true);
outputText("You indicate to Katherine that you want it in your " + vaginaDescript() + ".\n\n", false);
outputText("Her furry hands promptly begin to rub possessively over your " + assDescript() + ", slowly moving up to take hold of your " + hipDescript() + ". \"<i>Well, all right... if that's what you want...</i>\" You feel her running ", false);
if(flags[KATHERINE_DICK_COUNT] == 1) outputText("her", false);
else outputText("the topmost", false);
outputText(" " + flags[KATHERINE_DICK_LENGTH] + "\" cock against your sensitive pussy lips, letting you feel its rubbery-smooth length, then, drawing back her hips, she suddenly thrusts it home without any hesitation.", false);
if(flags[KATHERINE_DICK_COUNT] > 1) {
outputText(" Her second cock slaps lewdly against your ", false);
if(player.hasCock()) outputText(multiCockDescriptLight(), false);
else if(player.balls > 0) outputText(sackDescript(), false);
else outputText("belly", false);
outputText(".", false);
}
var cunt:Number = player.vaginas[0].vaginalLooseness;
//(hymen check and stretching)
cuntChange(2 * flags[KATHERINE_DICK_LENGTH],true,true,false);
outputText("\n\n", false);
if(cunt < player.vaginas[0].vaginalLooseness) {
outputText("You can't help but yelp in shock and look back over your shoulder at Katherine, who has the grace to appear apologetic. \"<i>Sorry! But I need to penetrate fast - or would you rather wait until my knot's fully swollen?</i>\" You concede she has a point, but ask her to remember to be more gentle next time.\n\n", false);
}
outputText("Fingers digging into your hips, she begins to thrust back and forth inside of you", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", her second cock still slapping wetly against you and smearing trickles of pre-cum that stretch and dangle as it bounces", false);
outputText(". She grunts and groans. \"<i>Oh- Oh yeah, you're unbelievable!", false);
if(player.harpyScore() >= 4 || player.sharkScore() >= 4 || player.catScore() >=4 || player.dogScore() >= 4 || player.bunnyScore() >= 4) outputText(" Mmm... yeah, that's it, moan for me, you little slut; who's the alpha, huh? Katherine's your alpha - go on, say it!</i>\" she yells, pounding herself into you with greater force, her claws extending just far enough to begin biting into your flesh, pinpricks of pain to counter the pleasure.", false);
else outputText("</i>\"", false);
outputText("\n\n", false);
outputText("You moan and gasp, thrusting your ass back into your feline lover's midriff to facilitate your fucking", false);
if(player.isNaga() || player.tailType == 9 || player.tailType == 3) outputText(", snaking your tail up between her breasts and playfully stroking her cheek,", false);
outputText(" and crying out her name. You can feel her knot starting to swell inside you even as she picks up the pace with which she hammers into you.\n\n", false);
outputText("\"<i>Ohhh! Gonna plug you up; fill you fulla kitty-cat spunk!</i>\" Katherine moans, her knot growing to its maximum size inside of you, anchoring you together so that she can no longer pull out.", false);
//(stretch check again)
cunt = player.vaginas[0].vaginalLooseness;
cuntChange(2 * flags[KATHERINE_DICK_LENGTH],true,true,false);
outputText(" She lunges forward and grabs your shoulders, trying to push her way in deeper.", false);
//(if stretched:
if(cunt < player.vaginas[0].vaginalLooseness) outputText(" The amount of swollen cockmeat she's stuffing inside you is on the border of being painful, but mostly it's pleasure that fills you.", false);
else outputText(" Thanks to the glovelike fit your pussy has on her knot, it feels nothing but good to be plugged up like this.", false);
outputText("\n\n", false);
outputText("You shudder and gasp as your own climax suddenly rocks through you", false);
if(player.hasVagina()) outputText(", femcum splashing from your " + vaginaDescript(), false);
if(player.hasCock()) {
outputText(" and your cocks spurting ", false);
if(player.cumQ() < 25) outputText("drops", false);
else if(player.cumQ() < 100) outputText("splashes", false);
else if(player.cumQ() < 250) outputText("puddles", false);
else outputText("a veritable lake of spunk into the alleyway", false);
}
outputText(".\n\n", false);
outputText("She suddenly arches her back and lets out a yowl of pleasure as her orgasm follows, rippling through her; she cums, groaning, inside you", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", with more spurting from her second cock to glaze your belly and the ground below", false);
outputText(". ", false);
//(1" balls:
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText("She makes a surprisingly large amount of cum for such small balls, and you can feel it sloshing and slurping inside you, leaving you deliciously full of cat-cream.", false);
//(3" balls:
else if(flags[KATHERINE_BALL_SIZE] <= 3) outputText("Jet after jet of cum sprays inside you, flooding all the way up into your womb; by the time the dog-dicked cat stops, your belly is starting to bulge from all she's given you.", false);
//(5" balls:
else {
outputText("She cums and she cums and she cums; how can she hold this much spooge inside her balls? Your womb is flooded until by the time she finishes, you look certifiably pregnant and ", false);
//[6" knot:
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("only her huge knot is keeping everything plugged inside you.", false);
else outputText("some of it actually starts leaking out around her knot.", false);
}
outputText(" Her load spent, she collapses bonelessly onto her back - thanks to her knot, though, she remains plugged inside you and you yelp in shock as her weight pulls you backward.\n\n", false);
outputText("\"<i>Oops. Sorry,</i>\" Katherine apologises. ", false);
//(6" knot:
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("\"<i>I'm afraid we're going to have to stay like this until I deflate - I don't want to think about how badly I'd hurt you trying to pull free.", false);
//(4" knot:
else if(flags[KATHERINE_KNOT_THICKNESS] >= 4) outputText("\"<i>Give me a little while and I should deflate enough that I can pull free of you.", false);
else outputText("\"<i>If you pull hard enough, I should pop right out of you.", false);
outputText("</i>\"\n\n", false);
//[(PC is very loose)
if(player.vaginalCapacity() >= 100) outputText("Nonplussed by the idea of waiting naked and penetrated in a back alley, and eager to see the look on Katherine's face, you pull apart anyway; your thoroughly stretched-out pussy relinquishes the knot with no more than a long sucking noise. Free of her, you look back over your shoulder. As you guessed, Katherine is sitting there wordlessly with her mouth open, staring alternately at the abused, cum-drooling lips of your pussy and at the enormous mass of flesh you just managed to pass through it.", false);
else outputText("You tell her that it's all right; you'll stay here with her until nature takes its course. Even though you can't really see her, given your respective positions, you know she's smiling.", false);
outputText("\n\n", false);
if(player.vaginalCapacity() < 100) outputText("About an hour later, she's deflated and y", false);
else outputText("Y", false);
outputText("ou get dressed, thank her, and head back to your camp.", false);
//minus lust, slimefeed, Player returns to camp
stats(0,0,0,0,0,-1,-100,0);
slimeFeed();
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//Get Penetrated (Anal)
function getPenetrated():void {
var x:Number = player.biggestCockIndex();
outputText("", true);
outputText("You indicate to Katherine that you want it in your " + assholeDescript() + ".\n\n", false);
outputText("\"<i>Well, I can't say I'm a big fan of the idea, but okay...</i>\" Her furry hands promptly begin to rub possessively over your " + buttDescript() + ", slowly moving up to take hold of your " + hipDescript() + ". \"<i>... if that's what you want.</i>\" You feel her rubbing her ", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("bottom-most ", false);
outputText("cock against your anus, letting your cheeks feel its rubbery-smooth length, then, drawing back her hips, she suddenly thrusts it between them without any hesitation", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", as her upper cock bounces along your back", false);
outputText(".\n\n", false);
outputText("\"<i>Gonna - mmm - need just a bit of lube here...</i>\" she mumbles, dragging her cock");
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s");
outputText(" between your buttcheeks. As she says it, her body matches deed to her word and the puppy pecker begins drooling a slick, warm fluid into your asscrack", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", as well as onto the cheeks, with the other bouncing around above them", false);
outputText(". With soft hands, she rubs the goo into your pucker and all over her pointed shaft, then a void of sensation as she pulls it from your asscheeks. Before you can react, she pushes them open again and rams her cock into your anus!", false);
//(butt hymen check + stretch check)
var butts:Number = player.ass.analLooseness;
buttChange(flags[KATHERINE_DICK_LENGTH] * 2,true,true,false);
outputText("\n\n", false);
if(butts > player.ass.analLooseness) outputText("You can't help but yelp in shock and look back over your shoulder at Katherine, who appears genuinely apologetic. \"<i>Sorry! But I need to penetrate sooner rather than later - or would you rather wait until my knot's fully swollen?</i>\" You concede she has a point, but beg her to be more gentle if there's a next time.\n\n", false);
outputText("Fingers digging into your hips, she begins to thrust back and forth inside you", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", her secondary cock slapping wetly against your back", false);
outputText(". She grunts and groans, \"<i>Oh- Oh yeah, you're unbelievable!", false);
//[(player has high harpy/shark/cat/dog/bunny score)
if(player.harpyScore() >= 4 || player.sharkScore() >= 4 || player.catScore() >=4 || player.dogScore() >= 4 || player.bunnyScore() >= 4)
outputText(" Mmm... yeah, that's it, moan for me, you little slut; who's the alpha bitch, huh? Katherine's your alpha - go on, say it!</i>\" She yells out, pounding herself into you with greater force and her claws extend just far enough to begin biting into your flesh, pinpricks of pain to counter the pleasure.\n\n", false);
else outputText("</i>\"\n\n", false);
outputText("You moan and gasp, thrusting your ass back into your feline lover's midriff to facilitate your fucking", false);
if(player.isNaga() || player.tailType == 9 || player.tailType == 3) {
outputText(", snaking your tail up between her breasts and playfully stroking her cheek,", false);
}
outputText(" and crying out her name. You can feel her knot starting to swell inside you even as she picks up the pace with which she hammers into you.\n\n", false);
outputText("\"<i>Ohhh! Gonna plug you up; fill you fulla kitty-cat spunk!</i>\" Katherine moans, her knot filling to its maximum size inside of you, anchoring you together so that she can no longer pull out. She lunges forward and grabs your shoulders, trying to push her way in deeper.", false);
//(6" knot:
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText(" It feels like she's trying to shove a melon inside you; and you cry out in equal parts pain and pleasure at being stuffed so full.", false);
else if(flags[KATHERINE_KNOT_THICKNESS] >= 4) outputText(" The amount of swollen cockmeat she's stuffing inside you is on the border of being painful, but mostly it's sheer pleasure that fills you.", false);
else outputText(" Thanks to her relatively normal-sized knot, it feels nothing but good to be plugged up like this.", false);
outputText("\n\n", false);
outputText("You shudder and gasp as your own climax suddenly rocks through you", false);
if(player.hasVagina()) {
outputText(", femcum splashing from your " + vaginaDescript(), false);
if(player.hasCock()) outputText(" and ", false);
}
if(player.cockTotal() > 0) {
if(!player.hasVagina()) outputText(", ", false);
outputText(sMultiCockDesc() + " spurting ", false);
if(player.cumQ() < 25) outputText("drops", false);
else if(player.cumQ() < 100) outputText("splashes", false);
else if(player.cumQ() < 250) outputText("puddles", false);
else outputText("a veritable lake of spunk into the alleyway", false);
}
outputText(" as your asshole wrings the invader.\n\n", false);
outputText("She suddenly arches her back and lets out a yowl of pleasure as her orgasm follows, rippling through her; she cums, groaning, inside you", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText(", with more spurting from her second cock to glaze your back and drool off onto the ground below you", false);
outputText(". ", false);
//(1" balls:
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText("She makes a surprisingly large amount of cum for such small balls, and you can feel it sloshing and slurping inside you, leaving you deliciously full of cat-cream.", false);
//(3" balls:
else if(flags[KATHERINE_BALL_SIZE] <= 3) outputText("Jet after jet of cum sprays inside you, flooding all the way up into your bowels; by the time the dog-dicked cat stops, your belly is starting to bulge from all the cum she's given you.", false);
//(5" balls:
else {
outputText("She cums and she cums and she cums; how can she hold this much spooge inside her balls? Your stomach is flooded with cum until, by the time she finishes, you look certifiably pregnant and ", false);
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("only her huge knot is keeping everything plugged inside you", false);
else outputText("some of it actually starts leaking out around her knot", false);
outputText("; you stifle a belch and taste her salty, spunk on the back of your tongue", false);
}
outputText(". Her load spent, she collapses bonelessly onto her back - thanks to her knot, though, she remains plugged inside you and you yelp in shock as her weight pulls you backward.\n\n", false);
outputText("\"<i>Oops. Sorry,</i>\" Katherine apologises. ", false);
//(6" knot:
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("\"<i>I'm afraid we're going to have to stay like this until I deflate - I don't want to think about how badly I'd hurt you trying to pull free.", false);
//(4" knot:
else if(flags[KATHERINE_KNOT_THICKNESS] >= 4) outputText("\"<i>Give me a little while and I should deflate enough that I can pull free of you.", false);
else outputText("\"<i>If you pull hard enough, I should pop right out of you.", false);
outputText("</i>\"\n\n", false);
outputText("You tell her that it's all right; you'll stay here with her until nature takes its course. Even though you can't really see her, given your respective positions, you know she's smiling.\n\n", false);
outputText("About an hour later, she's deflated and you are able to get dressed, thank her, and head back to your camp.", false);
//minus lust, slimefeed, Player returns to camp
stats(0,0,0,0,0,-1,-100,0);
slimeFeed();
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//Get Penetrated (Double)
function getDoublePennedByKat():void {
var x:Number = player.biggestCockIndex();
outputText("", true);
outputText("You indicate to Katherine that you want it in both holes.\n\n", false);
outputText("She starts in shock at the proposal, then slowly, she nods her head. \"<i>All right... if that's what you want.</i>\" Despite her tone, her furry hands promptly begin to rub possessively over your " + assDescript() + ", slowly moving up to take hold of your " + hipDescript() + ". \"<i>Hmm... this is so kinky, but I think it just might work...</i>\" She murmurs, mostly to herself, and you feel her running her " + katCock() + " cocks against your sensitive pussy lips and your tingling anus, letting you feel their rubbery-smooth length, then, drawing back her hips, she suddenly thrusts the bottom one home without any hesitation. The other slides along your asscrack harmlessly.", false);
cuntChange(flags[KATHERINE_DICK_LENGTH] * 2, true, true, false);
//[check vag hymen and stretch it]
outputText("\n\n", false);
outputText("You can't help but look back over your shoulder at Katherine, who appears rapt with concentration. \"<i>Sorry! But this will be tricky... I need to penetrate fast, but I need some lube, too - unless you want to try and take my knot completely dry!</i>\" She looks down and pushes the upper shaft between your buttcheeks.\n\n", false);
outputText("Fingers digging into your hips, she begins to thrust back and forth inside of you, dragging one shaft through your pussy and the other through your cheeks. \"<i>Mmm, you're so good... I could come from this alone,</i>\" she moans. As if to echo the sentiment, a slow stream of pre-cum infiltrates your asscrack. \"<i>Ahh, here it comes...</i>\" She pulls her shafts out just as you feel a minute stiffening of the knots at their bases, and you can hear her smearing her pre-cum", false);
if(player.hasVagina()) outputText(" and your copious girl-lube", false);
outputText(" along her lengths. Your " + assholeDescript() + " does not go neglected either; after she's done rubbing herself to slickness, a palmful of warm gooeyness is pushed into it. She must already be drooling a huge amount if she's got this much to donate! Almost on cue, she confirms your hunch with a moan. \"<i>Ahhh, gotta put it in now! I can't hold back anymore, I'm sorry!</i>\" A hot pressure on both holes is the only warning you get before her twin talents are forced into you, sliding easily into your already wet vagina and pushing past your ring by virtue of the tapered shape and the slickness.", false);
buttChange(flags[KATHERINE_DICK_LENGTH] * 2, true, true, false);
outputText("\n\n", false);
outputText("She begins thrusting at once, grunting and groaning as if she were already near her peak. \"<i>Oh- Oh yeah, you're unbelievable! It's so weird, I'm fucking two holes at once, but it's so good!</i>\" she cries out. Her usually firm grip is shaky and unreliable, further evidence of the trouble she's having in controlling her climax.\n\n", false);
outputText("You thrust your ass back toward your feline lover's midriff with an unseen, malicious smile, intent on forcing her to finish shamefully quickly, and cry out her name in your best bedroom voice. You can feel her knot starting to swell inside you even as she picks up the pace she hammers into you.\n\n", false);
outputText("\"<i>Ohhh! G-gonna plug you up; fill you fu-full...!</i>\" Katherine moans distractedly, her knots filling to their maximum size inside of you and anchoring you together so that she can no longer pull out. She lunges forward and grabs at your shoulders to push her way in deeper, but slips off weakly as her orgasm arrives.\n\n", false);
outputText("She suddenly arches her back and lets out a yowl of pleasure as it ripples through her and she cums inside you. ", false);
//(1" balls:
if(flags[KATHERINE_BALL_SIZE] <= 1) outputText("She makes a surprisingly large amount of cum for such small balls, and you can feel it sloshing and slurping inside you, leaving you deliciously full of cat-cream.", false);
else if(flags[KATHERINE_BALL_SIZE] <= 3) outputText("Jet after jet of cum sprays inside you, flooding all the way up into your womb and bowels; by the time the dog-dicked cat stops, your belly is starting to bulge from all the cum she's given you.", false);
else {
outputText("She cums and she cums and she cums; how can she hold this much spooge inside her balls? Your womb and your stomach are flooded with cum until, by the time she finishes, you look certifiably pregnant and ", false);
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("only her huge knots are keeping everything plugged inside you.", false);
else outputText("some of it actually starts leaking out around her knots.", false);
}
outputText(" Her load spent, she collapses bonelessly onto her back - thanks to her knot, though, she remains plugged inside you and you yelp in shock as her weight pulls you backward until you're sitting on her.\n\n", false);
outputText("\"<i>Oops. Sorry,</i>\" Katherine apologises. ", false);
//(6" knot:
if(flags[KATHERINE_KNOT_THICKNESS] >= 6) outputText("\"<i>I'm afraid we're going to have to stay like this until I deflate - I don't want to think about how badly I'd hurt you trying to pull free.", false);
//(4" knot:
else if(flags[KATHERINE_KNOT_THICKNESS] >= 4) outputText("\"<i>Give me a little while and I should deflate enough that I can pull free of you.", false);
else outputText("\"<i>If you pull hard enough, I should pop right out of you.", false);
outputText("</i>\"\n\n", false);
outputText("You tell her that it's no matter if she can't pull out; you haven't gotten your own orgasm yet. As you watch her face over your shoulder, her feline eyes widen. \"<i>Oh! I'm so sorry... gods, I wasn't even thinking. What... what are you gonna do?</i>\"\n\n", false);
outputText("Turning back to hide your wicked grin, you begin to bounce up and down on her knotted, still-hard shafts.", false);
//[(Katballs >=3</i>\")
if(flags[KATHERINE_BALL_SIZE] >= 3) outputText(" Her cum sloshes fluidly inside you, adding to the sensations assaulting your cervix and bowels.", false);
outputText("\n\n", false);
outputText("\"<i>O-oh Marae! It's too much! Please stop, they're so sensitive right now!</i>\" cries the cat-girl as you continue to ride her knotted shafts, reverse cowgirl style. She paws at your hips as if to gain respite, but her slack, spent muscles can't keep you from completing your orgasm. Fueled by her whimper-like moaning and the sensations inside you, it follows soon; as your anus and vagina squeeze her dicks in the throes of climax, a second burst from her follows, stretching your belly", false);
if(flags[KATHERINE_BALL_SIZE] >= 5) outputText(" to its limit", false);
outputText(" as she fills you with a smaller, second load of jizz.", false);
if(player.hasCock()) outputText(" " + SMultiCockDesc() + " celebrates with arcs of its own semen, spraying them in a patter on her legs and the ground in front of you.", false);
outputText(" The cat-woman gasps and twitches as her new ejaculation reverberates through her body, but forms no words, only looking up at the walls overhead.", false);
outputText("\n\n", false);
outputText("About an hour later, she's deflated and you are finally able to rise off of her, get dressed, and head back to your camp.\n\n", false);
//minus lust, slimefeed, Player returns to Tel'Adre Menu Screen or to camp, if code insists on it
slimeFeed();
stats(0,0,0,0,0,-2,-100,0);
flags[KATHERINE_TIMES_SEXED]++;
doNext(13);
}
//Sucked 'n' Fucked
//This scene requires the PC has a penis and has fucked Kat at least once since moving her
function suckedNFuckedByKat():void {
var x:Number = player.biggestCockIndex();
outputText("", true);
outputText("As you crouch, trying to figure out how you want your herm lover to take you, you start when you feel Katherine's fingers suddenly caressing your " + cockDescript(x) + ".\n\n", false);
outputText("\"<i>Hmm... I think you deserve a special treat, my sweet. Roll over onto your back...</i>\" Katherine purrs, giving you a stroke to make you as stiff as possible before releasing you.\n\n", false);
outputText("Wondering what she has in mind, you do as you are told, rolling onto your back and lying there with your prick aimed at the sky and your ", false);
if(player.isNaga()) outputText("tail flat", false);
else outputText("legs spread", false);
outputText(". Katherine advances toward you and kneels down, reaching over your stomach and petting your " + chestDesc() + " with a smile. \"<i>You're very special to me, you know that? Well, to prove that, I'm going to show you a real good time...</i>\" She grins, passing her tongue over her lips with exaggerated anticipation.\n\n", false);
outputText("As you watch, she bends over from where she's sitting until she can lick your " + cockDescript(x) + ", her long, feline tongue running up and down its length, tickling the head. The sensation is strange; bristly, but not sharp, so it's like being stroked by lots of little tongues at the same time. pre-cum begins flowing from your cock-tip like water bubbling from an underground spring, and your feline lover visibly savors the taste before leaning back upright, smacking her lips and smiling at your protest.\n\n", false);
outputText("\"<i>Naughty, naughty; have you forgotten who's fucking whom, this time?</i>\" She purrs at you, one hand slipping forward to caress ", false);
if(player.hasVagina()) outputText("your " + vaginaDescript(), false);
else outputText("between your asscheeks", false);
outputText(". Taking hold of your " + hipDescript() + ", she slides her cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(" forward until she's hovering at the entrance to your ", false);
if(flags[KATHERINE_DICK_COUNT] > 1 && player.hasVagina()) outputText(vaginaDescript() + " and " + assholeDescript(), false);
else outputText(assholeOrPussy(), false);
outputText(". Taking a bit of the pre-cum drooling from your prick, she slathers it over her cock", false);
if(flags[KATHERINE_DICK_COUNT] > 1) outputText("s", false);
outputText(". Then, without further ado, she slides herself into you.", false);
if(flags[KATHERINE_DICK_COUNT] > 1 && player.hasVagina()) {
buttChange(flags[KATHERINE_DICK_LENGTH] * 2, true, true, false);