define her_face = { "mouth": { "neutral": ["annoyed","base"], "happy": ["smile","grin"], "naughty": ["base","soft"], "horny": ["base","grin","soft"], "annoyed": ["annoyed"], "disgusted": ["disgust","clench","annoyed"], "angry": ["angry","clench","mad"] }, "eyes": { "neutral": ["base"], "happy": ["base","base","happyCl"], "naughty": ["narrow","base"], "horny": ["narrow"], "annoyed": ["narrow"], "disgusted": ["narrow"], "angry": ["narrow","base"] }, "eyebrows": { "neutral": ["base"], "happy": ["base"], "naughty": ["base"], "horny": ["base"], "annoyed": ["worried"], "disgusted": ["base", "angry"], "angry": ["angry"] }, "pupils": { "neutral": ["mid","L","R"], "happy": ["mid_soft","L_soft","R_soft"], "naughty": ["mid_soft"], "horny": ["mid","L","R","down","up"], "annoyed": ["mid","R"], "disgusted": ["down"], "angry": ["mid"] } } label update_hermione: $ hermione_chibi.update() $ hermione.xzoom = 1 return label end_hermione_event: call her_chibi("hide") hide hermione_main with d3 pause.5 call update_hermione $ active_girl = None $ hermione_busy = True $ hermione.wear("all") $ hermione.set_cum(None) call music_block jump main_room_menu define character.hermione_say = Character("hermione_name", show_icon="hermione", dynamic=True) init python: def her(what, mouth=False, eyes=False, eyebrows=False, pupils=False, cheeks=None, tears=None, emote=None, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): redraw = False tag = hermione.tag layer = hermione.layer #showing = renpy.showing(name=tag, layer=layer) if xpos != None or ypos != None: xpos = hermione.pos[0] if xpos == None else sprite_pos.get("x").get(xpos, xpos) ypos = hermione.pos[1] if ypos == None else sprite_pos.get("y").get(ypos, ypos) hermione.pos = (xpos, ypos) redraw = True head_only = hermione.pos[1] == sprite_pos.get("y").get("head") if any((mouth, eyes, eyebrows, pupils, cheeks, tears)): hermione.set_face(mouth=mouth, eyes=eyes, eyebrows=eyebrows, pupils=pupils, cheeks=cheeks, tears=tears) redraw = True hermione.set_emote(emote) if animation != False: if isinstance(animation, list): hermione.animation = animation else: hermione.animation = [animation] redraw = True if flip != None: hermione.xzoom = -1 if flip else 1 redraw = True if redraw: hermione.show() if not renpy.in_rollback(): if trans: renpy.with_statement(trans) else: renpy.with_statement(d2) if what: character.hermione_say(what, **kwargs) if head_only: hermione.hide() label too_much: stop music fadeout 2.0 her "[genie_name]??!" ("shock", "wide", "base", "stare",xpos="mid",trans=fade) her "How could you ask for such a thing!?" her "I think I better leave." ("angry", "happyCl", "worried", "mid",emote="sweat") call her_walk(action="leave") $ _responses = [ "(*Hmm*... I guess it was a little too soon for that.)", "(Did I say something wrong...?)", "(Welp, was worth a shot I guess.)", "(Perhaps I should rethink my appraoch...)", "(Judging by her reaction she's not yet ready for it...)" ] $ renpy.say(m, renpy.random.choice(_responses)) $ her_mood += 6 jump end_hermione_event label too_much_public: stop music fadeout 2.0 her "[genie_name]??!" ("shock", "wide", "base", "stare",xpos="mid",trans=fade) her "How could you ask for such a thing!?" her "People would take me for a whore, I cannot let it happen!" her "I think I better leave." ("angry", "happyCl", "worried", "mid",emote="sweat") call her_walk(action="leave") $ _responses = [ "(*Hmm*... Maybe I should start with some easier tasks to lower her reputation first.)", "(I guess she still cares too much about her precious reputation.)", "(Silly girl still doesn't understand that her *reputation* isn't as important as she thinks.)", "(Did I ask too much of her...?)", "(She doesn't seem to be ready for this just yet.)" ] $ renpy.say(m, renpy.random.choice(_responses)) $ her_mood += 6 jump end_hermione_event