Damage modifications
#1
I thought I made a resistance post earlier, but it is noweher to be found. Oh well. I thought I should make a post detailing how it seems (to me) damage modification is done in 1.10. I will tell it in a step by step procedure.


1. Apply PvP modifications. Damage is reduced to:
17% for
Player v Player
Hireling v Player
Minion v Player (player minion that is)
25% for:
Hireling v Hireling
50%/35%/25% (normal/night/hell) for:
Hireling v some kinds of bosses (not sure exactly which ones).
+200% for
Some kind of bosses (not sure exactly which ones) v hirelings
+400% for
Some kind of bosses (not sure exactly which ones) v minions

2. Handle target effects (I think). I would assume, this is where stuff like Bone/Cyclone Armor goes since I have not found it in other places

3. If target has "can't be frozen stat", set chill and freeze duration to zero

4. If target has "half freeze duration", set chill and freeze duration to half the value

5. If target has a poison shrine state, set poison duration to zero

6. If target has a fire shrine state, set burning duration to zero

7. Apply -damage to physical damage and -magicdamage to fire, lightning, cold and magic damage (there seem to be some cases, or some special monsters for which this step is skiped and also its resistance later will never go below 0, not sure exactly though)

8. Apply resistance
Take base resistance of target. Base resistance include the total of all resistance from items and skills the target
has plus any modification from outside skills such as AmpDamage and LowerResistance.

Subtract any "lower resistance" or "pierce" the attacker might have. This include Cold Mastery. Again, any cold resistance
lowering/piercing will also lower the cold resistance applied to chill and freeze duration. If there exists any poison pierce,
it applies to both the damage per frame and duration.

For a player target, apply the difficulty penalty (-40/-100 in night/hell). The penalty is half that in classic and in expansion
after the completion of the appropriate quest. The penalty is applied to all resistances (including poison duration reduction)
except physical and magic resistance.

Cap the resistance at -100% or at the upper cap. The upper cap base is 75% (except for phsyical were it is 50%). This
upper cap base can be increased to 95% through +max resistance items for all resistances except physical and poison
length duration (this includes when cold resistance is applied to chill and freeze duration where the +max cold resistance
would be applied).

If the target is Undead and the attacker is under the influence of a Sanctuary aura, the resistance is set to 0% if it is
above 0%.

As note above, for some special cases/monsters, the resistance might be increased to 0% if below 0%. I don't know
anything more about this at the moment though.

Finally the dammage is modified according to the final modified resistance value. Note that cold resistance is applied
to chill duration and freeze duration.

9. Apply absorbtion%. The absorbtion% is caped at 40%.

10. Apply absorbtion. The absorbtion is caped at whatever ammout of damage still remain. That is, you can't absorb more
damage than there still remain at this step.


That is it for now. Any input, correction, comment, additional info and so on most welcome. As can be seen, several black holes still exists and I might have missunderstood some things or got it wrong or simply goofed :)


Edit: Seems the forum eat all blanks and I can't get the tags to work :(
There are three types of people in the world. Those who can count and those who can't.
Reply
#2
1) Is a little confusing if you don't space it out.

1. Apply PvP modifications. Damage is reduced to:

17% for
Player v Player
Hireling v Player
Minion v Player (player minion that is)

25% for:
Hireling v Hireling

50%/35%/25% (normal/night/hell) for:
Hireling v some kinds of bosses (not sure exactly which ones).
This is the percentage of of their real damage they do to act bosses (what I understood from PK).

+200% for
Some kind of bosses (not sure exactly which ones) v hirelings

+400% for
Some kind of bosses (not sure exactly which ones) v minions
Prime Evil's for both, I suspect (this I haven't seen discussed though).

Quote:For a player target, apply the difficulty penalty (-40/-100 in night/hell). The penalty is half that in classic and in expansion
after the completion of the appropriate quest.

You mean after completing Atma's quest it's 0 / -20 / -50 in the appropriate difficulty, not +10 per difficulty quest made?!?!

Quote:As note above, for some special cases/monsters, the resistance might be increased to 0% if below 0%. I don't know
anything more about this at the moment though.

Static Field + Conviction, and crushing blow?

Quote:10. Apply absorbtion. The absorbtion is caped at whatever ammout of damage still remain. That is, you can't absorb more
damage than there still remain at this step.

Ah, this I found to be true (not that you'd be wrong ;)) when trying out plain absorb for resist auras, I only absorbed 2 damage (because I had max fire resist) vs some fire spell.
Reply
#3
>You mean after completing Atma's quest it's 0 / -20 / -50 in the appropriate difficulty, not +10 per difficulty quest made?!?!

Ehh, I really have not played enough lately to remember. Isn't there a quest were the reward is that you get a lower penalty? I thought it cut it in half (per difficulty). Can't remember which quest it is though.

>Static Field + Conviction, and crushing blow?

Ehh, static field is a skill right? Has nothing to do with this. Conviction I am not sure what it is (yeah, I have THAT bad memory). Crushing Blow is a "on hit" effect handled when the game deal damage. It is not part of these calcs presented here since it does not modify the damage of an attack really.
There are three types of people in the world. Those who can count and those who can't.
Reply
#4
You're thinking about the Rescue Anya quest, which rewards you with a scroll, which gives +10% Resistance to all.

As for Conviction, it's a Paladin skill, which lowers the target's defense rating and resistances to Fire, Cold and Lightning.

I suppose Conviction directly affects the target's base resistance.
Reply
#5
Nice write up Jarulf. I have a few points that may need some minor clarifications, but first could youpoint me to the memory address that this starts at or the ordinal that it uses? I am not really any good at looking straight at the code like this but figure this may be a place to start along with the old write you did on this for v1.08.

Quote:4. If target has "half freeze duration", set chill and freeze duration to half the value
Is this checking a boolean value or a test if condition is greater than zero (true)? There have been a couple of complaints pointing that wearing two such items is canceling the effect form working. If the game is adding two boolean values of 1 then you would get 1+1=0 or false condition for wearing two items with these effects. I suspect that it really just that the testers were not too good at getting accurate measurements.

Quote:For a player target, apply the difficulty penalty (-40/-100 in night/hell). The penalty is half that in classic and in expansion after the completion of the appropriate quest. The penalty is applied to all resistances (including poison duration reduction) except physical and magic resistance.
I take this is only applied to the players. Is this being applied to the hirelings too? more in the next section...

Quote:Cap the resistance at -100% or at the upper cap. The upper cap base is 75% (except for phsyical were it is 50%). This upper cap base can be increased to 95% through +max resistance items for all resistances except physical and poison length duration (this includes when cold resistance is applied to chill and freeze duration where the +max cold resistance would be applied).
Is this cap of 75% applied only the players? How about the hirelings?

In the beta test version it was possible to get the hirelings to the point that they were in some cases immune to certain effects. Apparently this had to do with either a high level hireling being used in a lower difficulty where the peanlty was not enough to knock their calculated resistance below zero. Or it may have been that they had enough resistance gear on to boost their total to over 100%. I did not test this directly for hirelings, but I did check on a similar case with some of the monsters and minions (valkyrie and skeletons) that they could in fact gain an unlisted immunity to an element type by having certain +resistance% gear equiped with natural level of resistance. I have not checked to see if there were any changes to this in the final version yet.

Towards the end of the code section, did the damage sanity checks for doing negative amounts get moved from just the total to being done seperately for each type before totalling? It appears that has been changed in the final version from the way it was in the betas.
Reply
#6
Quote:Cap the resistance at -100% or at the upper cap. The upper cap base is 75% (except for phsyical were it is 50%).

What about magic resist?

Quote:Crushing Blow is a "on hit" effect handled when the game deal damage. It is not part of these calcs presented here since it does not modify the damage of an attack really.

Oh, sorry. :unsure:
Reply
#7
AssA,Nov 8 2003, 11:59 PM Wrote:You're thinking about the Rescue Anya quest, which rewards you with a scroll, which gives +10% Resistance to all.

As for Conviction, it's a Paladin skill, which lowers the target's defense rating and resistances to Fire, Cold and Lightning.

I suppose Conviction directly affects the target's base resistance.
Ohh, OK. Well, then the base is -40%/-100% and it is reduced by 10% per difficulty when you do the quest. Is that it? So if one have no items or skills in work, the base resistance in night/hell difficulty would be what, -10%/-70%?
There are three types of people in the world. Those who can count and those who can't.
Reply
#8
>Is this checking a boolean value or a test if condition is
>greater than zero (true)?

If the stat is non 0, you get a reduction (or set to 0 for can't be fronze, also check for non zero)


>I suspect that it really just that the testers were not
>too good at getting accurate measurements.


I think they might get a full output of various values and effects in combat on the screen actually. There is a few empty functions called in various places that passes as a parameter various damage, resistance, -dam values and so on. I guess it is for debugging purposes. Still, might not catch this problem though since we don't know exactly what the debug code do since we don't have it :)



>I take this is only applied to the players. Is this being
>applied to the hirelings too? more in the next section...

I was a bit scetchy in my notes and missed this. The difficulty penalty and the cap applies to players and hirelings, not just players. It does not apply to player minions though.




>Is this cap of 75% applied only the players? How
>about the hirelings?

So yes, applied to players and hireling.


Note that the "lower resist/pierce" (of which CM is part), ONLY apply to players, not hirelings. The game is a bit inconsequent in the way it checks for "monsters" and check for "monsters but not hirelings". So they don't seem to be able to be immune right now since the cap would always apply.


>Towards the end of the code section, did the damage
>sanity checks for doing negative amounts get moved
>from just the total to being done seperately for each
>type before totalling?

Ehh, not sure I understand you. How would you end up with negative damage? The code will use 100% as resistance if it is above 100%. Hence resistance can't reduce damage below 0. Similary absorb% is caped at 40% and can't do it, and straight absorb is lowered so that it only removed ammount of damage left it should have been larger. So you can't end up with a negative damage.

There is a check at the start though if the damage is larger than 0. Only then do the -dam/-madam, resist and absorb execute. Otherwise it is skiped and the damage is set to 0. Is that what you mean? There is no check on the total damage though, at least not as part of this code. Perhaps there is one later in the "do a hit" or "deal damage", have not looked much there yet.
There are three types of people in the world. Those who can count and those who can't.
Reply
#9
adamantine,Nov 9 2003, 12:43 AM Wrote:What about magic resist?
It is caped at 75% unless you have items that increase the max resistance to 95%.
There are three types of people in the world. Those who can count and those who can't.
Reply
#10
Jarulf,Nov 9 2003, 03:42 AM Wrote:Ohh, OK. Well, then the base is -40%/-100% and it is reduced by 10% per difficulty when you do the quest. Is that it? So if one have no items or skills in work, the base resistance in night/hell difficulty would be what, -10%/-70%?
Yes.

In v1.09 there was a bug that if the character died and came back in town they lost this resistance bonus until they exited and re-entered the game. The display for the character was listing the resistance wrong at this point. I think that they found a DLL editing solution for this at the Phrozen Keep. I do not know if this problem has been fixed in the v1.10 version, but I hope so.
Reply
#11
Quote:Ehh, not sure I understand you. How would you end up with negative damage? The code will use 100% as resistance if it is above 100%.


Ruvanal explained in the beta that the damage calcultaion worked out each type of damage inflicted seperatly, then summed them to find the total damage. At which point there was a sanity check to change the total damage to zero if it was negative. But resistances weren't capped at 100% for this so it was possible to lower or negate your total damage if any of the types inflicted became negate due to high resists (hitting act 5 doors - 1000% poison resitance - with a massive amount of poison damage for example).

Looks like this has changed in the final though!
Reply
#12
>Ruvanal explained in the beta that the damage calcultaion worked out each type of damage inflicted seperatly, then summed them to
>find the total damage.

OK, that is how it has always been though :)


>At which point there was a sanity check to change the total damage to zero if it was negative.

Uhu. None now, but OK. Still, it is this total damage that is used for further damage calcs, such as damage given to a target. The only thing that remains of importance and use after this point would be the physical damage part which is used for stuff such as Thorns. None other damage type value is used after this point as far as I know.

> But resistances weren't capped at 100% for this so it was possible to lower or negate your total damage if any of the types inflicted
>became negate due to high resists (hitting act 5 doors - 1000% poison resitance - with a massive amount of poison damage for
>example).

The summing occurs after resistance (or there would be no point in summing) so I fail to see how a non existing cap can give negative damage when the final damage is still set to 0. On the other hand for poison specifically, which is NOT part of the summed damage (well, the game add in one frame of damage) but kept seperate completely so that it can set it as a poison effect, would of course end up having a positive effect on the regen value from poison if there was no check for 100% cap on poison (1000 resistance would mean you heal 10 times the ammount you should have taken in damage each frame). This is an issue of caping the resistance value at 100% though, not capping damage values (although that could have been done as well of course). I think in earlier patches, the game did not even calc changes if resistance was above 100%. Now it do it (but in final 1.10) uses 100% if it was above 100%. I guess that was the problem in beta then. SHould apply to all damage types and resistances.

>Looks like this has changed in the final though!

Yes, seems to work fine now.
There are three types of people in the world. Those who can count and those who can't.
Reply
#13
Quote:>Looks like this has changed in the final though!

Yes, seems to work fine now.

Jarulf: I haven't found this to be true. I've got hydra which does 50% fire/physical, against Bishibosh for example they do zero damage.


And just to re-cap (it might belong in a different thread, sorry)

Caps are, without special items/affixes taken into consideration:

Player/Hireling
Physical = 50%
Fire/Lightning/Cold/Poison/Magic = 75%
Any Absorb = 40%
Plain Absorb = what the final damage would of been.

Pets = Individual, usually 85%, or not at all (quad immunity possible?).

Monsters = none (2048?).

Examples:

Fire absorb: 100 fire damage with 50% resist and 40% absorb = 50 damage, 40% of that is absorbed = 10 final damage = same as 90% fire resist.

Plain fire absorb: 100 fire damage with 95% resist and 100 fire absorb = 5 damage, max damage to absorb is 5 = damage is reduced by 5, then you're given 5 life = final damage -5 (5 hp healed).

Gloam with ~1000 damage Chain Lightning vs 90% resist and 100 lightning absorb = you're still half dead because their physical damage is transfered on the spell. :(
Reply
#14
Sorry Jarulf, just a little confused now. In the Beta, I was messing around with +PSD% on Druids and Assassins. When playing around with a venom sin (level 33 -act 5 created in normal), I noticed that with venom active it took me about 100 attacks to reduce an act 5 doors life to about a quater. without venom I could kill one in about 4-5 hits. At first it was thought that venom was transfering all damage to poison, but that still didn't asnwer why I was able to damage the door. But Ruvanal explained that the damage done by each type inflicted was being worked out seperatly, then summed to find total damage. My posion damage was being reduced to a negative amount, by the doors 1000% poison resistance, that when summed with the rest of my damage bought my total down to zero or a very small amount.

This was in an AB thread a while ago.
Reply
#15
GentlemanLoser,Nov 9 2003, 07:53 PM Wrote:Sorry Jarulf, just a little confused now.  In the Beta, I was messing around with +PSD% on Druids and Assassins.  When playing around with a venom sin (level 33 -act 5 created in normal), I noticed that with venom active it took me about 100 attacks to reduce an act 5 doors life to about a quater.  without venom I could kill one in about 4-5 hits.  At first it was thought that venom was transfering all damage to poison, but that still didn't asnwer why I was able to damage the door.  But Ruvanal explained that the damage done by each type inflicted was being worked out seperatly, then summed to find total damage.  My posion damage was being reduced to a negative amount, by the doors 1000% poison resistance, that when summed with the rest of my damage bought my total down to zero or a very small amount.

This was in an AB thread  a while ago.
Poison is never part of the total damage since it is dealt on a "per frame" basis through the life regeneration. It is calculated as two parts, a damage per frame and a duration in frame. The damage per frame will typically be quite small to start with (with a duration of 4 seconds) the per frame damage will be 1/100 of the total poison damage. Since the game do actually add 1 frame of poison damage to the total, even counting and extra +1000% we would get like a tenth of the total poison damage transfered to the total damage possibly negative in the beta I assume. As of now, you should not get negative damages anywhere though.

I am also very bad at all the acronyms, no idea what PSD% is for example and venom sin, I really don't know either. I think Ruvanal said venom is a special case for poison as far as duration goes but I really don't know anything about that. Since I have not looked at the beta, I can't tell how things work there though. Are you still saying that a door that is kiled in 4-5 hits, suddenly is not damage at all when adding venom? (adding poison damage to the attack). otherwise I don't understand what you are saying.
There are three types of people in the world. Those who can count and those who can't.
Reply
#16
adamantine,Nov 9 2003, 07:35 PM Wrote:
Quote:>Looks like this has changed in the final though!

Yes, seems to work fine now.

Jarulf: I haven't found this to be true. I've got hydra which does 50% fire/physical, against Bishibosh for example they do zero damage.


And just to re-cap (it might belong in a different thread, sorry)

Caps are, without special items/affixes taken into consideration:

Player/Hireling
Physical = 50%
Fire/Lightning/Cold/Poison/Magic = 75%
Any Absorb = 40%
Plain Absorb = what the final damage would of been.

Pets = Individual, usually 85%, or not at all (quad immunity possible?).

Monsters = none (2048?).

Examples:

Fire absorb: 100 fire damage with 50% resist and 40% absorb = 50 damage, 40% of that is absorbed = 10 final damage = same as 90% fire resist.

Plain fire absorb: 100 fire damage with 95% resist and 100 fire absorb = 5 damage, max damage to absorb is 5 = damage is reduced by 5, then you're given 5 life = final damage -5 (5 hp healed).

Gloam with ~1000 damage Chain Lightning vs 90% resist and 100 lightning absorb = you're still half dead because their physical damage is transfered on the spell. :(
Yes, those caps seems fine to me. I don't know what stats Bishibosh have or what damage values a hydra do. It should be considered a player minion though so might be some damage modifications versus Bishibosh (being some kind of unqiue, that I don't know versus which ones they get damage reduction). Your examples seems fine too.
There are three types of people in the world. Those who can count and those who can't.
Reply
#17
OK, I got thinking. As we all know, PvP modification is done at the start of the damage reduction routine. This has some implications. It now works by modifying each specific damage type in turn. This is VERY different from how it used to be. It used to be modified at the end AND, it modified only the total damage. That is, the value the game got by adding up all the different damage types (physical, cold, lighting and so on). Since poison damage was kept seperate anyway, it was modified seperately in PvP even before. The big *OOHHH* though, is that now the physical damage value WILL be modified due to PvP while it didn't used to be.

So, why do that matter? Well, it matters for stuff like leeching which is based on the physical damage (moded of the physical damage value which is now modified for PvP while it didn't used to be. Another case where it matter is Thorns/IM/IronGolem/SomeDruidStuff (not sure about LifeTap, forgot how it works and what it do), all those calculated returned damage based on the physical damage value. This used to be a non modified value. The returned damage was made into a return attack that in itself went through the damage reduction routine and hence got reduced by PvP modification. If that is still so, we get a double PvP reduction though. Has the percentage values for those skills for PvP been beefed up to compensate for this? Has anyone tested the returned damage in PvP? Perhaps the return damage is not modified, but then physical resistance and -damage and other such effects would not apply either. In any case, there seem to be some issues here unless they beefed up the percentage values by 6 times or so.

Thoughts? Comments? I have not looked at the code for those effects/skills yet.
There are three types of people in the world. Those who can count and those who can't.
Reply
#18
Sorry Jarulf, the acronyms are just me being lazy ;P. PSD% was refering to the new + Poison Skill Damage mod.

From the original thread, post by Ruvanal; (And explained far better by Ruvanal than I could! ;P )

Quote:Ok, first i will need to point out some the mechanics in how the game is handling the damge that one does and in particular some of the damage values of poison.

First the game actually keeps track of damage at a scale that is 1/256 of a hit point. This is the level that poison is set to work at and do its damage repeatedly for some number of frames (25frames=1second). Some sample amounts of poison damage (1.10s)
Perfect Emerald in a weapon 143 (that's 143/256 damage per frame and has a duration of 179 frames).
Blackbog's Sharp 500 (with a duration of 250 frames)
slvl1 Venom 1536 to 2048 w/duration=10 frames (this works out to be 6 to 8 full points of poison damage per frame of time in the game)

Now the game is tracking and handling each of the damge types (physical, fire, cold, lightning, magic, poison, etc.) seperately. Of course most of you realised that. But most do not realise that these number can become negative and it is only after they are summed together for the the final damage amount and only then is the check made to be sure that the total amount of damage done is a non-negative number.

In the case of GentlemanLoser:QUOTE 
The original test was (quickly!) done in 1.10s, in single player, players 1, act 5 with a newly created 33rd level sin. She had SL:1 Venom (60-80 poison damage) and a SL:1 CM (+35% Damage). Euipped with a 4-7 damage katar (possibly the standard one, can't remember..) and 20 str, she did 6-11 physical damage, with no other source of additional damage.

The physical damage would be 6 to 11.
The poison damage would be for one frame
6*(100-1000)/100= -54
to
8*(100-1000)/100= -72
(the *(100-1000)/100) is to take into account the barricade doors poison resistance factor)
Total damage at point of striking would be a possible range of
(6+ -72)= -56 least physical+greatest amount of negative poison
to
(11+ -54)= -43 greatest physical+least amount ofnegative poison
then a minimum cap of zero damage is applied and the result is that no damage is done to the door.

QUOTE 
To test again, I created another new level 33 sin. Giving this one a SL:20 CM, and a SL:4 Venom (105-125 poison damage). I picked up a scissors katar of excellence (15-17 damage), and with 70 str did 46-52 Physical damage. Again, this sin had no other source of damage.



Physical damage 46 to 52
Poison damage at slvl=4 Venom is doing 10.5 to 12.5 damage per frame
adjusting for the reistance of the door
10.5*(-9)= -94.5 to 12.5*(-9)= -112.5
The greates amount oa damage that you would be able to do tho the door would be with a max physical damage hit that was also a critical with the least amount of negative poison
52*2 + (-94.5)= 104-94.5= 9.5

But thats changed now, so that each seperate type of damage you inflict cannot become a negative value before the total damage is worked out? So it's all moot! Fun while it lasted. It got me thinking whether it would be possible to max - Straight Physical (or Magical) Damage Resistance in order to reduce the total damage taken from multi damage type attacks.
Reply
#19
Some questions with regard to updating my damage modifiction page ( http://www.hut.fi/~tgustafs/damagereduction.html ):

1. Is the division between Act 1-4 Bosses and Baal gone from the XvX penalty?

2. Don't Act End Bosses any more deal double damage against hirelings?

3. In which order are Energy Shield, Bone Armor and Cyclone Armor applied?

4. How is piercing resistances of immune monsters handled?

5. Are there effects that prevent Amplify Damage and Lower Resistance and other skills from piercing immunities?

6. Are Damage goes to mana and Thorns & other similar effects applied after all damage modification effects?

Cheers,

Tommi
Hammer of Atur
PvE/RP World of Warcraft Guild
Argent Dawn (European RP server), Alliance side

Dwarf Campaign
Awarded Custom Campaign for Warcraft III

Tommi's Diablo II information and guides
The de facto source of Diablo II game mechanics
Reply
#20
MDR (Magic Damage Reduced by) seems to be performing far better than it really should do

With Magic Damage reduced by 13 I take very little damage from quite a range of different attacks including Lightning Enchanted charged bolts and Act 3 Council Members hydras in Nightmare
Reply


Forum Jump:


Users browsing this thread: 7 Guest(s)