diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/toy.groovy | 72 |
1 files changed, 64 insertions, 8 deletions
diff --git a/scripts/toy.groovy b/scripts/toy.groovy index 5ec674e..166bbdd 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -7,7 +7,7 @@ final HOUR = 3600.0; final soonFormatter = java.time.format.DateTimeFormatter.ofPattern("EEEE 'at' h:mma"); // Notes // toys.<name> ankle_cuffs, ballgag, blindfold, chastity_belt, clothespins, cockring, dog_collar, handcuffs, hood, nipple_clamps, ring_gag -final BALLGAG = "ballgag", COLLAR = "dog_collar", CLAMPS = "nipple_clamps", CHASTITY = "chastity_belt"; +final BALLGAG = "ballgag", COLLAR = "dog_collar", CLAMPS = "nipple_clamps", CHASTITY = "chastity_belt", HANDCUFFS = "handcuffs"; // fetish.<name> final BONDAGE = "bondage", CBT = "cbt", CHORES = "chores", PAIN = "pain"; // toy.permission.<name> @@ -662,6 +662,55 @@ def playKneel = { wait(getRandom(5) + 5); return kneelTime / 20.0; }; +def playBondage = { + if (!has(HANDCUFFS)) return; + def prep = [ preStrip, preCollar, preClamps, preGag ]; + Collections.shuffle(prep); + prep.collect { p -> p(); }; + present([DRESSED, nTEASE], [ + ["Go fetch your handcuffs"]]); + showButtonG("Yes, mistress", "ok"); + wait(10); + showButtonGT("Back, mistress", "back", 60, 1); + present([DRESSED, nTEASE], [ + ["Good."], + ["Down on the floor.", "On your knees.", "Down there, where you are."]]); + wait(15); + present([DRESSED, nTEASE], [ + ["You know what's next.", "Take your cuffs."], + ["Cuff yourself,", "Hands cuffed,"], + ["behind your back of course", "behind you."]]); + wait(15); + present([DRESSED, TEASE], [ + ["Don't go anywhere!", "Do not move!"]]); + wait(15); + present([STOOD, TITS], [ + ["I'll be back for you soon.", "I won't leave you too long."]]); + wait(15); + setImage(null); + show(null); + def waitTime = 500 + getRandom(1000); + waitWithGauge(waitTime); + playBackgroundSound("bell.wav"); + present([DRESSED, nTEASE], [ + ["Hi slave!", "Hello again."], + ["You don't look very comfortable.", "That looks quite awkward."], + ["Maybe you've been there long enough.", "It's been a while now."]]); + wait(20); + present([DRESSED, TEASE], [ + ["OK,", "Mmmm,"], + ["Soon.", "Just a while longer"]]); + wait(60 + getRandom(60)); + playBackgroundSound("bell.wav"); + present([DRESSED, TEASE], [ + ["Go find the keys,", "Very well,"], + ["let yourself out,", "unlock the cuffs,"], + ["and come back.", "and hurry back."]]); + wait(10); + setImage(null); + showButtonGT("Freed, mistress", "freed", 120, 1); + return waitTime; +}; def playClamps = { if (!has(CLAMPS)) return; if (!is(CLAMPED)) return preClamps(); @@ -713,21 +762,28 @@ def sessionPlay = { def ap = { val -> adjustPunish(-val * ph); }; + def apply = { activitity, use = null -> + def val = (Float)activitity(); + if (val && use) { + use(val); + } + }; def play = { amount, activities, use = null -> (getRandom(amount) + 1).times { if (!sessionAborted) { - def val = (Float)activities[getRandom(activities.size())](); - if (val && use) { - use(val); - } + apply(activities[getRandom(activities.size())], use); } }; }; def cp = getPunish(); if (cp > 50) { preChastity(); - play((int)(cp / 100), [preGag, preClamps, preCollar, preStrip], pm); - play(3, [playKneel/*, playCorner*/, playCbt, playClamps], ap); + play(2 + (int)(cp / 100), [preGag, preClamps, preCollar, preStrip], pm); + play(2 + (int)(cp / 100), [playKneel, playCbt, playClamps], ap); + def ends = [playBondage, playCbt, playClamps]; + Collections.shuffle(ends); + ends.take((int)(cp / 100)); + ends.collect { act -> apply(act, ap); }; } else { play(3, [preRelease, preEdge, preGag, preClamps, preCollar, preStrip]); @@ -959,7 +1015,7 @@ def setupShowState = { }.join()); showButton("OK"); show( - [BALLGAG, COLLAR, CLAMPS, CHASTITY].collect { + [BALLGAG, COLLAR, CLAMPS, CHASTITY, HANDCUFFS].collect { def v = has(it); return "$it: $v\n".capitalize() }.join()); |