Page 14 of 58

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Fri Sep 11, 2020 4:34 pm
by smargerbarg
when it comes to tagging new sets, what is the process? I have several tagged sets for TAI, so I assume those wont work?

all the tagging is done under the media tagging tab correct?

is it necessary to tag every aspect of the picture? or is it better to tag the part that is most important? ie a pic bent over standing, should i just tag ass? or everything reverent?

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Wed Sep 23, 2020 11:31 pm
by lotar232
I've been playing on a forked version of spicy, but some bugs I've been running into and fixing seem like they're still in the github repo so here you go:

https://github.com/GodDragoner/Spicy-TA ... lRating.js line 181 needs a random() to prevent the response options from becoming a repeatedly instantiated button (I think.. haven't tested this fix)

https://github.com/GodDragoner/Spicy-TA ... lRating.js ... the loop in line 59-77 needs something like sleep(randomInteger(2,10)); added... when I played it the loop spun at "computer speed" spitting out a cacophony of overlapping Audio...

I should probably push my fork back up to github sometimes to diff for other fixes... just noticed these two today..

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sun Oct 04, 2020 2:14 pm
by TheGreatOne8899
Hi there,

I've been testing Spicy and firstly wanted to say thank you for all the effort! Looking good :-)

I've been running into a couple of issues though. Any ideas are welcome! Running on MacOS Catalina. I did have to update JavaFX to a newer version to make it work with Catalina.

1) Spicy fails to load dildos. I have tried using many different JDKs including OpenJDK 14, Oracle JDK 11 and Oracle JDK 14.
I wondered whether this might be an issue with Nashorn? Did a workaround by doing my own parsing of the variable but seems so hacky :lol:

Code: Select all

02:00:01 pm SEVERE: Latest loaded file was '/TeaseAI Java 1.2.2/Personalities/Spicy-TAJ-Personality/Toys/Icecube.js' and error was found in line 233
Error: TypeError: arrayList.size is not a function in <eval> at line number 233
javax.script.ScriptException: TypeError: arrayList.size is not a function in <eval> at line number 233
	at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:477)
	at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:461)
	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:191)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:172)
	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$197$\^eval\_$cu1$restOf.:scopeCall-2(<eval>)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$197$\^eval\_$cu1$restOf.:program(<eval>:70)
	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:191)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:145)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:125)
	at me.goddragon.teaseai.api.session.Session$1.run(Session.java:41)
Caused by: <eval>:233 TypeError: arrayList.size is not a function
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Undefined.lookup(Undefined.java:100)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:106)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:96)
	at jdk.dynalink/jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(CompositeTypeBasedGuardingDynamicLinker.java:161)
	at jdk.dynalink/jdk.dynalink.linker.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:109)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.lambda$getGuardedInvocation$0(LinkerServicesImpl.java:137)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.getWithLookupInternal(LinkerServicesImpl.java:168)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:135)
	at jdk.dynalink/jdk.dynalink.DynamicLinker.relink(DynamicLinker.java:242)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$522$6887$\^eval\_$cu1$restOf.loadDildos(<eval>:233)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$405$\^eval\_$cu1$restOf.:program(<eval>:30)
	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)
	... 22 more
2) Getting this error for heap space but doesn't seem to cause any issues. How much heap space are you guys giving TAJ?

Code: Select all

01:59:38 pm CHAT: Launching Spicy 0.1.5
Exception in thread "JavaFX Application Thread" java.lang.OutOfMemoryError: Java heap space
	at java.base/java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:61)
	at java.base/java.nio.ByteBuffer.allocate(ByteBuffer.java:348)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.createPlatformImage(QuantumToolkit.java:1426)
	at javafx.graphics/javafx.scene.image.Image.<init>(Image.java:740)
	at javafx.graphics/javafx.scene.image.WritableImage.<init>(WritableImage.java:77)
	at javafx.swing/javafx.embed.swing.SwingFXUtils.toFXImage(SwingFXUtils.java:108)
	at me.goddragon.teaseai.utils.media.AnimatedGif.<init>(AnimatedGif.java:24)
	at me.goddragon.teaseai.api.media.MediaHandler$4.run(MediaHandler.java:142)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl$$Lambda$152/0x0000000800227840.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl$$Lambda$150/0x0000000800222040.run(Unknown Source)
	at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
Keep up the good work!

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Wed Oct 07, 2020 12:33 am
by GodDragon
Thank you guys for all the reports. I will try to fix them asap. Just had a second session (sorry for the delay) and it went almost butter smooth. Nothing game breaking at all.

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Wed Oct 07, 2020 9:15 pm
by GodDragon
TheGreatOne8899 wrote: Sun Oct 04, 2020 2:14 pm Hi there,

I've been testing Spicy and firstly wanted to say thank you for all the effort! Looking good :-)

I've been running into a couple of issues though. Any ideas are welcome! Running on MacOS Catalina. I did have to update JavaFX to a newer version to make it work with Catalina.

1) Spicy fails to load dildos. I have tried using many different JDKs including OpenJDK 14, Oracle JDK 11 and Oracle JDK 14.
I wondered whether this might be an issue with Nashorn? Did a workaround by doing my own parsing of the variable but seems so hacky :lol:

Code: Select all

02:00:01 pm SEVERE: Latest loaded file was '/TeaseAI Java 1.2.2/Personalities/Spicy-TAJ-Personality/Toys/Icecube.js' and error was found in line 233
Error: TypeError: arrayList.size is not a function in <eval> at line number 233
javax.script.ScriptException: TypeError: arrayList.size is not a function in <eval> at line number 233
	at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:477)
	at jdk.scripting.nashorn/jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:461)
	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:191)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.evalScript(ScriptHandler.java:172)
	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$197$\^eval\_$cu1$restOf.:scopeCall-2(<eval>)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$197$\^eval\_$cu1$restOf.:program(<eval>:70)
	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:191)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:145)
	at me.goddragon.teaseai.api.scripts.ScriptHandler.startPersonality(ScriptHandler.java:125)
	at me.goddragon.teaseai.api.session.Session$1.run(Session.java:41)
Caused by: <eval>:233 TypeError: arrayList.size is not a function
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Undefined.lookup(Undefined.java:100)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:106)
	at jdk.scripting.nashorn/jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:96)
	at jdk.dynalink/jdk.dynalink.linker.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(CompositeTypeBasedGuardingDynamicLinker.java:161)
	at jdk.dynalink/jdk.dynalink.linker.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:109)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.lambda$getGuardedInvocation$0(LinkerServicesImpl.java:137)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.getWithLookupInternal(LinkerServicesImpl.java:168)
	at jdk.dynalink/jdk.dynalink.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:135)
	at jdk.dynalink/jdk.dynalink.DynamicLinker.relink(DynamicLinker.java:242)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$522$6887$\^eval\_$cu1$restOf.loadDildos(<eval>:233)
	at jdk.scripting.nashorn.scripts/jdk.nashorn.internal.scripts.Script$Recompilation$405$\^eval\_$cu1$restOf.:program(<eval>:30)
	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)
	... 22 more
2) Getting this error for heap space but doesn't seem to cause any issues. How much heap space are you guys giving TAJ?

Code: Select all

01:59:38 pm CHAT: Launching Spicy 0.1.5
Exception in thread "JavaFX Application Thread" java.lang.OutOfMemoryError: Java heap space
	at java.base/java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:61)
	at java.base/java.nio.ByteBuffer.allocate(ByteBuffer.java:348)
	at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.createPlatformImage(QuantumToolkit.java:1426)
	at javafx.graphics/javafx.scene.image.Image.<init>(Image.java:740)
	at javafx.graphics/javafx.scene.image.WritableImage.<init>(WritableImage.java:77)
	at javafx.swing/javafx.embed.swing.SwingFXUtils.toFXImage(SwingFXUtils.java:108)
	at me.goddragon.teaseai.utils.media.AnimatedGif.<init>(AnimatedGif.java:24)
	at me.goddragon.teaseai.api.media.MediaHandler$4.run(MediaHandler.java:142)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl$$Lambda$152/0x0000000800227840.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
	at javafx.graphics/com.sun.javafx.application.PlatformImpl$$Lambda$150/0x0000000800222040.run(Unknown Source)
	at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
Keep up the good work!
Regarding the first dildo error can you try to use the newest build I just supplied you with in the attachments of this post?
The heap space thing is very strange. What pictures are you loading?

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sat Oct 10, 2020 1:05 am
by lotar232
one more:

https://github.com/GodDragoner/Spicy-TA ... deStart.js

line 7:
run(random('Session/Start/Neutral/*.js', 'Session/Start/Chastity/*.js'));


there aren't any scripts in: Session/Start/Chastity/ (but there are subfolders)... not sure if this is content to be developed, or should keep going into the "offdenied" folder).. but anyway it errors when executed...

cheers!

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sat Oct 10, 2020 11:19 am
by GodDragon
lotar232 wrote: Sat Oct 10, 2020 1:05 am one more:

https://github.com/GodDragoner/Spicy-TA ... deStart.js

line 7:
run(random('Session/Start/Neutral/*.js', 'Session/Start/Chastity/*.js'));


there aren't any scripts in: Session/Start/Chastity/ (but there are subfolders)... not sure if this is content to be developed, or should keep going into the "offdenied" folder).. but anyway it errors when executed...

cheers!
True, that is supposed to be used once there are files for this directory

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sun Oct 11, 2020 5:28 am
by lotar232
a few other recurring Severe errors (that I've been having a hard time trying to track down... I think they might be API related):

12:15:11 AM SEVERE: startStroking called with invalid args:[NaN]

(I suspect this might happen when something like startstroking(20+getstrokingBPM()); is called when you aren't currently stroking, so getStrokingBPM returns NaN)...

I See this one happen on a lot of the different stroking calls... (and I wonder if it would be easier to just provide a default in the stroking API that converts NaN to something like 60.)




12:15:16 AM SEVERE: Tried to add same text instance multiple times.

I see this periodically in logs, but am having a hard time understanding what triggers it (I think maybe something in the old taunt translating code??)

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Mon Oct 12, 2020 6:05 pm
by GodDragon
lotar232 wrote: Sun Oct 11, 2020 5:28 am a few other recurring Severe errors (that I've been having a hard time trying to track down... I think they might be API related):

12:15:11 AM SEVERE: startStroking called with invalid args:[NaN]

(I suspect this might happen when something like startstroking(20+getstrokingBPM()); is called when you aren't currently stroking, so getStrokingBPM returns NaN)...

I See this one happen on a lot of the different stroking calls... (and I wonder if it would be easier to just provide a default in the stroking API that converts NaN to something like 60.)




12:15:16 AM SEVERE: Tried to add same text instance multiple times.

I see this periodically in logs, but am having a hard time understanding what triggers it (I think maybe something in the old taunt translating code??)
Haven't really encountered the first error with my local TAJ build and current Spicy build.
The second error is more common though but doesn't matter since it works as expected and just does not add the same instance of text again.

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Fri Oct 16, 2020 5:41 pm
by mondany
Any updates on progress?
No pressure but excited to try it :innocent:

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Tue Oct 20, 2020 7:59 am
by lotar232
one more small one:

https://github.com/GodDragoner/Spicy-TA ... ityCage.js
line 93
if (randomInteger(0, 2) == 2) playSound("Audio/Spicy/Chastity/ChastityOff/*.mp3");

if your audio directory is like mine it should be :

if (randomInteger(0, 2) == 2) playSound("Audio/Spicy/Chastity/PutChastityOff/*.mp3");


also its worth checking the directory (my version of the audio directory had dummy "silence files" so the odds of actually hearing anything are super low.... 1/3* 1/7)

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sun Oct 25, 2020 12:13 pm
by Nasserhut
is it already useable? :-D
is there a released file??

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sat Nov 07, 2020 9:32 pm
by GodDragon
Nasserhut wrote: Sun Oct 25, 2020 12:13 pm is it already useable? :-D
is there a released file??
No sadly not yet. Another lockdown hit us here in germany so I had to deal with some stuff first. I'll see if I can get it to work soon :whistle:

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Mon Nov 09, 2020 7:48 am
by Nasserhut
Das wäre großartig :-D
I am just trying to reengineer the bluethoot protocoll of the hismith fucking machine. It has a new controller with bluethoot connectivity, but sadly only with a smartphone app.

Re: [Tease AI Java] Spicy (Closed Alpha)

Posted: Sun Nov 15, 2020 4:04 am
by lotar232
Nasserhut wrote: Mon Nov 09, 2020 7:48 am Das wäre großartig :-D
I am just trying to reengineer the bluethoot protocoll of the hismith fucking machine. It has a new controller with bluethoot connectivity, but sadly only with a smartphone app.
OH! I am VERY interested if you find any information on their app API (I emailed them and asked but they aren't publishing one)... (or come up with a reasonable way to spoof messages via BT)... their App seems pretty flaky so I have low expectations for that being easy at the moment...

I've actually created a library to integrate Lovense toys as well as Pishock into TAJ (its in my fork of Spicy), but so far I've mostly been writing the shocker into punishment scripts, and written a basic POC for lovense toys.