PDA

View Full Version : Proposed new melee equation


a_Guest03
04-21-2003, 08:13 AM
I know I'm cranking out a lot of equations, but I think eqemu is to the point where we can have accurate spawns, aggro, and equations. I keep hearing that it's off, and I can't understand why some of the variables in the current equations exist in their locations... Why would level have anything to do with damage?? Skill has to do with level, so use that variable to replace all references to level. Characters with advanced skill benefits (some monk skills) shouldn't be hampered by their levels.

Anyway, another proposed equation: standard melee equation

Maxdamage = 3 + damagebonus (from weapon) + weapondmg * CUBEROOT(STR^2)*meleeskill)*.05
EDIT: this equation isn't cutting it :P We'll work it out some more and post an update.

I'll keep cramming numbers in to get max damage, and assorted damage sets. The reason I put STR^2 is to punish all wussy casters in melee. No matter how high the skill, they will never succeed. I need data to test this with, and complaints about situations where this data doesn't work.

If anyone thinks there should be a class modifier for the groups, I think that can be arranged. I think basic weapon sets are just more effective for each group. While rogues may not have much strength, they have much faster weapons with good damage.

Give me feedback!!

Graypaint
04-21-2003, 08:27 AM
While rogues may not have much strength, they have much faster weapons with good damage.

No to mention they can backstab, although that equation may be off as well, havn't tested it.

Hrmm
So Max dam with a Dmg 12 weapon, using 100 str and 100 skill would be 281.5?
That seems resonable.
958 damage with 252 str and skill(forgot caps)
That looks good to me, considering most times you see a 12 damage weapons it has a decent delay.
Yep yep
(calculations may be wrong, did them as I was going to the doctors office =)

a_Guest03
04-21-2003, 08:33 AM
Graypaint, I think your equations are off... I'm seeing 100 str, 100 skill, 12 damage weapon does 63 max damage. Does this seem unreasonable? Assume that's a level 19 guy, with a decent weapon. 63 damage at 19? I think that's fair.

vetoeq
04-21-2003, 08:44 AM
Where is attack rating in this? Is it only used to see if you land a hit?

Your damage seems a bit high for a 19th lvl with a 12 dmg weapon, he should see a max hit of around 25 (2xdmg+1) until around 40th level or so (been a couple years since I was that lvl).

I do distinctly remember that each time leveled from around 25-40 my max hit increased by 2 (or was it ever other level it increased by 2?...bah, don't remember)

--
VetoEQ

Graypaint
04-21-2003, 08:44 AM
lol I had wrong time for appointment.
Yeah, lemme took at what I did for those equations hehe =)

a_Guest03
04-21-2003, 08:50 AM
Would 39 be too high for a level 19 with a 12 damage weapon? I can adjust the equation a bit.

Also, what's the highest hit anyone has seen dealt with a melee weapon without a crit, and what weapon damage was it?

vetoeq
04-21-2003, 08:51 AM
I looked at some old logs:

60th level SK with 41dmg weapon and 255str (avatar) max hit for 302. (post 2h dmg upgrade)

Actual weapon in question was rocksmasher.

--
VetoEQ

a_Guest03
04-21-2003, 11:20 AM
Alright, I didn't know there was a 2hand damage bonus. I'll have to figure that out. Anyway, give me more feedback. I'm changing the equation still... I'm not satisfied that it captures all circumstances. The CUBEROOT and STR squared seem wrong. Caster classes are punished by caps on skills. I need more advice.

vetoeq
04-21-2003, 01:42 PM
I never was an expert on combat stats, I left that to the monks/rogues/rangers, they seem very in tune with those stats and their effect. You might try on the Safehouse, Monkly Business or Ranger Glade for some insight, I would think you might get some interesting info from those folks between the spam.

I'll be happy to give as much input as I can from old logs and what feels right, however, my info will be based off when I actually looked at people hitting during groups/raids and those logs.

--
VetoEQ

a_Guest03
04-21-2003, 03:08 PM
I DID NOT SOLVE THIS. This was calculated very meticulously by people in the know. Very special thanks to Graypaint for finding this link!

I'm quoting most of it because I don't think many of you will go there to read it. It's very impressive.

http://pub14.ezboard.com/fthesteelwarriorthearena.showMessage?topicID=1656. topic

Restatement of model:


Quote:
--------------------------------------------------------------------------------
The damage a mob does on a standard hit is DB + x*DI, where DB stands for Damage Bonus, DI stands for Damage Interval, and x is an integer between 1 and 20 (inclusive)
--------------------------------------------------------------------------------


Breakdowns:

Damage = DB + (x*DI)
DI (Damage Interval) = (max hit) - (min hit) / 19
DB (Damage Base) = (min hit) - DI
x = integer between 1 and 20, inclusive
min hit = DB + DI
max hit = DB + 20*DI
Modal damage = DB + 2*(Weapon damage).

The model is significant for various reasons:
1. It allows players to empirically evaluate ubermob encounters
2. It allows a means to evaluate the relative value of evasive vs. defensive disciplines
3. It suggests a means to evaluate the relative worth of weapon choice, such as that between 2-handers and 1-handers.
4. It suggests avenues for analyzing the mechanics of AC itself, including possibly the AC softcap
5. It suggests a means to consider mob ATK values.

Some or all of these points are followed up in some of the following quotes. After them, I'll present a condensation of further mob DI/DB values.

For example, Rani then drew out an important result of the finding, which is that it offers a way to evaluate the relative worth of tanking with defensive vs. evasive in specific encounters:


Quote:
--------------------------------------------------------------------------------

Wow, an EQ mystery cracked open for all to see. Good job

Your theory holds true for Sontalak at least.

Maxhit = 425
Maxhit with def = 275
Minhit = 140

This gives:

Sontalak DI=15
Sontalak DB=125

One obvious conclusion one can draw from this is that the higher the DI value, the more beneficial it will be to tank the mob with defensive.

Edited by: rani at: 3/13/02 8:00:55 am

--------------------------------------------------------------------------------



Keple also noted this effect: "so if defensive really divide by 2 the DI (which seems to work with my logs as well), mobs with very low DI and high DB would perhaps be better tanked with evasive...". Besrikarle noted the difficulty in aggro maintenance when the tank is hitting less often (with evasive) as opposed to less effectively (with defensive).

Another inference to be drawn from the model is the effect of mitigation AC, again drawn out by Joimster:


Quote:
--------------------------------------------------------------------------------

Mitigation AC should just determine the distribution of hits over the twenty different X values. The distribution would just be a probability for each X value, based on mitigation AC and the mob's attack rating in some way.

For a tank with high mitigation AC, the probabilities would be skewed such that, generally, there is a higher probability of being hit for a lower X value than a higher X value.

And it should also be noted that it is possible to mitigate hits into misses. Go tank a decaying skeleton and you'll see that this is true (you have high mitigation AC, it has a low attack rating).

- Joim

Edited by: Joimster at: 3/15/02 10:47:05 am

--------------------------------------------------------------------------------



The effect of level and AC on mob attack was discussed. Thresher offered the 3 following inferences:


Quote:
--------------------------------------------------------------------------------

Fact: If we chart of AC versus damage we see a curve that always looks the same. Damage reduces slowly until some critical AC value is reached, then drops off sharply for a period of AC increases, then reduces even more slowly after some second AC point.

Fact: There are nearly always clusters in hit graphs at minimum (N = 1) and maximum (N = 20) damage.

Let's suppose that we can look at a hit as having a fixed component above (N = 20), below (N = 1) or in (1 < N < 20), plus a random component that smears some hits over a range that always includes (N = 1) and (N = 20).

Let's also suppose for a minute that Verants' algorithm makes the clusters by rounding hits below (N = 1) to minimum and above (N = 20) to maximum.

Let's lastly suppose that the random component of the hits isn't nearly as sensitive to AC change as the modal hit value.

Then we can infer that if your AC is high enough that the non-random part of hits is mostly BELOW N = 1, you will get the largest spike at minimum damage. This represents a ceiling on mitigation AC, since the random component will always put SOME hits over (N = 1) and reducing hits further below (N = 1) doesn't help. If the random component continues to be reduced even when the modal hit is far under (N = 1), this becomes a soft cap.

Secondly, we can infer that as the modal hit moves through the range (N = 1) to (N = 20), we see the 'sharp dropoff' effect that so many people have reported in the AC 700 to 1200 range.

Thirdly, we can infer that if the modal hit is often over (N = 20) most times, you see the big spike at max damage. This represents a floor on AC, which has been observed but never really commented on. Since at (N = 20) the random component will ALSO be large, we find that the floor is softer than the ceiling.

It's just a hypothesis. Have fun tearing it apart.

--------------------------------------------------------------------------------



Soru considered the distribution of probabilities of DI as a means to explain results found in charts of damage present by Axantur, which were not bell-curved shaped as might be thought:


Quote:
--------------------------------------------------------------------------------

K1% chance of hitting for DB + DI (min hit)

K2% chance of hitting for DB + random(20) x DI (normal hit)

K3% chance of hitting for DB + 20 x DI (modal hit)

K4% chance of hitting for DB + random(20) x DI + random(20) x DI x SF (bonus hit)

Its the K4 region which is not present in MOB attacks. It forms a shallow bell curve on either side of the modal hit, implying it is formed from the sum of two random rolls. SF it the strength/level factor that accounts for high level ogres hitting harder than low level wood elves with the same weapon.
It overlaps with the K2 hits, which explains the sawtooth pattern on the left side of the modal hit.

Open questions:

what causes K1, K2, K3 and K4 to vary? Strength, level, buffs, AC, disciplines, debuffs, etc?

what is the formula for SF?

horrible thought: is the fact that mobs don't get bonus hits a bug?

Soru

--------------------------------------------------------------------------------



Another important contribution came from Gjin LoL, in extending Joimster's model to consider mob ATK values:


Quote:
--------------------------------------------------------------------------------

See if this makes sense to yall.

First assume NPC's act in most ways like PC's except they aren't level restricted and have some AI behind them.

Second assume that the equation given for damage: DB + x*DI, where DB stands for Damage Bonus, DI stands for Damage Interval, and x is an integer between 1 and 20 (inclusive), is the same for NPC's as it is for PC's.

The mystery is X. Lets assume that X is a function of:

- Class
- a mitigation factor (ac)
- attack value

Lets assume class is some constant, the money question of course is, how do Mitigation AC and ATK relate? This is what has been asked since the dawn of time.

Lets assume that Z = (1 - AC/Atk).

AC = players Mitigation AC (best case right now is about 1200, which would be about 1750 displayed in inventory)
Atk = Mobs Attack (assume 2000 is max)

Z indicates how well (or badly) a PC can tank.

Example 1:

Best Mitigation AC = 1200
Best Mob Atk = 2000

Z = (1 - 0.6) = 0.4

Take Z times the range, Z*20 = 8. Assume this value is your modal on the bell curve of X probability, you get the following modal hits using the equation provided by Steel Warriors:

Cazic: 360 Damage per hit
Yelinak: 300 damage per hit

This indicates the best case tanking of the mobs above (no defensive).

If Mitigation falls off, lets say to 1000, the modal values become:

Cazic: 400
Yelinak: 350

Now take the monk class which probably has about 800 Mitigation AC with stellar gear, you have the following modals:

Cazic: 440
Yelinak: 400

This is of course assuming both CT and Yelinak have 2000 attack. Those numbers are per hit modal values. Whats really cool is that you can figure out exactly what CT / Yelinak etc, atk rating is:

Atk = MitAC / ((1 - (ModalHit - DB)/20*DI))

Where MitAC is your mitigation AC
Modal Hit is the modal damage done to you by the mob, from a log file
DB is already provided for CT, Yelinak, and mobs in the thread
DI is already provided for CT, Yelinak and the mobs in the thread

Now whats really really interesting is you can use this exact same formula to determine what damage you do to mobs.

Assume that Creator has 2000 mitigation AC and the best player character (while cursed) has 1200 ATK. Also assume that Z can never be less than 1, and you get:

Z = 1, which means PC damage to Creator will be modal around the dmg bonus + DI which is 13 dmg (1hndr - main - 20 delay). Which means 50% (bell curve) of hits are 13 damage.

This is verifiable with a log parse. But this seems true based on our fights with him.

By the same token you can determine what the Creator's AC is by:

Atk(1 - ((ModalHit - DB)/20*DI)) = AC

Where Atk is your atk,
Modal hit is your modal hit
and AC is the Mobs Mitigation AC.

Would be interesting to plug these into a few log parses and see what comes out.

--------------------------------------------------------------------------------



I'm not sure if this part has been followed up on, but perhaps that would be useful.

Gjin followed that up with:


Quote:
--------------------------------------------------------------------------------

I'll throw out my last supporting factor for my equation, and I think this might sway you guys.

You remember when we had Broca's thread on ac, and in the discussion we mentioned a warrior tanking Yelinak. Anyway, he got between 3-4% AC effectiveness for 100 ac added.

Also you remember many many posts that say that only after adding an incremental amount of AC (usually 100) that a difference was made in actual effectiveness?

Allright here we go ....

Example Cazic:

Warrior 1 Goes from a 440 (800 mitAC) to a 400 (1000 mitAC) modal hit on Cazic. This is an increase of 200 AC: which is 4.5% tanking increase per 100AC added. Ref. Yelinak post.

The big scary last point:

To go from a modal 8 to a modal 7 in X probability, use the following formula for Cazic:

Modal 8 was shown to be 1200 Mitigation AC in my above post. To be a better tank and get your Modal to Modal 7, you need:

(1 - AC/2000)*20 = 7

Solving for AC yeilds ...... 1300.

The step difference between Modals (8 to 7, 7 to 6) are in 100 AC increments.

--------------------------------------------------------------------------------



The following is an alphabetical list of mobs with DB and DI values collated from various posts (with thanks to the authors, who will not all be cited here, though special props to Fulorian Cavestomper):

SNIP VERY LARGE AND VERY THOROUGH LIST OF UBER MOBS


If you read lower in the responses, you learn that the list is slightly off. I think the DB value needs to have one DI value subtracted to get the correct values.

Can we use this data?

We can redo the database again (yeah, pain in the ass), and use these formulae. Most of the uber mobs already exist here. If we can figure out minimum damage levels for BASIC mobs, then we can resolve the minimum, and if we can figure out maximum, we apply that to the npc_types table. We may have to guess ATK ratings of NPCs.

vetoeq
04-21-2003, 03:21 PM
This is VERY good stuff...this is exactly the type of info I was suggesting to go fishing for as I know there are some folks out there that are 'in the know'.

It seems like a very good starting point, if nothing else.

/cheer's to you guys for hunting it down.

--
VetoEQ

a_Guest03
04-22-2003, 06:17 AM
Jeggred made me a driver to test values. Whatever is missing in the DB, I think we can solve using test values from his driver and logs of real data.

Just an update to what's going on with the equations.

The equation we use to test damage values is:

Roundint(DB + (1-AC/ATK)*randint(1,20)*DI)

DI is a float value truncated to 1 decimal place, loaded from database for NPCs. It is the damage interval. For each of 20 rolls of the "dice", you can multiply that by the damage interval.

DB + (1-AC/ATK) * 1 * DI

will be different than:

DB + (1-AC/ATK) * 20 * DI.

randint(1,20) will give 20 different integers to multiply the damage intervals by, meaning that assuming AC, ATK, DI and DB don't change, attacks have 20 damage outcomes.

DB is an integer, loaded from the database for NPCs. It is a damage bonus, which is should be able to be evaluated using an equation from currently existing values in the database. The NPC will always deal this much damage ON TOP OF what it can get out of the 1-20 roll described above. If Cazic Thule hits you, it won't be for 200, but his DB is 200. His DI is 20. You might get hit for 220 or 240 or 210, but never for DB, always above.

AC is the target's AC. That's pretty self-explanatory. I don't know how we'll solve these for the database yet... It may be interesting. This will apply to PCs and NPCs.

ATK is the attacker's ATK. We'll also have to put these values into the database if they don't exist yet. NPCs will need to have them for this equation to work.

If the equation comes out negative, the hit becomes a miss: Damage won't heal, so negative damage becomes 0.

More to come as we uncover it.

a_Guest03
04-22-2003, 06:41 AM
Here is more information we can use to figure out the database values for much of Norrath.

I am trying to fit this in with some observations of my own.

Soloing through my levels as a monk (just got 150 days played) I found that I could determine what level most of the mob's I soloed were by how hard they hit. The formula for most lower level mobs is

(Max damage - DB)/2 = level

Almost all mobs below 40 have a DB of 2. Several old world mob's that are 40 to 47 have a DB of 27 (giant critters in Perma, Stone spider and Nox in Sol b, and Shady Swashbuckler in EC *117 max hit level 45*)

Untill I read this topic I never had cause to look at minimum damage of these mobs or to figure out a DI. I will start looking at this to determine if I can come up with anything interesting to add to the conversation as it pertains to lower level mobs.

There may be a way to determine the DI of certain types of spawns according to level and type. Like if a drake in ToV is X level it will have this DI and this Max hit. And Veterans in Kael will do such and such...

This should give us much of the values of early level mobs. We can adjust as necessary.

vetoeq
04-22-2003, 07:00 AM
AC is the target's AC. That's pretty self-explanatory. I don't know how we'll solve these for the database yet... It may be interesting. This will apply to PCs and NPCs.

ATK is the target's ATK. We'll also have to put these values into the database if they don't exist yet. NPCs will need to have them for this equation to work.


Thats supposed to be Target's AC vs. Attackers Attack I believe.

vetoeq
04-22-2003, 10:01 AM
GN,

I found this URL that has DB values for delays and level...might be useful:

http://lucy.fnord.net/dmgbonus.html

a_Guest03
04-22-2003, 10:44 AM
Thanks, Veto.

a_Guest03
04-22-2003, 12:01 PM
Trying to figure out how to make this previous equation that we've proved out to work with regular PC attacks on NPCs and PCs is proving to be more complex than I thought. Here is what I've discovered so far:

1hs damage bonus: TRUNCATE(( Level-25 )/3)

Already solved in code, presumably by Kaiyodo! Thanks for making this easy! I've verified it on MANY websites, with lots of empirical data giving credit to this equation. This part is right! YAY!

2hs damage bonus ( if delay <28 ) : 1hs formula + 1!!

Believe it or not, it's that easy! If you check http://lucy.fnord.net/dmgbonus.html?setcookie=1 , you will see that this is correct. You may wonder why there is a condition here! Well, I think I figured it out. The numbers actually formed a pattern, which I found a bit weird. If you flip the table on its side and look for, say 4, you'll see that the side beyond 27 delay forms a bell curve. If you made that bell curve extend to the left, your less-delayed weapons would have big damage bonuses. They cut the curve in half and only applied it to the delays

I haven't figured out how to normalize the equation, but I pulled out my stats book to find out how to extend and shrink bell curves. More will be posted as I figure it out.

a_Guest03
04-22-2003, 05:03 PM
I believe I have 2h damage for level 28 (yeah, it's not much), and there is an equation for it so far. More to come as I resolve it:

Assuming level 28, beyond delay 42...

TRUNCATE((DELAY - 30) / 3)
EDIT: Equations on Monkly business dispute this equation. I guess I'll go with Monkly.

The bonus damage minimum is 1, so we round that up.

That gives us a base damage. Now if I can just figure out how that damn level figures into the equation...

vetoeq
04-22-2003, 05:08 PM
Great news, so you are solving for delay > 27 only, since it's different at <=27?

monkboy
04-22-2003, 05:16 PM
You can find some nice info about damage calculations and modals here..

http://www.monkly-business.com/articles2.asp?ArticleNum=66

a_Guest03
04-22-2003, 06:08 PM
This absolutely contradicts what I found on Lucy! :( I apply the monkly equations to Lucy data, and they don't match at all.

I would be satisfied with the data that currently exists on monkly business. I think that model is a more fair representation of the melee classes anyway.

The following equations are offered for weapon damage bonus:

1 handed weapons, including fists, and will include bash and kick, if I am correct:

TRUNCATE((LEVEL-25)/3)

2 handed weapons:

You will notice that many of these equations are modifications of the one-handed weapon equation, and equations listed below.

LIGHT WEAPONS
- Weapons with delays less than 28

1 + TRUNCATE((LEVEL-25)/3)
shorthand: 1hb equation + 1

MEDIUM WEAPONS
- Weapons with delays between and including 28 and 39

TRUNCATE((LEVEL-25)/3) + (LEVEL-27)/4)
shorthand: Light weapons equation - 1 + TRUNCATE((LEVEL-27)/4)

SLOW WEAPONS
- Weapons with delays between and including 40 and 42

TRUNCATE((LEVEL-25)/3) + (LEVEL-27)/4) + 1)
- shorthand: Medium weapons equation + 1

VERY SLOW WEAPONS
- Weapons with delays greater than 42

TRUNCATE((LEVEL-25)/3) + (LEVEL-27)/4) + (DELAY-34)/3) + 1)
- shorthand: Slow weapons equation + TRUNCATE((DELAY-34)/3)

I think these are probably the real values. If they aren't, the equations are so easy compared to the difficult ones, that we should probably follow these instead. I trust Lucy, but I also trust monkly. Let's go with the one that we can do. More to come.

vetoeq
04-22-2003, 06:19 PM
GN, are the values from Lucy and Monklybusiness WAY off or just don't quite jive (possible rounding errors, etc.)?

Next:
I assume that next we take the level/delay DB and add the actual weapon DB to arrive at a final DB?

Follow on:
Okay, I just plugged this into Excel to compare against a known value. 60sk/255str/~1250atk/Rocksmasher(41/47 DB=31) and got a weird number.

TRUNCATE((LEVEL-25)/3) + (LEVEL-27)/4) + 1)

TRUNCATE(((60-25)/3)+((60-27)/4)+1)=20 (20.92)

Now we take that and I assume add the weapon DB of 31 to arrive at 51. Now on the the next part (assuming a 100ac target and DI = delay of weapon (41))

DB + (1-AC/ATK) * 20 * DI

51+(1-100/1250) * 20 * 41 = 805.4

Thats very high, so I messed with AC of target to solve to the known value of 302 max hit with that combo and end up with a minimum AC of 867 or it may be that the ac/attack ratio cannot go below 0.3....or it could be that I'm broken in about 100 other ways :)

STR comes to mind, but it's partially in there since any increase in STR has a direct corelation to increase in ATTK (1 to 1).

Now I'm guessing at the DI value being weapon delay, it might be something else entirely. I don't think it can be the effective delay of attack since that would mean that a hasted (hence lower DI) attacker would hit for less than a unhasted one; which isn't the case.

--
VetoEQ

a_Guest03
04-23-2003, 01:19 AM
DI value for weapons hasn't been posted yet. I have found it, but it's not up there. Your initial Damage bonus value looked correct.

a_Guest03
04-23-2003, 06:06 AM
Lets take the windblade at level 61 with max skill and max strength with AAs, which would be 260STR as far as I know.

Max damage without damage bonus (rounded down) = ((260 + 252 + 61)/100)*50 = 286

In order to get a max hit of 325 as stated above you would need a damage bonus of 325 - 286 = 39, which sounds about right.

Here is how we solve for max damage, I think. At least, it looks pretty neat.

So, to calculate DI:

First we find maxdamage:

maxdamage= ((STR + SKILL + LEVEL)/100)*weapondmg + DB

DI = (maxdamage - DB)/20

Using algebra, we solve equation 2 for maxdamage so that we can have two equations that equal maxdamage. We use substitution to figure out PC DI.

DI = (maxdamage - DB)/20
20DI = maxdamage - DB
maxdamage = 20DI + DB and
maxdamage = ((STR + SKILL + LEVEL)/100)*weapondmg + DB

Substitute one equation for maxdamage, because both equations equal the same thing.
20DI + DB = ((STR + SKILL + LEVEL)/100)*weapondmg + DB
20DI = ((STR + SKILL + LEVEL)/100) * weapondmg // (+ DB - DB) cancels out
so DI = ((STR + SKILL + LEVEL)/100) * weapondmg / 20

And finally!!
DI = ((STR+SKILL+LEVEL)*weapondmg) / 2000

We plug this in for vetoeq's example:

Let's assume maximum level, effective STR, and skill so that we find maximum damage. (okay, strength is WAY high, but I'll explain) For every 20 strength, you get another .01 * damage per DI in this example. That comes out to an overall addition of .2 * damage for 20 strength to the final equation, or .01 * damage per strength addition. I'm wondering if maybe we shouldn't cap strength.

DI = ((310 + 250 + 65)*41) / 2000 = 12.813
(maxdamage = 307.25) (damage bonus of 51)

DI = ((290 + 250 + 65)*41) / 2000 = 12.403
(maxdamage = 299.05) (damage bonus remains the same)

DI = ((270 + 250 + 65)*41) / 2000 = 11.993
(maxdamage = 290.85)

DI = ((250 + 250 + 65)*41) / 2000 = 11.583
(maxdamage = 282.65)

Let's assume a level 50 has several str, and several skill levels, with your rocksmasher.

DI = ((200 + 200 + 50)*41) / 2000 = 10.25
(maxdamage = 224.42) (damage bonus of 19.417)

DI = ((100 + 200 + 50)*41) / 2000 = 7.175
(maxdamage = 162.92) (damage bonus is same)

DI = ((80 + 200 + 50)*41) / 2000 = 6.765
(maxdamage = 154.72)

DI = ((250 + 15 + 50)*41) / 2000 = 1.435
(maxdamage = 52.217) (damage bonus at level 50 with this weapon remains the same) This is with 15 skill.

Okay, so rocksmasher works. Let's take a peak at a 1hb monk weapon.

Posting to ensure my research doesn't get lost :P Will update.

a_Guest03
04-23-2003, 06:48 AM
Let's take a look at the poor wittle n00bs!

Using the same formulae for low levels and high levels gives us this:

Level 1!! YAYYYY!! We'll go through a 2 damage weapon (intense!!) with wuuuuussssy characters, and work our way up to the big Ogre Manmammoths

DB = 0 (they're noobs!!) Assuming there are circumstances where newbies have badass + damage bonus weapons, we can either cap their damage bonus or their overall damage. It would be smarter to cap their damage bonuses at (level-14)/4 or something like that. We will cap their overall damage at some point anyway.

Try to read the strength first, skill second, level third, and weapondamage as the multiplier
Okay, back to our DI equations:
DI = ((STR+SKILL+LEVEL)*weapondmg) / 2000

Level 1 and 2 WEAK casters
DI = ((65 + 0 + 1)*2 / 2000 = .066
( maxdamage = 1.32 )

DI = ((65 + 0 + 1)*3 / 2000 = .099
( maxdamage = 1.98 )

DI = ((65 + 0 + 1)*4 / 2000 = .132
( maxdamage = 2.64 )

DI = ((65 + 3 + 2)*2 / 2000 = .07
( maxdamage = 1.4 )

DI = ((65 + 3 + 2)*4 / 2000 = .14
( maxdamage = 2.8 )

Early level monks
DI = ((103 + 0 + 1)*2 / 2000 = .104
( maxdamage = 2.08 )

DI = ((103 + 20 + 3)*2 / 2000 = .126
( maxdamage = 2.52 )

(put some sticks in his hands)
DI = ((103 + 20 + 3)*6 / 2000 = .378
( maxdamage = 7.56 )

Early level Ogres
DI = ((153 + 0 + 1)*7 / 2000 = .539
( maxdamage = 10.78 )

Damage caps will exist to limit twinking. We should probably make damage caps a database check. Up to the devs :P

a_Guest03
04-23-2003, 09:08 AM
Okay, I figured out how to get modals to happen the way they should.

Equation for melee combat (so far),

modalvalue = round((rand(0,1)*20*(ATK/AC))
if modalvalue < 1, modalvalue = 1
if modalvalue > 20, modalvalue = 20
DB + DI * modalvalue

That should give damage values along the modals, with peaks at (1-AC/ATK)*20. and minimum or maximum.

I haven't tested these yet.

I'll bring this all together into a sleek piece of logic that shouldn't be too hard to interpret into code by any programmer.

a_Guest03
04-23-2003, 12:01 PM
http://pub14.ezboard.com/fthesteelwarriorthearena.showMessage?topicID=3094. topic

This test was down on a needlescale hatchling in plane of earth. The mob was never killed and used on all of the following tests. I used Kazaad, Faith, and ward of gallantry on all of the tests. I lowered my ac by removing equipment.

This mobs max hit is 517 min hit is 94

Test 1 1985 ac
average hit 207.38
percentage of hits for min damage 33.8
percentage of hits for max damage 2.99
Number of hits 586
accuracy 60.04 %

Test 2 1903 ac
average hit 209.62
percentage of hits for min damage 31.99
percentage of hits for max damage 3.18
Number of hits 597
accuracy 58.93%

Test 3 1899 ac
average hit 212.59
percentage of hits for min damage 31.45
percentage of hits for max damage 2.33
number of hits 601
accuracy 60.89

Test 4 1805 ac
average hit 223.43
percentage of hits for min damage 25.81
percentage of hits for max damage 3.43
number of hits 496
accuracy 62.16

Test 5 1706 ac
average hit 219.87
percentage of hits for min damage 32.25
percentage of hits for max damage 4.34
number of hits 645
accuracy 63.24

Test 6 1609 ac
average hit 218.06
percentage of hits for min damage 27.35
percentage of hits for max damage 3.86
number of hits 596
accuracy 59.69

Test 7 1502 AC
average hit 231.74
percentage of hits for min damage 26.00
percentage of hits for max damage 4.91
number of hits 550
accuracy 58.32

Test 8 2017ac (bard singing vov)
average hit 212.85
percentage of hits for min damage 33.97
percentage of hits for max damage 2.88
number of hits 521
accuracy 57.51

Test 9 1985 ac (controll test)
average hit 202.66
percentage of hits for min damage 35.96
percentage of hits for max damage 1.82
number of hits 495
accuracy 61.11

Test 10 2101 ac
average hit 201.33
percentage of hits for min 34.84
percentage of hits for max 1.05
total number of hits 287
accuracy 58.69

I don't know if you see the same pattern that I see here. The accuracy of the mob obviously has a random factor, but it stays VERY constant near 60% accuracy, even with a difference of 600AC! Now, before you call foul, notice as well that the tests only deal with removing ARMOR. This leads me to believe that armor-based AC acts only as damage mitigation. Where does the other AC come from? Whatever the base AC besides armor, changed the accuracy to around 60%.

Anyway, more to come. There is a lot of data on that link that I will continue to dissect.

a_Guest03
04-23-2003, 12:12 PM
AGI/Defense, and other natural defenses should allow someone to evade attack. I hypothesize that I should be able to create an avoidance AC that gets added to mitigation AC to create total AC. Mitigation AC would decrease damage on one scale, while avoidance AC would decrease enemy accuracy on another scale. Has anyone heard this theory before, or can anyone offer me a link or raw data that may or may not support my theory?

Anyone can contribute any data, and it will be more helpful than what I know now.

killspree
04-23-2003, 12:13 PM
Players don't get a damage bonus on weapons until a certain level...I think it's 20, it's been a while since I leveled a melee though.

a_Guest03
04-23-2003, 12:17 PM
Thank you for the contribution, killspree. So, if you have a weapon with stats:

40/54 with a damage bonus of 13

You really just have 40/54 weapon up until 20?

killspree
04-23-2003, 12:19 PM
Aye, until 20 you have a chance to hit for 1 with a weapon in mainhand, after 20 it's 1+damage bonus for minimum damage you can hit for.

Casters and priests don't get damage bonuses at all of course.

a_Guest03
04-23-2003, 12:32 PM
I'm seeing level 28 as the crossing over level for any damage bonuses based on weapon, level, etc.

Here is more spam to support my theories. I will continue to verify them.

EDIT: removed Graal the Dorf's quote - putting in Sylvan's quote, the original writer of the AGI sequence. His work is more accurate to EQLive.

Level ..... -- 40+:20-39:7-19:1-6
---------------------------------
Agi 1...... ---24 :-24 :-24 :-24
Agi 2-3.... ---23 :-23 :-23 :-23
----------SNIP-----------------
Agi 36..... -- -2 : -2 : -2 : -2
Agi 37-38.. -- -1 : -1 : -1 : -1
Agi 39-65.. -- 00 : 00 : 00 : 00
Agi 66-70.. -- 01 : 01 : 01 : 01
Agi 71-74.. -- 05 : 05 : 05 : 05
Agi 75..... -- 39 : 33 : 23 : 09
Agi 76-79.. -- 40 : 33 : 23 : 10
Agi 80..... -- 41 : 34 : 24 : 11
Agi 81-85.. -- 42 : 35 : 25 : 12
Agi 86-90.. -- 42 : 36 : 26 : 12
Agi 91-95.. -- 43 : 36 : 26 : 13
Agi 96-99.. -- 44 : 37 : 27 : 14
Agi 100.... -- 45 : 38 : 28 : 15
Agi 101-105 -- 45 : 39 : 29 : 15
Agi 106-110 -- 46 : 39 : 29 : 16
Agi 111-115 -- 47 : 40 : 30 : 17
Agi 116-119 -- 47 : 41 : 31 : 17
Agi 120.... -- 48 : 42 : 32 : 18
Agi 121-125 -- 49 : 42 : 32 : 19
Agi 126-130 -- 50 : 43 : 33 : 20
Agi 131-135 -- 50 : 44 : 34 : 20
Agi 136-139 -- 51 : 44 : 34 : 21
Agi 140.... -- 52 : 45 : 35 : 22
Agi 141-145 -- 53 : 46 : 36 : 23
Agi 146-150 -- 53 : 47 : 37 : 23
Agi 151-155 -- 54 : 47 : 37 : 24
Agi 156-159 -- 55 : 48 : 38 : 25
Agi 160.... -- 56 : 49 : 39 : 26
Agi 161-165 -- 56 : 50 : 40 : 26
Agi 166-170 -- 57 : 50 : 40 : 27
Agi 171-175 -- 58 : 51 : 41 : 28
Agi 176-179 -- 58 : 52 : 42 : 28
Agi 180.... -- 59 : 53 : 43 : 29
Agi 181-185 -- 60 : 53 : 43 : 30
Agi 186-190 -- 61 : 54 : 44 : 31
Agi 191-195 -- 61 : 55 : 45 : 31
Agi 196-199 -- 62 : 55 : 45 : 32
Agi 200-219 -- 63 : 56 : 46 : 33
Agi 220-239 -- 64 : 57 : 47 : 34
Agi 240-255 -- 65 : 58 : 48 : 35

Here are some AGI bonuses based on level and AGI... More to come. I'll try to collect every chunk of combat code I can. I want that sequence to be flawless.

vetoeq
04-23-2003, 12:34 PM
killspree is right, there is alway the spot where your damage actually starts increasing to some extent for melee. It's in the range 20-25. I seem to remember 24th lvl on my SK, but that was back in early 2000.

Additionally, my parsing shows similar numbers for me hitting mobs for percent hits. I always hit around 60% (+/- a few percent) on normal xp mobs. I'll see if I can drag up some old logfiles to parse to verify.

--
VetoEQ

killspree
04-23-2003, 12:38 PM
Hmm yeah, it may be 28...I just remembered it being a level in the 20s where damage bonus began.

vetoeq
04-23-2003, 12:44 PM
Okay, maybe not 20-25...maybe ->> 28 <<- =)

It might have once been earlier than that (i.e. orig EQ)

a_Guest03
04-23-2003, 02:17 PM
Hitpoints calculated thanks to Maurice of Magelo

Natural durability AA increases HP by 2%, 5%, or 7%.

I think possible ND values for the following equation are 1, 1.02, 1.05, 1.07. If the AA of Natural Durability is 0, the ND value is 1, for 100%. If the AA of Natural Durability is 1, the ND value is 1.02, for 102%. If Natural Durability AA is 2, the ND value is 1.05, for 105%. If Natural Durability AA is 3, the ND value is 1.07, for 107%.

A quick way to figure it out is: Assume NatDurAAvalue is the shown value of the AA Natural durability in the inventory in the client.

Their ND value is equal to the equation below.

ND = TRUNC [100+2.5*NatDurAAvalue] / 100

HP = TRUNC[ 5 x ND ] + TRUNC [ Lvl x LM x ND ] + TRUNC [ TRUNC [ ( STA - TRUNC [(STA-255)/2] ) x Lvl x LM / 300 ] x ND ]

Where the ND is the multiplier bonus they use (Natural Durability, Physical Enhancement, etc ...) and where the term TRUNC [(STA-255)/2] is always 0 or greater (i.e. when STA is below 255, it is considered equal to 0). LM is a class and level dependent multiplier as indicated below:

What is known so far:
Monk, Rogue, Beastlord and Bard:
Level 1-50: Levelmultiplier = 18
Level 51-57: Levelmultiplier = 19
Level 58-65: Levelmultiplier = 20

Cleric, Druid, Shaman:
Level 1-65: Levelmultiplier = 15

Magician, Necromancer, Enchanter and Wizard:
Level 1-65: Levelmultiplier = 12

Ranger:
Level 1-57: Levelmultiplier = 20
Level 58-65: Levelmultiplier = 21

Shadowknight and Paladin:
Level 1-34: Levelmultiplier = 21
Level 35-44: Levelmultiplier = 22
Level 45-50: Levelmultiplier = 23
Level 51-55: Levelmultiplier = 24
Level 56-59: Levelmultiplier = 25
Level 60-65: Levelmultiplier = 26

Warrior:
Level 1-19: Levelmultiplier = 22
Level 20-29: Levelmultiplier = 23
Level 30-39: Levelmultiplier = 25
Level 40-52: Levelmultiplier = 27
Level 53-56: Levelmultiplier = 28
Level 57-59: Levelmultiplier = 29
Level 60-65: Levelmultiplier = 30

a_Guest03
04-28-2003, 07:01 AM
I changed my assumptions around a bit. Assuming that Verant didn't use any of the rounding functions available in C++ and just used integer math, I believe this is the table you would get:

Weapon Haste New With
delay needed delay Shissar

40 91 20 25%
35 95 17 29%
30 88 15 22%
29 94 14 28%
28 87 14 21%
27 93 13 27%
26 86 13 20%
25 93 12 27%
24 85 12 19%
23 92 11 26%
22 84 11 18%
21 92 10 26%
20 82 10 16%
19 91 9 25%
18 81 9 15%
17 90 8 24%
16 78 8 12%
15 88 7 22%
14 76 7 10%
13 86 6 20%

Most interesting is the 16 delay value. That implys that a level 60 monk with his epic can reach maximum haste on his fists with just shissar and a hangman's noose.

I'm assuming here that haste is stored as an integer and the haste modified weapon delay is always an integer. My guess for the formula to calculate new haste is:
INT((100 * delay) / (100 + haste))

Where:
INT is a function that drops all decimals places.
delay is the weapon's unmodified delay
haste is the haste value as an integer, 0 to 100.

Again, I'm not sure if this is how EQ is written. It would be an easy way to do it. Certainly EQ could store all values as floating point numbers and use a proper round function for better accuracy. I'm simply proposing that if EQ uses just integer math then there really isn't a need for 40% haste items at high level.

Anyone have more information on what the haste cap is below level 60?

Yours in science,
Iagoe the gnumber gnowing gnome.

Don't know what haste has been mentioned/programmed before, but there we are - haste equation.

I'm pretty sure that slow will work with negative percents being added (subtracting percents for those who forget how to add a negative), and that the equation should hold up the same way.

The guy has a suitable formula, and no complaints or outliers have been found, so I think he hit the nail on the head. I assume we'll have 1 or 2 delay errors, but I'm willing to live with that.

Grummet
05-03-2003, 12:26 PM
I'm not a number cruncher by nature, though I do understand your equations. Creating them, well... :) I'll try to help where I can, based on my last four years of experience with my monk.

First off, at least level 51+ (and I suspect the vast majority of dmg equations on monkly-business is *for* this area), monks are on an entirely different damage table from all the other classes. Most of the damage tables on mb were created so that monks could figure out their tables, so I suspect this is why your equations, designed for that level/skilllevel, don't jive.

I am not entire sure you can eschew level completely from the equation. I believe you will need to end making two equations to be accurate, one for 50 and below, the other for 51-65, and include a check for level. I know the monk's damage changes based on level there, and *not* skill.

Another thing to consider in your equations, and this may be affecting some of your error, is duel wielding. Primary and secondary weapons do not get the same damage output. There is a primary hand bonus to all weapons. The secondary weapons, however, either do not have a damage bonues applied or have a miniscule one. Try structuring the equations with this to model damage, and see if that doesn't yield a more accurate result.

I've created a spreadsheet to keep some data. As a middle-level raiding guild, I see a fair amount of action against mobs like SoRZ, CT, Tormax, ToV, etc. I'm going to keep tabs on min/max damage given and received, and keep tabs on the AC and ATK at the time (as possible... the last part may prove more difficult to do then say).

Grummet

Grummet
05-03-2003, 12:49 PM
I am not sure I am following the table you posted. I understand the first column is the weapon delay, but the second the total haste, the third the weapon delay after haste, and the fourth the item haste needed on top of shissar? Assuming that, his data is incorrect.

Regardless, from my own extensive parsing and others (namely monks at monkly-business), the guy's equation is incorrect. Using it, for example a 40 haste item on a 16 delay weapon, you would get a delay of 11.42, rounding to 11, which is incorrect. The delay, as calcuated out, should be 12.8.

The haste percentage is actually run a counterintuitive way. 100% haste is what is needed to halve the delay. Based off that, then you can easily make a calculation for the delay, one which has been held up in actual parsing. The error I've noted across a variety of weapons is only .4, but usually it's right on or .1; I attribute this to not understanding how the game rounds the numbers.

Hasted Dly = WeapDLY - ((WeapDLY/2)*PercentHaste)

I am not entirely sure where the INT value should be applied, or even if it should at all. There is no reason why the program cannot handle tenths of a delay, is there? Regardless, I feel confident that that equation will hold up under testing within a small error (for any possible rounding, only). Try it... to get a slow, merely use a negative value for percent haste, and that will yield the necessary increase in speed. Coding wise, you need to just make sure there is a trigger for spell haste to be bypassed during the duration of a slow if a slow lands. Of course, that does necessitate an accurate delay for every mob in the database, nothing which a dedicate core of parsers can't find.

Grummet

a_Guest03
05-04-2003, 12:52 AM
Thanks for the input buddy! I read most of the MB damage stuff. They have a lot of useful info. As for damage tables being all different, I wouldn't say that I agree yet, but I'm continuing to research and post until we have something that works.

I do think that my kick and flying kick are pretty damn close.

Grummet
05-04-2003, 11:42 AM
I reread my post, and I realize I said something that isn't clear to myself. :)

When I mean different damage table, I don't mean different equations, but rather different bonuses, much like you did with the kick/lflying kick equation. Monkey with that and see if it doesn't help model the numbers more accurately.

Grummet

a_Guest03
05-04-2003, 03:52 PM
Grummet, regarding offhand and primary damage bonuses, I agree completely. Offhand is 1 base damage bonus, unaffected by anything, obtained at some level near 28ish. Primary is fluctuating. My kick and flying kick equations only assume (a hypothesis) that there is a damage bonus of some kind similar to the standard weapons. Essentially, the "kick" weapon is used, or the "flying kick" weapon. I assume "kick", which has a really low minimum hit, is based off the "offhand" model. But flying kick is somehow on another damage bonus. I don't know them, as I never played high enough on a monk to get flying kick. If you can offer insight into how damage bonus is found, I could use that. The log I DID obtain has a minimum kick of 47, which puts weapon damage bonus of the "flying kick" weapon at 46, with an offhand bonus of 1 added. So if the mob totally tanks the hit, it still gets 47 of that damage at level 59 monk.

Bardboy
05-05-2003, 12:49 PM
http://pub148.ezboard.com/fpaladinsofnorrathtomesofknowledge.showMessage?top icID=52.topic

Found this and thought it might be an interesting read.
check out the link in the first message, then continue reading the debate. Someone did a lot of work parsing out logs to find this info. :)

a_Guest03
05-05-2003, 03:30 PM
We already built this into our equations :) Thanks for the link, though.

Our calculator SHOULD be more accurate than the one posted there. It also has more functions, such as 2H weapon large delay damage bonuses. Everyone will be very excited when we're done with AC and can finally show that we're not wasting time.

Grummet
05-05-2003, 03:55 PM
Got a long session tonight... I'll log the battles for you (62 monk), and let you go to town with it.

Grummet

a_Guest03
05-05-2003, 04:57 PM
Very nice! I'm having a problem getting one of my damage calcs to work for my level 6 guy :( Calculator says 9.xx, he hits for 19. I'll figure it out.

Grummet
05-06-2003, 12:06 AM
Three PoS mini's then I ld'd for the remainder of the night (grats stupid cable company upgrading DHCP server unannounced).

Here's something for you, though, in the attachment. Just a simple text file of the three fights.

Combat Buffs: Speed of Vallon, Ferine Avatar, Focus of Soul
ATK 1498
Str 265
Sta 265
Dex 265
Agi 265
Skills have been listed already.

Weapons: Entwood Mace (main), Whistling Fist (offhand), Flying Kick

I eliminated all extraneous data, like says and whatnot... also took out critical hits, since I neglected to ask if you wanted them., and they really won't affect the base equation, anyways. More as I get it.

Question: When I do pulling, do you want my logs of the attacks on me for the AC portions? Did none tonight, so it wasn't an issue.

Second Question: It says I cannot upload a file when I try using the attachment box... doing something wrong, or is it disabled?

Grummet

monkboy
05-07-2003, 10:29 PM
Here's some more damage ratio discussion..

http://pub147.ezboard.com/fmonklybusiness43508frm1.showMessage?topicID=39053 .topic

a_Guest03
05-13-2003, 07:51 AM
I don't know how much haste has been discussed, but this site (http://cloud.prohosting.com/~talone/HasteData.htm) has a lot of cool info.