My breatheplay component that I scripted up for Domme:
Code:
/* Domme
* author: Lucy
* version: 1.5
* licence: CC by-NC, see http://creativecommons.org/licenses/by-nc/3.0/
* Strict Domestic discipline
*/
// Gender Dependent Values
def gender = "boy"
if(loadBoolean("intro.female")) gender = "girl"
def endReached = false
def DAY = Calendar.getInstance().get(Calendar.DAY_OF_MONTH)
def hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)
int sit = loadInteger("domme.sit")
int times = 0
int x=0
int t=0
def r = loadInteger("domme.reward")
def p = loadInteger("domme.punish")
def punish = {
->
p++
save("domme.punish",p)
}
def spank = {
message, spanks, time ->
show(""+message+"\n\n. . ")
wait(2)
(1..spanks).each {
x++
show(message+"\n\n."+x+".")
playBackgroundSound("swat.wav")
wait(time)
}}
def spanksp = {
message, spanks, time ->
show(""+message+"\n\n"+x)
wait(3)
(1..spanks).each {
x++
show(""+message+"\n\n"+x)
playBackgroundSound("swat.wav")
wait(time)
}}
def spankpp = {
message, spanks, time ->
show(pp+"\n\n"+message+"\n\n. .")
wait(2)
x=spanks
(1..spanks).each {
show(pp+"\n\n"+message+"\n\n."+x+".")
playBackgroundSound("swat.wav")
x--
t=showButton("please....",time)
}}
def waitWithCountDown = {
time ->
def startTime = getTime()
def waitedTime = getTime()-startTime
while ( waitedTime < time ) {
int minutes = (time - waitedTime) / 60
int seconds = (time - waitedTime) % 60
def minutesExtraDigit = ""
if (minutes < 10) minutesExtraDigit = "0"
def secondsExtraDigit = ""
if (seconds < 10) secondsExtraDigit = "0"
show( minutesExtraDigit + minutes + ":" + secondsExtraDigit + seconds )
waitedTime = getTime()-startTime
}}
def percentChance = { percent ->
switch(getRandom(100)){
case 0..percent:
return true
default:
return false
}
}
setImage(null)
show("")
if(loadString("domme.start")!="domme")
return "Domme/introfirst";
if(loadInteger("domme.lastday")!=DAY) {
switch(hour) {
case 0..3:
break
default:
def d = loadInteger("domme.day")
d++
save("domme.day",d)
save("domme.lastday",DAY)
return "Domme/intro"
}
}
if(loadString("domme.run")=="sleep")
return "Domme/intro";
/* ***** Script Start ***** */
switch(getRandom(5)) {
case 0: setImage("Domme/Domme22.jpg"); break
case 1: setImage("Domme/Domme23.jpg"); break
case 2: setImage("Domme/Domme24.jpg"); break
case 3: setImage("Domme/Domme25.jpg"); break
case 4: setImage("Domme/Domme26.jpg"); break
}
def startText = ""
switch(getRandom(13)) {
case 0: startText = "Ah welcome to my ass, "+loadString("intro.name")+"?\n\n"+
"Smell it!"
break
case 1: startText = "I am going to sit on your face, "+loadString("intro.name")+"?\n\n"+
"this is going to be fun!"
break
case 2: startText = "Don't you dare lick my anus without my permission, "+loadString("intro.name")+"!\n\n"+
"Otherwise you will pay. \n\n"+
"Tell me what I need to Know!"
break
case 3: startText = "Your going to smell like ass, "+loadString("intro.name")+"?"
break
case 4: startText = "Your face is going to smell like latex when I am done, \n\n"+
"tell me what you want or need, "+loadString("intro.name")+"!"
break
case 5: startText = "It's my butt on your face."
break
case 6: startText = "If I were you, I'd get all the O2 I can get slut.\n\nThe fate of your breath hangs in the balance!"; break
case 7: startText = "If I were you, I would practice everday.\n\nI'll make you pay a hefty price when you are lazy!"; break
case 8: startText = "Talk to me ..., "+loadString("intro.name")+".\n\n"+
"I'm waiting!"
break
case 9: startText = "Choose! \n\nWhat kind of breatheplay ...\n\nIt will leave you....!\n"+
"breatheless!"; break
case 10: startText = "I love to put a plasticbag over your head and watch you suffer."; break
case 11: startText = "Smell me "+loadString("intro.name")+". \n\n"+
"thats the smell of your Mistress."
break
case 12: startText = "I love the smell of latex. \n\n"+
"And you will too."
break
}
switch(getSelectedValue(startText,
["Sit on my face",
"Hold my mouth and nose shut",
"Hold your breathe",
"Clingwrap",
"",
"",
"",
"Back to training options",
"Main menu - Domme"])) {
case 0:
show("")
save("domme.run","Sit on my face")
wait(2)
if (!loadBoolean("domme.sit.0")) {
show"Ok slut for how long do you want me to smoother you for Choose!"
def smoother = getInteger("Ok slut how many minutes do you want to be smoothered by my ass for?" , 0)
show("Ok sure Slut I will smoother you for "+smoother+" minutes.\n\nEnjoy!, "+loadString("intro.name")+"!")
wait(3)
showButton("ready?, bitch")
show("Wait for the bell, hopefully you don't pass out before then slut!")
t=showButton("I cant breathe!",smoother*60)
show("")
if(t<smoother*60) {
playSound("shortwhip.wav")
show("Well that was disappointing! 1 punish point for you slut!")
p++
save("domme.punish",p)
showButton("Hope my ass smelled nice!")
return "Domme/training"
}
else {
playSound("bell.wav")
show("Nice one slut you earned 1 reward points!")
r++
save("domme.reward",r)
showButton("Nice one slut")
return "Domme/training"
}}
case 1:
show("")
save("domme.run","Hold my mouth and nose shut")
wait(2)
if (!loadBoolean("domme.sit.0")) {
show"Ok slut I am going to hold your mouth and nose shut!"
wait(5)
def heldmouth = getInteger("The good news is you get to choose how long I do it for?" , 0)
show("Ok sure Slut I will hold your mouth and nose shut for "+heldmouth+" minutes.\n\nEnjoy!, "+loadString("intro.name")+"!")
wait(3)
showButton("Ok bitch you better not cheat, take a deep breath")
show("Its great to have so much control over your breathe lol")
t=showButton("I cant breathe!",heldmouth*60)
show("")
if(t<heldmouth*60) {
playSound("shortwhip.wav")
show("Well that was disappointing! 1 punish point for you slut!")
p++
save("domme.punish",p)
showButton("I did take pleasure in suffocating you, report for more training!")
return "Domme/training"
}
else {
playSound("bell.wav")
show("Nice one slut you earned 1 reward point for allowing me to hold your mouth and nose shut!")
r++
save("domme.reward",r)
showButton("Nice one slut")
return "Domme/training"
}}
case 2:
show("")
save("domme.run","Hold your breathe")
wait(2)
if (!loadBoolean("domme.sit.0")) {
show("Ok slut, now I want you to hold your breathe for me, but first you have a choice!")
wait(5)
if(getBoolean("Yes for Display timer only or no for safety button! \n\nYour choice slut?")) {
show("Brave slut! no safety button")
def holdbreath = getInteger("How long do you want the on-screen timer for, be careful though there is no safety bell until the timer disappears?" , 0)
show("Ok sure Slut hold your breathe for "+holdbreath+" minutes until the timer disappear.\n\nEnjoy!, "+loadString("intro.name")+"!")
wait(3)
showButton("ready?, bitch")
show("Ok bitch you better not cheat, take a deep breath in!")
waitWithCountDown(holdbreath*60)
playSound("bell.wav")
show("Nice one slut you earned 1 reward point for holding your breath till the timer ran out, brave slut!")
r++
save("domme.reward",r)
showButton("Nice one slut")
return "Domme/training"}
else {
show("alright slut better be safe than sorry")
wait(3)
def holdbreath = getInteger("How long do you want to hold your breathe for?" , 0)
show("Ok sure Slut hold your breathe for "+holdbreath+" minutes.\n\nEnjoy!, "+loadString("intro.name")+"!")
showButton("ready, slut")
t=showButton("I cant breathe!",holdbreath*60)
show("")
if(t<holdbreath*60) {
playSound("shortwhip.wav")
show("Well that was disappointing! 1 punish point for you slut!")
p++
save("domme.punish",p)
showButton("I did take pleasure in suffocating you, report for more training!")
return "Domme/training"
}
else {
playSound("bell.wav")
show("Nice one slut you earned 1 reward point for holding your breathe without calling for the bell!")
r++
save("domme.reward",r)
showButton("Nice one slut")
return "Domme/training"}
}}
case 3:
show("")
save("domme.run","Clingwrap")
wait(2)
if (!loadBoolean("domme.sit.0")) {
show"Ok slut go and grab some clingwrap, were going to have some fun!"
wait(5)
def cling = getInteger("The good news is you get to choose how long I do it for?" , 0)
show("Ok sure Slut I will hold your mouth and nose shut for "+cling+" minutes.\n\nEnjoy!, "+loadString("intro.name")+"!")
wait(3)
showButton("ready?, bitch")
show("Ok bitch you better not cheat, take a deep breath!")
t=showButton("I cant breathe!",cling*60)
show("")
if(t<cling*60) {
playSound("shortwhip.wav")
show("Well that was disappointing! 1 punish point for you slut!")
p++
save("domme.punish",p)
showButton("I did take pleasure in suffocating you, report for more training!")
return "Domme/training"
}
else {
playSound("bell.wav")
show("Nice one slut you earned 1 reward point for allowing me to hold your mouth and nose shut!")
r++
save("domme.reward",r)
showButton("Nice one slut")
return "Domme/training"
}}
case 4:
show("")
save("domme.run","report")
wait(2)
if(percentChance(40)) {
return "Domme/popup"
}
else {
return "Domme/report"
}
case 5:
show("")
save("domme.run","settings")
wait(2)
if(percentChance(60)) {
return "Domme/popup"
}
else {
return "Domme/settings"
}
break
case 6:
show("")
save("domme.run","status")
wait(2)
if(percentChance(70)) {
return "Domme/popup"
}
else {
return "Domme/status"
}
break
case 7:
show("")
save("domme.run","Back to training option")
wait(2)
if(percentChance(40)) {
return "Domme/training"
}
else {
return "Domme/training"
}
break
case 8:
show("")
save("domme.run","domme")
wait(2)
if(percentChance(100)) {
return "Domme/popup"
}
else {
return "Domme"
}
break
default:
show("")
wait(2)
return "Domme"
}
// End Script
setImage(null);
show("");
return null;
/*** End of the Script ***/
/*
/*** End of the Script ***/
/*
* Resources
* scripts/Domme.groovy
* scripts/Domme/*
* images/Domme/*
* images/Domme/toys/*
*/
The reward and punishment are working its just implementing more. Still wip so dont use it yet just wanted to share the code. Havent found a way to show on screen timer and button at the same time kinda had to create a workaround.