WTS/game/scripts/characters/cho/events/favors/suck_it.rpy
2024-06-18 16:02:23 +02:00

1776 lines
69 KiB
Plaintext

### Cho Blowjob ###
label cc_pf_blowjob:
if not _events_completed_any:
gen "{size=-4}(Should I ask her for a blowjob?){/size}" ("base", xpos="far_left", ypos="head")
menu:
"\"(Yes, let's do it!)\"":
pass
"\"(Not right now.)\"":
$ _event.cancel()
jump cho_favor_menu.favors
# Setup
$ warned_her = False
return
label end_cc_pf_blowjob:
$ states.cho.status.blowjob = True
$ cho.set_cum(None)
if states.cho.tier == 3:
if states.cho.level < 15: # Points till 15
$ states.cho.level += 1
jump end_cho_event
label cc_pf_blowjob_T3_intro_E1:
call cc_pf_blowjob
if states.cho.ev.suck_it.variant is None:
gen "[name_cho_genie], ready to reward your coach for a job well done?" ("base", xpos="far_left", ypos="head")
cho "Of course... A deal's a deal." ("open", "narrow", "base", "mid")
gen "Great, in that case I think a blowjob is in order!" ("base", xpos="far_left", ypos="head")
cho "{shudder}A blowjob?!!{/shudder}" ("disgust", "wide", "base", "mid")
gen "And some hand action as well of course!" ("base", xpos="far_left", ypos="head")
cho "Sir, I didn't think it'd come to this... I already showed you my naked body and everything..." ("clench", "narrow", "base", "down")
gen "There are other tactics you could use that aren't just about showing off your body in public, you know..." ("base", xpos="far_left", ypos="head")
cho "Oh, yeah? Like what?" ("angry", "narrow", "raised", "mid")
gen "Your dream is to become a professional, is it not?" ("base", xpos="far_left", ypos="head")
cho "I... Yes... I suppose it is." ("soft", "narrow", "base", "R")
gen "Then we should do our best to prepare you for what's out there!" ("base", xpos="far_left", ypos="head")
label .introspection:
if _in_replay:
show screen blkfade
with d5
$ cho.equip(cho_outfit_default)
$ cho.set_pose("default")
$ cho.animation = None
$ states.env.gold = 1984
$ states.env.day = 124
call room("main_room")
call cho_chibi("stand", "desk", "base", flip=False)
call gen_chibi("sit_behind_desk")
cho "" ("soft", "narrow", "base", "R")
hide screen blkfade
with d5
gen "I won't be your coach forever... Once you're looking for a proper team, you'll be in fierce competition with the other women athletes." ("base", xpos="far_left", ypos="head")
gen "Women that will stop at nothing to get what they want." ("base", xpos="far_left", ypos="head")
if _in_replay:
show screen blkfade
with d5
return
gen "So, as your coach, it's my responsibility to prepare you!" ("base", xpos="far_left", ypos="head")
cho "And a blowjob is necessary for this?" ("angry", "narrow", "raised", "mid")
if states.cho.ev.spy_on_girls.t3_e1_complete:
gen "You've seen the girls on the Gryffindor team... You think they would hesitate with something as simple as a blowjob?" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("disgust", "closed", "base", "down") #Pout
gen "I see how it is..." ("base", xpos="far_left", ypos="head")
gen "I sure didn't think a simple blowjob would dissuade you from pursuing your dreams." ("base", xpos="far_left", ypos="head")
else:
gen "Well, I can tell you this much... A woman looking to make it professionally should have enough confidence not to get stopped by something as simple as a blowjob." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("normal", "narrow", "base", "downR") # angry
cho @ cheeks blush "Alright, I'll do it..." ("open", "happyCl", "angry", "downR")
gen "That's more like it!" ("grin", xpos="far_left", ypos="head")
cho @ cheeks blush "Don't get me wrong sir... I don't believe a word of what you just said is even remotely true." ("upset", "base", "base", "mid")
cho @ cheeks blush "But you've helped me get this far..." ("annoyed", "narrow", "base", "down")
cho @ cheeks blush "So if a blowjob is what it takes, then so be it..." ("soft", "base", "base", "downR")
gen "That's the kind of determination I've been looking for..." ("grin", xpos="far_left", ypos="head")
gen "Let's find out how a skilled Quidditch player handles this type of wood..." ("grin", xpos="far_left", ypos="head")
cho "..." ("disgust", "narrow", "base", "mid") #smile #looks away
cho @ cheeks blush "Okay, then... I'm ready." ("angry", "narrow", "base", "mid")
gen "(At last!)" ("angry", xpos="far_left", ypos="head")
play sound "sounds/zipper.ogg"
hide screen bld1
hide cho_main
call gen_chibi("jerk_off_behind_desk")
with d5
call cho_walk("desk_close", "base")
pause 0.5
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid_shock")
if states.env.daytime:
$ camera.set_overlay("day_overlay")
else:
$ camera.set_overlay("night_overlay")
$ camera.set(zoom=1.0, pos=(950, -750), initialize=True)
show screen animatedCG
with fade
call gen_chibi("sit_behind_desk") # reset
# Start CG with Cho kneeling in front of Genie.
# Cho is dressed.
# Note: Cho does not require posing here because it happens during the CG scene.
$ renpy.choice_for_skipping()
pause 0.5
$ camera.set(pos=(0, -750), t=3.5, pause=True)
$ camera.set(pos=(150, 400), t=2)
if not states.cho.status.dick_seen:
cho "By Merlin's beard!" #Wide eyed looking at dick #open mouth
gen "Something wrong?"
$ camera.set_image("mid_surprised")
cho "N-No...{w=0.4} It's just...{w=0.4} This close...{w=0.4} It's so much larger than--" #Looking at dick
gen "Good, then stop staring and put your hand on it..."
else:
cho "..." #Wide eyed looking at dick #open mouth
gen "Go on... Stop staring, and put your hand on it."
$ camera.set_image("mid_surprised_blush")
cho "Okay..." #Blush #Normal mouth
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("up_worried")
pause 0.6
$ camera.set(zoom=0.5, pos=(100, 100), t=2.0)
#Cho puts her hand on genies dick and looks up at him
cho "..." #worried eyes
gen "What? Don't tell me this is the first time you've done this..."
$ camera.set_image("away_blush")
cho "O-{w=0.3}of course I've done it before!"
gen "Then get that arm moving, use those muscles!"
$ camera.set_image("up")
cho "..." # annoyed
$ camera.set_image("cho_hj mid")
call ctc
gen "Yes, that's it...{w=0.4} Stroke that cock, you little Ravenclaw slut..."
$ camera.set_image("up_annoyed")
cho "[name_genie_cho]!"# Stops moving hand #Annoyed #Looks up at genie
gen "What?"
gen "You're doing a great job [name_cho_genie], keep it going just like that..."
$ camera.set_image("mid_annoyed")
cho "*Hmph*..." #annoyed
$ camera.set_image("away_blush")
cho "Fine..."
$ camera.set_image("cho_hj mid")
call ctc
gen "Such a firm grip..."
gen "Must be from riding that broom so much..."
gen "Although your rhythm could do with some work..."
$ camera.set_image("cho_hj mid annoyed")
cho "*Tsk*..." #Annoyed
call ctc
gen "That's better..."
gen "Now then... Let's find out what you can do with that mouth of yours, shall we?"
$ camera.set_image("up_wide")
cho "Already?" #Wide eyed
$ camera.set_image("up_worried")
cho "Can't I just keep jerking you off?"
gen "You agreed to a blowjob did you not?"
$ camera.set_image("mid_worried")
if not states.cho.status.dick_seen:
cho "I...{w=0.4} Well, that was before you showed me your..." #Looks back down
else:
cho "Well, now that I'm seeing it again... I'm not so sure..." #Looks back down
$ camera.set_image("away_blush")
cho "How is this even..." #Cuts to dialog Menu choice
$ states.cho.status.handjob = True
$ states.cho.status.dick_seen = True
else: # Alternate intro if first event has failed
gen "Ready to continue with your training?" ("base", xpos="far_left", ypos="head")
cho "Of course!" ("open", "base", "base", "mid")
gen "Then you know what is required..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "You want me to touch your..." ("soft", "base", "base", "downR")
cho @ cheeks blush "..." ("horny", "closed", "base", "mid")
cho @ cheeks blush "Fine... I'll do it." ("angry", "base", "base", "mid")
hide cho_main
with d3
call cho_walk("desk_close", "base")
pause 1.0
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid_surprised")
$ camera.set(zoom=1.0, pos=(0, -750), initialize=True)
show screen animatedCG
with fade
$ camera.set(pos=(150, 400), t=2.0, pause=True)
$ camera.set(zoom=0.5, pos=(100, 100), t=2.0)
cho "Okay... I'm ready."
$ camera.set_image("mid_surprised_blush")
cho "..." #blush
gen "Go on then, I don't have all day..."
$ camera.set_image("mid_blush")
cho "R-Right..." #Pout
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("mid_annoyed")
cho "..." #annoyed
gen "There you go... Much easier the second time, isn't it?"
gen "Now, get those muscles moving..."
$ camera.set_image("cho_hj mid")
call ctc
gen "That's it... You keep stroking, slut..."
$ camera.set_image("cho_hj mid annoyed")
cho "*Hmph*..." #Annoyed
call ctc
gen "Good..."
gen "You're doing way better than last time... Perhaps you've had some time to think things over?"
$ camera.set_image("cho_hj mid")
call ctc
cho "..."
gen "I take that as a yes... So, let's put that mouth to good use then, shall we?"
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("up_shock")
cho "Already?"
gen "No, tomorrow... Yes, of course now!"
$ camera.set_image("mid_worried")
cho "Can't I just keep jerking you off?" #pout
gen "This again..."
jump cc_pf_blowjob_1
label cc_pf_blowjob_1:
menu:
"-A deal's a deal...-": # FAIL
gen "That's not what we agreed on."
gen "Get those lips on there..."
if states.cho.ev.suck_it.variant is None:
$ camera.set_image("up_wide")
else:
$ camera.set_image("up_worried")
cho "[name_genie_cho]!" #shocked
gen "It's time to push those limits [name_cho_genie]... We've been over this."
gen "Open up..."
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid_annoyed")
cho "But... it's... {shake}How is it even going to fit?!{/shake}"
$ camera.set_image("mid")
gen "It will fit... You're the most flexible girl in the castle."
gen "If anyone could do it, it's you..."
cho "..."
gen "Now, put your hand back..."
$ camera.set_image("mid_worried")
cho "..."
cho "Al-Alright...!"
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("up_worried")
#Cho puts her hand back on
gen "Good... Now put your lips around the tip..."
$ camera.set_image("away_blush")
cho "Oh-okay..."
cho "(You can do this... Push your boundaries!)"
cho "He-here I go..."
#Cho opens her mouth and moves in towards genies cock #Genie cock twitches
#She moves in closer and closes her eyes with her mouth wide open and just as she barely touches it, she jumps back
$ camera.set_image("cho_bj lick fail")
pause 1 # Pauses at last frame.
cho "No, I can't... I can't do it!"
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid_annoyed")
if states.cho.ev.suck_it.variant == "failed":
cho "It still won't fit!"
gen "[name_cho_genie]... You're here to push your limits, stop with the whining!"
$ camera.set_image("up_worried")
cho "I-I'm sorry [name_genie_cho]..."
cho "I... I can't...{w=0.4} It's all happening too fast!"
gen "[name_cho_genie]..."
$ camera.set_image("mid_worried")
cho "I'm sorry!" #blush, looking away
$ states.cho.mood += 3 # Annoyed that you failed it again, sucker
else:
cho "It won't fit!"
gen "[name_cho_genie]... You're here to push your limits."
$ camera.set_image("up_worried")
cho "I-I'm sorry [name_genie_cho]..."
cho "I... Need some time to think..."
gen "[name_cho_genie]..."
$ camera.set_image("mid_worried")
cho "I'm sorry!" #blush, looking away
# Genie standing with his dick out, all alone, blue balled, all aloooooooone
call gen_chibi("dick_out", 230, "base")
hide screen animatedCG
with fade
#Cuts to Office and Cho walks quickly out of the room
call cho_walk(action="leave")
gen "(Damn...{w=0.4} Am I that type of coach that keeps pushing their pupils too hard?)" ("base", xpos="far_left", ypos="head")
gen "(Speaking of hard, this thing isn't going to go away by itself...)" ("base", xpos="far_left", ypos="head")
gen "(Well... if there's anything I got good at in that lamp...)" ("base", xpos="far_left", ypos="head")
if states.cho.ev.suck_it.variant == "failed":
gen "(Perhaps I should go a bit easier on her next time...)" ("base", xpos="far_left", ypos="head")
$ states.cho.ev.suck_it.variant = "failed"
call gen_chibi("sit_behind_desk")
with fade
# Event resets. (No progress)
$ _event.cancel()
jump end_cho_event
"-Take it slow...-": #Cho strokes and licks genie then goes back to stroking until climax
gen "Okay... Just keep stroking it for now..."
if states.cho.ev.suck_it.variant is None:
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("up_wide")
cho "Oh... Okay, I can do that..."
gen "But you better put some work into it!"
$ camera.set_image("mid")
else:
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("up")
cho "Oh... Okay, I can do that..."
gen "But you better put some work into it, show me that stamina of yours!"
$ camera.set_image("mid")
cho "Of course!"
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("mid_blush")
cho "(I'll show you my stamina, alright!)" #Blushing
$ camera.set_image("cho_hj mid")
call ctc
gen "{bounce}*Ah*...{/bounce}{w=0.3} That's it... You're finally getting the hang of this."
gen "You should've told me Quidditch players were this good at handjobs sooner."
$ camera.set_image("cho_hj up blush")
cho "..." #Looks up at genie #Blushes
call ctc
gen "And... Look at you... Stroking your coach's cock..."
$ camera.set_image("cho_hj mid blush")
cho "..."#Looks back down at cock #still stroking
call ctc
gen "Willing to do anything to win that cup..."
$ camera.set_image("cho_hj mid")
gen "Begging to receive her coach's cum."
gen "Now, put your mouth on it [name_cho_genie]..."
$ camera.set_image("up_wide")
#Cho stops handjob
cho "But I thought..."
gen "If you want to outdo your competition then you need to push through your limits [name_cho_genie]..."
$ camera.set_image("up_worried")
gen "Give it a little lick, I promise it won't bite."
cho "..." #Annoyed
$ camera.set_image("away_blush")
cho "Fine..." #Blushes #Annoyed
$ camera.set_image("cho_bj lick success")
pause 1.5
gen "See? That wasn't bad, was it?"
$ camera.set_image("up_annoyed")
cho "I--..." # Grim look at Genie
$ camera.set_image("mid")
cho "(I guess not...)" #Looks back on cock
gen "Go on..."
$ camera.set_image("mid_annoyed")
cho "Fine!" #annoyed
$ camera.set_image("mid_worried")
cho "..." #Worried
$ camera.set_image("cho_bj lick start")
pause .7
$ camera.set_image("cho_bj lick")
cho "*Lick-slurp-lick*"
call ctc
gen "{bounce}*Ah*...{/bounce}{w=0.5} Good job [name_cho_genie]."
gen "I suppose that will be enough for n--"
$ camera.set_image("up_annoyed", trans=d3)
cho "No! I want--"
$ camera.set_image("away_blush")
cho "I mean...{w=0.5} You deserve your reward, [name_genie_cho]."
cho "At least let me finish you off with my hand..."
$ camera.set_image("mid_blush")
gen "That's what I wanted to hear [name_cho_genie], you're learning..."
gen "Get going then..."
$ camera.set_image("cho_hj mid blush")
call ctc
gen "*Hmm*...{w=0.4} That's it, grip it firmly just like that..."
call ctc
gen "{bounce}*Ah*...{/bounce}{w=0.4} Not bad...{w=0.4} Not bad at all..."
gen "Now... A little bit faster, [name_cho_genie]..."
gen "I think you too deserve a reward..."
$ camera.set_image("cho_hj mid blush fast")
cho "Okay..." #Blush
$ camera.set_image("cho_hj up blush")
cho "[name_genie_cho]...{w=0.4} Will you tell me when--"
gen "Faster [name_cho_genie]!"
cho "Oh...{w=0.4} Of course!"
$ camera.set_image("cho_hj mid blush fast")
call ctc
gen "(Now that's my [name_cho_genie]!)"
gen "(I'm at my limit, should I warn her?)"
menu:
"-Warn her-":
$ warned_her = True
gen "That's it, almost there...!"
call ctc
gen "Get ready for your reward, [name_cho_genie]!"
menu:
"-Cum on her face-":
$ camera.set(zoom=0.45, pos=(150, 70), t=2.0)
gen "{shudder}*ARGH*!{/shudder}"
with vpunch
$ camera.set_image("cho_hj cum face")
pause 1.42
$ camera.set_image("cum") # Still image
call ctc
gen "{bounce}*Ah*...{/bounce}"
cho "Are...{w=0.5} Are you done?"
gen "{bounce}*Ah*...{/bounce}{w=0.4} Yes, you can open your eyes now..."
$ camera.set_image("cum_eye")
cho "..." #Opens eyes
$ camera.set_image("cum_eye_blush")
cho "So...{w=0.4} much..." #blush
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("cum_eye")
#Cho takes hand off penis and puts to her side
cho "And so sticky..." #blush
$ camera.set(zoom=0.6, pos=(220, 180), t=5.0, pause=True)
# Set cum on doll
$ cho.set_cum(face="heavy", hair="light")
$ states.cho.status.cumshot = True
"-Cum on her tits-":
gen "Get back a little, quick!"
$ camera.set_image("away", trans=d3)
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
gen "{shudder}*ARGH*!{/shudder} Here it comes, you slut!"
with vpunch
$ camera.set_image("cho_hj cum tits")
pause 2
$ camera.set_image("cum_tits")
call ctc
gen "{bounce}*Ah*...{/bounce}"
$ camera.set_image("look_cum_tits")
cho "You..." #Looks down on breasts
cho "My breasts..."
$ camera.set_image("look_blush_cum_tits")
cho "So much..." #blush
gen "That...{w=0.4} was...{w=0.4} amazing!"
gen "That is some talent you have there [name_cho_genie]..."
$ camera.set_image("dreamy_cum_tits")
cho "...{heart}{heart}" #blush #looking at penis
gen "[name_cho_genie]?"
$ camera.set_image("dreamy_up_cum_tits")
cho "Oh... Thank you [name_genie_cho]." #looks up at genie
gen "Now, get on your feet and let me have a proper look at you..."
$ camera.set(zoom=0.6, pos=(220, 180), t=5.0, pause=True)
#Cuts back to office screen (sound of cloth etc as genie puts dick away and Cho moves)
# Set cum on doll
$ cho.set_cum(breasts="heavy")
$ states.cho.status.cumshot = True
"-Don't-":
$ warned_her = False
$ states.cho.mood += 4
gen "(You better be ready slut...)"
$ camera.set_image("cho_hj up blush")
cho "[name_genie_cho], are you about to--"
gen "{shudder}*ARGH*!{/shudder}"
$ camera.set_image("cho_hj mid")
$ camera.set(zoom=0.45, pos=(150, 70), t=2.0)
cho "*Huh*?!" #Wide eyed
with vpunch
$ camera.set_image("cho_hj cum face tits")
pause 0.9
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("cum_face_tits")
call ctc
gen "{bounce}*Ah*...{/bounce}"
cho "..." # Wide eyed
cho "M--{w=0.3} My face!" #Angry
cho "You just came on my face!"
gen "{bounce}*Ahh*...{/bounce} At last..."
$ camera.set_image("cum_face_tits_glance", trans=d3)
$ camera.set(zoom=0.6, pos=(220, 180), t=5.0, pause=True)
#Cuts back to office screen (sound of cloth etc as genie puts dick away and Cho moves)
# Set cum on doll
$ cho.set_cum(face="heavy", hair="light", breasts="heavy")
$ states.cho.status.cumshot = True
hide screen animatedCG
with fade
# After CG, in the office.
if warned_her:
gen "Well done [name_cho_genie], you've started pushing those limits on your own." ("base", xpos="far_left", ypos="head")
gen "Also, You've got a little something right there..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Very funny [name_genie_cho]..." ("clench", "narrow", "base", "mid", trans=d3)
gen "Your confidence is showing itself more and more every day." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I...{w=0.5} You deserved it [name_genie_cho]...{w=0.5} For helping me this far..." ("upset", "narrow", "base", "downR")
cho @ cheeks blush "For teaching me... all this stuff..." ("angry", "closed", "base", "mid") #Blush
gen "(I'm a bloody saint, I've waited that long...)" ("base", xpos="far_left", ypos="head")
gen "You're very welcome." ("base", xpos="far_left", ypos="head")
else:
gen "That...{w=0.4} was...{w=0.4} amazing!"
cho "Why didn't you warn me?!" ("clench", "base", "angry", "down", trans=d3) #Angry
cho @ cheeks blush "I can't believe you just came all over me like that..." ("annoyed", "base", "angry", "downR") #pout
gen "Should have put it in your mouth then..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("disgust", "narrow", "base", "mid") #pout
cho @ cheeks blush "Is this what you do to Hermione as well?" ("upset", "narrow", "base", "down")
if states.her.status.blowjob:
gen "Maybe." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I knew it..." ("smile", "wide", "base", "mid")
if states.her.status.gokkun:
gen "Miss Granger knows how to properly dispose--" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "{shake}She swallows?!?{/shake}" ("clench", "wide", "base", "mid")
cho @ cheeks blush "I mean..." ("disgust", "base", "base", "downR")
cho @ cheeks blush "{size=-4}Of course she does...{/size}" ("angry", "base", "base", "down")
else:
gen "Of course not..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I knew--" ("smile", "happyCl", "base", "mid")
cho @ cheeks blush "Wait, she doesn't do stuff like that?" ("clench", "narrow", "base", "mid")
gen "No." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "So I am your first?" ("smile", "narrow", "base", "downR") # blush
gen "In one way or the other." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "What's that supposed to mean?!" ("upset", "base", "angry", "mid") # angry
cho @ cheeks blush "Whatever..." ("annoyed", "base", "angry", "R") # pout
cho @ cheeks blush "Are you...{w=0.4} Are we done?" ("open", "narrow", "base", "downR") #Blush
gen "Yes, for now..." ("base", xpos="far_left", ypos="head")
if states.env.daytime:
cho "Alright... In that case, I better head back to class." ("open", "base", "base", "R")
else:
cho "Alright... I'll head off to bed then." ("open", "base", "base", "R")
gen "Until next time." ("base", xpos="far_left", ypos="head")
call cho_walk(action="leave")
gen "[name_cho_genie]!" ("base", xpos="far_left", ypos="head")
gen "..." ("base", xpos="far_left", ypos="head")
gen "(Probably should've asked her to clean herself first...)" ("base", xpos="far_left", ypos="head")
gen "(Oh well, she'll find out one way or another.)" ("base", xpos="far_left", ypos="head")
jump end_cc_pf_blowjob
label cc_pf_blowjob_T3_E2:
call cc_pf_blowjob
gen "Ready for an oral exam [name_cho_genie]?" ("base", xpos="far_left", ypos="head")
cho "A what?" ("open", "base", "raised", "mid")
gen "Time to put that mouth to good use..." ("base", xpos="far_left", ypos="head")
cho @ cheeks heavy_blush "My mouth to--" ("horny", "base", "base", "downR") #Blush
gen "Any problems?" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "No... of course not [name_genie_cho]..." ("normal", "base", "base", "mid")
gen "Excellent!" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Just...{w=0.4} tell me what to do [name_genie_cho]..." ("open", "base", "base", "R")
call cho_walk("desk_close", "base")
pause 1.0
# Start CG with Cho kneeling in front of Genie.
# Cho is dressed.
# Note: Cho does not require posing here because it happens during the CG scene.
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid")
if states.env.daytime:
$ camera.set_overlay("day_overlay")
else:
$ camera.set_overlay("night_overlay")
$ camera.set(zoom=1.0, pos=(150, 400), initialize=True)
show screen animatedCG
with fade
$ camera.set(zoom=0.5, pos=(100, 100), t=2.0)
gen "..."
cho "..." #looking at dick
gen "Go on then..."
$ camera.set_image("mid_blush")
cho "Of course..." #Blush
#Cho puts hand on genies dick
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("mid_blush")
gen "Just start with some stroking like you did before..."
$ camera.set_image("up_blush")
cho "Yes, [name_genie_cho]..."
$ camera.set_image("cho_hj mid")
call ctc
gen "That's it... Stroke your coach's cock..."
gen "Good...{w=0.5} Back and forth...{w=0.5} just like I taught you..."
$ camera.set_image("cho_hj mid blush")
cho "(He's so big...)" #Blushes
gen "Very good... Now take that shirt off for me, will you..."
$ camera.set_image("away_blush")
cho "Okay..." #Blushes #moves back to base position
#Takes off shirt
play sound "sounds/cloth_sound3.ogg"
$ camera.set_image("topless_mid", trans=Fade(0.5, 2.0, 0.5))
gen "Excellent... Now continue stroking, [name_cho_genie]."
$ camera.set_image("topless_up")
cho "Alright..."
#Resumes handjob
$ camera.set_image("cho_hj topless mid")
call ctc
cho "......."
cho "(I'm actually doing this...)"
cho "(I'm stroking my coach's hard cock, just so I can win the Quidditch cup...)"
cho "(But...{w=0.4} If this is what it takes...{w=0.3} Then so be it!)"
cho "(It won't be long until I have that cup in my hands...)"
$ camera.set_image("cho_hj topless mid smile")
cho "(I can already taste the victory!)"
gen "You're being awfully quiet [name_cho_genie]... It's very unlike you..."
$ camera.set_image("topless_away_blush")
cho "S-Sorry [name_genie_cho]..."
$ camera.set_image("topless_up_worried")
cho "It's just...{w=0.4} I just keep thinking...{w=0.4} how without your help I would've been out of the competition by now..."
gen "(And without your help I'd be sitting here with a limp dick right about now.)"
$ camera.set_image("topless_away_blush")
cho "I...{w=0.4} I'm sorry I doubted your methods at first [name_genie_cho]..."
gen "I knew you'd come around..."
$ camera.set_image("topless_up_blush")
cho "{heart}"
$ camera.set_image("topless_mid_blush")
cho "I'm just glad that there was some small way for me to repay you..." #looks at genies dick
$ camera.set_image("cho_hj topless mid smile")
gen "{bounce}*Ah*...{/bounce} Yes, of course... It's nothing really."
call ctc
$ camera.set_image("cho_hj topless up blush")
cho "Oh please..."
cho "Pleasuring you is little to nothing compared to what you've done for me so far..."
$ camera.set_image("cho_hj topless mid smile")
cho "Giving you a bit of a reward is the least I could do..." #Blush
$ camera.set_image("cho_hj topless mid smile fast")
gen "({shudder}*Argh*...{/shudder}{w=0.4} At this rate, she'll make me bust!)"
call ctc
gen "Now you're getting into it..."
gen "Speaking of...{w=0.2} Time to put that mouth to work..."
$ camera.set_image("topless_up_worried")
cho "Already?"
gen "Not this again."
gen "Didn't you say you wanted to {i}reward{/i} me a second ago?"
$ camera.set_image("topless_away_blush")
cho "Sorry, you're right [name_genie_cho]..."
cho "Just...{w=0.4} Tell me what to do..." #blush
$ camera.set_image("topless_mid")
gen "Start by putting those lips around the tip, then slowly work your mouth further down the shaft..."
$ camera.set_image("topless_up")
cho "I...{w=0.4} Yes, [name_genie_cho]..." #Looks at genie
$ camera.set_image("topless_mid_blush")
cho "..." #blush
cho "Here it goes..."
#$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("cho_bj topless suck closed success")
pause 5.1
#Cho closes her eyes as she moves in, her mouth spreading open as she works it around the tip of genies penis
#Once her mouth worked past the tip she pulls out and open her eyes, looking up at genie
$ camera.set_image("topless_up")
cho "How...{w=0.4} how was that [name_genie_cho]?"
gen "Good start, but you shouldn't close your eyes...{w=0.4} And you should keep going until you find your limit, then hold it there for a bit..."
gen "The further down the better..."
$ camera.set_image("topless_mid")
cho "Okay..."
$ camera.set_image("cho_bj topless suck closed fail")
pause 0.5
gen "Eyes open, [name_cho_genie]..."
$ camera.set_image("cho_bj topless suck closed fail exit")
cho "Oh!{w=0.4} Sorry [name_genie_cho]!"
$ camera.set_image("topless_up_blush")
#Cho opens her eyes and looks at Genies penis."
cho "I'll keep them open..." #small text
$ camera.set_image("cho_bj topless suck start")
pause 0.8
$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("topless_suck_up")
cho "*Khow ish dhat*?"
#Cho goes in again with her eyes open this time, her mouth spreading open as it slowly goes over the tip."
#As her mouth continues past the tip she stops and looks up at genie for some approval but he stays silent, her eyes closes slightly as she resumes by slowly going down further
gen "{bounce}*Ah*...{/bounce}{w=0.5} That's it...{w=0.5} Keep going, [name_cho_genie]!" #This line should auto play as she goes further down
#As she continues further down, her pupils move up a bit more until she hits her gag reflex (slow zoom in effect)
#Quickly retracting she moves her head back and her eyes open again (Loop going backwards fast if animated, zoom effect quickly goes back to normal)
$ camera.set_image("cho_bj topless suck medium up")
call ctc
$ camera.set_image("cho_bj topless suck closed exit")
pause 3
cho "*Gah*...{w=0.4}{nw}"
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("topless_cough")
cho "*Cough*{w=0.2} *Cough*"
$ camera.set_image("topless_mid")
gen "Easy there girl..."
$ camera.set_image("topless_up")
cho "Was...{w=0.4} Was that better, [name_genie_cho]?" #Cho looks up at genie
gen "Excellent!{w=0.3} Although... maybe a bit too far... You barely held it there for a second."
$ camera.set_image("topless_away_blush")
cho "Oh...{w=0.5} Yes, I thought it might've been..."
gen "(This girl is like an on and off switch...)"
gen "In any case... I think you got it..."
gen "So... Let's get that head bobbing, [name_cho_genie]!"
$ camera.set_image("topless_away_pout")
#Cho looks back down at dick
cho "Are...{w=0.4} are you going to cum on me again [name_genie_cho]?"
gen "I wouldn't worry about that yet... Just focus on your task..."
$ camera.set_image("topless_mid")
cho "... {w=0.5}Okay then..."
#Cho starts jerking genie off again
$ camera.set_image("cho_hj topless mid")
call ctc
gen "You'll have to do more than just--"
$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("cho_bj topless suck start")
cho "*Oomph*{w=1.0}{nw}"
$ camera.set_image("cho_bj topless suck")
#Cho moves in and starts sucking genie off properly (Not as deep as she attempted)
call ctc
gen "That's more like it... Work that tongue..."
# Cho looks up
$ camera.set_image("cho_bj topless suck medium up")
call ctc
gen "Fuck yes... You naughty girl..."
#Cho pulls out and starts jerking genie off slowly
$ camera.set_image("cho_bj topless suck closed exit")
pause 3.0
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("cho_hj topless up blush")
call ctc
cho "Am I doing it right, [name_genie_cho]?"
gen "Yes, It feels--"
$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("cho_bj topless lick start")
pause 0.65
$ camera.set_image("cho_bj topless lick")
#Cho starts licking the tip a couple of times #looking at dick
gen "Whoa!"
call ctc
cho "(*Huh*...{w=0.5} This is just like Quidditch, all I have to do is find a good tactic against him. {heart})" #looks up at genie still licking
cho "(Guess he's not immune to his own tricks... {heart})"
$ camera.set_image("cho_bj topless lick exit")
pause 0.9
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("topless_up_blush")
#Cho pulls back and smiles
cho "I can't believe you're making your student suck your cock..."
cho "Surely that's not something a coach should be doing..."
gen "Well, I--"
$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("cho_bj topless suck start")
pause 2.85
$ camera.set_image("cho_bj topless suck medium up")
#Blowjob starts again
gen "(Fuck me, this girl is a natural!)"
call ctc
gen "You--{w=0.4} You're a fast learner, [name_cho_genie]..."
$ camera.set_image("cho_bj topless suck deep")
#Faster Blowjob
cho "{heart}{heart}{heart}"
gen "[name_cho_genie], if you do that--{w=0.2} Oh fuck!"
menu:
"-Warn her-":
gen "[name_cho_genie]... I think..."
gen "There's....{w=0.5} one more thing...{w=0.5} I could teach you today..."
$ camera.set_image("cho_bj topless suck medium up")
cho ".............?"
gen "Time to make your coach proud... Get ready!"
call ctc
menu:
"\"I'll even give you some house points!\"":
$ states.cho.ev.suck_it.variant = "points"
#Cho pulls back
$ camera.set_image("cho_bj topless suck medium")
cho "({shake}House points!?{/shake})" # angry #Wide eyed #Big text
$ camera.set_image("cho_bj topless suck closed exit")
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
gen "{cps=5}Fuuuuuuuuu{/cps}--{w=0.5}{nw}"
with vpunch
$ camera.set_image("cho_hj topless cum face tits")
gen "Fuuuuuuuuu{fast}uck!"
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("topless_mid_angry_cum_face_tits")
call ctc
show screen blkfade
with d5
cho "{shake}My eye!{/shake}" #Big text
cho "I got some in my eye!" #Big text
gen "{bounce}*Ah*...{/bounce}{w=0.4} Why'd you pull back!"
# Set cum on doll and strip her
$ cho.set_cum(face="heavy", hair="light", breasts="heavy")
$ cho.strip("robe", "top", "bra")
hide screen animatedCG
hide screen blkfade
with fade
#Office screen (Cho has cum on her face and tits)
cho @ cheeks blush "\"House points\", really?!" ("angry", "base", "angry", "mid", trans=d3)
cho @ cheeks blush "You want me to swallow your semen for house points?!" ("mad", "base", "angry", "mid")
gen "The points were just going to be a bonus." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "A bonus on top of?" ("open", "base", "angry", "mid")
gen "Not having to clean up..." ("base", xpos="far_left", ypos="head")
gen "Although I guess you didn't see it that way since you--" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("clench", "closed", "angry", "mid") #Angry
gen "Pulled...{w=0.5} back..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I'm not selling my body for points!" ("scream", "base", "angry", "mid")
gen "Of course..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I can't believe you..." ("disgust", "base", "angry", "down") #Small text
call cho_walk("door", "base")
cho @ cheeks blush "{size=-3}Who does he think I am?{w=0.4} I'm not Hermione!{/size}" ("annoyed", "closed", "angry", "mid", flip=True, trans=d3)
gen "[name_cho_genie]." ("base", xpos="far_left", ypos="head")
call cho_chibi("stand", "door", flip=False)
cho @ cheeks blush "I don't want to hear any of your excuses [name_genie_cho]!" ("scream", "narrow", "angry", "mid", flip=False, trans=d3)
call cho_chibi("stand", "door", flip=True)
hide cho_main
with d5
gen "At least let me--" ("base", xpos="far_left", ypos="head")
call cho_walk(action="leave")
play sound "sounds/door_down.ogg"
with hpunch
pause 1.0
gen "..." ("base", xpos="far_left", ypos="head")
pause 0.5
call cho_walk(action="enter")
with d5
pause 1.0
gen "Don't say I didn't try to--" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Shut... up!" ("angry", "base", "angry", "mid", trans=d3)
play sound "sounds/cloth_sound2.ogg"
$ cho.wear("all")
with fade
pause 1.0
call cho_walk("door", "base")
call cho_walk(action="leave")
play sound "sounds/door_down.ogg"
with hpunch
gen "..." ("base", xpos="far_left", ypos="head")
gen "(She'll get over it...)" ("base", xpos="far_left", ypos="head")
gen "(I think.)" ("base", xpos="far_left", ypos="head")
$ states.cho.mood += 12
"\"Taste that cum in your mouth!\"":
$ states.cho.ev.suck_it.variant = "taste"
cho "(T-{shake}taste?!{/shake} But... We never discussed this!)"
$ camera.set_image("cho_bj topless suck medium up")
cho "*Mhmmmm Mmhmmmm*!"
#Cho stops for a second to consider and then starts going again
call ctc
gen "{shudder}*Ngh*--{/shudder}{w=0.2} That's it [name_cho_genie]!"
$ camera.set_image("cho_bj topless suck closed")
cho "(Oh god...)" #blush
gen "Here it comes!"
$ camera.set_image("cho_bj topless suck medium")
cho "(No, wait!)"
cho "*Mmmmmhmmm*!!!"
gen "{shake}*ARGH!*{/shake}"
with vpunch
$ camera.set_image("cho_bj topless cum mouth")
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
pause 2
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("topless_mid_cum_mouth")
call ctc
$ camera.set_image("topless_mid_surprised_cum_mouth")
#Cho opens her mouth and lets the cum dribble out
cho "*Sho*...{w=0.4} *Sho mush*...."
$ camera.set_image("topless_away_blush_cum_mouth")
cho "(Although...{w=0.4} it doesn't taste as bad as I--)"
gen "Nicely done [name_cho_genie], I knew you'd have it in you!"
# Make her lisp the name, if the name is unsupported fallback and replace 's' occurrences with 'sh'
$ _replacement_names = {
"master": "mashter",
"daddy": "dhadhy",
"old man": "oldh mhan",
"professor": "phrofeshor",
"coach": "choach"
}
$ _name = name_genie_cho.replace(name_genie_cho, _replacement_names.get(name_genie_cho, name_genie_cho.replace("s", "sh")))
$ camera.set_image("topless_up_cum_mouth")
cho "*Phank you, [_name]*"
gen "Didn't your parents teach you to not speak with your mouth full?"
$ camera.set_image("topless_away_blush_cum_mouth")
cho "............"
gen "Now, get on your feet, so I can have a look at you..."
# Set cum on doll and strip her
$ cho.set_cum(face="light")
$ cho.strip("robe", "top", "bra")
hide screen animatedCG
with fade
# TODO: Add Cho doll flip when at door etc, cum layers
#Cho has no shirt, cum on her face and down her tits
gen "Well, will you look at that...{w=0.4} You look great with a fresh coat of paint!" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Did you have to cum this much..." ("disgust", "narrow", "base", "down", trans=d3)
gen "I can't exactly control it..." ("base", xpos="far_left", ypos="head")
gen "If you don't swallow, you'll have to deal with the mess." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Swallow [name_genie_cho]'s--" ("upset", "base", "base", "downR") #Blush
cho @ cheeks blush "I don't know..." ("soft", "narrow", "base", "downR") #Blush
gen "In any case, you've excelled today [name_cho_genie]." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "I think I need to lie down for a bit..." ("open", "narrow", "base", "down")
cho @ cheeks blush "This was exhausting...{w=0.4} Even for me." ("open", "narrow", "base", "mid")
if states.her.status.blowjob:
cho "I don't know how Granger could do this, without getting exhausted." ("soft", "narrow", "base", "down")
gen "(*Heh*, practice makes perfect...)" ("grin", xpos="far_left", ypos="head")
if states.env.daytime:
gen "No time for a lie down I'm afraid..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "What, don't tell me you're already--" ("clench", "wide", "base", "mid")
gen "You've got class to get to." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Oh...{w=0.4} Right..." ("open", "base", "base", "down")
cho @ cheeks blush "Good day then..." ("soft", "base", "base", "mid")
else:
gen "A lie down you say..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Don't you get any ideas..." ("disgust", "narrow", "base", "mid")
gen "I most certainly was not!" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Yeah right." ("annoyed", "base", "base", "R")
gen "{size=-4}Pervert...{/size}" ("base", xpos="far_left", ypos="head")
gen "Well, you've earnt a lie down I suppose..." ("base", xpos="far_left", ypos="head")
cho "Good night then..." ("open", "narrow", "base", "mid")
gen "Good night, [name_cho_genie]." ("base", xpos="far_left", ypos="head")
call cho_walk("mid", "base")
gen "[name_cho_genie]!" ("base", xpos="far_left", ypos="head")
call cho_chibi("stand", "mid", "base", flip=False)
cho "Yes [name_genie_cho]?" ("open", "base", "raised", "mid", trans=d3)
gen "Your top..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Oh... Of course!" ("clench", "happyCl", "base", "mid") #Blush
play sound "sounds/cloth_sound2.ogg"
$ cho.wear("all")
with fade
cho @ cheeks blush "..." ("soft", "base", "base", "down") #Cho puts on top
cho @ cheeks blush "Thank you, [name_genie_cho]..." ("open", "base", "base", "downR")
call cho_walk(action="leave")
gen "...{w=0.5} Silly girl." ("base", xpos="far_left", ypos="head")
#Cho leaves
#End Scene #Marks at completed
"\"Swallow that cum!\"":
$ states.cho.ev.suck_it.variant = "swallow"
$ camera.set_image("cho_bj topless suck closed exit")
pause 3
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("topless_up_cringe")
#Cho's eyes goes wide and pulls out
cho "But [name_genie_cho]--" #Big text
gen "*Aargh*! Get back there at once, or forget about your stupid Quidditch cup!"
$ camera.set_image("topless_away_pout")
cho "Y-yes, sir!"
$ camera.set_image("topless_mid_angry")
cho "(I'll show this stupid cock... You're not the boss of me!)"
$ camera.set_imagepath("cho_bj/bj/")
$ camera.set_image("cho_bj topless suck deep start")
pause 2.0
$ camera.set_image("cho_bj topless suck deep")
gen "Yeeees, you fucking slut!"
cho "*Mmmmhh* {heart}{heart}"
call ctc
gen "Get ready, I'm almost--"
$ camera.set_image("cho_bj topless suck medium")
cho "*Mhmhm*?!-- (Now?!--)"
gen "{shake}*ARGH*!{/shake}"
with vpunch
$ camera.set_image("cho_bj topless cum swallow")
pause 1
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
pause 1
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("topless_mid_cum_swallow")
call ctc
$ camera.set_image("topless_mid_surprised_cum_swallow")
cho "I...{w=0.4} I just swallowed..."
cho "My coach's cum..."
gen "Well done, [name_cho_genie], you sucked me dry."
$ camera.set_image("topless_away_cum_swallow")
cho "I...{w=0.4} Thanks... I guess."
# Strip doll (no cum necessary it seems)
$ cho.strip("top", "bra", "robe")
hide screen animatedCG
with fade
gen "Now this is the kind of initiative I'm talking about!" ("grin", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("disgust", "narrow", "base", "down", trans=d3) #blank stare
gen "[name_cho_genie]?" ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Yes...{w=0.5} Sorry...{w=0.5} Thank you [name_genie_cho]." ("angry", "base", "base", "downR")
cho @ cheeks blush "Is that all?" ("soft", "narrow", "base", "down")
if states.env.daytime:
gen "That will be all for today..." ("base", xpos="far_left", ypos="head")
else:
gen "That will be all for tonight..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Okay, good..." ("angry", "narrow", "base", "down")
#Cho walks out the door, still without shirt on
call cho_walk(action="leave")
gen "[name_cho_genie]!" ("base", xpos="far_left", ypos="head")
#Cho comes back through the door
call cho_walk(action="enter")
with d5
cho @ cheeks blush "Yes [name_genie_cho]?" ("soft", "base", "base", "mid", trans=d3)
gen "..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Oh, of course!" ("clench", "base", "base", "down") #Wide eyed
#Cho puts on her shirt
play sound "sounds/cloth_sound2.ogg"
$ cho.wear("all")
with fade
if states.env.daytime:
cho @ cheeks blush "Bye then!" ("open", "happyCl", "base", "downR")
else:
cho "Good night then!" ("base", "base", "base", "mid")
call cho_walk(action="leave")
gen "(Heh. She's silly... but adorable.)" ("base", xpos="far_left", ypos="head")
gen "(Not the worst of combinations.)" ("base", xpos="far_left", ypos="head")
#Cho leaves
#End Scene #Marks at completed
$ states.cho.status.gokkun = True
"-Just cum down her throat-":
$ states.cho.ev.suck_it.variant = "throat"
gen "That did it, you slut!"
$ camera.set_image("cho_bj topless suck medium up")
cho "*Hmmf*?" #looks at genie
gen "{shake}*ARGH*!{/shake}"
with vpunch
$ camera.set_image("cho_bj topless cum swallow")
cho "*Mphhhh*!!!{w=1.0}{nw}"
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
gen "{bounce}*Ahhh*...{/bounce} I needed that..."
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("topless_mid_cough_cum_swallow")
cho "*Cough*-*Cough*-... {bounce}*Ah*...{/bounce}{w=0.4}{bounce}*Ah*...{/bounce}"
gen "That was awesome... Great job--"
$ camera.set_image("topless_up_angry_cum_swallow")
cho "What...{w=0.4} the hell...{w=0.4} {shake}is wrong with you?!?!{/shake}" #screen shake
gen "What do you--"
$ camera.set_image("topless_up_angry2_cum_swallow")
cho "Why didn't you warn me! I almost choked!"
cho "I never agreed to this--"
gen "It's sort of expected with a blowjob..."
$ camera.set_image("topless_closed_angry_cum_swallow")
$ camera.set(zoom=0.6, pos=(220, 180), t=5.0)
cho "You asshole!"
show screen blkfade
with d5
cho "For a first blowjob?! It is not!"
gen "I mean...{w=0.4} Wait did you say first... Does that mean you still want to--"
$ cho.wear("all")
play sound "sounds/cloth_sound2.ogg"
cho "I can't believe you..."
hide screen animatedCG
hide screen blkfade
with fade
#Cut to office screen #Cho has put on her top
gen "As I said, it's kind of expected from the whole blowjob thing..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "You...{w=0.4} You're joking, right?" ("clench", "narrow", "angry", "mid", trans=d3)
gen "Deadly serious..." ("base", xpos="far_left", ypos="head")
gen "Unless I fancy covering your face that is..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Unless you--" ("soft", "wide", "angry", "mid") #disgust
cho @ cheeks blush "*Hmph*!" ("upset", "base", "angry", "mid")
# Gets upset
$ states.cho.mood += 12
cho @ cheeks blush "I'm going to go take a shower now if you don't mind!" ("mad", "base", "angry", "mid")
gen "You're dismissed [name_cho_genie]." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Good!" ("annoyed", "base", "angry", "mid")
call cho_walk("door", "base")
cho @ cheeks heavy_blush "{size=-4}Seriously... Just ask first...{/size}" ("disgust", "base", "angry", "down", flip=True, trans=d3) #Small text #Pout #Blush
call cho_walk(action="leave")
$ states.cho.status.gokkun = True
jump end_cc_pf_blowjob
label cc_pf_blowjob_T3_E3:
call cc_pf_blowjob
$ states.cho.ev.suck_it.T3_E3_complete = True
gen "Let's see what that mouth can do." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "You want to...{w=0.4} use my mouth again [name_genie_cho]?" ("soft", "narrow", "base", "downR")
cho @ cheeks blush "I suppose I could..." ("open", "narrow", "base", "down") #Blush #Horny
if states.cho.ev.suck_it.variant == "points":
gen "And this time I won't make the mistake of offering house points..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "You better not." ("annoyed", "narrow", "base", "downR")
gen "But my expectations are still the same..." ("base", xpos="far_left", ypos="head")
gen "For you to push your limits on your own..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "So you want me to..." ("soft", "base", "base", "downR")
elif states.cho.ev.suck_it.variant == "taste":
gen "And if you don't want those clothes dirty, you better swallow this time..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "..." ("annoyed", "narrow", "base", "downR") #blush
elif states.cho.ev.suck_it.variant == "swallow":
cho @ cheeks blush "You expect me to swallow again?" ("open", "base", "base", "downR")
gen "Of course, that's part of the deal..." ("base", xpos="far_left", ypos="head")
else: # states.cho.ev.suck_it.variant == throat - Using `else` as a fallback for degenerates that use cheats
cho @ cheeks blush "Will you warn me this time?" ("annoyed", "narrow", "base", "downR")
gen "Of course..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Fine..." ("base", "narrow", "base", "R")
gen "Good! And one more thing..." ("base", xpos="far_left", ypos="head")
gen "I expect some dirty talk this time." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Dirty talk, [name_genie_cho]?" ("upset", "base", "raised", "mid") #pout
cho @ cheeks blush "I... If that's what you want..." ("soft", "base", "base", "downR") #Blush
gen "Good, then get over here..." ("base", xpos="far_left", ypos="head")
call cho_walk("desk_close", "base")
pause 1.0
# Start CG with Cho kneeling in front of Genie.
# Cho is dressed.
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("mid")
if states.env.daytime:
$ camera.set_overlay("day_overlay")
else:
$ camera.set_overlay("night_overlay")
$ camera.set(zoom=0.5, pos=(100, 100), initialize=True)
show screen animatedCG
with fade
pause 1
$ camera.set_image("up_neutral")
cho "Did you want me to take my top off again [name_genie_cho]?"
gen "Taking initiative, *huh*? I like it."
$ camera.set_image("up_smile")
cho "In that case...{w=0.4} Just relax [name_genie_cho] and I'll take care of you..."
play sound "sounds/cloth_sound3.ogg"
$ camera.set_image("topless_mid_dreamy", trans=Fade(0.5, 2.0, 0.5))
#Cho moves up closer
cho "..."
cho "Your--{w=0.4} Your cock is so big [name_genie_cho]!"
gen "That's it [name_cho_genie], keep talking just like that..."
gen "Put your hand on it and tell me how it feels..."
$ camera.set_imagepath("cho_bj/hj/")
$ camera.set_image("topless_mid_dreamy")
#Cho grabs genies dick
cho "It...{w=0.4} it feels like I'm holding a beater's bat!"
cho "I can't believe how hard it is..."
#Cho starts jacking genie off #Looking at dick
$ camera.set_image("cho_hj topless mid smile")
call ctc
$ camera.set_image("cho_hj topless up blush")
cho "Do you like it when I stroke your cock, [name_genie_cho]?" #Looks at genie
gen "Very much so!"
cho "*Mhmmm* Good answer. {heart}"
$ camera.set_image("cho_hj topless mid smile")
call ctc
$ camera.set_image("cho_hj topless up blush")
cho "Although this is far too slow, let's pick up the pace a little..."#Looks at genie
$ camera.set_image("cho_hj topless mid smile fast")
gen "{bounce}*Ahh*{/bounce} You make me proud, [name_cho_genie]...{w=0.3} I've taught you well."
$ camera.set_image("cho_hj topless up blush")
cho "Thank you, [name_genie_cho]... It's my pleasure. {heart}" #Worried #Looks at dick
$ camera.set_image("cho_hj topless mid smile fast")
gen "{bounce}*Ahh*...{/bounce}{w=0.3} Pleasure's all mine, [name_cho_genie]."
call ctc
$ camera.set_image("cho_hj topless up blush")
cho "You've been such a help to me, [name_genie_cho]."
$ camera.set_image("cho_hj topless up blush")
cho "I would never have been able to get this far without you..."
gen "That's it, [name_cho_genie], keep talking..."
$ camera.set_image("cho_hj topless mid smile")
cho "I love how your cock barely fits in my hand..."
cho "And the feeling as it goes in and out of my mouth..."
$ camera.set_image("cho_hj topless up blush")
cho "And when it twitches happily... It makes me glad, knowing I am making you feel good..."
$ camera.set_image("cho_hj topless mid smile")
cho "The look of pleasure on your face once you cum in my mouth..."
if states.cho.ev.suck_it.variant in ("swallow", "throat"):
cho "The sensation of your jizz going down my throat, is so..." #Looks at dick
$ camera.set_image("cho_bj topless lick success")
pause 1
$ camera.set_image("topless_mid_dreamy")
"addicting! {heart}{heart}"
elif states.cho.ev.suck_it.variant == "points":
cho "To finally feel your jizz slide down my throat, I..."
$ camera.set_image("cho_bj topless lick success")
pause 1
$ camera.set_image("topless_mid_dreamy")
"can't wait! {heart}{heart}"
else:
cho "And the taste of your jizz is so..."
$ camera.set_image("cho_bj topless lick success")
pause 1
$ camera.set_image("topless_mid_dreamy")
"delicious! {heart}{heart}"
gen "(If she keeps going like this, I'll blow before the actual blowjob...)"
$ camera.set_image("topless_up_blush2")
cho "Will you let me put my lips around it now, [name_genie_cho]?" #Looks at genie
gen "Perhaps..."
$ camera.set_image("topless_up_worried")
cho "... Perhaps?" #Looks at genie
gen "Tell me you want it..."
$ camera.set_image("topless_up_blush2")
cho "[name_genie_cho]?"
gen "Tell me how badly you want--{w=0.2} No, how badly you {i}need{/i} cock in your mouth."
$ camera.set_image("topless_up_cringe")
cho "How badly I n-need...!?"
$ camera.set_image("topless_away_pout")
cho "......"
cho "(I-I don't need his cock... I think...)"
$ camera.set_image("topless_away_blush")
cho "(But...)"
$ camera.set_image("topless_mid_dreamy")
cho "({bounce}*Ah*{/bounce}{heart}{heart}{heart})"
gen "Well then?"
$ camera.set_image("topless_up_wide")
#Cho stops stroking but still holding genies cock #looking at cock
cho "I...{w=0.4} I want..."
$ camera.set_image("topless_away_blush")
cho "I need..."
$ camera.set_image("topless_mid_dreamy")
gen "Go on..."
$ camera.set_image("topless_up_blush2")
cho "I need your cock in my mouth...{w=0.2} And I need to feel your cum going down my throat..."
gen "(She sure is a quick learner...)"
gen "That's it [name_cho_genie]... Now work that mouth of yours for your reward..."
$ camera.set_image("topless_mid_dreamy")
cho "{bounce}*Ah*{/bounce} Thank you, [name_genie_cho]..." #Blushes
$ camera.set_image("cho_bj topless suck medium start")
pause 2
$ camera.set_image("cho_bj topless suck medium")
call ctc
gen "*Mhm*... Suck that cock like it's the only thing between you and winning that cup..."
#Cho looks up at genie as she's sucking and starts going faster.
$ camera.set_image("cho_bj topless suck medium up")
gen "Your coach will soon reward you for all of your efforts..."
$ camera.set_image("cho_bj topless suck deep")
cho "*Glick* *Glick* *Glick*" #Looks back down on cock
gen "{shudder}*Argh*!{/shudder} You slut, I'm almost there..."
call ctc
$ camera.set_image("cho_bj topless suck closed exit")
gen "What--{w=1.0}{nw}"
pause 2.0
#Cho suddenly pulls out
$ camera.set_image("cho_hj topless up")
gen "I didn't say you could--"
cho "Cum for me [name_genie_cho]!"
$ camera.set_image("cho_hj topless up blush")
cho "I need to taste your delicious cum down my throat!"
cho "I need to swallow it all!"
$ camera.set_image("cho_bj topless suck deep start")
pause 1
$ camera.set_image("cho_bj topless suck deep")
call ctc
gen "That's it [name_cho_genie], get ready for your reward!"
$ camera.set_image("cho_bj topless suck medium")
call ctc
$ camera.set_image("cho_bj topless suck medium up")
gen "Open up [name_cho_genie], here it comes!" #large text
gen "{shudder}*ARGH*!{/shudder}"
with vpunch
$ camera.set_image("cho_bj topless cum mouth")
pause 0.5
$ camera.set(zoom=0.45, pos=(150, 70), t=1.0)
pause 1.5
$ camera.set_imagepath("cho_bj/kneel/")
$ camera.set_image("topless_mid_cum_mouth")
pause 1
gen "{bounce}*Ah*...{/bounce}" #Genie pulls out
call ctc
$ camera.set_image("topless_mid_full_worried2")
gen "Don't swallow yet!"
cho "*Mfff*..." #Mouth full
gen "Good...{w=0.4} Now play with it with your tongue."
$ camera.set_image("topless_mid_full_worried")
cho "....{w}......{w}....."
gen "Now you can swallow."
pause 1
$ camera.set_image("topless_mid_full_angry")
pause 1
play sound "sounds/gulp.ogg"
$ camera.set_image("topless_mid_full_swallowed2", trans=d5)
pause 1.5
$ camera.set_image("topless_mid_full_swallowed")
gen "I hope you liked your reward."
gen "On your feet, [name_cho_genie]."
$ camera.set(zoom=1.0, pos=(300, 400), t=5.0, pause=True)
# Set cum on doll and strip her
$ cho.set_cum(face="light")
$ cho.strip("robe", "top", "bra")
hide screen animatedCG
with fade
if states.cho.ev.suck_it.variant in ("taste", "points"):
cho @ cheeks blush "I...{w=0.4} I did it...{w=0.4} I swallowed your cum [name_genie_cho]." ("base", "happyCl", "base", "mid", trans=d3)
gen "As expected." ("base", xpos="far_left", ypos="head")
gen "But an improvement from last time nevertheless..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Thank you [name_genie_cho]..." ("base", "narrow", "base", "down")
elif states.cho.ev.suck_it.variant == "swallow":
cho @ cheeks blush "I...{w=0.4} I hope you liked it [name_genie_cho]." ("base", "narrow", "base", "down", trans=d3)
else: # states.cho.ev.suck_it.variant == throat - Using `else` as a fallback for degenerates that use cheats
cho @ cheeks blush "I...{w=0.4} I did it..." ("base", "narrow", "base", "down", trans=d3)
gen "And without my help this time." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Your...{w=0.4} Your cum...{w=0.4} was delicious [name_genie_cho]..." ("soft", "closed", "base", "mid")
gen "That's right [name_cho_genie]... and if you keep doing such a good job there's even more where that came from..." ("grin", xpos="far_left", ypos="head")
gen "You can stop talking dirty now." ("base", xpos="far_left", ypos="head")
cho @ cheeks heavy_blush "I wasn't--" ("open", "narrow", "base", "down") #blush, looking right
cho @ cheeks heavy_blush "Yes, [name_genie_cho]..." ("upset", "narrow", "base", "R")
cho @ cheeks blush "So...{w=0.4} Is that all?" ("soft", "narrow", "base", "R")
gen "For now..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Okay then..." ("soft", "base", "base", "mid")
play sound "sounds/cloth_sound2.ogg"
$ cho.wear("all")
$ cho.set_cum(None)
with fade
if states.env.daytime:
cho @ cheeks blush "In that case, I'll head back to class." ("open", "base", "base", "R")
else:
cho "I'll head back to my dorms then..." ("base", "base", "base", "mid")
gen "Of course...{w=0.4} you better be ready for next time..." ("base", xpos="far_left", ypos="head")
cho @ cheeks blush "Next...{w=0.4} Yes [name_genie_cho]..." ("horny", "narrow", "base", "down")
call cho_walk("door", "base")
cho @ cheeks heavy_blush "(He's so commanding...)" ("horny", "narrow", "base", "R", flip=True, trans=d3) # horny
if states.her.status.blowjob:
cho @ cheeks heavy_blush "(No wonder why Hermione is doing this...)" ("horny", "closed", "base", "mid")
gen "[name_cho_genie]." ("base", xpos="far_left", ypos="head")
call cho_chibi("stand", "door", "base", flip=False)
cho "" (flip=False, trans=d5)
cho @ cheeks heavy_blush "Yes... Sorry!" ("mad", "base", "base", "L") #Heavy Blush
cho @ cheeks heavy_blush "Bye then!" ("soft", "happyCl", "base", "mid") #Heavy Blush
call cho_walk(action="leave")
pause 1
gen "(Turns out I'm a better coach than I gave myself credit for.)" ("base", xpos="far_left", ypos="head")
gen "(Time for the next step!)" ("grin", xpos="far_left", ypos="head")
$ states.cho.status.gokkun = True
jump end_cc_pf_blowjob