summaryrefslogtreecommitdiff
path: root/scripts/toy/confession.groovy
blob: 68a98a333c2374ee279e777e022332fe37d2bcb3 (plain)
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;
}