Unify and simplify kinetic text effect func

This commit is contained in:
LoafyLemon 2024-11-07 12:40:49 +00:00
parent a267ebabba
commit d66866aecb
8 changed files with 41 additions and 78 deletions

View File

@ -42,7 +42,7 @@ label ast_reaction_category_fail(category):
label ast_reaction_touch(what): label ast_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
random: random:
block: block:
@ -55,7 +55,7 @@ label ast_reaction_touch(what):
gen "*Err*..." ("base", xpos="far_left", ypos="head") gen "*Err*..." ("base", xpos="far_left", ypos="head")
ast "When people called you eccentric I didn't think they meant bonkers mad..." ("clench", "closed", "base", "down") ast "When people called you eccentric I didn't think they meant bonkers mad..." ("clench", "closed", "base", "down")
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
random: random:
block: block:
@ -68,7 +68,7 @@ label ast_reaction_touch(what):
block: block:
ast "Gross..." ("annoyed", "narrow", "base", "mid") ast "Gross..." ("annoyed", "narrow", "base", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
random: random:
block: block:

View File

@ -57,7 +57,7 @@ label cho_reaction_category_fail(category):
label cho_reaction_touch(what): label cho_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
if states.cho.level < 10: #Pre Slytherin match (after hufflepuff match) if states.cho.level < 10: #Pre Slytherin match (after hufflepuff match)
random: random:
@ -89,7 +89,7 @@ label cho_reaction_touch(what):
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
if states.cho.level < 16: # Before Gryffindor match if states.cho.level < 16: # Before Gryffindor match
random: random:
@ -111,7 +111,7 @@ label cho_reaction_touch(what):
cho @ cheeks blush "Glad you appreciate them as much as I do..." ("smile", "wink", "base", "mid") cho @ cheeks blush "Glad you appreciate them as much as I do..." ("smile", "wink", "base", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
if states.cho.level < 16: #Before Gryffindor match if states.cho.level < 16: #Before Gryffindor match
random: random:

View File

@ -56,7 +56,7 @@ label her_reaction_category_fail(category):
label her_reaction_touch(what): label her_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
if states.her.level >= 20: if states.her.level >= 20:
#craving it #craving it
@ -90,7 +90,7 @@ label her_reaction_touch(what):
her "Why are you doing that?" ("clench", "base", "base", "R") her "Why are you doing that?" ("clench", "base", "base", "R")
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
if states.her.level >= 20: if states.her.level >= 20:
random: random:
@ -112,7 +112,7 @@ label her_reaction_touch(what):
her @ cheeks blush "I guess a small kiss is fine..." ("annoyed", "base", "base", "R") her @ cheeks blush "I guess a small kiss is fine..." ("annoyed", "base", "base", "R")
her @ cheeks blush "That's not my cheek..." ("disgust", "narrow", "base", "mid") her @ cheeks blush "That's not my cheek..." ("disgust", "narrow", "base", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
if hermione.is_worn("bottom"): if hermione.is_worn("bottom"):
# Bottoms only OR Bottoms AND panties # Bottoms only OR Bottoms AND panties

View File

@ -51,7 +51,7 @@ label lun_reaction_category_fail(category):
label lun_reaction_touch(what): label lun_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
if states.lun.tier == 5: if states.lun.tier == 5:
random: random:
@ -102,7 +102,7 @@ label lun_reaction_touch(what):
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
if states.lun.tier == 5: if states.lun.tier == 5:
random: random:
@ -149,7 +149,7 @@ label lun_reaction_touch(what):
lun "Sorry [name_genie_luna], your beard is tickling me..." ("smile", "base", "base", "mid") lun "Sorry [name_genie_luna], your beard is tickling me..." ("smile", "base", "base", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
if states.lun.tier == 5: if states.lun.tier == 5:
random: random:

View File

@ -38,7 +38,7 @@ label sus_reaction_category_fail(category):
label sus_reaction_touch(what): label sus_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
random: random:
sus "S--{w=0.2} Sir..." ("soft", "base", "base", "mid") sus "S--{w=0.2} Sir..." ("soft", "base", "base", "mid")
@ -46,14 +46,14 @@ label sus_reaction_touch(what):
sus @ cheeks blush "Professor, p--{w=0.2} please..." ("base", "base", "sad", "downR") sus @ cheeks blush "Professor, p--{w=0.2} please..." ("base", "base", "sad", "downR")
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
random: random:
sus @ cheeks blush "W--{w=0.2} Why are you..." ("soft", "happy", "sad", "stare") sus @ cheeks blush "W--{w=0.2} Why are you..." ("soft", "happy", "sad", "stare")
sus @ cheeks blush "P--{w=0.2} please, it's embarrassing..." ("angry", "happy", "sad", "downR") sus @ cheeks blush "P--{w=0.2} please, it's embarrassing..." ("angry", "happy", "sad", "downR")
sus @ cheeks blush "D--{w=0.2} don't... Don't look at me, sir..." ("soft", "closed", "sad", "mid") sus @ cheeks blush "D--{w=0.2} don't... Don't look at me, sir..." ("soft", "closed", "sad", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
random: random:
sus @ cheeks blush "M--{w=0.2} My..." ("soft", "happy", "sad", "stare") sus @ cheeks blush "M--{w=0.2} My..." ("soft", "happy", "sad", "stare")

View File

@ -52,7 +52,7 @@ label ton_reaction_category_fail(category):
label ton_reaction_touch(what): label ton_reaction_touch(what):
if what == "head": if what == "head":
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
random: random:
ton "Is this what you do to our students? A bit tame, don't you think?" ("soft", "narrow", "base", "mid") ton "Is this what you do to our students? A bit tame, don't you think?" ("soft", "narrow", "base", "mid")
@ -66,7 +66,7 @@ label ton_reaction_touch(what):
ton "Don't you dare touch my elbows next..." ("soft", "narrow", "base", "mid") ton "Don't you dare touch my elbows next..." ("soft", "narrow", "base", "mid")
elif what == "breasts": elif what == "breasts":
$ mouse_boing() $ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
random: random:
ton "*Mmm*..." ("base", "narrow", "base", "up") ton "*Mmm*..." ("base", "narrow", "base", "up")
@ -76,7 +76,7 @@ label ton_reaction_touch(what):
ton "I don't remember this being part of the job description..." ("horny", "narrow", "shocked", "down") ton "I don't remember this being part of the job description..." ("horny", "narrow", "shocked", "down")
ton "But I'll look the other way for now..." ("grin", "closed", "base", "mid") ton "But I'll look the other way for now..." ("grin", "closed", "base", "mid")
elif what == "vagina": elif what == "vagina":
$ mouse_heart() $ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
random: random:
ton "A gentleman usually doesn't kiss on the lips, but I'll allow it..." ("soft", "closed", "base", "mid") ton "A gentleman usually doesn't kiss on the lips, but I'll allow it..." ("soft", "closed", "base", "mid")
@ -97,11 +97,11 @@ label ton_reaction_touch_fail(what):
block: block:
ton "Hey, don't do that!" ("open", "narrow", "base", "mid") ton "Hey, don't do that!" ("open", "narrow", "base", "mid")
ton "Let me pet you instead." ("base", "narrow", "angry", "mid") ton "Let me pet you instead." ("base", "narrow", "angry", "mid")
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
pause 0.35 pause 0.35
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
pause 0.35 pause 0.35
$ mouse_headpat() $ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
ton "Good boy!" ("horny", "narrow", "base", "mid") ton "Good boy!" ("horny", "narrow", "base", "mid")
elif what == "breasts": elif what == "breasts":

View File

@ -106,6 +106,25 @@ init -1 python:
return score return score
def show_kinetic_text(text, style="what_centered_small", pos=None, anchor=(0.5, 0.6), zoom=1.0, sound=None, trans=None, timer=1):
if pos is None:
start_x, start_y = renpy.get_mouse_pos()
else:
start_x, start_y = pos
target_x, target_y = start_x, start_y-15
xanchor, yanchor = anchor
if sound:
renpy.play(sound)
if trans:
d = At(At(Text(text, style=style), trans), random_rotation) # We need to do this in two steps because of the rotation
else:
d = At(Text(text, style=style), random_rotation)
renpy.show_screen("gfx_effect", start_x=start_x, start_y=start_y, target_x=target_x, target_y=target_y, img=d, xanchor=xanchor, yanchor=yanchor, zoom=zoom, timer=timer)
def mouse_slap(): def mouse_slap():
"""Causes the mouse to be moved away from current position and displays a smoke effect""" """Causes the mouse to be moved away from current position and displays a smoke effect"""
renpy.play('sounds/slap.ogg') renpy.play('sounds/slap.ogg')
@ -116,36 +135,6 @@ init -1 python:
renpy.show_screen("gfx_effect", start_x=x, start_y=y, target_x=xx, target_y=yy, img="smoke", xanchor=0.1, yanchor=0.7, zoom=0.2, duration=0.15) renpy.show_screen("gfx_effect", start_x=x, start_y=y, target_x=xx, target_y=yy, img="smoke", xanchor=0.1, yanchor=0.7, zoom=0.2, duration=0.15)
renpy.set_mouse_pos(xx, yy, duration=0.1) renpy.set_mouse_pos(xx, yy, duration=0.1)
def mouse_headpat():
"""Causes the mouse to be moved away from current position and displays a heart effect"""
renpy.play("sounds/slap_03.ogg")
renpy.stop_predict_screen("gfx_effect")
x, y = renpy.get_mouse_pos()
xx, yy = x, y-15
img = At(Text(_("{shudder}*pat*{/shudder}")), random_rotation)
renpy.hide_screen("gfx_effect")
renpy.show_screen("gfx_effect", start_x=x, start_y=y, target_x=xx, target_y=yy, img=img, xanchor=0.5, yanchor=0.65, zoom=1.0, timer=1)
def mouse_boing():
"""Causes the mouse to be moved away from current position and displays a heart effect"""
renpy.play('sounds/boing02.ogg')
renpy.stop_predict_screen("gfx_effect")
x, y = renpy.get_mouse_pos()
xx, yy = x, y-15
img = At(Text(_("{shake}*boing*{/shake}")), random_rotation)
renpy.hide_screen("gfx_effect")
renpy.show_screen("gfx_effect", start_x=x, start_y=y, target_x=xx, target_y=yy, img=img, xanchor=0.5, yanchor=0.65, zoom=1.0, timer=1)
def mouse_heart():
"""Causes the mouse to be moved away from current position and displays a heart effect"""
renpy.play('sounds/drooling.ogg')
renpy.stop_predict_screen("gfx_effect")
x, y = renpy.get_mouse_pos()
xx, yy = x, y-15
img = At(At(Text(_("*squelch*"), style="what_centered_small"), squeeze_hearts), random_rotation)
renpy.hide_screen("gfx_effect")
renpy.show_screen("gfx_effect", start_x=x, start_y=y, target_x=xx, target_y=yy, img=img, xanchor=0.5, yanchor=0.65, zoom=1.0, timer=1)
def wardrobe_fail_hint(value): def wardrobe_fail_hint(value):
"""Displays required whoring/friendship/affection level.""" """Displays required whoring/friendship/affection level."""
word_list = {"tonks": "friendship", "astoria": "affection", "susan": "confidence", "luna": "corruption", "cho": "recklessness", "hermione": "whoring"} word_list = {"tonks": "friendship", "astoria": "affection", "susan": "confidence", "luna": "corruption", "cho": "recklessness", "hermione": "whoring"}
@ -159,32 +148,6 @@ init -1 python:
renpy.with_statement(d3) renpy.with_statement(d3)
return return
def list_outfit_files():
@functools.cache
def build_button(rp):
style = "wardrobe_button"
child = Fixed(Transform(rp, xsize=96, fit="contain", yalign=1.0, yoffset=-6), Frame(gui.format("interface/frames/{}/iconframe.webp"), 6, 6), xysize=(96, 168))
action = Return(["import", rp])
hover_foreground = "#ffffff80"
return Button(child=child, action=action, hover_foreground=hover_foreground, style=style)
path = f"{config.gamedir}/outfits/"
if not os.path.exists(path):
os.makedirs(path)
files = []
for f in os.listdir(path):
fp = os.path.join(path, f)
rp = os.path.relpath(fp, config.gamedir).replace("\\", "/")
if os.path.isfile(os.path.join(path, f)) and f.endswith(".png"):
files.append(build_button(rp))
return files
transform squeeze_hearts: transform squeeze_hearts:
animation animation
subpixel True subpixel True

View File

@ -309,8 +309,8 @@ init python in wardrobe:
delete_action = renpy.store.Function(renpy.store.colorpicker.cp.remove_favorite, i) if col else renpy.store.NullAction() delete_action = renpy.store.Function(renpy.store.colorpicker.cp.remove_favorite, i) if col else renpy.store.NullAction()
save_action = renpy.store.Function(renpy.store.colorpicker.cp.add_favorite, i, renpy.store.colorpicker.cp.live_color) save_action = renpy.store.Function(renpy.store.colorpicker.cp.add_favorite, i, renpy.store.colorpicker.cp.live_color)
d = { d = {
_("Select"): (renpy.store.Text("✅", align=(0.5, 0.5)), [exit_action, select_action]),
_("Delete"): (renpy.store.Text("❌", align=(0.5, 0.5)), [exit_action, delete_action]), _("Delete"): (renpy.store.Text("❌", align=(0.5, 0.5)), [exit_action, delete_action]),
_("Select"): (renpy.store.Text("✅", align=(0.5, 0.5)), [exit_action, select_action]),
} }
if col: if col: