Manual for "TeaseAI Personality Editor" version 1.0.0.0c

Table of contents

  1. General information
  2. Installation / Removal
    1. System requirements
    2. Installation
    3. Removal
  3. Launching TAIPEJ
  4. The GUI
    1. The menu bar
    2. The file trees
    3. The code area
    4. The example generator
    5. The table of problems
    6. Search results
    7. The settings menu
    8. Modifying the look of TAIPEJ
  5. Keyboard shortcuts
  6. Known issues

1. General information

License

Summary:
This software is freeware. That means you can copy it and give it to other people, as long as you do it for free. But you are not allowed to use any parts of this software (except the RichTextFX library and the JavaFX libraries) for any other purpose than to run this software as it is. This especially means that you are not permitted to decompile this software!
This software comes without any warranty.
To see the full license agreement, go to "Help" > "open EULA".

External changes to a personality

If you modify a personality using other software while that personality is open in TAIPEJ, TAIPEJ will be able to handle most of those modifications.

supported:

partially supported:

not supported: deleting files / folders that are currently open in TAIPEJ

Other information

Mouse settings

This application respects your mouse-related system settings, i.e. if you switched the mouse buttons, this software will act accordingly. Therefore if this manual refers to the "left" mouse button, the primary one needs to be used, whereas "right" button means the secondary one.

Version numbers

The version numbers of this software consist of 4 dot-separated numbers. The further to the right a number is, the lower is its significants. The meaning of the 4 numbers will be explained below (from left to right):

  1. Major Release: if this number increases, there has either been a huge change of some sort (that might lead to a lack of backwards compatibility) or the new version introduces a lot of new features and bug fixes.
  2. Feature Release: if this number increases, at least one new feature has been added. It may also include bug fixes.
  3. Bugfix Release: if this number increases, only bugs have been fixed
  4. Backport Release: if this number increases, bug fixes from a later MR or FR have been backported to a lower version (will rarely happen)

The version number of the manual always corresponds with the version number of the software it was written for. Thus the version number of the manual may increase even though the manual itself hasn't changed.
The version number of the manual has a letter at the end. If there is an error in the manual so the manual needs to be updated without the software being updated, the letter gets increased.

2. Installation / Removal

2.1 System requirements

OS: any 64-bit system that can run a standard desktop-JRE version 16+, such as Windows 7+, Ubuntu (not sure about the version; requires at least 12.04+, maybe newer), Mac OSX
Java: version 16 or later (see "Installation" for details)
JavaFX: version 11 or later (see "Installation" for details)
CPU: Dual Core @ 2.0 GHz or better (recommendation for Win 7)
RAM: 2 GB or more

2.2 Installation

This software requires Java and JavaFX to run. There are 3 options:

Which option should I use?

Here is a table showing the differences between the options:

option description file size JavaFX environment
variables
recommended for...
complete JRE This contains the files that are required to run Java applications and all available Java modules. 50 MiB for Java
+82 MiB for JavaFX
Needs to be downloaded / installed separately %JAVA16%
%JFX11%
NOT recommended
only for people who already have one (of the right version), because they can be pretty hard to find. (That's because Java developers are supposed to provide a custom JRE for all of their Java applications as of Java 11)
custom JRE This JRE is designed specifically for TAIPEJ. Therefore it only contains the Java modules that TAIPEJ actually uses. 117 MiB total already included none required everyone for whom none of the other options is recommended (which will be most people)
JDK As the name suggests, the JDK is designed for people who develop Java applications.
It contains a complete JRE and all the files you need for Java development.
290 MiB for Java
+82 MiB for JavaFX
Needs to be downloaded / installed separately %JAVA16%
%JFX11%
  • fellow Java developers,
  • everyone who wants to run this on a Mac, because I don't have one, but I need one in order to provide a custom JRE for Macs
  • all people who already have a JDK (of the right version) installed on their PCs for other reasons and
  • everyone who is planning on using other Java applications which require the same Java version (or an older one) that come witout a custom JRE

at compression level 2

see below for instructions how to set them up

As it turns out, JavaFX requires 2 special modules called "jdk.unsupported" and "jdk.xml.dom" in order to run. Most complete JREs on the Internet probably won't include them.

As a result, you will only see an empty window, if the former is missing and TAIPEJ will most likely crash when you click on an external Link in the EULA, if the latter is missing. If you already have a complete JRE, you can run "java --list-modules" from the command line to see whether jdk.unsupported & jdk.xml.dom are included. If they are, you can use that JRE to run TAIPEJ.

Note that there is a bug in JavaFX (which has been around since at least version 8) which causes people who use a complete JRE or a JDK to not see the icons of pop-up windows. That makes it harder to (visually) identify whether they are error, warning or notification pop-ups. Since most people will probably use the custom JRE, and because it's just a minor graphical error, I won't bother fixing this.

Steps to install TAIPEJ, if you chose the custom JRE (any OS)

  1. download "TAIPEJ.zip" and extract it into any directory on your hard drive
  2. download the custom JRE and extract the content of the zip file into TAIPEJ's "jre" folder

Steps to install TAIPEJ, if you chose the complete JRE or the JDK (Windows)

  1. download "TAIPEJ-for-JDK.zip" and extract it into any directory on your hard drive
  2. if needed, download the JRE / JDK of Java 16 or later
  3. if needed, download JavaFX (SDK) 11 or later
  4. copy all *.jar files from <path/to/JavaFX>/lib to <path/to/TAIPEJ>/lib (alternatively, you can create symlinks, if you have admin rights)
  5. set the environment variable %JAVA16% to the absolute path (without the trailing slash) of the JRE / JDK folder (the one that contains a subfolder called "bin")
  6. set the environment variable %JFX11% to the absolute path (without the trailing slash) of the JavaFX folder (the one that contains a subfolder called "bin")
  7. Remember that computers aren't psychic! The variables need to be called %JAVA16% and %JFX11% even if you used newer versions of those programs!

Steps to install TAIPEJ, if you chose the complete JRE or the JDK (Linux)

  1. download "TAIPEJ-for-JDK.zip" and extract it into any directory on your hard drive
  2. if needed, download the JRE / download and install the JDK of Java 16 or later
  3. if needed, download JavaFX (SDK) 11 or later
  4. copy (or create symlinks to) all *.jar files from <path/to/JavaFX>/lib in <path/to/TAIPEJ>/lib
  5. set the environment variable $JAVA16 to the absolute path (without the trailing slash) of the JRE / JDK folder (the one that contains the "java" binary)
  6. set the environment variable $JFX11 to the absolute path (without the trailing slash) of the JavaFX "lib" folder
  7. Remember that computers aren't psychic! The variables need to be called $JAVA16 and $JFX11 even if you used newer versions of those programs!

2.3 Removal

To uninstall this software, all you have to do is to remove the files you extracted during the installation (as well as additional files you may have downloaded later).
If you had to set environment variables during the installation (and don't need them anymore) you have to delete those, too.

3. Launching TAIPEJ

  1. Double click "start.bat". (This is the only file that you can rename; as long as you leave the extension untouched, of course.) [So far there is no launcher for Unix, but if anybody really wants to use TAIPEJ under Linux or OSX, tell me and I'll convert this into a Shell script]
  2. If it's your first time launching TAIPEJ, you'll have to accept the EULA and tell TAIPEJ where you installed TeaseAI by selecting its folder in the prompt that opens.
  3. A popup will open, showing you a list of personalities and version numbers. Select the personality you want to edit and the Tease AI version you want to optimize your personality for (the latest one is recommended) and click "start".

After executing these 3 steps the main window will open and you can start editing your personality.
You can open multiple instances of TAIPEJ at the same time, but you cannot open the same personality in more than one.
Note: If you change TAIPEJ's settings while more than one instance is running, only the one where you changed them will behave accordingly.
Changing the settings in instance A and then changing a different setting in instance B will overwrite the first change. So if you change anything, change it in all instances or restart them.

Splash screen

Speaking of settings: There is no in-app way of changing anything regarding the splash screen. However, it is very simple to do via the file manager.
To disable the splash screen, rename / move or delete splash.gif.
To re-enable it, move / rename it back.
To use a different picture, replace splash.gif with any other GIF. It doesn't matter, whether the new one is animated or not; it doesn't matter whether the new one has transparency or not. And the resolutions also do not have to match. But make sure the resolution of the new one is smaller than your screen resolution. Otherwise Java itself might crash.

Troubleshooting on Windows

If you get a message saying that %JAVA16% or %JFX11% are not set, check that you spelled the variable names correctly when you created them.
If you still get the message, even though they are spelled correctly, do the following:

If you get a message that says "No toolkit found" somewhere in it, Java wasn't able to find JavaFX. Make sure the environment variable (if needed) points to the correct directory.
The "bin" folder inside of it should contain a bunch of DLLs.

Troubleshooting on Linux

If you get a message saying that $JAVA16 or $JFX11 are not set, check that you spelled the variable names correctly when you created them.
If you still get the message, even though they are spelled correctly, log out of Linux and log back in. If that sill does not help, reboot your PC.

If you get a message that says "No toolkit found" somewhere in it, Java wasn't able to find JavaFX. Make sure the environment variable (if needed) points to the correct directory.
It should contain several *.so files.

Troubleshooting (any OS)

In the current version of TAIPEJ, people who use the custom JRE will get a bunch of warnings saying "WARNING: Unknown module: richtextfx.fat specified to ...".
These can be safely ignored. They are the result of a temporary workaround I used. As soon as I find the time to implement an actual fix, those warnings will be gone.

In the current version of TAIPEJ, people who decided against using the custom JRE will get a bunch of warnings saying "WARNING: Unknown module: javafx.graphics specified to ...". These can be safely ignored. The module simply has not been loaded yet when those warnings are generated.

4. The GUI (Graphical User Interface)

The main window of TAIPEJ consists of several parts. Here is what those are, how they work and what they can do:

The menu bar offers a variety of features:

You can see the corresponding keyboard shortcuts next to each menu item, if available.

4.2 The file trees

The file tree labeled "Scripts" shows all the files and folders in your selected personality similar to a file manager.
Clicking has the following effects:

If there is a selected tree item and the tree is focused, you can also use keys to interact with that tree:

The file tree labeled "TeaseAI" shows all the files and folders in your TeaseAI root folder. It works the same way as the other tree, except:

Both trees use colors and other styles to indicate, what type of files are listed. By default, folders appear "normal" whereas files are bold.
Files will have different colors depending on their extension and (if the file is a script) whether any problems were found in it.
Currently open scripts are italic.
These are the default colors:

pinkfile that does not match any other category
redscript with errors
goldscript with warnings
orangescript with errors & warnings
bluescript that has too many lines for TAIPEJ
cyanmedia files
green*.txt file that is not in any valid script location / has an invalid name for its location
script whose type could not be determined
whitescripts without any problems
folders
grayscripts whose type is not yet supported by TAIPEJ

4.3 The code area

The code area consists of 3 parts: the tab headers, the line numbers and the text area. There is 1 tab for each open file. They work just like the tabs of a web browser.
The line numbers will be colored, if there are any problems on that line.
The text area shows your code with syntax highlighting and allows you to edit the code. You can use a variety of shortcuts to speed things up.

If you hover over a command / filter / system keyword that is deprecated or has known issues, a tooltip will appear and tell you more about what's wrong with that particular one.
When you right-click on something in your code that raised an error or warning (by default, those things will be underlined), TAIPEJ will check if there are any "Quick Fixes" available for that particular problem. If so, a context menu will open, that lets you choose how you want that problem to be fixed.

If you see a file that does not have any syntax highlighting, this is not necessarily a bug. The lack of syntax highlighting can have one of several reasons:

4.4 The example generator

The example generator is hidden by default in order to save space on the screen. You can activate it via the menu bar or by pressing F6.
The generator will take the code from the current line (i.e. where the caret is) of the currently open script and do the following things:

The result of this replacement will then be shown in a small box above the code area.

4.5 The table of problems

This four-column table contains a list of all the things that are wrong with your personality's code. It distinguishes between "error"s, "warning"s and "others". Generally speaking, errors are problems that will lead to unexpected behavior -- maybe even a crash, warnings are issues that might lead to unexpected results and "others" are just bits of information you should be aware of.
The first column shows which of these severities applies to the problem in this row.
The 2nd column contains a textual description of the problem to help you solve it.
The 3rd column shows the path and name of the file. The path is always relative to the root directory of the chosen personality.
The last column contains the number of the line where the issue is located in the file.

All problems are sorted by file (path and name alphabetically ascending) and line number (ascending).
You will also see rows where the columns "File" and "Line" are empty. These rows show so-called "project wide problems". These problems are not connected to a specific file, but to the personality as a whole (e.g. a mandatory script is missing). If only the "Line" column is empty, the problem doesn't refer to a single line, but the entire file (e.g. a list type script is empty).

When you launch the application all scripts of the selected personality will be scanned for problems. Afterwards the list of problems will be updated as follows:

The entire list will be cleared and rebuilt from scratch, if you switch to a different personality, of course.

You can sort the entries in the table by clicking on the table header of the column you want to sort by. If you prefer descending order instead of ascending, click on the same header again. Clicking a third time disables the custom sorting.

You can double-click an entry that is related to a particular script to open / jump to that script. If the problem occurs in a particular line, the caret will be automatically positioned on that line.
You can right-click any entry to get a more detailed explanation of the problem and how to fix it.

When you run a search-in-all-files, the search results will be displayed at the bottom of the main window. The table of problems will become a tab and the search results will be a new tab next to it.
Every time you run a search – even if you repeat a search – a new tab will be created. This allows you to look at the old results in case you need them for comparison.
Unlike the table of problems, the search result tabs can be closed.
The list of search results has a top-level entry for each script that contains at least one match to your search. Each such entry will have a child for each line that has at least one match in it.
You can double-click on a script to open it in a new tab (or jump to that tab, if it is already open). You can double-click on a line to open the script and jump directly to that line.

4.7 The settings menu

The settings menu allows you to adjust various preferences. You can confirm your changes by clicking the "OK" button. You can cancel your changes by clicking the "cancel" button, clicking the red cross button of the settings window or by hitting the "ESC" key.
You can adjust the following settings:

4.8 Modifying the look of TAIPEJ

If you know your way around CSS, you can modify the syntax highlighting as well as the entire look of your code and the file trees with simple CSS rules.
To do that, create a file called "userScriptStyle.css" in TAIPEJ's resource directory (the one you set up during the first launch) and fill it with CSS instructions. If TAIPEJ is currently running, you have to restart it. Since the "C" in "CSS" stands for "cascading", you only have to specify CSS rules for the things you want to override.
For changing the look of the code area, the following (case-sensitive) classes are supported:

The following properties can be changed:

PropertyCSS namevalues
background color of tree items-fx-background-colorsame values as for "color" in normal CSS (be aware that some named colors look a bit different in JavaFX than they do in HTML)
text color of the code-fx-fillsame values as for "color" in normal CSS (be aware that some named colors look a bit different in JavaFX than they do in HTML)
text color of tree items-fx-text-fillsame values as for "color" in normal CSS (be aware that some named colors look a bit different in JavaFX than they do in HTML)
underlining-fx-underline"true" | "false"
font-fx-font-familyname of a specific font or one of these font families: "serif" | "sans-serif" | "cursive" | "fantasy" | "monospace" (you shouldn't change this for the code area, only for the trees; maybe I did something wrong while testing, but JavaFX still seems to have trouble with most fonts that aren't super common)
font weight-fx-font-weight"bold" | multiples of 100 (100..900) | "bolder" | "lighter" | "normal" (keep in mind that not every font supports all font weights!)
font style-fx-font-style"normal" | "italic" | "oblique"
strike through-fx-strikethrough"true" | "false"
indentation of tree items-fx-indentinteger, default = 10

In addition to the above you can include the following line in your CSS file in order to change the font size of the code. Replace "XY" with an integer and a valid CSS text size unit. (Default is 15px)
.code-area, .lineno {-fx-font-size: XY }

If you want to restore the original style, simply remove, rename or empty your css file and restart TAIPEJ.
Feel free to share your CSS files with others so we can find the best markup for everyone! :-)

Changing the look of the file trees works in a similar way. There are a few differences, though:

  1. for performance reasons the tree items are styled with pseudo-classes instead of actual classes. So instead of a dot you need to use a colon in front of the pseudo-classes' name!
    And because CSS does not allow using pseudo-classes by themselves, you need to put the class .tree-cell in front of them. (examples below)
  2. you need to specify to which tree the rules should apply: Note that ommitting the tree's ID will work, too (the style will be applied to both trees), but the rules will then also be used for the tree that shows the search results! And I promise you, that's gonna look ugly! :-/

These pseudo-classes can be used:

Examples:

5. Keyboard Shortcuts

The following buttons / shortcuts can be used (the key bindings currently cannot be changed):

shortcuts provided by the system [cannot be changed]
ENTERWhenever the currently focused window has a button with blue background, hitting ENTER will trigger that button's action.
Ctrl + AMark the entire text of the currently focused text field or text area.
Ctrl + CCopy the marked text to the clipboard.
Ctrl + VPaste the clipboard's content at the carriet's position, replacing any marked text.
Ctrl + XCut out the marked text and store it in the clipboard.
Ctrl + YRe-do text edit.
Ctrl + ZUndo text edit.
Ctrl + arrow leftmove caret to the beginning of the current word.
Ctrl + arrow rightmove caret to the end of the current word.
Ctrl + Homemove caret to the beginning of the first line.
Ctrl + Endmove caret to the end of the last line.
Ctrl + Backspaceremove the entire word to the left of the caret.
Ctrl + Deleteremove the entire word to the right of the caret.
Ctrl + TabSwitch to next (right) script tab.
Ctrl + PageDown
Ctrl + Shift + TabSwitch to previous (left) script tab.
Ctrl + PageUp
function keys [cannot be changed]
F1open the manual
F3 repeat the last search, depending on which one was last used
  • if last operation was "search-and-replace" it will search for the search term used there (starting at the current caret position)
  • will repeat the last "search-in-current-file" operation, starting at the current caret position
  • repeat the last "search-in-all-files" operation
Shift + F3will repeat the last "search-and-replace-in-current-file" operation, starting at the current caret position
F6run the example generator and make it visible, if it isn't already
Shift + F6hide the example generator
F9launch TeaseAI
F11toggle full-screen mode
shortcuts provided by me (commonly found in any software) [might be configurable in a future release]
Ctrl + SSave the currently open script (tab).
Ctrl + Shift + S"Save as ..." (not yet available)
Ctrl + WClose the currently open script (tab).
Ctrl + FOpens the search-in-current-file dialog.
ESCSome Pop-up windows such as the settings window can be closed (without saving) by pressing the ESC key.
shortcuts provided by me (inspired by Eclipse) [might be configurable in a future release]
Ctrl + HOpen the search-in-all-files dialog.
Ctrl + Shift + WClose all open tabs.
Alt + UpMove marked line(s) up by one line (does not affect clipboards)
Alt + DownMove marked line(s) down by one line (does not affect clipboards)
Ctrl + Alt + UpDuplicate marked line(s) below and keep cursor at current position (does not affect clipboards)
Ctrl + Alt + DownDuplicate marked line(s) below and move cursor to identical position within the copy (does not affect clipboards).
Ctrl + DDelete marked line(s).
Ctrl + MToggle "maximized code" mode.
Ctrl + SpaceOpen / run auto-completion (not yet available).
general shortcuts provided by me (own creation) [might be configurable in a future release]
Ctrl + Shift + CCopy the marked text to the 2. clipboard.
Ctrl + Shift + VPaste the 2. clipboard's content at the carriet's position, replacing any marked text.
Ctrl + Shift + XCut out the marked text and store it in the 2. clipboard.
Ctrl + Shift + OOpen the debug settings window
shortcuts specific to TeaseAI scripts [might be configurable in a future release]
Ctrl + Shift + some letter By default this kind of shortcut will insert a command / filter / keyword that starts with the corresponding letter at the current caret position
(except for C,V,X,O,S & W – which are covered above)
the placeholder <caret> in the explanations below will mark where the caret will be positioned after the insertion. If the placeholder is missing, the caret will simply be at the end of the inserted text.
Ctrl + Shift + AInsert @AcceptAnswer 
Ctrl + Shift + DInsert @DifferentAnswer 
Ctrl + Shift + EInsert @Edge(<caret>)
Ctrl + Shift + FInsert @FollowUp(<caret>)
Ctrl + Shift + GInsert @Group(<caret>)
Ctrl + Shift + IInsert @If[<caret>]Then()
Ctrl + Shift + JInsert @JumpVideo
Ctrl + Shift + LInsert @LoopAnswer
Ctrl + Shift + MInsert @Mood (this one is not a complete command, but there are a few commands that start with @Mood..., so it should be useful)
Ctrl + Shift + NInsert @NullResponse
Ctrl + Shift + PInsert @PornAllowedOn
Ctrl + Shift + RInsert @RapidCodeOn
Ctrl + Shift + TInsert @Timeout(<caret>)
Ctrl + some digit By default this kind of shortcut will insert a commonly used block of code at the current caret position
the placeholder <caret> in the explanations below will mark where the caret will be positioned after the insertion. If the placeholder is missing, the caret will simply be at the end of the inserted text.
Ctrl + 1Insert [done, ready, finished, continue, go on, proceed, OK] <caret>
@DifferentAnswer #AreYouDone
Ctrl + 2Insert [yes] <caret>
[no] 
@DifferentAnswer #YesOrNo
Ctrl + 3Insert [yes] <caret>
[no] 
[maybe, not sure, dont know, no clue, no idea, unsure, possibly] 
@DifferentAnswer #YesOrNo
Ctrl + Alt + some letter By default this kind of shortcut will open a popup. That popup lists a bunch of commands, filters & keywords of a particular category.
Pressing one of the keys listed on screen will insert the corresponding text at the current caret position and move the caret between the brackets, if any.
Below you can find which shortcut is associated with which category.
Ctrl + Alt + CCalls to other scripts
Ctrl + Alt + FEverything related to Flags
Ctrl + Alt + GMost of the commands that jump to a Goto-Line
Ctrl + Alt + MAll commands related to Modes (such as @YesMode())
Ctrl + Alt + VEverything related to Variables (except @If[])
Ctrl + Alt + WEverything related to Worshipping

6. Known issues

Some things just don't work out the way we want them to sometimes ;) Here's what TAIPEJ is struggling with: