This plugin organizes Custom Triggers into a panel of categories and a panel of triggers in the selected category. This is simply a different view of exactly the same triggers that are listed in the Custom Triggers tab.
It is available from ACT's Plugin Listing tab [Get Plugins] button, (80) TriggerTree.
Below is a screenshot of the panels.
Features that are similar to the Custom Triggers tab:
- Green is used to show active triggers. A green category indicates that the category contains active triggers. (A green collapsed category group indicates that at least one category in the group contains active triggers).
- The checkbox next to the regular expression in the trigger pane enables / disables the trigger.
- Right-click context menus are available in the category and trigger panes.
Additional features of the plugin:
- When entering a zone in game, if there is a Category that matches the zone name, that Category is automatically selected.
- The Find boxes at the top of the Category and Trigger panes provide incremental searches.
- Categories can be grouped into a user-defined folder, for instance to put all categories/zones from a particular game expansion into a single folder, as shown in the above screenshot.
- Fix Results Tab pop-up to work with ACT version 3.8.1 Release 284.
The Category pane organizes triggers using the Category field in the triggers themselves and a user-defined parent folder. In the example above, the parent folders use the name of the game expansion to bring trigger categories from that expansion together.
Similar to ACT, a trigger category is green if triggers in that category are active. If the parent folder for a green category is collapsed, the parent folder is green, for example the Default Group shown above has one or more green categories as children.
The Default Group (notice the leading space so it sorts at the top) collects triggers that the user has not assigned a parent folder, for example triggers shared outside of TriggerTree. Also, the first time TriggerTree version 1.7 runs, it puts all existing trigger categories in the Default Group.
Create a new parent folder by clicking the [+] button at the top of the category pane. Folder names can be just about anything the user desires, though duplicates are not allowed.
Categories may be moved between group folders using drag and drop or the edit trigger dialog.
The top level parent folders in the category pane are referred to here as the Category Group.
A right-click on a parent folder brings up the group context menu as shown below:
The Delete Category Group removes the group and moves all of its trigger categories to the Default Group.
The share menus will share everything in every category under the group, in this case 82 triggers and timers. It is best if the receiving player has the sending player on their whitelist so those shares don't get backed up in a queue, since the receiver will probably not be able to manually accept 82 shares before the pop-up dialogs time out. (In case of a backup, the shares can be accepted on ACT's Options tab, XML Share Snippets panel, in the yellow box.)
To share the Category Group, the sender must use the Share Dialog... or the 'macro' menus in either the Category or Triggers pane. The 'Copy XML' sharing menus in the Trigger pane use the original ACT format that does not contain the Category Group.
When receiving a shared trigger, the Category Group is handled as follows:
- If shared from ACT or a 'Copy XML' menu, and the receiver does not already have the Category / Zone in a group, the category goes into
Default Group - If the receiver does not already have triggers in the Category / Zone, the category is placed in the sender's group (which is created if required).
- If the receiver already has triggers in the Category / Zone but the category is in
Default Groupand the sender has it in a different group, the category is placed in the sender's group (which is created if required). - If the reciever already has triggers in the Category / Zone in a group other than
Default Group, the category stays in the receiver's original group.
The subfolder of the Category Group contains the categories retreived from the actual triggers. (On the ACT Custom Triggers tab, these are the top level items.)
A right-click on a category brings up the category context menu as shown below:
The first section of this menu affects the category itself.
The Delete entire category choice will delete all the triggers in the category and the category itself.
The Enable on zone-in choice provides a work-around for EQII color coded zone names.
The Modify entire category opens a sub menu that controls enabling or disabling all of the triggers in the category.
The Enable all triggers is equivalent to checking ACT's Custom Triggers category level checkbox.
The Disable all triggers is equivalent to un-checking ACT's Custom Triggers category level checkbox.
The second and third sections of the category context menu are related to sharing. These menus also share the Category Group folder as described above.
The Category Spell Timers sub-menu provides a list of timers that are started by a trigger in the category or have the category name in their Custom Tooltip field.
The addition of a color-code on EQII zone names, e.g. \#00FF00Buried Takish'Hiz: Empire of Antiquity [Contested] 3, complicates trigger sharing since EQII strips out the color code when pasting it into a chat window. So sharing a trigger with that zone name ends up changing the category name for the player receiving the trigger to Buried Takish'Hiz: Empire of Antiquity [Contested] 3. If the Restrict to Category / Zone checkbox is checked, the trigger will not work for the recipient.
The plugin provides a work-around.
- Create a category that does not include the color code or the instance number, e.g. Buried Takish'Hiz: Empire of Antiquity [Contested]
- Check the Enable on zone-in menu.
- Add triggers appropriate for the color coded zone.
When checked, the Enable on zone-in provides for the following:
- Triggers can be collected under a category that does not contain either the color code or the instance number.
- The plugin automatically enables and disables the triggers by modifying the Restrict to Category / Zone setting when entering or leaving any instance that matches just the category name without a prefix color code or postfix instance number.
- Pressing the [Category/Zone] button in the Edit All Fields dialog enters the category name without the color code or instance number.
- Shared triggers work for other users of the plugin if they also enable this setting.
- Players not using the plugin are best served when the plugin user shares the triggers while they are green (i.e. you are in the zone and the triggers are not restricted). The other player can then easily enable or disable the category using the category checkbox in ACT's Custom Triggers tab.
In the example above, when entering a zone that EQII identifies as \#00FF00Buried Takish'Hiz: Empire of Antiquity [Contested] 3, the plugin ignores the \#00FF00 and the 3, matches the resulting category name and enables all of the triggers by unchecking their Restrict to Category / Zone checkbox.
The example above effectively replaces having copies of triggers in three (or more) different categories
- \#00FF00Buried Takish'Hiz: Empire of Antiquity [Contested]
- \#00FF00Buried Takish'Hiz: Empire of Antiquity [Contested] 2
- \#00FF00Buried Takish'Hiz: Empire of Antiquity [Contested] 3
with their Restrict to Category / Zone checkbox checked. Except that color coded triggers cannot be properly shared.
The sharing section of the category context menus is mostly related to sharing data via EQII macros, though the Share Dialog can also be used to paste data into a chat box. Macros are discussed in the EQII Macros section. (The numbers in parentheses are how many of the total items can be shared in a macro.)
To build the Category Spell Timers menu, the plugin searches for spell timers
- referenced in the category's triggers
- or whose Category matches the clicked category name
- or whose Custom Tooltip contains the category name
The spell timer tooltip can contain multiple potential matches when separated by the | character sequence (space-bar-space). For example, to set up a timer so that it is in the list for both normal and challenge zones, the tooltip can be set to Vex Thal: Beyond the Veil [Raid] | Vex Thal: Beyond the Veil [Challenge Raid]. That spell timer will show up in the context menu for both categories. Note that a long tooltip can encroach on the maximum paste length in EQII.
To simply share a spell timer via XML copy/paste in EQII chat, right click the spell timer name in the Category Spell Timers sub-menu.
Left-click the spell timer name to open ACT's Spell Timers (Options) window with a search for that timer name.
The Share Dialog... menu opens a dialog that can speed up sharing of triggers and timers. And with alternate encoding enabled via the
button on the Triggers pane toolbar, triggers and timers that otherwise could not go into an EQII macro, will go into a macro.
If an EQII game window is found, the dialog initially opens with the [Macro] items listed. Otherwise, the dialog initially opens with the [Copy] items listed. The list can be switched between [Copy] items and [Macro] items by pressing the respective button.
An example usage where alternate encoding is disabled and the zone name contains an apostrophe which restricts macros is shown below for both the [Macro] and [Copy] modes. The macro dialog header shows that only the timers can go in a macro (due to the apostrophe in the zone name).
The [Copy] dialog contains a list of all of the regular expressions for the category's enabled triggers, and the names of the category's spell timers. Pressing the [Copy] button copies the XML for the selected item to the clipboard. For subsequent [Copy] button presses, the next item is automatically selected, then copied. The prefix selected by the radio buttons provides the command to paste the XML into the group, raid, or custom chat channel.
When the [Macro] button is activated with the alternate encoding enabled via the Trigger pane button
, the plugin can put all triggers and spell timers in macros, including those with problem characters. ACT alone will not recognize the alternate encoding scheme and any recipients must be running TriggerTree plugin version 1.6 or newer to successfully receive the data. An example of the share dialog with alternate encoding enabled is shown below:
If the plugin finds any running Everquest2 game(s), the Game Window: list contains those window handle(s). If the Game Window: selection is not blank, pressing the [Copy] or [Macro] button will also activate the selected game window. Once the game window is activated, the chat box can be activated by pressing the Enter key. (Enter is the default key binding. Use whatever key is set in Options->Controls->Chat Keys->Begin Chat.) The user can then press Ctrl-v to paste and Enter to complete the command.
With a game window selected in the list, the user sequence to paste the list into the game becomes:
- Click the [Copy] or [Macro] button.
- Press the
Enterkey to select the chat box in EQII. - Press the
Ctrl-vkey combination to paste the item into the chat window. - Press the
Enterkey to finish the command. - Repeat from Step 1 for the remaining items.
A keyboard-only sequence is available from Step 5 using Alt-Tab and Alt-m, Alt-c, and Alt-d, as follows:
- after Step 4 above, press
Alt-Tabto return focus to the share dialog. - then press
Alt-mto "press" the [Macro] button (orAlt-cto "press" the [Copy] button, orAlt-dto "press" the [Done] button). - the appropriate line is copied to the clipboard and the game window is activated.
- continue at Step 2 above.
The [Macro] button provides a quick way to activate the macro file(s) in the game chat window using the same process described above. The button is disabled if none of the items can go in a macro. An example macro file list is shown below:
All triggers for the selected category are shown in the Trigger pane.
Trigger details are available by clicking the + next to the regular expression. A context menu is provided via a right-click on a trigger, as shown below.
Double-click the Alert: or Timer or Tab name sub-items to edit just those fields.
When there is a spell timer:
- A search for the spell timer in ACT's Spell Timers (Options) window can be initiated via
- double-clicking or right-clicking the Trigger Timer line in the trigger pane,
- pressing the [Find] button in the Timer or Tab name edit dialog,
- or pressing the magnifying glass button
next to the Trigger Timer checkbox in the trigger edit dialog.
- The spell timer XML can be copied for sharing by right-clicking the Timer or Tab name in the trigger pane and choosing the appropriate menu choice.
To edit all of the trigger fields, double-click the regular expression. To create a new trigger, right-click in a blank area in the trigger pane or press the [+] button on the Trigger pane toolbar. Either action will open the Edit Trigger dialog.
Features of the edit trigger dialog:
-
If the Regular Expression or Category / Zone fields are changed, the dialog allows either replacing the original trigger or creating a new trigger. Editing other fields updates the existing trigger.
-
The paste clipboard button
at the end of the regular expression will recognize a log line copied from ACT's View Logs list and reformat the line to be a valid Regular Expression. -
While typing in the Regular Expression box, the text turns red if the expression is invalid.
-
Selecting text in the Regular Expression and right-clicking provides a context menu that can replace the selection with a capture group as shown below:
-
Capture groups in the Regular Expression are automatically added to the drop down list next to the TTS button. They may be inserted into the TTS expression via the insert button
to the right of the drop down.
The Category Group is the user-defined top level folder in the Category pane where the trigger Category / Zone resides.
The drop list will show all currently defined groups. To create a new group, edit the text box.
If an existing trigger's Category Group is changed, that entire category and all its triggers will be moved to the specified group. (This has the same effect as dragging the category from one group to another in the category pane.)
When the trigger's Add Results tab checkbox is checked, ACT adds a tab next to the Triggers tab under the Custom Triggers tab. The tab is named using the Timer / Tab Name and lists data from log lines that match the trigger.
When the Trigger pane results tab button
is pressed, the plugin will generate another view of the results tabs upon the occurrance of a trigger with a checked Add Results tab. The plugin's view is a popup stay-on-top window. Instead of tabs, the plugin stacks the trigger data in a single view. A demonstration with 2 tabs is shown below:
Items are added such that the newest one is at the top of the list of each tab. Tabs are ordered in the window such that the newest occurring tab or tab item is at the top.
The plugin just provides another view of the data collected by ACT. To clear a tab and remove it from the stack, it must be cleared in ACT with the appropriate tab's [Clear Items] button.
Closing the plugin's window also does not clear the data. When a new trigger occurs, the window will re-open showing both the old and new items.
Pressing the red [X] button on a tab will hide (actually, just not draw) any items with a Time Stamp older than the time when the button is pressed. The tab itself remains visible. The items are actually still in the list since they are still in ACT's list, so a scroll bar may show up when it looks unnecessary. Un-pressing the button will show all items again. A pressed button has the blue-ish background, like the bottom tab in the example above. Note that this button may not work as expected since ACT only stores the log line time and not the date. Any entries from a different date (like playing through midnight or importing an old log file) may not clear. Use ACT's [Clear Items] instead.
There is a minor difference between re-enabling a Results Tab using ACT's Custom Triggers tab [Add/Edit] button versus checking the checkbox in the plugin. In the plugin, if a previously disabled tab is re-enabled by checking the checkbox, any items that were present when the checkbox was unchecked are restored when it is re-checked. In ACT, re-enabling a disabled Results Tab creates a new empty tab.
The Edit All screenshot above also has the Show Encounters checkbox checked.
- When the Show Encounters checkbox is checked, the dialog expands to show a list of encounters on the left. Selecting an encounter displays a list of log lines for that encounter.
- To help find a potential trigger line, the log lines can be filtered by entering text in the Filter: area. The screenshot example has a filter of '\#', which shows lines with a color code.
- Check the By Regex box to only show log lines that match the regular expression.
- The context menu for a log line allows the following:
- Pasting it into the Regular Expression text box after formatting it as a valid regular expression.
- Testing it against the Regular Expression. When testing, any capture groups are appropriately replaced in a TTS expression and the spell timer (if set) is triggered.
- Creating a spell timer from the time difference between matching log lines.
The Show Time Differences context menu assists in creating an ACT spell timer from non-damage log lines. The conceptual example below is the result of selecting Show Time Differences given the filter unleash a barrage.
Pressing the [Make Timer] button creates a spell timer using the data on the right hand side and opens ACT's Spell Timers (Options) window with a search for that timer.
EQII macros won't handle certain characters and character sequences.
- The problem characters are:
' " ; < >
- The problem character sequence is:
\#
If sharing with players that do not use the TriggerTree plugin, these problem characters must be avoided. When sharing with TriggerTree users, all of the following problems can be avoided by pressing the alternate encoding button
in the Trigger panel toolbar if all users are using TriggerTree.
The Trigger pane shows which triggers and spell timers can be shared via macro by displaying the 'macro play' icon next to the checkbox for the regular expression and timer name. Triggers and timers that cannot go in a macro are missing the 'macro play' icon.
When editing a trigger, the problem fields are indicated by the red circled 'macro play' icon, as shown below:
The easiest work-around is for all players to use version 1.6 or newer of the TriggerTree plugin and enable the alternate encoding button
on the Trigger panel toolbar. The alternate encoding will allow all characters to be shared in a macro.
If alternate encoding is not possible, the following paragraphs describe some other possible work-arounds in ACT encoded macros.
In the cases where the zone name contains an apostrophe, there's not much recourse. It can't be shared in an ACT encoded macro.
But in many cases, it is possible to work around the problem characters by changing the trigger.
- If the trigger Regular Expression contains prohibited characters, it can often be rewritten to remove those characters. In many cases the offending characters can just be removed from the beginning or end of the trigger without affecting its usefulness. Example alternate approaches for when that's not feasable include:
Praetorian K'Tikrn gets sick- replace the apostrophe with a wild card period, becoming
Praetorian K.Tikrn gets sick
- replace the apostrophe with a wild card period, becoming
prepares to unleash a mighty barrage in (?<player>\w+)- replace the named capture group with a numbered capture group, becoming
prepares to unleash a mighty barrage in (\w+)
- replace the named capture group with a numbered capture group, becoming
You have infected your enemies with \\#FF0000Dark Incubation!- replace the
\\with a wild card period, becomingYou have infected your enemies with .#FF0000Dark Incubation!
- replace the
\\#FF9900You feel energized by Crystalline Destruction- just remove the slashes, becoming
#FF9900You feel energized by Crystalline Destruction
- just remove the slashes, becoming
says, "Bring on the rocks- replace the double quote with a wild card period, becoming
says, .Bring on the rocks
- replace the double quote with a wild card period, becoming
- If the trigger Alert or Timer or Tab name contain prohibited characters, they can often be written differently to exclude those characters.
- If the timer name, sounds, or tool tip contain prohibited characters, they can often be written differently to exclude those characters.
Note that if the spell timer Category contains prohibited characters, changing it may break functionality if the Restrict to category zone or mob checkbox is checked.
The Category context menu for spell timers searches for timers with a matching Category or Custom Tooltip. When the Custom Tooltip property is used to provide a match, any apostrophes in the category name may be replaced with a period and the match will still succeed. For example, a Custom Tooltip of Ssraeshza's Hallowed Halls [Raid] can be replaced with Ssraeshza.s Hallowed Halls [Raid] and the spell timer will be added to the Category context menu for Ssraeshza's Hallowed Halls [Raid]. This would allow the spell timer to be written to a macro.
With macro-valid triggers or timers, a context menu selection of the Raidsay Share Macro or Groupsay Share Macro menu will create a macro to share all available and enabled triggers and spell timers. Then in an EQII chat window enter /do_file_commands triggers.txt to share everything with the raid. Any invalid items are simply left out of the macro file.
The Share Dialog context menu provides a dialog for sharing via both macros and copy/paste.
EQII macros are limited to 16 lines. When sharing more than 16 items, multiple files are created. Items 1-16 are in file triggers.txt. Items 17-32 are in file triggers1.txt, etc. The Notifications tab in ACT lists which file(s) were used.
For ease of maintenance, the Visual Studio project consists of several separate c-sharp source files. ACT wants a single file for run-time-compiled plugins. The Visual Studio build process included in the project builds a DLL, then runs the merge_sources.py python script to merge the separate source files into a single source file. For development, debug, and testing, the DLL can be added to ACT as a plugin. But it is the combined source file in the single_source folder that is released and distributed via the [Get Plugins..] button and the update process in ACT.













