[Tease Program] Tease-AI Java (1.4)

Webteases are great, but what if you're in the mood for a slightly more immersive experience? Chat about Tease AI and other offline tease software.

Moderator: 1885

GodDragon
Explorer At Heart
Explorer At Heart
Posts: 795
Joined: Sun Jun 11, 2017 4:30 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by GodDragon »

swirly wrote: Fri May 22, 2020 11:23 pm Hey folks,

I'm a developer, and I've been playing around with TAIJ for a little bit. I've come across a couple of bugs, and was wondering if you guys had somewhere you've been tracking issues? I checked the github for the project, but there didn't seem to be anything there.

I'm using TeaseAI Java v1.2.2 with Mischevious v1.2.0

One issue I've noticed is that the metronome doesn't seem to work when using the Mischevious personality, until you get to the code in End_1.js. It will suddenly kick in once you get there and startStroking is called with the value 220. I thought that it was a bug in the JS code for that personality where the BPM wasn't getting floored properly when calling startStroking, but I patched it locally and it didn't fix the issue. Here's the relevant chunk of the log:

Code: Select all

07:56:13 PM CHAT: Info: Starting session
07:56:14 PM CHAT: Info: IWasJustThinkingAboutYou: Beginning
07:56:18 PM CHAT: 07:56 PM Leah: I was just thinking about you swirly
07:56:31 PM CHAT: 07:56 PM Leah: Your pecker must have sensed I'm feeling a little wicked this afternoon
07:56:43 PM CHAT: 07:56 PM Leah: In fact, I'm feeling so wicked
07:56:55 PM CHAT: 07:56 PM Leah: That the only thing that's going to satisfy me is making you suffer *smiles innocently*
07:57:09 PM CHAT: 07:57 PM Leah: So why don't you wrap your hand around that poor leaky cock
07:57:14 PM CHAT: Info: calculated speed 146.5174128749531
07:57:15 PM CHAT: Info: calculated duration 209.82958720680003
07:57:25 PM CHAT: 07:57 PM Leah: Hold down the skin of your frustrated dick and stroke the tip with the other hand with lube
07:57:25 PM SEVERE: startStroking called with invalid args:[146.0]
07:57:34 PM CHAT: Info: ShowTeaseImage: Beginning
07:57:34 PM CHAT: Info: GetTeasePicture: Beginning
07:57:34 PM CHAT: Info: GetTeasePicture: Debug 2
07:57:35 PM CHAT: Info: GetTeasePicture: End
07:57:35 PM CHAT: Info: ShowTeaseImage: End
07:57:37 PM CHAT: 07:57 PM Leah: Don't mind me xD 
I traced it back to where the logging call is made, and it's being logged at

Code: Select all

teaseai/api/scripts/nashorn/StartStrokingFunction.java:43
. That makes me think that there's a problem with the way that data is being passed from the personality code to the main program, but that only makes sense if I'm not the only one getting this problem ;)

Anyway, is there any issue tracking set up for this kind of thing?

-- swirly
Yes this is an issue introduced by Java 14. I have a local build that is working fine. I think this one should work:
https://www.mediafire.com/file/wfro4ydd ... I.jar/file
Triple Alfa
Explorer At Heart
Explorer At Heart
Posts: 175
Joined: Wed Dec 05, 2007 12:35 pm

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Triple Alfa »

GodDragon wrote: Sat May 23, 2020 2:46 pm Yes the scope is definitely the issue here. You can't define a variable inside a function and reuse it in another. You need to put it into the global scope. I think "var" or just not giving it specification will make it global but that is considered bad practice in newer versions. So just move the var outside of your function and change its value inside your function.

Since pushing does change the state of the object but does not reassign the value it is fine. Const is the same as final in other languages such as java.
The variable is first declared outside the function like this:

Code: Select all

const allActiveTeaseImages = [];
const allActiveTeaseCategories = [];

function collectAllActiveTeaseImages(){
    let allFolders = ["Anal", "Asses", "Assjobs", "Blowjobs", "Boobjobs", "Boobs", "CBT", "Feet", "Femdom", "Footjobs", "Fucking", "Futa", "Handjobs", "Other", "POV", "Ruined Orgasms", "Thighjobs", "Thighs", "Traps"];
    const allActiveTeaseCategories = [];

    let i = 0;
    let imageCat;
    let imageCatUS;
    let imageVar;
    for (i = 0; i < allFolders.length; i++){
        imageCat = allFolders[i];
        imageCatUS = imageCat.replace(/\s/g, "_");
        imageVar = "IMAGES_" + imageCatUS.toUpperCase();
        if (getVar(VARIABLE[imageVar])){
            allActiveTeaseCategories.push(imageCat);
        }
    }

    let activeFolderName;
    let activeFolder;
    let fileList = [];
    for (i = 0; i < allActiveTeaseCategories.length; i++){
        activeFolderName = allActiveTeaseCategories[i];
        activeFolder = getImageSubFolder(activeFolderName);
        fileList = TAJFileUtils.getMatchingFiles(activeFolder + "\\*.*");
        let x = 0;
        for (x = 0; x < fileList.length; x++){
            allActiveTeaseImages.push(fileList[x]);
        }
    }
}
Does that mean that the second "const allActiveTeaseCategories = [];" inside the function is limiting its scope to the function?
If that is the case I guess I should clear the array with "allActiveTeaseCategories.length = 0;" instead.

Edit:
So I changed "const allActiveTeaseCategories = [];" inside the function to "allActiveTeaseCategories.length = 0;" so the scope is now outside the function and the problem persists.
I'll just give you guys the entire ImageUtils.js:

Code: Select all

const allActiveTeaseImages = [];
const allActiveTeaseCategories = [];

function collectAllActiveTeaseImages(){
    let allFolders = ["Anal", "Asses", "Assjobs", "Blowjobs", "Boobjobs", "Boobs", "CBT", "Feet", "Femdom", "Footjobs", "Fucking", "Futa", "Handjobs", "Other", "POV", "Ruined Orgasms", "Thighjobs", "Thighs", "Traps"];
    //const allActiveTeaseCategories = []; //DEBUG
    allActiveTeaseCategories.length = 0;

    let i = 0;
    let imageCat;
    let imageCatUS;
    let imageVar;
    for (i = 0; i < allFolders.length; i++){
        imageCat = allFolders[i];
        imageCatUS = imageCat.replace(/\s/g, "_");
        imageVar = "IMAGES_" + imageCatUS.toUpperCase();
        if (getVar(VARIABLE[imageVar])){
            allActiveTeaseCategories.push(imageCat);
        }
    }

    let activeFolderName;
    let activeFolder;
    let fileList = [];
    for (i = 0; i < allActiveTeaseCategories.length; i++){
        activeFolderName = allActiveTeaseCategories[i];
        activeFolder = getImageSubFolder(activeFolderName);
        fileList = TAJFileUtils.getMatchingFiles(activeFolder + "\\*.*");
        let x = 0;
        for (x = 0; x < fileList.length; x++){
            allActiveTeaseImages.push(fileList[x]);
        }
    }
}

function isActiveTeaseCategory(category) {
    return allActiveTeaseCategories.includes(category);
}

function randomActiveTeaseCategory(categoryArray) {
    let activeCategories = [];
    let i;
    for (i = 0; i < categoryArray.length; i++){
        if(isActiveTeaseCategory(categoryArray[i])){
            activeCategories.push(categoryArray[i]);
        }
    }
    if (activeCategories.length > 0) {
        let rnd = randomInteger(0, activeCategories.length - 1);
        return activeCategories[rnd];
    }else{
        return null;
    }
}

function showRandomImage(numOfImgs, delay, category){
    if (numOfImgs === undefined || numOfImgs <= 0){ numOfImgs = 1; }
    if (delay === undefined || delay < 0){ delay = 0; }
    if (category === undefined){
        let i;
        let lastRnd = -2;
        for (i = 0; i < numOfImgs; i++){
            let rnd;
            let currentImage = getCurrentImageURL();
            do {
                do {
                    rnd = randomInteger(0, allActiveTeaseImages.length - 1);
                } while (rnd === lastRnd)
                showImage(allActiveTeaseImages[rnd]);
            }while(currentImage === getCurrentImageURL())
            lastRnd = rnd;
            if(getVar(VARIABLE.DEBUG_RAPID_TESTING) && delay > 2){
                sleep(2);
            }else {
                sleep(delay);
            }
        }
    }else {
        let i;
        let image;
        let lastImage = "";
        for (i = 0; i < numOfImgs; i++){
            let currentImage = getCurrentImageURL();
            do {
                image = showImage(getImageSubFolder(category) + separator + "*.*");
            }while (image.toString() === lastImage.toString() || currentImage === getCurrentImageURL())
            lastImage = image;
            if(getVar(VARIABLE.DEBUG_RAPID_TESTING) && delay > 2){
                sleep(2);
            }else {
                sleep(delay);
            }
        }
    }
}
Note that the showRandomImage() function works without issues.

Edit2:
Calling isActiveTeaseCategory() directly results in the same error.
Using "typeof" I determined that "allActiveTeaseCategories" is an object as it should be.

Edit3:
By adding "sendDebugMessage(allActiveTeaseCategories[0]); //DEBUG" right before "return allActiveTeaseCategories.includes(category);" I have also determined that "allActiveTeaseCategories" is a working array right before the error.
GodDragon
Explorer At Heart
Explorer At Heart
Posts: 795
Joined: Sun Jun 11, 2017 4:30 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by GodDragon »

Triple Alfa wrote: Sat May 23, 2020 6:08 pm Does that mean that the second "const allActiveTeaseCategories = [];" inside the function is limiting its scope to the function?
If that is the case I guess I should clear the array with "allActiveTeaseCategories.length = 0;" instead.

Edit:
So I changed "const allActiveTeaseCategories = [];" inside the function to "allActiveTeaseCategories.length = 0;" so the scope is now outside the function and the problem persists.
I'll just give you guys the entire ImageUtils.js:
const allActiveTeaseImages = [];
const allActiveTeaseCategories = [];
Includes is currently not supported by the language standard java nashorn implements for JavaScript. You should use:
.indexOf(x) !== -1 which means your array contains the element. We have to switch to GraalVM anyway since Nashorn will be removed with Java 14 and then includes should work too since GraalVM supports the newest Javascript standards.
Triple Alfa
Explorer At Heart
Explorer At Heart
Posts: 175
Joined: Wed Dec 05, 2007 12:35 pm

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Triple Alfa »

GodDragon wrote: Sat May 23, 2020 10:02 pm Includes is currently not supported by the language standard java nashorn implements for JavaScript. You should use:
.indexOf(x) !== -1 which means your array contains the element. We have to switch to GraalVM anyway since Nashorn will be removed with Java 14 and then includes should work too since GraalVM supports the newest Javascript standards.
Thank you. I swapped out the code and it's working now.
MarilynW
Explorer
Explorer
Posts: 5
Joined: Tue Sep 24, 2019 10:33 pm
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Submissive

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by MarilynW »

Is there a way to re-retrieve image links? I occasionally get nothing or errors.
ski23
Explorer At Heart
Explorer At Heart
Posts: 466
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by ski23 »

MarilynW wrote: Wed Jun 03, 2020 8:17 pm Is there a way to re-retrieve image links? I occasionally get nothing or errors.
Those errors are part of the tumblr api so there isnt really anything we can do about it. If you see issues from other sites than tumblr let us know.
MarilynW
Explorer
Explorer
Posts: 5
Joined: Tue Sep 24, 2019 10:33 pm
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Submissive

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by MarilynW »

It happens with reddit's. When pictures gets removed for reddit or imgur. Also, does it auto-update for new pictures?
GodDragon
Explorer At Heart
Explorer At Heart
Posts: 795
Joined: Sun Jun 11, 2017 4:30 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by GodDragon »

MarilynW wrote: Thu Jun 04, 2020 8:03 pm It happens with reddit's. When pictures gets removed for reddit or imgur. Also, does it auto-update for new pictures?
No it does not auto update. As far as I know there is no way to update them right now. You might try to readd the same url again without deleting the old one. But we should probably just add an update button.
Triple Alfa
Explorer At Heart
Explorer At Heart
Posts: 175
Joined: Wed Dec 05, 2007 12:35 pm

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Triple Alfa »

Hey guys it's been a little while. I was having a bit of a creative block when I realized I wasn't really working to my strengths, so I switched to a new personality with a different approach. Instead of trying to do one character with a neatly flowing storyline I'm now taking a more CYOA like approach with multiple characters.

Anyway while working on the new personality I ran into an issue. I made a function to send messages with a custom sender and custom colors.(It's mostly a copy from my older narrator function.) And while it is working fine just like the narrator one, I noticed it doesn't accept modifiers like "<b>".

Code: Select all

function sendSpecialMessage(sender, color, message, wait) {
    let textName = new javafx.scene.text.Text(replaceVocab("[" + sender + "]: "));
    eval("textName.setFill(javafx.scene.paint.Color." + color + ")");
    textName.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.BOLD, TeaseAI.application.CHAT_TEXT_SIZE.getDouble() + 1));

    message = replaceVocab(message);
    let text = new javafx.scene.text.Text(message);
    text.setFill(javafx.scene.paint.Color.BLACK);
    text.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.NORMAL, TeaseAI.application.CHAT_TEXT_SIZE.getDouble()));

    sendCustomMessage(textName, text);

    if (getVar(VARIABLE.DEBUG_RAPID_TESTING, false) === false) {
        if (wait === undefined) {
            sleep(3000 + message.length * 50, "MILLISECONDS");
        } else if (!wait.isNaN) {
            sleep(wait * 1000, "MILLISECONDS");
        }
    } else {
        sleep(1);
    }
}
"sendMessage("<b>test</b>");" results in a bold "test"
"sendSpecialMessage("Test", "BLACK", "<b>test</b>");" results in "<b>test</b>"

I'm assuming it's a limitation of sendCustomMessage()?
Since I'm sending all messages in this format I really need a way to solve this issue.

Also is there any word on a fix for the video issues I reported earlier?
I'm planning on using videos for this personality and It'd be nice if they gave me more than a black screen :lol:
Triple Alfa wrote: Thu May 14, 2020 11:47 pm More feedback. I just tried to play a video and had two issues:
1) I tried to play two separate .mp4 videos and both gave me a black screen with no errors.
2) .webm Gives me a "MEDIA_UNSUPPORTED" exception. This is very unfortunate as a lot of online content these days is in the .webm format.
ski23
Explorer At Heart
Explorer At Heart
Posts: 466
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by ski23 »

Triple Alfa wrote: Sat Jun 13, 2020 9:01 am Hey guys it's been a little while. I was having a bit of a creative block when I realized I wasn't really working to my strengths, so I switched to a new personality with a different approach. Instead of trying to do one character with a neatly flowing storyline I'm now taking a more CYOA like approach with multiple characters.

Anyway while working on the new personality I ran into an issue. I made a function to send messages with a custom sender and custom colors.(It's mostly a copy from my older narrator function.) And while it is working fine just like the narrator one, I noticed it doesn't accept modifiers like "<b>".

Code: Select all

function sendSpecialMessage(sender, color, message, wait) {
    let textName = new javafx.scene.text.Text(replaceVocab("[" + sender + "]: "));
    eval("textName.setFill(javafx.scene.paint.Color." + color + ")");
    textName.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.BOLD, TeaseAI.application.CHAT_TEXT_SIZE.getDouble() + 1));

    message = replaceVocab(message);
    let text = new javafx.scene.text.Text(message);
    text.setFill(javafx.scene.paint.Color.BLACK);
    text.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.NORMAL, TeaseAI.application.CHAT_TEXT_SIZE.getDouble()));

    sendCustomMessage(textName, text);

    if (getVar(VARIABLE.DEBUG_RAPID_TESTING, false) === false) {
        if (wait === undefined) {
            sleep(3000 + message.length * 50, "MILLISECONDS");
        } else if (!wait.isNaN) {
            sleep(wait * 1000, "MILLISECONDS");
        }
    } else {
        sleep(1);
    }
}
"sendMessage("<b>test</b>");" results in a bold "test"
"sendSpecialMessage("Test", "BLACK", "<b>test</b>");" results in "<b>test</b>"

I'm assuming it's a limitation of sendCustomMessage()?
Since I'm sending all messages in this format I really need a way to solve this issue.

Also is there any word on a fix for the video issues I reported earlier?
I'm planning on using videos for this personality and It'd be nice if they gave me more than a black screen :lol:
Triple Alfa wrote: Thu May 14, 2020 11:47 pm More feedback. I just tried to play a video and had two issues:
1) I tried to play two separate .mp4 videos and both gave me a black screen with no errors.
2) .webm Gives me a "MEDIA_UNSUPPORTED" exception. This is very unfortunate as a lot of online content these days is in the .webm format.
The reason its not formatting is because you are using sendcustommessage and passing in a Text object. This means you are telling the method that you want to display that text object and not do any processing of characters like <b> etc. Instead, you should just simply send a string to the method. You dont need all that code above sendCustomMessage as that is already in TAJ.
Triple Alfa
Explorer At Heart
Explorer At Heart
Posts: 175
Joined: Wed Dec 05, 2007 12:35 pm

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Triple Alfa »

ski23 wrote: Sat Jun 13, 2020 1:44 pm The reason its not formatting is because you are using sendcustommessage and passing in a Text object. This means you are telling the method that you want to display that text object and not do any processing of characters like <b> etc. Instead, you should just simply send a string to the method. You dont need all that code above sendCustomMessage as that is already in TAJ.
Okay, but what do I then use instead to change the text color?
As I need, at the very least, to be able to have custom colors for the sender name.
But say I also wanted to be able to make the message a different color.
How do I do that without using a Text object?

If I recall correctly I copied this Text object part of the code from goddragon's personality so I assumed this was the only way to do it.

EDIT1:
It is also worth noting that the same code is visible on the wiki in the example of Chat>replaceVocab:

Code: Select all

message = replaceVocab(message);
text = new javafx.scene.text.Text(message);
text.setFill(javafx.scene.paint.Color.ROYALBLUE);
text.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.MEDIUM, 13));

sendCustomMessage(text);
User avatar
Shattered
Experimentor
Experimentor
Posts: 1391
Joined: Fri Jan 11, 2013 6:41 pm
I am a: Switch
Location: United Kingdom

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Shattered »

I'm gonna try tease-ai again once I get my new pc. :lol:

Two things
1. 0.54.9 P - is this still the latest version from the 2017 thread?
2. What personality should I use :whistle: One that doesn't require daily logins and wouldn't punish for it
malaru
Explorer
Explorer
Posts: 31
Joined: Thu Mar 03, 2016 4:07 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by malaru »

Shattered wrote: Wed Jun 17, 2020 4:53 pm I'm gonna try tease-ai again once I get my new pc. :lol:

Two things
1. 0.54.9 P - is this still the latest version from the 2017 thread?
2. What personality should I use :whistle: One that doesn't require daily logins and wouldn't punish for it
Hi shattered,

with TeaseAI, there are currently multiple versions.
0.54.9 is the original TeaseAI by 1885. It is the base for the most personalities at the moment, although many require the "Sweet Patch 56.22" on top. It's an unofficial patch for 54.9, that contains fixes and new commands for personalities. Though every 54.9 personality runs on 56.22 but not the other way round.

TeaseAI Fury contains a new version of TeaseAI that 1885 developed based on 54.9. Recently he also incorporated the Sweet Patch in that version I think, so every TeaseAI personality should work on this basis (I've not tried running any other personality than fury on it though)

This thread here is about TeaseAI Java, which is a complete rewrite in Java. Unfortunately it also changed the scripting language, so personalities have to be converted to this TeaseAI version. I haven't got much experience with this version though.


When it comes down to personalities, there are quite a few actually, but I've only really played 3 (mostly because the others didn't appeall to me content wise. I can't say anything about their quality though, they might be great aswell):

Fury
It's the newest personality by 1885 and is a very story driven personality. I really like how creative it is in tearms of the stuff it is making you do, although it starts of pretty basic. I'm not sure if it requires you to play daily. The domme states so, but I don't think I encountered penalties for not doing so. The only downside for me is that the personality is a lot about humiliation and the domme just wanting to destroy you. It's personal preference, but for me it is far more enjoyable if I get the feeling the domme gets off on tease and denial aswell.

Bound to your will
This is probably my favourite tease ever, even including webteases. It's very unusual compared to other personalities since it does not come with random elements but instead tells a story of a girl you chat with becoming your domme and keyholder. It requires 2 to 3 sessions a day if you want to play along, but if you pause for a few days it will not notice and just continue where you left of.

Miss Blue
Miss Blue is a "standard" TeaseAI personality that is based on "Wicked Tease", the original personality that comes with TeaseAI. I like her for her interactivity, as she has a lot of different answers for stuff you can say. Also almost all her fetishes are optional and can be explored through talking with her. Although she has many scripts that are chosen at random, she never seems to switch character and stays very believable for me. She also doesn't require to be played with each day, but if you fuck up, she might not want to see you for a few days as punishment.

If you need help getting started with TeaseAI, I released a "Getting started" guide a few years back. It is still valid though.
Also, if you gave any more questions, feel free to ask

malaru
Triple Alfa
Explorer At Heart
Explorer At Heart
Posts: 175
Joined: Wed Dec 05, 2007 12:35 pm

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Triple Alfa »

ski23 wrote: Sat Jun 13, 2020 1:44 pm The reason its not formatting is because you are using sendcustommessage and passing in a Text object. This means you are telling the method that you want to display that text object and not do any processing of characters like <b> etc. Instead, you should just simply send a string to the method. You dont need all that code above sendCustomMessage as that is already in TAJ.
Okay so I just tried to do exactly what you said to test what would happen and I'm getting the following error:

Code: Select all

11:06:05 am SEVERE: sendCustomMessage called with invalid args:[System, <b>Main Menu</b>]
11:06:05 am SEVERE: sendCustomMessage called with invalid args:[System, Please use the buttons added to Lazy Sub in the top left of the screen to navigate through the game.]
This is the code used:

Code: Select all

function sendSpecialMessage(sender, color, message, wait) {
    // let textName = new javafx.scene.text.Text(replaceVocab("[" + sender + "]: "));
    // eval("textName.setFill(javafx.scene.paint.Color." + color + ")");
    // textName.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.BOLD, TeaseAI.application.CHAT_TEXT_SIZE.getDouble() + 1));

    message = replaceVocab(message);
    // let text = new javafx.scene.text.Text(message);
    // text.setFill(javafx.scene.paint.Color.BLACK);
    // text.setFont(javafx.scene.text.Font.font(null, javafx.scene.text.FontWeight.NORMAL, TeaseAI.application.CHAT_TEXT_SIZE.getDouble()));

    sendCustomMessage(sender, message); //DEBUG "message" was "text" along with above commented out code. "sender" was "textName".

    if (getVar(VARIABLE.DEBUG_RAPID_TESTING, false) === false) {
        if (wait === undefined) {
            sleep(3000 + message.length * 50, "MILLISECONDS");
        } else if (!wait.isNaN) {
            sleep(wait * 1000, "MILLISECONDS");
        }
    }else if (wait === undefined){
        sleep(1);
    }else if (!wait.isNaN){
        if(wait > 1){
            sleep(1);
        }else if(wait === 0){
            sleep(0);
        }else{
            sleep(wait);
        }
    }else{
        sleep(1);
    }
}
I'm now simply passing two strings into sendCustomMessage(). One for the sender and one for the message.
Note that this completely disables the code that changes the color of the sender text as well. This is not what I want.
User avatar
Shattered
Experimentor
Experimentor
Posts: 1391
Joined: Fri Jan 11, 2013 6:41 pm
I am a: Switch
Location: United Kingdom

Re: [Tease Program] Tease-AI Java (1.2.2)

Post by Shattered »

malaru wrote: Thu Jun 18, 2020 7:48 am
Shattered wrote: Wed Jun 17, 2020 4:53 pm I'm gonna try tease-ai again once I get my new pc. :lol:

Two things
1. 0.54.9 P - is this still the latest version from the 2017 thread?
2. What personality should I use :whistle: One that doesn't require daily logins and wouldn't punish for it
Hi shattered,

with TeaseAI, there are currently multiple versions.
0.54.9 is the original TeaseAI by 1885. It is the base for the most personalities at the moment, although many require the "Sweet Patch 56.22" on top. It's an unofficial patch for 54.9, that contains fixes and new commands for personalities. Though every 54.9 personality runs on 56.22 but not the other way round.

TeaseAI Fury contains a new version of TeaseAI that 1885 developed based on 54.9. Recently he also incorporated the Sweet Patch in that version I think, so every TeaseAI personality should work on this basis (I've not tried running any other personality than fury on it though)

This thread here is about TeaseAI Java, which is a complete rewrite in Java. Unfortunately it also changed the scripting language, so personalities have to be converted to this TeaseAI version. I haven't got much experience with this version though.


When it comes down to personalities, there are quite a few actually, but I've only really played 3 (mostly because the others didn't appeall to me content wise. I can't say anything about their quality though, they might be great aswell):

Fury
It's the newest personality by 1885 and is a very story driven personality. I really like how creative it is in tearms of the stuff it is making you do, although it starts of pretty basic. I'm not sure if it requires you to play daily. The domme states so, but I don't think I encountered penalties for not doing so. The only downside for me is that the personality is a lot about humiliation and the domme just wanting to destroy you. It's personal preference, but for me it is far more enjoyable if I get the feeling the domme gets off on tease and denial aswell.

Bound to your will
This is probably my favourite tease ever, even including webteases. It's very unusual compared to other personalities since it does not come with random elements but instead tells a story of a girl you chat with becoming your domme and keyholder. It requires 2 to 3 sessions a day if you want to play along, but if you pause for a few days it will not notice and just continue where you left of.

Miss Blue
Miss Blue is a "standard" TeaseAI personality that is based on "Wicked Tease", the original personality that comes with TeaseAI. I like her for her interactivity, as she has a lot of different answers for stuff you can say. Also almost all her fetishes are optional and can be explored through talking with her. Although she has many scripts that are chosen at random, she never seems to switch character and stays very believable for me. She also doesn't require to be played with each day, but if you fuck up, she might not want to see you for a few days as punishment.

If you need help getting started with TeaseAI, I released a "Getting started" guide a few years back. It is still valid though.
Also, if you gave any more questions, feel free to ask

malaru
Well I see that a lots changed since I last used it :lol:

Thank you very much, I will take a look at these for sure.
Post Reply