# Tease-AI Tease AI is adult-oriented software that aims to create an interactive tease and denial experience by emulating an online chat session with a domme.
Commands:
Command Filters:
Bugfixes:
Miscellaneous:
Not all Changes have been tracked.
Added Features:
Keywords (such as Vocabulary files and System Keywords) are now usable options in Multiple Choice Branch brackets (dariobrun)
Added "Clear" modifier for @CallReturn(). @CallReturn(Clear) will cancel any remaining CallReturns. Once the script containing @CallReturn(Clear) ends, the program will exit back to the first script that launched the stack (dariobrun)
Commands:
@SetMood() - Sets the domme's mood to the specified relative or absolute value. (dariobrun)
You can also set the domme's mood to a number if you would like to use your own absolute mood system for your Personality. For example, @SetMood(1), @SetMood(5), @SetMood(10), etc.
Command Filters:
Keep stroking Keep going I want you to suffer @ControlFlag(Contact1Present) #Contact1 loves watching you stroke @ControlFlag(ImageOnlyRound) @ShowBlogImage
Compare to the following cases: Only Contact1Present flag exists - The only viable line is "#Contact1 loves watching you stroke" Only ImageOnlyRound flag exists - The only viable line is "@ShowBlogImage" Contact1Present and ImageOnlyRound both exist - The only viable lines are "#Contact1 loves watching you stroke" and "@ShowBlogImage" Neither Contact1Present or ImageOnlyRound exist - The only viable lines are "Keep stroking", "Keep going" and "I want you to suffer"
@Mood() - Will only display the line if the domme's mood matches the specified value (dariobrun)
You can also use numbers to check the domme's mood to create your own absolute mood system for your Personality. For example, @Mood(1), @Mood(4), @Mood(10), etc
Bugfixes:
Miscellaneous:
Added Features:
@PlayVideo(Lesbian) - Plays a lesbian video @PlayVideo(Blowjob, 30) - Plays 30 seconds of a blowjob video @PlayVideo(10, Softcore) - Plays 10 seconds of a softcore video
The following genres may be specified: (Case doesn't matter, but @PlayVideo() only supports 1 genre to be specified)
Hardcore Softcore Lesbian Blowjob Femdom Femsub JOI CH General Hardcore Domme Softcore Domme Lesbian Domme Blowjob Domme Femdom Domme Femsub Domme JOI Domme CH Domme General Domme
Bugfixes:
Miscellaneous:
Added Features:
Added "Change URL File Servers" function to Maintenance options in thhe Miscellaneous Settings tab. This will replace the specified "Replace" string with the specified "With" string in an URL Files, as well as Liked and Disliked Image URLs. You should only use numbers in these text fields, as Tease AI will automatically add ".media" to avoid changing file names instead of just the server. So if you enter 41 in the Replace box, and 40 in the With box, all URLS in all URL Files that start with "41.media.tumblr.com" will be replaced with "40.media.tumblr.com". After a little testing, I was able to get rid of every "Error Loading Image" error I was getting by changing 41 to 40, 67 to 68, 65 to 66 and 36 to 37.
@Goto() Improvements: Previously, Tease AI would crash if it tried to find a Goto Label that did not exist in the current script. The two most common occurrences seemed to be when INterrupts were called while a Goto line was active, and typos in the @Goto() Command or Goto Label. Goto searches are now cleared when Interrupts, CallReturns or Miniscripts are used. Additionally, if Tease AI cannot find an exact match after parsing the entire script, it will begin checking labels for similar text found in the @Goto() Command, looking for any Labels that are 1 character off, then 2, then 3 and so on up to 5. This should help scripts flow correctly even when typos are present. If Tease AI still fails to find an exact or similar match, then the program will move on to a random Link script and begin the next cycle. This should prevent the widespread problem of crashes occurring when @Goto() can't find what it's looking for.
Added "Output Error Message to Chat Window" option to Misc Settings. Whereever possible, Error messages that are sent to the Errorlogs will be displayed in the chat window as well. Certain error messages that were already displayed to the chat window now have adsditional details.
Honorifics are now checked for please, thanks and sorry, not only yes\no\hi. Words\Phrases for "sorry" can now be set in Sub Settings. (dariobrun)
Changes to the punishment after failing too many times to use the honorific: now you will not get an automatic @CBT but you can decide what happens in the #SYS_HonorificPunish vocab. You can even use @CallReturn() to deal with it, for example. (dariobrun)
Contacts can now use their own honorifics. These can be set in Settings->Apps->Glitter. The starting values will be blank, so Contacts will not check for honorifics unless you add them (add Honorific Must be Included with Key Phrases" is checked) (dariobrun)
CustomMode() can now use Vocabulary files. For example, @CustomMode(#Finished, Goto, Finished Task) would goto the line (Finished Task) if the user said any of the lines inside #Finished (dariobrun)
When setting a Glitter Contact or Random Domme as the domme, the domme's name and picture will now change in the avatar window to reflect that. Tease AI will look for an image named "avatar.*" (avatar.jpg, avatar.png, etc) in the root of that Contact\Random Domme's directory and use that for the avatar picture if it is found. If it is not, it will use a random image from her picture set instead (dariobrun)
Commands:
@DommeTagOr(): Will check against tags in the order that they're listed (dariobrun) @ImageTagOr(): Will check against tags in the order that they're listed (dariobrun)
So for example: @DommeTagOr(Naked,FullyDressed) --> will show fullydressed images only if it doesn't find naked images @DommeTagOr(Fully Dressed,Naked)--> will show naked images only if it doesn't find fullydressed images
@DommeTagAny(): Will choose an image having at least one of the specified tags (dariobrun)
@ImageTagAny(): Will choose an image having at least one of the specified tags (dariobrun)
So to recap for both @DommeTag() and @ImageTag(): @DommeTag(a,b)-->return images having both a and b (If an image with both a and b cannot be found, it will look for a, then b and try to return the closest match found) @DommeTagOr(a,b)-->return images having a, if it doesn't find any, return images having b @DommeTagAny(a,b,)-->return images having either a or b
@RandomContact - Randomly assigns the line to one of the available Contacts in the room (dariobrun)
@ContinueSession - Used during an End script to gaurantee that the session will continue. @ContinueSession will not activate if the user has "Denial Always Ends Tease" or "Orgasm Always Ends Tease" checked. (oxiklein)
PlayAvoidTheEdge[] - Begins a game of Avoid The Edge with the specified video. For example, @PlayAvoidTheEdge[dir\video.mp4] (dariobrun)
PlayCensorshipSucks[] - Begins a game of Censorship Sucks with the specified video. For example, @PlayCensorshipSucks[dir\video.mp4] (dariobrun)
PlayRedLightGreenLight[] - Begins a game of Red Light, Green Light with the specified video. For example, @PlayRedLightGreenLight[dir\video.mp4] (dariobrun)
Command Filters:
System Keywords:
Bugfixes:
Miscellaneous:
Added Features:
Added "Validate All System Files" button to the General settings panel. Rather than updating the Personality Framework with any new System Files, and expecting people to update each Personality one at a time manually if they missed any updates, the Personality Framework will now be stored in root\System\System Files.
By clicking "Validate All System Files", Tease AI automatically searches all installed Personalities and copies over any System files that are missing. I'll need to include the Personality Framework in every patch, but this turns the problem of updating/validating these files across multiple Personalities into a one-click solution for the user.
Tease AI now tries to determine an appropriate "DomName is typing..." delay length for lines containing one or more @RT()/@RandomText() Commands.
Commas can now be used in @RT() by typing ",,". When parsing @RT() collections, Tease AI will treat any double comma as a single comma in the domme's output.
Can now set a directory for Random Dommes in General Settings. This should point to location containing folders named after individual models, and each of those folders should contain folders with imagesets of that model. Tease AI will then chose a folder at random for the pictures, and the name of the model's folder for the domme's name. (dariobrun)
Added checkbox in General Settings to begin any new session with a Random Domme.
Added Change Current Domme buttons in Settings->Apps->Glitter. This allows to set the currently active domme at any time the session is active.
Domme Personality settings now include a checkbox for CFNM (Clothed Female Nude Male). This is meant to allow taunts where the domme points out that the user will never see her naked, eg. This should be checked when using models with non-nude picture sets for the domme.
Added "Continue Current Script After Giving Up" option in Domme Settings. When you "give up" in Tease AI, the program normally moves on to a random Link script. When this option is checked, the script you're on will continue to play out instead. (dariobrun)
If options are set to use and/or capitalize the Domm'es honorific and the user fails to do so enough times, the domme will administer a CBT punishment (dariobrun)
Added Commands:
@CountVar[] - Allows you to connect a timer to a specified Variable that will change its value by 1 every second.
@SetDomme() - Changes the active domme (name and slideshow) to the specified option. (dariobrun)
Usage:
@SetDomme(1) - Changes the domme to Contact 1 (Can also use @SetDomme(Contact1), @SetDomme(Glitter 1), etc. All that matters is the number)
@SetDomme(2) - Changes the domme to Contact 2
@SetDomme(3) - Changes the domme to Contact 3
@SetDomme(Domme) - Changes back to the original domme specified in Domme Images Directory
@SetDomme(Random) - Changes to a Random Domme as specified in the Random Domme Images Directory
If @SetDomme() does not contain a valid value, the original domme will be used.
@SetDomme() replaces @GlitterTease1, @GlitterTease2, @GlitterTease3, @DommeTease and @RandomTease. These Commands will be left in the code for compatibility purposes.
@RandomModule - Run a random Module (dariobrun)
@RandomLink - Run a random Link (dariobrun)
*Added Command Filters:
@DayOfWeek() - Will only show lines if the current day of the week is specified.
@FlagOr() - Check multiple flags and will read the line if any of them are present. For example, @FlagOr(Flag1, Flag2) - If Flag1 or Flag 2 exists, then Tease AI will read the line. (dariobrun)
@CFNM - When used, will only show lines with this Command Filter if the CFNM box is checked in the Domme Personality settings.
Bugfixes:
Miscellaneous:
Added Features:
Removed Features:
Bugfixes:
Miscellaneous:
WIP - DataBinding Overhaul
Added Features:
Check Box to lock orgasm chances after tease starts. by OxiKlein
Download online-image progress bar added.
Video Folders are now checked on startup. The user is asked to search for missing folders.
Image Folders are now checked on startup. The user is asked to search for missing folders or if a folder is empty.
Games are now locked until all card images are set.
Card images are now checked on startup.
@Flag() support for multiple logical "AND" connected parameters added. Usage: @Flag(Flag1, Flag2, Flag3) => All of 'em or line is excluded. by Daragorn
@NotFlag() support for multiple logical "AND" connected parameters added. Usage: @NotFlag(Flag1, Flag2, Flag3) => None of 'em or line is excluded. by Daragorn
Slideshow Settings(Random, NewFolder if last image, Range Settings, Subfolders) apply now also on Contact Images.
Added a new debug window. It is now possible to view and manipulate all session variables (At least simple DataTypes) on Runtime.
Now all filters have to be in Front of a @NullResponse or Chat Text. This is used to identify double used Filter/Command-statements.
Added full screen mode.
Bottom Chatbox is now accessible, when MaximizeMediaWindow is activated, unless Sidechat is activated.
Restoring window state on start up supports now multi monitor systems and maximized windows.
Added option to deactivate the sidepanel.
Bugfixes:
@ImageTag()-Command displays now tagged images. Up to 3 Tags are allowed.
Resolved an infinite loop, when TauntEdging was started.
Goto was unable to jump to the first line of a file, when a question was asked.
Card images were saved in different sizes, when using drag-drop or file dialog.
@DommeLevel1-5 didn't filter correct in vocabulary files.
@Chance##()-Command now gets cleaned from the line correctly.
@FollowUp##()-Command now gets cleaned from the line correctly, also stopped the followup message from still partially showing in "failure" cases.
Recent slideshow folders are now really checked on start-up and missing folders removed.
Dom Mood settings were ignored.
Fixed issue where a domme images was displayed, when a contact was responding.
Fixed issue, where slideshows continued after @SlideshowOff. Now the CustomSlideshow-Timer checks if he is supposed to be running.
Fixed command @GotoSlideshow. Now you can jump to a specific line based on the current slideshow-image.
Program now attempts to separate filters from a line, fixing issues where Commands could incorrectly get interpreted as Filters.
Fixed issue of loading CheckedListBox-States when swapping Personalities. Now there should be no need to delete StartLCheckist.cld EndCheckList.cld, LinkCheckedList.cld and EndCheckedList.cld anymore. Swapping personalities, editing, removing and renaming scriptfiles on runtime is possible.
Miscellaneous:
Removed several unused variables.
SettingsForm VideoSettings GUI reworked.
SettingsForm ImageSettings GUI reworked.
SettingsForm Apps-Games GUI reworked.
Suspending/Resuming/Resetting Session reworked.
Now all necessary data is stored into a single binary *.save file. This includes all Variables, Flags, Slideshows, TimerStates and regular Data. By Holding down the control key while clicking suspend or resume the user is asked for a custom file to save to or load from.
Reworked Code to Display Images.
Added a ToolstripItem in Debug menu, to start Timer1, if he is stopped. This could probably fix some or eventually all "Script-Freeze-Crashs". But this has to be tested. So if your Session freezes goto: Debug->Timers->Start Timer 1. Please let us know, if it worked.
Reworked custom Slideshow. The slideshow will pick now random images from random genres (Only the ones defined in @Slideshow().). This way an unbalanced amount of images doesn't matter any more. All genres have the same chances, even if they are outnumbered by a million times. There is also a check if the last image was of the same genre. If that's the case, it will randomly use the same genre or tries to pick another one.
Reworked Main UI
Added Command @ChatImage[] - Displays a local image in the chat text itself, as opposed to the main picture window. Image locations specified in brackets are relative to [Tease AI Root Folder]\Images\, much like @ShowImage[]. For example:
@ChatImage[1885\smile.jpg] - would display the image [Tease AI Root Folder]\Images\1885\smile.jpg on the domme's current line in chat.
You can also use commas to force the pictures dimensions, using width then height. BOTH width and height must be specified if you use this function. For example:
@ChatImage[1885\smile.jpg, 18, 18] - would display the image [Tease AI Root Folder]\Images\1885\smile.jpg resized to 18x18 on the domme's current line in chat.
Improved @Variable[] Command Filter - @Variable[] can now use "And" and "Or" when making comparisons. For example:
@Variable[#SessionEdges]<[3]And[#SessionCBTCock]<[3] You know, I've barely made that #Cock suffer #GeneralTime
@Variable[#DomMood]>[#DomMoodMax]Or[#SubCockSize]>[8] I don't know what it is, but I feel really lucky #GeneralTime #Lol
@Variable[#DomLevel]=[5]And[#DomApathy]=[5]And[#DomOrgasmRate]=[Never] I love knowing I'm the cruelest bitch on the planet #Grin
(For whatever reason I came up with three examples that all use System Keywords, but stored variables work as well)
You can use as many "And" or "Or" comparisons per @Variable[] Command Filter that you like, but you CANNOT use both "And" and "Or" in the same @Variable[] Command Filter
Fixes added from Community Members:
Stefaf: Fixed TargetInvocationException, when loading an image and the fallback failed.
Stefaf: Added Additional check, if the imagepath to load is empty/NULL. This is checked and logged before the Backgroundworker starts. This way we can track the source of this error better.
Stefaf: Stretching landscape images applies to all images loaded with the designated Backgroundworker.
Stefaf: Fixed if .net does not create the localAppData%-directory on start-up, the setting-file duplication is suspended until the settings are automatically saved for the first time. If here an exception occurs, it will be suspended until next time.
Stefaf: Reworked Custom MainSlideshow. Merged redundant code. The image extensions are the global ones. Added check if a folder exists. Images are now loaded using the designated Backgroundworker.
Stefaf: Fixed Custom timed slideshow. This was stepping 2 images forward instead of one. Images are loading with the designated Backgroundworker.
Stefaf: Fixed Combobox for Custom slideshows was overwriting inputs like Control+C and stuff like that.
Stefaf: Fixed when the CustomSlideshow fails to load, it was recognized as valid.
Stefaf: Reworked time usage in logs. After introducing proper versioning, there is no need to a identify the assembly-version, using the filetime. All times in logs are now local times.
Stefaf: Fixed IndexOutOfRangeException when clicking next or previous image button at the end or start of the slideshow.
pepsifreak: BugFix: Lines with multiple commands containing parenthesis would always return the index of the first closing bracket when searching and cause an exception.
Improved @If[] Command - @If[] can now use "And" and "Or" when making comparisons. For example:
@If[Var_EdgeCount]>[10]And[#DommeMood]>[#DomMoodMax]Then(GotoLine)
@If[Var_EdgeCount]<[3]Or[Var_TotalAttempts]>[5]Then(GotoLine)
@If[Var_EdgeCount]>[10]And[#DommeMood]>[@DomMoodMax]And[#CBTCockCount]<[1]Then(GotoLine)
You can use as many "And" or "Or" comparisons per @If[] Command that you like, but you CANNOT use both "And" and "Or" in the same @If[] Command
Fixes added from Community Members:
Stefaf: Bugfix where user.config was saved before the actual writing. This outdated file was taken on Startup to Replace the settings. Now the file is duplicated after modifications and the File located in %LocalAppData% won't be overwritten.
Stefaf: Bugfix where Metronome was too slow, because it was played and afterwards the delay was waited. It's played now async and stopped before playing again.
Stefaf: Bugfix where the Metronome was randomly not responding to SpeedChanges when the threads got out of sync.
pepsifreak: Settings Tagging Cleanup/Update - Domme Tags and Local Tags are now a single Tagging tab, with a tab control inside of that to switch between the two. Added 4 missing domme tags.
pepsifreak: Add new tags to fancier domme tagger - Tag buttons have also been shrunk down, resizing was updated to use anchors, and fixed a bug I was getting that caused a blank directory to be saved.
The code to parse @CheckDate() in the last patch contained syntax errors. It should now work correctly according to the usage established by the Command Guide
Legacy Command @CheckBnB reinstated by checking for available Boobs and Butt pictures rather than the defunct "Enabled BnB Games" checkbox
Fixes added from Community Members:
Stefaf: Bugfix freezing imageDownload caused by not serverside closed connection. Now the Connection is closed on clientside, if no data is received anymore.
Stefaf: Added automated ImageAnimation disabling, when a gif is displayed and the UI-Thread is not reponding.
Stefaf: Improvement IO.Access
Removed all My.Settings.Save() except after loading the application. Increased My.Settings autosavetime to 60 seconds. Now the application does not create the "ösldkflkm".newcfg files that much. Settings are still saved on regular application close.
Stefaf: Metronome is now loading the wav file into a memory-stream and plays it using a Media.Soundplayer. This way the file is not loaded again after startup unless an exception occurs. If so it will try to recover 120 times with a delay of a second in between. Positive side effect: now the metronome volume is adjustable with Tease-AI application and not System-Sounds any more.
Stefaf: BugFix: Exceptions on Closing
Stefaf: Added new ToolStripMenuitem to PictureStrip, to stop the current ImageAnimation
Stefaf: Reworked PictureStrip The checks now on opening what type if image is displayed and shows Informations according the Image.
Stefaf: Reworked Button behaviour Dislike and Like Image. Their check-state indicate now if an image is in a certain list. If they are checked and clicked, the current image will removed from the file.
BugFix: @ShowImage[] did not allow specified relative paths beginning with "\"
BugFix: StringClean did not get cleaned up correctly when @ShowImage[] was called
Decreased the amount of time it takes for the domme to make her first Edging taunt by 15 seconds
BugFix: "Like This Image" and "Dislike This Image" disabled the wrong menu strip items when clicked
BugFix: @CheckDate() should now work correctly
BugFix: @LockImages didn't function when Glitter Contacts were in the room. It's now also performed after all @Show... Commands.
BugFix: The program was filtering out @ShowImage type Commands in Linear acripts when @LockImages was activated, which goes against its function. It even prevented the lines from getting displayed in the first place. Added a Boolean to GetFilter to discern between filtering List or Linear type scripts
BugFix: "Edging Ends Taunts" was still being checked after the Taunt Cycle ended if the Module didn't call @StopStroking or @Edge
BugFix: SYS_EdgeTotal wasn't being updated when EdgeMode edges were used
Added Command @ClearChat - Clears the main chat window and Side Chat
Fixed bug where Glitter Contacts would drop the last word of their sentences when the domme was out of the room
Side Chat now functions independently of other Apps. If Side Chat was active when another app was opened, then Side Chat will return on its own once that app is closed.
Implemented Daragorn's Timed Writing Tasks feature. Timed Writing Tasks can be activated/deactivated in the Ranges settings tab.
Added Button to WritingTasks panel that allows the user to open Side Chat directly from that panel. Also added checkbox to display how many lines/mistakes are remaining in chat during the writing task
Added optional Boolean overload to CommandClean() that CleanTaskLines uses to process Commands that would only be useful in lines for Task letters. This allows Task letters to now process the following Commands:
@SetFlag(), @TempFlag(), @DeleteFlag(), @SetVar[], @ShowVar[], @ChangeVar[], @RoundVar[], @DeleteVar[], @SetDate()
@UpdateOrgasm, @UpdateRuined, @ChastityOn, @ChastityOff, @RestrictOrgasm(), @RestrictOrgasm, @PornAllowedOff, @PornAllowedOn
@DecreaseOrgasmChance, @IncreaseOrgasmChance, @DecreaseRuinChance, @IncreaseRuinChance,
@AddTokens(), @RemoveTokens(), all other Token related Commands
Added "Deny" overload to @Edge() Command. This simply lets the program know that the user was just denied an orgasm. Mostly useful for coordinating with end of tease Task letters
Added @CustomMode() Command and Mode Class - You can use @CustomMode to set any keyword or phrase to a mode that will move to a GotoLine in the script when used. The current types that @CustomMode can use are Goto and Video. For example:
@CustomMode(I'm done, Goto, Finished Task) - This would move the script to the line (Finished Task) if the user types "I'm done" (not case sensitive)
@CustomMode(I saw boobs, Video, Video Closed) - This would stop a video and move to the line (Video Closed) if the user types "I saw boobs" (not case sensitive)
Only one @CustomMode() Command should be used per line, but you may have as many custom modes activated at a time that you wish. Remember that individual Modes are cleared when they resolve, and all modes are cleared when transitioning between script types. To manually clear a mode, use @CustomMode(ModeText, Normal)
Enhanced @CustomTask() Command and added Session Tasks settings in Ranges settings tab - Session tasks (@CBT, @CBTBalls, @CBTCock and @CustomTask()) no longer run for a random number of times. The number of times tasks run is now determined by the new settings in the Ranges settings tab for Session Tasks. For Custom Tasks, you may specify a specific amount of times to run the task using a comma. For example:
@CustomTask(Spanking, 5) - This would run the Custom Task "Spanking" 5 times. This number includes the first instruction taken from "_First.txt
Fixed bug where Responses would get locked to [After Tease] lines if the domme continued a session after the orgasm decision
Fixed bug where Playlists did not move on to Link scripts after running Modules
Task overhaul tweaks
Major Tasks overhaul:
Tasks should now function as originally intended
Multiple uses of the same #Keyword will now produce different results
Tasks are now filtered through the new routine which should greatly improve stability
Task-related #Keywords should no longer return 0 as a value
@RandomText() and @RT() can now be used in Task lines
@SetFlag(), @TempFlag() and @DeleteFlag() can now be used in Task lines
"Domme is sending you a file" window now displays correctly when Lazy Sub AV is active
@Morning, @Afternoon and @Night Command Filters now filter more accurately relative to user's Daily Wake Up Time
Task-related Ranges added to Ranges tab, corresponding to the following #KeyWords: #TaskStrokes, #TaskStrokingTime, #TaskEdges, #TaskHoldTheEdgeTime, #TaskCBTTime
New #Keywords added: #EdgeHold, #LongHold, #ExtremeHold
Returns a random value based on the user's Sub settings, and automatically displays it as an amount of time in seconds, minutes and/or hours.
New #Keywords added:
#ButtImageCount
#ButtsImageCount
#BoobImageCount
#BoobsImageCount
Tease AI will now move to the next script type in the cycle if the current script has run out of lines
Added @Month() and @Day() to GetFilter(), I left them out by accident
Added Command @DeleteImage: This will remove the current image from all local Sources. (File system, URL-Files, LikedList, DislikedList, LocalImageTagList). But it won't delete an image located in the Domme- or Contacts-Image directory or one of it's subdirectories.
HandleScripts now uses GetFilter() the same way FilterList() does, code is much cleaner now
Added @LockVideo and @UnlockVideo Commands - @LockVideo will prevent Tease AI from switching back to the image window when a video ends. This is useful for times when you want to play multiple videos in a row for whatever reason without the domme slideshow popping up in between. @UnlockVideo will deactivate this mode and switch back to the image window when used.
Fixed bug where @SubOld and @SubYoung were not getting filtered correctly
Fixes added from Community Members:
Stefaf: Bugfix ErrorImage was shown randomly if one of all imagegenres had no images.
Stefaf: Bugfix ContectMenu MainImageBox did not activate or deactivate the MenuItems correct.
Stefaf: Improvement: Remove from URL-File option in ContextMenu MainPicturebox removes a ImageUrl from all URL-Files.
Stefaf: Function txt2List(String) was not able to deal path = "" or path = nothing. Improved Error handling and logging.
Stefaf: Added Offline-Mode-Support to the ImageDataContainer-Class and fixed some minor bugs in it.
Stefaf: All lists retrieved with functions in Class myDirectory are now sorted alphabetically.
Stefaf: Added Feature: User-Settings are now saved in: "App-Directory\System\Settings\"
[spoiler]The Local user.setting-file is duplicated on saving into the application-subdirectory.
On start-up this duplicated file is used to replace the user.config file in the
%localAppData%-directory. For safely importing Setting-files from other versions
there is also an import-function included. This function will ask you to select a file to
import and restarts the application to process the import and data-upgrade.
To start the import go to Settings->General tab.
[/spoiler]
Stefaf: Commands @PornAllowedOff and @PornAllowedOn where not replaced correct in Domme Output.
Stefaf: ImageCount-Keywords didn't count Images in URL-Files and none did neither react to OfflineMode nor @PornAllowedOff.
Stefaf: #LocalImageCount didn't count local Butt and Boob Images.
Stefaf: ImageDataContainer was searching Sub-folders instead of top level only and vice versa.
Stefaf: GetGoto() was not able to jump to the first line of a script.
Stefaf: ErrorImage has been shown randomly if one of all image-genres had no images.
Stefaf: ContextMenu of MainImageBox did not activate or deactivate the MenuItems correct.
Stefaf: Improvement: Remove from URL-File option in ContextMenu MainPicturebox now removes a ImageUrl from all URL-Files.
Daragorn: BugFix: "Edging Ends Taunts" state wasn't reinitialized when Tease AI was reset
Daragorn: Clean-up of 1885's implementation of Daragorn's original Timed Writing code
Daragorn: BugFix: Some aspects of the program didn't pause when Settings Menu was open and "Pause Program When Settings Menu is Visible" wasn't checked
Daragorn; BugFix: When Glitter contacts were present and an image was shown as part of a response, the image would immediately get replaced by a picture of the domme or contact
Stefaf: BugFix and Cause... Remote Images where stored to the RootDirectory, if Save Blog Images From Session was deactivated.
Stefaf: Bugfix: @DeleteLocalImage was sometimes deleting the wrong image. It also removes the file from LikedList, DislikedList and LocalImageTagList now. But it won't delete an image located in the Domme- or Contacts-Image directory or one of it's subdirectories.
Stefaf: Bugfix & Rework : @ShowImage[]
[spoiler]- Added Logging. If an Error Occurs it is written to the logs.
- Fixed GetFile in Directory with filter.
- Added new filter * -> This will give a result, from all available Image-Extensions.
[/spoiler]
Stefaf - Bugfix: BBnB is working now. (@TnAFastSlides, @TnASlowSlides, @TnASlides, @CheckTnA)
Stefaf - Improvement: Added Logging if a custom vocabularyFile is missing. Now this will create a new Error-Log-Entry.
Stefaf - Improvement: Removing an URL from an URL-File in SettingsWindow took way too long. Now it's faster.
Stefaf - Imporvement: @ShowLocalImage() Now the ImageDataContainer-Class is used. It doesn't try to get an single image from a single random genre any more. Instead it tries to get a single image from all given genres.
Stefaf - Improvement: Added logging at several points.
Stefaf - Bugfix: 404 caused the Script to stop. Errors during ImageLoading will create now a LogEntry.
Stefaf - Added Support for relative filepaths when using GenreImage-UrlFiles. Files outside the "Images\System\Url Files"-directory are neither included on Rebuild nor Refresh! But they are included in DeleteCommands.
The PropertyNames containing the URL-FilePaths have been renamed, in order to enhance readability. Those settings have to be reapplied. This will also prevent the use of wrong Url-Files, when the settings were imported.
Stefaf - Improvement: Changed the way how UserSettings are stored. Now every(!) time a setting has changed, the settingsfile will be saved after a delay of one second(to keep disk traffic low).
Stefaf - Improvement: Changed Labels for ImageURL-Files to readonly Textboxes. the Settings are now applied via DataBinding. Same on the ImageUrl-Checkboxes.
Conclusion List:
[list]
[*]#BlogImageCount -> Added: returns amount of Images
[*]#BlowjobImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#BoobImageCount -> Added: returns amount of Images
[*]#BoobsImageCount -> Added: returns amount of Images
[*]#ButtImageCount -> Added: returns amount of Images
[*]#ButtsImageCount -> Added: returns amount of Images
[*]#CaptionsImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#DislikedImageCount -> Reworked: Reacts now to OfflineMode
[*]#EdgeHold -> Added: Returns a random value based on the user's Sub settings
[*]#ExtremeHold -> Added: Returns a random value based on the user's Sub settings
[*]#FemdomImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#GayImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#GeneralImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#HardcoreImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#HentaiImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#LesbianImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#LezdomImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#LikedImageCount -> Reworked: Reacts now to OfflineMode
[*]#LocalImageCount -> Added: returns amount of Images
[*]#LongHold -> Added: Returns a random value based on the user's Sub settings
[*]#MaledomImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#SoftcoreImageCount -> Reworked: Reacts now to URL-Files and OfflineMode
[*]#TaskCBTTime -> Ranges added to Ranges tab
[*]#TaskEdges -> Ranges added to Ranges tab
[*]#TaskHoldTheEdgeTime -> Ranges added to Ranges tab
[*]#TaskStrokes -> Ranges added to Ranges tab
[*]#TaskStrokingTime -> Ranges added to Ranges tab
[*]@AddTokens() -> usable in Tasks now
[*]@Afternoon -> better filtered to user's daily WakupTime
[*]@CBT -> no longer run for a random number of times in Tasks
[*]@CBTBalls -> no longer run for a random number of times in Tasks
[*]@CBTCock -> no longer run for a random number of times in Tasks
[*]@ChangeVar[] -> usable in Tasks now
[*]@ChastityOff -> usable in Tasks now
[*]@ChastityOn -> usable in Tasks now
[*]@CheckTnA -> Reworked and fixed.
[*]@ClearChat -> New: Clears the main chat window and Side Chat
[*]@CurrentImage -> Reworked
[*]@CustomMode() -> New with Available modes: Goto, Video
[*]@CustomTask() -> Enhanced, added settings in Ranges-Tab
[*]@Day() -> Filters now correct
[*]@DecreaseOrgasmChance -> usable in Tasks now
[*]@DecreaseRuinChance -> usable in Tasks now
[*]@DeleteFlag() -> usable in Tasks now
[*]@DeleteImage -> New: to remove URL-Links and Local Files from all Local Sources. Deletes no Domme or Contact files
[*]@DeleteLocalImage -> Reworked. Removes now Links in LoacalImageTags.txt, LikedImage.txt, DislikedImages.txt. Deletes no Domme or Contact files
[*]@DeleteVar[] -> usable in Tasks now
[*]@Edge ->
[*]@Edge() ->
[*]@IncreaseOrgasmChance -> usable in Tasks now
[*]@IncreaseRuinChance -> usable in Tasks now
[*]@LockImages -> Fixed with Contacts, is performed after showing an image.
[*]@LockVideo -> Added: will prevent Tease AI from switching back to the image window
[*]@Month() -> Filters now correct
[*]@Morning -> is better filtered to user's daily WakupTime
[*]@NewBlogImage -> Reworked: does the same as @ShowBlogImage
[*]@Night -> is better filtered to user's daily WakupTime
[*]@PornAllowedOff -> Fixed: was not replaced correct in output.
[*]@PornAllowedOn -> Fixed: was not replaced correct in output.
[*]@RandomText() -> usable in Tasks now
[*]@RemoveTokens() -> usable in Tasks now
[*]@RestrictOrgasm -> usable in Tasks now
[*]@RestrictOrgasm() -> usable in Tasks now
[*]@RoundVar[] -> usable in Tasks now
[*]@RT() -> usable in Tasks now
[*]@SetDate() -> usable in Tasks now
[*]@SetFlag() -> usable in Tasks now
[*]@SetVar[] -> usable in Tasks now
[*]@ShowBlogImage -> Reworked: Reacts now to OfflineMode
[*]@ShowBlowjobImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowBoobImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowBoobsImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowButtImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowButtsImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowCaptionsImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowDislikedImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowFemdomImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowGayImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowGeneralImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowHardcoreImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowHentaiImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowImage[ -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowImage[] -> Reworked: New Filter * for all available imagefiles, added logging
[*]@ShowLesbianImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowLezdomImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowLikedImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowLocalImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowLocalImage( -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowLocalImage() -> Reworked: Won't show up an Errorimage anymore
[*]@ShowMaledomImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowSoftcoreImage -> Reworked: uses OfflineMode, Displays Local and Remote Images syncronized with text
[*]@ShowVar[] -> usable in Tasks now
[*]@Slideshow() -> Reworked: uses OfflineMode, URL-Files, Displays Local and Remote Images syncronized with text
[*]@StopStroking ->
[*]@StopTnA -> Reworked and fixed.
[*]@SubOld -> Filters now correct
[*]@SubYoung -> Filters now correct
[*]@TempFlag() -> usable in Tasks now
[*]@TnAFastSlides -> Reworked and fixed.
[*]@TnASlides -> Reworked and fixed.
[*]@TnASlowSlides -> Reworked and fixed.
[*]@UnlockVideo -> deactivates @LockVideo and shows the image window
[*]@UpdateOrgasm -> usable in Tasks now
[*]@UpdateRuined -> usable in Tasks now
[/list]
Added check for empty string in MyDirectory Class
Removed extraneous GotoLine checks in GetGoto() and GetGotoChat()
New Temporary FilterList Sub - The old one has been renamed to FilterListBak. I did as much work as I could ()before passing out for the night) to get this back on par with the original FilterList while actually working like it's supposed to on multi-line taunts. This is a WIP of a temporary solution, but it should be no worse than the original FilterList. It should be better
Added Command @ShowLocalImage() - Since genre image Commands such as @ShowLesbianImage, @ShowFemdomImage etc can now reference Local or URL Files, @ShowLocalImage() has been created to allow you to specify genre images in Local files only. You can use a comma to create a list to randomly choose from, or use not to show any Local image but the genres specified. For example:
@ShowLocalImage(lesbian) - Show a local lesbian image
@ShowLocalImage(hentai, captions) - Show either a local hentai or captions image
@ShowLocalImage(not, captions) - Show any local image that is not a captions image
@ShowLocalImage(gay, maledom, not) - Show any local image that is not a gay or maledom image
Fixes added from Community Members:
Stefaf: Improvement ImageLoading
pepsifreak: SplitterDistance setting now resets if too big
Stefaf: Bugfix: The Custom Slideshow randomly caused an IllegalCrossThreadCall, when the Slideshow was still running while the Domme is writing a Response.
Stefaf: Bugfix: UI-didn't resize on maximizing the window.
Stefaf: Bugfix: DommeTagApp wasn't working properly. It was randomly showing and setting the wrong Tags for the wrong image.
Stefaf: Bugfix/Addon: Only CH-Videos did load .flv Files. Now all Video-genres can load .flv-Files.
Stefaf: Bugfix: Hold the Edge Taunts returned "TeaseAI did not return a Hold the Edge Taunt" <--- Sorry guys and gals, that was my fault. (stefaf)
Stefaf: BugFix: @DommeTag() Didn't return the right picture, if the Task-Line contained a Keyword.
Fixed bug that caused Tease AI to delete "-" when it parsed lines, potentially messing up scripts
CheckGenreImage() bugfix - URL File checks were checking to see if Directory.Exists instead of File.Exists
Major Image Settings overhaul
URL Files and Genre Images are now on two separate tabs
Genre Images can now be set to URL Files as well as Local Directories for use with Commands like @ShowHardcoreImage, @ShowLesbianImage, etc
URL List size greatly expanded
Added preview window that shows a random image from a URL File whenever it is selected in the URL File List
Added buttons to select all or none of the URL Files in the list
Session Images now save correctly when images have been pre-loaded
Added @DecideOrgasm() Command - This Command will make the domme decide if and how the user can have an orgasm based on their domme settings. This works the same way as @DecideOrgasm. When @DecideOrgasm is used, the domme decides if the user will cum, ruin or be denied based on her domme settings. Depending on what she decides, @DecideOrgasm will either go to (Orgasm Allow), (Orgasm Ruin) or (Orgasm Deny).
@DecideOrgasm() allows you to set the GotoLines for allowed, ruined and denied orgasms (specified in that order - Allowed GotoLine first, Ruined GotoLine second and Denied GotoLine third). For example:
@DecideOrgasm(Allowed to Cum, Made to Ruin, Denied Orgasm) - In this case, if the domme has decided the user can cum, the script will move to (Allowed to Cum). If she decides to ruin, it will move to (Made to Ruin). And it will move to (Denied Orgasm) is she decides to deny. From there the next @Edge-related Command will end with an orgasm, ruined or denial depending on the domme's decision.
@DecideOrgasm() is extremely useful if you want to have more than one orgasm decision per script. This lets you set orgasm decision paths with different tones, such as having different reactions to the orgasm result based on the domme's mood
Added @Edge() Command - The @Edge() Command is used to indicate the user has been told by the domme to edge, just like @Edge currently does. However, @Edge() allows you to put any combination of the following modifiers in parentheses for different results when the user indicates they are on the edge:
Hold - User will be told to hold it
NoHold - User will be told to stop stroking
Orgasm - User will be told to cum
Ruin - User will be told to ruin
RuinTaunts - Enables @RuinTaunt Command Filter (used in Edge.txt and HoldTheEdge.txt) for lines that taunt the user about the orgasm they're about to ruin
LongHold - User will be made to hold a long edge
ExtremeHold - User will be made to hold an extreme edge
HoldTaunts - Enables @LongHold or @ExtremeHold Taunts (used in Edge.txt and HoldTheEdge.txt) for lines that taunt the user about how long the edge they're about to hold/holding is going to be
These Modifiers may be used in any combination:
@Edge(Orgasm, NoHold) - User will be told to cum when they reach the edge
@Edge(Ruin, Hold) - User will be told to hold an edge, and afterwards told to ruin their orgasms
@Edge(Orgasm, LongHold, HoldTaunts) - User will be told to hold a long edge then allowed to cum; @LongHold Taunts will be active
The program will disregard any combinations that don't make sense, such as:
@Edge(Orgasm, Ruin) - The program disregards "Ruin" regardless of order
@Edge(Hold, NoHold) - The program disregards "Hold" regardless of order
@Edge(Hold, RuinTaunts) User will be told to hold the edge, @RuinTaunt Command Filters will not be activated as no Ruin modifier was included
Domme Tag methods reimplemented or enhanced in the following ways:
"Fancy" domme tag creator brought back, under Tools on the main menu strip
Main picture box now changes with the original domme tag creator
Next and previous buttons added to Domme Tags App
None of these are perfect solutions, but hopefully they'll mitigate the aggravation some until a better system can be developed
Fixed bug where @GoodMood(), @BadMood() and @NeutralMood() were being treated like Command Filters
Miniscripts can now be called from within Miniscripts. Should be able to stack these indefinitely Inception style. When any Miniscript ends, it will return to the point where the first MiniScript was called.
Added @Month() Command Filter - will only display a line if the current month (represented by a number) matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@Month(11) - Will only display if the current month is November
@Month(6, 7, 8) - Will only display if the current month is June, July or August
@Month(Not, 4) - Will only display if the current month is not April
@Month(4, 5, Not) - Will only display if the current month is not April or May
Added @Day() Command Filter - will only display a line if the current day of the month(1-31) matches what's in parentheses. You may enter as many options as you want. You may also use "Not" as a modifier. For example:
@Day(15) - Will only display if it is he 15th
@Day(1, 2, 3) - Will only display if it is the 1st, 2nd, or 3rd
@Day(Not, 31) - Will only display if it is not the 31st
@Day(1, 2, Not) - Will only display if it is not the 1st or 2nd
Together, @Month() and @Day() replace the Command Filters for @ValentinesDay, @ChristmasEve, @ChristmasDay, @NewYearsEve and @NewYearsDay (THese are now legacy Commands and will continue to function). Combining @MOnth() and @Day() allows you to accommodate any event without the need for a specific Command Filter for each one. For example
@Month(12) @Day(25) Merry Christmas!
@Month(10) @Day(31) Happy Halloween!
@Month(5) @Day(4) May the Fourth be with you!
@Crazy @Month(7) @Day(20) Did you know this is the anniversary of when they faked the moon landing? O.o @PlayAudio[X-Files_Theme.mp3]
Fixed bug that was making Taunt Cycles last slightly longer than they should have
Note - Here's the AI Box to go with the Edging Ends Taunts feature I just added:
Edit: That didn't work :(
Added "Edging Ends Taunts" setting to Ranges tab. This allows you to set the percentage chance that the domme will move to a module if you say you are on the edge. If you edge and the check fails, the domme will not let you stop or move into the next module until the set Stroke Time runs out - Requires 2 new vocabulary files - #SYS_TauntEdging.txt (Domme tells you that you can't stop yet) and #SYS_TauntEdgingAsked (Domme says she already told you what she wants for this Taunt cycle)
Added "Load New Slideshow When Finished" option to Slideshow Settings in General Settings tab. If this box is checked, Tease AI will load a new domme slideshow once it reaches the end of the current one through Tease or Timed progression.
Lines with @FollowUpXX() should now display correctly
Fixed bug where @ShowBoobsImage would return a butt image
The program no longer displays a messagebox when a #Keyword cannot be located. Now the #Keyword is highlighted in red in the chat window without any interruptions
Fixed bug where Glitter Contacts did not appear correctly during Multiple Edges they initiated
Fixes added from Community Members:
Stefaf: Bugfix: @ShowBoobsImage() didn't work with local files.
Stefaf: Bugfix: Error during CensorshipsSucks, if the window is not maximized
Stefaf: BugFix: URL-File Exiting on 404 without writing the gathered data
Stefaf: BugFix: Exception on selecting ScriptTabs
Stefaf: Various Code Cleanup
Stefaf: Bugfix StackOverflowException
Added functionallity to prevent Timers from triggering oneself over and over again, while the TickEventHandler is running long procedures.
Stefaf: Bugfix image list not found (1885 Note: The code here is above my expertise, but it appears to fix crashes that would occur when Tease AI cannot locate Url Files, DislikedImageURLS or LikedImageURLS)
pepsifreak: Fixed end continue scripts
The first line would get cut off so you wouldn't actually know what to do
Stefaf: Stops Metronome during RLGL
Now the Metronome will be stopped during Red light. Simplified Eventhandler RLGLTimer_Tick, for better maintainability
@RandomText() Can now be used multiple times per line
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 -
@YesMode() allows you perform a specific action if the user enters one of their "No" words while YesMode 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)
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.
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 "/"
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
System Files added in Patch 50 \Vocabulary#SYS_MultipleEdgesStart \Vocabulary#SYS_MultipleEdgesStop
@SetModule() functionality restored. When I copied the RunModuleLink Sub, I forgot to add the SetModule code back in.
@SetModule() and @SetLink() can now jump to a specific line in the script when it is called by using a comma. For example, @SetModule(Ballbusting Tasks, Task 2) would start after the line (Tasks 2) in Ballbusting Tasks.txt when the Module begins.
@ShowVar[] and #Var[] should now work correctly and can be used multiple times per line
DommeMoodMin and DommeMoodMax should now output correctly
@RandomText() should now work correctly
Fixed bug that would cause OutOfMemory exceptions during Slideshows
Added @MultipleEdges() Command
Syntax: @MultipleEdges(Amount, Interval) or @MultipleEdges(Amount, Interval, Chance)
Special Instructions: Must be used in a line with any @Edge-related Command
The @MultipleEdges Command lets you mark any @Edge Command as one that will require multiple edges before the tease will progress as usual. The interval dictates how much rest the user will have between stopping one edge and beginning the next. Think of it like a webtease instruction to edge 10 times with a 5 second break in between, for example. But when using @MultipleEdges in Tease AI, the domme instructs you through each one without having to keep track of the amount of edges or the time between each one.
You can also specify what percentage chance the edge will turn into multiple edges. For example:
Get to the edge @Edge @MultipleEdges(10, 5, 25)
In this case, there would be a 25 percent chance that the user would have to edge ten times with a 5 second break in between.
When a user finishes the edges, the final edge will resolve according to the @Edge Command in the line. So for example, if the @Edge Command was @EdgeHold, then the user would be instructed to hold the final edge.
Fixed bug that prevented SessionEdges from updating when @EdgeMode edges resolved
Tease AI no longer allows script-switching countdowns to end while the domme is in the middle of a @FollowUp(). This fixes a bug where the domme's response ability would be frozen and the main picture wouldn't change.
@PlayVideo[], @PlayAudio[] and @ShowImage[] will now check full file paths as well as their respective media folders in the Tease AI root directory. This is especially useful for showing media stored in variables based on user's prior input. (For example, "Give me the location of your favorite porn video @InputVar[FavoritePornVideo]", and then calling it later with @PlayVideo[#Var[FavoritePornVideo]])
Added @CheckFile() Command - @CheckFile() allows you to check whether a file exists on a user's computer, then go to the appropriate line in the script if it does, @CheckFile() Can be used in two ways:
@CheckFile(FileName, GotoLineIfFileExists) @CheckFile(FileName, GotoLineIfFileExists, GotoLineIfFileDoesNotExist)
For example, @CheckFile(#Var[FavoritePornVideo], Porn File Exists) would jump to the line (Porn File Exists) if the information stored in the Variable FavoritePornVideo is a vaild file location. If it is not a valid file location, then the script would just continue to the next line as normal
You can also use this example: @CheckFile(#Var[FavoritePornVideo], Porn File Exists, Porn File Does Not Exist) - The script will still jump to the line (Porn File Exists) FavoritePornVideo is a valid location, but in this case it will jump to the line (Porn File Does Not Exist) if it is not
Individual files from your computer can now be dragged and dropped onto the text entry field in the main chat window or the side chat. This will enter the file's full path and send it as a message. This is useful for when the domme asks you to input variables such as a favorite picture
Added setting "Mute Video and Audio Played in Media Player" to General Settings tab. When this is checked, the media player will automatically mute any media file that is started or has it's state changed to playing (For example, pressing play while it's paused). The volume can still be manually adjusted during media playback if you wish. This is very useful if you want to be able to run more scripts with Videos but have privacy concerns due to noise.
Fixed bug where TTS did not recognize user's volume settings during domme responses
Added Command @PlayVideo() - @PlayVideo() allows you to play a video for the amount of time specified in parentheses. For example, @PlayVideo(15) will play a random video for 15 seconds. When the 15 seconds are up, the video will stop and the tease will continue as normal. This is especially good to combine with @JumpVideo to create shorter, randomized clips in your tease session
Added Command @JumpVideo - If there is a video currently playing, @JumpVideo will jump to a new point in the video somewhere between 10% and 60% of its run time. If @JumpVideo is used in the same line as @PlayVideo, @PlayVideo() or @PlayVideo[], then the video will start at a random position between 10 and 60% instead of the beginning
Added Command @EdgeMode() - @EdgeMode(Goto, GotoLine) @EdgeMode(Video, GotoLine) @EdgeMode(Message, MessageText) @EdgeMode(Normal)
Remind about HoldEdgeMaxAmount settings when using older settings
Image Pre-Loading
Fixes added From the Unofficial Patch:
Fixed Issue #6: Non-working @Glitter commands
Modified MetronomeTick() function decrease cpu usage to pepsifreak's code
Implemented pepsifreak's fix for broken images on reset
Implemented pepsifreak's fix for crash on session resume
Implememted pepsifreak's fix for @EdgingDecide command by changing it to @DecideEdge
Half of Issue #9 fixed: @PlayAudio works again
Fixed second half of Issue #9 so that @ShowImage[] now works
Pepsifreaks's fix for error when toy suspend a session, resume it, and then suspend it again
pepsifreak's tweak to chatlog saving to save during @EndTease, and a minimum size to prevent saving empty logs
Pepsifreak's fix for WakeUp time saving
Pepsifreak's fix for metronome settings not saving
Pepsifreak's fix for a suspend/resume bug that would sometimes happen
Pepsifreak's fix so that the Glitter contacts that make you hold an edge will be the ones to make you stop
Pepsifreak's fix for not being able to start a new playlist if you started one and then reset
Pepsifreak's fix for @UpdateRuined and @UpdateOrgasm don't update the counter for how many orgasms you've had - includes Locked setting checked
pepsifreak's fix for needing comands like @PlayAudio, @PlayVideo, and others needing to be in a specific part of the line.
pepsifreak's fix for crashing if you don't have images of a specific tag, now shows error image
pepsifreak's change to allow "nested" vocabulary phrases to work with glitter text (seen in #EmoteRandom)
Pepsifreak's fix for @StartTaunts problem
Tasks startup fix and prevention
@CallReturn fix
Add tooltip to variable save icon
Fix black box when resizing chat window when the media panel is hidden
prevent edging while in chastity
CallReturn now works correctly from taunts
Fix bug with @Goto
Fixed glitter text breaking when changing themes
VitalSub exercises now clear when you report them
Fix ShowBoob/Butts commands
Fixed ShowImage bug where it runs twice
Fixed ShowVar breaking ShowImage
Fix contact image randomizing
Added something to ClearMainPictureBox
Move module code to its own function - Also make "giving up" while stroking give you a module instead of a link
Fix styling on Theme settings tab
Stop crash when contact images weren't loaded yet
GiveUp response now supports callreturn
Image code cleanup - removes blinking between images besides certain cases
UI tweaks - buttons cut off on randomizer app
Prevent an error if a line ended up empty
More UI fixes - adds tooltip for contact images
Add startup warning if contact image directories are incorrect
Speed up scripts slightly
Move callreturn responses to vocabulary files
Randomize the type delay a little
Prevent error with the end of certain modules
Daragorn's forced ending commands - Adds the following Commands: @OrgasmDeny, @OrgasmAllow, @OrgasmRuin
Adds debug menu option to "refresh" the randomizer
simplified the senddailytasks progressbar - no longer eats cpu
Fix the previous end fix when suspending state
Replace hardcoded honorific responses with #DomHonorific
include edges with checkstrokingstate
Contacts now correct their own typos
Fixed issue when displaying large gifs
Added @MiniScript() Command
Tease AI now keeps track of where the user left the splitter between sessions
Added Interface to main menu strip. Added or relocated the following functions to "Interface": Switch Sides, Side Chat, Lazy Sub AV, Themes, Maximize Image and Webtease Mode
Added Commands @MoodBest and @MoodWorst
Added Commands @DecreaseOrgasmChance, @IncreaseOrgasmChance, @DecreaseRuinChance and @IncreaseRuinChance
Added options to the main picture right-click menu to go to the first image of the current domme slideshow, go to the last image of the current domme slideshow, and load a new random domme slideshow from the directory set in the General Settings tab
Fixed bug where #Keywords would return a "not found" error if adjacent to a ")"
Fixed bug where Next Image and Previous Image buttons were not always unlocked when @LockImages was disabled by system events rather than the @UnlockImages Command
Fixed major bug where the @ChanceXX Command was not processed correctly, resulting in chunks of the domme's dialogue and Commands being deleted before they could be parsed
Fixed bug where certain @Command() functions would break other @Command() functions in the same line. This includes @CheckFlag(), @SetFlag(), @TempFlag, @DeleteFlag(), @SetDate(), @CheckDate() and @DeleteVar[]
Added Command Filters @AssWorship, @BoobWorship and @PussyWorship
Added Commands @Worship() and @ClearWorship
Added Command Filters @LongHold and @ExtremeHold
Added Commands @LongHold, @LongHold(), @ExtremeHold and @ExtremeHold()
Added Sub Settings for Long Hold Min/Max and Extreme Hold Min/Max
Added Command Filters @SubWorshipping and @SubNotWorshipping
Added Commands @WorshipOn and @WorshipOff
Added Commands @FollowUp() and @FollowUpXX
Response Files will no longer include lines in the [All] category if the session has yet to enter the first Taunt Cycle, or the session has passed the orgasm decision.
Domme recognizes requests to have an orgasm through new keyphrases: "I cum", "me cum", "I have an orgasm", "me have an orgasm"
Added System Keywords #LocalImageCount, #HardcoreImageCount, #SoftcoreImageCount, #LesbianImageCount, #BlowjobImageCount, #FemdomImageCount, #LezdomImageCount, #HentaiImageCount, #GayImageCount, #MaledomImageCount, #CaptionsImageCount and #GeneralImageCount
Fixed bug with @DeleteLocalImage Command that caused the program to stop responding
Added @RestrictOrgasm() and @RestrictOrgasm Commands
"Domme is typing..." timer length is now capped at 6 seconds. This is to ensure that lines get delivered in a timely manner, even if they contain lengthy sets of Commands in the script.
Added @RandomText() Command
Added @SetModule() and @SetLink() Commands
Added @ResponseYes() and @ResponseNo() Commands
Added custom button options to Lazy Sub
Fixed bug that caused Tease AI to crash during videos when domme typed a new message
Improved Tease AI's parsing ability when matching Response Files
Tease AI now automatically capitalizes the first character of each line (will still be overridden by Remove Capitalization option in Domme's Typing Style)
Wildcard ability added to @PlayVideo[] @PlayAudio[] and @ShowImage[] Commands
Web Sex Toy start instructions added to @Edge-related Commands
Added Volume and Rate Sliders for Text to Speech options
Replaced "Emotes Like This" with custom beginning/ending emote textboxes
Tooltip Descriptions added to URL Files tab
Tooltips added to Image path labels to show full paths
General, Domme and Sub settings now use ToolTips for descriptions.
Fixed bug that caused errors when using Goto-related Commands on the line just before an End Command
Multithreading overhaul - Displaying images to main window
Added @EdgeHeld() Command Filter
Added Timeout() Command
Added "Save Image To" option to main picture window right-click menu that let's you quickly save a blog image to one of your local image directories
@CallReturn() Command, Domme Mood Commands
Long Edge amount is now measured in minutes instead of seconds
Open From Text button in AI Box Tools has been changed to Open From Clipboard
Added option to switch left-side panels to right side of the screen
Decreased the minimum size of the Chat Window panel so that the main picture area can be made larger
Improved the way Tease AI validated scripts containing @PlayJOIVideo and @PlayCHVideo
Minor WritingTask UI fixes
Fixed bug where Writing Tasks did not launch correctly from Multiple Choice branches and Responses
Fixed bug that affected @CBTCock lines where only the lines from CBTCock_First.txt would get called
@EdgeToRuinSecret, @EdgeToRuinHoldSecret and @EdgeToRuinNoHoldSecret are no longer valid Commands. The new Commands are @EdgeToRuinNoSecret, @EdgeToRuinHoldNoSecret and @EdgeToRuinNoHoldNoSecret. It didn't make sense to me that the default state would be knowing the ruin was coming in advance, so ruin taunts are only active when a "NoSecret" @EdgeToRuin style Command is used
Tease AI no longer pulls lines that show images from List scripts when @LockImages is active
@DeleteVar[] should now work correctly
I've mainly been ripping out some guts and trying to tweak or optimize things. Too much and too minor to detail, but I've added a third attempt at creating a domme tags system and I have to say this third one is an effin winner : D
9/16 - 9/17 - Created AI Box app that allows users to create and open files that will allow them to easily share their creations from entire scripts to minor additions
Added Commands @RapidCodeOn and @RapidCodeOff, which allows the program to chew through multiple @NullResponse lines almost immediately
Added Commands @InterruptsOff and @InterruptsOn which can be used to prevent the user from Interrupting a script
Added Command @DeleteVar[] which allows you delete a variable you've created
App Window is no longer always on top. Holy fuck did that get annoying fast
9/15 1:50 pm - Fixed bug where @ShowButtImage pulled up Boob pictures instead
9/15 1:36 pm - Domme now occasionally makes and corrects typos
9/15 7:56 am - Created new Domme Tag app that's much easier to work with than the original system - Currently this is accessed through a small black button on the Apps window
9/14 4:41 pm - Gave Terms & Conditions its own form to improve the overall presentation of the program
9/14 1:09 pm - Added Command @InputVar[] - When this Command is used in Linear scripts, the domme will wait for a response from the user and save it as the variable listed in brackets. For example:
I was wondering #SubName What's your favorite movie? @InputVar[FavoriteMovie] Yeah, that's a good one
This will save the user's input inside a variable file called "FavoriteMovie" to [Personality]\System\Variables, similar to @SetVar[]
9/14 1:00 pm - Improved the @ShowVar[] Command - @ShowVar can now display strings as well as integers, and multiple @ShowVar[] Commands can now be used in the same line. For example:
You know something #SubName I agree that @ShowVar[FavoriteMovie] was a pretty good movie, but @ShowVar[FavoriteBand] is terrible Your tastes are all over the place
9/14 11:57 am - Added Splash Screen that displays what operations Tease AI is carrying out as it's starting up
Changed App Windows state to "Always on Top"
9/14 4:26 am Program now unlocks images automatically when the domme allows you to stop
9/14 4L20 am - Metronome now waits until Domme has told you to speed up or slow down before changing speed
9/14 2:52 am - Fixed bug where the Domme, Contact 2 and Contact 3 caused System Message loop when joining and leaving the chat room
9/14 2:37 am - Fixed bug where wishlist preview image was not being handled correctly, causing a "cannot locate image url provided" error
9/14 2:23 am - Fixed bug where the code for Hold The Edge taunts was pointing to the wrong location
09/13 10:39 am - Added 4 buttons on the App window to switch between Blue, Purple, Black and Red color schemes for Tease AI
09/13 8:09 am - Added Date and Time to UI
09/13 7:22 am - Tease AI can now be resized by the user and will scale automatically. 768, Compact and 1080 Buttons are now defunct
9/12 3:39 am - Fixed bug that caused "URL Formats are not supported" error when trying to view Boobs or Butts images from URL Files.
Fixed code for clicking individual cards to set them in the Cards panel in the Apps tab. I had forgotten to finish this code before releasing Patch 45
9/11 12:29 pm - Various bugfixes and tweaks in preparation of Patch 45
9/09 12:35 pm - Finished new Glitter implementation
9/09 10:16 am - Improved Lazy Sub. Enhance the overall aesthetics as well as adding the option to set keyboard shortcuts for each of the Lazy Sub buttons
9/09 4:35 am - Added Command @Call() - This Command allows you to leave the linear script you're in and begin running another script in the location specified.
For example, @Call(Modules\PicturesSolo_85.txt) would immediately move the domme to the first line of that script and the program would continue from there. You can specifiy any location you like, as long as it exists in the currently Personality's directories, eg @Call(Custom\My Username\Ballbreaker_1.txt)
You can also use a comma to specify a specific line to start from:
For example, @Call(Custom\My Username\Ballbreaker_1.txt, Made Domme Angry) would move to the file [Personality]\Custom\My Username\Ballbreaker_1.txt and begin from the line (Made Domme Angry). When using a comma to specify location to jump to, make sure that you do not put it in its own set of parentheses, just the location word or phrase only
Added Command @CallRandom() - This Command allows you to leave the linear script you're in and begin running a random script from the directory specified.
For example, @CallRandom(Custom\UserName) would move to the directory [Personality]\Custom\My Username\ and randomly select a script located there. It would start at the first line of that script and move forward from there. When using @CallRandom(), you cannot use a comma to specify a specific jumping point as you can with @Call()
9/09 3:52 am - Added new parseable section for Response files, [All] [All End] - Tease AI will always add lines between [All] and [All End] and will use them regardless of what state the program is in. This can be useful for adding a few generic responses that can go with any situation, or creating Response files that just contain [All][All End] to respond to very specific words or ideas
9/09 1:39 am - Added Command @SystemMessage - When this Command is used, the "Domme is typing" will not appear. Instead the text will be output to the screen by itself in bold, blue letters. This is useful for system type messages such as "@SystemMessage #DomName has logged off"
Added Command @EmoteMessage - When this Command is used, "Domme is typing" will still appear, but the message will appear by itself in the Domme's color in italics. For example, "@EmoteMessage #DomName laughs" will output "Emma laughs", and it will be italicized to represent an emote. This is useful for creating a more chat like experience
9/08 7:10 am - Fixed bug where slot machine winnings/losses did not save correctly
9/08 5:02 am - Fixed bug where Tease AI would crash trying to pull images from Contact Image Directories that were not set
9/06 2:46 am - Fixed issue where domme would accept a user's message as the answer to a question she was in the middle of typing
9/05 5:36 am - Tease AI will no longer call Long Edge Interrupts during End scripts
9/05 3:25 am - Added Language option in Misc tab to switch Settings UI between English and German. Added German translations to General Settings provided by Ambossli. This will be a slow and steady process, but I will get translations added in various patches moving forward as I receive and are able to implement them
9/04 6:24 am - Improved function of the @Goto Command. Using a @Goto Command such as @Goto(This Line) will go to (This Line) as usual. but you can enter multiple lines separated by commas, such as @Goto(This Line, That Line, That Line Over There). In this case, the script will randomly jump to one of the lines specified, so there's an equal chance of Tease AI moving to (This Line), (That Line) or (That Line Over There).
9/03 3:02 am - Finished image handling tweaks for Patch 45
9/01 2:04 - More Risky Pick work done
Added new game Risky Pick
Added Tease AI icon to icon tray
Daily Login bonus message now appears as a taskbar notification rather than a pop-up
Daily login bonus now randomly gives 5, 10, 25, 50 or 100 tokens. Higher amounts have a harder percent chance to get
Added Context menu to Tease AI icon
Games -> One click access to Slots, Match Game, Risky Pick, Exchange and Collection Milovana -> Quick links to Open Beta thread, Bug Report Thread, Webteases and Forum through user's default browser Exit -> Terminate the program
Reset feature greatly improved, should be much more stable
Fixed issue where Tease AI would only flash blog images when called from Response files
Improved handling of animated gifs that appear in the main picture window
Improved Image handling across the board to cut down on GDI errors and reduce memory usage as much as possible
Card Images set in Apps->Games tab can now be dragged from local or online images. In either case, a resized image of that card will be created in [root]\Images\Cards, which the program will use for those card images to ensure that each card is the exact size needed by the picture box, and not wasting memory by scaling down a larger image
Fixed bug that caused program to crash when switching to Match Game tab in Games window
Removed button in the Images tab that no longer served a function
08/25 7:47 am - Added the ability to Suspend and Resume session states
08/25 11:12 pm - Fixed bug that prevented the domme's slideshow from changing during the Taunt cycle.
08/25 10:40 pm - Added ability for domme to read from a script in time with videos. When a user plays any video (it doesn't matter where the video is located or how it was called), the program checks to see if a script with the same name as the video is located in [Personality]\Video\Scripts. For example, if a use opens a video file named Shower-Lesbians.mp4, Tease AI will look for Shower-Lesbians.txt. If no script is found, the video will simply play as usual. Scripts should look something like this:
(BITBUCKET NOTE - The timestamps below should be on separate lines, I don't know why they were formatted as a single line here)
[00:00:10] I'm looking forward to this [00:00:18] You're probably not though lol [00:00:42] It's gonna be so fucking hot when they get in the shower [00:01:32] Fuck, not even two minutes in and I'm already turned on #EmoteFlustered etc
Timestamps are denoted by "hours:minutes:seconds". So when the video reaches 10 seconds, the domme will say "I'm looking forward to this", and so on. This can be used in conjunction with other instances the domme shows you videos as well. A timestamped message will not be displayed if the domme is already typing at that moment in the video. This not only applies to things she says outside of the video script, but in cases where timestamps are too close together and the domme walks over the next thing she was about to say.
08/25 7:41 pm - Added Commands @ApathyLevelUp and @ApathyLevelDown. These commands alter the domme's Apathy level for the duration of the session.
08/25 10:40 am - Added Reset button to Apps window. The Reset button is enabled once a tease session starts. When the user clicks "Reset", the program will stop and revert to its initial state before greeting the domme.
Minor tweaks to presentation and functionality of options at the bottom of the Apps window, as well as preparation for Suspend and Resume features.
08/25 2:07 am - Fixed bug that happened when the user asked to speed up from the slowest speed or slow down from the fastest speed. These requests should now be handled correctly.
08/25 1:40 am - Added Save and Load options in Glitter tab that allows users to create and load custom settings for Glitter.
08/23 11:20 am - Added Command @RoundVar. Syntax: @RoundVar[VarName]=[Value to round by]
For example, @RoundVar[Edges]=[5] would round the variable "Edges" to the nearest 5, and automatically set "Edges" that the new rounded value.
Added System Keywords #RandomRound5, #RandomRound10 and #RandomRound100
These work just like the current #Random Keyword, but will automatically round the result to the value specified. For example, #RandomRound10(10, 100) will only produce a result like 10, 20, 30...etc
08/22 3:14 am - Domme and Contact slideshow images now change during Multiple Choice branches and Responses.
Added error handling for when the program tries to call a Contact slideshow that has not been set in the Contact's Image Directory section in the Glitter tab.
08/22 2:05 am - Added ToolTips to Domme, Contact1, Contact2 and Contact3 Image Directory labels. When the user hovers the mouse over these labels, the full path to whatever folder they had selected will be displayed in the tooltip. This is to give the user a way to view long paths since the available space is somewhat limited.
Added buttons to Contact1, Contact2 and Contact3 in the Glitter tab that allows the user to clear a previously set image directory.
08/22 1:24 am - Added Chastity state toggle to Misc tab in Settings menu.
08/21 11:36 pm - Added System Keywords #CBTBallsCount and #CBTCockCount. These words are replaced with an integer representing the number of times those routines have been called. These can be used in Operations as well.
08/21 4:20 am - Added ability to create Custom Tasks that work the same way as @CBTBalls and @CBTCock. User creates scripts "Filename.txt" and "Filename_First.txt" and places them in \Custom\Tasks\, and calls them from Linear scripts with @CustomTask() (e.g, @CustomTask(Filename)).