I'm happy to say that my personal mission to crack the limb-damage enigma has come to an end. So far, I've worked out the general formula structure as well as mechanics the game uses, and have derived the weapon-specific constants the game uses for around 6-8 weapons (some still being "polished"). I am going to be working my way through the remaining weapons as well as class-based limb damage attacks (Tekura, BM Strikes, etc) at a comfortable place.
I will be releasing all of the formulas along with quick, easy-to-use reference like the one below, for each weapon type / class attack, along with any notes that might be applicable. This will all be free of charge, however two things would help greatly!
1) Please send me limb break data! I had to throw all of mine away (I have a huge database from making Manda, but a great deal of it is either obsolete or missing information that I didn't know was relevant at the time).
2) If you will benefit from these formulas, please consider making a small donation (in-game currency only!). I actually spent and will continue to spend a good deal of credits on this venture (mostly in the form of artefact weapons and tons of proficiencies and Lucrescent Nuts, etc) - some of which may never be useful for me for anything other than these tests, so any help offsetting this is 100% optional but appreciated!
In order to avoid having out-dated information stuck on forum pages, I will be hosting this outside of the forums on my ultra-tacky godzilla site. There are two pages - one for an overview of how limb damage works, and another for the actual formulas and quick reference charts.
Note: I have intentionally left out specific details on the exact formula that is applied for
Weaponry,
Proficiency,
Class Modifiers, as well as
Attack-Type modifiers (Crush, Jab, etc). I have a good sense of how this works, but I am still doing some polishing before I publish it. In general, everything published assumes you are using every multiplier at full value (meaning if you're not Trans weaponry, for example, your results will not match). If you
really need data for partial-Weaponry or Sentinel without Weaponry at all, for example, I can run this data for you but you'll need to provide it as I can't unlearn Weaponry to test it for you.
The pages have comment sections. If you have questions or critiques, you are welcome to leave them there, where I will fix things as I go, if applicable. For now though you can assume if it's posted, it has been validated to a high degree (although hard to say "100% perfect" as there's always a new twist in the code spaghetti yet to be discovered).
If you want a specific class done ASAP, I think you can guess how to convince me to do it right away! Otherwise just message me in game that you'd like something and I will put it on the list in the order they're received. Note: If you're a class that Shecks (Targossian) cannot play, or are using artefacts that I don't want to buy, then you'll need to provide all the data. At the bottom of the Limb Damage Formulas page, I outline how to send limb damage data to me in a way that is usable for the purposes of deriving equations.
I will also be building a new limb damage tracking system that will track both offensive limb damage (exactly) as well as self-limb damage (also exactly), which at this moment is
almost entirely immune to illusions on both sides. It also includes a script to output the most efficient path to a prepped limb for any selected attack (for example, if you'd like to break limbs with your 1.3s Thoth's Fang jabs back to back, you might want 4 handaxe hits, 1 flail hit, and one Thoth's jab. Doing this takes extreme accuracy, which this system can offer - while also allowing you to manager your defensive priorities based on prep scenarios with zero room for error*.
*of course can't handle blackout, so will need to find a way to deal with that similar to how curing systems handle Loki.Limb Damage Overview - Explanation of how limb damage works
Limb Damage Formulas - List of formulas that I've published, so far
Post your questions / comments here, but if you have any comments specific to the formulas, please use the comments section on the site.
Example of what a limb damage formula & associated quick reference chart looks like:
Comments
I'd gather much better data myself (I bought a handaxe just for this) but I can't test Sentinel since Targossas banned the class .
a) I'd suggest testing/theorycrafting with trip, rather than axe/spear attacks. Feel free to double check these assumptions, but trip does half the damage of usual spear attacks (classleads 14) and spear attacks do the same damage as axe throw when damage stats are matched. Gathering data with trip will give you an answer for more of your attacks and will have a higher 'resolution'.
b) Why do you think that the fitting function is linear wrt Max HP? For trip/axe and numerous other attacks, I see better fits with quadratic functions. I also see the quality of quadratic fits improve as more data is gathered, whereas linear ones tend to worsen or stay the same.
Also feels pointless to test it if it's a bug that could get fixed any day, as soon as it gets fixed it will have to be retested.
On a related note I know that limb damage on Sentinel handaxe is in general being reviewed due to simply being ridiculous amounts of limb damage per time, particularly considering that it gives venoms and ignores rebounding etc.
I'm fine to derive the formulas for you if you send me the data. I was going to do Trip next anyhow but was just waiting on someone to get me testing data (since again, I can't gather it myself).
But, there are balance considerations in nerfing handaxe limb damage in half, since we've all gotten use to OP handaxes. That is why it hasn't been fixed yet.
The man works fast.
If so I will redo all the tests now using this formula which should be always correct post-Games
@Makarios this has to be asked, as I feel I'm reaching the limit on what I can do with the means available to us as players. While it seems fair (if not a tad difficult) to have the players sort out the formulas for each attack, it doesn't seem fair at all to make us figure out the server / programming language / database mechanics behind it, as this is basically impossible.
I have around 10 different limb damage formulas that are extremely clean and effective, and are 99% right, and they are clean to the point where I am pretty confident they're the actual equations. For instance for SnB I have:
Rend: 2.5(hp/100) + [weapon damage] - 10)
Slice: Rend * 1.75
(tested on multiple artie levels on both Paladin and RW, with both longsword and broadsword, with only two data points out of around 250 that don't fit perfectly)
The problem is that there are a thousand variations on how this is stored in-game, and while I've been able to debunk a few ideas through extensive testing, there are still countless more that remain possible - many of which are not really possible to test or confirm.
It's also possible that my formula is wrong, but it's working for 99.2% of my test data, and there is no adjustment I can make that solves for all of them even if i use "ugly" (non-integer / rational constants), even looking at dozens of potential formula structures - which to me means there's something really un-intuitive going on in the backend. This might include max HP formula that isn't the same as actual max HP, or some arbitrary data storage format like limbs having some arbitrary amount of hp compared to actual max hp, or C-type short integer format and all damage is rounded to fit % out of that, or floor() / ceil() operator used (or data truncated due to storage format) in some non-intuitive way, or some combination of the above or all sorts of other things...
So while we leave the equations and constants to us to discover, could we please ask for clarity on the back-end storage works? It would go a long way to helping a lot of people, and it would also eliminate a huge barrier to entry for newer players.
It's been hinted that limb damage might be reworked (something that's been "hinted" at for the last 15 years) but I really don't think it'd be needed if we could just be allowed to know how it currently works. There are plenty of folks, myself included, that will set up systems and instructions for new players and advanced players alike, to use.
(as a side note, my feeling is that the way it's coded is probably a bit "old-school", but we know you inherited it and we know it's not something you can change out sneakily without negatively impacting a lot of people, so we / I empathize completely on this - but at the same time, I'm not really understanding why there's so much secrecy around it. I'd rather have some weird ugly logic than none at all).
@Makarios One very specific question I hope you can answer is, after the HP rework a while back that gave non-linear HP below level 100, if limb damage formulas use actual max HP or if they use the old HP formula. If it's using the old formula (or any other formula other than actual max hp), it would severely mess impact all limb damage testing.
Why did you say you've solved the limb damage formula when you know what you have isn't right?
Your formula(s) are missing a pretty key point and I can tell you with confidence that every formula you have is wrong, even if it fits almost every scenario.
I'll give you a hint - max health does not equal limb health.
To be clear, I have not tested every single weapon on every single hp value possible. At the time of my post, all the formulas I posted as solved fit 100% to my test data, which was quite broad (around 800 data points from 1k-10k across 4 artie levels, spanning multiple classes, in the case of handaxe). SnB is not one of those, it's not "solved" yet, hence my questions about it. If there are any irregularities with health or others, my formulas seems to have accounted for them by accident - but whatever it was isn't working for SnB (at least, it's only working 99.2% of the time).
If anyone has useful information they're keen to actually share, please share it.
One theory I have is that (possibly) limb damage HP is still following the old linear equation, not actual max HP, post-rework (described here: https://www.achaea.com/2018/10/16/survival-instinct/)
So basically from level 1-99 your limb hp would not equal actual max HP, but will actually be lower. If true, this would be really be a problem because there'd be no way to actually track limb damage on anyone below level 100 without knowing their exact level (and if you do have level you'd have to do a bunch of algebra to determine limb hp).
This is just one of many theories, not a statement of fact or even saying it's likely - but it's possible and would severely mess up attempts at deriving formulas assuming HP==limb HP. I can't readily test this theory as I didn't keep target levels in my data collection, but may be able to reverse engineer it based on HP values...
for reference, new vs old HP equations (displayed with 12 and 21 Con) - old formula in green, no bracelets
^ above is approximate, pretty sure < 100 is not totally right yet, but it's close enough to show that the different below 100 is pretty big.
OK, I spent almost all day on this and finally figured out why I'm having some issues.
Apparently, HP scaling is not consisent across all con values. It scales evenly from 11 - 15 Con (and probably below) but starts scaling UP ("marginal returns" as opposed to "diminishing returns") at Con values of 15 and higher.
For example, at levels 80-99 your HP doesn't change, and if you increase Con from 11 to 15 one at a time, your HP will increase by 240hp every time. However, at 16 it jumps by 272, and beyond that I don't know yet.
So it would appear there's either a separate formula or a conditional modifier in the formula for con values over 16. Dunno yet if it's marginal returns on Con or if it just jumps to 272 for every additional point of Con at 16+ instead of 250. Will test this soon.
So here is the "perfect" graph for Con values 11-16. Yes, the jump at level 11 is correct, and is even mentioned in the previously linked announcement.
If anyone has insights on wtf is going on at 16+ Con please let me know?
(in the formulas below you can ignore the "floor()" functions, these are just there to step the graph up in levels. The actual formula would only have integers as inputs so would not have floor() in it at all.
(also worth noting that I didn't test below 30 because at some point newbie levels are hard-coded at "pretty" numbers like 550, 600, 800, etc until probably like level 15 or 20).
"New" formula in blue, "old" one in green. (only showing con values 11-15):
I'm still completely guessing here but one theory I have is that limb damage HP isn't using either of these formulas (new or old) and is probably something even more basic like the following (probably ignoring all the above shenanigens).
@Iocun (tagging you in case you wanted the corrected formulas)
OK, I've checked 3 different people with 16 con in the range of level 80-99 (where HP isn't supposed to change) and got 3 different HP values. Something ain't right with the code.
I think it's safe to say the above formulas are accurate (except for newbie levels) in all cases except if you encounter bugs.
i think ur overcomplicating this and the base formula u have is wrong
Nah, he's mostly on the right track here. Shecks is great at playing with data, just needs a poke in the right direction at interpreting it sometimes or to find the path forward.
Calculating base formulas isn't hard. The issue is that I have REALLY refined data, with quite a lot of hitpoint windows of 4hp - 15hp, and what they show is not a line or a curve (as in neither a line, smooth curve, or exponential curve is possible to fit), but a squiggly pattern that jumps unpredictability. It's more than floor / ceiling can account for, and seems to indicate either a limb hp formula that isn't consistent with max hp or a storage format that produces arbitrary jumps, or both, or something else.
The reason I asked Mak for help here is because there really isn't a way to "figure this out". I've already bought 4 arties specifically for testing this (proud owner of 2 bracelets and a slew is weapons I will literally never use like the famously pointless broadsword), and have zillions of data runs (and a make-shift system just for running and storing all the data) and even this isn't enough.
If the game is using some non-intuitive hp formula or storage mechanism the only way we will ever have reliable limb formulas is if the game admins tell us how it works.
And for all we know, whatever it is could be different for each attack. It's nice to assume that whatever ingredient causes this "squiggly line" effect is the same across all attacks, but I've long since abandoned all assumptions when treating things on Achaea.
On the other hand it could just be a really crude formula that floors in a really ugly way like floor(hp/1000) which would effectively cause giant peaks and valleys. Not ruling this out. (e.g. 5001/1000 == 5, 4999/1000 = 4 which would be a 20% jump as a result of a 0.05% change in HP).
One other thing I've seen countless times is bugs in HP setting itself on things like removing arties, lesserforming, and smudging jera. Sometimes it sticks even without the artie, sometimes even for a long time. Sometimes it falls off but to the wrong values (like in one case smudging jera from 17 down to 16 results in one health, but sketching jera from 15 to 16 results in another hp value, on the exact same person. I've never heard of this before but after doing maybe 1,500-2,000 test runs I've seen this maybe 10-15 times. There's no telling if limb formulas are using these sporadic hp values or the "correct" ones. It is normal for Jera to take 5-15s to fade, I'm not talking about this. I'm talking about the actual stable HP value you land on being "wrong" for the con value, but only sometimes - and to preclude someone's comment, I'm talking about max HP here, not current HP value (well aware that this will hang on after health reductions, but this isn't what i'm talking about).
One other thing that's possible is that limbs are not resetting to "zero" after being healed with restoration/mending. This would of course dramatically screw up limb damage testing as you are breaking the same limb over and over again, and would similarly mess up real fights where you will often break the same limb more than once.
I have no evidence for this being the case, other than the fact that you will still see the "limb reset" message after a limb is supposedly healed (resto + mending) without any further damage on it. I always assumed it's just a timer but if in fact it's resetting to something other than zero, it could very well be what's screwing up my data.
I have thought for a long time that the limb damage formulas have been lost and no one knows how they actually work.
I don’t know man, I have a limb formula that’s been accurate across 4K up to 6K health against people across levels 80 to whatever level Namino is now. SnB RW, L2 longsword and 18 strength.
You're not saying your limb formula has strength as a factor right @Big Papa Jomi ?
Call me naive but I did assume str is never in any limb damage formulas anymore, especially new ones - and after confirming this many times over, but only briefly on SnB. I got same data on a single pass with +/- 5str and called that confirmed - as it's been said before this was removed from the game with prejudice.
Strength indeed does not affect breakpoints.
Disappearing from Achaea for now. See you, space cowboy.
smileyface#8048 if you wanna chat.
I assume your SNB formula is non-runewarden only, or have you already taken into account runebladed weapons? I will say the handaxe one seems pretty legit so far so good job.
SnB is for all SnB however doesn't include Laguz / Runeblade modifiers which definitely would need accounted for. I measured this back in my 2015 SnB testing (buried somewhere on forums) but haven't done so yet this time around - but doubt it's changed.
Don't quote me but off the top of my head I think it was either 10 or 15% flat multiplier. I have Runie as well as Paladin so will eventually test this too and will share it here.
Nah it was 3 AM when I replied, ignore str. The only variables I have in my formula is max health and weapon damage stat.