Spanking
This commit is contained in:
parent
dfa36937e5
commit
cd23aa6914
@ -4,6 +4,7 @@ define ast_requirements = {
|
||||
"category piercings & tattoos": 16,
|
||||
"touch head": 4,
|
||||
"touch breasts": 12,
|
||||
"touch ass": 12,
|
||||
"touch vagina": 18,
|
||||
"unequip panties": 15,
|
||||
"unequip bra": 15,
|
||||
@ -68,7 +69,7 @@ label ast_reaction_touch(what):
|
||||
block:
|
||||
ast "Gross..." ("annoyed", "narrow", "base", "mid")
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
random:
|
||||
block:
|
||||
@ -82,6 +83,8 @@ label ast_reaction_touch(what):
|
||||
block:
|
||||
ast "Thought you could slip past my wards, did you?" ("clench", "base", "base", "mid")
|
||||
ast @ cheeks blush "I'll have you know I felt none of that!" ("open", "closed", "base", "mid")
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("{shake}*spank*{/shake}"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
|
||||
return
|
||||
|
||||
@ -151,6 +154,8 @@ label ast_reaction_touch_fail(what):
|
||||
ast "Don't be gross, [name_genie_astoria]." ("base", "base", "base", "mid")
|
||||
block:
|
||||
ast "..." ("clench", "closed", "base", "mid")
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
return
|
||||
|
||||
label ast_reaction_equip(item):
|
||||
|
@ -4,6 +4,7 @@ define cho_requirements = {
|
||||
"category piercings & tattoos": 16,
|
||||
"touch head": 4,
|
||||
"touch breasts": 10, #Start of Gryffindor match leadup tier
|
||||
"touch ass": 10,
|
||||
"touch vagina": 15, #Highest level of Gryffindor match leadup tier
|
||||
"unequip panties": 15,
|
||||
"unequip bra": 15,
|
||||
@ -111,7 +112,7 @@ label cho_reaction_touch(what):
|
||||
cho @ cheeks blush "Glad you appreciate them as much as I do..." ("smile", "wink", "base", "mid")
|
||||
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
if states.cho.level < 16: #Before Gryffindor match
|
||||
random:
|
||||
@ -125,8 +126,8 @@ label cho_reaction_touch(what):
|
||||
cho @ cheeks blush "There's two more you know..." ("smile", "wink", "base", "mid")
|
||||
|
||||
cho @ cheeks blush "Careful or I might lock my thighs around your neck and keep you there..." ("soft", "narrow", "base", "mid")
|
||||
|
||||
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("{shake}*spank*{/shake}"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
return
|
||||
|
||||
label cho_reaction_touch_fail(what):
|
||||
@ -158,6 +159,8 @@ label cho_reaction_touch_fail(what):
|
||||
cho "You'd have to be a lot faster to get even close to getting away with that..." ("crooked_smile", "narrow", "angry", "mid")
|
||||
cho "Nice try..." ("soft", "narrow", "angry", "mid")
|
||||
cho "No foul play, [name_genie_cho]..." ("angry", "narrow", "angry", "mid")
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
|
||||
return
|
||||
|
||||
|
@ -4,6 +4,7 @@ define her_requirements = {
|
||||
"category piercings & tattoos": 16,
|
||||
"touch head": 4,
|
||||
"touch breasts": 12,
|
||||
"touch ass": 12,
|
||||
"touch vagina": 18,
|
||||
"unequip panties": 15,
|
||||
"unequip bra": 14,
|
||||
@ -112,7 +113,7 @@ label her_reaction_touch(what):
|
||||
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")
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
if hermione.is_worn("bottom"):
|
||||
# Bottoms only OR Bottoms AND panties
|
||||
@ -135,6 +136,8 @@ label her_reaction_touch(what):
|
||||
##This could play after touching her enough times this wardrobe session##
|
||||
#her "*Nnngh*..." ("base", "base", "base", "mid")
|
||||
#with kissiris
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("{shake}*spank*{/shake}"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
|
||||
return
|
||||
|
||||
@ -164,6 +167,8 @@ label her_reaction_touch_fail(what):
|
||||
her "Unhand me..." ("mad", "wide", "angry", "mid")
|
||||
her @ cheeks blush "Stop it please..." ("open", "happyCl", "angry", "mid")
|
||||
her "Hands off me." ("clench", "narrow", "angry", "mid")
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
return
|
||||
|
||||
label her_reaction_equip(item):
|
||||
|
@ -2,9 +2,9 @@ define lun_requirements = {
|
||||
"category upper undergarment": 7,
|
||||
"category lower undergarment": 7,
|
||||
"category piercings & tattoos": 13,
|
||||
# "touch head":
|
||||
# "touch breasts":
|
||||
# "touch vagina":
|
||||
"touch head": 0,
|
||||
"touch breasts": 0,
|
||||
"touch vagina": 0,
|
||||
"unequip panties": 7,
|
||||
"unequip bra": 7,
|
||||
"unequip top": 4,
|
||||
@ -149,7 +149,7 @@ label lun_reaction_touch(what):
|
||||
lun "Sorry [name_genie_luna], your beard is tickling me..." ("smile", "base", "base", "mid")
|
||||
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
if states.lun.tier == 5:
|
||||
random:
|
||||
@ -181,6 +181,8 @@ label lun_reaction_touch(what):
|
||||
block:
|
||||
lun "{bounce}*Ooohh*...{/bounce}" ("grin", "base", "base", "up")
|
||||
lun "I don't think anyone has ever kissed me there before... How strange..." ("grin", "closed", "base", "mid")
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("{shake}*spank*{/shake}"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
return
|
||||
|
||||
label lun_reaction_touch_fail(what): #Not used
|
||||
@ -201,6 +203,8 @@ label lun_reaction_touch_fail(what): #Not used
|
||||
$ mouse_slap()
|
||||
|
||||
lun "*Ah* [name_genie_luna], please don't tease me, wrackspurts have been terribly active today, and I'm barely able to withhold as it is."
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
|
||||
return
|
||||
|
||||
|
@ -4,6 +4,7 @@ define sus_requirements = {
|
||||
"category piercings & tattoos": 16,
|
||||
"touch head": 4,
|
||||
"touch breasts": 12,
|
||||
"touch ass": 12,
|
||||
"touch vagina": 18,
|
||||
"unequip panties": 6,
|
||||
"unequip bra": 6,
|
||||
@ -53,12 +54,14 @@ label sus_reaction_touch(what):
|
||||
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")
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
random:
|
||||
sus @ cheeks blush "M--{w=0.2} My..." ("soft", "happy", "sad", "stare")
|
||||
sus @ cheeks blush "S--{w=0.2} Sir..." ("soft", "closed", "sad", "mid")
|
||||
sus @ cheeks blush "P--{w=0.2} please sir, it's embarrassing..." ("base", "happy", "sad", "downR")
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("{shake}*spank*{/shake}"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
|
||||
return
|
||||
|
||||
@ -82,6 +85,8 @@ label sus_reaction_touch_fail(what):
|
||||
gen "Do what?" ("base", xpos="far_left", ypos="head")
|
||||
sus @ cheeks blush "N--{w=0.2} nothing [name_genie_susan], forgive me." ("angry", "wide", "sad", "stare")
|
||||
gen "(...)" ("base", xpos="far_left", ypos="head")
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
|
||||
return
|
||||
|
||||
|
@ -4,6 +4,7 @@ define ton_requirements = {
|
||||
"category piercings & tattoos": 60,
|
||||
"touch head": 50,
|
||||
"touch breasts": 20,
|
||||
"touch ass": 20,
|
||||
"touch vagina": 40,
|
||||
#"unequip panties": 6, # Tonks does not use panties unequip limits.
|
||||
#"unequip bra": 6, # Tonks does not use bra unequip limits.
|
||||
@ -76,13 +77,18 @@ label ton_reaction_touch(what):
|
||||
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")
|
||||
elif what == "vagina":
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_hearts)
|
||||
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
||||
|
||||
random:
|
||||
ton "A gentleman usually doesn't kiss on the lips, but I'll allow it..." ("soft", "closed", "base", "mid")
|
||||
ton "*Hmm*...{w=0.3} Did I feel some tongue? Must've been my imagination..." ("horny", "narrow", "base", "down")
|
||||
ton "Is this one part of the extracurricular activities in my work contract?" ("grin", "narrow", "raised", "mid")
|
||||
ton "I didn't expect to receive a bonus today... What a nice surprise..." ("grin", "narrow", "raised", "mid")
|
||||
elif what == "ass":
|
||||
$ show_kinetic_text(_("*spank*"), sound="sounds/spank.ogg", trans=expand_text)
|
||||
|
||||
ton "*Mmm* Spank me daddy!" ("horny", "narrow", "base", "down")
|
||||
|
||||
return
|
||||
|
||||
label ton_reaction_touch_fail(what):
|
||||
@ -124,7 +130,8 @@ label ton_reaction_touch_fail(what):
|
||||
ton "Hey, who said you had permission to approach the chamber of secrets?" ("grin", "narrow", "angry", "mid")
|
||||
ton "That place is reserved for good boys and girls..." ("annoyed", "narrow", "angry", "mid")
|
||||
ton "That forest is forbidden entry for newbies... Let's get to know each other a bit better first..." ("soft", "narrow", "base", "mid")
|
||||
|
||||
elif what == "ass":
|
||||
$ mouse_slap()
|
||||
return
|
||||
|
||||
label ton_reaction_equip(item):
|
||||
|
@ -209,11 +209,13 @@ init python:
|
||||
|
||||
try:
|
||||
renpy.render_to_file(d, fpt_output, width=width, height=height, resize=True)
|
||||
except Exception as e:
|
||||
print(f"Warning! Failed to write to path: {fp}/{fn_input} - {e}")
|
||||
|
||||
image_payload.inject(fn_input, fn_output, str(exported))
|
||||
os.remove(osfp) # Remove temp file
|
||||
except Exception as e:
|
||||
print(f"Warning! Failed to write to path: {fp}/{fn_input} - {e}")
|
||||
renpy.notify("Export failed!")
|
||||
|
||||
else:
|
||||
set_clipboard(exported)
|
||||
renpy.notify("Export successful!")
|
||||
|
@ -148,7 +148,7 @@ init -1 python:
|
||||
renpy.with_statement(d3)
|
||||
return
|
||||
|
||||
transform squeeze_hearts:
|
||||
transform squeeze_text:
|
||||
animation
|
||||
subpixel True
|
||||
transform_anchor True
|
||||
@ -157,3 +157,12 @@ transform squeeze_hearts:
|
||||
easeout 0.5 xzoom 1.0
|
||||
pause 1
|
||||
repeat
|
||||
|
||||
transform expand_text:
|
||||
animation
|
||||
subpixel True
|
||||
transform_anchor True
|
||||
xzoom 0.5
|
||||
easein 0.35 xzoom 1.0
|
||||
pause 1
|
||||
repeat
|
||||
|
@ -333,7 +333,6 @@ init python in wardrobe:
|
||||
return renpy.store.Transform(item.icon, xysize=(48, 48))
|
||||
return renpy.store.Transform(item.icon, matrixcolor=renpy.store.SaturationMatrix(0)*renpy.store.BrightnessMatrix(-0.25)*renpy.store.OpacityMatrix(0.5))
|
||||
|
||||
@functools.cache
|
||||
def easteregg(character_name):
|
||||
scope = renpy.get_screen("wardrobe").scope
|
||||
character = scope["character"]
|
||||
@ -346,47 +345,57 @@ init python in wardrobe:
|
||||
head_action = renpy.store.Function(wardrobe_react,"touch", "head") if check("head") else renpy.store.Function(wardrobe_react,"touch_fail", "head")
|
||||
breasts_action = renpy.store.Function(wardrobe_react, "touch", "breasts") if check("breasts") else renpy.store.Function(wardrobe_react,"touch_fail", "breasts")
|
||||
vagina_action = renpy.store.Function(wardrobe_react, "touch", "vagina") if check("vagina") else renpy.store.Function(wardrobe_react,"touch_fail", "vagina")
|
||||
ass_action = renpy.store.Function(wardrobe_react, "touch", "ass") if check("ass") else renpy.store.Function(wardrobe_react,"touch_fail", "ass")
|
||||
|
||||
# Positions (hardcoded)
|
||||
if character_name == "tonks":
|
||||
head_box = (763, 31, 882, 160)
|
||||
breasts_box = (735, 232, 890, 310)
|
||||
vagina_box = (765, 405, 834, 466)
|
||||
ass_box = (865, 370, 942, 486)
|
||||
elif character_name == "hermione":
|
||||
head_box = (760, 14, 882, 170)
|
||||
breasts_box = (735, 232, 880, 320)
|
||||
vagina_box = (770, 387, 834, 440)
|
||||
ass_box = (856, 356, 914, 455)
|
||||
elif character_name == "cho":
|
||||
head_box = (756, 71, 863, 193)
|
||||
breasts_box = (751, 247, 856, 318)
|
||||
vagina_box = (768, 405, 826, 457)
|
||||
ass_box = (860, 387, 914, 482)
|
||||
elif character_name == "luna":
|
||||
head_box = (763, 31, 885, 165)
|
||||
breasts_box = (740, 220, 872, 310)
|
||||
vagina_box = (771, 391, 834, 444)
|
||||
ass_box = (852, 350, 912, 458)
|
||||
elif character_name == "astoria":
|
||||
head_box = (757, 64, 863, 194)
|
||||
breasts_box = (755, 254, 863, 318)
|
||||
vagina_box = (775, 410, 824, 457)
|
||||
ass_box = (853, 371, 908, 475)
|
||||
else: # Susan + fallback
|
||||
head_box = (771, 56, 871, 184)
|
||||
breasts_box = (724, 230, 882, 342)
|
||||
vagina_box = (770, 405, 850, 464)
|
||||
ass_box = (870, 376, 933, 492)
|
||||
|
||||
head_xysize = (head_box[2] - head_box[0], head_box[3] - head_box[1])
|
||||
breasts_xysize = (breasts_box[2] - breasts_box[0], breasts_box[3] - breasts_box[1])
|
||||
vagina_xysize = (vagina_box[2] - vagina_box[0], vagina_box[3] - vagina_box[1])
|
||||
ass_xysize = (ass_box[2] - ass_box[0], ass_box[3] - ass_box[1])
|
||||
|
||||
head_pos = (head_box[0], head_box[1])
|
||||
breasts_pos = (breasts_box[0], breasts_box[1])
|
||||
vagina_pos = (vagina_box[0], vagina_box[1])
|
||||
ass_pos = (ass_box[0], ass_box[1])
|
||||
|
||||
# Buttons
|
||||
head_btn = renpy.store.Button(child=renpy.store.Null(), style="wardrobe_secret", xysize=head_xysize, action=head_action)
|
||||
breasts_btn = renpy.store.Button(child=renpy.store.Null(*breasts_xysize), style="wardrobe_secret", xysize=breasts_xysize, action=breasts_action)
|
||||
vagina_btn = renpy.store.Button(child=renpy.store.Null(*vagina_xysize), style="wardrobe_secret", xysize=vagina_xysize, action=vagina_action)
|
||||
ass_btn = renpy.store.Button(child=renpy.store.Null(*ass_xysize), style="wardrobe_secret", xysize=ass_xysize, action=ass_action)
|
||||
|
||||
return [(head_btn, head_pos), (breasts_btn, breasts_pos), (vagina_btn, vagina_pos)]
|
||||
return [(head_btn, head_pos), (breasts_btn, breasts_pos), (vagina_btn, vagina_pos), (ass_btn, ass_pos)]
|
||||
|
||||
def import_outfits():
|
||||
scope = renpy.get_screen("wardrobe").scope
|
||||
@ -760,8 +769,8 @@ style wardrobe_checkbox_button_text is wardrobe_button_text:
|
||||
|
||||
# Debug only
|
||||
style wardrobe_secret:
|
||||
#background "#ff000025"
|
||||
background None
|
||||
background "#ff000025"
|
||||
# background None
|
||||
|
||||
transform wardrobe_show:
|
||||
subpixel True
|
||||
|
BIN
game/sounds/spank.ogg
(Stored with Git LFS)
Normal file
BIN
game/sounds/spank.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user