VaultNetwork.netVault Network Boards
Author Topic: Melee Speed, Melee and Style Damage (or why pure Grothrates are wrong!) [Locked]
StanleyM84  1 star
Posts: 109
Registered: 2009-8-17 13:37:49
Very interesting. I had no idea the rounding would be so dramatic.

 

-----signature-----
Gaven rr11|9 Warrior
Gavster rr10 Healer, Gavenjr rr8 sm, Gavena rr7 valk, Gaviir rr7 vamp
rr6 and under: Gavani, Gavain, Gmaul, Gavensrm
Currently playing - Anicethane - r9l5 Thane
n00bystar
Posts: 26
Registered:
I guess toa af bonus is calculated together with spec af -> (spec af + toa af bonus) /6 ?

or even call it (spec af base value x1,25 x(1+buff bonus) + toa af x1,25) /6

SWING_SPEED = [[[WEAPON_SPEED * 100
* (1 – (MIN(250, QUICKNESS) – 50) / 500)]
* (1 – HASTE – CELERITY)]
* (1 – TOA_MELEE_SPEED)]

is this correct ? how do you put the speed of a weapon - formula is fine but *100 is only correct if you use add a /100 in the last line.

Can you also please get a little bit more in detail how much and when the system rounds - so 6,0s weapon * 100 = 600 * 0,6 (from quickness) = 360. No rounding needed. 360 * 0,68 (with 15% cele and 17% haste) = 244,8 now it rounds down to 244 ? 244 *0,9 (toa melee speed) = 219,6 = 219 ? For the damage it's way more confusing

AMAGE_MODIFIER = LEVEL
* DAMAGE_TABLE
* (1 + 0.005 * ITEM_BONUS)
* (1 + 0.01 * SPEC)
* (1 + 0.01 * STATS)
* (0.9 + 0.1 * MIN(1, STRENGTH_RELIC_COUNT)
* (0.75 + 0.5 * MIN(ENEMY_LEVEL + 1, SPEC - 1) / (ENEMY_LEVEL + 1) + 0.01 * RANDOM(50))
/ ENEMY_ARMOR
* (1 - ENEMY_BUFFED_ABSORB)
* (1 - ENEMY_RESISTANCE)

gets not rounded at all ? or every line ?

DPS = [[[[WEAPON_DPS * WEAPON_SPEED * 10 ]
* (0.94 + WEAPON_SPEED * 0.03) + MYTHICALDPS]
* TWOHANDBONUS]
* (1 + TOA_MELEE_DAMAGE] / 10

seems clear to me
twizztd1
Title: DAoC Knight
Representitive of Hibernia

Posts: 6
Registered: 2003-12-15 08:56:43
Vanesyra posted:

the reason for the order has to do something with how computers do math. in this special case level / enemy_armor would be equal to 0 in any case for a lvl 50 character. so you would do 0 damage in any case. just because a "integer number" level divided by a "integer number" enemy armor is rounded down into a new integer. for example 50 / 154 = 0.324675... cut off to be 0. because of this reason you do multiplication first (create a big number) and then divided it (make it small again) to get results that are "okay".

sure we do not know the exact order of the math operations done by daoc. but what we know is that we do not deal zero damage, so it cant be at the "top". other example on this impact try to calc dps and swing_speed once with the given order and once with a changed order. you will get different results but only the ones with the given order will match the game.



That assumes they use integers instead of floats or doubles. Do you have any reason to believe they are using an integer instead of a float and then rounding the float based upon some specified precision?

 

-----signature-----
Nerf-Morgan LE Emerald Ridere Ranger The Black Company
Tel -- "ou can pretend I'm wearing a teddy bear suit and holding a pot of honey if it makes ya feel better."
New Ranger Guide & Vids:
http://www.pointblank-rangers.com
Der_Huhn_Teufel  1 star
Posts: 57
Registered:
Integers would make sense because you can't have 169.3 hp.
twizztd1
Title: DAoC Knight
Representitive of Hibernia

Posts: 6
Registered: 2003-12-15 08:56:43
Der_Huhn_Teufel posted:

Integers would make sense because you can't have 169.3 hp.



Have you even looked at the equation?

DAMAGE_MODIFIER = LEVEL
/ ENEMY_ARMOR
* DAMAGE_TABLE
* (1 + 0.005 * ITEM_BONUS)
* (1 + 0.01 * SPEC)
* (1 + 0.01 * STATS)
* (0.9 + 0.1 * MIN(1, STRENGTH_RELIC_COUNT)
* (1 - ENEMY_BUFFED_ABSORB)
* (1 - ENEMY_RESISTANCE)
* (0.75 + 0.5 * MIN(ENEMY_LEVEL + 1, SPEC - 1) / (ENEMY_LEVEL + 1) + 0.01 * RANDOM(50))

In what world do integers make sense when multiplying by values like .005 and .01.

 

-----signature-----
Nerf-Morgan LE Emerald Ridere Ranger The Black Company
Tel -- "ou can pretend I'm wearing a teddy bear suit and holding a pot of honey if it makes ya feel better."
New Ranger Guide & Vids:
http://www.pointblank-rangers.com
dandaly1988
Posts: 9
Registered:
Can all this maths just be simplified to: 100% bonus of 50 damage is greater than 100% of bonus of 25 damage? In other words slower weapons get a greater bonus from % bonuses than faster weapons. This is not a new fact and i dicovered this years ago.. why do SB's like slow 2h weapons? for greater perf damage, no secret or anything here at all and i like it like this.
Vanesyra  1 star
Posts: 108
Registered: 2009-12-8 17:31:44
@n00bystar
i did not yet had a very close look to af bonus. but i would say that this is more or less how it's working.

you are right, i missed the / 100 at the end. when ever i think i know where the game does a round down i use the "[ ]" brackets. so for your example one round down after quickness was added, one after haste and a last one after toa speed. and you end up with 2.19 swing speed.

i don't know where the game does rounding for the damage modifier. i even did not try to guess this. there are millions of ways how it could be done, so i have not a chance of guessing the right rounding. i tried some hundreds of different round down values on the weapon skill formula. but i stopped trying because none of them worked perfect. its very very hard to figure this out.

@twizztd1
i think they use both integer and float (maybe double as well, but that's very very hard to say). an easy prof that they use integer in some places is the "STATS = [STRENGTH / 2]" stuff. this is integer math, if they would use float or double you would get bonus on weapon skill with every point of strength but you only get it for every 2 point. so yes they use integer math.

but as i have tried hundreds of integer math based calculations on weapon skill and they all failed i am pretty sure that they use float somewhere in the calculation as well. that makes it nearly impossible to figure it out there are some evil things happening if you use float the "bad way" ^^ for example [0.57 * 100] / 100 = 0.56 just because if 0.57 is uses as a float number, the computer trys to break this number down to a base 2, binary display and there it is something like 0.569999999999999999999999999999999... but if you multiply this with 100 and do a round down on it you get 56. and divided it again with 100 you get 0.56 ^^. btw. this error happens also if you use double, but for other numbers in other situations. so for every math operation * or / we have the option integer round down error, float transformation error, double transformation error. now count the * and / operations in the formulas and calculate the possible variations ^^ baaaaaaaad

ah and btw. the breakpoints for casting speed also look like integer math with little numbers. float and double would more likely do not have such huge holes between the breakpoints (30 dexterity points and more until your castspeed increases again).


@twizztd1 2. post
multiplying with values like 0.005 and 0.01 is not a problem if you have a big enough integer value at the beginning. if it's to small do * 10 or *100 or * 1000... at the beginning and /10 or /100 or / 1000 at the end. for example 200 * (0.005 * X) is okay. but sure... 2 * (0.005 * X) will not work. but does that really matter? atm we cant say how rounding and stuff is done exactly. all i know for sure that there are some integer values used in the code. try the unstyled cap damage formula with none bugged weapons and you see the integer doing the math.


@dandaly1988
it's not that easy. slower weapons get a bit of bonus because stuff like bladeturn hit them harder. it's more or less... get a slow weapon and make it swing fast!
n00bystar
Posts: 26
Registered:
tried to use your formula - some notes.

I don't see how you came from

style damage
STYLE DAMAGE = (BASE + SPEC * GROTH) / 10 * CURRENTSPEED * UNSTYLEDDAMAGE / DAMAGECAP + UNSTYLEDDAMAGE * TOASTYLE

to

STYLE_DAMAGE = (BASE + SPEC * GROWTH) / 10 * SWING_SPEED * DAMAGE_MODIFIER + BASE_DAMAGE * TOA_STYLE_BONUS

since unstyled damage is the same as DAMAGE MODIFIER * DPS and damage cap is 3x DPS the formula should be something like "DAMAGE MODIFIER / 3"

If I use the formula not only style damage seems to be way to high also the bonus from stats are very high. 400 Str increases the modifier 3x

using my stats of my skald 401 str, 64 skill, 2,23 swing speed (6.0 base) against a chain target with spec af and caped melee resists +10% (resistant against hammer) gives me 392 unstyled + 438 styled damage (more than cap). while in reality hammer against chain + spec af + cele swing speed drops the damage to around 300.
Vanesyra  1 star
Posts: 108
Registered: 2009-12-8 17:31:44
yes you are right i missed the "DAMAGE MODIFIER / 3" and yes this will case your style damage to be fare to high

the strength impact is correct. remove your spec and base str buff. hit your target until you got min and max damage. buff yourself base str, hit your target again, buff yourself spec str and hit it again. always get min and max damage values. now compare your min and max from the 3 different str values. and you will see it is this way. damage is increasing with (1 + 0.01 * [STRENGTH / 2]) and yes that's the only real damage booster.

i cant calculate something if i do not have all needed values your:
- level
- str
- quic
- haste
- cele
- toa speed
- toa damage
- toa style
- spec
- +rr bonus on spec
- +item bonus on spec
- class
- count of str relics
- twohanded?
- dps weapon
- speed weapon
- mythical dps
- keep damage bonus
- quality weapon
- con weapon

enemy:
- level
- item af
- item abs
- item quali
- item con
- spec af value
- buffed absorb
- resistances


btw just changed the way spec af works. this should be more correct (again a silly typing / formating error of mine )
n00bystar
Posts: 26
Registered:
Damage stat 401
Char level 50
Item Bonus 11
Skill Level 43
Realm Rank 11
Class Skald
Relic Bonus 0

Target
level 50
Armor AF 102
Spec AF 67 / buff value AF 104
Toa AF 20 / reaol value AF 25
Armor type chain / Armor Absorb 0,27
Prim resists 0,36
secondary resists 0
Absorb Buff 0
Caster shield AF 0

Weapon
Two Handed yes
Base Speed 6
DPS 16,5
Quality 1
Quickness 245
ToaHaste 0,1
Haste Buff 0,17
Celerity 0,15

Toa Melee 0,1
Toa Style 0,06
DPS Myth 0

these where my values

edit: I left quality and condition left out, same with keep bonus

VaultNetwork.net is an independently operated community forum and is not affiliated with, endorsed by, or technically based on IGN, GameSpy, FilePlanet, GameStats, or the former IGN/GameSpy Vault Network.
References to VaultNetwork.net mean this site/domain. VNBoards-style presentation is a visual homage only. By using this site, you agree to the forum rules.