From 713dd5ceae3a0972a45ed4591dc0665aae31d262 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 23 Jun 2019 19:15:39 +0100 Subject: Extract bondage into a module --- scripts/toy.groovy | 93 +------------------------------------------ scripts/toy/bondage.groovy | 98 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+), 92 deletions(-) create mode 100644 scripts/toy/bondage.groovy (limited to 'scripts') diff --git a/scripts/toy.groovy b/scripts/toy.groovy index 019c0c1..213232a 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -303,41 +303,6 @@ return new Object() { return amount; }; // Pre-tease - def preGag = { - if (stateIs(GAGGED)) return 1.2; - if (!has(BALLGAG)) return; - present([DRESSED], [ - ["Go fetch your gag, toy...", "Bring me your gag, toy..."], - ["Quickly!", "Hurry back!"]]); - showButton("Yes, ${dommeTitle()}"); - show(null); - wait(10); - showButtonGT("Back, ${dommeTitle()}", "back", 50, 2); - present([DRESSED], [ - ["Good boy.", "Very good."], - ["Put it on..."], - ["Nice and tight.", "Tight!"], - ["I don't want to a hear a word from you.", "A quiet toy is a good toy."]]); - set(GAGGED, true); - showButtonGT("Gagged, ${dommeTitle()}", "gagged", 20, 2); - sessionToys[BALLGAG] = getTime(); - return 1.2; - }; - def preCollar = { - if (stateIs(COLLARED)) return 1.1; - if (!has(COLLAR)) return; - present([DRESSED], [ - ["You look underdressed, toy.", "A toy without a collar doesn't look right."], - ["Go put your collar on", "I want a collar around your neck"], - ["and crawl back like the slutty puppy dog you are.", "and kneel before me."]]); - showButtonG("Yes, ${dommeTitle()}", "ok"); - show(null); - wait(10); - set(COLLARED, true); - showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); - sessionToys[COLLAR] = getTime(); - return 1.1; - }; def preStrip = { imageSpec = [DRESSED] -> if (stateIs(NAKED)) return 1.1; present(imageSpec, [ @@ -385,15 +350,6 @@ return new Object() { sessionToys[SPOON] = getTime(); } }; - def getCuffs() { - if (!has(HANDCUFFS)) return; - present([DRESSED, nTEASE], [ - ["Go fetch your handcuffs"]]); - showButtonG("Yes, ${dommeTitle()}", "ok"); - wait(10); - showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); - sessionToys[HANDCUFFS] = getTime(); - } def playKneel = { present([DRESSED], [ ["Right, slut.", "Come here, toy."], @@ -424,51 +380,6 @@ return new Object() { wait(getRandom(5) + 5); return kneelTime / 20.0; }; - def playBondage = { - if (!has(HANDCUFFS)) return; - def prep = [ preStrip, preCollar, preClamps, preGag ]; - Collections.shuffle(prep); - prep.collect { p -> p(); }; - getCuffs(); - present([DRESSED, nTEASE], [ - ["Good."], - ["Down on the floor.", "On your knees.", "Down there, where you are."]]); - wait(15); - present([DRESSED, nTEASE], [ - ["You know what's next.", "Take your cuffs."], - ["Cuff yourself,", "Hands cuffed,"], - ["behind your back of course.", "behind you."]]); - wait(15); - present([DRESSED, TEASE], [ - ["Don't go anywhere!", "Do not move!"]]); - wait(15); - present([STOOD], [ - ["I'll be back for you soon.", "I won't leave you too long."]]); - wait(15); - setImage(null); - show(null); - def waitTime = 300 + getRandom(Math.min(1500, 1 + getPunish() * 10)); - wait(waitTime); - playBackgroundSound("bell.wav"); - present([STOOD], [ - ["Hi slave!", "Hello again."], - ["You don't look very comfortable.", "That looks quite awkward."], - ["Maybe you've been there long enough.", "It's been a while now."]]); - wait(20); - present([DRESSED, TEASE], [ - ["OK,", "Mmmm,"], - ["soon.", "just a while longer."]]); - wait(60 + getRandom(60)); - playBackgroundSound("bell.wav"); - present([DRESSED, TEASE], [ - ["Go find the keys,", "Very well,"], - ["let yourself out,", "unlock the cuffs,"], - ["and come back.", "and hurry back."]]); - wait(10); - setImage(null); - showButtonGT("Freed, ${dommeTitle()}", "freed", 120, 1); - return waitTime; - }; def playSuck = { def playWait = { file, time -> playBackgroundSound(file); @@ -641,12 +552,9 @@ return new Object() { return false; }; final activityList = [ - 'preGag': preGag, 'preStrip': preStrip, - 'preCollar': preCollar, 'playKneel': playKneel, 'playNothing': playNothing, - 'playBondage': playBondage, 'playSuck': playSuck, ]; final addActivity = { String name, func -> @@ -1088,6 +996,7 @@ return new Object() { /* * Resources * scripts/toy.groovy + * scripts/toy/bondage.groovy * scripts/toy/cbt.groovy * scripts/toy/chastity.groovy * scripts/toy/confession.groovy diff --git a/scripts/toy/bondage.groovy b/scripts/toy/bondage.groovy new file mode 100644 index 0000000..400d669 --- /dev/null +++ b/scripts/toy/bondage.groovy @@ -0,0 +1,98 @@ +{ toy -> + toy.metaClass.getCuffs() { + if (!has(HANDCUFFS)) return; + present([DRESSED, nTEASE], [ + ["Go fetch your handcuffs"]]); + showButtonG("Yes, ${dommeTitle()}", "ok"); + pause(10); + showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); + sessionToys[HANDCUFFS] = getTime(); + } + + toy.metaClass.preGag = { + if (stateIs(GAGGED)) return 1.2; + if (!has(BALLGAG)) return; + present([DRESSED], [ + ["Go fetch your gag, toy...", "Bring me your gag, toy..."], + ["Quickly!", "Hurry back!"]]); + showButton("Yes, ${dommeTitle()}"); + show(null); + pause(10); + showButtonGT("Back, ${dommeTitle()}", "back", 50, 2); + present([DRESSED], [ + ["Good boy.", "Very good."], + ["Put it on..."], + ["Nice and tight.", "Tight!"], + ["I don't want to a hear a word from you.", "A quiet toy is a good toy."]]); + set(GAGGED, true); + showButtonGT("Gagged, ${dommeTitle()}", "gagged", 20, 2); + sessionToys[BALLGAG] = getTime(); + return 1.2; + }; + + toy.metaClass.preCollar = { + if (stateIs(COLLARED)) return 1.1; + if (!has(COLLAR)) return; + present([DRESSED], [ + ["You look underdressed, toy.", "A toy without a collar doesn't look right."], + ["Go put your collar on", "I want a collar around your neck"], + ["and crawl back like the slutty puppy dog you are.", "and kneel before me."]]); + showButtonG("Yes, ${dommeTitle()}", "ok"); + show(null); + pause(10); + set(COLLARED, true); + showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); + sessionToys[COLLAR] = getTime(); + return 1.1; + }; + + toy.metaClass.playBondage = { + if (!has(HANDCUFFS)) return; + def prep = [ { preStrip() }, { preCollar() }, { preClamps() }, { preGag() } ]; + Collections.shuffle(prep); + prep.collect { p -> p(); }; + getCuffs(); + present([DRESSED, nTEASE], [ + ["Good."], + ["Down on the floor.", "On your knees.", "Down there, where you are."]]); + pause(15); + present([DRESSED, nTEASE], [ + ["You know what's next.", "Take your cuffs."], + ["Cuff yourself,", "Hands cuffed,"], + ["behind your back of course.", "behind you."]]); + pause(15); + present([DRESSED, TEASE], [ + ["Don't go anywhere!", "Do not move!"]]); + pause(15); + present([STOOD], [ + ["I'll be back for you soon.", "I won't leave you too long."]]); + pause(15); + setImage(null); + show(null); + def waitTime = 300 + getRandom(Math.min(1500, 1 + getPunish() * 10)); + pause(waitTime); + playBackgroundSound("bell.wav"); + present([STOOD], [ + ["Hi slave!", "Hello again."], + ["You don't look very comfortable.", "That looks quite awkward."], + ["Maybe you've been there long enough.", "It's been a while now."]]); + pause(20); + present([DRESSED, TEASE], [ + ["OK,", "Mmmm,"], + ["soon.", "just a while longer."]]); + pause(60 + getRandom(60)); + playBackgroundSound("bell.wav"); + present([DRESSED, TEASE], [ + ["Go find the keys,", "Very well,"], + ["let yourself out,", "unlock the cuffs,"], + ["and come back.", "and hurry back."]]); + pause(10); + setImage(null); + showButtonGT("Freed, ${dommeTitle()}", "freed", 120, 1); + return waitTime; + }; + + toy.addActivity("preGag", { toy.preGag() }); + toy.addActivity("preCollar", { toy.preCollar() }); + toy.addActivity("playBondage", { toy.playBondage() }); +} -- cgit v1.2.3