summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 19:15:39 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 21:18:22 +0100
commit713dd5ceae3a0972a45ed4591dc0665aae31d262 (patch)
tree09cb24ecf098d735bf151e9aed1ab4c835b11a41
parentExtract pain into a module (diff)
downloadtoy-713dd5ceae3a0972a45ed4591dc0665aae31d262.zip
Extract bondage into a module
-rw-r--r--scripts/toy.groovy93
-rw-r--r--scripts/toy/bondage.groovy98
2 files changed, 99 insertions, 92 deletions
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() });
+}