diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2019-07-08 21:50:10 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2019-07-08 21:50:10 +0100 |
commit | 1b8abeee190eaa2674d82c5137eae6bc6224acf0 (patch) | |
tree | 8ab0cdc7cc31e14272dc8890c3cd67c91c56c8e2 | |
parent | Don't tell toy to kneel when kneeling or squating, it's weird (diff) | |
download | toy-1b8abeee190eaa2674d82c5137eae6bc6224acf0.zip |
Dynamic build sessions from activity tags
-rw-r--r-- | images/toy/domme.groovy | 20 | ||||
-rw-r--r-- | scripts/toy.groovy | 1 | ||||
-rw-r--r-- | scripts/toy/bondage.groovy | 4 | ||||
-rw-r--r-- | scripts/toy/chastity.groovy | 4 | ||||
-rw-r--r-- | scripts/toy/play.groovy | 10 |
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 |