summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2019-07-08 21:50:10 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2019-07-08 21:50:10 +0100
commit1b8abeee190eaa2674d82c5137eae6bc6224acf0 (patch)
tree8ab0cdc7cc31e14272dc8890c3cd67c91c56c8e2
parentDon't tell toy to kneel when kneeling or squating, it's weird (diff)
downloadtoy-1b8abeee190eaa2674d82c5137eae6bc6224acf0.zip
Dynamic build sessions from activity tags
-rw-r--r--images/toy/domme.groovy20
-rw-r--r--scripts/toy.groovy1
-rw-r--r--scripts/toy/bondage.groovy4
-rw-r--r--scripts/toy/chastity.groovy4
-rw-r--r--scripts/toy/play.groovy10
5 files changed, 25 insertions, 14 deletions
diff --git a/images/toy/domme.groovy b/images/toy/domme.groovy
index 3b55023..6335d3a 100644
--- a/images/toy/domme.groovy
+++ b/images/toy/domme.groovy
@@ -9,12 +9,12 @@
[
select: 'repeat',
number: 'toy.randRange(1, 3)',
- activities: [ 'preRelease', 'preEdge', 'preGag', 'preClamps', 'preCollar', 'preStrip' ]
+ activities: [ '*pre,!punish' ]
], [
select: 'repeat',
number: 'toy.randRange(1, 3)',
- activities: [ 'playStrokes', 'playEdges' ],
- intervals: [ null, 'intClamps', 'intSqueeze' ]
+ activities: [ '*play,tease' ],
+ intervals: [ null, '*int' ]
], [
select: 'take',
number: 'toy.randRange(0, 2)',
@@ -36,7 +36,7 @@
phases: [
[
number: 'toy.randRange(1, 3)',
- activities: [ 'preClamps', 'preCollar', 'preStrip' ]
+ activities: [ '*pre,!reward,!ballgag' ]
], [
activities: [ 'playSuck' ]
]
@@ -48,12 +48,12 @@
[
select: 'take',
number: 'toy.randRange(1, 4)',
- activities: [ 'preGag', 'preClamps', 'preCollar', 'preStrip' ],
+ activities: [ '*pre,!reward,!chaste' ],
use: 'punishMultiply'
], [
select: 'repeat',
number: 'toy.randRange(2, 3)',
- activities: [ 'playBeatCock', 'playBeatBalls', 'playClamps' ],
+ activities: [ '*play,punish', '*play,humiliation' ],
use: 'punishApply'
], [
require: 'toy.can("perm_chaste") || toy.randRange(1, 2) == 1',
@@ -70,18 +70,18 @@
], [
select: 'take',
number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
- activities: [ 'preGag', 'preClamps', 'preCollar', 'preStrip' ],
+ activities: [ '*pre,!reward,!chaste' ],
use: 'punishMultiply'
], [
select: 'repeat',
number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
- activities: [ 'playKneel', 'playBeatCock', 'playBeatBalls', 'playClamps' ],
- intervals: [ null, 'intNothing' ],
+ activities: [ '*play,punish', '*play,humiliation' ],
+ intervals: [ null, '*int' ],
use: 'punishApply'
], [
select: 'take',
number: 'toy.randRange(1, 2 + ((toy.prop.punishment ?: 0) / 100))',
- activities: [ 'playBondage', 'playBeatCock', 'playBeatBalls', 'playClamps' ],
+ activities: [ 'playBondage', '*play,punish' ],
use: 'punishApply'
], [
activities: [ 'postChastity' ]
diff --git a/scripts/toy.groovy b/scripts/toy.groovy
index 6f87485..3d32f62 100644
--- a/scripts/toy.groovy
+++ b/scripts/toy.groovy
@@ -313,6 +313,7 @@ return new Object() {
final activityList = [:];
final addActivity = { String name, func, images = [], tags = [] ->
activityList[name] = [
+ name: name,
func: func,
tags: tags ?: [],
images: images ?: []
diff --git a/scripts/toy/bondage.groovy b/scripts/toy/bondage.groovy
index ce17774..d0cf42b 100644
--- a/scripts/toy/bondage.groovy
+++ b/scripts/toy/bondage.groovy
@@ -92,8 +92,8 @@
return waitTime;
};
- toy.addActivity("preGag", { toy.preGag() }, [[toy.DRESSED]], [toy.PRE, toy.HUMILIATION, toy.BONDAGE]);
- toy.addActivity("preCollar", { toy.preCollar() }, [[toy.DRESSED]], [toy.PRE, toy.HUMILIATION, toy.BONDAGE]);
+ toy.addActivity("preGag", { toy.preGag() }, [[toy.DRESSED]], [toy.PRE, toy.HUMILIATION, toy.BONDAGE, toy.BALLGAG]);
+ toy.addActivity("preCollar", { toy.preCollar() }, [[toy.DRESSED]], [toy.PRE, toy.HUMILIATION, toy.BONDAGE, toy.COLLAR]);
toy.addActivity("playBondage", { toy.playBondage() }, [
[toy.DRESSED, toy.nTEASE], [toy.DRESSED, toy.TEASE], [toy.STOOD] ], [toy.PLAY, toy.PUNISH, toy.BONDAGE]);
return {
diff --git a/scripts/toy/chastity.groovy b/scripts/toy/chastity.groovy
index 7fd5830..403b678 100644
--- a/scripts/toy/chastity.groovy
+++ b/scripts/toy/chastity.groovy
@@ -106,8 +106,8 @@
}
};
- toy.addActivity('preRelease', { toy.preRelease() }, [[toy.DRESSED, toy.TEASE]], [toy.PRE, toy.REWARD]);
- toy.addActivity('preChastity', { toy.preChastity() }, [[toy.DRESSED, toy.TEASE]], [toy.PRE, toy.PUNISH]);
+ 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;
diff --git a/scripts/toy/play.groovy b/scripts/toy/play.groovy
index 03f6c80..2078d0b 100644
--- a/scripts/toy/play.groovy
+++ b/scripts/toy/play.groovy
@@ -59,6 +59,16 @@
],
'activities': activityList
];
+ // Expand wildcards
+ final expandWildcards = { list ->
+ list
+ .findAll { a -> a && a.startsWith("*") }
+ .collect { a -> list.remove(a); return a.substring(1).split(",") }
+ .collectMany { tags -> activityList.values().findAll(matchTags(tags))*.name }
+ .forEach { a -> list.add(a) };
+ }
+ DOMME.sessions*.phases*.activities*.forEach { expandWildcards(it); }
+ DOMME.sessions*.phases*.intervals*.forEach { expandWildcards(it); }
final eval = { expr -> Eval.me('toy', playScope, expr.toString()) };
if (stateIs("DEBUG")) {
// Check everything in DOMME evaluates and resolves