[x] I have searched existing issues to see if the issue has already been opened, and I have checked the commit log to see if the issue has been resolved since my server was last updated.
Describe the feature
Technically this isn't a feature request, since the work already started forever ago and I simply never made tracking for it or finished it.
When the code was globalized, I did not attempt to fix any of the many thing that looked wrong in the old per-item scripts, I merely globalized it. well a LOT is now for sure wrong. I've attempted to make some minor fixes to it since then, and made other parts more flexible so that other can adjust them. I did a ton of research on melee weapons back in DSP's day but a ton more is still needed. This needed globalized to support latent affects triggered via augments without having to change augments to having their own per-augment script.
A big Thank you to @WinterSolstice8 and @Frankie-hz for info that was shared to me. Unfortunately I don't have much time to work on much of anything these days, so I am passing along what I can here.
I was going to make check-boxes instead of bullet points, but then realized I had a lot to share that was not easily made into an actionable item. So now its an infodump instead of tracking.
Need to kill that ugly if/elseif nonsense and table everything so a simple index key triggers the correct chunk of code (restarted this like 5x, rl is in my way atm and will be for a long time. Just don't switch case it and nobody gets cement shoes. Spoke with winter on discord, he probably has something coming.)Winter murdered it for me
This one is SUPER DUPER IMPORTANT: We need to move from checking elements to checking damage type. @Xaver-DaRed had some ideas about how to handle this - we need use element for the resist functions, but then we also need physical additional effects to do something different and handle slashing/blunt/h2h/piercing like we would a melee hit. This is needed for Excalibur's effect and for "Colossal Blow" and a few other rare additional effects. IIRC Excalibur also scales off HP for its power, so may need an additional handler even after that. Colossal Blow is h2h dmg with a maxed pDif on it. A key part of this is actually using the dmgType enum, not the element enum. This means sql rows will need updated.
The next 5 are coming mostly from my brain and what I could control+f in discord chats and wasn't written down elsewhere, your mileage may vary, as always check retail:
Newer items break "the rules" meaning Teo-Newtonian physics is now wrong: Back when I tested melee weapons, at that time it was provably true that adding more INT or MND or any other stat would not make any melee weapons additional effect get stronger, but did make ranged additional effects stronger. This is no longer the case, as new items came out it became possible to find weapons that do in fact scale up, although the basis for how is not yet understood. A few seem to scale up with macc which only makes sense to me if:
What we thought was top end of resistance was actually the middle
We're getting negative resist tiers after a certain amount of macc
A bug on SEs part (it's possible)
Data I was given for newer i119 gear was plain bullsh--
Some older things may have changed circumstantially: I have personally seen a weapon or 3 that that at level 75 to 99 could not deal more than 50 damage jump to doing over hundreds or even over 1000 damage per hit merely by equipping some item level equipment, even without any significant change in INT, MND, MAB or MACC. It is not understood wtf is happening yet. An item in question always had consistent damage regardless of stats or level prior to becoming 100+ via item levels. It's as if it switched to an entirely different calculation. Did additional testing and this happened with several other lv 70-75 items, but did not happen with my trust lv 17 fire sword, Algol, or my sirocco kukri. Unsure wtf is going on. It also happens on the Buccaneer's Knife off Brigandish Blade. As i119 It did massive damage to him, with all item level gear off it did not. So that item is scaling up there, something previously unseen.
Anyhow, I can no longer say your stats never matter for melee with 100% certainty.
base proc rates using math.random at all may need to be a thing of the past: its very likely decided entirely by resistance/macc results. "level correction" may in fact have just been a result of changes in this result at different levels. (Data from Winter tracks with this)
dInt cap is a static value at present, and needs to be adjustable (per info from Frank). I moved dStat to a mod and failed to make the cap one also. There is a placeholder mod (279) that can be appropriated for this, though I think I had thought I'd use it for something else. I don't remember well anymore but I think I thought I might need it for either level correction or dStat things. Anyway we likely need a softcap modifier. Possibly 2, for upper and lower bounds. DSP used hard coded values for it, that got carried forward to the current global.
(If DSP's level correction was simply misunderstood macc interactions and its dStat incorrectly hardcoded, we could just re-appropriate modifier IDs 278 and 279 for upper and lower dStat boundaries and call it a day)
After all things additional effect are relatively done and settled, begin moving spikes out of core and into lua while ceasing to hardcode their values (rates for proc chance of not only the spikes, but paralyze etc. are all hard coded numbers. the former ins sql, the later right in C++) Items with spikes are basically additional effect for the defender via armor slots instead of the attacker with weapon slots, with different IDs. So it should be pretty simple to migrate to lua.
Whew, I really hope I didn't forget anything important.
I affirm:
Describe the feature
Technically this isn't a feature request, since the work already started forever ago and I simply never made tracking for it or finished it.
When the code was globalized, I did not attempt to fix any of the many thing that looked wrong in the old per-item scripts, I merely globalized it. well a LOT is now for sure wrong. I've attempted to make some minor fixes to it since then, and made other parts more flexible so that other can adjust them. I did a ton of research on melee weapons back in DSP's day but a ton more is still needed. This needed globalized to support latent affects triggered via augments without having to change augments to having their own per-augment script.
A big Thank you to @WinterSolstice8 and @Frankie-hz for info that was shared to me. Unfortunately I don't have much time to work on much of anything these days, so I am passing along what I can here.
I was going to make check-boxes instead of bullet points, but then realized I had a lot to share that was not easily made into an actionable item. So now its an infodump instead of tracking.
Need to kill that ugly if/elseif nonsense and table everything so a simple index key triggers the correct chunk of code (restarted this like 5x, rl is in my way atm and will be for a long time. Just don't switch case it and nobody gets cement shoes. Spoke with winter on discord, he probably has something coming.)Winter murdered it for meThe next 5 are coming mostly from my brain and what I could control+f in discord chats and wasn't written down elsewhere, your mileage may vary, as always check retail:
Newer items break "the rules" meaning Teo-Newtonian physics is now wrong: Back when I tested melee weapons, at that time it was provably true that adding more INT or MND or any other stat would not make any melee weapons additional effect get stronger, but did make ranged additional effects stronger. This is no longer the case, as new items came out it became possible to find weapons that do in fact scale up, although the basis for how is not yet understood. A few seem to scale up with macc which only makes sense to me if:
Some older things may have changed circumstantially: I have personally seen a weapon or 3 that that at level 75 to 99 could not deal more than 50 damage jump to doing over hundreds or even over 1000 damage per hit merely by equipping some item level equipment, even without any significant change in INT, MND, MAB or MACC. It is not understood wtf is happening yet. An item in question always had consistent damage regardless of stats or level prior to becoming 100+ via item levels. It's as if it switched to an entirely different calculation. Did additional testing and this happened with several other lv 70-75 items, but did not happen with my trust lv 17 fire sword, Algol, or my sirocco kukri. Unsure wtf is going on. It also happens on the Buccaneer's Knife off Brigandish Blade. As i119 It did massive damage to him, with all item level gear off it did not. So that item is scaling up there, something previously unseen. Anyhow, I can no longer say your stats never matter for melee with 100% certainty.
base proc rates using math.random at all may need to be a thing of the past: its very likely decided entirely by resistance/macc results. "level correction" may in fact have just been a result of changes in this result at different levels. (Data from Winter tracks with this)
dInt cap is a static value at present, and needs to be adjustable (per info from Frank). I moved dStat to a mod and failed to make the cap one also. There is a placeholder mod (279) that can be appropriated for this, though I think I had thought I'd use it for something else. I don't remember well anymore but I think I thought I might need it for either level correction or dStat things. Anyway we likely need a softcap modifier. Possibly 2, for upper and lower bounds. DSP used hard coded values for it, that got carried forward to the current global. (If DSP's level correction was simply misunderstood macc interactions and its dStat incorrectly hardcoded, we could just re-appropriate modifier IDs 278 and 279 for upper and lower dStat boundaries and call it a day)
After all things additional effect are relatively done and settled, begin moving spikes out of core and into lua while ceasing to hardcode their values (rates for proc chance of not only the spikes, but paralyze etc. are all hard coded numbers. the former ins sql, the later right in C++) Items with spikes are basically additional effect for the defender via armor slots instead of the attacker with weapon slots, with different IDs. So it should be pretty simple to migrate to lua.
Whew, I really hope I didn't forget anything important.