From 973154c8252821c58996cab2c28068824c0137ea Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 23 Jun 2019 12:39:24 +0100 Subject: Extract teasing into a module --- scripts/toy.groovy | 183 +---------------------------------------------------- 1 file changed, 1 insertion(+), 182 deletions(-) (limited to 'scripts/toy.groovy') 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 -- cgit v1.2.3