From 7df3916ea12dcd8f6e9763a3dd1c5b029bed24b8 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 23 Jun 2019 12:52:47 +0100 Subject: Extract orgasm control into a module --- scripts/toy.groovy | 134 +---------------------------------------------------- 1 file changed, 1 insertion(+), 133 deletions(-) (limited to 'scripts/toy.groovy') diff --git a/scripts/toy.groovy b/scripts/toy.groovy index 7ca5beb..82427ac 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -296,122 +296,6 @@ return new Object() { } return null; }; - // Return whether toy came or not - def mightCum = { time, lenient = false, reason = "without permission" -> - final taken = showButtonG("Sorry, ${dommeTitle()}, I'm cumming $reason", "cumming", time); - if (taken < time) { - playBackgroundSound(null); - if (lenient && taken < 2) { - present(null, [ - ["Awww.", "Damn."], - ["That was close;", "I'll let you have that one;"], - ["And I was looking forward to punishing you.", "No punishment this time."]]); - } - else { - present(null, [ - ["Bah!", "Pfft. I'm very disappointed in you."], - ["Ruin it.", "Don't touch it."]]); - sessionAborted = CUM; - adjustPunish(80); - } - adjustPunish(taken * 10); - wait(10); - present([DRESSED], [["Clean up your mess!"]]); - showButtonG("Yes, ${dommeTitle()}", "ok"); - wait(10); - showButtonG("Cleaned up, ${dommeTitle()}, back", "back"); - return true; - } - return false; - }; - // Return whether toy came or not, despite being denied - def cumChanceDenied = { lenient = false -> - present([TEASE], [ - ["Stop!", "Nope!", "Haha! No!"], - ["Let go.", "Hands off!", "Hands behind your back."], - ["Not this time.", "Maaaaybe next time, toy."]]); - return mightCum(15, lenient); - }; - 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, false, "too soon"); - if (getRandom(100) > 85 || !can(CUM)) { - return cumChanceDenied(); - } - } - present([TITS], [ - ["Cum, cum", "Cum for me"], - ["you little slut.", "my lucky toy.", "you dirty boy."]]); - wait(10); - showButtonG("Thank you, ${dommeTitle()}.", "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), false, "too soon")) return true; - if (getRandom(5) > 0 || !can(CUM)) { - 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, ${dommeTitle()}", "cumming", w) == w) { - w = 3; - present(null, [ - ["Quickly now!", "Hurry!"]]); - if (showButtonG("Cumming, ${dommeTitle()}", "cumming", w) == w) { - present([TEASE], [ - ["Stop!", "Let go.", "Hands off!"], - ["Time's up!", "You had your chance."]]); - return mightCum(15, true, "too late"); - } - } - wait(10); - showButtonG("Thank you, ${dommeTitle()}.", "ok"); - return true; - }; - def cumChanceRuin = { - present([TEASE], [ - ["Stroke!", "Jerk it."], - ["Get close to the edge, toy...", "Get yourself close..."]]); - if (mightCum(5 + getRandom(10), false, "too soon")) return true; - if (getRandom(5) > 0 || !can(CUM)) { - return cumChanceDenied(); - } - for (def n = 3 + getRandom(6); n >= 0; n--) { - present([TITS], [ - ["Try to cum!"]]); - def w = 3 + getRandom(8); - if (showButtonG("Cumming, ${dommeTitle()}", "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, ${dommeTitle()}.", "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, true, "but it's ruined")) return true; - } - } - return cumChanceDenied(true); - }; def clampPulls = { amount -> getRandom(1 + amount).times { if (getRandom(2)) { @@ -559,19 +443,6 @@ return new Object() { }; // Post - def postCum = { - if (stateIs(CHASTE)) return; - present([TEASE], [ - ["How about I let you cum?", "Maybe I should let you cum."], - ["Would you like that?", "Let some of that frustration out?"]]); - wait(getRandom(5) + 5); - def ways = [cumChanceRuin, cumChanceWindow, cumChanceCountdown]; - if (ways[getRandom(ways.size())]()) { - // Once toy has cum, revoke permission for a while - revokePermission(CUM); - } - }; - // Play def playNothing = { (getRandom(3) + 2).times { @@ -979,10 +850,6 @@ return new Object() { 'playNothing': playNothing, 'playBondage': playBondage, 'playSuck': playSuck, - 'postCum': postCum, - 'postPermitCum': { - addEventIfMissing(CUM, getTime() + (DAY * 2) + getRandom(DAY * 2), PERMIT, CUM); // 2 - 4 days from now - }, ]; final addActivity = { String name, func -> activityList[name] = func; @@ -1427,6 +1294,7 @@ return new Object() { * scripts/toy/confession.groovy * scripts/toy/imagery.groovy * scripts/toy/intro.groovy + * scripts/toy/orgasmControl.groovy * scripts/toy/sleep.groovy * scripts/toy/social.groovy * scripts/toy/tease.groovy -- cgit v1.2.3