diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-12-08 01:19:04 +0000 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2018-12-08 01:19:04 +0000 |
commit | 641e4bbb459e1e8ca7c982b7f1618674461224df (patch) | |
tree | 064a65aceddcf66e90c3b1ae4e3b162477ee67cb /scripts/toy.groovy | |
parent | Assume toy will return dressed after bedtime (diff) | |
download | toy-641e4bbb459e1e8ca7c982b7f1618674461224df.zip |
Add a variety of ways to cum... or be denied.
Diffstat (limited to 'scripts/toy.groovy')
-rw-r--r-- | scripts/toy.groovy | 88 |
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 { |