{ toy -> toy.metaClass.preRelease { if (!stateIs(CHASTE)) return; if (!stateIs(NAKED)) { present([DRESSED], [ ["Reach down... and through your clothes...", "Stay clothed,"], ["rub that chastity device...", "run your hand around that locked cock..."], ["imagine if that was me doing it.", "that looks frustrating."]]); pause(15); present(null, [["Show me.", "Let me see it."]]); pause(10); } else { present([DRESSED], [ ["Look what we have here.", "Hnmm, look at that."], ["Locked away and useless.", "Under lock and key as it should be."], ["Too bad I have the keys.", "And I have the keys somewhere safe."]]); pause(10); } present([DRESSED], [ ["Play with your balls,", "Tease those balls a little,"], ["I want to see how horny you are", "see how hard you can get"], ["before I let you out.", "before I hand over the keys."], ["You should be", "When you're"], ["practically breaking out,", "about to break it for me,"], ["we'll continue.", "then I'll see about letting it out."]]); showButtonG("Hard, ${dommeTitle()}, please let me out", "hard"); present([DRESSED,TEASE], [ ["OK then.", "Fine, fine."], ["I'm feeling generous, toy...", "Well, it's no good to me like that..."], ["I have the keys right here,", "I have the keys here somewhere... OK,"], ["unlock yourself and", "take your chastity device off"], ["let me see my cock.", "let's see it."]]); showButtonG("Yes, ${dommeTitle()}", "ok"); pause(15); set(CHASTE, false); sessionToys[COCK] = getTime(); showButtonGT("Thank you, ${dommeTitle()}", "ok", 80, 1); }; toy.metaClass.chastity { pre -> if (stateIs(CHASTE)) return; if (!has(CHASTITY)) return; if (pre) { present([DRESSED,TEASE], [ ["Fun time is over for you.", "You'd have enough pleasure lately, my turn."]]); } else { present([TEASE], [ ["I can't keep an eye on you all time.", "It's not that I don't trust you."], ["But...", "I just like to be sure."]]); } pause(getRandom(5) + 10); if (sessionToys.containsKey(CHASTITY)) { present([DRESSED,TEASE], [ ["Time to", "Get your chastity device and"], ["lock my cock away again now.", "get that cock back in its cage."], ["And of course", "And then"], ["hand over the key.", "give me the key back."]]); } else { present([DRESSED,TEASE], [ ["Go to your room,", "Run along now,"], ["get your chastity device and"], ["lock it on.", "get that cock secured away."], ["Bring back the key.", "I want the key of course."]]); } pause(10); show(null); showButtonGT("Locked, ${dommeTitle()}. Here's the key.", "locked", 180, 1); set(CHASTE, true); present([DRESSED,TEASE], [ ["Good boy.", "Thank you, toy."]]); pause(5); } toy.metaClass.preChastity { chastity(true); } toy.metaClass.postChastity { chastity(false); if (stateIs(CHASTE) && (getPermission(PERM_CHASTE) == null || (getPermission(PERM_CHASTE) == false && getProp(PERM_CHASTE_ASK, loadI, 0) < getTime() - (DAY * 30)))) { present([DRESSED,TEASE], [ ["Now I have you locked up,", "Now my cock is secured away,"], ["would you let me", "can I"], ["keep you like that"], ["all the time?", "permanently?"]]); def sh = getSelectedValue(null, [ gagText("Yes, ${dommeTitle()}", "yes"), gagText("Please, ${dommeTitle()}, no", "no")]); if (sh == 0) { present([DRESSED,TEASE], [ ["Good boy.", "Thank you, toy."]]); setPermission(PERM_CHASTE, true); setProp(PERM_CHASTE_ASK, null); } else { present([DRESSED,nTEASE], [ ["Awwww.", "Shame."], ["One day..."]]); setPermission(PERM_CHASTE, false); setProp(PERM_CHASTE_ASK, getTime()); } pause(5); } }; toy.addActivity('preRelease', { toy.preRelease() }, [[toy.DRESSED, toy.TEASE]], [toy.PRE, toy.REWARD, toy.CHASTE]); toy.addActivity('preChastity', { toy.preChastity() }, [[toy.DRESSED, toy.TEASE]], [toy.PRE, toy.PUNISH, toy.CHASTE]); toy.addActivity('postChastity', { toy.postChastity() }, [ [toy.DRESSED, toy.TEASE], [toy.DRESSED, toy.nTEASE]]); return null; }