summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/toy.groovy87
1 files changed, 86 insertions, 1 deletions
diff --git a/scripts/toy.groovy b/scripts/toy.groovy
index 89e1e84..7320b84 100644
--- a/scripts/toy.groovy
+++ b/scripts/toy.groovy
@@ -804,6 +804,89 @@ def bedtime = {
}
exit();
};
+// Confession
+def confessChastityRelease = {
+ adjustPunish(75);
+ present([DRESSED, nTEASE], [
+ ["Bad toy!", "Naughty little slut."],
+ ["I don't keep it locked for nothing.", "It's locked for a reason."],
+ ["It better have been a good reason.", "I'll presume you had a valid excuse."],
+ ["Is it locked again now?", "Are you back in chastity now?"]]);
+ if (getBoolean(null)) {
+ present([DRESSED, nTEASE], [
+ ["Good!", "There's that at least."]]);
+ showButtonG("Yes, mistress", "ok");
+ }
+ else {
+ adjustPunish(300);
+ present([DRESSED, nTEASE], [
+ ["disobedient", "dirty", "cheeky"],
+ ["little"],
+ ["slut!", "whore!", "brat!"],
+ ["Get it locked back up", "Back in chastity"],
+ ["right now!", "this instant!"]]);
+ showButtonGT("Locked, mistress. Here's the key.", "locked", 180, 1);
+ }
+ if (getBoolean("Did you get erect whilst out?")) {
+ adjustPunish(50);
+ if (getBoolean("Did you cum!?")) {
+ adjustPunish(200);
+ }
+ }
+ adjustPunish(getInteger("How many hours were you out?", 1) * 10);
+};
+def confessStroked = {
+ adjustPunish(40);
+ present([DRESSED,nTEASE], [
+ ["Awww, poor little toy.", "Naught little toy!"],
+ ["You know you aren't allowed.", "You get to stroke only when I say."]]);
+ showButtonG("Sorry, mistress", "sorry");
+ if (getBoolean("Did you get to the edge?")) {
+ adjustPunish(40);
+ adjustPunish(getInteger("How many times?", 1) * 5);
+ if (getBoolean("Did you cum!?")) {
+ adjustPunish(200);
+ }
+ }
+};
+def confess = {
+ // 5 points just for feeling the need to confess
+ def op = getPunish();
+ adjustPunish(5);
+ dress([[DRESSED,nTEASE], [MEAN,CROP]]);
+ while (true) {
+ present([DRESSED, nTEASE], [
+ ["I'm not going to like this, am I?", "There is no way this ends well for you."],
+ ["Out with it.", "Let me hear it."]]);
+ def opts = [ ];
+ if (is(CHASTE)) {
+ opts.push([lbl: "Freed from chastity", act: confessChastityRelease]);
+ }
+ if (!is(CHASTE)) {
+ opts.push([lbl: "Stroked", act: confessStroked]);
+ }
+ opts.push([ lbl: "Nothing listed (phew!)", act: null ]);
+ def opt = getSelectedValue(null, opts.collect { it.lbl });
+ def act = opts[opt].act;
+ if (!act) return;
+ act();
+ if (!getBoolean("Anything else?")) break;
+ }
+ // If sufficient points accrued, punish immediately.. with a bonus
+ if (getPunish() > 150 + op) {
+ present([MEAN,CROP], [
+ ["I'm very disappointed in you.", "You've been a very bad toy!"],
+ ["Immediate punishment!", "So you will suffer... right now!"]]);
+ adjustPunish(100);
+ showButtonG("Yes, mistress", "ok");
+ sessionPlay();
+ }
+ else {
+ present([DRESSED, nTEASE], [
+ ["Good!", "There better not be!"]]);
+ showButtonG("Yes, mistress", "ok");
+ }
+};
// Setup
// Plans - cannot overlap
@@ -949,13 +1032,15 @@ while (true) {
"Calendar",
"Play",
"Plan begin",
+ "Confess",
"Back"
])) {
case 0: setupShowState(); break;
case 1: setupShowCalendar(); break;
case 2: playtime(); break;
case 3: beginPlan(LUNCH); exit();
- case 4: return "toy";
+ case 4: confess(); break;
+ case 5: return "toy";
}
}
else if (localTime() > 25.75) { // 1:45am