init 5 python: def her_cg_doll_fix(st, at): """Used to fix the jaw issues on bent-over pose""" face = hermione.get_face() mouth = face["mouth"] if hermione.pose == "CG_bent_over" and mouth in ("scream", "open_wide_tongue"): return Image("images/CG/her_sex/{}.webp".format(mouth)), None return Null(), None def gen_cg_doll(st, at): d = Image("{}genie_{}.webp".format(genie_doll_path, genie_doll)) return d, None default genie_doll_path = "images/CG/her_sex/" default genie_doll = "hold" default genie_doll_armfix = "images/CG/her_sex/hold_armfix.webp" image CG genie_armfix = DynamicImage("[genie_doll_armfix]") image CG her_doll_fix = DynamicDisplayable(her_cg_doll_fix) image CG gen_doll = DynamicDisplayable(gen_cg_doll) image CG her_sex = Fixed( "images/CG/her_sex/background.webp", "CG gen_doll", "CG her_doll", "CG her_doll_fix", "images/CG/her_sex/foreground.webp", "CG genie_armfix", ) image CG her_intro hermione = Fixed( "images/CG/her_intro/bg.webp", AlphaMask(Composite((2160, 1200), (880, -180), Transform("CG her_doll", zoom=1.2)), "images/CG/her_intro/mask.webp"), ) image CG her_intro hermione bendover = Fixed( "images/CG/her_intro/bg.webp", "images/CG/her_intro/hermione_bendover.webp", ) image CG breast expand corridor A1: "images/CG/her_potions/breast_expand/corridor_a1.webp" image CG breast expand corridor B1: "images/CG/her_potions/breast_expand/corridor_b1.webp" image CG breast expand classroom A1: "images/CG/her_potions/breast_expand/classroom_a1.webp" image CG breast expand classroom A2: "images/CG/her_potions/breast_expand/classroom_a2.webp" image CG breast expand classroom B1: "images/CG/her_potions/breast_expand/classroom_b1.webp" image CG breast expand classroom B2: "images/CG/her_potions/breast_expand/classroom_b2.webp" image CG ass expand classroom A1: "images/CG/her_potions/ass_expand/classroom_a1.webp" image CG ass expand classroom A2: "images/CG/her_potions/ass_expand/classroom_a2.webp" layeredimage her_vibrators_public: fit "cover" attribute background default # TODO NPC reactions attribute body default group blush auto prefix "blush": attribute neutral default group tears auto prefix "tears" group eyes auto prefix "eyes": attribute forward default group eyebrows auto prefix "eyebrows": attribute neutral default group mouth auto prefix "mouth": attribute neutral default attribute hair default group wetness auto prefix "wetness" group vibrator_upper multiple variant "vibrator_upper": attribute base default attribute egg default if_any ["nude" "nobra"] attribute tape default if_any ["nude" "nobra"] attribute effect default if_any ["nude" "nobra"] group vibrator_lower multiple variant "vibrator_lower": attribute base default attribute egg default if_any ["nude" "nopanties"] attribute tape default if_any ["nude" "nopanties"] attribute effect default if_any ["nude" "nopanties"] group underwear multiple: attribute bra default if_any ["underwear", "nopanties"] attribute panties default if_any ["underwear", "nobra"] group outfit: attribute uniform default attribute underwear null attribute nobra null attribute nopanties null attribute nude null image her_vibrators_public_proxy = LayeredImageProxy("her_vibrators_public") image her_vibrators_public_xray = Xray("her_vibrators_public", "her_vibrators_public_proxy", radius=0.18)