PQRotation (PQR)Edit

PQRotation (PQR) is an all-in-one ability rotation application. It uses both simple memory reading as well as a memory detour to execute Lua code. It requires absolutely no setup* (read beta notes).

  • No addons to configure.
  • No pixel scanning to hinder performance.
  • Easily customizable and shareable abilities and rotations.

This program was mainly designed for PVE purposes, however it can easily be configured for PVP purposes as well. It will perform your currently selected rotation as perfectly as is possible, leaving the user to monitor more important things such as fight mechanics and anything else that might be happening in the party/raid. Each rotation is 100% configurable, and each ability can be assigned Lua code (protected or otherwise) that it will execute to determine if a spell should be cast. It also has a basic interrupt bot built in that allows you to interrupt ability that is interruptable (it will not try to interrupt non-interruptable abilities). If you like this program, please consider donating to the owner!

Community Supported ProfilesEdit

Community members may update the following pages with links to their post's which contain their profiles:

Death Knight Rotations

Druid Rotations

Hunter Rotations

Mage Rotations

Monk Rotations

Paladin Rotations

Priest Rotations

Rogue Rotations

Shaman Rotations

Warlock Rotations

Warrior Rotations

You can find a actual List which contains many  for the actual Patch here

Run PQRUpdater.exe in a new or current PQR directory to download the latest version of PQR.


  • If you're upgrading from a previous version of PQRotation please note that older profiles before v1.0 will NOT work with the current version! It's recommended to wait until your favourite profile's creator have updated their profiles. If you feel brave enough to do this yourself, see the changelog for version 1.1
  • If you're upgrading to a newer version of PQRotation after using a older version during the same World of Warcraft session, you should exit the older version and reload your interface (/reloadui, /rl or /console reloadui), then load the new version to avoid any in-game conflicts!

Manual Download Only:  .همه ی لینک ها خرابن!! تلاش نکنید!

*NOTE: Since you are downloading an EXE directly, some web browsers may consider it malicious.

If you are unable to use the updater, you may download PQR.exe and PQR.exe.config directly.

If you need to download offsets directly, the list of offsets can be found here .

You will need to download from this link:

Simply add the XML file name to the end of that URL. Ex: Offsets_15050.xml

Would be:


[CHANGE] Updated PQR_IsMoving(x) - it will now work anywhere regardless of a map being present or not. Profile developers can now also change the movement reset time on a global basis. Previously it would take 1 second to be considered not moving after having been previously considered moving. You can now make it reset to not moving after having stopped moving for a shorter or longer amount of time. Add this line to an ability in your rotation:
PQR_ResetMovementTime = 0.3
This will cause the 1 second reset timer to change to 0.3 seconds. Note that this will effect your entire rotation, not just single abilities. This is reset to the 1 second default when changing rotations.

[UPDATE] No longer limited to 256 abilities combined between all rotations per class. 
[BUGFIX] Fixed manual mode not displaying a message in chat.
[UPDATE] Included many profiles from the last couple weeks, sorry if I missed yours! We are now using the PQRotation wiki for sharing profiles.

I recommend that the average user does not upgrade until their favorite profiles have been updated for this version.
NOTE: To convert older profiles to new profiles you need to rename them in this format: Prefix_CLASS_Abilities.xml and Prefix_CLASS_Rotations.xml

Included Rotations (Feel free to leave feedback on the quality of included rotations):
- Death Knight by Bubba
- Hunter by kickmydog
- Paladin (Ret) by Xelper
- Paladin (Prot) by Xelper

Sheuron's Profile Pack:
Arcane Mage
Combat Rogue
Frost Mage
Fury Warrior
Holy Priest
Marksman Hunter
Prot Warrior
Sub. Rogue

- NEW: Ability Option: "Perform Before (Lua)"
- NEW: Ability Option: "Perform After (Lua)
- NEW: Rotation Option: "Rotation Notes"
- NEW: Rotation Option: "Combat Requirement"
- NEW: Allow rotations to designate combat requirement, this is the default setting.
- NEW: Lua syntax highlighter.-NEW: Multiple profiles per class.
- NEW: Ability to copy rotations, abilities and profiles.
- BUGFIX: Fixed bug with auto upgrading old profiles (using the old "Self Cast True/False") to new profiles using a Target modifier.

- BUGFIX: SetMapToCurrentZone() will now fire at profile load so that PQR_IsMoving works if the program is loaded for the first time during a boss fight.
- NEW: Now supports multiple Offsets.xml files.
- Maintenance: This build includes Offsets for 14545 (Live) and 14809. New offsets can be added simply be downloading an XML and placing it in the folder with the other Offset XML files.
- Maintenance: Drastically reduced the number of offsets that need to be updated from 18 down to 7. (Most were leftover from pre-public release builds that worked a little bit differently, but were still being used.)
- Maintenance: The injected detour and ClntObjMgrGetActivePlayerObj both use FindPattern, the latter is not yet tested with other PTR builds but it works for both live and PTR (14809), the pattern search can also be overwritten by using <ClntObjMgrGetActivePlayerObj>Value</ClntObjMgrGetActivePlayerObj> if the pattern does fail in future PTRs.

- BUGFIX: Changing instance 'floors' will no longer break PQR_IsMoving(x) function. 
- NEW: 'Cancel Channel' functionality. This will allow individual abilities when flagged as 'True' to be cast while channeling a spell. 
- NEW: Added F1-F12 hotkeys.
- NEW: Offsets are now stored in Offsets.xml for updating for PTR purposes. (If you know how, feel free to update them and post PTR updates! :) I have them named fairly simply, in my opinion.)
- NEW TARGET: "Custom"... you can now specify a custom target in your Lua code BEFORE returning true. This will allow you to target specific mobs not on the "Target" list by default... example: boss1, party1, etc.

PQR_CustomTarget = "boss1"
	return true

-NEW FUNCTION: PQR_IsOutOfSight([unit], [seconds]) - Returns true if a "Target not in line of sight." error has popped up for the specified unit in the last 3 seconds. Unit can be any unit (player, target, mouseover, etc.). Seconds can be any number down to 4 decimal place precision. NOTE: You will only get a single "Target not in line of sight" per unit per 3-5 seconds depending on other red text errors that have popped up. This is as good as can possibly be done, sorry! If you can find any other way to handle this please let me know and give me Lua code examples.

if PQR_IsOutOfSight() then
    --"target" has been out of sight in the last 3 seconds.

if PQR_IsOutOfSight("mouseover", 10) then
    --"mouseover" has been out of sight in the last 10 seconds.

- BUGFIX: "mouseover" target option now targets the spell at your mouseover and not your pet.

- Updated for patch
- PQR_IsMoving(seconds) should now return false if you have molten feathers. (Untested)

- NEW: Smart Hotkey Mode- click the 'Help' button on the Show Settings page for more information.
- Smart Hotkey Mode note: Recast Delays are currently applied to all 4 rotations, so if you have a delay in Rotation 1 it will also be applied to Rotation 2 if the ability is in both rotations.
- Smart Hotkey Mode note: It is HIGHLY recommended that you do not use the default provided function name for this functionality. You can change this on the Show Settings page.
- NEW: You can now run multiple PQRs. Rotation/Interrupt Hotkeys are based on which WoW has focus.
- NEW: 'Mouseover' Target Mode
- NEW: 'Click' Target Mode (Targetted AOE Spells, clicks at mouse location)
- NEW: Interrupt Delay Option
- NEW: Enable/Disable Combat Requirement Option
- BUGFIX: Will no longer try to interrupt your target if is not attackable.

- Added a 'Pet' cast option.
- Delay is now functional for instant cast abilities (Example: Serpent Sting, to prevent casting more than 1.)
- Code optimization.

- Configurable Hotkeys for 4 rotations and interrupt mode.
- Customizable Sounds (this will be updated, I am looking for better WoW sounds to add... but for now it will do!)
- Ability Editor: "Self Cast" option has been changed to "Target." Allows you to specify the target for the spell, current options are: Target, Player, Focus. Old profiles will be automatically updated when an ability is saved.
- Vanish will now trigger a .5 second delay when the cast request is sent.
- Added Warlock Rotations (thank you crystal_tech)
- Added Shadow Priest Rotation (thank you mentally)

- Should fix WoW freezing issue.

- You can now change the casting rate via Settings (main form). This is the rate at which the bot checks if a spell is available to cast and attempts to cast it. Interrupts are not effected by this.
- Sending a Vanish cast (either manual or otherwise) will now result in the bot delaying for 0.5 seconds before continuing.
- Shortened version numbers to: Major.Minor.Revision... too many numbers before!
- WoW Lua: PQR_IsMoving(seconds) - returns true if the player has been moving for X seconds(down to 4 decimal place, 1.245 = 1 second 245 ms). Player is considered stationary if they have been standing in one spot for > 1 second.
- WoW Lua: PQR_NotBehindTarget() - returns true if the player is not behind the target. This only returns true if you try to cast a spell that requires you to be behind the target first, and is good for 3 seconds. So, you can now add "Shred" or "Backstab", as follows:

if PQR_NotBehindTarget() then
    return false
return true

-Fixed channeling issue. Typo on my part checked if you had been channeling and had LESS than 150ms left on the channel, it should have checked if you had GREATER THAN 150ms left on the channel.
- Warriors preset priorities now check spell ID rather than name of buff.
- Added Destro Lock default.
- Internal improvements. 
- Added an internal "Drop Threat" check. If player attempts to cast Feign Death or Divine Shield (threat drops/emergency buttons on GCD) but fails because they are on GCD the bot will delay .5 seconds. This allows the player to hit the key a few times and have it cast. Please post a list of any other relevant abilities you would like added (threat drops and emergency spells only, please.)
- Added a "Recast Delay" option for individual spells... this will force the bot to not recast a spell for X milliseconds (example: Immolate, gives the server time to put the Immolate Debuff on the mob so you don't recast it again immediately)... this will only work for spells with a cast time, but any spell without a cast time should be convered by the GCD so it shouldn't matter anyways.
- Added a "Force Selfcast" option for individual spells. Spells will be specifically casted with you as the target if selected.-If you close your WoW PQR will now close as well.
- Added scrollbars to the Lua editor (yay).
- No more crashes on zoning.
- No longer auto-disables when zoning.
- Significantly reduced the number of Lua calls being made per cycle.
- Minor code cleanup. 
- Settings (Interrupt List, Interrupt All, and the Primary and Secondary Rotation selections) have been finalized and will no longer reset each build.
- NOTE: There is a very very minor chance to crash when you zone if Bot Mode or Interrupt Mode is enabled while zoning, you should disable Bot Mode or Interrupt Mode if enabled before zoning. If all goes well with this build this bug should be non-existent in future builds, please let me know of any issues.
- SpellAvailable check will now check if a spell is being channeled (with more than 150ms left on the cast) and if IsSpellUsable().
- Fixed typo in default warrior abilities. Fixed localization issues:-UnitBuffID(unit, spellID, filter) and UnitDebuffID(unit, spellID, filter) can now be used just like all other WoW Lua. The returns for these 2 functions are identical to UnitBuff() and UnitDebuff().
- Interrupt Mode will now CastSpellByID instead of CastSpellByName("EnglishSpell")... so will now work with all localizations.
- Fixed random bot stopping issue*. (*: Should be fixed, was unable to reproduce while testing.)
- Internal Debug Version, no changes.
- Switched to new memory detour, no longer requires DX9.
- Cleaned up some code and crashing bug should no longer occur when you zone.
- Initial Release.

Last Updated By: --Mentally 09:02, November 29, 2011 (UTC)