EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::General Support (https://www.eqemulator.org/forums/forumdisplay.php?f=598)
-   -   Damage Caps. (https://www.eqemulator.org/forums/showthread.php?t=24275)

narcberry 01-29-2008 03:38 AM

Damage Caps.
 
I've noticed there are damage caps at low levels, like live. I'm unsure if this is new, but I have two problems with this.

1) The caps are calculated correctly, but average swing damages are not. If my swing should be doing 45/60 (average/max) damage then after the cap is applied, it should be doing something like 19/20. However, what the cap does is convert x/60 into 10/20. All the uberest of uber weapons at low levels will do 20 dmg cap and 10 on average. So this is not accurate with live.

2) I want to remove this cap. Is there a setting/variable or will I need to remove code?

narcberry 01-29-2008 04:35 AM

Found it here:

zone/attack.cpp:936
Code:

                if(GetLevel() < 10 && max_hit > 20)
                        max_hit = 20;
                else if(GetLevel() < 20 && max_hit > 40)
                        max_hit = 40;


narcberry 01-29-2008 05:00 AM

I think the calc is wrong because the level max dmg calculation is done too early. The average hit is based on the min and max, and reducing the max to 20 before the average is calculated yields an avg hit of 10. The level cap on dmg should not apply directly to the max damage but should be forced on the damage after the damage calculation is done with the higher numbers. ie, somewhere around line 1533 if I'm understanding the code right. This way the damage is calculated with a higher max damage, resulting in a higher average damage which is then forced to a max of 20 or 40. This would bring the numbers to the 19/20 scenario in the op.

narcberry 01-29-2008 05:10 AM

This should fix the level caps affecting avg damages at low level:

Code:

936,940d935
<              if(GetLevel() < 10 && max_hit > 20)
<                      max_hit = 20;
<              else if(GetLevel() < 20 && max_hit > 40)
<                      max_hit = 40;
<
1532a1528,1533
>
>              //Narcberry: moved the damage caps to keep them from affecting average damages
>                if(GetLevel() < 10 && damage > 20)
>                      damage = 20;
>                else if(GetLevel() < 20 && damage > 40)
>                      damage = 40;



All times are GMT -4. The time now is 09:25 AM.

Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.