Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Server Code Submissions

Reply
 
Thread Tools Display Modes
  #1  
Old 07-08-2009, 02:57 PM
Zeice
Sarnak
 
Join Date: Oct 2008
Location: USA
Posts: 92
Default Rogue Max Backstab Damage Rule

Well I was thinking since there are now rules for the monk damage attacks and archery, there should be one for rogue's backstab damage. Granted I don't know what KLS has left to do to the formulas for backstab damage, but for custom server purposes this should be a temporary solution. Now I've just been delving into the code for the first time, so this is only my second attempt at something like this. I was comparing all the rule additions for monk/archery so I think I've figured this out. My only thing is I don't know if it would be better to use RuleR or RuleI...but I'll give both examples below and maybe someone can give me some better insight.

Another thing to note is this is just for max backstab damage above level 25. I would think min backstab damage is relatively fine, and damage below level 25 should be a moot point.

First RuleI:

Code:
ruletypes.h
----------------

ADD
RULE_INT ( Combat, MaxBackstabBonus, 10) //% Modifier 

AFTER
RULE_INT ( Combat, RoundKickBonus, 10) //% Modifier that this skill gets to str and skill bonuses
Code:
special_attacks.cpp
--------------------------

REPLACE 
max_hit = (((2*primaryweapondamage) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355)  + ((level-25)/3) + 1;

WITH
max_hit = (((2*primaryweapondamage) * GetDamageTable(BACKSTAB) / 100) *  RuleI(Combat, MaxBackstabBonus) * GetSkill(BACKSTAB) / 355)  + ((level-25)/3) + 1;
Or using RuleR:

Code:
ruletypes.h
----------------

ADD
RULE_REAL ( Combat, MaxBackstabBonus, 1) // % Modifier to Max Backstab Damage (.5 = 50% base damage, 1 = 100%, 2 = 200%)

AFTER
RULE_INT ( Combat, RoundKickBonus, 10) //% Modifier that this skill gets to str and skill bonuses

Code:
special_attacks.cpp
--------------------------

REPLACE 
max_hit = (((2*primaryweapondamage) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355)  + ((level-25)/3) + 1;

WITH
max_hit = ((RuleR(Combat, MaxBackstabBonus)*(2*primaryweapondamage) * GetDamageTable(BACKSTAB) / 100) *  10 * GetSkill(BACKSTAB) / 355)  + ((level-25)/3) + 1;
Like I said I'm not sure which route would be the best way to go or if I even did it right, any help would be appreciated. =)
Reply With Quote
  #2  
Old 07-08-2009, 04:08 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

KLS prabobly didn't see a need for BS rule cause BS has recently was changed to be based of new weapon property field called backstab_damage, which now used as base for BS sintead of normal weapon dmg (I am not however sure if this works for T. or just for SoF?)

This is a guess however =)

Nothing against the rule thought =)
Reply With Quote
  #3  
Old 07-08-2009, 04:12 PM
Zeice
Sarnak
 
Join Date: Oct 2008
Location: USA
Posts: 92
Default

Yeah, I don't believe that field is being used just yet. It shows on items, but I don't think it's being used in the formula. Like I said this is just a temporary thing if people wanted to use it. /shrug
Reply With Quote
  #4  
Old 07-08-2009, 04:57 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

well as of 6/15 changelog it says:

Recommended SQL: (This is recommended for databases that don't stay current with PEQ or are custom)
UPDATE items SET backstabdmg = damage WHERE backstabdmg = 0 AND itemtype = 2;


I guess it means that weapon no longer use normal DMG for BS base- though best way to test this is to take a weapon with high normal dmg, 1 bs dmg and see how mcuh it stabs for with the latest build
Reply With Quote
  #5  
Old 07-08-2009, 05:05 PM
Zeice
Sarnak
 
Join Date: Oct 2008
Location: USA
Posts: 92
Default

Quotes from Trevius:

Quote:
I am sure those will be added in eventually. But, adding in Heroic stats is my first priority. Once I know how to add one, the others should be cake. For spelldmg and healamt, each of those would have to be coded in separate places, so it would be different than coding in Heroic stuff, which is why I am not doing them all at the same time. After Heroic stats, I will probably try to see about doing backstabdmg next, because that is a pretty cool stat IMO, considering I played a rogue on live for years. I like the idea of being able to have hard hitting weapons that devs don't have to nerf down just because they don't want insane backstabs from Rogues. I looked through the PEQ items table and it looks like many/most of the piercers already have the backstabdmg setting set. I will still put up a simple MySQL query when I add it for databases that can't update to PEQ so Backstab will still work perfect for them. Basically, I think this would work well:
Quote:
Well, I wasn't able to get to actually having the server make use of any of the new stats tonight, but I was able to get them all working to show up on items in game when using SoF.

I still plan to start the server side calculations by adding in Heroic stats first, but I am still not sure what exactly needs to be done to do it. From testing, I did verify that not only do Heroic stats increase the cap by the value set, but they also add that many of that particular stat for the value set. So, if you are capped at 300 STR and your items actually total 300 STR, and then you get an item that has 10 Heroic STR on it, you will then have 310 STR showing.

I will mess with it more tomorrow night and see if I can figure out how to handle the code for that stuff.

I also added in the field for normal (non-heroic) SV Corruption, since it wasn't coded yet. The Corruption and stuff will be the hardest stuff to add since it isn't anywhere in the source yet. At least the other stats are already everywhere they need to be and to code in Heroic stats should just mean making it add the extra values and increase the caps.
Fields are just for looks atm. They don't do anything, yet.
Reply With Quote
  #6  
Old 07-08-2009, 05:12 PM
ChaosSlayerZ's Avatar
ChaosSlayerZ
Demi-God
 
Join Date: Mar 2009
Location: Umm
Posts: 1,492
Default

roger that
Reply With Quote
  #7  
Old 07-08-2009, 05:18 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Yeah, the new backstabdmg field in the items table will work for all clients once it is added to actually be factored into the source code. I don't see much of a reason for a rule for this since the new field should make it easy enough to fully customize all bs damage for all items, or even just for specific weapons as needed. If no one else gets the new stats added soon, hopefully I will be able to get to them sometime soon. I tried looking into getting them added already, but there are a few things I wasn't understanding. Usually a second look after taking a break from it will help me to understand it better. If anyone has coding suggestions to implement the new stats, I am all ears.

The rule isn't a bad temporary option if servers wanted to add it to thier source manually for now, but I don't personally think it should be added to the SVN just to be removed shortly after when the new item stat code goes in.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #8  
Old 07-08-2009, 05:26 PM
Zeice
Sarnak
 
Join Date: Oct 2008
Location: USA
Posts: 92
Default

Yeah, I figured it would only be temporary either way. Maybe this was the wrong forum, but just posted it incase anybody wanted to use it for now.
Reply With Quote
  #9  
Old 07-08-2009, 06:14 PM
gaeorn
Developer
 
Join Date: Apr 2009
Location: USA
Posts: 478
Default

Although, it might be nice to have a rule to adjust the BS damage across the board so if a server wanted to increase all BS damage by 10%, they wouldn't have to go edit every item in the DB that has BS damage.
Reply With Quote
  #10  
Old 02-15-2011, 03:53 PM
Scendera
Fire Beetle
 
Join Date: Feb 2011
Posts: 11
Default

Quote:
Originally Posted by trevius View Post
Yeah, the new backstabdmg field in the items table will work for all clients once it is added to actually be factored into the source code. I don't see much of a reason for a rule for this since the new field should make it easy enough to fully customize all bs damage for all items, or even just for specific weapons as needed.
Very elegant...thank you. Will this work on summoned weapons for water pets also?
Reply With Quote
  #11  
Old 09-28-2010, 01:41 AM
trojansf5
Fire Beetle
 
Join Date: Jan 2010
Location: Michigan
Posts: 4
Default

+BS does not work.

Rogue Backstabs should be able to break 10k with assassin's strike and epic 2.0.

We've tested quite a bit with the bug testing team and found that comparing rogues with zerks here versus on live met with a massive discrepancy.

The augs will correctly increase a weapon's normal damage number but the number used to compute backstab max hit does not receive the increase. (jagged glowing prism)

1) Damage augments e.g. jagged glowing prism are not currently having any affect on rogue backstab damage.
2) On live Rogues parse equivalent to zerks in tacvi/omens/2.0 gear
3) On EMU zerks outparse rogues significantly in the same gear configuration.



I believe the root issue of the problem lies in the calculation of backstab max hit (max and min hit are the two big determinants of backstab damage, these are calculated then sent to a general damage routine to determine how much damage is actually done). All of the variables in the max hit calculation are easily obtainable except one, it shows up in the code like this:
GetDamageTable(BACKSTAB)
I'm not very intimate with the emu server code so I have not been able to locate exactly what this does, but to venture a guess I'd say it is pulling a value from a table in the database. Based on data supplied by Wildd (thanks Wildd) I estimate that the current value this is returning for a lvl 70 rogue is about 273. Based on the second hand recollections of live data that I have from Wildd and Irrelevant (thanks guys) I estimate that this value should be somewhere in the 356-400 range for lvl 70 rogues to get the max backstab hit they deserve.

with duelist maxed, bs *6900 and some changes with duelist *4900 and epic, Fabled gear pieces,rest of time gear. Yeah our dps is broken, last parsed fight was vex 2400 dps zerker 2k dps monk 1600 dps rogue 1550 dps terraa rogue ( she is healing ) 600 dps on this fight. We had the mobs back at least 95 % of the time. I hope rogues dps will get fixed atm it really sucks to what the class should be the best at.. its only middle of the road.
*** i have maxxed over 150 accuracy ( with trib) best fero cleave combat effect 48 worn attack at least 100 over the cap ****

So my hypothesis is that this is not actually a bug but rather a lack of implementation of lvl 66-70 content. I'm guessing that the backstab damage table only contains values for rogues up to lvl 65. If I am right the solution should be easy (simply expand the table) once you have some good solid live data to pin down exactly where the 66-70 values should be.


1.) If rogue dps is deemed too low, a +backstab% skill modifier of a large amount or an increase to the cap (currently 235, capped both according to #myskills and the skills window) might be an elegant solution; it would increase only backstab damage and not modify agro generation at all.

Backstab: DB+DI*x(where x is an integer between 1 and 20, and where DB is 123)

Backstab 235+12% values:
25dmg weapon: DI = 48.5, DI20 = 1142
24dmg weapon: DI = 46.5, DI20 = 1097
20dmg weapon: DI = 37.5, DI20 = 919
15dmg weapon: DI = 26, DI20 = 690

Backstab 235 (no skill modifier) values:
15dmg weapon: DI = 22.5, DI20 = 618

Asuumed: DB is the same for all tests. My Strength, Attack, Accuracy, and AAs were the same throughout the parse.
DI is a function of weapon damage times backstab modifier times some variable. It was assumed that it was (weapon_dmg*backstabskill/100), but this does not appear to be the case; there must be some other monkey-wrench involved. The difference between DI intervals on a modifier of 12% (going from 235 to 262) is relatively colossal; this was only noticeable on such a lower level dagger because any dagger post-Ifir has the backstab mod on it.

I played rogue for 8 years ( or longer ) on live i love the class i can deal with all of its shortfalls and ill try to be patient while we work on this but really i mean come on really? from a mobs back we should out dps monks (equal gear and aa) and Berzerkers should not be 2x rogue dps ( equal gear and aa) if the state things are acceptable to all the non rogues then everytime a new rogue asks me a question i will do my best to scare them into a class that dosnt SUCK

Its been tested, now it needs to be solved.
Thank you,
Nevuti the Irreverent Server.

( Credit to: Terraa, Wiild, Nevuti, Irresponsible, Irrelevant )
http://irreverentlabs.com/EQ/
Reply With Quote
  #12  
Old 09-28-2010, 03:12 AM
Vexium
Fire Beetle
 
Join Date: Jun 2010
Location: mmmeh
Posts: 8
Default

I'm here to confirm that (at least on Irreverent server) there seems to be something wrong with rogue's Backstab damage post-level 65.

I think Nevuti is very passionate about his class, and his information (along with others') has provided insight into the nature of a problem that we at the Irrevent imagine rogues are facing throughout EMU.
Reply With Quote
  #13  
Old 09-28-2010, 04:24 AM
lerxst2112
Demi-God
 
Join Date: Aug 2010
Posts: 1,743
Default

In the current emulator code, GetDamageTable(BACKSTAB) returns 305 for a level 70 rogue. The function is in attack.cpp.

The relevant part is here:

Code:
int16 dmg_table[] = { 
    275, 275, 275, 275, 275,
    280, 280, 280, 280, 285,
    285, 285, 290, 290, 295,
    295, 300, 300, 300, 305, 
    305, 305, 310, 310, 315,
    315, 320, 320, 320, 325,
    325, 325, 330, 330, 335, 
    335, 340, 340, 340,
};

if(GetClass() == MONK)
    return (dmg_table[GetLevel()-51] * (100+RuleI(Combat,MonkDamageTableBonus))/100);
else
    return dmg_table[GetLevel()-51];
The actual formula for the max hit is:

Code:
max_hit = (((2*backstab_dmg) * GetDamageTable(BACKSTAB) / 100) * 10 * GetSkill(BACKSTAB) / 355)  + ((level-25)/3) + 1;
backstab_dmg is the number from the backstab damage field on the weapon. If you substitute your actual weapon damage and skill values into the formula it should help to see if the max is matching up.
Reply With Quote
  #14  
Old 09-28-2010, 02:49 PM
trojansf5
Fire Beetle
 
Join Date: Jan 2010
Location: Michigan
Posts: 4
Default

Thanks for the support, and Many thanks for the actual code. It means a lot, even to other players that are as passionate about their class as I'am to mine.
Reply With Quote
  #15  
Old 09-29-2010, 12:18 PM
Irreverent
The Solo Server
 
Join Date: May 2007
Posts: 416
Default

Nevermind, I see the spam. Tsk..tsk.

But, this is good research and follow up and I am so proud of the EMU community coming together to assist in this!
__________________
OP of Irreverent Server (The Solo Server)
Our Forums
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 06:33 PM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3