Elitist Jerks
Register
Blogs
Forums


Go Back   Elitist Jerks » Class Mechanics » Paladins

Reply
 
LinkBack Thread Tools
Old 02/07/09, 9:43 PM   #16
zengir
Glass Joe
 
Human Paladin
 
Defias Brotherhood (EU)
Yeah, you can enter the same priority, but I'm gonna go ahead and believe you won't
I COULD include a part that takes care of that, but I don't really believe anyone is going to believe anything that comes out of the application with different prioritys set to the same. I might include some "error checking" in the weekend.
I'm gonna include exo in the next version. I decided to go out and have a couple of beers instead tonight. I might make a new version tomorrow including exo. Or on monday.

The prioritys already set in the application is purely to demonstrate what kind of data you should put in. You're welcome to put anything between 0-3 in any of the fields, and it should work out fine. As earlier stated I will include exorcism in the next "version", where 0-4 would be ok.

I'm thinking about making an application where you get a choice to use every ability as you wish, depending on CD, GCD and such... Where you kind off simulate a whole fight and use your abilities as you would in reality. So you can see the difference between using CS before JoM every time, and using CS before JoM the time the cooldowns clash, and so on. There's a lot of scenarios where a simple priority isn't right for a whole fight. For example you might want to use JoM first in a fight, but you might want to use CS before JoM for the rest of the fight to avoid CD clashes or something like that.

Anyways, I'm not promising anything. It's an interesting idea though. I'm guessing there won't be much done until Monday on my part.

Offline
Reply With Quote
Old 02/10/09, 11:28 AM   #17
zengir
Glass Joe
 
Human Paladin
 
Defias Brotherhood (EU)
I made a new version today, including exorcism and with a mechanism that checks if you entered the priorities correctly.

Can be found on this link: RapidShare: Easy Filehosting
And should be downloadable more then 10 times.

Offline
Reply With Quote
Old 02/25/09, 12:11 PM   #18
Musclebound
Von Kaiser
 
Musclebound's Avatar
 
Orc Warrior
 
Mal'Ganis
I've been using this cycle of J > CS > Consc > DS recently and noticed every other cycle you skip Divine Storm for Judgement because they arrive on cooldown at the same time (roughly) while you're on a global cooldown for Consecration. Should I be using Judgement since it has damage priority or stick to using Divine Storm because its how the rotation functions?

Offline
Reply With Quote
Old 02/25/09, 1:01 PM   #19
Left
Don Flamenco
 
Left's Avatar
 
Draenei Paladin
 
Darkspear
You should be using Judgement.

Offline
Reply With Quote
Old 02/25/09, 6:09 PM   #20
kharen
Don Flamenco
 
Blood Elf Paladin
 
The Venture Co (EU)
Originally Posted by Musclebound View Post
I've been using this cycle of J > CS > Consc > DS recently and noticed every other cycle you skip Divine Storm for Judgement because they arrive on cooldown at the same time (roughly) while you're on a global cooldown for Consecration. Should I be using Judgement since it has damage priority or stick to using Divine Storm because its how the rotation functions?
It's not a rotation - it's a priority list. You don't skip any ability, ever, you simply delay them when a higher-priority attack is available.

Offline
Reply With Quote
Old 03/09/09, 12:48 PM   #21
Rurahk
Von Kaiser
 
Human Paladin
 
Shandris
Minor bug in:

    elif (round(time-lastHammer,2) >= cooldownCS) and hammer:
        numHammer += 1
        if numHammer == 1: firstHammer = time
cooldownCS should be cooldownHammer

EDIT to avoid double post:

Is there any reason re-sealing happens every 90 seconds? I'm guessing the script was written before seals got buffed to 30 min duration? The variable cooldownSoB is not used in the first instance of testing for SoB (why is it tested twice?).

I re-wrote parts of the script so I could search through all the priorities (700+ combinations for undead) and found that DS -> Exo -> Cons -> CS -> HW -> Judge produced the best dps. That's right, Judgment as the last priority. The cooldowns produced were (10 min run-time, undead, no hammer, t7, 0 latency, SoB cooldown 1800 seconds):

Judgement: 7.55 sec
Crusader Strike: 7.53 sec
Consecrate: 10.08 sec
Divine Storm: 10.08 sec
Exorcism: 15.13 sec
Holy Wrath: 30.26 sec
Divine Plea: 60.5 sec

with a 87.25% GCD density. There was a 57.67 dps increase with the default numbers, which translates to ~1.5% dps increase.

I tried out the rotation in a heroic today, and I was going oom like crazy. Maybe I need more practice, especially hitting DP in the correct order. I guess if you're min-maxing, using the above rotation will squeeze every last ounce of dps out in AoE heavy fights (i.e. no mana concerns), but I'm not sure it's worth it for most fights in general.

Last edited by Rurahk : 03/11/09 at 2:08 AM.

Offline
Reply With Quote
Old 03/18/09, 3:15 PM   #22
Handled
Piston Honda
 
Handled's Avatar
 
Pandaren Monk
 
Ner'zhul
That is pretty interesting as I had been testing judgment as a last priority due to the sensitive nature of early aggro pulls. Obviously these FCFS scripts are base use but what happens when you throw the Libram into the equation?

I have been leading CS with my [Deadly Gladiator's Libram of Fortitude] so I have the extra AP for a full rotation. With the change on PTR Deadly Gladiator's Libram of Fortitude going to a 10 second buff, You should be able to maintain 100% uptime if you can give CS enough priority to not clip other CD's.

I realize you aren't including Librams buffs and so forth but I would be curious to see a CS priority on your new system and what the DPS change is vs leading with DS.

"They thought bosses just fell over the first night because of the tag over their head, and the most important thing was how much damage they could do at all times. Newsflash - it doesn't work like that."

United States Offline
Reply With Quote
Old 03/18/09, 4:24 PM   #23
Exemplar
Bald Bull
 
Human Paladin
 
Scarlet Crusade
I was immediately impressed by Left's work. After several weeks of tinkering with it, I decided it was an excellent guideline to generate every possible effective cooldown for every possible prioritization.

So I wrote something to specifically generate this. It goes like this vs Undead/Demons:

import sys

undead = False

count = 0

step = 0.1
runTime = 21600.0

nest1 = 0
nest2 = 0
nest3 = 0
nest4 = 0

tempAve = 0
tempSolo = 0
tempName = ''
tempCD = 0

AbilityAve1 = 101
AbilitySolo1 = 100
AbilityName1 = 'Judgement'
AbilityCD1 = 8
AbilityAve2 = 101
AbilitySolo2 = 100
AbilityName2 = 'Consecration'
AbilityCD2 = 10
AbilityAve3 = 101
AbilitySolo3 = 100
AbilityName3 = 'Crusader Strike'
AbilityCD3 = 6
AbilityAve4 = 101
AbilitySolo4 = 100
AbilityName4 = 'Divine Storm'
AbilityCD4 = 10
AbilityAve5 = 101
AbilitySolo5 = 100
AbilityName5 = 'Exorcism'
AbilityCD5 = 15

cooldownHW = 30

timeAbility1 = 0

gcd = 1.5
lastAbilityTime = -gcd

timeAbility1 = -(AbilityCD1 + 1)
timeAbility2 = -(AbilityCD2 + 1)
timeAbility3 = -(AbilityCD3 + 1)
timeAbility4 = -(AbilityCD4 + 1)
timeAbility5 = -(AbilityCD5 + 1)
timeHW = -(cooldownHW +1)

time = 0
numAbility1 = 0
numAbility2 = 0
numAbility3 = 0
numAbility4 = 0
numAbility5 = 0
numHW = 0

DPS = 0
soloDPS = 0
BestDPS = 0
BestSoloDPS = 0

skip = True

while nest1 < 5:

    if nest1 > 2:
        tempAve = AbilityAve3
        tempSolo = AbilitySolo3
        tempName = AbilityName3
        tempCD = AbilityCD3
        AbilityAve3 = AbilityAve1
        AbilitySolo3 = AbilitySolo1
        AbilityName3 = AbilityName1
        AbilityCD3 = AbilityCD1
        AbilityName1 = tempName
        AbilityCD1 = tempCD
        AbilityAve1 = tempAve
        AbilitySolo1 = tempSolo
    
        tempName = ''
        tempCD = 0
        tempSolo = 0
        TempAve = 0
    elif nest1 > 0:
        tempAve = AbilityAve2
        tempSolo = AbilitySolo2
        tempName = AbilityName2
        tempCD = AbilityCD2
        AbilityAve2 = AbilityAve1
        AbilitySolo2 = AbilitySolo1
        AbilityName2 = AbilityName1
        AbilityCD2 = AbilityCD1
        AbilityName1 = tempName
        AbilityCD1 = tempCD
        AbilityAve1 = tempAve
        AbilitySolo1 = tempSolo

        tempName = ''
        tempCD = 0
        tempSolo = 0
        TempAve = 0
        skip = True

    nest1 += 1
    count +=1

    nest2 = 0

    while nest2 < 4:

        if not skip:   
            tempAve = AbilityAve3
            tempSolo = AbilitySolo3
            tempName = AbilityName3
            tempCD = AbilityCD3
            AbilityAve3 = AbilityAve2
            AbilitySolo3 = AbilitySolo2
            AbilityName3 = AbilityName2
            AbilityCD3 = AbilityCD2
            AbilityName2 = tempName
            AbilityCD2 = tempCD
            AbilityAve2 = tempAve
            AbilitySolo2 = tempSolo
    
            tempName = ''
            tempCD = 0
            tempSolo = 0
            TempAve = 0
            skip = True

        if nest2 == 3:
            tempAve = AbilityAve5
            tempSolo = AbilitySolo5
            tempName = AbilityName5
            tempCD = AbilityCD5
            AbilityAve5 = AbilityAve2
            AbilitySolo5 = AbilitySolo2
            AbilityName5 = AbilityName2
            AbilityCD5 = AbilityCD2
            AbilityName2 = tempName
            AbilityCD2 = tempCD
            AbilityAve2 = tempAve
            AbilitySolo2 = tempSolo
    
            tempName = ''
            tempCD = 0
            tempSolo = 0
            TempAve = 0
    
        nest2 += 1
        count += 1

        nest3 = 0
    
        while nest3 < 3:

            if not skip:
                tempAve = AbilityAve4
                tempSolo = AbilitySolo4
                tempName = AbilityName4
                tempCD = AbilityCD4
                AbilityAve4 = AbilityAve3
                AbilitySolo4 = AbilitySolo3
                AbilityName4 = AbilityName3
                AbilityCD4 = AbilityCD3
                AbilityName3 = tempName
                AbilityCD3 = tempCD
                AbilityAve3 = tempAve
                AbilitySolo3 = tempSolo
    
                tempName = ''
                tempCD = 0
                tempSolo = 0
                TempAve = 0
                skip = True

            nest3 += 1
            count += 1
   
            nest4 = 0
        
            while nest4 < 2:

                if not skip:    
                    tempAve = AbilityAve5
                    tempSolo = AbilitySolo5
                    tempName = AbilityName5
                    tempCD = AbilityCD5
                    AbilityAve5 = AbilityAve4
                    AbilitySolo5 = AbilitySolo4
                    AbilityName5 = AbilityName4
                    AbilityCD5 = AbilityCD4
                    AbilityName4 = tempName
                    AbilityCD4 = tempCD
                    AbilityAve4 = tempAve
                    AbilitySolo4 = tempSolo
        
                    tempName = ''
                    tempCD = 0
                    tempSolo = 0
                    TempAve = 0

                nest4 += 1
                count += 1
                skip = False

                timeAbility1 = -(AbilityCD1 + 1)
                timeAbility2 = -(AbilityCD2 + 1)
                timeAbility3 = -(AbilityCD3 + 1)
                timeAbility4 = -(AbilityCD4 + 1)
                timeAbility5 = -(AbilityCD5 + 1)
                timeHW = -(cooldownHW +1)
                lastAbilityTime = 0
                time = 0
                numAbility1 = 0
                numAbility2 = 0
                numAbility3 = 0
                numAbility4 = 0
                numAbility5 = 0
                numHW= 0


        
                while time <= runTime:
                    # Check for Global Cooldown
                    if round(time-lastAbilityTime,2) < gcd:
                        time += step
                        continue
            
                    # Priority 1
                    if round(time-timeAbility1,2) >= AbilityCD1:
                        numAbility1 += 1
                        timeAbility1 = time
                        lastAbilityTime = time
                    # Priority 2
                    elif round(time-timeAbility2,2) >= AbilityCD2:
                        numAbility2 += 1
                        timeAbility2 = time
                        lastAbilityTime = time
                    elif round(time-timeAbility3,2) >= AbilityCD3:
                        numAbility3 += 1
                        timeAbility3 = time
                        lastAbilityTime = time
                    # Priority 4
                    elif round(time-timeAbility4,2) >= AbilityCD4:
                        numAbility4 += 1
                        timeAbility4 = time
                        lastAbilityTime = time
                    # Priority 5
                    elif round(time-timeAbility5,2) >= AbilityCD5:
                        numAbility5 += 1
                        timeAbility5 = time
                        lastAbilityTime = time
                    # Priority 6
                    elif (round(time-timeHW,2) >= cooldownHW) and undead:
                        numHW += 1
                        timeHW = time
                        lastAbilityTime = time
                    elif undead == False:
                        numHW = 2
                        timeHW = 0
                        time += step
                        continue
                    # If nothing was off cooldown...
                    else:
                        time += step
                        continue
        
                    lastAbilityTime = time  
                    time += step
        
                print AbilityName1, ',', AbilityName2, ',', AbilityName3, ',', AbilityName4, ',', AbilityName5, ',', round((timeAbility1-1.5)/(numAbility1-1),2), ',', round((timeAbility2-1.5)/(numAbility2-1),2), ',', round((timeAbility3-1.5)/(numAbility3-1),2), ',', round((timeAbility4-1.5)/(numAbility4-1),2), ',', round((timeAbility5-1.5)/(numAbility5-1),2), ',', round((timeHW-1.5)/(numHW-1),2)
                DPS = (((AbilityAve1 * numAbility1) + (AbilityAve2 * numAbility2) + (AbilityAve3 * numAbility3) + (AbilityAve4 * numAbility4) + (AbilityAve5 * numAbility5))/runTime)
                soloDPS = (((AbilitySolo1 * numAbility1) + (AbilitySolo2 * numAbility2) + (AbilitySolo3 * numAbility3) + (AbilitySolo4 * numAbility4) + (AbilitySolo5 * numAbility5))/runTime)
        
#                print 'DPS = ',  DPS
#                print 'Solo DPS = ', soloDPS
        
                if DPS > BestDPS:
                    BestDPS1 = AbilityName1
                    BestDPS2 = AbilityName2
                    BestDPS3 = AbilityName3
                    BestDPS4 = AbilityName4
                    BestDPS5 = AbilityName5
                    BestDPS = DPS
        
                if soloDPS > BestSoloDPS:
                    SoloBestDPS1 = AbilityName1
                    SoloBestDPS2 = AbilityName2
                    SoloBestDPS3 = AbilityName3
                    SoloBestDPS4 = AbilityName4
                    SoloBestDPS5 = AbilityName5
                    BestSoloDPS = soloDPS

print 'Best Raid DPS', 'was', BestDPS
print BestDPS1, BestDPS2, BestDPS3, BestDPS4, BestDPS5
print 'Best Solo DPS', 'was', soloDPS
print SoloBestDPS1, SoloBestDPS2, SoloBestDPS3, SoloBestDPS4, SoloBestDPS5
No exorcism (i.e. 3.0.9 vs. something not undead/demon)

import sys

undead = False

count = 0

step = 0.1
runTime = 21600.0

nest1 = 0
nest2 = 0
nest3 = 0
nest4 = 0

tempAve = 0
tempSolo = 0
tempName = ''
tempCD = 0

AbilityAve1 = 101
AbilitySolo1 = 100
AbilityName1 = 'Judgement'
AbilityCD1 = 7
AbilityAve2 = 101
AbilitySolo2 = 100
AbilityName2 = 'Consecration'
AbilityCD2 = 10
AbilityAve3 = 101
AbilitySolo3 = 100
AbilityName3 = 'Crusader Strike'
AbilityCD3 = 6
AbilityAve4 = 101
AbilitySolo4 = 100
AbilityName4 = 'Divine Storm'
AbilityCD4 = 10
AbilityAve5 = 101
AbilitySolo5 = 100
AbilityName5 = 'Exorcism'
AbilityCD5 = 21500

cooldownHW = 30

timeAbility1 = 0

gcd = 1.5
lastAbilityTime = -gcd

timeAbility1 = -(AbilityCD1 + 1)
timeAbility2 = -(AbilityCD2 + 1)
timeAbility3 = -(AbilityCD3 + 1)
timeAbility4 = -(AbilityCD4 + 1)
timeAbility5 = -(AbilityCD5 + 1)
timeHW = -(cooldownHW +1)

time = 0
numAbility1 = 0
numAbility2 = 0
numAbility3 = 0
numAbility4 = 0
numAbility5 = 0
numHW = 0

DPS = 0
soloDPS = 0
BestDPS = 0
BestSoloDPS = 0

skip = True

while nest1 < 5:

    if nest1 > 2:
        tempAve = AbilityAve3
        tempSolo = AbilitySolo3
        tempName = AbilityName3
        tempCD = AbilityCD3
        AbilityAve3 = AbilityAve1
        AbilitySolo3 = AbilitySolo1
        AbilityName3 = AbilityName1
        AbilityCD3 = AbilityCD1
        AbilityName1 = tempName
        AbilityCD1 = tempCD
        AbilityAve1 = tempAve
        AbilitySolo1 = tempSolo
    
        tempName = ''
        tempCD = 0
        tempSolo = 0
        TempAve = 0
    elif nest1 > 0:
        tempAve = AbilityAve2
        tempSolo = AbilitySolo2
        tempName = AbilityName2
        tempCD = AbilityCD2
        AbilityAve2 = AbilityAve1
        AbilitySolo2 = AbilitySolo1
        AbilityName2 = AbilityName1
        AbilityCD2 = AbilityCD1
        AbilityName1 = tempName
        AbilityCD1 = tempCD
        AbilityAve1 = tempAve
        AbilitySolo1 = tempSolo

        tempName = ''
        tempCD = 0
        tempSolo = 0
        TempAve = 0
        skip = True

    nest1 += 1
    count +=1

    nest2 = 0

    while nest2 < 4:

        if not skip:   
            tempAve = AbilityAve3
            tempSolo = AbilitySolo3
            tempName = AbilityName3
            tempCD = AbilityCD3
            AbilityAve3 = AbilityAve2
            AbilitySolo3 = AbilitySolo2
            AbilityName3 = AbilityName2
            AbilityCD3 = AbilityCD2
            AbilityName2 = tempName
            AbilityCD2 = tempCD
            AbilityAve2 = tempAve
            AbilitySolo2 = tempSolo
    
            tempName = ''
            tempCD = 0
            tempSolo = 0
            TempAve = 0
            skip = True

        if nest2 == 3:
            tempAve = AbilityAve5
            tempSolo = AbilitySolo5
            tempName = AbilityName5
            tempCD = AbilityCD5
            AbilityAve5 = AbilityAve2
            AbilitySolo5 = AbilitySolo2
            AbilityName5 = AbilityName2
            AbilityCD5 = AbilityCD2
            AbilityName2 = tempName
            AbilityCD2 = tempCD
            AbilityAve2 = tempAve
            AbilitySolo2 = tempSolo
    
            tempName = ''
            tempCD = 0
            tempSolo = 0
            TempAve = 0
    
        nest2 += 1
        count += 1

        nest3 = 0
    
        while nest3 < 3:

            if not skip:
                tempAve = AbilityAve4
                tempSolo = AbilitySolo4
                tempName = AbilityName4
                tempCD = AbilityCD4
                AbilityAve4 = AbilityAve3
                AbilitySolo4 = AbilitySolo3
                AbilityName4 = AbilityName3
                AbilityCD4 = AbilityCD3
                AbilityName3 = tempName
                AbilityCD3 = tempCD
                AbilityAve3 = tempAve
                AbilitySolo3 = tempSolo
    
                tempName = ''
                tempCD = 0
                tempSolo = 0
                TempAve = 0
                skip = True

            nest3 += 1
            count += 1
   
            nest4 = 0
        
            while nest4 < 2:

                if not skip:    
                    tempAve = AbilityAve5
                    tempSolo = AbilitySolo5
                    tempName = AbilityName5
                    tempCD = AbilityCD5
                    AbilityAve5 = AbilityAve4
                    AbilitySolo5 = AbilitySolo4
                    AbilityName5 = AbilityName4
                    AbilityCD5 = AbilityCD4
                    AbilityName4 = tempName
                    AbilityCD4 = tempCD
                    AbilityAve4 = tempAve
                    AbilitySolo4 = tempSolo
        
                    tempName = ''
                    tempCD = 0
                    tempSolo = 0
                    TempAve = 0

                nest4 += 1
                count += 1
                skip = False

                timeAbility1 = -(AbilityCD1 + 1)
                timeAbility2 = -(AbilityCD2 + 1)
                timeAbility3 = -(AbilityCD3 + 1)
                timeAbility4 = -(AbilityCD4 + 1)
                timeAbility5 = -(AbilityCD5 + 1)
                timeHW = -(cooldownHW +1)
                lastAbilityTime = 0
                time = 0
                numAbility1 = 0
                numAbility2 = 0
                numAbility3 = 0
                numAbility4 = 0
                numAbility5 = 0
                numHW= 0


        
                while time <= runTime:
                    # Check for Global Cooldown
                    if round(time-lastAbilityTime,2) < gcd:
                        time += step
                        continue
            
                    # Priority 1
                    if round(time-timeAbility1,2) >= AbilityCD1:
                        numAbility1 += 1
                        timeAbility1 = time
                        lastAbilityTime = time
                    # Priority 2
                    elif round(time-timeAbility2,2) >= AbilityCD2:
                        numAbility2 += 1
                        timeAbility2 = time
                        lastAbilityTime = time
                    elif round(time-timeAbility3,2) >= AbilityCD3:
                        numAbility3 += 1
                        timeAbility3 = time
                        lastAbilityTime = time
                    # Priority 4
                    elif round(time-timeAbility4,2) >= AbilityCD4:
                        numAbility4 += 1
                        timeAbility4 = time
                        lastAbilityTime = time
                    # Priority 5
                    elif round(time-timeAbility5,2) >= AbilityCD5:
                        numAbility5 += 1
                        timeAbility5 = time
                        lastAbilityTime = time
                    # Priority 6
                    elif (round(time-timeHW,2) >= cooldownHW) and undead:
                        numHW += 1
                        timeHW = time
                        lastAbilityTime = time
                    elif undead == False:
                        numHW = 2
                        timeHW = 0
                        time += step
                        continue
                    # If nothing was off cooldown...
                    else:
                        time += step
                        continue
        
                    lastAbilityTime = time  
                    time += step
        
                print AbilityName1, ',', AbilityName2, ',', AbilityName3, ',', AbilityName4, ',', AbilityName5, ',', round((timeAbility1-1.5)/(numAbility1-1),2), ',', round((timeAbility2-1.5)/(numAbility2-1),2), ',', round((timeAbility3-1.5)/(numAbility3-1),2), ',', round((timeAbility4-1.5)/(numAbility4-1),2), ',', round((timeAbility5-1.5)/(numAbility5-1),2), ',', round((timeHW-1.5)/(numHW-1),2)
                DPS = (((AbilityAve1 * numAbility1) + (AbilityAve2 * numAbility2) + (AbilityAve3 * numAbility3) + (AbilityAve4 * numAbility4) + (AbilityAve5 * numAbility5))/runTime)
                soloDPS = (((AbilitySolo1 * numAbility1) + (AbilitySolo2 * numAbility2) + (AbilitySolo3 * numAbility3) + (AbilitySolo4 * numAbility4) + (AbilitySolo5 * numAbility5))/runTime)
        
#                print 'DPS = ',  DPS
#                print 'Solo DPS = ', soloDPS
        
                if DPS > BestDPS:
                    BestDPS1 = AbilityName1
                    BestDPS2 = AbilityName2
                    BestDPS3 = AbilityName3
                    BestDPS4 = AbilityName4
                    BestDPS5 = AbilityName5
                    BestDPS = DPS
        
                if soloDPS > BestSoloDPS:
                    SoloBestDPS1 = AbilityName1
                    SoloBestDPS2 = AbilityName2
                    SoloBestDPS3 = AbilityName3
                    SoloBestDPS4 = AbilityName4
                    SoloBestDPS5 = AbilityName5
                    BestSoloDPS = soloDPS

print 'Best Raid DPS', 'was', BestDPS
print BestDPS1, BestDPS2, BestDPS3, BestDPS4, BestDPS5
print 'Best Solo DPS', 'was', soloDPS
print SoloBestDPS1, SoloBestDPS2, SoloBestDPS3, SoloBestDPS4, SoloBestDPS5
I used this info to populate the Bellator's spreadsheet I maintain (links over in Ret thread initial post). The spreadsheet will automatically run through and find the best priority based on your stats. I've found the best typically has Judgement last, but an alternate sequence with Judgement first is only 1 DPS lower. Going from maximum 5501 to 5500 DPS isn't bad. I found this after testing Judgement last in priority for a week and having some mana problems (fights tend to screw up perfect rotation unless they're Patchwerk).

Set undead to True for Holy Wrath to be added (it impacts effective cooldowns as it can and will be used while another ability has .5 or 1 second left on cooldown, therefore the GCD delays another ability).

If you want it to calculate what is the best DPS plug in your average ability damage in the appropriate fields - should be self explanatory.

No warranties, real or implied.

Last edited by Exemplar : 03/20/09 at 4:05 PM.

Rock: "We're sub-standard DPS. Nerf Paper, Scissors are fine."
Paper: "OMG, WTF, Scissors!"
Scissors: "Rock is OP and Paper are QQers. We need PvP buffs."

Offline
Reply With Quote
Old 03/20/09, 3:57 PM   #24
Alcapwnd
Von Kaiser
 
Draenei Paladin
 
Proudmoore
So after all this simulation what do we have? What's the answer to spell priority?

My armory: The World of Warcraft Armory

Offline
Reply With Quote
Old 03/20/09, 4:12 PM   #25
Exemplar
Bald Bull
 
Human Paladin
 
Scarlet Crusade
Generically following Judgement, Consecration, Crusader Strike, Divine Storm in 3.0.9 is fairly effective. Whether your target is an Undead/Demon or not (for use of Exorcism and HW) typically changes the desirable priority.

In 3.1 it looks like Judgement, Crusader Strike, Consecration, Divine Storm, Exorcism is fairly effective.

If you want what's best for your gear you can try the spreadsheet.

My blunt opinion is, unless you have 0 latency and perfect reaction time, most priorities will be equivalent. As long as you're not backwards (putting Holy Wrath or Divine Storm as most important) you're probably about equally effective. I found not having Judgement as first priority affected my mana regen, which would not occur if latency was 0 and reaction time 0. Since it was it was occasionally delayed extra GCD by other abilities due to latency and imperfect human at the keyboard, it hurt.

TLDR: J, Cons, CS, DS, Exo remains "good enough" if not ideal.

Rock: "We're sub-standard DPS. Nerf Paper, Scissors are fine."
Paper: "OMG, WTF, Scissors!"
Scissors: "Rock is OP and Paper are QQers. We need PvP buffs."

Offline
Reply With Quote
Old 03/21/09, 10:06 AM   #26
zengir
Glass Joe
 
Human Paladin
 
Defias Brotherhood (EU)
With mana regen in mind, we pretty much have to use Judgement as our top priority, which is supported by it being our top DPS spell.
My conclusion after quite a lot of testing is that the best priority, concerning damage AND mana regen would be:
J > Consecration > Crusader Strike > Divine Storm > Exorcism
This does have an execption though, and that is if CS and J cooldowns would clash mid-fight it's always best to use CS first. This is assuming cons won't go off CD during GCD if you cast judgement before CS.

Offline
Reply With Quote
Reply

Go Back   Elitist Jerks » Class Mechanics » Paladins

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Envenom Modeling Aldriana Rogues 86 01/25/09 10:53 AM
Script for Rapidly Marking Targets Astrylian User Interface and AddOns 31 02/29/08 8:42 PM
Resizing Quartz cast bars with /script? diospadre User Interface and AddOns 1 01/08/08 6:14 PM
Modeling Flurry with DW and WF Vulajin Public Discussion 38 12/03/06 5:12 PM