1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
{ 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]]);
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([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);
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() });
return null;
}
|