IfThen

Allows you to create your own IF THEN statements that will dynamically change the function of a button.
This addon is intended for people that have a basic understanding of programming. Specifically conditional If-Then statements.
The addon allows you to write your own if-then statements that will be evaluated and run whenever you press a button, or they can trigger on certain events ingame.
It provides a simple text editor, a fully documented API and some simple If-Then syntax so that you can string together almost anything you want to react to.

Examples:

Code:

IF HasOpenQuest("My daily fishing quest") AND InZone("Stormwind")
THEN Cast("Fishing");

Code:

OnEvent("GroupInvite") AND InLFGQueue()
THEN DeclineInvite() AND Reply("Sorry, I am already in the LFG queue");

%Itemlevel%, %ItemlevelTotal% and Report() will now calculate the correct itemlevel numbers even with items that are transmorgified or upgraded (credit to Phanx for pointing me in the direction of a solution).

Special thanks to Cassiopea-Doomhammer(EU) for helping me out with the testing ;-]

You can now separate IF-statements to run under different macros. Use the new MacroStart() and MacroEnd() functions (idea by balzakbr).
See the new 'MacroStart' section in '/ifthen morehelp' for more info.

General:

Added a searchbox to the Edit window. You can press TAB to jump between searching and editing.

Added a searchbox to the Morehelp window.

Added a new 'Minimal' feature. When enabled it will remove almost all the documentation from memory to reduce the addons footprint (about 20KB smaller).

Parser will now only print the first few possible values for an argument when it failes. This way you won't get insanely long error messages.

Updated FAQ with more questions and answers regarding macros and combat.

Updated Examples with renamed function names.

Bugfix:

Running both Countdown() and StopWatchStart() at the same time will no longer yield strange results.

HaveCritter() and HaveMount() functions are now working properly.

Updated functions:

Report() now support 'experience' as a type to output your current level and points needed for the next.

HasCritter() has been renamed to HaveCritter()

HasGlyph() has been renamed to HaveGlyph()

HasMount() has been renamed to HaveMount()

HasOpenQuest() has been renamed to HaveOpenQuest()

HasPet() has been renamed to HavePet()

HasTalent() has been renamed to HaveTalent()

New functions:

HaveAchievement()

HaveDurability()

Screenshot()

Emote() (idea from xzoner)

SetFlag() and Flag() -You can set and check the value of your own internal variables with these functions.

New events:

Added "Achievement" event that is triggered when you earn an achievement.

Updated variables:

%InstanceDifficulty% now returns 'Raid Finder' when you are in Dragon Soul LFR.

New variables:

%WatchedFactionName% -Name of the faction shown on the experience bar.