diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2019-06-20 21:12:05 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2019-06-20 21:12:05 +0100 |
commit | 401d0dc7528b260aacb2af78030e65bd93f436e6 (patch) | |
tree | 2253504fed9805a2d9983549d456d83a68a09847 /scripts/toy | |
parent | Extract imagery into a module (diff) | |
download | toy-401d0dc7528b260aacb2af78030e65bd93f436e6.zip |
Extract confession into a module
Diffstat (limited to 'scripts/toy')
-rw-r--r-- | scripts/toy/confession.groovy | 95 |
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() }); +} |