machine_maker wrote: Fri May 07, 2021 6:38 am
Will the personality work fine with the clothing changes if I just pull the latest from the repo? Or do I have to re-setup toys again?
It'll work fine. It should at least. You just need to setup your lingerie accordingly now.
Helequin wrote: Sat May 08, 2021 5:12 am
Finally had some time to get around to playing with Spicy and I'm definitely impressed! The stability of the TAI Java platform is much appreciated. I'm just two sessions in, but have a few question and a couple points of possible feedback.
First question is what is the functional difference between the personality strictness (the 0-2) and the the type (0 or 1)? As presented in the intro it's not super clear how these two settings are different from each other. I started off with 1 strictness and type 1, and not sure it feels quite right, although it's too early to know for sure. In general I enjoy a domme type which can be very demanding but still fair, and caring in the end even in the act of working me over

. What differences would I notice if I were to set it to something like strictness 2 and type 0?
I am also seeing black images when the domme reaches for URL files at times. I began with the Spicy starter pack, so the url files are reddit based and set-up right. What I'm noticing in the downloaded pictures files there are a number of mp4 files, likely due now to the prevalence of "gifs" which are not at all actual gifs. Also quite a few broken imgur images, but not sure there's anything which can be done about that.
Last point, I said yes to the domme asking for verbal humiliation and she immediately took it to a more intense level than I thought she meant. Limits in these areas can always be really hard to quantify as there is a huge range of what might be considered humiliation, but is there a way to set this back to 'Maybe' instead of 'Yes'?
A few feedback points have come to mind, I'll spoiler them so there are no surprises ruined for other players:
- Spoiler: show
-
1. The pussy licking task is an interesting concept but a bit boring IMHO. It's hard to stay as interested or immersed in the fantasy of it when the whole screen is just a big colour coded arrow as it goes on for 7 or 8 minutes. Not sure how to improve this, unless TAI is capable of overlaying the arrow on another image or something like that.
2. The intro is a neat concept and I like the immersion of it. But it's also pretty slow to get through, especially if something goes wrong and it needs to be redone. A 'quick set up' option might be a nice to have for players who want or need to restart, but are familiar with Spicy. It also felt a bit odd that the set up counted as a session, leaving the domme not available to play later in the day.
3. I'd recommend letting users set how long they should have to wait between sessions, especially for part time mode. Schedules differ and it's not out of line to have 4 sessions in say a weekend when there is more free time.
4. Thematically the intro is at odds with the domme so far. The intro sets up this immersive matchmaking service to introduce me to the domme, then the domme immediately begins talking as if she's been in control of me for some time. Obviously this is still Alpha and this doesn't hinder any of the functional parts of Spicy, so just a minor point.
5. Some way to pause the session while dealing with any RL interruptions would definitely be handy.
Hey
Thanks for the feedback.
You'll probalby want strictness 1/2 and type 0 then. Type determines whether your Domme rather enforces stuff onto you (1) or if she is more gentle and understanding (0) regarding a no or maybe.
Strictness (0-2) is used to calculate many things like mood, edges, strokes, punishment severeness and so on and forth. It also is included in a few scenarios that are like 1-2 strictness only but it's less scenario influencing than the type.
The files from reddit probably have to be updated for the starter pack at some point. They wil probably contain a lot of broken urls now.
Yea, limits are hard to define on an indivindual basis. Can you explain what threw you off so I might be able to define a secondary type of humiliation? I probably can't deal with any individual level of limits but maybe yours allows for some generic solution.
- Spoiler: show
-
1. I get that. I have noticed myself. I like the idea of the overlay so I'll see what I can do. At least some audio interaction would be nice.
2. Quick-setup sounds like a low priority thing I might take a look at.
3. Seems like a nice idea. For part time at least. With fulltime there should be plenty of things to do. Only thing breaking then is the orgasm chance obviously. I'll think about whether it would make sense to just go with it or to actually once decided not award the player any additional orgasms for the day even if there are multiple sessions. Your take on that?
4. Regarding the flow: I agree. I used most of the dialogue from the original Spicy but had the more like immersive approach in mind so I will definitely deal with that at some point.
5. Good idea. I'll think about what I can do
FrozenWolf wrote: Sat May 08, 2021 4:45 pm
It seems to originate from the random toy interaction. I wonder if the answer 'I am on the edge' is being chewed up by the unauthorised edge handler and causes subsequent answers to "Are you done yet" to be missed. I'll take a look.
I actually have no idea yet how this occured.
FrozenWolf wrote: Sat May 08, 2021 4:45 pm
Ingvald_Alex wrote: Tue May 04, 2021 7:15 am
How do I stop "Edge a ton", but continue the session? More than 20 edges in a row is too much! Last time there were 37 edges...
And please add a "Safeword". With which you can either stop the session completely if something went wrong, or switch to another action.
The safeword is a great idea for some of those particularly challenging sessions. Maybe this is something that GodDragon can incorporate.
Safeword is in the making. And yes, I'll take a look at edge a ton.
leezer3 wrote: Sat May 08, 2021 7:28 pm
Both you and GodDragon TBQH, it's sometimes unclear as to the distinction between who decides on what feature
I suspect (although I haven't really looked into the codebase with regards to paths) that it'll have the same issue with personality modules, variables and anything similar.
The linked C# code is over 12 years old & pretty well tested at this point (thousands of downloads a month, reasonable proportion of Linux etc.), but I absolutely take your point- If you want unit tests or validation, then it'll be a pig of a job to deal with.
---
Less controversial things:
It seems to me that the
waitForCumAnswer function is bugged.
https://github.com/GodDragoner/Spicy-TA ... asm.js#L43
The only response this will accept without punishment is the thank-you.
Whilst it's unclear as to the intent of the rule, it would seem to me that the *logical* progression should be as follows:
Sub gives initial cum response.
Answer loops for N time (few seconds), waiting for the thank-you response.
Dom punishes if appropriate thanks is not given in this timescale.
It also feels as though the final else block should be a query as to whether the sub has cum or not, as opposed to dishing out a punishment for a 'wrong' response.
Well generally speaking FrozenWolf has volunteered to help with small bug fixes and code cleanup. The main development is still fully in my hands. I don't mind any help or suggestions, so I wouldn't say I "decide" on what feature is added. I rather just try to prioritize requests.
Well, I guess you are partly right. There should be another layer to it.
Ingvald_Alex wrote: Mon May 10, 2021 1:52 pm
What do I need to change if I have a girlfriend or get married? But the sessions were when I was Single.
What if I don't want a session. Boring and even more so yesterday was already. How to skip or change to another?
I'll add a response for that.
I don't quite get what you mean by skip or change to another? Skip what? a module?
Ingvald_Alex wrote: Thu May 13, 2021 7:01 am
New freeze.
Log:
- Spoiler: show
Code: Select all
09:54:57 AM CHAT: 09:54 AM Justine: Now take that rope and tie up your balls
09:55:03 AM CHAT: 09:55 AM Justine: Do it real nice and tight
09:55:07 AM CHAT: 09:55 AM Justine: But don't cut off the blood flow
09:55:12 AM CHAT: 09:55 AM Justine: Tell me when you are ready to continue
09:56:27 AM CHAT: 09:56 AM Alex: Yes Mistress
09:56:27 AM INFO: Random toy balls done
09:56:27 AM INFO: Calculating mood for 537 and strictness 2
09:56:27 AM INFO: Feel like showing power: 67
09:56:27 AM INFO: Min time between stroking passed: 30
09:56:27 AM INFO: Calculating mood for 537 and strictness 2
09:56:27 AM INFO: Calculating mood for 537 and strictness 2
09:56:27 AM INFO: Choosing module based on the following chances:
09:56:27 AM INFO: Tease: 40
09:56:27 AM INFO: Sissy: 0
09:56:27 AM INFO: Pain: 50
09:56:27 AM INFO: Slave: 50
09:56:27 AM INFO: Humiliation: 0
09:56:27 AM INFO: Selector is 98
09:56:27 AM INFO: Unable to find module for category Slave to run
09:56:27 AM INFO: Stuck in module Slave loop . Trying tease now
09:56:27 AM INFO: Pushed 2 to result 2
09:56:27 AM INFO: Pushed 7 to result 9
09:56:27 AM INFO: Pushed 1 to result 10
09:56:27 AM INFO: Trying to run module \Session\Modules\Tease\NoChastity\EnduranceStrokes.js
09:56:27 AM INFO: Trying to run module EnduranceStrokes from category 6 and was in previous module is false
09:56:30 AM CHAT: 09:56 AM Justine: Let's train that subservient cock with some more endurance strokes toy
09:56:39 AM CHAT: 09:56 AM Justine: Show me you can handle it *grin*
09:56:46 AM CHAT: 09:56 AM Justine: Start stroking that frustrated pecker nice and slow toy LOL
09:56:56 AM INFO: Calculating mood for 537 and strictness 2
09:56:59 AM CHAT: 09:56 AM Justine: Hold back that edge while staring at my ass bimbo *evil grin*
Exception in thread "Thread-29" java.lang.NullPointerException
at me.goddragon.teaseai.api.picture.PictureSet.getRandomPictureForTagStates(PictureSet.java:88)
at me.goddragon.teaseai.api.picture.PictureSet.getRandomPictureForTagStates(PictureSet.java:54)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$447$1020AA$\^eval\_.showDommeTaggedImageForPictureTag(<eval>:34)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$445$\^eval\_.:program(<eval>:237)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:456)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:413)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:409)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:157)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at me.goddragon.teaseai.api.scripts.ScriptHandler.runScript(ScriptHandler.java:190)
at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:171)
at me.goddragon.teaseai.api.scripts.nashorn.RunFunction.call(RunFunction.java:30)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.JSObjectLinker.jsObjectScopeCall(JSObjectLinker.java:254)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$383$2711A$\^eval\_.runModuleCategory(<eval>:72)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$336$\^eval\_.:scopeCall-9(<eval>)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$336$\^eval\_.:program(<eval>:185)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:456)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:413)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:409)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:157)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at me.goddragon.teaseai.api.scripts.ScriptHandler.runScript(ScriptHandler.java:190)
at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:171)
at me.goddragon.teaseai.api.scripts.nashorn.RunFunction.call(RunFunction.java:30)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.JSObjectLinker.jsObjectScopeCall(JSObjectLinker.java:254)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$282$\^eval\_.:program(<eval>:91)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:456)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:413)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:409)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:157)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at me.goddragon.teaseai.api.scripts.ScriptHandler.runScript(ScriptHandler.java:190)
at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:171)
at me.goddragon.teaseai.api.scripts.nashorn.RunFunction.call(RunFunction.java:30)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.JSObjectLinker.jsObjectScopeCall(JSObjectLinker.java:254)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$280$5149$\^eval\_.startSession(<eval>:131)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$271$\^eval\_.:program(<eval>:38)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:456)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:413)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:409)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:157)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at me.goddragon.teaseai.api.scripts.ScriptHandler.runScript(ScriptHandler.java:190)
at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:171)
at me.goddragon.teaseai.api.scripts.nashorn.RunFunction.call(RunFunction.java:30)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.JSObjectLinker.jsObjectScopeCall(JSObjectLinker.java:254)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$46$\^eval\_.:scopeCall(<eval>)
at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$46$\^eval\_.:program(<eval>:148)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:655)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:513)
at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:527)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:456)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:413)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:409)
at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:157)
at java.scripting/javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at me.goddragon.teaseai.api.scripts.ScriptHandler.runScript(ScriptHandler.java:190)
at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:144)
at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:126)
at me.goddragon.teaseai.api.session.Session$1.run(Session.java:41)
Personality(ScriptHandler.java:126)
at me.goddragon.teaseai.api.session.Session$1.run(Session.java:41)
What is the difference between Atonement and Pay Fine? In fact, punishment points are removed for gold in both places. Only in the first case, Domina's mood also worsens and it is more expensive. But in essence, the result in both cases is the same - gold instead of punishment. And why then the Atonement?
I'll take a look at that error.
Well you are right, I added the shop option without remembering there was one in the dungeon. I'll deal with that.
Helequin wrote: Thu May 13, 2021 6:12 pm
Some more generic feedback/suggestions after playing about and some poking around in Spicy's files. Again will toss it in spoilers for neatness.
Brainwashing
- Spoiler: show
-
At least the videos Spicy has grabbed for me really should be tied to the Sissy limit. Might also be worth considering how long the videos for this should be. Spicy defaults to 45 min sessions and one of the videos in the fold is 24 minutes long, so a session can easily be dominated by one brainwash.
Like the idea of the hypno/brainwashing though, and it could be expanded beyond the sissy content too.
Blowjob Stuff
- Spoiler: show
-
I actually appreciate that the blowjob training and tasks are not locked behind the sissy limit. This one can be a tricky distinction to make in tease format, but to me there is a definite difference between being made to suck off a domme's strap-on or being attracted to a trans woman and being into sissification. Of course the main difference is theme, tone and presentation.
Hmmm, perhaps 'Attracted to Trans' could eventually be another limit and give Spicy more ways to tease and train the sub for blowjob and anal without sissification.
Domme Slideshow
- Spoiler: show
-
It appears Spicy basically does not show any nudity except for when doing worship. I totally understand where this is coming from in D/S terms, but I'd suggest making this a configurable option. Not everyone goes for the clothed = powerful image.
On a practical side, picture sets of models can be 100 or so images but only be fully clothed for the first five or ten. This turns Spicy into more of a static image than immersive domme moving and changing positions, at least for the tagged sets I have.
Poking around it looks like TAI is grabbing a random fully clothed image as it stands now. The ideal would probably be some sort of progressive advance through the images as a sort of strip tease if nudity was going to be shown.
Hey again.
Brainwashing
- Spoiler: show
-
Yea the media files of Spicy definetely have to be cleaned and upgraded to more like high resolution content as well.
I'll get that to that eventually. However you are also right, it would make sense to limit the brainwashing to like 10 minutes at a time no matter the video length. I'll see what I can do about that.
I mean Sissy Hypno is fairly common and sadly stuff like Chastity Hypno is hard to come by but I'll see what I can find apart from mostly sissy stuff.
Blowjob Stuff
- Spoiler: show
-
I agree. I would never say that a blowjob is necessarily a "sissy" thing to do or something you perfom on a real penis in the end. That's why I tried to seperate it as well as possible.
Oh so a trans thing? That might work well with the Brainwashing even though that might quickly go into sissy stuff again. However I like the thought of it. I'll see what I can do.
Domme Slideshow
- Spoiler: show
-
I thought Spicy should be able to grab rather nude picks as well however I have noticed a similar behaviour. I'll see what's wrong with it.
bkrop wrote: Fri May 14, 2021 12:41 am
How do i like restart the whole script.
like start all the setup again from the beginning?
Just close TAJ, delete your whole "System/Variables" folder and start TAJ again. That will reset everything and delete all progress.
Ingvald_Alex wrote: Sun May 16, 2021 3:28 pm
Dragon God, do something with duration: edge training, edge a ton and others. Since the session can take up to 3 hours, although initially the session was supposed to last 60 or 90 minutes. Plus, some practices, due to such a duration, are exhausting in the trash, so they also have a negative effect on the cardiovascular system. Gradually, the program becomes impossible to use.
Thanks for the feedback. I have noticed edge a ton running out of proportion as well. However I don't know what other modules you mean. Edge training should be perfectly fine since it doesn't get any longer. It's just two random modules appended.
EDIT: I have tried to balance edge a ton a bit and limit it. It should now be limited to 25 + strictness * 5 edges and the reduce them to a reasonable amount again. I don't know what your limit is (and what it asked you to do in your 3 hour session) but 25 edges is fine for me. If it really variates that much from person to person I will have to make the whole edging stuff more personalized.
Apart from that please report any other modules that become "impossible" after some time.