summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 12:24:24 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 12:36:33 +0100
commit91e2d2f613e95c631549e4e6f73cd281c58539e0 (patch)
tree11dbfdf1befb1b1619abe057626b648cf7ff2ffc
parentHack around wait and metaClass (diff)
downloadtoy-91e2d2f613e95c631549e4e6f73cd281c58539e0.zip
Extract chastity into a module
-rw-r--r--scripts/toy.groovy110
-rw-r--r--scripts/toy/chastity.groovy112
2 files changed, 116 insertions, 106 deletions
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() });
+}