summaryrefslogtreecommitdiff
path: root/scripts/toy.groovy
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 12:39:24 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-06-23 12:39:24 +0100
commit973154c8252821c58996cab2c28068824c0137ea (patch)
tree57e6c800216304e629cc80542ab30d03742bbaaf /scripts/toy.groovy
parentExtract chastity into a module (diff)
downloadtoy-973154c8252821c58996cab2c28068824c0137ea.zip
Extract teasing into a module
Diffstat (limited to 'scripts/toy.groovy')
-rw-r--r--scripts/toy.groovy183
1 files changed, 1 insertions, 182 deletions
diff --git a/scripts/toy.groovy b/scripts/toy.groovy
index 538c639..7ca5beb 100644
--- a/scripts/toy.groovy
+++ b/scripts/toy.groovy
@@ -296,45 +296,6 @@ return new Object() {
}
return null;
};
- def harden = { imageSpec ->
- expose(imageSpec);
- present(imageSpec, [
- ["I want to see you hard.", "I need you hard now, very hard."],
- ["Stroke it, slowly...", "Slow worship strokes..."],
- ["don't edge...", "no edging..."],
- ["and do NOT cum.", "and definitely no cumming."],
- ["Not yet.", "Maybe soon."]]);
- playBackgroundSound("toy/90bpm.mp3", 2); //45sec
- if (showButtonG("Hard, ${dommeTitle()}", "hard", 60) == 60) {
- playBackgroundSound(null);
- present(imageSpec, [
- ["What's taking so long!?", "Come on!", "Don't disappoint me."],
- ["Slap it about a bit!.", "Get it hard, now!", "Pinch your nipples."]]);
- playBackgroundSound("toy/165bpm.mp3");
- if (showButtonG("Hard, ${dommeTitle()}", "hard", 30) == 30) {
- playBackgroundSound("toy/180bpm.mp3");
- if (showButtonG("Hard, ${dommeTitle()}", "hard", 30) == 30) {
- sessionAborted = SOFT;
- present(imageSpec, [
- ["Bah!", "Pathetic!"],
- ["That's no good to me!", "How do I have fun with that!?"]]);
- adjustPunish(100);
- showButtonG("Sorry, ${dommeTitle()}", "sorry");
- }
- }
- }
- playBackgroundSound(null);
- };
- def expose = { imageSpec ->
- if (sessionToys[COCK]) return;
- if (!stateIs(NAKED)) {
- present(imageSpec, [
- ["Get that cock out, toy;", "Let's see that cock of mine."],
- ["I want to torment it.", "It's playtime!"]]);
- wait(10);
- }
- sessionToys[COCK] = getTime();
- };
// 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);
@@ -451,121 +412,6 @@ return new Object() {
}
return cumChanceDenied(true);
};
- def edge = { amount, imageSpec ->
- def allowedTime = 128;
- (getRandom(amount) + 2).times {
- if (sessionAborted) return;
- present(imageSpec, [
- ["Stroke to edge now, toy...", "Edge!"],
- ["Don't cum.", "No cumming.", "No accidents though."]]);
- showButtonGT("Edging, ${dommeTitle()}", "edging", allowedTime + 20, 1);
- if (getRandom(2) == 1) {
- present(imageSpec, [
- ["Hold it...", "And hold...", "Keeping going..."]]);
- if (mightCum(getRandom(20) + 5)) return;
- }
- present(imageSpec, [
- ["Hands off!", "Stop!"]]);
- if (mightCum(getRandom(5) + 5)) return;
- allowedTime /= 2;
- };
- };
- def strokes = { amount, imageSpec ->
- def tags = present(imageSpec, [
- ["Stroke to the beat, toy.", "Follow the beat.", "Beat it!"],
- ["No cumming unless I say so...", "Don't cum without my say so,"],
- ["Tell me if you get too close.", "so tell me if you're edging.", "I don't want any messes."]]);
- final BEATS = [
- // bpm:30, len:60 ],
- [ bpm:90, len:45 ],
- [ bpm:165, len:30 ],
- [ bpm:180, len:30 ],
- [ bpm:240, len:20 ],
- ];
- def sto = loadInteger("toy.strokeTeaseOffset");
- def edges = 0;
- def itr = 0;
- (getRandom(amount) + 5).times {
- if (sessionAborted) return;
- switch (itr) {
- case 2:
- final cmt = imageTagsComment(tags);
- if (cmt) {
- show(cmt);
- }
- break;
- case 4:
- present(null, [
- ["Don't stop stroking!", "Keep jerking.", "Keep stroking."]]);
- break;
- }
- itr += 1;
- def beatNo = getRandom(BEATS.size());
- def beat = BEATS[beatNo];
- playBackgroundSound("toy/${beat.bpm}bpm.mp3", 10); // Lots, to cover offset
- def len = getRandom(Math.max(5, beat.len + (sto * beatNo)));
- if (showButtonG("Edging, ${dommeTitle()}", "edging", len) < len) {
- sto -= 1;
- edges += 1;
- itr = 0;
- playBackgroundSound(null);
- switch (getRandom(3)) {
- case 0:
- present(imageSpec, [
- ["Stop!", "Let go!", "Hands off!"]]);
- if (mightCum(getRandom(8) + 10)) return;
- break;
- case 1:
- present(imageSpec, [
- ["Careful now...", "No accidents..."],
- ["slow it down...", "slowly now..."]]);
- playBackgroundSound("toy/30bpm.mp3");
- if (mightCum(getRandom(20) + 5)) {
- playBackgroundSound(null);
- return;
- }
- case 2:
- switch(getSelectedValue("Would you like to cum, toy?", [
- gagText("Please, ${dommeTitle()}, may I cum!?", "yes"),
- gagText("No, ${dommeTitle()}, please torment me more!", "no")
- ])) {
- case 0:
- if (can(CUM)) {
- present(imageSpec, [
- ["Maybe...", "Perhaps.", "We'll see."]]);
- }
- else {
- present(imageSpec, [
- ["No you may not!", "Nope.", "Not a chance."]]);
- adjustPunish(5);
- }
- break;
- case 1:
- present(imageSpec, [
- ["Good boy.", "Very well.", "OK then!"]]);
- adjustPunish(-5);
- break;
- }
- if (mightCum(getRandom(8) + 5)) {
- playBackgroundSound(null);
- return;
- }
- playBackgroundSound(null);
- }
- tags = present(imageSpec, [
- ["Back to stroking, toy...", "Get to it again...."],
- ["follow the beat..."],
- ["no accidents.", "and concentrate."]]);
- }
- else {
- playBackgroundSound(null);
- }
- }
- if (edges == 0) {
- sto += 1;
- }
- save("toy.strokeTeaseOffset", sto);
- }
def clampPulls = { amount ->
getRandom(1 + amount).times {
if (getRandom(2)) {
@@ -614,15 +460,6 @@ return new Object() {
return amount;
};
// Pre-tease
- def preEdge = {
- if (stateIs(CHASTE)) return;
- harden([DRESSED]);
- edge(4, [DRESSED]);
- present([DRESSED], [
- ["And relax...", "Hands off..."],
- ["cool down a little.", "but keep it hard for me!", "for now!"]]);
- wait(getRandom(5) + 5);
- };
def preGag = {
if (stateIs(GAGGED)) return 1.2;
if (!has(BALLGAG)) return;
@@ -722,11 +559,6 @@ return new Object() {
};
// Post
- def postEdge = {
- if (stateIs(CHASTE)) return;
- if (!can(EDGE)) return;
- edge(6, [TEASE]);
- };
def postCum = {
if (stateIs(CHASTE)) return;
present([TEASE], [
@@ -741,16 +573,6 @@ return new Object() {
};
// Play
- def playStrokes = {
- preRelease();
- harden([TITS]);
- strokes(15, [TITS]);
- };
- def playEdges = {
- preRelease();
- harden([TITS]);
- edge(6, [TITS]);
- };
def playNothing = {
(getRandom(3) + 2).times {
show(imageTagsComment(showImage([TITS])));
@@ -1146,13 +968,10 @@ return new Object() {
final activityList = [
'intSqueeze': intSqueeze,
'intClamps': intClamps,
- 'preEdge': preEdge,
'preGag': preGag,
'preStrip': preStrip,
'preCollar': preCollar,
'preClamps': preClamps,
- 'playStrokes': playStrokes,
- 'playEdges': playEdges,
'playKneel': playKneel,
'playBeatBalls': playBeatBalls,
'playBeatCock': playBeatCock,
@@ -1530,7 +1349,6 @@ return new Object() {
}
save("toy.availability", p2);
};
- setDefault("toy.strokeTeaseOffset", 0);
setDefault("toy.punishment", 0);
execEvents(false);
setupEvents();
@@ -1611,6 +1429,7 @@ return new Object() {
* scripts/toy/intro.groovy
* scripts/toy/sleep.groovy
* scripts/toy/social.groovy
+ * scripts/toy/tease.groovy
* images/toy/ancilla/corset/1.jpg
* images/toy/ancilla/corset/10.jpg
* images/toy/ancilla/corset/11.jpg