WoW’s taint system, addons, and why classic was so much easier.

There used to be a time in WoW’s history where one button could change to do everything you ever needed.  It could dispel on demand and target the person automatically, it could change depending on your ability cooldowns.   What you never see spoken in those we killed X boss 40 man videos…”with some people only using one or two buttons.”  Blizzard stopped allowing that with their “taint” system.

Probably few know about taint, but they probably know the effects of it:

  • Talent and glyphs won’t change.
  • Quest items on the Objectives tracker won’t work.
  • Random “[ADDON_ACTION_BLOCKED] AddOn” errors.
  • Raid frame issues in combat with people coming/going (targeting wrong people/missing frames/strata issues).

“When WoW starts executing lua code, the execution starts off ‘secure’, and able to run protected functions. Execution remains secure until it encounters ‘taint’ – which is an indicator that a function or object came from an untrusted (AddOn or /script) source. The basic idea is that execution becomes ‘tainted’ as soon as it reads tainted data or executes tainted code, and any data written by a tainted execution is itself tainted. Protected functions refuse to operate when called from an execution path that is not secure.” –

What that boils down to is if you can /reload and if something does work again then you “tainted” something previously.  I check for taint with my taintlog using “/console taintLog 1”.  Then I look for messages like action blocked or uidropdown.  I’ll use clique as an example.  It works perfectly until you bring up it’s setup.  Once you’ve done that you tainted the uidropdown global and everything starts downhill from there.  This is the message my taintlog shows after opening the clique setup menu (“/clique”).

You probably don’t realize it, but that UIDROPDOWN variable is called on any frame you have drop down menus.  Think right click drop downs or button drop downs.  That is a lot of frames that gets taint all because you decided to “/clique” without “/reload”.

Even the addons I use cause taint indirectly, but I know when they do it and I /reload afterwards.  Anytime you access the interface menu (Default is ESC > Interface) and have any addons it will taint the uidropdown global variable.  I get in the habit of /reload after I click the interface button and change anything.  I suggest you get in that habit too.

The addons I use not only perform a function, but outside of the interface menu don’t create taint issues.  I “/reload” every time I access the interface meu.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s