PoisonSwapper
PoisonSwapper manages weapon swaps for maximum poison damage by automatically swapping in a weapon with instant or wound poison to your offhand when you have a 5 stack of Deadly Poison up with more than 5 seconds remaining. This allows you to use a damage poison, like Wound or Instant as is appropriate to your spec in order to achieve maximum throughput.
This can result in a 300 DPS gain for a BIS combat rogue, and a 600 DPS gain for a BIS Mutilate rogue.
To use it, just poison your primary offhand with Instant or Wound Poison as appropriate, and a secondary offhand with Deadly. Your Instant/Wound hand should have better uptime, so you generally want that weapon to be your better one, and your Deadly weapon should be fast, due to Deadly's flat 30% (before talents) proc rate. The mod does the rest and automatically swaps weapons for you. You can toggle it on and off with /ps, or by clicking the included LDB entry.
PoisonSwapper supports a PVP mode, as well, which will equip poisons with the priority: Crippling -> Mind Numbing (If caster target. This includes ret paladins and enhance shaman at the moment, unfortunately) -> Damage Poison. It is automatically enabled against PVP targets, and can be forced on (for something like faction champs) with /ps pvp. Do be aware that in a PVP environment, where poisons are often removed, this will cause you to be on the GCD a lot and might potentially be an overall strategic loss. Usage is left to the user's discretion.
- /ps boss - Toggle on boss-only. Boss-only will only use Deadly poison on boss mobs, damage poison on others. Default Off.
- /ps debug - Toggle debug mode. Can help identify why the addon may not be working. Default Off.
- /ps [pvp/pve/auto] - Force PvP, PvE, or Auto mode. Default is Auto.
- /ps toggle - Toggle PoisonSwapper on and off.
- /ps time <number> - Set the number of seconds at which to swap back to your primary poison. Default 5.
Finally, PoisonSwapper includes an intelligent swing estimator, and will attempt to only equip weapons immediately following a white mainhand swing. Changing weapons resets your swing timer on both hands, so swapping halfway through a mainhand swing timer is rather expensive. This causes PoisonSwapper to produce superior overall DPS compared to poison swapping macros or manual swapping.
Date: 2009-11-11 19:42:12
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\PoisonSwapper\PoisonSwapper.lua line 53:
attempt to index local 'poison' (a nil value)
Debug:
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:53:
PoisonSwapper\PoisonSwapper.lua:52
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:134: ExecuteSwap()
PoisonSwapper\PoisonSwapper.lua:244: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4
[C]: ?
[string "safecall Dispatcher[1]"]:13: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:120:
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:119
[C]: TurnOrActionStop()
[string "TURNORACTION"]:4:
[string "TURNORACTION"]:1
AddOns:
Swatter, v5.6.4424 (KangaII)
Atlas, v1.15.1
AtlasBattlegrounds, v1.15.1
AtlasDungeonLocs, v1.15.1
AtlasOutdoorRaids, v1.15.1
AtlasTransportation, v1.15.1
AtlasLoot, vv5.08.06
AtlasLootFu, vv5.08.06
Babylonian, v5.1.DEV.130
Bagnon, v2.12.0
Carbonite, v3.22
ClassTimer, v2.3
Configator, v5.1.DEV.190
DBMCore, v
DBMOnyxia, v
DebugLib, v5.1.DEV.130
Informant, v5.6.4424 (KangaII)
NugComboBar, v
Omen, v3.0.8
PoisonSwapper, v0.1
Recount, v
Stubby, v5.6.4424 (KangaII)
Titan, v4.3.0.30200 - Revision 316
TitanBag, v4.3.0.30200
TitanClock, v4.3.0.30200
TitanCoords, v4.3.0.30200
TitanGoldTracker, v4.3.0.30200
TitanLootType, v4.3.0.30200
TitanPerformance, v4.3.0.30200
TitanRegen, v4.3.0.30200
TitanRepair, v4.3.0.30200
TitanXP, v4.3.0.30200
TrickOrTreat, v
XPerl, v3.0.6
XPerlArcaneBar, v
XPerlCustomHighlight, v
XPerlParty, v
XPerlPartyPet, v
XPerlPlayer, v
XPerlPlayerBuffs, v
XPerlPlayerPet, v
XPerlRaidAdmin, v
XPerlRaidFrames, v
XPerlRaidHelper, v
XPerlRaidMonitor, v
XPerlRaidPets, v
XPerlTarget, v
XPerlTargetTarget, v
BlizRuntimeLib_enUS v3.2.2.30200 <us>
(ck=484)
Or can you explain how the addon currently would handle me havign an extra fast offhand with woundpoison for the extra dmg but I alsop have a slow offhand with woundpoison for extra FoK spammage (whioch I switch to manualy).
I may add speed restrictions at some point, but that means rather ugly additional tooltip scanning, which is just not any fun at all.
Changes are just to function mod:ExecuteSwap()
Line 134: change ofType to pendingEquip
Line 135: change ofType to pendingEquip (just for debug)
Line 145: change ofType to pendingEquip (just for debug)
ID: 1
Error occured in: Global
Count: 21
Message: ..\AddOns\PoisonSwapper\PoisonSwapper.lua line 53:
attempt to index local 'poison' (a nil value)
Debug:
(tail call): ?
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:53:
PoisonSwapper\PoisonSwapper.lua:52
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:134: ExecuteSwap()
PoisonSwapper\PoisonSwapper.lua:334: ?()
...ore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...ore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[18]"]:4:
[string "safecall Dispatcher[18]"]:4
[C]: ?
[string "safecall Dispatcher[18]"]:13: ?()
...ore\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...\AddOns\DataStore\libs\AceEvent-3.0\AceEvent-3.0.lua:119:
...\AddOns\DataStore\libs\AceEvent-3.0\AceEvent-3.0.lua:118
Pending equip request: Deadly Poison IX
Pending equip request: Deadly Poison IX
Pending equip request: Deadly Poison IX
Pending equip request: Deadly Poison IX
Pending equip request: Deadly Poison IX
Swapping, weapon swing timer reset
Checking:xxxxxxx xxxxx ( repeating x10)
Done checking inventory
Couldn't find any weapon with nil ,abort swap
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\PoisonSwapper\PoisonSwapper.lua line 53:
attempt to index local 'poison' (a nil value)
Debug:
(tail call): ?
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:53:
PoisonSwapper\PoisonSwapper.lua:52
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:134: ExecuteSwap()
PoisonSwapper\PoisonSwapper.lua:244: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4
[C]: ?
[string "safecall Dispatcher[1]"]:13: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:120:
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:119
[C]: CameraOrSelectOrMoveStop()
[string "CAMERAORSELECTORMOVE"]:4:
[string "CAMERAORSELECTORMOVE"]:1
AddOns:
Swatter, v3.1.14 (<%codename%>)
ArtPad, v6
AtlasLoot, vv5.08.06
AutoBar, vv3.2.0.787
AutoProfitX, v2.04
Babylonian, v5.1.DEV.130
Bagnon, v2.12.0
BagnonForever, v1.1.2
BagnonTooltips, v
Bartender4, v4.4.1
Bejeweled, v1.03
Castbars, v
Configator, v5.1.DEV.190
Critline, vr16
DBMCore, v
DrDamage, v1.7.0_beta-1
ElkBuffBars, v2.2.5-150
epgp, v5.5.7
epgplootmaster, v0.3.57
epgplootmasterml, v0.3.57
epgploot2, v2.0.4
EQCompare, v1.4
FishingBuddy, v0.9.6i
Gatherer, v3.1.14
GearScore, v3.0.012 - Release
Grid, v1.30200.2009081101
IceHUD, v1.5.14 (Revision: 442)
MapCoords, v0.32
Mappy, v2.2.6
MikScrollingBattleText, v5.4.66
MinimapButtonFrame, v3.0.8
MinimapButtonFrameSkinPack, v3.0
OmniCC, v2.5.6
Outfitter, v4.9b8
PitBull4, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Aggro, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Aura, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Background, vv4.0.0-beta5-23-ge4c6b5b
PitBull4BlankSpace, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Border, vv4.0.0-beta5-23-ge4c6b5b
PitBull4CastBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4CastBarLatency, vv4.0.0-beta5-23-ge4c6b5b
PitBull4CombatFader, vv4.0.0-beta5-23-ge4c6b5b
PitBull4CombatIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4CombatText, vv4.0.0-beta5-23-ge4c6b5b
PitBull4ComboPoints, vv4.0.0-beta5-23-ge4c6b5b
PitBull4ExperienceBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4HealthBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4HideBlizzard, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Highlight, vv4.0.0-beta5-23-ge4c6b5b
PitBull4HostilityFader, vv4.0.0-beta5-23-ge4c6b5b
PitBull4LeaderIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4LuaTexts, vv4.0.0-beta5-23-ge4c6b5b
PitBull4MasterLooterIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Portrait, vv4.0.0-beta5-23-ge4c6b5b
PitBull4PowerBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4PvPIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4RaidTargetIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4RangeFader, vv4.0.0-beta5-23-ge4c6b5b
PitBull4ReadyCheckIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4ReputationBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4RestIcon, vv4.0.0-beta5-23-ge4c6b5b
PitBull4Sounds, vv4.0.0-beta5-23-ge4c6b5b
PitBull4ThreatBar, vv4.0.0-beta5-23-ge4c6b5b
PitBull4VisualHeal, vv4.0.0-beta5-23-ge4c6b5b
PitBull4VoiceIcon, vv4.0.0-beta5-23-ge4c6b5b
PoisonSwapper, v0.1
Proculas, v1.6.7
QuestHelper, v1.2.5
RareFinder, v0.7
RatingBuster, v
Recount, v
SharedMediaAdditionalFonts, v1.0
Skada, v1.2-21
SkadaAbsorbs, v1.0
SkadaCC, v1.0
SkadaDamage, v1.0
SkadaDamageTaken, v1.0
SkadaDeaths, v1.0
SkadaDebuffs, v1.0
SkadaDispels, v1.0
SkadaEnemies, v1.0
SkadaFailbot, v1.0
SkadaHealing, v1.0
SkadaPower, v1.0
SkadaThreat, v1.0
SlideBar, v3.1.14 (<%codename%>)
TipTac, v09.08.27
TipTacItemRef, v09.08.13
TipTacTalents, v09.08.13
WinterTime, v1.82
BlizRuntimeLib_enUS v3.2.2.30200 <us>
(ck=b42)
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\PoisonSwapper\PoisonSwapper.lua line 53:
attempt to index local 'poison' (a nil value)
Debug:
(tail call): ?
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:53:
PoisonSwapper\PoisonSwapper.lua:52
(tail call): ?
PoisonSwapper\PoisonSwapper.lua:134: ExecuteSwap()
PoisonSwapper\PoisonSwapper.lua:244: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146:
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:146
[string "safecall Dispatcher[1]"]:4:
[string "safecall Dispatcher[1]"]:4
[C]: ?
[string "safecall Dispatcher[1]"]:13: ?()
...non\libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:91: Fire()
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:120:
...ace\AddOns\Bagnon\libs\AceEvent-3.0\AceEvent-3.0.lua:119
[C]: TurnOrActionStop()
[string "TURNORACTION"]:4:
[string "TURNORACTION"]:1
Message: ..\AddOns\PoisonSwapper\PoisonSwapper.lua line 53:
attempt to index local 'poison' (a nil value)
It worked fine when I first tested it on dummies with both weapons being Steel Bladebreaker's.
When I went to raid, it stopped working and started giving me that error.
Message: Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:53: attempt to index local 'poison' (a nil value)
Time: 11/11/09 22:36:46
Count: 2
Stack: [string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:18: in function <[string "Interface\FrameXML\BasicControls.xml:<Scrip..."]:4>
(tail call): ?
(tail call): ?
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:53: in function <Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:52>
(tail call): ?
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:134: in function `ExecuteSwap'
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:105: in function `Equip'
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:169: in function `PVESwap'
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:214: in function `CheckSwap'
Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:241: in function <Interface\AddOns\PoisonSwapper\PoisonSwapper.lua:235>
(tail call): ?
[C]: ?
[string "safecall Dispatcher[2]"]:9: in function <[string "safecall Dispatcher[2]"]:5>
(tail call): ?
...s\PoisonSwapper\Libs\AceBucket-3.0\AceBucket-3.0.lua:119: in function <...s\PoisonSwapper\Libs\AceBucket-3.0\AceBucket-3.0.lua:112>
(tail call): ?
[C]: ?
[string "safecall Dispatcher[1]"]:9: in function <[string "safecall Dispatcher[1]"]:5>
(tail call): ?
...rface\AddOns\Omen\Libs\AceTimer-3.0\AceTimer-3.0.lua:160: in function <...rface\AddOns\Omen\Libs\AceTimer-3.0\AceTimer-3.0.lua:132>
Locals: (*temporary) = 0.0090000005438924
(*temporary) = nil
(*temporary) = nil
(*temporary) = <function> defined =[C]:-1