Log in

View Full Version : New SoF Item Stats


trevius
06-14-2009, 08:11 PM
I am going to take a shot at getting the new SoF item stats functioning. I am going to start with Heroic stats and maybe eventually add in the others like dsmitigation, healamt, spelldmg, clairvoyance, and backstabdmg.

Cavedude, if you see this, do you have any issues with me adding new fields to the database for Heroic Resists? I would name them all in the same format as the current Heroic fields such as; heroic_pr, heroic_dr, heroic_fr, heroic_cr, heroic_mr, heroic_svcorruption. These fields are not used on Live as far as I know and they are not in the 13th floor database either, but the client fully supports them and we have them identified in the item structure already. Since they are there for us, we might as well add in support to use them, I figure.

Once the new fields are all in the database for Heroic Resists, I will try to code in what is needed to be able to pull these fields for Serialization and also try to get calculate stats to observe these properly to exceed the caps on stats. I haven't messed with coding the handling of item fields before, but it isn't the first time I had to figure out how to do something new. Hopefully I don't break anything in the process, but I will make sure to test as well as possible before putting anything on the SVN for it.

Heroic stats should be pretty straight-forward, since all they do is increase the stat caps for normal stats and resists. The client observes these increases and it shouldn't be hard to reflect that on the server-side.

If I am able to figure out how to get Heroic stats in and it isn't too much of a pain to do, I might try adding in some of the other new stats as well. To do that, I need some input on them to make sure I understand each one properly. Here is the list of the new stats and what my current understanding of them is:

dsmitigation - I believe this is simply to reduce how much a damage shield lands for. I think it would be just a flat amount to subtract from the damage shield damage as long as it doesn't go lower than 0 value (essentially healing the character).

healamt - My guess is that this sets an amount to increase all healing spells for. I am also guessing that this is a flat rate, so if you have 100 total in healamt from items, all healing spells get increased by 100. Or maybe it is by percentage. Maybe it has restrictions too, like it might not work on CH. Could definitely use clarification on this.

spelldmg - I am guessing that this works the same or similar to healamt, accept this adds damage to spells. I don't know if there are restrictions, but I would guess that AE spells might not be affected by this.

clairvoyance - I really have no idea what this stat is or what it does.

backstabdmg - I am pretty sure that this is just a way to allow weapons to have different values to use for backstab vs just using the base damage on the weapon. All of my weapons on my Rog on Live had the same value for backstabdmg as they did for normal damage. So, when this is implemented, it would probably also be a good idea to add a SQL query that will update all piercers in the database to have a value for this field. The query should be as simple as checking if the weapon type is a 1hp, and then setting the backstabdmg to match the damage of the weapon if backstabdamage = 0. This would prevent it from overwriting any existing weapons that might have different values between the 2 fields. I think the main point of this field is so you could make really hard hitting piercers that aren't insanely overpowered for rogues using them to backstab. You could set the backstabdmg lower than damage if you want to do that, or you could set it higher for custom weapons that might not hit normal hits hard but land some amazing backstab damage to make the weapon more appealing to Rogues than to any other class.


I will probably start working on this tonight. Hopefully it isn't all too hard to get these fields to be used by the serialization. If anyone has suggestions or questions, lemme know. Also, if anyone wants to help get these all working, feel free!

KLS
06-14-2009, 09:32 PM
clairvoyance 2% chance on spell cast over 75 to return this amount of mana.

heal and spell damage don't affect duration spells only, and only affects spells above 75.

These have no caps.

cavedude
06-14-2009, 10:15 PM
I have no problem adding the new columns.

Secrets
06-14-2009, 11:50 PM
I would love spelldmg and healamt being added in personally, and if you add one in, why not add them all?

I see no issue with that.

trevius
06-15-2009, 03:50 AM
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:

UPDATE items SET backstabdmg = damage WHERE backstabdmg = 0 AND itemtype = 2;

trevius
06-15-2009, 07:30 AM
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.

Majildian
06-18-2009, 04:00 PM
Heroic stats actually do a lot more than increase the stat+cap, you can read about them and the other mods at http://www.evilgamer.net/forums/showthread.php?t=3508.

John Adams
08-02-2009, 05:18 PM
backstabdmg does not appear to be in the sql/svn updates anywhere. I'm still searching here for what it should be, but wanted to let you know.

(i haven't updated since Apr '09, so this is an all-day project lol)


edit: ok, there are apparently a bunch of new Items fields on SVN code, not yet in DB updates. Maybe I shouldn't have been so zealous ;)

John Adams
08-02-2009, 05:29 PM
In fact, it seems all these are missing:

itbs.BackstabDmg = item->BackstabDmg;
itbs.DSMitigation = item->DSMitigation;
itbs.HeroicStr = item->HeroicStr;
itbs.HeroicInt = item->HeroicInt;
itbs.HeroicWis = item->HeroicWis;
itbs.HeroicAgi = item->HeroicAgi;
itbs.HeroicDex = item->HeroicDex;
itbs.HeroicSta = item->HeroicSta;
itbs.HeroicCha = item->HeroicCha;
itbs.HeroicMR = item->HeroicMR;
itbs.HeroicFR = item->HeroicFR;
itbs.HeroicCR = item->HeroicCR;
itbs.HeroicDR = item->HeroicDR;
itbs.HeroicPR = item->HeroicPR;
itbs.HeroicSVCorrup = item->HeroicSVCorrup;
itbs.HealAmt = item->HealAmt;
itbs.SpellDmg = item->SpellDmg;


There is an update in 665_heroic_resists.sql that fail because heroic_str is not already in place (the AFTER statement).

Hope I am not just rambling nonsensically... it's been known to happen.

KLS
08-02-2009, 05:44 PM
I had the same problem when updating by hand back then, made me mad that Trev assumed everyone had updated item tables from peq... but I added them manually and forgot to yell at him for it.

trevius
08-02-2009, 06:17 PM
Oh, I had assumed those had been in for a long time. My items table was probably over a year old when I added the extra fields for the resists and new stats. I guess that since the heroics weren't previously being used, it wasn't required before like it is now. I didn't really think about that. Is there a way to add fields only if they don't already exist via SQL queries? If so, I could have just added that to the SQL file as well. I know you can do a "delete such and such if it exists", but is there an "add such and such only if it doesn't already exist"?

Sorry, I am not all that SQL savvy.

You should be able to run the following if you don't already have these fields:

ALTER TABLE `items`
ADD COLUMN `dsmitigation` smallint(6) NOT NULL default '0',
ADD COLUMN `heroic_str` smallint(6) NOT NULL default '0' AFTER `dsmitigation`,
ADD COLUMN `heroic_int` smallint(6) NOT NULL default '0' AFTER `heroic_str`,
ADD COLUMN `heroic_wis` smallint(6) NOT NULL default '0' AFTER `heroic_int`,
ADD COLUMN `heroic_agi` smallint(6) NOT NULL default '0' AFTER `heroic_wis`,
ADD COLUMN `heroic_dex` smallint(6) NOT NULL default '0' AFTER `heroic_agi`,
ADD COLUMN `heroic_sta` smallint(6) NOT NULL default '0' AFTER `heroic_dex`,
ADD COLUMN `heroic_cha` smallint(6) NOT NULL default '0' AFTER `heroic_sta`,
ADD COLUMN `heroic_pr` smallint(6) NOT NULL default '0' AFTER `heroic_cha`,
ADD COLUMN `heroic_dr` smallint(6) NOT NULL default '0' AFTER `heroic_pr`,
ADD COLUMN `heroic_fr` smallint(6) NOT NULL default '0' AFTER `heroic_dr`,
ADD COLUMN `heroic_cr` smallint(6) NOT NULL default '0' AFTER `heroic_fr`,
ADD COLUMN `heroic_mr` smallint(6) NOT NULL default '0' AFTER `heroic_cr`,
ADD COLUMN `heroic_svcorrup` smallint(6) NOT NULL default '0' AFTER `heroic_mr`,
ADD COLUMN `healamt` smallint(6) NOT NULL default '0' AFTER `heroic_svcorrup`,
ADD COLUMN `spelldmg` smallint(6) NOT NULL default '0' AFTER `healamt`,
ADD COLUMN `clairvoyance` smallint(6) NOT NULL default '0' AFTER `spelldmg`,
ADD COLUMN `backstabdmg` smallint(6) NOT NULL default '0' AFTER `clairvoyance`;

Kilralpine
04-27-2010, 04:25 PM
What ever came of this trev? Id really like to see some of the new stats in action, i think it would bring a world of customization to eqemu... especially thru spell damage

trevius
04-28-2010, 05:15 PM
I just haven't had time to get back to it. I definitely want to get at least the Heroic Stats working sometime soonish. The spell damage mod would probably be something better for KLS to do, since she has some changes to spells for her Spell Branch.

I'm not really sure about the other mods like Healing yet, but those will probably come eventually.

Frosef
04-29-2010, 10:08 AM
Semi-related: Is there a place to read up on what all the stats do? I couldn't find anything with my Google-fu on the "newer" stats introduced with Planes of Power(?), but Alla's did have some information on SoF stats under their guide to SoF.

Heroic stats should be pretty straight-forward, since all they do is increase the stat caps for normal stats and resists.

According to Alla's the actually do more than just stat cap increases, by the way:

http://everquest.allakhazam.com/wiki/EQ:Heroic_Stats

Although it's lacking in specific numbers for certain stats.

KLS
04-30-2010, 04:08 PM
http://everquest.allakhazam.com/wiki/eq:mod2%27s

trevius
04-30-2010, 04:27 PM
Good info there. I see they didn't mention Heal Amount under the SoF Mod2s for some reason. I would assume it works like the Spell Damage one accept on heals instead.

And yeah, I am aware that Heroic stats are supposed to do more than just raising the cap and adding that amount of stat. But, for the initial addition of Heroics, that is all I am concerned with for now. The other factors for them can be added in later.