Project 1999

Go Back   Project 1999 > Class Discussions > Melee

Reply
 
Thread Tools Display Modes
  #191  
Old 06-11-2024, 05:03 PM
Naethyn Naethyn is online now
Planar Protector

Naethyn's Avatar

Join Date: Feb 2015
Posts: 1,187
Default

Attack absolutely does not increase your max damage. Attack increases your average damage in a similar way that mob AC reduces your average damage.
__________________
Reply With Quote
  #192  
Old 06-11-2024, 05:05 PM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 8,137
Default

Quote:
Originally Posted by Jimjam [You must be logged in to view images. Log in or Register.]
On the subject of rounding dmg, how does this work woth the 20 damage intervals? Is it round up to 1 otherwise round to closest?


Code:
for i=1,20

if((i/10*dmg)<1,1,ROUND(i/10*dmg))
What would be the best way to check? A 10 dmg vs 3 dmg weapon on a low level caster?
Depends. What line is that code? If the result is stored in an integer type variable, generally speaking it will always round down on a positive value, and up on a negative.
Reply With Quote
  #193  
Old 06-11-2024, 05:12 PM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,706
Default

It’s a garble of lua and xml i just made up as an hypothetical example [You must be logged in to view images. Log in or Register.]

Are you suggesting the first few di with a low dmg weapon like dagger* would hit for zero damage?
Reply With Quote
  #194  
Old 06-11-2024, 05:45 PM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 8,137
Default

Quote:
Originally Posted by Jimjam [You must be logged in to view images. Log in or Register.]
It’s a garble of lua and xml i just made up as an hypothetical example [You must be logged in to view images. Log in or Register.]

Are you suggesting the first few di with a low dmg weapon like dagger* would hit for zero damage?
Most likely the value is clamped at 1 as a minimum, so you'd always hit for at least 1. But a value like 1.7 would still round down to 1 if it was just being stored in an integer without any other rounding done to it beforehand.
Reply With Quote
  #195  
Old 06-11-2024, 05:53 PM
bcbrown bcbrown is offline
Fire Giant


Join Date: Jul 2022
Location: Kedge Keep
Posts: 737
Default

Quote:
Originally Posted by Naethyn [You must be logged in to view images. Log in or Register.]
Attack absolutely does not increase your max damage. Attack increases your average damage in a similar way that mob AC reduces your average damage.
I'm very curious what you believe impacts your max damage. Weapon, strength, level, anything else? Does offensive skill matter?


Quote:
Originally Posted by Jimjam [You must be logged in to view images. Log in or Register.]
Are you suggesting the first few di with a low dmg weapon like dagger* would hit for zero damage?
I would love for someone to fully explain the Damage Interval mechanic, because how I've heard it described does not match either my understanding of the emulator code, nor the logs I've looked at.

That said, here's the emulator code that I think is applying the DI mechanic:

There's a method, RollD20(int offense, int mitigation), that returns a number between 0.1 and 2.0. I think this is where attack and defense values are compared to determine if hits will skew higher or lower.

This number [roll] is used inside MeleeMitigation to adjust the damage done:

hit.damage_done = std::max(static_cast<int>(roll * static_cast<double>(hit.base_damage) + 0.5), 1);

So it takes the "base_damage", multiplies it by a number between 0.1 and 2.0, adds 0.5, converts to int (which rounds down iirc, so 3.9 becomes 3), then if it's below 1, sets it to 1.

So, to start, none of the DI intervals will have zero damage, there's always a minimum of 1. Secondly, if the damage of a weapon is low enough, more of the damage intervals will end up at the minimum value of 1.

E.g., if "base_damage" is 10, the 20 intervals will be 1, 2, 3, ..., 19, 20. If the "base_damage" is 3, 0.4 * 3 + 0.5 is 1.7, truncated to 1, so the intervals will be 1, 1, 1, 1, 2, 2, .., 6.

So low-damage weapons end up with multiple intervals clamped at the minimum value.

References:
https://github.com/EQEmu/Server/blob...tack.cpp#L1050

https://github.com/EQEmu/Server/blob...ttack.cpp#L999
Reply With Quote
  #196  
Old 06-11-2024, 06:44 PM
Jimjam Jimjam is offline
Planar Protector


Join Date: Jul 2013
Posts: 12,706
Default

Thanks guys, those are really insightful answers and good jumping off points!
Reply With Quote
  #197  
Old 06-12-2024, 12:58 AM
Keebz Keebz is offline
Fire Giant


Join Date: Jul 2010
Posts: 954
Default

Quote:
Originally Posted by bcbrown [You must be logged in to view images. Log in or Register.]
hit.damage_done = std::max(static_cast<int>(roll * static_cast<double>(hit.base_damage) + 0.5), 1);

So it takes the "base_damage", multiplies it by a number between 0.1 and 2.0, adds 0.5, converts to int (which rounds down iirc, so 3.9 becomes 3), then if it's below 1, sets it to 1.
This explains the 15 dmg magical cutoff for the lower bound, but also mean every X5 (25, 35, etc) bumps the lower bound by 1. Neat.
Last edited by Keebz; 06-12-2024 at 12:59 AM.. Reason: mangled quote formatting
Reply With Quote
  #198  
Old 06-12-2024, 06:46 AM
Toxigen Toxigen is offline
Banned


Join Date: Jan 2021
Posts: 4,776
Default

who fkin cares its 2024 just get your items and play holy fuck
Reply With Quote
  #199  
Old 06-12-2024, 10:08 AM
DeathsSilkyMist DeathsSilkyMist is offline
Planar Protector

DeathsSilkyMist's Avatar

Join Date: Jan 2014
Posts: 8,137
Default

Quote:
Originally Posted by Toxigen [You must be logged in to view images. Log in or Register.]
who fkin cares its 2024 just get your items and play holy fuck
Nobody cares that you don't care. I am not sure why you are trying to stop discussion on a forum. Some people do care, and like discussing it.
Last edited by DeathsSilkyMist; 06-12-2024 at 10:10 AM..
Reply With Quote
  #200  
Old 06-12-2024, 03:34 PM
Naethyn Naethyn is online now
Planar Protector

Naethyn's Avatar

Join Date: Feb 2015
Posts: 1,187
Default

https://docs.google.com/document/d/1...it?usp=sharing
__________________
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 01:27 PM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.