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
|
{ toy ->
final LUNCH = "lunch", SHOPPING = "shopping", PARTY = "party";
final BEGINPLAN = "beginPlan", ENDPLAN = "endPlan";
final FRIENDS = [ "Tori", "Sophie", "Krystal" ];
toy.metaClass.setupPlan { plan, float startmin, float startmax, float endmin, float endmax ->
final timeWindow = { float min, float max -> (int)((min * HOUR) - localTimeOffset() + getRandom((int)((max - min) * HOUR))) };
final friendName = FRIENDS[getRandom(FRIENDS.size())];
final day = getDay() + ((getRandom(3) + 1) * DAY);
addEventIfMissing(plan, day + timeWindow(startmin, startmax), BEGINPLAN,
[friendName: friendName, returnTime: day + timeWindow(endmin, endmax)]);
}
toy.metaClass.setupPlans {
save("toy.plan", null);
setupPlan(LUNCH, 11.5, 12.5, 13.0, 14.0)
setupPlan(SHOPPING, 14.5, 15.5, 16.0, 18.0)
setupPlan(PARTY, 19, 20, 22.0, 25.0)
};
toy.metaClass.leaveNote { msg, instr ->
save("toy.note", msg);
save("toy.noteInstr", instr);
};
toy.metaClass.readNote {
leaveNote(null, null);
};
toy.metaClass.beginPlan { rt, plan, args ->
addEvent(plan, args.returnTime, ENDPLAN, args.friendName);
dress([[DRESSED,nTEASE], [DRESSED,TEASE]]);
if (rt && sessionSummon([DRESSED,nTEASE])) {
present([DRESSED,nTEASE], [
[ "I'm going out now, toy.", "$plan time!" ],
[ "Will you be good while I'm gone?", "You will behave as I expect?" ]]);
wait(10);
postChastity();
def toys = TOYTOYS.findAll { t -> stateIs(t) };
Collections.shuffle(toys);
toys.each { removeToy(it, [DRESSED,nTEASE]) };
removeEvent(REDRESS);
set(NAKED, false);
present([DRESSED,TEASE], [
[ "Back later!", "See you soon, toy" ]]);
wait(5);
}
else if (has(CHASTITY) && !stateIs(CHASTE)) {
leaveNote("I want you in chastity until I return!", CHASTE);
}
DOMME = loadDomme(OWNER);
setAway(plan);
removeEvent(PLAY);
showLounge();
};
toy.metaClass.endPlan { rt ->
save("toy.owner.outfitTime", getTime());
setAway(null);
if (rt && sessionSummon([DRESSED])) {
present([DRESSED], [["Hello, toy!"], ["I'm back home now."]]);
wait(10);
showLounge();
}
readNote();
playSchedule();
setupPlans();
};
toy.metaClass.showCalendar {
final events = loadEvents();
show(
[LUNCH, SHOPPING, PARTY].collect {
final event = events[it];
if (!event) return "";
def s = event.time;
def f = event.arg.friendName;
def timeStr = localTimeOf(s).format(soonFormatter);
return "$it with $f on $timeStr.\n".capitalize();
}.join());
showButton("OK");
};
toy.addNamedEvent(BEGINPLAN, { name, arg, schedTime, rt -> toy.beginPlan(rt, name, arg) });
toy.addNamedEvent(ENDPLAN, { name, arg, schedTime, rt -> toy.endPlan(rt) });
toy.addRequestable("calendar", "Calendar", { toy.showCalendar() });
toy.setupPlans();
}
|