summaryrefslogtreecommitdiff
path: root/scripts/toy
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2019-06-20 21:12:05 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-06-20 21:12:05 +0100
commit401d0dc7528b260aacb2af78030e65bd93f436e6 (patch)
tree2253504fed9805a2d9983549d456d83a68a09847 /scripts/toy
parentExtract imagery into a module (diff)
downloadtoy-401d0dc7528b260aacb2af78030e65bd93f436e6.zip
Extract confession into a module
Diffstat (limited to 'scripts/toy')
-rw-r--r--scripts/toy/confession.groovy95
1 files changed, 95 insertions, 0 deletions
diff --git a/scripts/toy/confession.groovy b/scripts/toy/confession.groovy
new file mode 100644
index 0000000..774fd47
--- /dev/null
+++ b/scripts/toy/confession.groovy
@@ -0,0 +1,95 @@
+{ toy ->
+ toy.metaClass.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, ${dommeTitle()}", "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, ${dommeTitle()}. 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);
+ };
+
+ toy.metaClass.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, ${dommeTitle()}", "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);
+ }
+ }
+ };
+
+ toy.metaClass.confess {
+ // 5 points just for feeling the need to confess
+ def op = getPunish();
+ adjustPunish(5);
+ dress([[DRESSED,nTEASE], [MEAN]]);
+ 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 (stateIs(CHASTE)) {
+ opts.push([lbl: "Freed from chastity", act: { confessChastityRelease() }]);
+ }
+ if (!stateIs(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) {
+ showLounge();
+ return;
+ }
+ act();
+ if (!getBoolean("Anything else?")) break;
+ }
+ // If sufficient points accrued, punish immediately.. with a bonus
+ if (getPunish() > 150 + op) {
+ present([MEAN], [
+ ["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, ${dommeTitle()}", "ok");
+ removeEvent(PLAY);
+ sessionPlay();
+ sessionRelease(sessionAborted == null);
+ playSchedule();
+ }
+ else {
+ present([DRESSED, nTEASE], [
+ ["Good!", "There better not be!"]]);
+ showButtonG("Yes, ${dommeTitle()}", "ok");
+ showLounge();
+ }
+ };
+
+ toy.addRequestable("confess", "Confess", { toy.confess() });
+}