define character.genie_say = Character(_("Genie"), show_icon="genie") init python: def gen(what, face=None, xpos=None, ypos=None, pos=None, flip=None, trans=None, animation=False, **kwargs): redraw = False tag = "genie_main" layer = "dolls" side = None #showing = renpy.showing(name=tag, layer=layer) if xpos is not None or ypos is not None: xpos = states.gen.image.xpos if xpos is None else sprite_pos.get("x").get(xpos, xpos) ypos = states.gen.image.ypos if ypos is None else sprite_pos.get("y").get(ypos, ypos) states.gen.image.xpos = xpos states.gen.image.ypos = ypos head_ypos = sprite_pos.get("y").get("head") far_xpos = sprite_pos.get("x").get("far_left") if states.gen.image.ypos in ("head", head_ypos): states.gen.image.offset = (-25, 630) else: states.gen.image.offset = (0, 600) if face: variant = f"genie {face}" renpy.set_tag_attributes(variant) side = "genie" at_list = [] if animation: at_list.append(animation) if renpy.showing("genie", layer=layer): renpy.show(variant, layer=layer, tag="genie", at_list=at_list) renpy.with_statement({"dolls": trans or d1}) if flip is not None: states.gen.image.xzoom = -1 if flip else 1 if what: character.genie_say(what, image=side, **kwargs) label update_genie: $ states.gen.image.xzoom = 1 $ states.gen.image.zorder = 15 call gen_chibi("sit_behind_desk") return