A wonderful Warrior Aggro thread on Blizz forums
#21
You should probably be careful about going overboard on the comparisons to D2. They were done by completly different teams. Infact, IIRC most of the Diablo team left to do guild wars.
Reply
#22
oldmandennis,Jul 19 2005, 05:29 PM Wrote:You should probably be careful about going overboard on the comparisons to D2.  They were done by completly different teams.  Infact, IIRC most of the Diablo team left to do guild wars.
[right][snapback]83824[/snapback][/right]

My impression was that the guys who left were mostly the high-level designer-architect type. I suspect a fair number of the actual programmers are still around working on some Blizzard project. They also have a tendency, regardless of who's working on the project, to reuse their code libraries. Take MoPaQ, for example, which has been used in pretty much every Blizzard product for quite a number of years now. Even if different programmers are working on WoW, I don't think its a stretch to imagine that they are reusing the same fixed-point library as well as the mpq library.

Your point is well taken, though. We really don't have enough information at this point to draw any sort of detailed conclusions about code running on the servers. Its all speculation at this point. I think D2 is still useful as a reference, however, if for no other reason than the fact that many of the techies here are very familiar with the details of D2 from disecting that game, so it serves a common frame of reference if nothing else.

Of course, this all brings up the big question: Does it really matter? Obviously having a model for how the game handles aggro would be helpful for a deeper understanding of the game, but if the model doesn't match the actual server code have we really lost anything? The hacker in me wants to dig in an figure out the details of the system, but the gamer in me would rather settle for "close enough" and get back to actually playing the game ;)
Reply
#23
chippydip,Jul 19 2005, 10:07 AM Wrote:At this point I think it may be less of a sure bet that the servers are using fixed-point math. The performance difference has narrowed considerably since the D2 days. I agree, though, that even if floating point is being used, the numbers should still come out to nice integers for "human" reasons ;)
While I agree that they have been making good improvements in how many computers will handle their floating point operations, none of the algorithms I have ever heard of have managed to get away from needing to do the equivalent of 4+ interger operations to handle an arbitrary floating point calculation. The major speed ups in the floating point systems has been by having the system better able to 'recognise' when it can simplify a floating point operation to one of the few cases where it can be handled as one of the special 1 or 2 step integer calculations (with an addition integer calculation to renormalise the final result) or by the use of extensive internal look up table to replace actual calculations entirely. It still comes down to the integer calculation only processes beating the floating point systems in speed and accuracy. The integer only processes just do not have as huge of an advantage over the floating operations as they had about 10 years ago (much greater than a factor 4 back then).

Quote:The only problem I see with trying to fine the "basic unit of hate" is that it will complicate research terribly each time the more data is discovered and the base unit is refined. If all damage ends up generating the same amount of hate, it might be easier to just define some arbitrary unit, like 1 damage = 1 hate, and be done with it.
Yes, this definitely looks like we are off by a power of 2, but I think its probably larger than 8ths...
-clip-
If they are indeed using fixed-point math, I wouldn't at all be surprised if they are using the same fixed point library they used in D2. This would mean 256th which is a fairly common choice in fixed-point libraries. The only way to be sure, however, is to find some tests where you can detect the rounding errors and imply the precision from that. As of now, we don't have nearly enough data to make any definite conclusions, but my money's on 256th.
I agree that is likely more than a factor of 8ths, but there is not enough information right now to provide more accuracy than that. Also there were many portions in Diablo2 that were set up to track and handle several of the variables only in 8ths as the smallest increments. It was just that most players were more consistently interested in their Life and Mana and what ever game mechanics that worked on those 2 stats; and those 2 stats did use the 256th scale for handling their data. The techniques for handling in 1/8ths is just as simple to use and just as well supported as the 256th scale was.

Diablo 2 also used a system that did data updates for things like healing and slow damage effects that used a 1/25th second time scale to do its duty cycle on this stuff. World of Warcraft appears to be doing its duty cycle for such things on a longer time increment of between 1 second and 3 seconds. With the much larger time scale for doing the game maitence duty (like DoTs and HoTs) there is not as much need to have a very fine graduation of things like damage or other similar effects.

Quote:I see the "healing*3" as being problematic since testing indicates that PW:S is about 1/2 the aggro per point as normal healing. We also have Paladin self-heals which are supposed to generate less aggro per point that normal heals IIRC. With only 2/8 and 1/8 as lower values, this clearly seems too small an increment.


Even this simple example shows a possible weakness with 1/8 units, depending on how aggro bonuses are calculated. Is the base factor modifed in defensive stance like: 8 * 1.1 = 8.8 which rounds to 8 (remember, in the D2 fix-point world, remainders were always truncated). This means defensive stance would have no effect on aggro. Now, it doubt this is really the case, but I don't have enough info to even be sure of this. Even qualitatively, I think it would be quite difficult to see the effect of 10% extra hate when playing. More likely, any differences are a result of 10% less damage and, therefore, 10% less healing. If Defiance is used, a 25% bonus would be much more noticeable, but it would also effect the calculations with even these coarse numbers (8 * 1.25 = 10).

In both these cases you are starting to make assumptions that do not really reflect how things would occur in the game. The first is that cases you are looking at could or would occur normally in the game. And the second is how the game does go about handling some of the cases that may in fact be what would appear to be special cases if looking at the code. The D2 combat system was rife with this later type of conditional operations.

In the first case you are looking at a Power Word: Shield. So far most of seem to be looking at the hate generation probably being a *k factor of damage/healing/other numeric + fixed value of the skill(rank X) in question. Last time I looked at the various PW:S skills, they all gave a fixed shield strength. This type of skill is ideal to be set up as a *zero multiplier and +fixed hate way of adding to the hate. In the case of the PW:S the hate is likely the shield strength divided by 2 times the standard heal multiplier. In the scale I am suggesting this would be
rank 1: 66 hate
rank 2: 132 hate
rank 3: 237 hate
...
rank 10: 1413 hate

Some of these values might be more easily tested to see how precisely they line up to what I listed here or to a more human centric value like say 1400 or 1500 for the rank 10 version. Note that all three values (1400, 1413, 1500) are likely close enough to that halfway point that it would be difficult to distinguish without careful testing.

So note Chippy that at no point for this case did there need to be a finier graduation than the 1/8 scale I listed earlier.

Now on the second case, I do remember quite well that the integer calculations are going not have an fractional amount left; I have reminded others of that all to often. But you on the other hand appear to not recall how they went about doing those bonus to base value calculations from the example you gave. You also seem to be using the case of 1point of damage (=8 hate) to try to make your case. Most integer systems like this tend to give quirky and odd results at very low values. They did so much so that both in v1.00-1.09 and v1.10 of D2 that they used special case code for weapon damage and enhanced damage on those weapons to make sure they actually did have a true damage increase. They did not do such special coding in some of the other areas of D2 where the descrpencies would not readily show to most players that did not do detailed examinations of what was happening. This is why I made the comment to Olon97 about the different ranks having different +hate factors; it should be easier at the low damage/healing levels to more easily tease out some of the base mechanics is someone so desires instead of using much larger values like is usually done with level 60 characters with full spreads of various talents.

To do a more realistic example of how defensive stance and/or defiance would end up applying in the game, trying using some damages that are more in line with with what a level 10 warrior (required to get defensive stance) or 20-24 warrior (20 being the minimum to aquire the Defiance talent) would likely be doing. I will use a somewhat low damage value of say 30 damage in this case.

Hate for battle stance no talents
30 damage*8hate/damage= 240 hate

hate for defensive stance no talents
( ((30*(100-10))/100) *8*(100+10) )/100 =
( ((30*90)/100) *8*(110) )/100 =
( ((2700)/100) *8*(110) )/100 =
( 27 *8*(110) )/100 =
( 23760 )/100 = 237 hate <-possibly why some can do just as well with an arms-fury spec as they do with being in defense stance.

hate for defensive stance and full defiance talent.
( ((30*(100-10))/100) *8*(100+10+15) )/100 =
( ((2700)/100) *8*(125) )/100 =
( 27 *8*125 )/100 =
( 27000 )/100 = 270 hate

I would say in both these cases using better examples and the same type of methods for doing the bonus affects as would have been used in D2, it is much easier to see what the bonuses of using defensive stance and defiance would be like. Also if you assume that the damage after the penalty for being in defensive stance were still a 30 point damage applied to the target, then the hate values would be 264 and 300.

Reply
#24
Quote:I agree that is likely more than a factor of 8ths, but there is not enough information right now to provide more accuracy than that.&nbsp; Also there were many portions in Diablo2 that were set up to track and handle several of the variables only in 8ths as the smallest increments.&nbsp; It was just that most players were more consistently interested in their Life and Mana and what ever game mechanics that worked on those 2 stats; and those 2 stats did use the 256th scale for handling their data.&nbsp; The techniques for handling in 1/8ths is just as simple to use and just as well supported as the 256th scale was.

Doh! Of all people, I should have remembers that other fractions were being used in the game. Especially after redoing my skill planner for the 1.10 patch and seeing all the bitshifting that was going on in the .tbl files.

Quote:In the first case you are looking at a Power Word: Shield.&nbsp; So far most of seem to be looking at the hate generation probably being a *k factor of damage/healing/other numeric + fixed value of the skill(rank X) in question.&nbsp; Last time I looked at the various PW:S skills, they all gave a fixed shield strength.&nbsp; This type of skill is ideal to be set up as a *zero multiplier and +fixed hate way of adding to the hate.&nbsp; In the case of the PW:S the hate is likely the shield strength divided by 2 times the standard heal multiplier.&nbsp; In the scale I am suggesting this would be
rank 1: 66 hate
rank 2: 132 hate
rank 3:&nbsp; 237 hate
...
rank 10: 1413 hate

Now that you mention it, this seems like the obvious way to handle PW:S ;) I haven't played a priest enough to know, but a good test of this theory would be if the aggro from shielding seemed to be a lump sum when the shield is cast or if it builds up over time as damage is blocked by the sheild.

Quote:So note Chippy that at no point for this case did there need to be a finier graduation than the 1/8 scale I listed earlier.

Aggreed. Paladin self-heals don't fit this model, but I have no idea how much hate reduction (if any) they have over priest heals, so a 2/8 or 1/8 factor just might fit.

Quote:Now on the second case, I do remember quite well that the integer calculations are going not have an fractional amount left; I have reminded others of that all to often.&nbsp; But you on the other hand appear to not recall how they went about doing those bonus to base value calculations from the example you gave.&nbsp; You also seem to be using the case of 1point of damage (=8 hate) to try to make your case.&nbsp; Most integer systems like this tend to give quirky and odd results at very low values.&nbsp; They did so much so that both in v1.00-1.09 and v1.10 of D2 that they used special case code for weapon damage and enhanced damage on those weapons to make sure they actually did have a true damage increase.&nbsp; They did not do such special coding in some of the other areas of D2 where the descrpencies would not readily show to most players that did not do detailed examinations of what was happening.&nbsp; This is why I made the comment to Olon97 about the different ranks having different +hate factors; it should be easier at the low damage/healing levels to more easily tease out some of the base mechanics is someone so desires instead of using much larger values like is usually done with level 60 characters with full spreads of various talents.

I guess I wasn't clear enough. It seems to me there are several ways the aggro bonus could be calculated. It could either modify the "hate factor" directly, or it could modify the damage, or it could be tacked on at the very end. Using the numbers from your example we could have one of the following:

(30*(100-10)/100)*8*(100+10)/100 <- tacked on at the end
((30*(100-10)/100)*(100+10)/100)*8 <- modifying damage
(30*(100-10)/100)*(8*(100+10)/100) <- modifying "hate factor"

Obviously there are plenty more possibilityes. My point was simply that, depending on what order the multiplications were done, 8ths might not be enough to hide some significant rounding error. More testing is definitely needed to try and tease some of these details out. I discovered the MobHealth2 mod today which sounds like it can properly track multiple mobs with the same name and level, so I might take a look at that code and see how difficult it would be to start collecting some aggro data.

Quote:To do a more realistic example of how defensive stance and/or defiance would end up applying in the game, trying using some damages that are more in line with with what a level 10 warrior (required to get defensive stance) or 20-24 warrior (20 being the minimum to aquire the Defiance talent) would likely be doing.&nbsp; I will use a somewhat low damage value of say 30 damage in this case.

Hate for battle stance no talents
30 damage*8hate/damage= 240 hate

hate for defensive stance no talents
( ((30*(100-10))/100) *8*(100+10) )/100 =
( ((30*90)/100) *8*(110) )/100 =
( ((2700)/100) *8*(110) )/100 =
( 27 *8*(110) )/100 =
( 23760 )/100 = 237 hate&nbsp; <-possibly why some can do just as well with an arms-fury spec as they do with being in defense stance.

hate for defensive stance and full defiance talent.
( ((30*(100-10))/100) *8*(100+10+15) )/100 =
( ((2700)/100) *8*(125) )/100 =
( 27 *8*125 )/100 =
( 27000 )/100 = 270 hate

I would say in both these cases using better examples and the same type of methods for doing the bonus affects as would have been used in D2, it is much easier to see what the bonuses of using defensive stance and defiance would be like.&nbsp; Also if you assume that the damage after the penalty for being in defensive stance were still a 30 point damage applied to the target, then the hate values would be 264 and 300.
[right][snapback]83881[/snapback][/right]

I really like this example. After figuring out (duh!) that the 90% modifier in there was the damage reduction from Defensive stance, it was cool to see that the two effects of that stance basically cancel out. It seems that, without defiance, the only reason for defensive stance is to be able to use Revenge (though, considering the aggro/rage of the skill, this might be reason enough).
Reply
#25
chippydip,Jul 19 2005, 05:15 PM Wrote:It seems that, without defiance, the only reason for defensive stance is to be able to use Revenge (though, considering the aggro/rage of the skill, this might be reason enough).
[right][snapback]83885[/snapback][/right]

Umm, I think the main reason to use defensive stance is the extra 10% damage reduction on top of what you get with items that applies across the board, even to non-physical damage. I mean, the reason a warrior should be holding aggro is because he is going to take the least amount of damage by having aggro.
Conc / Concillian -- Vintage player of many games. Deadly leader of the All Pally Team (or was it Death leader?)
Terenas WoW player... while we waited for Diablo III.
And it came... and it went... and I played Hearthstone longer than Diablo III.
Reply
#26
Concillian,Jul 20 2005, 07:39 PM Wrote:Umm, I think the main reason to use defensive stance is the extra 10% damage reduction on top of what you get with items that applies across the board, even to non-physical damage.&nbsp; I mean, the reason a warrior should be holding aggro is because he is going to take the least amount of damage by having aggro.
[right][snapback]83944[/snapback][/right]

The damage reduction is certainly nice for when things go bad and/or for reducing the amount of healing (and thus aggro) the prist/druit/etc. has to do. My observations from low-level instances, though, is that normally the healer could easily do 10% more healing for the tank. (Obviously this is not always the case). In any event, my comments were more from an aggro perspective that from a survivability. The 10% damage reduction is only useful if it prevents you from dieing or prevents the healer from having to heal so much that they draw aggro. The less this is an issue, the less useful defensive stance seems to be. Obviously in high-end instances, this will be important in most major battles. In a lot of other cases with a good group it probably doesn't make nearly as much difference.

In conclusion: Defensive stance alone is good for survivability. Revenge and Defiance are what make it better at holding aggro.
Reply
#27
Um, maybe I'm remembering wrong here but doesn't defensive stance say something about increasing aggro generated. Your ability to hold aggro as a warrior is key when tanking and you have to remember that damage is not your main hate generator. As far as I can tell your numbers were simply looking at hate generated by damage and not by the internal hate of things like sunder. I know that I can easily tell when I forget to switch into defensive stance after a charge pull because I lose control of the mob very quickly.

I agree that at lower levels you can probably get away with this more often but at higher levels it generally becomes more important that a tank maintains aggro for at least a solid majority of the time. You pointed out the reduction of damage reducing heal aggro (and this can be more important if you don't have a priest with subtlety) and more powerful sunders are always nice. I don't doubt that a group could have a tank in battle stance; but if he is not putting out enough extra damage to offset the loss of the extra aggro from defensive stance then the party might have to change tactics a bit to compensate.

I also just looked back at your numbers and wonder where you got the 10% increase in aggro while in defensive stance from. If this number is different it could significantly change the results. I admit that I haven't looked for it; but I haven't seen a solid percentage attached to defensive stance to know that it is indeed 10% extra aggro generation. In a sense it would seem kind of silly to be less than 15% or else the defiance talent would be more than doubling your effectiveness.

- mjdoom
Stormrage:
Flyndar (60) - Dwarf Priest - Tailoring (300), Enchanting (300)
Minimagi (60) - Gnome Mage - Herbalism (300), Engineering (301)
Galreth (60) - Human Warrior - Blacksmithing (300), Alchemy (300); Critical Mass by name, Lurker in spirit
ArynWindborn (19) - Human Paladin - Mining/Engineering (121)
Reply
#28
Frustrating to speculate about things like defensive stance aggro bonus when more test data could simply clear up the questions.

Celandro on the original thread who attempted to deconstruct Cop's results to non-def stance / non-defiance numbers factored defensive stance as a larger aggro multipler.

Quote:Since you have defiance, I tried to work out where the 4.1 number comes from...

The following is theory craft:
100 Base heal hate = 150 Base Damage hate

Priest talent:
100 Base heal hate => 80 heal hate


Warrior defensive:
100 base damage hate = 200 base damage hate (Note:
this is a guess, but 250 for a warrior in defensive makes the numbers come out right)
Warrior defensive + talent:
100 base damage hate = 215 base damage hate

No talents:
100 heal = 150 damage = 1.5 ratio
No talents, defensive stance:
100 heal = 300 damage = 2.5 ratio
Warrior talent(+15%), defensive stance:
100 heal = 322.5 damage = 3.23 ratio
Warrior talent(+15%), priest talent (-20%), defensive stance
80 heal = 322.5 damage = 4.03 ratio
Priest talent (-20%), defensive stance
80 heal = 300 damage = 3.75 ratio
Reply
#29
chippydip,Jul 19 2005, 04:15 PM Wrote:I discovered the MobHealth2 mod today which sounds like it can properly track multiple mobs with the same name and level, so I might take a look at that code and see how difficult it would be to start collecting some aggro data.
An easier starting point for collecting aggro data, IMO, is the current version of damage meters. Yes, it doesn't handle multiple mobs well, but I would think testing on one mob at a time, recording heal & damage data per player character, then resetting would be a better approach anyway.

All the interesting parsing stuff is in the "localization.lua" file in the "DamageMeters_ParseMessage" function.

DamageMeters already has the capability to store a "snapshot" (pause parsing), and it could be extended to save multiple snapshots which could later be extracted out of savedvariables.lua and analyzed.

I'm hoping to re-calibrate the skill hate bonuses into their equivalent values for normal untalented / non-defstance damage and normal heals. Then when damage meters detects that I use revenge, sunder, etc. add that bonus to my damage & heal totals. That way if I synch with people in my party who also have damage meters installed, as long as we reset on each new mob, my reported "damage" and "heals" should really be an approximation of where the current aggro bar is (barring stuns/knockback).
Reply
#30
Not sure where I saw this, but I remember someone seeing that aggro generated in Battle and Berserker stances is only 80% of "normal" aggro (achievable only through being in "no stance" state, somewhat hard to accomplish). Defensive stance, if I remember correctly, causes 120% of "normal" aggro. Defiance talent bumps this up to 135% of "normal" aggro.
Reply
#31
mjdoom,Jul 21 2005, 01:41 PM Wrote:Um, maybe I'm remembering wrong here but doesn't defensive stance say something about increasing aggro generated.&nbsp; Your ability to hold aggro as a warrior is key when tanking and you have to remember that damage is not your main hate generator.&nbsp; As far as I can tell your numbers were simply looking at hate generated by damage and not by the internal hate of things like sunder.&nbsp; I know that I can easily tell when I forget to switch into defensive stance after a charge pull because I lose control of the mob very quickly.

Yeah, I was mostly commenting on how the increased aggro was canceled out by the decreased damage. This obviously wouldn't cancel nearly as much with skills that are used primarily for the "hidden aggro" as sunder usually is. In any case, it looks like those calculations were off anyway (see below).

Quote:I also just looked back at your numbers and wonder where you got the 10% increase in aggro while in defensive stance from.&nbsp; If this number is different it could significantly change the results.&nbsp; I admit that I haven't looked for it; but I haven't seen a solid percentage attached to defensive stance to know that it is indeed 10% extra aggro generation.&nbsp; In a sense it would seem kind of silly to be less than 15% or else the defiance talent would be more than doubling your effectiveness.

I remembered seeing two 10% numbers in the skill description and thought that one of those was the aggro bonus. Turns out this is not the case (those two numbers are for reduces damage to tank and reduces damage to mobs... it just says that aggro is increased, but not by how much). I checked allakhazam and found this interesting tidbit, though. It appears that the aggro bonus in defensive stance may actually be 30%, which means the defiance talent could boost this up to 45% which is a huge overall aggro boost for only a little lost damage. I'm not sure where they got this number from, but I suppose it can't be any less accurate that the 10% figure I pulled out of thin air ;)
Reply
#32
Olon97,Jul 21 2005, 06:53 PM Wrote:An easier starting point for collecting aggro data, IMO, is the current version of damage meters. Yes, it doesn't handle multiple mobs well, but I would think testing on one mob at a time, recording heal & damage data per player character, then resetting would be a better approach anyway.

Yeah, this sounds like a much better idea. I was simply speaking from a conceptual feasibility standpoint. Wondering if it would be possible to come up with a mod that could reliably gather data through the course of normal gameplay. After looking through the MobHealth2 code, it doesn't actually keep track of separate mobs. It just identifies mobs based on a combination of their name and level and assumes all mobs with the same name and level will have the same HP (which seems to be the correct assumption). This allows is to calculate remaining HP on a mob you target that has already taken some damage, but it doesn't actually track the fact that you may have seen that specific mob before.

It doesn't seem like the scripting interface is very object-oriented at all, so there is no way to compare any sort of unit object by reference (which could help keep track of separate mobs). The only way I can think to even attempt to track multiple mobs is to repeatedly tab through them and track their positions and guess which ones are the same from the last "scan". This is similar to how that mini-map radar mod works (don't remember the name right now), but in the case of that mod, they don't have to figure out which mobs are the same from one scan to the next.

The only way I can think to get a clean set of data is to have a player target the mob from before the pull until the mob is dead (or until you want to stop collecting data). I'd like to keep track of exactly what skills were used in what order so that if we learn more about how aggro works we don't have to throw out all the old data. I'm not sure if there is enough info in the combat log to get this level of detail from other players that are attacking the same mob or not (haven't looked into that yet). I'll dig into this more over the weekend and see what I can figure out.
Reply
#33
chippydip,Jul 21 2005, 07:38 PM Wrote:Yeah, I was mostly commenting on how the increased aggro was canceled out by the decreased damage. This obviously wouldn't cancel nearly as much with skills that are used primarily for the "hidden aggro" as sunder usually is. In any case, it looks like those calculations were off anyway (see below).
I remembered seeing two 10% numbers in the skill description and thought that one of those was the aggro bonus. Turns out this is not the case (those two numbers are for reduces damage to tank and reduces damage to mobs... it just says that aggro is increased, but not by how much). I checked allakhazam and found this interesting tidbit, though. It appears that the aggro bonus in defensive stance may actually be 30%, which means the defiance talent could boost this up to 45% which is a huge overall aggro boost for only a little lost damage. I'm not sure where they got this number from, but I suppose it can't be any less accurate that the 10% figure I pulled out of thin air ;)
[right][snapback]84008[/snapback][/right]

Ah that's it, it was 30% extra, not 20%. Those values are directly from game (data mining I think). Basically the post I was reading said that a warrior in defensive stance with defiance generates 81% more aggro then a warrior in Battle or Berserker stance. Thottbot has a clearer view of the values:

Defensive stance:
http://www.thottbot.com/?sp=7376
(Notice Mod Threat = 30, so 130% "normal" aggro)

Battle stance:
http://www.thottbot.com/?sp=21156
(Notice -20 threat in this stance)

Berserker stance:
http://www.thottbot.com/?sp=7381
(-20 threat again)

I suppose the question would be whether Defiance multiplies or adds to the Defensive stance bonus, since that would change numbers somewhat. As chippy said, I would think it adds, as all other mods do.
Reply
#34
chippydip,Jul 21 2005, 11:54 AM Wrote:I'd like to keep track of exactly what skills were used in what order so that if we learn more about how aggro works we don't have to throw out all the old data. I'm not sure if there is enough info in the combat log to get this level of detail from other players that are attacking the same mob or not (haven't looked into that yet). I'll dig into this more over the weekend and see what I can figure out.
No, you can't get specific skill use data from other players (for all attacks). You can however have each person in the experiment load the mod and extract saved data from SavedVariables.lua afterwards to compare notes.

The block of code after line 421 of Localization.lua on version 3.0 of Damage Meters is where you would hook into for tracking your own skill use. Just add something like:
Code:
if (spell == "Revenge")
&nbsp; My_Increment_Revenge_Count();
&nbsp; My_AddSpellToSpecificOrder(spell);
elseif (spell == "Shield Slam")
&nbsp; My_Increment_ShieldSlam_Count();
&nbsp; My_AddSpellToSpecificOrder(spell);
elseif...
.
.
.
end
The relevant healing hooks are a bit more spread out, but that stuff starts around line 801 of localization.lua.
Reply
#35
lemekim,Jul 21 2005, 08:02 PM Wrote:Ah that's it, it was 30% extra, not 20%. Those values are directly from game (data mining I think). Basically the post I was reading said that a warrior in defensive stance with defiance generates 81% more aggro then a warrior in Battle or Berserker stance. Thottbot has a clearer view of the values:

How accurate is that 81%? Is that something that a theory-craft number? Or something based on in-game research? If that's for real, then it supports the idea that the aggro bonuses are added rather than multiplied:

Base thread: 100%
Battle/'zerker threat: 80%
Defensive thread: 100% 30% + 15% = 1 + 0.3 + 0.15 = 1.45 = 145%
or: 100% * 130% * 115% = 1 * 1.3 * 1.15 = 1.45 = 149.5%

Total difference between batter and defensive is then either:
145% / 80% = 1.8125 => 81.25% bonus
or
149.5% / 80% = 1.86875 => 86.875% bonus

That should be enough of a difference to show up fairly easily with some in-game testing.

If we stack the priest's aggro reduction on there as well (which is multiplicative since they are handled separately) we get a total bonus of:
1.8125 / 0.8 = 2.265625 => 127% bonus

This means that with a fully specs defensive warrior and priest (or druid presumably), the healer can heal more than twice as much for the same skill usage of the warrior without drawing aggro. This should translate into being almost twice as good of a tank/healer combination.

Looking at just the damage side of things, with the full talent setup, the healer can heal the tank for 4.1 health for every damage the tank does. Wth an untalented healer and battle/'zerker warrior, that ratio falls to only 1.8 health for every damage done!
Reply
#36
chippydip,Jul 21 2005, 02:46 PM Wrote:Looking at just the damage side of things, with the full talent setup, the healer can heal the tank for 4.1 health for every damage the tank does. Wth an untalented healer and battle/'zerker warrior, that ratio falls to only 1.8 health for every damage done!
And there you have the root of the "sucky warrior" phenomenon. Leveling up, the solo warrior learns to rely on battle stance. Those who think they can continue those battle stance habits and still do their tanking job leave a sour taste in their party-mates' mouths.

What is interesting about the -20 mod for battle and beserk stance is that equalling a party mate's DPS + 1 in battle stance would not be sufficient to hold aggro over them. You would need their damage + 20% more? Tall order...

That said, I suspect the multipliers are raw damage only and the fixed hate bonus on various skills is constant (one of the reasons why folks disparage defiance). Some warriors who tank in Battle stance just spam sunder, and as such may get away with it from time to time.

Also interesting is this Rogue Passive - appears they permanently get the same modifier as Beserk & Battle stances, whereas none of the other DPS classes have a universal passive show up on a "Apply Aura Mod Threat" search.
Reply
#37
chippydip,Jul 21 2005, 03:38 PM Wrote:I remembered seeing two 10% numbers in the skill description and thought that one of those was the aggro bonus. Turns out this is not the case (those two numbers are for reduces damage to tank and reduces damage to mobs... it just says that aggro is increased, but not by how much). I checked allakhazam and found this interesting tidbit, though. It appears that the aggro bonus in defensive stance may actually be 30%, which means the defiance talent could boost this up to 45% which is a huge overall aggro boost for only a little lost damage. I'm not sure where they got this number from, but I suppose it can't be any less accurate that the 10% figure I pulled out of thin air ;)
[right][snapback]84008[/snapback][/right]

I too looked at the numbers in the defensive tooltip wrong on what they actually said. Looking at what was listed on Allakhazam and the numbers listed by lemekim from Thottbot; it appears that these are values pulled from dataming dig into some of the files. Presumably Blizzard has not gone to the trouble of putting fake numbers for these on the client while using a different set internally on the server. Some initial testing at setting up some base line data using the fewest skills possible (non-skilled damage vs. healing/damage from second particapiant should show the accuracy of this). Looking through the list of values that can be seen from link that Olon97 provided we would have:

no stance and most characters base rate of hate generation = 100%
warrior battle stance and berserker stances = 80%
warrior defensive stance and druid bear stance = 130%
Rogue Passive (DND) = 80%

This last one concerns me because of the (DND) listing at the end. This type of notation may be indicating something that was not in the final game implementation and should be tested to see if it really is there. I suspect it is. There were also some interesting listing for a couple of pet skills that are not actually in the game from what I can see at this point.

Now this value of a base 130% hate generation in defensive stance has some strong implications on what was listed earlier in this topic. Most specifically this...
chippydip Wrote:Assuming Defiance stacks with in inate threat bonus of Defensive Stance (which is obviously should) we have a total bonus for the warrior of 25% and total reduction for the priest of 20%. Let work through this step-by-step to make it easier to point out errors if I mess something up:

From Cop's testing, we have the following conversion factor:
1 damage = 4.1 hate
1 healing = 1 hate

now, let's remove the effect from above:
1 damage = 4.1 hate / 1.25 = 3.28 hate
1 healing = 1 hate / 0.8 = 1.25 hate

We can look and see that these numbers make sense (warrior is generating less hate and priest is generating more without talents) and we can run the numbers backwards just to be sure:
1 damage = 3.28 hate * 1.25 = 4.1 hate (check)
1 healing = 1.25 hate * 0.8 = 1 hate (check)

Now, if we try and renormalize, like you did, we get:
3.28 / 1.25 = 2.624 healing per damage
if we redefine 1 damage = 1 aggro, then 1 healing = 0.38 aggro

Adjusting for a base hate of 130%+15% (for defiance) instead of the total 125% listed in the quote, we have intead:
From Cop's testing, we have the following conversion factor:
1 damage = 4.1 hate
1 healing = 1 hate

now, let's remove the effect from above:
1 damage = 4.1 hate / 1.45 = 2.83 hate
1 healing = 1 hate / 0.8 = 1.25 hate

Now, if we try and renormalize, like you did, we get:
2.83 / 1.25 = 2.262 healing per damage
if we redefine 1 damage = 1 hate, then 1 healing = 0.442 hate

Close to half and suspiciously close considering we are starting with Cop's conclusion values and do not have the raw data to work with to see if it may actually fit better. If the game is just using whole integers and having the healing operate at 50% effect, then truncation might be enough to explain the discrepency between 0.5 and 0.442 considering Cop's realatively small number of samples on most tests (5 runs each).

If we assume that 0.442 is a fairly accurate number though, then it would be interesting to see what the various graduations of powers of two yield to see what might be the finest level of hate the game might be using instead of just whole numbers. From that we would have:
1/1 = 0.442
1/2 = 0.884
1/4 = 1.768
1/8 = 3.537 (note I am retaining a higher degree of calcuation to use rather than what I have been listing.)
1/16 = 7.073 <- looks promising and in my opinion a more likely scale than I listed in the earlier post.
1/32 = 14.146
1/64 = 28.293
1/128 = 56.585
1/256 = 113.171

Of these only the 1/16 scale looks very promising and as such I lean now more toward the hate being only tracked in integers with no fraction adjustments. This would have various truncation effects that would tend to not be very large when the damages and healing being tossed out are in fairly large amounts (over 30 points in both cases) and would likely only show up as variations like the 0.442 verses an expected 0.500 when using small samples that have been predigested. Testing using baby characters running around the starting areas and using some of the lowest damage and healing effects will likely be able to show the truncation or lack of it more easily then with testing using higher level or capped characters.

Revisiting my earlier example of hate generation and instead using a '1 damage=1 hate' and 'healing = (heal amount)/2 hate' with only interger values used; we would have this instead:
Base low damage of 30 points used prior to stance adjustment.
Hate for battle stance no talents
30* (100-20) /100=
2400 /100 = 24 hate

hate for defensive stance no talents
(30*(100-10)/100) * (100+30) /100 =
(30*90/100) * (130) /100 =
27 * 130 /100 =
3510/100 = 35 hate

hate for defensive stance and full defiance talent.
(30*(100-10)/100) * (100+30+15) /100 =
27* 145 /100 =
3915 /100 = 39 hate

Note that while the defensive stance gives a noticeable more hate in this case than the battlestance, the damage numbers are not really that good for comparison. Most players that are going for using battle stance and berserker stance are using arms/fury builds and their weapon choices are usually 2handed weapons or dual wielding weapons. Both of those cases usually have about 50% more damage going for them compared to the 1handed weapon and shield combo that the defensive warrior would be using. Using a higher damage of 45 (30*150%) for the first example will instead yield:
45* (100-20) /100=
3600 /100 = 36 hate
Which in turn can show part of why some warriors can seem to do just as well at holding aggro while in battle stance compared to just using a defense stance and shield set up. The bigger difference starts coming when looking a the amount of healing that said warriors need compared to their defensive speced counterparts.
Reply
#38
What if we assume that 4 hate = 9 healing aggro? (1 damage aggro ~ 2.25 healing aggro). It would actually be closer to 4.1 and the gradation would be slightly less. Yes, it's all guesswork =) And no, I don't like this number either, I feel that Blizzard likes to use more round numbers.

The only thing I can think of is that Healing spells, much like Warrior damage abilities, have some innate threat built in, and a bit of extra threat from healing itself. So for example, "original" 1000 healing aggro listed in that threat is actually 500 natural aggro and 500 aggro from the 1000 point healed. This would explain how Paladins are able to have lower hate heals as compared to other classes - their innate hate for the heal can be simply 0, so paladin's 1000 point heal will only cause 500 aggro. Similarly, supposedly renew has about half the hate of regular healing spells, which would be explained by this concept. Isn't making up theories wonderful?
Reply
#39
lemekim,Jul 24 2005, 05:02 AM Wrote:What if we assume that 4 hate = 9 healing aggro? (1 damage aggro ~ 2.25 healing aggro). It would actually be closer to 4.1 and the gradation would be slightly less. Yes, it's all guesswork =) And no, I don't like this number either, I feel that Blizzard likes to use more round numbers.

The only thing I can think of is that Healing spells, much like Warrior damage abilities, have some innate threat built in, and a bit of extra threat from healing itself. So for example, "original" 1000 healing aggro listed in that threat is actually 500 natural aggro and 500 aggro from the 1000 point healed. This would explain how Paladins are able to have lower hate heals as compared to other classes - their innate hate for the heal can be simply 0, so paladin's 1000 point heal will only cause 500 aggro. Similarly, supposedly renew has about half the hate of regular healing spells, which would be explained by this concept. Isn't making up theories wonderful?
[right][snapback]84110[/snapback][/right]

From my testing a couple of patches ago with a druid (I should grab some friends and test this more extensively), there is no innate threat to healing spells, just the actual healing done. Specifically, healing a high teens warrior for a couple of dozen points using a 1400+ heal would not pull aggro if he had done anything to the foe.

My guesstimate back then was one point of hunter melee damage was about the same threat as two points of druid healing.

I would have thought if anything that battle stance would have a small bonus to threat generated - more threat per damage than a rogue or mage, less threat per damage than a defensive warrior. Blizzard clearly intends for tanks to use Battle stance on occasion (or they wouldn't restrict mocking blow and thunderclap to it) so -20% threat in battle stance sounds odd to me. Can any warriors confirm this effect in game?
Reply
#40
Cop has updated his tests and moved the posted results to a new forum.

Original thread with full methodology.

Cliffnotes:

Skills by total hate generated on a single target (50% mob dmg reduction):
1. Shield Slam - 1950 total hate.
2. Revenge - 1370 total hate.
3. Sunder Armor - 1050 total hate.
4. Shield Bash - 930 total hate.
5. Heroic Strike - 890 total hate.
6. Cleave - 490 total hate.
7. Thunder Clap -340 total hate.
8. Bloodrage - 335 total hate.
9. Demoralizing Shout - 175 total hate.

Skills by hate/rage efficiency on a single target (50% mob dmg reduction):
1. Revenge - 273 hate per rage.
2. Shield Bash - 93 hate per rage.
3. Sunder Armor - 70(88) hate per rage.
4. Shield slam- 65 hate per rage.
5. Heroic Strike (fast weapon) - 59(49) hate per rage.
6. Cleave (fast weapon) - 21(27) hate per rage.
7. Demoralizing shout - 18 hate per rage.
8. Thunder Clap - 17 hate per rage.

Regular physical damage in def stance (with defiance): 4.0 hate per point of damage.

1 Hate = 1 point of healing by a Priest with 20% threat reduction talent.
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)