 |
03/12/08, 11:45 AM
|
#841
|
|
Super Macho Man
<>
Orc Shaman
No WoW Account
|

Originally Posted by Joetest
Plus the whole thing for the 'perfect' amount revolves around having a 'clean' rotation and not having your abilities come out of CD or drop off the target at weird times where you can't possibly put them up again without a dps decrease etc. The perfect amount refers to an equal increase in haste where I believe 2 flays fit perfectly between MBs etc. I haven't got intensely into Haste just yet and all my knowledge is based on spreadsheet, lists, and theories at SP.com and not here. I'm rather new here on EJ.com
The general thing I'm seeing is that haste is getting a boost from .508 to a full 1 or very close, that and it affect GCDs so the simple math of 'more is better' doesn't really apply to this very VERY dynamic stat, which relies on the +dmg you have at any given time.
for example you just said it's always 1 to 1 haste to dmg.. well can't I have 0 dmg and 2k haste and do more dps then? I somehow think that theory breaks right there. The numbers vary greatly every time you add more of each.
|
No one said anything of the sort. That said, it looks to be ~1:1 for the first 200 or so haste, and converts quite favorably up to very high levels; using a 1:1 or 1:.9 approximation for quick evals is probably just fine.
The MB MF MF ideal is a bunch of shit, honestly. None of the simulation work cheeba or I have done has come anywhere near showing a spike in DPS at the "ideal haste" point because cooldown clashes, lag, and a number of other things will break that ideal cycle anyway. Not to mention the whole concept of a waitstate and clipped flays making MB MF MF less important that it's presented to be.
Looking at the itemization, generally you'd be trading 6 damage for 5 haste and a socket bonus... and the socket bonuses seem to be 3-5 damage in and of themselves. I think that haste/dmg gemming for socket bonuses will be quite common for spriests.
|
Melador> Incidentally, these last few pages are why people hate lawyers.
Viator> I really don't want to go all Kalman here.
Bury> Just imagine what the world would be like if you used your powers for good.
|
|
|
03/12/08, 1:16 PM
|
#842
|
|
Observation: I am awesome
|
Originally Posted by Kalman
Looking at the itemization, generally you'd be trading 6 damage for 5 haste and a socket bonus... and the socket bonuses seem to be 3-5 damage in and of themselves. I think that haste/dmg gemming for socket bonuses will be quite common for spriests.
|
That's only true on items without blue sockets, which is almost none of them right now. Each blue sockets still trades you 6 damage for a socket bonus (2 damage) and either 7 stamina or 4 spirit. That seems never worth it to me. Even if the piece had two yellow and one blue socket for +5 damage, you have a net loss of 2 spell damage for 4 spirit or 7 stamina. The only blue socket you use is the T6 helm, because it's -1 damage for +7 stamina, or twice as good.
Are there enough pieces with only yellow or red sockets that you can gain the 6 to 10 spell damage loss by trading Mystical Skyfire Diamond for +14 spell damage, +2% int? I just don't see it.
|
|
|
|
|
03/12/08, 1:34 PM
|
#843
|
|
Don Flamenco
|
The new JC neck for one... Sunfire set...
|
|
|
|
03/12/08, 3:19 PM
|
#844
|
|
Super Macho Man
<>
Orc Shaman
No WoW Account
|
Originally Posted by tedv
That's only true on items without blue sockets, which is almost none of them right now. Each blue sockets still trades you 6 damage for a socket bonus (2 damage) and either 7 stamina or 4 spirit. That seems never worth it to me. Even if the piece had two yellow and one blue socket for +5 damage, you have a net loss of 2 spell damage for 4 spirit or 7 stamina. The only blue socket you use is the T6 helm, because it's -1 damage for +7 stamina, or twice as good.
Are there enough pieces with only yellow or red sockets that you can gain the 6 to 10 spell damage loss by trading Mystical Skyfire Diamond for +14 spell damage, +2% int? I just don't see it.
|
Basically everything in Sunwell is blue socket free. T6 boots are the only exception, having a single blue socket in exchange for +2dmg. T6 wrist is R, T6 waist is Y.
Leggings of Calamity: RRY +5dmg
Pantaloons of Growing Strife: RYY +5dmg
Gloves of Tyri's Power: RY +4dmg
Helm of Arcane Purity: MR +5dmg
Robes of Ghostly Hatred: RRY +5dmg
Shoulderpads of Knowledge's Pursuit: RY +5dmg
Sunfire items are RRR and RR
The 6-10 damage loss vs. MSD is lowered by not having a worthwhile blue socket bonus anymore (once you replace T6 hat, of course), and having a number of worthwhile yellow bonuses. If we backgem as well, you can add:
Absolution Handguards (Y, +2 dmg bonus)
Now:
34dmg/5haste or 36 dmg is obvious.
22dmg/5haste or 24dmg is obvious.
5haste/8dmg or 12 dmg is probably 50/50.
27dmg/10haste or 36 dmg less so.
So out of our new items, they basically all do at least as well gemmed haste as damage, and most do better gemmed haste. Even at a fairly low haste valuation, 2-3 pieces of Sunwell loot will wipe out the benefit of MSD vs ESD; that's without accounting for the loss you take to gem a blue gem to activate MSD (1 damage, if you have T6 helm, which I'm assuming you do, 6 dmg if you don't).
|
Melador> Incidentally, these last few pages are why people hate lawyers.
Viator> I really don't want to go all Kalman here.
Bury> Just imagine what the world would be like if you used your powers for good.
|
|
|
03/12/08, 3:28 PM
|
#845
|
|
Observation: I am awesome
|
Thanks for the analysis. I'm glad that at least 40% of my gems won't be spinels. I'm not sure how much it's worth back-gemming T6 gloves is worth it. Depends on whether you include it in your 4 piece bonus, but that seems like the best long term option. Interestingly, this increases the value of T6 legs for keeping the 4 piece bonus, as they also have a yellow slot. Short term that decision will most likely be decided by loot drops.
|
|
|
|
|
03/12/08, 6:01 PM
|
#846
|
|
Super Macho Man
<>
Orc Shaman
No WoW Account
|
Originally Posted by tedv
Thanks for the analysis. I'm glad that at least 40% of my gems won't be spinels. I'm not sure how much it's worth back-gemming T6 gloves is worth it. Depends on whether you include it in your 4 piece bonus, but that seems like the best long term option. Interestingly, this increases the value of T6 legs for keeping the 4 piece bonus, as they also have a yellow slot. Short term that decision will most likely be decided by loot drops.
|
Speaking as someone with a fairly high eval of haste: I won't be regemming my T6 gloves. That's just silly. I might consider picking up the T6 legs and using them on a shadow token, but that's really hard to justify - an extra leg enchant plus wasting the LCE/3xspinel I'm running as is? Since ESD has the easiest requirement EVER (>3 red), there's no real reason to regem a 50/50.
Keeping the T6 bonus as you gear is going to be interesting, for sure - on the brightish side, the tokens drop before any of the H/C/S/G replacement items do, so you can probably get a belt/bracer/boot before you lose a T6 piece.
|
Melador> Incidentally, these last few pages are why people hate lawyers.
Viator> I really don't want to go all Kalman here.
Bury> Just imagine what the world would be like if you used your powers for good.
|
|
|
03/13/08, 11:41 AM
|
#847
|
|
Piston Honda
Blood Elf Paladin
Bonechewer
|
After going through the list of gear for 2.4 it's pretty obvious that the 3 new pieces of T6 are going to be best in slot or very close it, so I'm wondering what people consider the best 4th piece, or is it even worth it. I'm of the mind that the helm is most likely the best trade off however I've seen a lot of people going with the shoulders as well.
|
|
|
|
|
03/13/08, 12:28 PM
|
#848
|
|
Von Kaiser
|
Yeah helm is pretty clearly best 4th t6 item according to my numbers at least.
[Helm of Arcane Purity] -> [Hood of Absolution] is a smaller loss than [Amice of the Convoker] -> [Shoulderpads of Absolution]
The only items where I'd consider it a clear win to go for the socket bonus over straight 12dmg gems would be the shoulders above and the gloves with the same socket setup. If you're keeping the t6 helm where it is only a 1dmg loss to use the blue gem it seems like a tossup with the current numbers for the metas which to use. Still hoping they might listen to the pleas to change the 2% int part on the ESD to something not quite so worthless though.
|
|
|
|
|
03/13/08, 1:59 PM
|
#849
|
|
Observation: I am awesome
|
Originally Posted by Asmo
Yeah helm is pretty clearly best 4th t6 item according to my numbers at least.
[Helm of Arcane Purity] -> [Hood of Absolution] is a smaller loss than [Amice of the Convoker] -> [Shoulderpads of Absolution]
The only items where I'd consider it a clear win to go for the socket bonus over straight 12dmg gems would be the shoulders above and the gloves with the same socket setup. If you're keeping the t6 helm where it is only a 1dmg loss to use the blue gem it seems like a tossup with the current numbers for the metas which to use. Still hoping they might listen to the pleas to change the 2% int part on the ESD to something not quite so worthless though.
|
What about keeping the T6 gloves? Gloves have fewer stat points allocated to them than other slots, so it's the natural choice. I count a 21 spell damage loss from keeping the T6 helm by the way, which is not insubstantial.
Er nevermind. [Gloves of Tyri's Power] is grotesquely better than [Handguards of Absolution].
|
|
|
|
|
03/14/08, 6:00 AM
|
#850
|
|
Glass Joe
Undead Priest
Grim Batol (EU)
|
DPS Simulator help plz
OK i'm trying to code my own dps simulator to see how spell haste will affect shadowpriest's spell rotation but i'm having some problems with it... Can anyone help with it? I'm a bit noob about this programming stuff...
Here it is:
#include <stdio.h>
#include <stdlib.h>
void globalcd(int vt, int swp, int swd, int mb, int ve, int t, int gcd)
// This function represents the time flow, we consider the time has passed equal to gcd everytime we call this function.
// vt,swp,swd,mb,ve values are spell cooldown counters (dot durations are considered cooldowns). Gcd is global cooldown.
// When a spell is NOT on cooldown, that means its cooldown counter is equal to a greater number than it's cooldown.
// t is time (miliseconds)
{
t=t+gcd;
swp=swp+gcd;
vt=vt+gcd;
ve=ve+gcd;
mb=mb+gcd;
swd=swd+gcd;
}
int main()
{
int vt, swp, swd, mb, ve, t, gcd, tmax, n_vt, n_swp, n_mb, n_ve, n_swd, n_mf, totalmanaspent, spellhasterating, spellhaste;
// n_vt represents how many times we cast v_nt in our spell rotation
t=0;
swp=vt=swd=mb=ve= 100000; // We set the initial values high, to represent no spell is on cooldown.
n_vt= n_swp= n_mb= n_ve= n_swd= n_mf= 0;
printf("Enter your spell haste rating\n");
scanf("%d",&spellhasterating);
spellhaste = spellhasterating / 15;
gcd = 1500 - spellhaste;
printf("How long is the combat? (In miliseconds)\n");
scanf("%d",&tmax);
while (t<=tmax);
{
if (vt>= 15000) // Casts VT if not on cd
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
vt = 0;
n_vt ++;
}
else if (swp>=24000) // Casts SW: P
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
swp = 0;
n_swp ++;
}
else if (ve>=60000) // Casts VE
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
ve = 0;
n_ve ++;
}
else if (mb>=5500) // Casts MB
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
mb = 0;
n_mb ++;
}
else if (swd>=12000) // Casts SW: D
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
swd = 0;
n_swd ++;
}
else //Casts Mind Flay
{
globalcd(vt, swp, swd, mb, ve, t, gcd);
globalcd(vt, swp, swd, mb, ve, t, gcd);
n_mf ++;
}
}
totalmanaspent = (195*n_mf) + (382*n_mb) + (425*n_vt) + (52*n_ve) + (309*n_swd) + (575*n_swp);
printf("In your spell rotation; \n Number of VT casts = %d\n Number of SW: P casts = %d\n Number of MB casts = %d\n Number of SW: D casts = %d\n Number of VE casts = %d\n Number of MF casts = %d\n", n_vt,n_swp,n_mb,n_swd,n_ve,n_mf);
printf("Total mana spent = %d\n", totalmanaspent);
return 0;
}
Currently the output is this:
Enter your spellhaste rating:
286
How long is the combat (in miliseconds)?
360000
And that's it. It never gets to the loop part. Where is the problem?
Thanks all
|
|
|
|
|
03/14/08, 6:37 AM
|
#851
|
|
Foobar
Troll Priest
Azjol-Nerub (EU)
|
This might not be the place for your C questions :p
You have placed a ; after your while loop. So the things within the block won't execute. After fixing that, it still won't work. This is because you are not modifying your variables with the globalcd() function. You are passing them, but not passing the modified values back. The lovely world of pointers comes here into play. Your globalcd decleration should look like:
void globalcd(int *vt, int *swp, int *swd, int *mb, int *ve, int *t, int gcd)
And calling the function like:
globalcd(&vt, &swp, &swd, &mb, &ve, &t, gcd);
And now modifying a variable within the globalcd function will look like:
*mb=*mb+gcd;
I suggest The C programming language SE to learn about pointers.
And if you do this all correctly you would end up with 100 haste and 360000 duration with an output like:
In your spell rotation;
Number of VT casts = 20
Number of SW: P casts = 13
Number of MB casts = 40
Number of SW: D casts = 21
Number of VE casts = 6
Number of MF casts = 71
Total mana spent = 51901
|
* Bla
|
|
|
03/14/08, 6:43 AM
|
#852
|
|
Von Kaiser
Blood Elf Rogue
Outland (EU)
|
I'm not sure this is the best place to discuss programming, and my eyes bleed when I read un-indented code in a non-fixed-width font... Anyway, ignoring your algorithm's flaws, and at first sight, I think this is why your loop never ends:
void globalcd(int vt, int swp, int swd, int mb, int ve, int t, int gcd);
You are passing the arguments by value, so anything you do with them in the implementation of that function will not alter the variables you pass, thus, your t never gets updated inside the loop, so the (t<tmax) condition is invariant.
Try this instead:
void globalcd(int &vt, int &swp, int &swd, int &mb, int &ve, int &t, int &gcd);
The results of your simulation will also be wrong, because of a few flaws in your algorithm, but that's another story, and I'm sure you can nail those down once you get the loop to end.
To avoid posting again things like this, I recommend you learn what a debugger is, how to use it, and why it's useful.
Also, please make use of the [code] tags when posting large amounts of code.
Last edited by lightstrike : 03/14/08 at 6:50 AM.
|
|
|
|
|
03/14/08, 8:56 AM
|
#853
|
|
Glass Joe
Dwarf Priest
Arathor (EU)
|
the semi-colon on the end of this line will stop your loop working. lightstrike is also correct - you need to be using pointers in this function.
|
|
|
|
|
03/14/08, 9:09 AM
|
#854
|
|
Glass Joe
Undead Priest
Grim Batol (EU)
|
Thanks for your help guys, the program works as intended now. I know this was a irrelevant topic, but i didn't know where to find people with both knowledge in c language and wow. 
|
|
|
|
|
03/14/08, 10:51 AM
|
#855
|
|
Observation: I am awesome
|
I have a bunch of code improvement suggestions I almost sent in a PM, but I think there are enough programmers here that this would be generally useful.
A) Your haste formula is incorrect. At least use the 15.7 rating to haste percent conversion (and be careful with your reconversion of float to int). Also, haste is not subtractive, so GCD = 15000 - 10*haste_percent isn't correct. You want GCD = (int) (15000 / (1.0 + haste_percent * .01)).
B) You are passing around too much data to function calls. Create a structure to hold all your spell cooldowns and just pass in one pointer (or reference in C++) to that structure to the function that accrues time. It will be much faster. If you have access to C++, make inline the accrual function for extra speed.
C) The data structure makes you do too much arithmetic. Rather than increasing the cooldown on each of 6 spells, just increment the current point in time. Whenever you cast a spell, update the current timestamp and ONLY that spell's cooldown. Your loop will then check which of your spells have cooled down by the current time.
For example suppose it's time 5 and everything is cooled down (all cooldown values are <= 5). You cast mind blast and then update the current time to 5 + GCD = 6.5 and the mind blast cooldown to 5 + GCD + 5.5 seconds. Next loop step you check which spells have cooldowns before 6.5 seconds, and so on.
D) The Mind Flay call should use a time of 2*GCD rather than two calls, by the way
E) If you want useful results, you'll need support for lag and for logic that has the program wait for up to 1 second for thing like Mind Blast to cooldown rather than Mind Flay. The precise logic for this is really complicated to do correctly for all cooldowns, by the way, so if it just works for Mind Blast that's good enough.
If your do all of A-D, you'll have a guaranteed speed up of 6x, and probably more like 10x.
|
|
|
|
|
|