From 03cc961d02ff2512572aae9b46c1dd5f0cd8e675 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 6 Jul 2019 16:00:51 +0100 Subject: Dress for the occasion --- scripts/toy.groovy | 5 +++-- scripts/toy/bondage.groovy | 7 ++++--- scripts/toy/cbt.groovy | 4 ++-- scripts/toy/chastity.groovy | 7 ++++--- scripts/toy/confession.groovy | 4 ++-- scripts/toy/debug.groovy | 1 + scripts/toy/humiliation.groovy | 7 ++++--- scripts/toy/imagery.groovy | 3 ++- scripts/toy/misc.groovy | 2 +- scripts/toy/orgasmControl.groovy | 2 +- scripts/toy/pain.groovy | 8 ++++---- scripts/toy/play.groovy | 19 +++++++++++++++++-- scripts/toy/tease.groovy | 6 +++--- 13 files changed, 48 insertions(+), 27 deletions(-) diff --git a/scripts/toy.groovy b/scripts/toy.groovy index 8d193fb..597f71c 100644 --- a/scripts/toy.groovy +++ b/scripts/toy.groovy @@ -303,9 +303,10 @@ return new Object() { def setSessionAbort = { String r = null -> sessionAborted = r }; final activityList = [:]; - final addActivity = { String name, func -> + final addActivity = { String name, func, images = [] -> activityList[name] = [ - func: func + func: func, + images: images ?: [] ]; } diff --git a/scripts/toy/bondage.groovy b/scripts/toy/bondage.groovy index df3b5ae..46803c1 100644 --- a/scripts/toy/bondage.groovy +++ b/scripts/toy/bondage.groovy @@ -92,9 +92,10 @@ return waitTime; }; - toy.addActivity("preGag", { toy.preGag() }); - toy.addActivity("preCollar", { toy.preCollar() }); - toy.addActivity("playBondage", { toy.playBondage() }); + toy.addActivity("preGag", { toy.preGag() }, [[toy.DRESSED]]); + toy.addActivity("preCollar", { toy.preCollar() }, [[toy.DRESSED]]); + toy.addActivity("playBondage", { toy.playBondage() }, [ + [toy.DRESSED, toy.nTEASE], [toy.DRESSED, toy.TEASE], [toy.STOOD] ]); return { toy.addToy(toy.COLLAR, toy.COLLARED, "collar", "May I remove my collar?"); toy.addToy(toy.HANDCUFFS, toy.CUFFED, "handcuffs", "May I be uncuffed?"); diff --git a/scripts/toy/cbt.groovy b/scripts/toy/cbt.groovy index 9c0d28e..30afcb3 100644 --- a/scripts/toy/cbt.groovy +++ b/scripts/toy/cbt.groovy @@ -102,7 +102,7 @@ return count * 5; }; - toy.addActivity("playBeatCock", { toy.playBeatCock() }); - toy.addActivity("playBeatBalls", { toy.playBeatBalls() }); + toy.addActivity("playBeatCock", { toy.playBeatCock() }, [[toy.DRESSED, toy.nTITS]]); + toy.addActivity("playBeatBalls", { toy.playBeatBalls() }, [[toy.DRESSED]]); return null; } diff --git a/scripts/toy/chastity.groovy b/scripts/toy/chastity.groovy index 8068425..f04f4fc 100644 --- a/scripts/toy/chastity.groovy +++ b/scripts/toy/chastity.groovy @@ -106,8 +106,9 @@ } }; - toy.addActivity('preRelease', { toy.preRelease() }); - toy.addActivity('preChastity', { toy.preChastity() }); - toy.addActivity('postChastity', { toy.postChastity() }); + toy.addActivity('preRelease', { toy.preRelease() }, [[toy.DRESSED, toy.TEASE]]); + toy.addActivity('preChastity', { toy.preChastity() }, [[toy.DRESSED, toy.TEASE]]); + toy.addActivity('postChastity', { toy.postChastity() }, [ + [toy.DRESSED, toy.TEASE], [toy.DRESSED, toy.nTEASE]]); return null; } diff --git a/scripts/toy/confession.groovy b/scripts/toy/confession.groovy index b01fd6e..68a98a3 100644 --- a/scripts/toy/confession.groovy +++ b/scripts/toy/confession.groovy @@ -49,7 +49,7 @@ // 5 points just for feeling the need to confess def op = getPunish(); adjustPunish(5); - dress([[DRESSED,nTEASE], [MEAN]]); + dress([[DRESSED,nTEASE]]); while (true) { present([DRESSED, nTEASE], [ ["I'm not going to like this, am I?", "There is no way this ends well for you."], @@ -73,7 +73,7 @@ } // If sufficient points accrued, punish immediately.. with a bonus if (getPunish() > 150 + op) { - present([MEAN], [ + present([DRESSED, nTEASE], [ ["I'm very disappointed in you.", "You've been a very bad toy!"], ["Immediate punishment!", "So you will suffer... right now!"]]); adjustPunish(100); diff --git a/scripts/toy/debug.groovy b/scripts/toy/debug.groovy index 4bd3a64..379cae1 100644 --- a/scripts/toy/debug.groovy +++ b/scripts/toy/debug.groovy @@ -29,6 +29,7 @@ toy.metaClass.playActivity { final keys = new ArrayList(activityList.keySet()); final act = getSelectedValue("Choose activity", keys); + dress(activityList[keys[act]].images); activityList[keys[act]].func(); }; diff --git a/scripts/toy/humiliation.groovy b/scripts/toy/humiliation.groovy index af01315..a2e4137 100644 --- a/scripts/toy/humiliation.groovy +++ b/scripts/toy/humiliation.groovy @@ -195,9 +195,10 @@ }; toy.addNamedEvent(toy.REDRESS, { name, arg, schedTime, rt -> toy.redress(rt) }); - toy.addActivity("preStrip", { toy.preStrip() }); - toy.addActivity("playKneel", { toy.playKneel() }); - toy.addActivity("playSuck", { toy.playSuck() }); + toy.addActivity("preStrip", { toy.preStrip() }, [[toy.DRESSED]]); + toy.addActivity("playKneel", { toy.playKneel() }, [[toy.DRESSED]]); + toy.addActivity("playSuck", { toy.playSuck() }, [ + [toy.DRESSED, toy.nTEASE], [toy.DRESSED, toy.TEASE]]); toy.addRequestable("clothes", "May I wear clothes", { toy.requestClothes() }, { toy.stateIs(toy.NAKED) }); diff --git a/scripts/toy/imagery.groovy b/scripts/toy/imagery.groovy index 79b7abf..201531e 100644 --- a/scripts/toy/imagery.groovy +++ b/scripts/toy/imagery.groovy @@ -113,7 +113,7 @@ return null; }; - toy.metaClass.dress { specs -> + toy.metaClass.dress { specs, onChange = {} -> def outfit = loadString("toy.owner.outfit"); def outfitTime = loadInteger("toy.owner.outfitTime"); if (outfitTime > getTime() - 7200) { // Recent, check @@ -126,6 +126,7 @@ } } } + onChange(); outfit = selectImageSet(OWNER, specs); if (!outfit) { showPopup("No outfit for $OWNER : $specs"); diff --git a/scripts/toy/misc.groovy b/scripts/toy/misc.groovy index 3e471a9..140d82c 100644 --- a/scripts/toy/misc.groovy +++ b/scripts/toy/misc.groovy @@ -8,6 +8,6 @@ toy.addNamedEvent(toy.PERMIT, { name, arg, schedTime, rt -> toy.givePermission(arg) }); toy.addRequestable("faq", "FAQ (webpage)", { useUrl("http://toy.randomdan.homeip.net/"); }); - toy.addActivity("playNothing", { toy.playNothing() }); + toy.addActivity("playNothing", { toy.playNothing() }, [[toy.TITS]]); return null; } diff --git a/scripts/toy/orgasmControl.groovy b/scripts/toy/orgasmControl.groovy index 6108012..0f017bd 100644 --- a/scripts/toy/orgasmControl.groovy +++ b/scripts/toy/orgasmControl.groovy @@ -133,7 +133,7 @@ } }; - toy.addActivity("postCum", { toy.postCum() }); + toy.addActivity("postCum", { toy.postCum() }, [[toy.TEASE], [toy.TITS], [toy.DRESSED]]); toy.addActivity("postPermitCum", { // 2 - 4 days from now toy.addEventIfMissing(toy.CUM, toy.getTime() + (toy.DAY * 2) + toy.getRandom(toy.DAY * 2), diff --git a/scripts/toy/pain.groovy b/scripts/toy/pain.groovy index 1e4b81c..861674e 100644 --- a/scripts/toy/pain.groovy +++ b/scripts/toy/pain.groovy @@ -129,10 +129,10 @@ }; }; - toy.addActivity('preClamps', { toy.preClamps() }); - toy.addActivity('playClamps', { toy.playClamps() }); - toy.addActivity('intSqueeze', { toy.intSqueeze() }); - toy.addActivity('intClamps', { toy.intClamps() }); + toy.addActivity('preClamps', { toy.preClamps() }, [[toy.DRESSED, toy.TEASE]]); + toy.addActivity('playClamps', { toy.playClamps() }, [[toy.DRESSED, toy.TEASE]]); + toy.addActivity('intSqueeze', { toy.intSqueeze() }, [[toy.DRESSED, toy.TEASE]]); + toy.addActivity('intClamps', { toy.intClamps() }, [[toy.DRESSED, toy.TEASE]]); return { toy.addToy(toy.CLAMPS, toy.CLAMPED, "nipple clamps", "May I remove the nipple clamps?"); } diff --git a/scripts/toy/play.groovy b/scripts/toy/play.groovy index da0bff2..cd71b1d 100644 --- a/scripts/toy/play.groovy +++ b/scripts/toy/play.groovy @@ -92,8 +92,23 @@ } final sessions = DOMME.sessions.findAll { s -> eval(s.require ?: true) }; final probabilities = sessions.withIndex().collect { s, idx -> [idx] * s.probability }.sum(); - final sessionIdx = probabilities[getRandom(probabilities.size)]; - sessions[sessionIdx].phases.forEach { phase -> + final session = sessions[probabilities[getRandom(probabilities.size)]]; + // Change if required + dress(session.phases + .collect { phase -> phase.activities + phase.intervals } + .flatten() + .unique() + .findAll { a -> a } + .collectMany { a -> activityList[a].images } + .unique(), { + present(null, [ + [ "Wait there while I change..."]]); + pause(5); + showButtonG("Yes, ${dommeTitle()}", "ok"); + showImage(null); + pause(randRange(40, 60)); + }); + session.phases.forEach { phase -> if (eval(phase.require ?: true)) { funcMap.select[phase.select ?: 'take'](eval(phase.number ?: 1), (phase.activities ?: []).collect { f -> funcMap.activities[f] }, diff --git a/scripts/toy/tease.groovy b/scripts/toy/tease.groovy index b9472a2..af90dd8 100644 --- a/scripts/toy/tease.groovy +++ b/scripts/toy/tease.groovy @@ -186,8 +186,8 @@ }; toy.setDefault("toy.strokeTeaseOffset", 0); - toy.addActivity("playStrokes", { toy.playStrokes() }); - toy.addActivity("playEdges", { toy.playEdges() }); - toy.addActivity("preEdge", { toy.preEdge() }); + toy.addActivity("playStrokes", { toy.playStrokes() }, [[toy.TITS]]); + toy.addActivity("playEdges", { toy.playEdges() }, [[toy.TITS]]); + toy.addActivity("preEdge", { toy.preEdge() }, [[toy.DRESSED]]); return null; } -- cgit v1.2.3