summaryrefslogtreecommitdiff
path: root/scripts/toy.groovy
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2018-12-08 01:19:04 +0000
committerDan Goodliffe <dan@randomdan.homeip.net>2018-12-08 01:19:04 +0000
commit641e4bbb459e1e8ca7c982b7f1618674461224df (patch)
tree064a65aceddcf66e90c3b1ae4e3b162477ee67cb /scripts/toy.groovy
parentAssume toy will return dressed after bedtime (diff)
downloadtoy-641e4bbb459e1e8ca7c982b7f1618674461224df.zip
Add a variety of ways to cum... or be denied.
Diffstat (limited to 'scripts/toy.groovy')
-rw-r--r--scripts/toy.groovy88
1 files changed, 86 insertions, 2 deletions
diff --git a/scripts/toy.groovy b/scripts/toy.groovy
index 119921c..67e229c 100644
--- a/scripts/toy.groovy
+++ b/scripts/toy.groovy
@@ -206,8 +206,8 @@ def expose = { imageSpec ->
wait(10);
}
};
-def mightCum = { time ->
- if (showButtonG("Sorry, mistress, I'm cumming without permission", "cumming", time) < time) {
+def mightCum = { time, reason = "without permission" ->
+ if (showButtonG("Sorry, mistress, I'm cumming $reason", "cumming", time) < time) {
playBackgroundSound(null);
sessionAborted = CUM;
present(null, [
@@ -223,6 +223,90 @@ def mightCum = { time ->
}
return false;
};
+def cumChanceDenied = {
+ present([TEASE], [
+ ["Stop!", "Nope!", "Haha! No!"],
+ ["Let go.", "Hands off!", "Hands behind your back."],
+ ["Not this time.", "Maaaaybe next time, toy."]]);
+ return mightCum(15);
+};
+def cumChanceCountdown = {
+ present([TEASE], [
+ ["OK, toy, I'm going to count you down.", "Would you like a countdown, toy?"],
+ ["Get stroking!", "Jerk it!"]]);
+ if (mightCum(5 + getRandom(5))) return true;
+ present([TITS], []);
+ def numbers = "";
+ for (def n = 10; n > 0; n--) {
+ numbers += "${n}... ";
+ show(numbers);
+ mightCum(1, "too soon");
+ if (getRandom(100) > 85) {
+ return cumChanceDenied();
+ }
+ }
+ present([TITS], [
+ ["Cum, cum", "Cum for me"],
+ ["you little slut.", "my lucky toy.", "you dirty boy."]]);
+ wait(10);
+ showButtonG("Thank you, mistress.", "ok");
+ return true;
+};
+def cumChanceWindow = {
+ present([TEASE], [
+ ["OK, toy, I'm going to give you a chance to cum.", "Would you like a small chance to cum, toy?"],
+ ["Get stroking!", "Stroke it, you'll need to be close!"],
+ ["You won't get long.", "You might not get long.", "Wait for my say so..."]]);
+ if (mightCum(15 + getRandom(60), "too soon")) return;
+ if (getRandom(5) > 0) {
+ return cumChanceDenied();
+ }
+ present([TITS], [
+ ["Cum, cum", "Cum for me"],
+ ["you little slut.", "my lucky toy.", "you dirty boy."]]);
+ def w = 4 + getRandom(4);
+ if (showButtonG("Cumming, mistress", "cumming", w) == w) {
+ w = 3;
+ present(null, [
+ ["Quickly now!", "Hurry!"]]);
+ if (showButtonG("Cumming, mistress", "cumming", w) == w) {
+ present([TEASE], [
+ ["Stop!", "Let go.", "Hands off!"],
+ ["Time's up!", "You had your chance."]]);
+ return mightCum(15, "too late");
+ }
+ }
+ wait(10);
+ showButtonG("Thank you, mistress.", "ok");
+ return true;
+};
+def cumChanceRuin = {
+ present([TEASE], [
+ ["Stroke!", "Jerk it."],
+ ["Get close to the edge, toy...", "Get yourself close..."]]);
+ if (mightCum(5 + getRandom(10), "too soon")) return;
+ for (def n = 3 + getRandom(6); n >= 0; n--) {
+ present([TITS], [
+ ["Try to cum!"]]);
+ def w = 3 + getRandom(8);
+ if (showButtonG("Cumming, mistress", "cumming", w) < w) {
+ present([TEASE], [
+ ["Hands off!", "Leave it."],
+ ["Let it all ooze out.", "You're not getting a proper release."]]);
+ wait(10);
+ showButtonG("Thank you, mistress.", "ok");
+ return true;
+ }
+ if (n > 0) {
+ present([TITS], [
+ ["Stop!", "Not now!", "Wait!"],
+ ["Hands off!", "Hands by your side."]]);
+ w = (w - 2) + getRandom(8);
+ if (mightCum(w, "but it's ruined")) return true;
+ }
+ }
+ return cumChanceDenied();
+};
def edge = { amount, imageSpec ->
def allowedTime = 128;
(getRandom(amount) + 2).times {