CasterWeaponSwapper

Note: This AddOn is currently retired. I am unlikely to update it or add support for new enchantments/weapons. Blizzard has made changes so that when you swap an item, the internal cooldown on any of its procs/buffs is reset. This means swapping in Val'anyr or a weapon with Black Magic wouldn't work; you can't avoid their internal cooldowns. Also, currently intellect is the main regen stat, and every weapon has intellect, so there is not a compelling reason to swap weapons based on mana level. This, combined with Blizzard's dislike for weapon/relic hot-swapping, means CasterWeaponSwapper is retired.

This AddOn swaps weapons based on your current amount of mana, to maximize mana efficiency. With this mod, you can start fights with a high intellect staff equipped, then switch to a +damage/healing weapon for most of the fight, and then switch to a spirit-heavy staff when your mana is low.

This AddOn is unique because is does this automatically, without interrupting you with a weapon-swap cooldown. Normally when you change weapons in combat, it cancels current spellcasts and causes a 1.5-second global cooldown. CasterWeaponSwapper gets around this by swapping weapons right after you cast instant spells, so the cooldowns overlap and you don't experience any interruption. It also will let you know when it wants to swap weapons with an (optional) popup, so you can cast an instant spell or trigger the swap manually. When out of combat, there is an option to swap weapons whenever necessary, since there is no swap cooldown.

The AddOn supports 1- and 2-handed weapons, off hand items, and wands/librams/idols/totems. You can set up weapon sets for high mana, casting, low mana, and sets for Druid forms. The casting set will only be used when in combat. The Druid sets will be used while you are shapeshifted into a bear or cat. There is also an option to use the low-mana set while you have spirit boosting buffs (Spirit Tap, Evocation, Innervate, and Aura of the Blue Dragon), and an option to swap between a secondary casting set to proc the Spellsurge enchant each time it is available in combat.

(For more information on Spellsurge, check out the excellent "A Guide to Spellsurge in Endgame PVE" by Aredia/Aeix. It has fallen off the WoW forums but you can find it in Google's cache: http://www.google.com/search?q=%22A+Guide+to+Spellsurge+in+Endgame+PVE%22 )

This AddOn will work in any language version of WoW. The user controls are in English.

To use the AddOn, type /cws or /casterweaponswapper to open the config window.
* You can set up the weapon sets by dragging and dropping weapons to the icons.
* You can pick the mana threshold values used for swapping via the sliders.
* You can turn the mod, and some features, on and off via the checkboxes.
* Settings are saved for each character that uses the AddOn.

Once set up, you can type /cws on|off|toggle to turn weapon swapping on or off. You can also trigger a manual check for any desired swaps via /cws swap, or by using the keybinding available in the keybindings menu.

I hope you find this mod useful. Feedback and suggestions are always welcome!

Website:
http://wikwocket.wowinterface.com/portal.php
Contact info:
Please contact me by email (wikwocket@gmail.com), PM, or by leaving comments on an AddOn site. This is much preferable to trying to contact me in-game.

CasterWeaponSwapper 2.5 (WoW 2.4.3):
* Checked mod for compatibility with Wrath of the Lich King beta.
** Fixed an error that could happen under WotLK (when swapping a 2-handed weapon in for a mainhand/offhand) by improving how empty bag slots are used.
* Changed how the "reminder to swap" popup works:
** Added a checkbox to enable or disable the popup.
** Added a delay on the popup, so that if you cast an instant spell within 5 seconds of when the mod wants to swap weapons, you won't see the popup.
* Tweaked the UI frame to allow for more options in future versions.
* Added Power Infusion and Pain Suppression as non-cooldown abilities (instant-cast abilities the mod will not try to swap right after).

CasterWeaponSwapper 2.4 (WoW 2.4.3):
* Updated to accomodate 2.4.3's change, where swapping weapons cancels spellcasts:
** In combat, the mod now only swaps after instant-cast and channeled spells, which are not interrupted.
** When the mod needs to swap in combat, if it doesn't see an instant-cast spell, it will pop up a little notifier, so you can trigger the swap (and the resulting cooldown) when it's most convenient.
** To trigger the swap, you can cast any instant-cast or channeled spell, or click the button on the notifier, or use a macro that says "/cws swap", or use the keybinding available in the keybindings menu.
** The popup notifier can be moved anywhere on the screen by dragging it.
** This is a quick fix version, which I hope to refine over time. I know the popup may be a little annoying for now and that the mod may still interrupt casts out of combat; I plan to work on this.

CasterWeaponSwapper 2.3 (WoW 2.4.2):
* Updated localization code to use GetSpellInfo() and GetItemInfo(). This should allow the mod to work in all locales without further translation!
* Added Divine Illumination to the list of spells not to swap after, since it does not cause a global cooldown.
* Fixed a bug in Spellsurge detection that occurred in special cases.

CasterWeaponSwapper 2.2 (WoW 2.4.1):
* Updated code to not swap weapons when casting non-cooldown spells, like Inner Focus, Divine Favor, and Natures's Swiftness. This should avoid unnecessary cooldowns. For a full spell list, look in localization.lua.
* Updated Spellsurge detection to be more reliable, by checking COMBAT_LOG_EVENT_UNFILTERED directly instead of using CombatLogGetCurrentEntry().
* Removed old 2.3 Spellsurge support.
* Improved empty bag slot detection by using new 2.4 function GetContainerNumFreeSlots().
* Improved icon code by using new 2.4 function GetItemIcon().

CasterWeaponSwapper 2.1 (WoW 2.3.3):
* Updated Spellsurge detection to continue to work after patch 2.4.
* Reinstated Evocation support: Although it's is no longer spirit-based, swapping to regen weapons does increase base regen while channelling, especially due to one regen tick outside the 5-second rule (Thanks Samasnier). To disable swapping, you can uncheck "Swap to low mana set for spirit boosts."
* Added localization for Spanish WoW client. Spellsurge support is not localized yet, and after 2.4 won't need to be.
* Updated swapping messages and error messages so they will not spam the chat log.
* Updated to not swap weapons when you have an item on the cursor, so you can move items without interruption.

CasterWeaponSwapper 2.0 (WoW 2.3.3):
* Updated to use item links instead of item names! This means that:
** You can now swap between two items with the same name but different enchants/gems.
** Old settings are preserved; existing weapon selections will be equipped by name. If you reconfigure the weapons, then item links will be used.
** All new weapons configured will show full tooltips in the config panel, instead of just their names.
** There is also a new chat notification when you add a weapon to a set.
* Updated Druid support to recognize cross-form shapeshifts (bear to cat, etc) and swap weapons appropriately.
* Updated Druid support to not swap weapons immediately after unshifting, and to wait for the next spellcast, to avoid causing an extra cooldown.
* Updated spirit boost code: now after a spirit boost is over, the code waits for the next spellcast to swap away from regen weapons, to avoid causing an extra cooldown.
* Removed Evocation spirit boost support, since Evocation is no longer based on spirit.
* Updated to use ClearCursor(), to prevent leaving a weapon on the cursor, and resolve some UI taint issues.
* Update reports to include percentage of time spent with High Mana set.
* Added French and German localization for Spellsurge ticks (thanks Nightdruid, Singura, and others).
* Made many small optimizations to the code.

CasterWeaponSwapper 1.91 (WoW 2.2.2):
* Added ability to distinguish your Spellsurge procs from other procs.
** The mod now tracks your own Spellsurges, so it should not unequip your Spellsurge weapon when someone else's procs.
** Post-fight reports now list the number of your own Spellsurges, as well as all Spellsurges.
** This is not yet localized; I need to know what the French and German clients say when you gain 10 mana from Spellsurge.
* Made the color of post-fight reports customizable. To change it, open CasterWeaponSwapper.lua in a text editor and look for the variable "REPORTCOLOR" near the top.
* Reduce memory usage for reports via small fix.
* Fixed typo in French localization for gaining Spellsurge.

CasterWeaponSwapper 1.9 (WoW 2.1.3):
* Localized Spellsurge support into French and German (thanks Zwiebelchen and Krakoukass).
* Fixed localization for Druid bear form detection in French (thanks Krakoukass).
* Added reporting on mana usage after long fights.
** After a fight of more than 2 minutes, you will see:
** Time spent inside and outside the five second rule.
** Time spent with various weapon sets equipped.
** Number of times Spellsurge procced.
** Reporting defaults to "on" but can be turned off by checkbox.
** Note: five second rule detection is approximate.
* Fixed a bug where the mod would not re-try failed swaps.

CasterWeaponSwapper 1.8 (WoW 2.1.1):
* Added recognition of Swift Flight Form for Druids (The low-mana set is used for all travel forms).
* Added a Spellsurge set, for the Spellsurge weapon enchant:
** The Spellsurge enchant has a 50 second cooldown; while it cools down after a proc, another weapon can be used.
** A main hand (with Spellsurge) and off hand can be entered in this new set (the casting ranged weapon is used).
** In combat, the mod will swap from the casting set to this set (if enabled) until Spellsurge procs.
** After each Spellsurge proc, the mod will swap to the casting set until Spellsurge has cooled down.
** Note that it may take several casts to proc Spellsurge each time the set is activated.
** Spellsurge support is not yet localized. To do so, I need to know what the combat log says when it procs.

CasterWeaponSwapper 1.7 (WoW 2.1.0):
* Rewrote buff scanning code to be more efficient, by using UnitBuff instead of tooltips.
* Added code to swap from one offhand to another more reliably, by working around item slot locking caused by unequipping offhands to specific bag slots.
* Fixed a checkbox's tooltip text.

CasterWeaponSwapper 1.6 (WoW 2.0.12):
* Updated swapping code to remember which bag slot it picks up offhand items from, and try to place them back there when swapping them out. (Suggested by Wickwrackrum at curse-gaming.com)
* Updated swapping code to not swap weapons after dying as a Priest and becoming a Spirit of Redemption, to avoid wasting 1.5 seconds of your posthumous healing with a global cooldown.
* Updated swapping code to not swap due to mana changes if experiencing a spirit boost. So during an out-of-combat Evocate or Innervate, the low mana weapons should stay equipped for the duration. (Suggested by Myrddin)
* Added recognition of Flight Form for Druids (The low-mana set is used for all travel forms).

CasterWeaponSwapper 1.5 (WoW 2.0.2):
* Updated for WoW 2.0.2.
* Due to how events are handled in the expansion, in-combat swap checks will also be made when you fire a wand or use an item, since they also trigger the global cooldown.
* Removed Soul Siphon from list of spirit-boosting buffs, since the talent Improved Drain Soul was changed.

CasterWeaponSwapper 1.4 (WoW 1.12.1):
* Added another Druid weapon set: now there are separate sets for bear form and cat form. Moonkin form will be treated the same as caster form, and travel forms will use the low mana set for regen.
* Updated combat-swapping event support, so that the mod will once again check for weapon swaps when you use an instant-cast spell.
* Added a checkbox option for turning the swap messages on or off.

CasterWeaponSwapper 1.32 (WoW 1.12.1):
* Localized support for druid forms, spirit buffs, and other minor fields for French and German WoW. Please let me know if these features work in the foreign-language clients.
* Updated Druid support: Druid set will be used for bear and cat forms, and Moonkin form will be treated as caster form (so swaps will still occur in that form).
* Fixed a bug with picking items up from character sheet.
* Updated buff detection code to be more robust.

CasterWeaponSwapper 1.3 (WoW 1.12):
* Redesigned the interface to use icon buttons instead of text - now you can drag and drop items into the sets! Existing item sets will be preserved, but weapons will use a default icon until you drag the actual item into the set.
* Added a fourth item set, for Druid forms. Added an option to swap to this set while in any form.
* Added an option to swap to the low mana set while you have a spirit-boosting buff (Evocation, Innervate, Spirit Tap, Improved Drain Soul, or the Blue Dragon card proc).
* Rewrote all of the swapping status code - this allows for better detection of conditions like Druid forms, spirit boosts, death, etc, as well as choosing the right item set to use in a given case. This will also allow me to add support for Spirit of Redemption form and battlegrounds.

CasterWeaponSwapper 1.2 (WoW 1.12):
* Added support for recognizing Benediction/Anathema regardless of which state it's in.
* Rewrote all of the weapon swapping code - this should remove the possibility of failed swaps and conflicting swaps.
* Changed the event used for combat-swapping to SPELLCAST_START. This should prevent the bug where a swap would occur on the completion of a spell instead of at the beginning. Note that this means the mod will no longer swap when you cast an instant-cast spell.

CasterWeaponSwapper 1.1 (WoW 1.10):
* Updated TOC number.
* When out of combat, the casting set is now ignored. Only the low mana (regen) and high mana sets will be used.
* Added an option to perform swaps automatically based on mana level when out of combat. While in combat, swaps will still only be performed when you start to cast a spell. (Suggested by ThantiK at curse-gaming.com)
* Added code to not swap weapons while shapeshifted (when you have no mana). Hopefully this will work better for Druids. (Suggested by emb at curse-gaming.com)
* Incorporated WeaponQuickSwap fixes to prevent stack overflows and wait for complete item unlocking.
* Improved weapon swapping code's detection of bags that can't hold weapons (quivers etc).
* Disabled event handling while zoning, to improve loading times.

CasterWeaponSwapper 1.0 (WoW 1.9.4):
* Initial release.
* Special thanks go to CapnBry for writing WeaponQuickSwap and releasing it in the public domain.

I've been meaning to make a post about updating CasterWeaponSwapper. The short version is that I am unlikely to update it, or add support for Black Magic or Val'anyr, for two reasons.

First, Blizzard has made changes so that when you swap an item, the internal cooldown on any of its procs/buffs is reset. This means swapping in Val'anyr or a weapon with Black Magic wouldn't work anymore; you can't avoid their internal cooldowns.

Second, currently intellect is the only real regen stat (Replenishment and other regen effects are based on mana pool), and every weapon has intellect, so there is not a compelling reason to swap weapons based on mana level.

It's unfortunate, but it seems that Blizzard does not want weapon or relic hot-swapping to be possible, and so there is not really anything worth adding to CWS.

I just updated CWS. This new version should be WotLK-ready, and should also address the issue of the popup being kind of spammy. Sorry for the delay before this version's release. Let me know if there are any problems in 2.4.3 or 3.0.2!

The swapping is working kind of good for me as a priest since many of my spells are instant or channeled, so is it possible to add a funktion that takes away the "swap now" button thats pops up? I dont really need it.

And it would be great to add wanding to trigger a weapon-change as well, I usually leave cws on even during grinding

Have you considered adding "profiles" to this mod? I play a priest and on weekends I respec smite. I use this mod for both Healing and Smite DPS, but have to swap everything out each time I re-spec. Profiling of some sort would be awesome for this.

Just a note that I am aware CWS will not work very well in 2.4.3, due to the change that swapping gear will interrupt spellcasts. I have some good ideas on addresisng this and am half-way through coding them up. Hope to have an update out soon!

I wanna use the spellsurgeset from start of fight, then swap to casterset until SS-CD is of. Then if I get a temporary spiritboost, swap to highspirit-set, but ONLY on spiritbuffs, not after exiting combat.
The only way I got the spirit-set not getting equipped each time I leave combat is to set all sliders to zero. But then the spellsurge-set never get equipped since I always use the high-int-set, right? It seems to only work with caster-set.
If i set the high/caster-sliders to 100% I always use the casterset and the spellsurge-swapping works great, but then the spirit-set gets equipped every time I leave combat, and its very annoing.

Im currently using no spiritboost-swapping and have set the high/caster-slider to 100% and the caster/spirit-sliders to 0% to get the spellsurge-set working, but would really like to get the spiritset equipped on spirit-boosts (ONLY on spiritboosts)

At this point I am not sure about the future of CWS. I will do some tests on the PTR's when able. There may be a way to preserve some of the functionality, but not all.

Originally posted by nthomas5143 It was a great addon, but unfortunately the next patch will be breaking caster weapon swapper. By making any item swap while casting to cause the spell to immediately cancel.