summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--images/toy/ancilla/domme.groovy57
-rw-r--r--scripts/toy.groovy5
2 files changed, 61 insertions, 1 deletions
diff --git a/images/toy/ancilla/domme.groovy b/images/toy/ancilla/domme.groovy
new file mode 100644
index 0000000..71863fd
--- /dev/null
+++ b/images/toy/ancilla/domme.groovy
@@ -0,0 +1,57 @@
+[
+ name: 'Ancilla',
+ fullName: 'Ancilla Tilia',
+ title: 'Mistress',
+ sessions: [
+ [
+ theme: 'stroking and edging',
+ require: 'toy.prop.punishment < 50',
+ probability: 50,
+ phases: [
+ [
+ select: 'repeat',
+ number: 'toy.randRange(1, 3)',
+ activities: [ 'preRelease', 'preEdge', 'preGag', 'preClamps', 'preCollar', 'preStrip' ]
+ ], [
+ select: 'repeat',
+ number: 'toy.randRange(1, 3)',
+ activities: [ 'playStrokes', 'playEdges' ],
+ intervals: [ null, 'intClamps', 'intSqueeze' ]
+ ], [
+ select: 'take',
+ number: 'toy.randRange(0, 2)',
+ activities: [ 'postCum', 'postChastity' ]
+ ], [
+ require: '!toy.sessionAborted() && !toy.can("cum")',
+ select: 'take',
+ number: 1,
+ activities: [ 'postPermitCum' ]
+ ]
+ ]
+ ], [
+ theme: 'punishment',
+ require: 'toy.prop.punishment > 40',
+ probability: 50,
+ phases: [
+ [
+ activities: [ 'preChastity' ]
+ ], [
+ select: 'take',
+ number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
+ activities: [ 'preGag', 'preClamps', 'preCollar', 'preStrip' ],
+ use: 'punishMultiply'
+ ], [
+ select: 'repeat',
+ number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
+ activities: [ 'playKneel', 'playCbt', 'playClamps', 'playNothing' ],
+ use: 'punishApply'
+ ], [
+ select: 'take',
+ number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
+ activities: [ 'playBondage', 'playCbt', 'playClamps' ],
+ use: 'punishApply'
+ ]
+ ]
+ ]
+ ]
+]
diff --git a/scripts/toy.groovy b/scripts/toy.groovy
index 70848fc..42b78f1 100644
--- a/scripts/toy.groovy
+++ b/scripts/toy.groovy
@@ -36,6 +36,7 @@ final FRIENDS = [ "Tori", "Sophie", "Krystal" ];
// toy.position
final KNEELING = "kneeling", ALLFOURS = "allfours", STANDING = "standing";
def OWNER = null;
+def DOMME = null;
final SITTER = "sarah-james";
final SOFT = "soft";
@@ -1617,6 +1618,7 @@ def setupShowCalendar = {
// GO!
setDefault("toy.owner", "ancilla");
OWNER = loadString("toy.owner");
+DOMME = Eval.me(new File("$DATAFOLDER/images/toy/$OWNER/domme.groovy").text);
def getDayNum = { Math.floorDiv(getTime() + localTimeOffset() - 14400, 86400) };
def getAvail = { dayNum -> loadInteger("toy.availability.$dayNum") ?: 0 };
def addAvail = { amount ->
@@ -1690,7 +1692,7 @@ while (true) {
opts.push([ lbl: "May I be un-$it".toString(), act: requestRelease, arg: it ]);
};
opts.push([ lbl: "Back", act: null ]);
- def opt = getSelectedValue("Yes, toy?", opts.collect { it.lbl });
+ def opt = getSelectedValue(is("DEBUG") ? DOMME : "Yes, toy?", opts.collect { it.lbl });
def act = opts[opt].act;
if (act)
act(opts[opt].arg);
@@ -1775,6 +1777,7 @@ while (true) {
* images/toy/ancilla/pink/9.jpg
* images/toy/ancilla/pink/tags
* images/toy/ancilla/lounge.jpg
+ * images/toy/ancilla/domme.groovy
* sounds/toy/165bpm.mp3
* sounds/toy/180bpm.mp3
* sounds/toy/240bpm.mp3