diff options
| -rw-r--r-- | scripts/toy.groovy | 55 | 
1 files changed, 44 insertions, 11 deletions
diff --git a/scripts/toy.groovy b/scripts/toy.groovy index 3807e97..304e2bd 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -197,6 +197,17 @@ def present = { imageSpec, texts ->  	}  	return null;  }; +def showButtonGT = { s, p, t, pc -> +	def tt = showButton(gagText(s, p), t); +	if (tt == t) { +		present(null, [ +				["Don't keep me waiting!", "Hurry up!", "Quicker, toy!"]]); +		def pt = showButton(gagText(s, p)); +		adjustPunish(pt * pc); +		return pt + tt; +	} +	return tt; +};  def harden = { imageSpec ->  	present([DRESSED], [ @@ -208,7 +219,7 @@ def harden = { imageSpec ->  		present(null, [  				["What's taking so long!?", "Come on!", "Don't disappoint me."],  				["Slap it about a bit!.", "Get it hard, now!", "Pinch your nipples."]]); -		showButtonG("Hard, mistress", "hard"); +		showButtonGT("Hard, mistress", "hard", 60, 0.5);  	}  };  def expose = { imageSpec -> @@ -237,12 +248,13 @@ def mightCum = { time ->  	return false;  };  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."]]); -		showButtonG("Edging, mistress", "edging"); // TODO: time check +		showButtonGT("Edging, mistress", "edging", allowedTime + 20, 1);  		if (getRandom(2) == 1) {  			present(imageSpec, [  					["Hold it...", "And hold...", "Keeping going..."]]); @@ -251,6 +263,7 @@ def edge = { amount, imageSpec ->  		present(imageSpec, [  				["Hands off!", "Stop!"]]);  		if (mightCum(getRandom(5) + 5)) return; +		allowedTime /= 2;  	};  };  def strokes = { amount, imageSpec -> @@ -295,12 +308,20 @@ def strokes = { amount, imageSpec ->  								gagText("No, mistress, please torment me more!", "no")  					])) {  						case 0: -							present(imageSpec, [ -									["No you may not!", "Nope.", "Not a chance."]]); +							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)) return; @@ -329,7 +350,7 @@ def preRelease = {  	showButtonG("Yes, mistress", "ok");  	wait(15);  	set(CHASTE, false); -	showButtonG("Thank you, mistress", "ok"); +	showButtonGT("Thank you, mistress", "ok", 80, 1);  };  def preEdge = {  	if (is(CHASTE)) return; @@ -350,14 +371,14 @@ def preGag = {  	showButton("Yes, mistress");  	show(null);  	wait(10); -	showButton("Back, mistress"); // TODO: time check +	showButtonGT("Back, mistress", 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); -	showButtonG("Gagged, mistress", "gagged"); // TODO: time check +	showButtonGT("Gagged, mistress", "gagged", 20, 2);  };  def preClamps = {  	if (is(CLAMPED)) return; @@ -377,7 +398,7 @@ def preClamps = {  	show(null);  	wait(10);  	set(CLAMPED, true); -	showButtonG("Back, mistress", "back"); // TODO: time check +	showButtonGT("Back, mistress", "back", 60, 1);  	present([DRESSED], [  			["On your knees,", "Kneel before me"],  			["let me see.", "hands behind your back."]]); @@ -410,7 +431,7 @@ def preCollar = {  	show(null);  	wait(10);  	set(COLLARED, true); -	showButtonG("Back, mistress", "back"); // TODO: time check +	showButtonGT("Back, mistress", "back", 60, 1);  };  def preStrip = { imageSpec = [DRESSED] ->  	if (is(NAKED)) return; @@ -420,7 +441,7 @@ def preStrip = { imageSpec = [DRESSED] ->  	present([DRESSED], [  			["All of them off!", "And the rest!", "Keep going."]]);  	set(NAKED, true); -	showButtonG("Naked, mistress", "naked"); +	showButtonGT("Naked, mistress", "naked", 60, 5);  	(getRandom(2) + 1).times {  		switch (getRandom(2)) {  			case 0: @@ -478,7 +499,7 @@ def postChastity = {  			["Bring back the key.", "I want the key of course."]]);  	wait(10);  	show(null); -	showButtonG("Locked, mistress. Here's the key.", "locked"); +	showButtonGT("Locked, mistress. Here's the key.", "locked", 180, 1);  	set(CHASTE, true);  	present([DRESSED,TEASE], [  			["Good boy.", "Thank you, toy."]]); @@ -553,6 +574,7 @@ def sessionSummon = { imageSpec ->  				present(imageSpec, [  						["TOY!", "SLAVE!", "SLUT!"],  						["Last chance!", "Final warning!"]]); +				adjustPunish(5);  				break;  			case limit - 1:  			case limit - 2: @@ -570,6 +592,9 @@ def sessionSummon = { imageSpec ->  			return true;  		};  	} +	setImage(null); +	show(null); +	adjustPunish(5);  	return false;  };  def sessionPlay = { @@ -627,6 +652,9 @@ def sessionRelease = { goodToy ->  	wait(10);  	setImage(null);  	sessionAborted = null; +	if (goodToy) { +		adjustPunish(-20); +	}  	show(null);  };  def playtime = { @@ -635,6 +663,9 @@ def playtime = {  		sessionPlay();  		sessionRelease(sessionAborted == null);  	} +	else { +		adjustPunish(25); +	}  }  def bedtime = {  	dress([[LINGERIE,nTITS]]); @@ -694,10 +725,12 @@ def beginPlan = { plan ->  		present([DRESSED,TEASE], [  				[ "Back later!", "See you soon, toy" ]]);  		wait(5); +		return;  	}  	else if (has(CHASTITY)) {  		leaveNote("I want you in chastity until I return!", CHASTE);  	} +	adjustPunish(5);  };  // Initial - basic checks and defaults  def setupInitial = {  | 
