LoafyLemon
8df4960a1b
* Converted the event into new format * Fixed layering bugs * Fixed return labels * Fixed Narrator fade being applied on top of CGs * Fixed music restarting twice whenever Genie returns to the office
405 lines
11 KiB
Plaintext
405 lines
11 KiB
Plaintext
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",
|
|
)
|
|
|
|
layeredimage her_vibrators_public:
|
|
fit "cover"
|
|
fit_first True
|
|
|
|
attribute background default
|
|
|
|
group npc multiple prefix "npc":
|
|
attribute sus_ron:
|
|
"her_vibrators_public_npc_sus_ron"
|
|
attribute shock_ron:
|
|
Fixed("her_vibrators_public_npc_shock_ron", \
|
|
"her_vibrators_public_npc_shock_ron_effect")
|
|
attribute shock_harry:
|
|
Fixed("her_vibrators_public_npc_shock_harry", \
|
|
"her_vibrators_public_npc_shock_harry_effect")
|
|
|
|
attribute no_hermione null
|
|
attribute body default if_not "no_hermione"
|
|
group blush auto prefix "blush" if_not "no_hermione":
|
|
attribute neutral default
|
|
group tears auto prefix "tears" if_not "no_hermione"
|
|
group eyes auto prefix "eyes" if_not "no_hermione":
|
|
attribute forward default
|
|
group eyebrows auto prefix "eyebrows" if_not "no_hermione":
|
|
attribute neutral default
|
|
group mouth auto prefix "mouth" if_not "no_hermione":
|
|
attribute neutral default
|
|
attribute hair default if_not "no_hermione"
|
|
|
|
group wetness multiple auto prefix "wetness" if_not "no_hermione"
|
|
|
|
group vibrator_upper variant "vibrator_upper" multiple if_not "no_hermione":
|
|
attribute base default
|
|
attribute egg default at shake_xlinear
|
|
attribute tape default
|
|
attribute effect default at shake_xlinear
|
|
|
|
group vibrator_lower variant "vibrator_lower" multiple if_not "no_hermione":
|
|
attribute base default
|
|
attribute egg default at shake_xlinear
|
|
attribute tape default
|
|
attribute effect default at shake_xlinear
|
|
|
|
group underwear multiple if_not "no_hermione":
|
|
attribute bra default if_any ["underwear", "nopanties"]
|
|
attribute panties default if_any ["underwear", "nobra"]
|
|
|
|
group outfit if_not "no_hermione":
|
|
attribute uniform default
|
|
attribute underwear null
|
|
attribute nobra null
|
|
attribute nopanties null
|
|
attribute nude null
|
|
|
|
group effects auto multiple prefix "effects" if_not "no_hermione"
|
|
|
|
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)
|
|
|
|
layeredimage her_vibrators_personal hermione1:
|
|
fit "cover"
|
|
fit_first True
|
|
|
|
always "her_vibrators_personal_background"
|
|
|
|
attribute shadow default
|
|
attribute body default
|
|
group blush auto prefix "blush":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute open_forward default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute neutral default
|
|
group mouth auto prefix "mouth":
|
|
attribute horny default
|
|
attribute fringe default
|
|
|
|
group effects auto multiple prefix "effects"
|
|
|
|
group vibrator multiple variant "vibrator":
|
|
attribute base default
|
|
attribute eggl default at shake_xlinear if_not "noshake"
|
|
attribute eggr default at shake_xlinear if_not "noshake"
|
|
attribute eggl default if_any "noshake"
|
|
attribute eggr default if_any "noshake"
|
|
attribute tape default
|
|
|
|
attribute noshake null
|
|
|
|
layeredimage her_vibrators_personal hermione2:
|
|
fit "cover"
|
|
fit_first True
|
|
|
|
always "her_vibrators_personal_background"
|
|
|
|
attribute shadow default
|
|
attribute body default
|
|
group blush auto prefix "blush":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute open_forward default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute neutral default
|
|
group mouth auto prefix "mouth":
|
|
attribute horny default
|
|
attribute fringe default
|
|
|
|
group effects auto multiple prefix "effects"
|
|
|
|
group vibrator multiple variant "vibrator":
|
|
attribute base default
|
|
attribute eggl default at shake_xlinear if_not "noshake"
|
|
attribute eggr default at shake_xlinear if_not "noshake"
|
|
attribute eggm default at shake_xlinear if_not "noshake"
|
|
attribute eggl default if_any "noshake"
|
|
attribute eggr default if_any "noshake"
|
|
attribute eggm default if_any "noshake"
|
|
attribute tape default
|
|
|
|
attribute noshake null
|
|
|
|
layeredimage her_vibrators_personal hermione3:
|
|
fit "cover"
|
|
fit_first True
|
|
|
|
always "her_vibrators_personal_background"
|
|
|
|
attribute shadow default
|
|
attribute body default
|
|
group blush auto prefix "blush":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute clenched default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute worried default
|
|
group mouth auto prefix "mouth":
|
|
attribute open default
|
|
|
|
group effects auto multiple prefix "effects"
|
|
|
|
group vibrator multiple variant "vibrator":
|
|
attribute base default
|
|
attribute eggl default at shake_xlinear
|
|
attribute eggr default at shake_xlinear
|
|
|
|
layeredimage her_flash_public:
|
|
fit "cover"
|
|
|
|
always "her_flash_public_background"
|
|
|
|
group npc auto prefix "npc":
|
|
attribute pose5:
|
|
at blink_repeat # TODO: Figure out why this does not work.
|
|
|
|
group hermione auto prefix "hermione":
|
|
attribute pose1 default
|
|
|
|
group blush auto prefix "blush":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute open_forward default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute worried default
|
|
group mouth auto prefix "mouth":
|
|
attribute soft default
|
|
group effects auto prefix "effects"
|
|
|
|
transform her_flirt_public_flitwick_feather:
|
|
align (0.5, 0.5)
|
|
rotate 10
|
|
offset (-60, 40)
|
|
ease_quad 3.0 rotate 5 offset (-30, -20)
|
|
ease_quad 3.0 rotate 10 offset (-60, 40)
|
|
repeat
|
|
|
|
transform her_flirt_public_flitwick_hermione_hand:
|
|
subpixel True
|
|
|
|
align (0.5, 0.5)
|
|
rotate 1
|
|
offset (-25, 10)
|
|
pause 0.2
|
|
ease_quad 2.8 rotate -1 offset (25, 15)
|
|
ease_quad 2.8 rotate 1 offset (-25, 10)
|
|
pause 0.2
|
|
repeat
|
|
|
|
layeredimage her_flirt_public_flitwick:
|
|
fit "cover"
|
|
fit_first True
|
|
|
|
#always "her_flirt_public_flitwick_background"
|
|
always "her_flirt_public_flitwick_hermione"
|
|
|
|
attribute feather default at her_flirt_public_flitwick_feather
|
|
attribute hermione_hand default at her_flirt_public_flitwick_hermione_hand
|
|
|
|
group hermione_eyes auto prefix "eyes":
|
|
attribute forward default
|
|
group hermione_eyebrows auto prefix "eyebrows":
|
|
attribute neutral default
|
|
group hermione_mouth auto prefix "mouth":
|
|
attribute closed default
|
|
|
|
ypan 180
|
|
|
|
layeredimage her_sex_personal bent_over:
|
|
pos (0, 0)
|
|
fit_first True
|
|
|
|
always "her_sex_personal_background"
|
|
|
|
group genie auto:
|
|
attribute caress default
|
|
|
|
attribute shadow default
|
|
attribute body default
|
|
group cheeks auto prefix "cheeks":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute base default
|
|
group tears auto prefix "tears":
|
|
attribute none null default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute base default
|
|
|
|
group cum_pussy auto prefix "cum_pussy":
|
|
attribute none null default
|
|
|
|
group outfit multiple variant "outfit":
|
|
attribute stockings default
|
|
attribute skirt
|
|
attribute shirt
|
|
|
|
group mouth auto prefix "mouth":
|
|
attribute base default
|
|
|
|
group hair auto prefix "hair":
|
|
attribute normal default
|
|
|
|
attribute armfix default
|
|
|
|
group outfit multiple variant "outfit_fix":
|
|
attribute shirt
|
|
|
|
group mouth prefix "mouth" variant "fix":
|
|
attribute open_wide_tongue
|
|
attribute scream
|
|
|
|
group cum_ass auto prefix "cum_ass":
|
|
attribute none null default
|
|
|
|
group genie auto variant "armfix":
|
|
attribute caress default
|
|
|
|
always "her_sex_personal_background_clutter"
|
|
|
|
if game.daytime:
|
|
"her_sex_personal_overlay_day"
|
|
else:
|
|
"her_sex_personal_overlay_night"
|
|
|
|
layeredimage her_sex_personal lean_back:
|
|
pos (0, 0)
|
|
fit_first True
|
|
|
|
always "her_sex_personal_background"
|
|
|
|
group genie auto:
|
|
attribute caress default
|
|
|
|
attribute shadow default
|
|
attribute body default
|
|
group cheeks auto prefix "cheeks":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute base default
|
|
group tears auto prefix "tears":
|
|
attribute none null default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute base default
|
|
|
|
group hair auto prefix "hair":
|
|
attribute normal default
|
|
|
|
attribute armfix default
|
|
|
|
group outfit multiple variant "outfit":
|
|
attribute skirt
|
|
attribute shirt
|
|
|
|
attribute armfix2 default if_any ["skirt"]
|
|
|
|
attribute breastfix default if_not "shirt"
|
|
|
|
group mouth auto prefix "mouth":
|
|
attribute base default
|
|
|
|
group genie auto variant "armfix"
|
|
|
|
always "her_sex_personal_background_clutter"
|
|
|
|
if game.daytime:
|
|
"her_sex_personal_overlay_day"
|
|
else:
|
|
"her_sex_personal_overlay_night"
|
|
|
|
layeredimage her_sex_personal lean_forward:
|
|
pos (0, 0)
|
|
fit_first True
|
|
|
|
always "her_sex_personal_background"
|
|
|
|
group genie auto:
|
|
attribute caress default
|
|
|
|
attribute body default
|
|
group cheeks auto prefix "cheeks":
|
|
attribute neutral null default
|
|
group eyes auto prefix "eyes":
|
|
attribute base default
|
|
group tears auto prefix "tears":
|
|
attribute none null default
|
|
group eyebrows auto prefix "eyebrows":
|
|
attribute base default
|
|
|
|
group hair auto prefix "hair":
|
|
attribute normal default
|
|
|
|
group outfit multiple variant "outfit":
|
|
attribute skirt
|
|
attribute shirt
|
|
|
|
attribute armfix default if_any ["shirt", "skirt"]
|
|
attribute breastfix default if_not "shirt"
|
|
|
|
group mouth auto prefix "mouth":
|
|
attribute base default
|
|
|
|
group genie auto variant "armfix":
|
|
attribute caress default
|
|
|
|
always "her_sex_personal_background_clutter"
|
|
|
|
if game.daytime:
|
|
"her_sex_personal_overlay_day"
|
|
else:
|
|
"her_sex_personal_overlay_night"
|
|
|
|
layeredimage her_forest bj:
|
|
|
|
always "her_forest_bj_background"
|
|
|
|
group myrtle auto:
|
|
attribute none null default
|
|
|
|
group hermione auto:
|
|
attribute none null default
|
|
|
|
always "her_forest_bj_overlay"
|