{ toy -> toy.metaClass.getCuffs() { if (!has(HANDCUFFS)) return; present([DRESSED, nTEASE], [ ["Go fetch your handcuffs"]]); showButtonG("Yes, ${dommeTitle()}", "ok"); pause(10); showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); sessionToys[HANDCUFFS] = getTime(); } toy.metaClass.preGag = { if (stateIs(GAGGED)) return 1.2; if (!has(BALLGAG)) return; present([DRESSED], [ ["Go fetch your gag, toy...", "Bring me your gag, toy..."], ["Quickly!", "Hurry back!"]]); showButton("Yes, ${dommeTitle()}"); show(null); pause(10); showButtonGT("Back, ${dommeTitle()}", "back", 50, 2); present([DRESSED], [ ["Good boy.", "Very good."], ["Put it on..."], ["Nice and tight.", "Tight!"], ["I don't want to a hear a word from you.", "A quiet toy is a good toy."]]); set(GAGGED, true); showButtonGT("Gagged, ${dommeTitle()}", "gagged", 20, 2); sessionToys[BALLGAG] = getTime(); return 1.2; }; toy.metaClass.preCollar = { if (stateIs(COLLARED)) return 1.1; if (!has(COLLAR)) return; present([DRESSED], [ ["You look underdressed, toy.", "A toy without a collar doesn't look right."], ["Go put your collar on", "I want a collar around your neck"], ["and crawl back like the slutty puppy dog you are.", "and kneel before me."]]); showButtonG("Yes, ${dommeTitle()}", "ok"); show(null); pause(10); set(COLLARED, true); showButtonGT("Back, ${dommeTitle()}", "back", 60, 1); sessionToys[COLLAR] = getTime(); return 1.1; }; toy.metaClass.playBondage = { if (!has(HANDCUFFS)) return; def prep = [ { preStrip() }, { preCollar() }, { preClamps() }, { preGag() } ]; Collections.shuffle(prep); prep.collect { p -> p(); }; getCuffs(); present([DRESSED, nTEASE], [ ["Good."], ["Down on the floor.", "On your knees.", "Down there, where you are."]]); pause(15); present([DRESSED, nTEASE], [ ["You know what's next.", "Take your cuffs."], ["Cuff yourself,", "Hands cuffed,"], ["behind your back of course.", "behind you."]]); pause(15); present([DRESSED, TEASE], [ ["Don't go anywhere!", "Do not move!"]]); pause(15); present([STOOD], [ ["I'll be back for you soon.", "I won't leave you too long."]]); pause(15); setImage(null); show(null); def waitTime = 300 + getRandom(Math.min(1500, 1 + getPunish() * 10)); pause(waitTime); playBackgroundSound("bell.wav"); present([STOOD], [ ["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."]]); pause(20); present([DRESSED, TEASE], [ ["OK,", "Mmmm,"], ["soon.", "just a while longer."]]); pause(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."]]); pause(10); setImage(null); showButtonGT("Freed, ${dommeTitle()}", "freed", 120, 1); return waitTime; }; toy.addActivity("preGag", { toy.preGag() }); toy.addActivity("preCollar", { toy.preCollar() }); toy.addActivity("playBondage", { toy.playBondage() }); }