Get an Epic Experience with Premium

Destruction For Dummies

Combat Login to Add Favorites
  • 6 Likes
  • World of Warcraft
  • 1,958 Monthly Downloads
  • Supports: 5.1.0
  • 392,817 Total Downloads
  • Updated 12/01/2012
  • Created 07/22/2009
  • 428 Favorites
  • Project Site
  • Comments
  • Release Type: Release
  • License: GNU General Public License version 3 (GPLv3)
  • Newest File: Beta 3.0.0
or
Support development! **
Donate

About Destruction For Dummies

Status Update

I've made this work with MoP, and have a few builds supported with new EJ rotations (well, to the extent that EJ has actual rotations yet). These are very preliminary as yet.

Executive Summary

Install this mod; when a suggestion frame shows up in the middle of your screen (when you are out of combat) move it to where you want it. When the frame shows you a picture, cast the spell that picture represents. If nothing ever shows up, your current class/build is not supported.

That's all you have to know. Have fun, I hope you like it.

Introduction

This addon will display the recommended spell for you to cast (in or out of combat). It keeps track of what buffs/debuffs you have up, what your cooldowns are, and what your energy/rage/mana/runic power is, and tells you the best option. Out of combat, it will remind you to put up buffs (usually before they entirely expire). It is aimed at Level 85 toons, so recommendations below L85 will likely be suboptimal. In particular, at very low levels it will frequently not recommend anything at all; below level 10 it is guaranteed to do nothing.

You can resize the suggestion frame from the configuration panel (reached via the /dfd command). You can also lock the panel so it cannot be moved (it auto-locks in combat irrespective of this lock). You can set it to display dummy suggestions when it's unlocked, so you can see where it is to move it around and scale it.

There is a minimal assistance mode which only impacts Hunters at present; it does not give suggestions for standard rotation spells, just for unusual things. This will likely be expanded to other classes in the future.

This mod only handles single-target DPS

My To-Do List

  • Take threat into account and recommend threat-reduction measures when appropriate

Known bugs

Power (energy/mana/rage) regeneration recommendations start a timer displayed over the recommendation. When the recommendation changes, this timer remains until it counts down to 0.

The Rotations Implemented

These rotations actually have a lot of thought behind them, just not by me. Note that I did have to add things to all these rotations, as they don't take some important real-world needs into account (eg., when should a hunter cast Mend Pet during a fight? Even though it's not in the rotation, clearly letting your pet die isn't going to be the right call to up your DPS).

If you want changes to the rotation, please be prepared to explain why the source is wrong (or just point out that I'm deviating from it).

Note that some tanking builds are included (Blood Death Knights, a pretty poor Bear Druid, and an out of date Protection Warrior); these are provided as a convenience. The truth is that there are many enhancements that could be made to make this a far more useful tanking add-on, but they are going to have to wait for quite a while to get implemented. For now the add-on offers reasonable suggestions, assuming a largely straight-forward tank-and-spank fight, and is very useful (at least to me) in showing when the GCD is up. But there is no way you are going to successfully tank squat just following it's instructions; this is different from DPS'ing, where following the instructions will tend to give you close to optimal results.

Death Knights
Druids
Hunters
  • Beastmaster: cataclysm rotation
  • Marksman: cataclysm rotation
  • Survival: cataclysm rotation
Mages
  • Arcane: cataclysm rotation
  • Fire: Out of date (WotLK rotation)
  • Frost: cataclysm rotation
Paladins
  • Retribution: cataclysm rotation
Priests
  • Shadow: cataclysm rotation
Rogues
  • Assassination: cataclysm rotation
  • Combat: cataclysm rotation
  • Subtlety: cataclysm rotation
Shamans
  • Elemental: cataclysm rotation
  • Enhancement: cataclysm rotation
Warlocks
  • Affliction: cataclysm rotation
  • Demonology: cataclysm rotation
  • Destruction: cataclysm rotation
Warriors
  • Fury: Out of date (WotLK rotation)
  • Protection: Out of date (WotLK rotation)

First very rough cut at a few specs for MoP. DKs, Kitty Druids, and Windwalker Monks have potentially usable rotations. Everything else is leftover from Cataclysm.

Comments

First Previous Page 1 of 38 Next Last
  • #561

    Oddly enough this doesn't work for Destruction Warlocks. :)

  • #559

    thanks for the addon it helps me alot i started a priest and i've read that to use discipline priest until 80 i think it was and this addon doesn't show up but on my hunter it does so is the discipline priest unsupported

    thanks for you time

     

  • #560

    change spec to shadow it will work then as this only pertains to dps/tanking specs

    rogues were re-vamped for 5.2 the error you see is a result of that (im sure it will be fixed)

  • #558

    Error I'm seeing with 5.2.0.  Only seeing it on my Rogue at this time, but have not seen it on my Hunter as of two days ago.

    Hope this helps.

    ****************************

    Message: ...dOns\DestructionForDummies\DestructionForDummies.lua:201: attempt to perform arithmetic on field 'execTime' (a nil value)
    Time: 03/10/13 11:41:00
    Count: 133
    Stack: ...dOns\DestructionForDummies\DestructionForDummies.lua:201: in function `OnUpdate'
    ...dOns\DestructionForDummies\DestructionForDummies.lua:93: in function <...dOns\DestructionForDummies\DestructionForDummies.lua:92>

    Locals: self = <table> {
     classHunterBeastmaster = 6
     utilHealth = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:492
     cooldownFrame = UIParent_cooldown {
     }
     classPaladinRetribution = 13
     debuffUpByAny = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:1022
     showDebuffs = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:998
     lastSpell = "Eviscerate"
     utilWeaponEnhance = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:459
     offhandSlotNum = 17
     utilMxBuffByMe = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:269
     preCombat = <function> defined @Interface\AddOns\DestructionForDummies\RogueSubtlety.lua:11
     utilDebuffByMe = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:143
     utilMxDebuffByMe = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:350
     altRecommend = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:1055
     classWarriorFury = 23
     ToggleEnabled = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:678
     forceClass = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:726
     CreateOptionFrame = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:578
     events = <table> {
     }
     mainhandSlotNum = 16
     string = <table> {
     }
     classHunterSurvival = 8
     verifyCodes = <function> defined @Interface\AddOns\DestructionForDummies\LocaleLocal.lua:826
     decisionCombat = <function> defined @Interface\AddOns\DestructionForDummies\RogueSubtlety.lua:16
     displaySpellInFrame = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:232
     utilMxNeedDebuff = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:387
     classMonkWindwalker = 12
     CreateGUI = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:329
     registry = <table> {
     }
     showCooldownAnimation = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:250
     ToggleFerralMode = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:667
     classShamanEnhancement = 19
     analysisPick = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:1117
     findSpellNo = <function> defined @Interface\AddOns\DestructionForDummies\LocaleLocal.lua:809
     utilStance = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:612
     castStartTime = 36792.693
     classWarlockDemonology = 21
     genfunc_rotateWindows = <function> defined @Interface\AddOns\DestructionForDummies\DeathKnightBlood.lua:44
     classWarlockDestruction = 22
     classMageArcane = 9
     utilBuffInfo = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:177
     debuffUpByMe = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:970
     utilTimeToDie = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:507
     utilMxDebuff = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:310
     Reset = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:646
     classDeathknightUnholy = 3
     utilOnTank = <function> defined @Interface\AddOns\DestructionForDummies\Utilities.lua:729
     unitPowerAfterCast = <function> defined @Interface\AddOns\DestructionForDummies\DestructionForDummies.lua:1219
     LoadSavedVars = <function> defined @Interface\AddOns\DestructionForDummies\DestructionFo

  • #557

    Nice Work!!!

    This is a very helpful and good to use UI.

    Just add the new spells…

    And most important keep it alive!!!

  • #555

    I would also be willing to kick in financially if someone picks this project up.  It was a great addon!

  • #554

    I am wondering what it would take financially to update this addon, it is one of my favorites as well, I am willing to donate for the project to be updated for a reasonable cost

    Last edited by mcvannster on 10/5/2012 3:43:03 PM
  • #553

    any news about the addon?

     

  • #552

    since this great addon may not be updated ever again does any one knows a good alternative?

  • #551

    I'm sad to see that this addon may not be updated again. Here's to hoping it is, but in the mean time does anyone know of a similar addon to use?

  • #548

    Part of the Errors you're seeing are the result of the changes to the Talent Tree, this is causing a problem as a result of the LAU code finding what spec you are by which talent tree had the most (max) points. I believe this information can now but obtain via new APIs for MoP ... HOWEVER, most of these APIs are still undocumented so it's unclear how to get this info.

    I believe that DfD can be JURY RIGGED to "techincally" function again - meaning to run without any loading errors - HOWEVER, EarendilJenkins is right, since the code for the rotation is written in seperate files and not in LUA everything would be out of date and there is no telling what EarendilJenkins has written in the rotation code that might still use APIs that are out of date.

    So, Please do not say... Maarc, you are the MAN! Cause I am not! I have a good idea on how things should function logically, so I can kinda hammer my way thru some LAU code to figure out what is wrong, BUT I do not know Bison or Flex and I have never been good at C. So I don't know about the future of DfD.

  • #549

    Yes, jury rigging should be fairly easy--the main thing DfD uses the talent trees for is to figure out what spec you are.  I think this is now gettable via a different API that governs your speciality, which is probably unchanged in MoP, but I wouldn't know for sure.  Worst case, you change the whatAmI() routine to look in a variable that you have to hand-set per toon that tells it the build.  (There are some other specific talents that DfD looks for inside of rotations, so it will (say) call for the Hunter's shot that refreshes Serpent Sting if that is talented in.  But there are few of these and they are going to be the least of your problems).

    The bigger problem is that the rotations are simply wrong now, I suspect.  Someone is going to need to read the Elitist Jerks threads as they come up with new recommended rotations, and implement them.  

    (In addition to changing the LUA code, both written and generated, to conform to the new APIs.  But I honestly don't think that should be a huge problem.  The main APIs that DfD uses are to check which buffs/debuffs are up and to see what the cooldown on each action remaining is.  I doubt those APIs have changed).

    And understanding what is going on is definitely going to require knowledge of Bison (the flex code will change only trivially).  My code is fairly clean, so if someone (Mark?) wants to come up to speed on C and Bison, you could do worse.  But maintaining this mod, especially in the months immediately before and after the releases of WotLK and Cataclysm, took a lot of my time.  If you are climbing a learning curve while you do it, you should probably be prepared to spend a lot of time.

  • #556
    Quote from MarkParish »

    EarendilJenkins,

    I'm flattered, and if I was still unemployed and looking for something to do after doing my daily job searches and before logging on and playing WoW, I'd jump on this right away, BUT I just started a new job up in Winston-Salem, NC today so I'm going to be busy until the end of April at the very least.

    I think, the project could subdivide and parted out for maintenance something like this:

    • 1 Experienced Project Manager, who would divide up the project and part it out - you would be best for this EarendilJenkins
    • 1 Experienced LAU AddOn developer for the patch code and logic
    • 6+ Class Theorists, these are players who can distill the rotations down to a logical... IF <condition> THEN <spell>, etc ... format.
    • 3+ Bison/C programmers who can take the spell rotations from the Class Theorists and convert it into code.
    • 3+ Testers to provide feedback on the changes to the Project Manager.

    I think this in the end would be the best way to keep everybody happy, and keep the project alive with the least amount of trouble.

    Mark

     

    Well after ALL that - I will revisit this Superior addon in April.  There is Brillance displayed in here.  I am Very interested in using this addon.  

    If you look above there are several offers of financial support that "could" be useful (Mark?) LoL!.  

    dnlcllns 

  • #550

    EarendilJenkins,

    I'm flattered, and if I was still unemployed and looking for something to do after doing my daily job searches and before logging on and playing WoW, I'd jump on this right away, BUT I just started a new job up in Winston-Salem, NC today so I'm going to be busy until the end of April at the very least.

    I think, the project could subdivide and parted out for maintenance something like this:

    • 1 Experienced Project Manager, who would divide up the project and part it out - you would be best for this EarendilJenkins
    • 1 Experienced LAU AddOn developer for the patch code and logic
    • 6+ Class Theorists, these are players who can distill the rotations down to a logical... IF <condition> THEN <spell>, etc ... format.
    • 3+ Bison/C programmers who can take the spell rotations from the Class Theorists and convert it into code.
    • 3+ Testers to provide feedback on the changes to the Project Manager.

    I think this in the end would be the best way to keep everybody happy, and keep the project alive with the least amount of trouble.

    Mark

     

    Last edited by MarkParish on 9/4/2012 7:19:05 PM
  • #547

    Would be nice if this would be updated by someone (preferably the author) for Wow 5.0.4.

    This type of errors are been shown when I logged with my lvl 2 rogue:

    3x DestructionForDummies-2.1.2.8\Variables.lua:55: Invalid inventory slot in GetInventorySlotInfo
    <in C code>
    DestructionForDummies-2.1.2.8\Variables.lua:55: in main chunk

    Locals:
    (*temporary) = <table> {
     beta = false
     lastClassVal = 0
     debuffByMe = <table> {}
     offhandSlotNum = 17
     mainhandSlotNum = 16
     registry = <table> {}
     lastMutexIndex = 0
     events = <table> {}
     string = <table> {}
     mutex = <table> {}
     debuffByAny = <table> {}
     eventFrame = <unnamed> {}
     timeSinceLastUpdate = 0
    }
    and

    5x DestructionForDummies\DestructionForDummies-2.1.2.8.lua:879: attempt to perform arithmetic on local "points" (a nil value)
    DestructionForDummies\DestructionForDummies-2.1.2.8.lua:879: in function "talentPointsInTab"
    DestructionForDummies\DestructionForDummies-2.1.2.8.lua:742: in function "whatAmI"
    DestructionForDummies\DestructionForDummies-2.1.2.8.lua:545: in function "populateRegistry"
    DestructionForDummies\DestructionForDummies-2.1.2.8.lua:499: in function "?"
    DestructionForDummies-2.1.2.8\Variables.lua:19: in function <DestructionForDummies\Variables.lua:18>

    Locals:
    self = <table> {
     classHunterBeastmaster = 6
     classDeathknightUnholy = 3
     utilOnTank = <func> @..\Utilities.lua:749
     utilHealth = <func> @..\Utilities.lua:512
     LoadSavedVars = <func> @..\DestructionForDummies.lua:113
     utilTotem = <func> @..\Utilities.lua:599
     utilFlightTime = <func> @..\Utilities.lua:578
     utilMxBuff = <func> @..\Utilities.lua:226
     talentPointsInTab = <func> @..\DestructionForDummies.lua:874
     classPaladinRetribution = 12
     turnOff = <func> @..\DestructionForDummies.lua:107
     createFrame = <func> @..\DestructionForDummies.lua:404
     utilDebuffTime = <func> @..\Utilities.lua:83
     genfunc_DoAspect = <func> @..\HunterSurvival.lua:31
     debuffUpByAny = <func> @..\DestructionForDummies.lua:1041
     classShamanElemental = 17
     initRangeCheckSpells = <func> @..\DestructionForDummies.lua:1375
     classRogueAssassination = 14
     utilWeaponEnhance = <func> @..\Utilities.lua:459
     myClass = 0
     cooldownFrame = UIParent_cooldown {}
     CreateOptionFrame = <func> @..\DestructionForDummies.lua:578
     offhandSlotNum = 17
     suggestFrame = <unnamed> {}
     utilMxBuffByMe = <func> @..\Utilities.lua:269
     SetDisabled = <func> @..\DestructionForDummies.lua:699
     updateInterval = 0.5
     beta = false
     distanceToTarget = <func> @..\DestructionForDummies.lua:1289
     utilDebuffByMe = <func> @..\Utilities.lua:143
     unitPowerAfterCast = <func> @..\DestructionForDummies.lua:1238
     utilMxDebuffByMe = <func> @..\Utilities.lua:350
     altRecommend = <func> @..\DestructionForDummies.lua:1074
     utilTotemType = <func> @..\Utilities.lua:620
     analysisAdd = <func> @..\DestructionForDummies.lua:1109
     analysisInit = <func> @..\DestructionForDummies.lua:1100
     whatAmI = <func> @..\DestructionForDummies.lua:732
     classWarriorFury = 22
     eventFrame = <unnamed> {}
     showDebuffs = <func> @..\DestructionForDummies.lua:1017
     showBuffs = <func> @..\DestructionForDummies.lua:1003
     Options = <func> @..\DestructionForDummies.lua:565
     mainhandSlotNum = 16
     forceClass = <func> @..\DestructionForDummies.lua:726
     lastAltWarnTime = 0
     classDruidBalance = 4
     spellReady = <func> @..\DestructionForDummies.lua:907
     classRogueSubtlety = 16
     refreshDebuffData = <func> @..\DestructionForDummies.lua:926
     events = <table> {}
     buffTime = <func> @..\DestructionForDummies.lua:963
     mutex = <table> {}
     knowsSpell = <func> @..\DestructionForDummies.lua:886
     CmdEnabled = <func> @..\DestructionForDummies.lua:569
     utilDebuff = <func> @AddOn

    Cheers,
    Ix

    Last edited by ixoth on 8/29/2012 10:18:15 AM
  • To post a comment, please login or register a new account.
Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Infinite Crisis NA

Get Your Preferred Access Code!