Buff Filters


By default, filters are not enabled. There are two checkboxes on the Filters tab in the SBF configuration. The first checkbox enables all filters except for those that act on buff time remaning. Enabling filters causes SBF to consume a little more processing time and memory. In the case of this first option, the extra processing time only occurs when you gain or lose a buff (or debuff,) and so for all but a few users, you will not notice any performance difference unless you look at a display of how much system resources SBF is using.

You must explicitly enable filters that act based on a buff's remaining duration via the second checkbox. Again, this will cause SBF to consume more processing time and memory. In this case, the extra processing time occurs once per second, when your buff timers update. For some users with low-end systems, you may actually notice a difference in performance if you have a lot of filters and a lot of buffs up. Again, though, for the great majority of users, you won't notice a difference unless you are looking at a resource display.

(The following text all appears in the "Filter Help" window in game as well)

Filter Help

A filter is of the form {frame}:{command}{modidfier}{parameter}

The filter has 4 parts:
frame - the frame that the buff will be sent to if the filter is applied
command - what property of the buff the filter will operate on
operator - how the filter will compare
parameter - what the filter will compare against

An example: 3:D>20

In this example, the parts are (more details about these on the next pages):
3 - The buff will be sent to buff frame 3
D - The filter will look at the buff's duration in minutes
> - The filter will use a 'greater than' comparison
20 - The filter will compare against 20 minutes

So, the filter 3:D>20 means 'Place any buffs with duration more than 20 minutes into buff frame 3'

Commands:
n: Filter by name (not case sensitive)
tt: Filter by tooltip description text (not case sensitive)
D: Filter by buff duration in minutes
d: Filter by buff duration in seconds
r: Filter on buff's remaining time in seconds
R: Filter on buff's remaining time in minutes
a: Auras (buffs with no duration: paladin auras, aspects, etc.)
e: Filter temporary item enchantments
tr: Filter the tracking buff
to: Filter your totems (for the shaman who owns the totems)

my: Filter buffs that you cast

By default only buffs are filtered. You must include the h command to filter harmful buffs (debuffs). The h filter has several forms:
h by itself will filter all debuff types
hc filters curses. (e.g. 3:hc)
hd filters diseases. (e.g. 4:hd)
hm filters magic. (e.g. 5:hm)
hp filters poison. (e.g. 6:hp)
hu filters debuffs with no type (untyped). (e.g. 3:hu)
ha filters debuff types you can dispel. (e.g. 4:ha)

Operators
= exact match (used with n)
~ partial match (used with n,t)
< less than (used with d,D,r,R)
<= less than or equal to (used with d,D,r,R)
> greater than (used with d,D,r,R)
>= greater than or equal to (used with d,D,r,R)

The negation (logical not) operator, !, is used with the n, tt, h, and a commands:
a! means 'buffs that are not auras' (that is, buffs that have durations)
n!~elixir means 'buffs that do not contain elixir in their name'
n!=arcane intellect means 'not the Arcane Intellect buff'
tt!~intellect means 'buffs that do not contain intellect in the tooltip text'
h! would mean 'buffs that are not debuffs'

Parameters
String - The n and tt commands take a string that is either used to partially match (~ operator) or exactly match (= operator) the name or tooltip text of the buff
Number - The D, d, R, and r commands take a number that is used to compare against the buff's duration or remaining time
The a, e, h/hc/hd/hm/hp/hu/ha, tr, and to commands do not take any parameters

What Buff Goes Where?
Before any filters are run, all buffs are checked against the list of buffs that you have set to appear in a specific buff frame using the 'Show in buff frame' option in the buff popup menu. If a filter is not putting a buff in the frame you think it should be in, check that you haven't set it to go to a specific frame that way

Once the list of buffs with specific frames has been checked, filters are run in the order that they appear in the filters list. If your first two filters are 3:n~Elixir and 5:r<60, then 'elixir of mastery' will always appear in buff frame #3, even when it has less than 60 seconds remaining. Select a filter in the list and use the Up and Down buttons to arrange filters in the order you want them to be applied in.

Combining Filters
You can make combinations of filters using logical and {&} and or {|} operators, and using parentheses to force grouping.

Using the or Operator {|}
n~elixir|n~flask will be true if the name of the buff has 'elixir' or 'flask' in it
a|n~flask will be true if the the buff is an aura or has the word 'flask' in its name

Using the and Operator {&}
n~flask&R>60 will be true if the name of the buff has 'flask' in it and its time remaining is more than 60 minutes
h&r<20 will be true if the the buff is a debuff and has less than 20 seconds remaining

Grouping with Parentheses
Filters within parentheses are evaluated as a group, before being evaluated against the other terms in the filter, just like order of operations in math. You may nest parentheses as deeply as you want

Simple Filters
4:n~elixir
Filter 'Adept's Elixir', 'Elixir of Mastery' and so on into buff frame #4

3: D<=3
Filter all buffs of duration less than or equal to 3 minutes into buff frame #3

4:a
Filter all auras into buff frame #4

6:h&r<20
Filters all harmful buffs (debuffs) with less than 20 seconds remaining into buff frame #6

3:e
Filters all temporary item enchants (sharpened, wizard oil, windfury totem, etc.) into buff frame #3

Complex Filters
a&(n!~aura&n!~aspect) will be true if the buff is an aura that does not have 'aura' or 'aspect' in its name
- The first result evaluates a -- is the buff an aura?
- The second result evalusates (n!~aura&n!~aspect) -- does the buff name have neither 'aura' or 'aspect' in its name?
- If the first and second results are both true, then the filter is true for the buff

a|(n~flask&R>60) will be true if the buff is an aura or the buff name conatains 'flask' and has more than 60 minutes remaining.
- The first result evaluates a -- is the buff an aura?
- The second result evaluates (n~elixir&R>60) -- does the buff name contain 'flask' and have time remaining greater than 60 minutes?
- If either of the first or second results are true then the filter is true for the buff.

((n~elixir|n~flask)&R<10)&n!~fortification will be true if the buff has 'elixir' or 'flask' in the name, has less than 10 minutes remaining, and does not have the word 'fortification' in its name.
- The first result evaluates the innermost parentheses (n~elixir|n~flask) -- does the buff name contiain 'flask' or 'elixir'?
- The second result evaluates R<10 -- is the time remaining less than 10 minutes?
- The third result is true if the first and second results are both true, and completes evaluation of all the terms in parentheses -- ((n~elixir|n~flask)&R<10)
- The fourth result evaluates n!~fortification -- does the buff name not contain 'fortification'?
- If the third and fourth results are both true, then the filter is true for the buff.