Hey everybody, got another update here
Patch 51
Tease AI Area 51

-
https://mega.nz/#!rd0h2SBZ!ddJpGe_sdjsT ... IUhdujN1-8
or
Note: If you're not a scripter and you normally skip the new Commands in the patch notes, I have an AI Box for a new End script further down so be sure to snag it
Patch Notes:
Bugfixes -
@RandomText() Can now be used multiple times per line
Fixed problems with
@MultipleEdges() Command. I had a couple of typos in the
@MultipleEdges() Command Clean that was screwing up the whole thing. The scripts were also still progressing after each edge when they should not have been. Should be fixed now. Metronome should now react correctly to each edge as well
Fixed bug where wildcards were not returning correct file counts when using
@PlayAudio[] or
@PlayVideo[]
@ShowImage[] should now work with "" or "/"
Improvements -
Added Offline Mode to System States settings in the Misc tab. If you're using Tease AI without an internet connection, Offline Mode will automatically convert
@ShowBlogImage Commands to
@ShowLocalImage, as well as removing
@ShowButtImage and
@ShowBoobsImage Commands if they are set to URL Files. Toggling Tease AI to Offline Mode when you have no connectivity will help mitigate delays and crashes.
Commands -
Note: The Mode Commands listed below are part of an ongoing process to bring more flexibility in scripts. These will allow Yes and No phrases to jump you around in the script, as well as have the domme respond specifically to situations where the user came or has ruined their orgasm (this is useful both in and outside of End scripts)
Added
@YesMode() Command -
@YesMode() allows you perform a specific action if the user enters one of their "Yes" words while YesMode is active. There are two ways to use @YesMode()
@YesMode(Goto, GotoLine)
@YesMode(Video, GotoLine)
Goto mode will go to the specified GotoLine if the user enters a Yes phrase
Video mode will stop a currently playing video if the user enters a Yes phrase and go to the specified GotoLine. If the video ends or is stopped first, the Video mode will be cleared and the script will move to the next line as usual
You can clear YesMode with @YesMode(Normal)
Added
@NoMode() Command -
@NoMode() allows you perform a specific action if the user enters one of their "No" words while NoMode is active. There are two ways to use @NoMode()
@NoMode(Goto, GotoLine)
@NoMode(Video, GotoLine)
Goto mode will go to the specified GotoLine if the user enters a No phrase
Video mode will stop a currently playing video if the user enters a No phrase and go to the specified GotoLine. If the video ends or is stopped first, the Video mode will be cleared and the script will move to the next line as usual
You can clear NoMode with @NoMode(Normal)
Added
@CameMode() Command -
@CameMode() allows you perform a specific action if the user says one of the exact following expressions while CameMode is active: "Came", "I Came", "Just Came" or "I just came". Case doesn't matter, but Came mode will only pick up those four exact phrases. So "I just came" would activate it, "But I just came yesterday" would not. There are three ways to use @CameMode()
@CameMode(Goto, GotoLine)
@CameMode(Video, GotoLine)
@CameMode(Message, MessageText)
Goto mode will go to the specified GotoLine if the user enters one of the above phrases
Video mode will stop a currently playing video if the user enters one of the above phrases and go to the specified GotoLine. If the video ends or is stopped first, the Video mode will be cleared and the script will move to the next line as usual
Message mode will have the program process one of the above "I came" phrases as whatever text is specified as MessageText
You can clear CameMode with @CameMode(Normal)
Added
@RuinedMode() Command -
@RuinedMode() allows you perform a specific action if the user says one of the exact following expressions while RuinedMode is active: "Ruined", "I Ruined", "Ruined it" or "I ruined it". Case doesn't matter, but Ruined mode will only pick up those four exact phrases. So "I ruined" would activate it, "I think I ruined my carpet" would not. There are three ways to use @RuinedMode()
@RuinedMode(Goto, GotoLine)
@RuinedMode(Video, GotoLine)
@RuinedMode(Message, MessageText)
Goto mode will go to the specified GotoLine if the user enters one of the above phrases
Video mode will stop a currently playing video if the user enters one of the above phrases and go to the specified GotoLine. If the video ends or is stopped first, the Video mode will be cleared and the script will move to the next line as usual
Message mode will have the program process one of the above "Ruined" phrases as whatever text is specified as MessageText
You can clear RuinedMode with @RuinedMode(Normal)
To see these Commands at work, check out this End script AI Box:
Code: Select all
[aiBox File Begin] StrokeEndEnd_ModesDemo.txt
I know how bad you want to cum #SubName
@AllowsOrgasm(Always) I think it's time we did something about that
@AllowsOrgasm(Never) @Goto(Never Cums)
@AllowsOrgasm(Always, Never, Not) Maybe you'll get lucky #GeneralTime
@NullResponse @RapidCodeOn @DecideOrgasm
(Orgasm Allow)
@AllowsOrgasm(Always) Get that #Cock to the edge so I can make it cum for me #Grin @Edge
@AllowsOrgasm(Always, Not) Get that #Cock to the edge and let's find out #Grin @Edge
@NullResponse @YesMode(Goto, Allow Yes) @NoMode(Goto, Allow No) @CameMode(Goto, Allow Came) @RuinedMode(Goto, Allow Ruined) @Wait(15)
(Allow Cum Loop)
@RandomText(Cum for me, Hurry and cum for me, I want you to explode, Give me that cum, I want all that cum, Cum for me #SubName, Give me that cum #SubName, I want that cum #PetName, Make it feel so good for me) @Wait(20) @Goto(Allow Cum Loop)
(Allow Yes)
Good #PetName @Goto(Allow Cum Loop)
(Allow No)
<i>No?</i> @RapidTextOn
Hands off right now @RapidTextOff
Since you apparently don't <i>want</i> to cum @RapidTextOn
You just lost your chance to #GeneralTime @RapidTextOff
@AllowsOrgasm(Not, Rarely) In fact...
@AllowsOrgasm(Not, Rarely) I think I'm going to be a little less generous with your orgasms from now on @DecreaseOrgasmChance
You should always think twice before telling me no #SubName
But <i>especially</i> when I just said you could cum #EmoteFlustered
Now put your #Cock away, we're done for #GeneralTime
Maybe next time I tell you to cum, things will go a little better for you
@AllowsOrgasm(Not, Always) If there <i>is</i> a next time #Grin
@NullResponse @Goto(Log Off)
(Allow Came)
@SystemMessage #DomName smiles
Just relax and let all that pleasure wash over you
@AllowsOrgasm(Always) I really do spoil you #Lol
@AllowsOrgasm(Always) But I love knowing how much pleasure I can make you feel
@AllowsOrgasm(Not, Always) I really do like building you up and denying you
@AllowsOrgasm(Not, Always) But I love knowing how much pleasure I can make you feel too
So just enjoy how good I am to you
While you can, anyway...
Next time I see you, I'm going to build you up even more
Make the ache even more intense
@AllowsOrgasm(Always) Let's just say you're gonna be <i>grateful</i> when I finally let you explode #Grin
@AllowsOrgasm(Not, Always) And you just better pray I'm feeling as generous as I was #GeneralTime #Grin
Something to think about until then #EmoteHappy @Goto(Log Off)
(Allow Ruined)
What the fuck, did you really just ruin it?
[yes] Wow @Goto(Allowed but Ruined)
[no] You're very confusing #SubName #EmoteFlustered
@DifferentAnswer Yes or no #PetName?
Well whatever happened...
I hope you enjoyed it at least
I had fun with you #GeneralTime
Even if the ending was a little anticlimactic...
It wasn't supposed to be! #Lol
Maybe next time you cum for me things will go a little better
Gotta run for now, I'll see you then #PetName @Goto(Log Off)
(Allowed but Ruined)
That's actually kind of funny
@AllowsOrgasm(Rarely) I finally let you cum...
@AllowsOrgasm(Not, Rarely) I let you cum...
And you just ruin it #Lol
Well, since you apparently don't like feeling pleasure as much as I thought you did
@RuinsOrgasm(Rarely, Sometimes, Not) I won't feel bad about the orgasm you just gave up #Grin
@RuinsOrgasm(Rarely, Sometimes) I'll just start ruining you more often #Grin @IncreaseRuinChance
You're going to be a lot achier #GeneralTime than when we started
At least it's not my fault this time #Lol
But hey
Next time you come online, I promise to do something about it
I promise to make it worse #Grin @Goto(Log Off)
(Orgasm Deny)
Get that #Cock to the edge and let's find out #Grin @Edge
@NullResponse @CameMode(Goto, Deny Came) @RuinedMode(Goto, Deny Ruined) @Wait(10)
Poor #SubName
I made you <i>so</i> desperate to cum #GeneralTime
And you don't even get to
I would feel sorry for you
If it just didn't turn me on so much #Grin
I'll be thinking about how much you're suffering for me
And how much I can't wait to make you start suffering all over again next time I see you #Grin
Bye for now #PetName @Goto(Log Off)
(Deny Came)
@EmoteMessage #DomName sighs
I'm very disappointed that you didn't have better control #SubName
But I guess I really should take it as a compliment
I'm just so sexy it's impossible for you to hold back #Grin
Just promise me you'll do better next time #PetName
You're going to have to
Because I have to be so much meaner next time to make up for your accident #Lol
Something to think about until you see me again #SubName
@EmoteMessage #DomName grins @Goto(Log Off)
(Deny Ruined)
Well damn, I didn't want you to cum at all #GeneralTime @RapidTextOn
But...
I am very pleased that you let go when you felt yourself going over @RapidTextOff
I appreciate you showing that kind of control for me
But not as much as appreciate how much worse your ache's gonna be now #Grin
Oh well, that's your own fault #SubName
But the ache you're going to feel the <i>next</i> time we meet...
That will all be entirely on me #Grin @Goto(Log Off)
(Orgasm Ruin)
Get that #Cock to the edge and let's find out #Grin @Edge
@NullResponse @YesMode(Goto, Ruin Yes) @NoMode(Goto, Ruin No) @CameMode(Goto, Ruin Came) @RuinedMode(Goto, Ruin Ruined) @Wait(15)
(Ruin Loop)
@RandomText(Ruin it for me, Hurry and ruin it for me, I want you fucking ruined, Ruin that orgasm for me, Ruin it for me #SubName, I don't want you to feel any pleasure, I want that #Cock ruined, Make it suffer for me) @Wait(20) @Goto(Ruin Loop)
(Ruin Yes)
Good #PetName, sacrifice this pleasure for me @Goto(Ruin Loop)
(Ruin No)
Don't fucking tell me no @RapidTextOn
You ruin that fucking orgasm right now #PetName @RapidTextOff @Goto(Ruin Loop)
(Ruin Came)
@EmoteMessage #DomName sighs
Your self control is pitiful #SubName
I know I drive you so crazy you can't stand it
I know that makes it hard for you to hold back
But that's the whole point
Holding back for me, suffering for me
That's what brings me pleasure
You do want to bring me pleasure right?
[yes] Of course you do
[no] Whatever #SubName #EmoteFlustered @Goto(Log Off)
@DifferentAnswer Yes or no #SubName?
So just try harder next time
Because I am damn sure going to <i>make</i> it harder next time #Grin
Something to think about until then #PetName @Goto(Log Off)
(Ruin Ruined)
I fucking love it
Knowing how close you were to feeling <i>all</i> that pleasure
Until it was snatched away from you at the last second
And instead of that incredible explosion
It just oozes out with little pathetic drips
You're going to have to live with this ache #SubName
At least until you see me again
That's when I'll take all that ache away from you
And replace it with something even worse #Grin
Have fun until then #PetName @Goto(Log Off)
(Never Cums)
But you never actually get to, do you?
[yes] You fucking wish #Lol
[no] That's right
@AcceptAnswer @EmoteMessage #DomName smirks
@NullResponse @RapidCodeOn @Chance50(Never Cum - Put It Away)
But I will let you give me one last edge before I go
So wrap your hand around that #Cock for me one last time #GeneralTime
And get to the edge @Edge
(Never Cum - Put It Away)
Now take that #Cock and put it away
I'm done with it #GeneralTime
Next time we play I'm sure the worlds will be different
The pictures...
The games...
The stroking and the edging will all be unique experiences...
But the one thing that will never change is your frustration
At least not for the better #Grin
Something to think about while you're aching for me #GeneralTime
Bye for now #SubName #Grin
(Log Off)
@SystemMessage #DomName has logged off @EndTease
@End
@Info End script that shows off the Mode-related Commands. Written by 1885.
[aiBox File End] StrokeEndEnd_ModesDemo.txt
[aiBox Empty]
Command Filters -
Added
@Cup() Command Filter - will only display a line if the domme's cup size matches what's in parentheses. You may enter as many cup options as you want. You may also use "Not" as a modifier. For example:
@Cup(C) - Will only display if the domme is a C cup
@Cup(A, B) - Will only display if the domme is an A or B cup
@Cup(Not, A) - Will only display if the domme is not an A Cup
@Cup(DD, DDD+, Not) - Will only display if the domme is not a DD or DDD+ cup
@Cup() replaces the Command Filters @ACup, @BCup, @CCup, @DCup, @DDCup and @DDD+Cup. These are now legacy commands which will continue to function.
Added
@AllowsOrgasm() Command Filter - will only display a line if the domme's "Allows Orgasms" settings matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@AllowsOrgasm(Never) - Will only display if the domme never allows orgasm
@AllowsOrgasm(Often, Sometimes) - Will only display if the domme often or sometimes allows orgasm
@AllowsOrgasm(Not, Always) - Will only display if the domme does not always allow orgasm
@AllowsOrgasm(Always, Never, Not) - Will only display if the domme does not always allow orgasm and does not never allow orgasm
@AllowsOrgasm() replaces the Command Filters @AlwaysAllowsOrgasm, @OftenAllowsOrgasm, @SometimesAllowsOrgasm, @RarelyAllowsOrgasm, @NeverAllowsOrgasm, @NotAlwaysAllowsOrgasm and @NotNeverAllowsOrgasm. These are now legacy commands which will continue to function.
Added
@RuinsOrgasm() Command Filter - will only display a line if the domme's "Ruins Orgasms" settings matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@RuinsOrgasm(Never) - Will only display if the domme never ruins orgasm
@RuinsOrgasm(Often, Sometimes) - Will only display if the domme often or sometimes ruins orgasm
@RuinsOrgasm(Not, Always) - Will only display if the domme does not always ruin orgasms
@RuinsOrgasm(Always, Never, Not) - Will only display if the domme does not always ruin orgasms and does not never ruin orgasms
@RuinsOrgasm() replaces the Command Filters @AlwaysRuinsOrgasm, @OftenRuinsOrgasm, @SometimesRuinsOrgasm, @RarelyRuinsOrgasm, @NeverRuinsOrgasm, @NotAlwaysRuinsOrgasm and @NotNeverRuinsOrgasm. These are now legacy commands which will continue to function.
Added
@DommeLevel() Command Filter - will only display a line if the domme's Level matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@DommeLevel(5) - Will only display if the domme's Level is 5
@DommeLevel(4, 5) - Will only display if the domme's Level is 4 or 5
@DommeLevel(Not, 1) - Will only display if the domme's Level is not 1
@DommeLevel(1, 2, Not) - Will only display if the domme's Level is not 1 or 2
@DommeLevel() replaces the Command Filters @DommeLevel1, @DommeLevel2, @DommeLevel3, @DommeLevel4 and @DommeLevel5. These are now legacy commands which will continue to function.
Added
@ApathyLevel() Command Filter - will only display a line if the domme's Level matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@ApathyLevel(5) - Will only display if the domme's Apathy is 5
@ApathyLevel(4, 5) - Will only display if the domme's Apathy is 4 or 5
@ApathyLevel(Not, 1) - Will only display if the domme's Apathy is not 1
@ApathyLevel(1, 2, Not) - Will only display if the domme's Apathy is not 1 or 2
@ApathyLevel() replaces the Command Filters @ApathyLevel1, @ApathyLevel2, @ApathyLevel3, @ApathyLevel4 and @ApathyLevel5. These are now legacy commands which will continue to function.
Fixes added from Community Members -
Stefaf: Settings window no longer appears on startup
Stefaf: URL-File-Review-Fix
Improvements :
- Fixed all CrossthreadCalls, wich caused the System to malfunction, with UserInteraction.
- Removed all hard-coded Folder and File Strings.
- Removed redundant Code.
- If you review and download images, the image was downloaded twice.
- The Blog-XML was downloaded with XML-Doc. After you scraped an URL, you sometimes couldn't scrape it again.
- Deadlinks were imported again. Now Deadlinks will be removed if you open a blog with Review and on rebuilding,
as long you don't cancel it. Refresh URL-File imports only new Images.
- Adding an URL to DislikeList was only writing to file, so a disliked URL could get into File, if a blog contains it twice.
Stefaf: @DommeTag() Overhaul
Reworked the Function to search a DommeImage, that is tagged with the given Domme Tags.Now it is possible to Exclude Tags from Search. The Tag-Order, case and count doesn't matter.
You want to show a butt without feet, you can enter "Ass, NotFeet".
You want to show a closeup face without boobs: "Face, NotBoobs, Closeup"
This Function will return in 99% of all cases the nearest result for the given Tags. :D
Of course you must set up your DommeTags properly.
If there is no image found for the specified Tags, the Tags will be altered and searched again:
The order of alternation is:
1. Remove: Furniture, SexToy, Tattoo
2. Remove: Closeup, Sideview
3. Change: Naked -> GarmentCovering
4. Change: GarmentCovering -> HalfDressed
5. Change: HalfDressed -> FullDressed
6. Change: HandsCovering -> GarmentCovering
7. Remove: Excluded Tags from the BaseTags
8-12: Same as 1-6 without Excluded tags. If there are no excluded tags this will be skipped.
13. Change: FullDressed -> HalfDressed
14. Change: HalfDressed -> GarmentCovering
Before each step there is a check, if it could alter the result. If it won't the Step is skipped.
pepsifreak: Default mute setting to false, player now updates with the setting
I feel it should be off by default, and since audio doesn't display the
player, there needed to be an easy way to unmute
Please let me know if you find any bugs or have any questions about this patch. I am still working on Command overhauls and documentation, so bear with me as my interaction may continue to be limited. Thank you to everyone helping out and answering questions, I really appreciate everything you guys are doing
rayray77 wrote:How does the new Domme tags App work? In Patch 47 it opened a seperat window, in which all images of one folder were displayed. Now I dont know how to get this back since Patch 48... I don't want to use the old system and with the new one I can only work on 1 image at a time (and this is worse than with the old one, because every tag is deselecting itself with the next image) :D
The domme tag App that currently exists in Tease AI is tied to the domme's slideshow in the main window. When you want to tag something that appears in the current image of the domme, click the button in the app. It will then be highlighted in green to show you that domme tag exists. You can remove a domme tag by clicking it and it will turn back to its normal color. This was an interim solution I came up with when integrating the old apps into the main form. The domme and image tag system needs an overhaul, and it's on my to do list. I hope the final system will be as versatile as possible and provide a lot of feedback, but I can't really take a look at it until my immediate work has been finished so please bear with me