summaryrefslogtreecommitdiff
path: root/scripts/toy.groovy
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/toy.groovy')
-rw-r--r--scripts/toy.groovy55
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 = {