From 91e2d2f613e95c631549e4e6f73cd281c58539e0 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 23 Jun 2019 12:24:24 +0100 Subject: Extract chastity into a module --- scripts/toy.groovy | 110 ++----------------------------------------- scripts/toy/chastity.groovy | 112 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 106 deletions(-) create mode 100644 scripts/toy/chastity.groovy diff --git a/scripts/toy.groovy b/scripts/toy.groovy index d35ced3..538c639 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -614,44 +614,6 @@ return new Object() { return amount; }; // Pre-tease - def preRelease = { - if (!stateIs(CHASTE)) return; - if (!stateIs(NAKED)) { - present([DRESSED], [ - ["Reach down... and through your clothes...", "Stay clothed,"], - ["rub that chastity device...", "run your hand around that locked cock..."], - ["imagine if that was me doing it.", "that looks frustrating."]]); - wait(15); - present(null, [["Show me.", "Let me see it."]]); - wait(10); - } - else { - present([DRESSED], [ - ["Look what we have here.", "Hnmm, look at that."], - ["Locked away and useless.", "Under lock and key as it should be."], - ["Too bad I have the keys.", "And I have the keys somewhere safe."]]); - wait(10); - } - present([DRESSED], [ - ["Play with your balls,", "Tease those balls a little,"], - ["I want to see how horny you are", "see how hard you can get"], - ["before I let you out.", "before I hand over the keys."], - ["You should be", "When you're"], - ["practically breaking out,", "about to break it for me,"], - ["we'll continue.", "then I'll see about letting it out."]]); - showButtonG("Hard, ${dommeTitle()}, please let me out", "hard"); - present([DRESSED,TEASE], [ - ["OK then.", "Fine, fine."], - ["I'm feeling generous, toy...", "Well, it's no good to me like that..."], - ["I have the keys right here,", "I have the keys here somewhere... OK,"], - ["unlock yourself and", "take your chastity device off"], - ["let me see my cock.", "let's see it."]]); - showButtonG("Yes, ${dommeTitle()}", "ok"); - wait(15); - set(CHASTE, false); - sessionToys[COCK] = getTime(); - showButtonGT("Thank you, ${dommeTitle()}", "ok", 80, 1); - }; def preEdge = { if (stateIs(CHASTE)) return; harden([DRESSED]); @@ -777,71 +739,6 @@ return new Object() { revokePermission(CUM); } }; - def chastity = { pre -> - if (stateIs(CHASTE)) return; - if (!has(CHASTITY)) return; - if (pre) { - present([DRESSED,TEASE], [ - ["Fun time is over for you.", "You'd have enough pleasure lately, my turn."]]); - } - else { - present([TEASE], [ - ["I can't keep an eye on you all time.", "It's not that I don't trust you."], - ["But...", "I just like to be sure."]]); - } - wait(getRandom(5) + 10); - if (sessionToys.containsKey(CHASTITY)) { - present([DRESSED,TEASE], [ - ["Time to", "Get your chastity device and"], - ["lock my cock away again now.", "get that cock back in its cage."], - ["And of course", "And then"], - ["hand over the key.", "give me the key back."]]); - } - else { - present([DRESSED,TEASE], [ - ["Go to your room,", "Run along now,"], - ["get your chastity device and"], - ["lock it on.", "get that cock secured away."], - ["Bring back the key.", "I want the key of course."]]); - } - wait(10); - show(null); - showButtonGT("Locked, ${dommeTitle()}. Here's the key.", "locked", 180, 1); - set(CHASTE, true); - present([DRESSED,TEASE], [ - ["Good boy.", "Thank you, toy."]]); - wait(5); - } - def preChastity = { - chastity(true); - } - def postChastity = { - chastity(false); - if (stateIs(CHASTE) && (getPermission(PERM_CHASTE) == null || - (getPermission(PERM_CHASTE) == false && getProp(PERM_CHASTE_ASK, loadI, 0) < getTime() - (DAY * 30)))) { - present([DRESSED,TEASE], [ - ["Now I have you locked up,", "Now my cock is secured away,"], - ["would you let me", "can I"], - ["keep you like that"], - ["all the time?", "permanently?"]]); - def sh = getSelectedValue(null, [ - gagText("Yes, ${dommeTitle()}", "yes"), gagText("Please, ${dommeTitle()}, no", "no")]); - if (sh == 0) { - present([DRESSED,TEASE], [ - ["Good boy.", "Thank you, toy."]]); - setPermission(PERM_CHASTE, true); - setProp(PERM_CHASTE_ASK, null); - } - else { - present([DRESSED,nTEASE], [ - ["Awwww.", "Shame."], - ["One day..."]]); - setPermission(PERM_CHASTE, false); - setProp(PERM_CHASTE_ASK, getTime()); - } - wait(5); - } - }; // Play def playStrokes = { @@ -1249,8 +1146,6 @@ return new Object() { final activityList = [ 'intSqueeze': intSqueeze, 'intClamps': intClamps, - 'preRelease': preRelease, - 'preChastity': preChastity, 'preEdge': preEdge, 'preGag': preGag, 'preStrip': preStrip, @@ -1269,8 +1164,10 @@ return new Object() { 'postPermitCum': { addEventIfMissing(CUM, getTime() + (DAY * 2) + getRandom(DAY * 2), PERMIT, CUM); // 2 - 4 days from now }, - 'postChastity': postChastity ]; + final addActivity = { String name, func -> + activityList[name] = func; + } def sessionPlay = { if (stateIs(CHASTE)) sessionToys[CHASTITY] = getTime(); def playScope = [ @@ -1708,6 +1605,7 @@ return new Object() { /* * Resources * scripts/toy.groovy + * scripts/toy/chastity.groovy * scripts/toy/confession.groovy * scripts/toy/imagery.groovy * scripts/toy/intro.groovy diff --git a/scripts/toy/chastity.groovy b/scripts/toy/chastity.groovy new file mode 100644 index 0000000..5b0c298 --- /dev/null +++ b/scripts/toy/chastity.groovy @@ -0,0 +1,112 @@ +{ toy -> + toy.metaClass.preRelease { + if (!stateIs(CHASTE)) return; + if (!stateIs(NAKED)) { + present([DRESSED], [ + ["Reach down... and through your clothes...", "Stay clothed,"], + ["rub that chastity device...", "run your hand around that locked cock..."], + ["imagine if that was me doing it.", "that looks frustrating."]]); + pause(15); + present(null, [["Show me.", "Let me see it."]]); + pause(10); + } + else { + present([DRESSED], [ + ["Look what we have here.", "Hnmm, look at that."], + ["Locked away and useless.", "Under lock and key as it should be."], + ["Too bad I have the keys.", "And I have the keys somewhere safe."]]); + pause(10); + } + present([DRESSED], [ + ["Play with your balls,", "Tease those balls a little,"], + ["I want to see how horny you are", "see how hard you can get"], + ["before I let you out.", "before I hand over the keys."], + ["You should be", "When you're"], + ["practically breaking out,", "about to break it for me,"], + ["we'll continue.", "then I'll see about letting it out."]]); + showButtonG("Hard, ${dommeTitle()}, please let me out", "hard"); + present([DRESSED,TEASE], [ + ["OK then.", "Fine, fine."], + ["I'm feeling generous, toy...", "Well, it's no good to me like that..."], + ["I have the keys right here,", "I have the keys here somewhere... OK,"], + ["unlock yourself and", "take your chastity device off"], + ["let me see my cock.", "let's see it."]]); + showButtonG("Yes, ${dommeTitle()}", "ok"); + pause(15); + set(CHASTE, false); + sessionToys[COCK] = getTime(); + showButtonGT("Thank you, ${dommeTitle()}", "ok", 80, 1); + }; + + toy.metaClass.chastity { pre -> + if (stateIs(CHASTE)) return; + if (!has(CHASTITY)) return; + if (pre) { + present([DRESSED,TEASE], [ + ["Fun time is over for you.", "You'd have enough pleasure lately, my turn."]]); + } + else { + present([TEASE], [ + ["I can't keep an eye on you all time.", "It's not that I don't trust you."], + ["But...", "I just like to be sure."]]); + } + pause(getRandom(5) + 10); + if (sessionToys.containsKey(CHASTITY)) { + present([DRESSED,TEASE], [ + ["Time to", "Get your chastity device and"], + ["lock my cock away again now.", "get that cock back in its cage."], + ["And of course", "And then"], + ["hand over the key.", "give me the key back."]]); + } + else { + present([DRESSED,TEASE], [ + ["Go to your room,", "Run along now,"], + ["get your chastity device and"], + ["lock it on.", "get that cock secured away."], + ["Bring back the key.", "I want the key of course."]]); + } + pause(10); + show(null); + showButtonGT("Locked, ${dommeTitle()}. Here's the key.", "locked", 180, 1); + set(CHASTE, true); + present([DRESSED,TEASE], [ + ["Good boy.", "Thank you, toy."]]); + pause(5); + } + + toy.metaClass.preChastity { + chastity(true); + } + + toy.metaClass.postChastity { + chastity(false); + if (stateIs(CHASTE) && (getPermission(PERM_CHASTE) == null || + (getPermission(PERM_CHASTE) == false && getProp(PERM_CHASTE_ASK, loadI, 0) < getTime() - (DAY * 30)))) { + present([DRESSED,TEASE], [ + ["Now I have you locked up,", "Now my cock is secured away,"], + ["would you let me", "can I"], + ["keep you like that"], + ["all the time?", "permanently?"]]); + def sh = getSelectedValue(null, [ + gagText("Yes, ${dommeTitle()}", "yes"), gagText("Please, ${dommeTitle()}, no", "no")]); + if (sh == 0) { + present([DRESSED,TEASE], [ + ["Good boy.", "Thank you, toy."]]); + setPermission(PERM_CHASTE, true); + setProp(PERM_CHASTE_ASK, null); + } + else { + present([DRESSED,nTEASE], [ + ["Awwww.", "Shame."], + ["One day..."]]); + setPermission(PERM_CHASTE, false); + setProp(PERM_CHASTE_ASK, getTime()); + } + pause(5); + } + }; + + toy.addActivity('preRelease', { toy.preRelease() }); + toy.addActivity('preChastity', { toy.preChastity() }); + toy.addActivity('postChastity', { toy.postChastity() }); +} -- cgit v1.2.3