View Full Version : Mobs miss more than they should
James76
09-15-2008, 06:56 AM
I have been testing warrior's Furious Discipline, its supposed to riposte every incoming attack, not every incoming hit. Anyway, its only riposting any actual hit.
But I noticed something strange. I removed all of my gear, using just a crappy longsword as my only equipped piece. Set my level to 55, zone into poinnovation, pull a mob. It is missing 90% of the time, as if I had an AC of 5000 even though my AC is 659. It should be hitting me 90% of the time. My agi and dex are 95, no spells, nothing.
trevius
09-15-2008, 07:51 AM
Did you enable the rule Combat:UseIntervalAC in your rule_values table and set it to true? If not, then try that. Also, if you want mobs to land hits more often, you can always adjust their attack rating and accuracy.
I don't think AC effects how often you are hit, only how hard you are hit for on average. The main factor in how often you are hit is your defense/dodge/parry/etc skill levels vs the level/accuracy of the mob.
James76
09-15-2008, 12:01 PM
Yes UseIntervalValue is already set to true. This is happening with all mobs in pop. Going to try some luclin and norrath....
Ok went to ssratemple, still wearing NO GEAR, the mob would only hit once in 4-10 attacks.
So you are suggesting most or all mobs in the database have a low attack rating or accuracy? Lets have a look at the database values. Looks like all the mobs I've looked at have ATK and Accuracy equal to 0. Aggregating the database, every single mob has an ATK and Accuracy of 0. Looks like this is a PEQ problem. Anybody want to try this query on their database?
SELECT zone, max(ATK), max(Accuracy)
FROM npc_types AS nt
INNER JOIN spawnentry as se ON se.npcid=nt.id
INNER JOIN spawn2 AS s2 ON s2.spawngroupid=se.spawngroupid
GROUP BY zone;
I am going to try making changes globally to see if the server actually uses that data.
James76
09-15-2008, 12:36 PM
ok I changed all of them to 1000,100 (ATK and Accuracy, respectively)... no effect.
Trying 2000,2000... marginal gain, maybe 50% miss rate with no gear..
Trying 5000,5000... starting to look like a real fight.. But with gear, its back to miss miss miss miss miss hit...
So it does appear to change with database modification. Looking through the code, only Accuracy appears to modify whether or not the npc hits.
I'll post the issue with peq.
There is still the riposte problem, which is part of the AvoidDamage section of combat. Riposte should be part of Attack method, and occur before we know whether or not it MAY hit, or even before you know how much damage may hit.. At this point, only if damage is above zero, THEN only if it hits, is there the chance of the riposte.. And if the chance is 10000%, as in the case of discipline, it should be riposting on every attack. Maybe AvoidDamage should happen before the GetWeaponDamage call.
Gonna analyze the code and think about the bigger picture for a while..
trevius
09-15-2008, 05:24 PM
The combat system has gone through alot of changes in the past year. The accuracy and attack rating fields are both pretty new to the emulator, so PEQ didn't have them added. I think there is a default value that is set if they are set to 0 and 0. So, but setting them to something like 10 and 10 would actually make them hit less often and for less damage. These can be tuned, but I find that I have to do them on a zone by zone basis and test out how hard I want them to be for each zone I do. For raid mobs, I might use 2500AR and 300 Accuracy or so. Keep in mind that you will be missed due to parry and dodge even naked. So, your skill values play a part in this as well.
I do think that the database needs a big overhaul on these stats, but I don't think it is an easy job. I also imagine that it shouldn't be done until the combat system is considered to be very complete. Otherwise, changes would have to be made to the entire database everytime some new setting was changed or created.
ChaosSlayer
09-15-2008, 06:52 PM
umm Trev, why does setting ATK and AR to 10 (which greater than 0) would cause mobs to have WORSE dps?
is that cuase it uses 10 ISNTEAD of default calculated value, rather than +10 to default value?
trevius
09-15-2008, 08:32 PM
Yes, just like setting min/max damage from 0 to 10 on a level 70 mob will make them hit for much less. Certain fields use either averages in the database, or preset defaults for their level in the source. Something like that anyway.
cavedude
09-15-2008, 09:13 PM
Yep, when KLS implemented Atk and Accuracy, I asked if leaving them set to 0 would effect DPS, and the answer was no. Both are calculated by the attack code already, you just couldn't edit them in the DB. Log parsing confirmed this. With that in mind, it's completely possible that setting a low value for each will lower the output, and not add a bonus to it. (You would be overwriting the value calculated by the server, not adding to it)
It does bother me that both fields are 0, but I haven't updated them for two main reasons. One, as mentioned above, I'd like to see the combat code stabilize first (in that I'm told, OK I'm done tweaking go ahead and update the DB) Also, based on feedback from the players on TGC and logs I've parsed, I'm not convinced it's a huge issue. The DPS for the most part is in line with the DPS at this era in EQ's history (PoP/LoY)
ChaosSlayer
09-15-2008, 11:31 PM
well guys there is a TINY problem with this.
since an average DB user has NO IDEA what is default ATK and AR of any given npc is, using those fields in DB as substitute is esentily shooting in the dark.
Esentialy if i want to alter any npc atk or ar i have to sit down and first calculate these default values for any npc to be altered, to figure out what to put into those fields to ahcive my goal - which is kidn of counter productive.
Can we ask KLS to re-code this implementation so values placed into ATk and AR fields are ADDED to the npc DEFAULT values calculated based on his level/class/stats? This would be much more reasonable, cuase basing on npc default performace we can then tune him up or down (+ or -) wihout actualy needing to figure what his defaull values are
Otherwise I can spend whole day seting NPC to 10,100, 500, 750, and not seeing any improvement cuase his default performance is apparently 27k or something...
would not you agree its a better way to implement this feature?
James76
09-15-2008, 11:36 PM
I executed a
UPDATE npc_types SET ATK=level*100, Accuracy=level*150
and it seems to be much more true to the game. Some mobs like Bertoxxulous still seem easy but at least they are hitting more often.. And the game isn't nearly so soloable anymore. Finally they can hit a naked me. And if I were dodging or whatever, it would say that in combat. It wouldn't say MISS MISS MISS MISS MISS MISS MISS....
As for the combat code, I looked through it to find an easy solution for the riposte problem (ripostes should happen on the attack, not on the hit) and I noticed reused variables, some genius thought it was smart to use the damage variable as a way to control combat, by setting it to specific values to indicate no hit, or a riposte, etc. This is the mark of the amateur developer. Also the redundancy between Client combat and Mob combat, considering inheritance should simplify things (Client inherits from Mob). Maybe they had a problem finding a way to call the parents method.. the easiet way is, for example from within Client::AvoidDamage() is to outright call Mob::AvoidDamage() and then anything specific to the Client can be handled. Or call it at the end. If its written in a way that prevents that from working, then it isn't following OOP rules and is poorly written.
trevius
09-16-2008, 12:10 AM
The entire EQEmulator code is years of individual's work all combined to make a single final product. There have been hundreds or maybe thousands of code additions to the source and they all came from unpaid volunteers to the project. No doubt some of it isn't perfect. Some of it was rushed to get it working and then never tweaked or corrected to work the right way. Reading the source there is alot of comments like "I don't know what is going on here..." and "I am too lazy right now to do this the right way", etc lol. The emulator is a huge project and for a small community to put something together over the past few years that works as well as it does is pretty amazing to me. My point is that it sounds a little like you are putting down the coders that wrote the source. Yes, some parts aren't perfect, but with limited resources and no paid professionals to work on it, I think the project is a huge success considering it's current state. This is probably the best emulator community and most complete emulator code in the world. So, we must be doing something right :)
If you are a good coder, then you are more than welcome to have at fixing any part of the code you wish to work on. The code will have to be checked and approved by the developers of the project before it gets added. But, if it is a good fix or good code, then it should definitely make it into the source. I hope to see some code from you if you have time and are interested in trying to help the community :)
ChaosSlayer
09-16-2008, 12:52 AM
well i don't propose altering any base code (at least untill I see major problems with it) =P
I simply propose to repalce "instead" with "Add" for ATK and AR values in DB to be more user friendly
trevius
09-16-2008, 04:51 AM
Chaos, you might want to check out the post that KLS made in this thread:
http://www.eqemulator.net/forums/showthread.php?t=24671
Her spreadsheet should help to get some idea of the attack rating and accuracy calculations.
I think your idea may work for AR and Accuracy, but I definitely don't think it would be best for min/max damage (not that you mentioned that, but it is another that is auto calculated). But, I would almost rather see another way to find the calculated stats like min/max damage, AR and Accuracy. I think if they were added into the #npcstats command output, that would probably solve the problem for now.
ChaosSlayer
09-16-2008, 10:13 AM
well yeah I saw that one.
I see what you saying.
I didn't even know that there is a defaull min/max dmg calculations been done, since I always used my own dmg values for mobs since originals that were in DB (live-like) were way to much for a decent solo encounter trash mobs. So I was building them from scratch so to say to being with
As far as ATK/AR goes, I guess same apparoch could be applied, except its prabobly not as critical compared to min/max dmg caps when it comes to players survival.
Again the idea is to minimaze "extra research" done by the DB user, such as need to know mobs atk/ar ahead of the time (using by hand calculations or that spreadsheet you mentioned) to tune it up or down a little.
And yes if game/db/or side program could automaticly show you pre-calculated Ar/ATK wihout need to consult with the spreadsheet all the time- that would be great. Like #npcstats you mentioned
PS. Another great thing is to be able to alter PLAYER'S ATK/AR bonuses per class from coded in defaults. Could go long way of customizing/tuning classes
on each specific server 8)
James76
09-16-2008, 12:28 PM
The attack and accuracy (180 and 0?) in that spreadsheet are far too low what it should be. I wouldn't have noticed all the misses ON EVERY SERVER unless I tested Furious Discipline..... because again, only the hits are getting riposted... When I played my warrior on live I loved this discipline because I would counterattack everything from anybody. Was great for duels, especially vs rogues with their fast dual-wields. So I thought Furious was broken, but I looked at it, and its really working, I just never get hit. So I removed all of my gear, and I'm in PoP, so I figure things would just cream me. Nope, I never get hit.
NEVER GET HIT.
I've since tried ATK=200*level and Accuracy=level*500 for every row in the database... So far I'm happy with it. Maybe its kinda insane, a level 60 mob with an Accuracy of 30000, but for whatever reason the game needs it just to be able to hit me 90% of the time with no gear to protect me.
Min/max damage is ok, its actually in the database, not calculated. That high attack rating doesn't max out damage either, we seem to get a nice spread of actual damage instead of always getting the minimum.....
Go ahead and try it out, you can always set your database back to defaults with a simple
update npc_types set atk=0, accuracy=0;
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.