Wednesday, May 4, 2011

That's a Lot of Math

This is something I would have done were I younger and motivated:
Conclusive Proof Nature's Touch Heals 62.5% too Much. Also Over 20 Bugged Soul Talent
Ferney, 04-25-2011 04:24 PM

For those with a short attention span the big conclusions are:

1. Nature's Touch heals 62.5% too much

2. Any soul talent that increases total damage or healing by a certain percent, it actually does around half of what it says for all cleric and mage dots and hots except for volcanic bomb. For example, flesh rot says 60% increased damage for necrosis, but it is really 33%.

I can’t remember which bugs I submitted already or not so I will post the final version of all the bug reports here, also other players may be interested in this for optimizing their gameplay currently on live. This will be a compilation of everything I found and is more thoroughly researched since my initial reports. I am hopeful that I worked out all the errors from my previous reports. I would edit my old post and bump it up but posts can’t be edited after so 5 minutes so I made a new thread.

Nature’s Touch is massively bugged. If one reads the tooltip it clearly states the bonus healing is done to the synthesis target for 100% of the damage done. This bonus healing is not done by lifegiving veil, there is no reason to add in the synthesis 225% multiplier to it. The bonus healing is should be done to the synthesis target and nothing more. This is obviously a bug since it causes the healing to be tremendous and out of line with all other healing spells in the game. The healing for this spell is done in two parts and is shown as two heals in the combat log and in the display over a person’s head. Now for what it should look like.

D = damage done by nature’s touch
V = healing done by the lifegiving veil part of nature’s touch on the person with synthesis
B = total bonus healing of nature’s touch on the person with synthesis
Ms = multiplier of synthesis
Mv = multiplier of lifegiving veil
Mn = multiplier of nature’s touch bonus healing
T = total healing

Mn = 0
Mv = -20 (this is including the chloro talent improving it)
Ms = 225 (this includes the improved talent)
V = D * ( 1 + Mv / 100 ) * ( 1 + Ms/100) = D ( 1 – 20 / 100 ) * ( 1 + 225 / 100 ) = 2.6 D
B = D * ( 1 + Mn / 100) = D * ( 1 + 0 / 100) = D
T = B + V = D + 2.6 D = 3.6 D

Now this is what it actually is

Mn = 0
Mv = -20 (this is including the chloro talent improving it)
Ms = 225 (this includes the improved talent)
V = D * ( 1 + Mv / 100 ) * ( 1 + Ms/100) = D ( 1 – 20 / 100 ) * ( 1 + 225 / 100 ) = 2.6 D
B = D * ( 1 + Ms / 100) = D * ( 1 + 225 / 100) = 3.25 D (note Ms is used instead of Mn by error)
T = B + V = 3.25 D + 2.6 D = 5.85 D

The difference of T is 5.85 / 3.6 which is 1.625 % or 62.5 % more than it should be.


Now I will give details on the formula for spell combat equations and show a bug that affects the large majority but not all damage over time and heal over time spells. This causes over 20 soul talents to do around half of what they should for dots and hots. First it should be noted the game truncates, or rounds down the decimal places in many of the formula. Also the base damage value on many tooltips is wrong.


B = base damage of a spell
S = spell power
M = multiplier for a spell (60% damage increase is listed with a value of 60 here)
C = cast time of a spell
G = grand total damage or healing of a spell
T = tick value of a dot or hot
N = number of times a dot or hot ticks
D = duration of the dot or hot

G = (B + S * (C / 5)) * (1 + M/100)
T = G / N

The person coding this for some reason wanted to have the multiplier to somehow be applied on each tick. What they did was assume all dots will behave the same and have the equal number of ticks based on the duration, they don’t, furthermore it was wrongly applied to those that do function that way. They assumed each did an initial amount and a tick for every two seconds of the duration. The actual equation used will be as follows. Note a variable was used that did not allow decimal places so part of it will be rounded up.

G = (B + S * ( C / 5 ) ) * (1 + ( ( D / 2) + 1) / D * M / 100) The part ( ( D / 2 ) + 1 ) / D is rounded up
T = G / N

The ( D / 2 +1 ) / D is extraneous. What this means for the dots and hots that use this formula, which is most of them, is that multipliers are doing around half of what they should be doing. This applies to every heal over time and damage over time that a cleric or mage has except for volcanic bomb and possibly spells in the mage trees of elementalist, stormcaller or dominatior.

I will now show how to test this with life leach and the improved life leach talent as an example. First respec and have no points spent in any tree. Next go hit a target dummy with life leach. Note the damage and number of ticks. Multiply the damage per tick by number of ticks for the total. Now put 5 points into improved life leach and nothing else and do the same. Now divide the damage total with improved life leach by the damage without it. The tooltip of improved life leach says it increases damage by 15%, however if you look at the number you just found it is not 1.15% or even close to it.

Dark water discussion is next.

Bi = base damage of initial hit
Bd = base damage of the dot
Di = damage of initial hit
Dd = damage of the dot per tick
S = spell power
C = cast time which is 1.5 seconds
T = number of ticks of the dot
Di = Bi + ( S * C / 5 ) / 2
Dd = ( Bd + ( S * C / 5 ) / 2 ) / T

Now what it is on live
Di = Bi + S / 5
Dd = ( Bd + ( S * ( C *0.1 ) / 5) / T

Now on the test server
Di = Bi + S / 4
Dd = ( Bd + ( S * C / 5 ) /2 ) / T

The four bugs on live are:
1. The spell power scaling of each part is not divided by two so it is “double dipping” since it is like two spells at once so they should receive half the typical scaling per individual part.
2. The cast time used is 0.15 second instead of 1.5 seconds. I can think of another reason for this but it is not likely give how else the formula was made.
3. The cast time was of the spell was calculated as one second in the initial damage part of the spell. I don’t know what is going on there, all I know that is what it ended up being.
4. The base damage of the spell was calculated as if it were a standard attack. In other words a standard attack, like say bolt of judgment, has a gimmick from soul talents to proc extra abilities or damage or some such. Damage over time abilities have higher raw damage with minimal gimmicks beyond maintaining the uptime as much as possible with casting it as infrequently as possible. There is nothing to be gained from dark water beyond the raw damage of it, there is no reason it should not have been given the formula for higher base damage. I haven’t spent the time to figure out what that would be, it is a great deal higher is all I can say.

This is what your QA team or whoever was fixing it did:
1. Fixed the double dipping on the damage over time part
2. Fixed a cast time to 1.5 seconds from 0.15 seconds
3. Changed a spell scaling coefficient to 0.25. This makes no sense at all. It should be
( 1.5 / 5 ) / 2= 0.15
4.Changed the damage over time part to account for the rounding that can significantly effect the outcome. Best I can tell it the way it is rounded is proportional to how close it is to being rounding up or down.
5. Ignored the lower than normal base damage for a damage over time spell.

The next thing I want to talk about is sanction heretic. To be brief about it the initial damage and the dot are treated as two different spells. They each get a spell power bonus as if each part were an individual spell, meaning it scales twice as much as it should. It should do the normal formula for adding damage from spell power for the initial part and divide that by half and do the same for the dot portion. This is probably the same thing that was going on with spirit rupture that allowed it to hit quite hard.

The next thing I want to go into is ritual of judgment. Each tick of sanction heretic and vex round decimal places down so it is easy to find this error. The tooltip seems pretty clear to me to say it is 5% damage plus 4% per extra point giving us 5+4*15= 65%. One could perhaps read it as the two are separate and it is 1.05*1.6=1.68. Sanction heretic uses 65% and vex uses 68%.

Volcanic bomb has three bugs.
First is of almost no practical use, the damage over time portion of the spell can be canceled by removing the buff volcanic bomb applies on yourself. Dots are something you are not supposed to be able to be removed once applied, it can break crowd control or things of that nature.
The second is the spell power scaling. It is almost right with splitting the scaling by half between the initial hit and dot, however there is approximately 10% reduction of the damage added from spell power. I am clueless why that is there. If it is a penalty for the spell having a buff then earthen barrage should have that penalty and it doesn’t.
The third is that compared to other dots the spell was made to account for the rounding variability, it was not done correctly. It should either round up or down with a chance of which depending on how close it is to each value, or it could also do a running total of the decimal places truncated and when that total reaches one or more then add it into the damage done, the former was likely done. This would only give two possible results, however they can have three possible results. My best guess is this rounding factor was used twice giving skewed results.

Next is inferno. The tooltip does not say it is not affected the global cooldown. I can’t say for certain if it is only a tooltip omission, I am strongly leaning to that conclusion and that it is only a cosmetic error.

Next one is ignition. It is supposed to reduce all fire spell cast times. Fireball base cast time is two seconds. Looking at the tooltip of rank 1 fireball in the soul menu it says 1.6 seconds with 5 points in ignition taken. Rank 10 (the maximum) is two second cast time. This is not a tooltip error, fireball is clearly taking much longer to cast than 1.6 seconds. The conclusion is ignition is not being applied to all ranks of fireball.

Lifegiving veil is what I am going to talk about next. It says the healing is based on damage done. The actual healing is based on a theoretical formula that is not reflected by the real damage, synthesis is also affected as it is based on lifegiving veil’s healing number. The formula used does not include debuffs on the target that increase magical damage taken. I know of at least two magical debuffs that stack and each are for 7%. So if this worked properly the mage should be doing at least 14% more healing when debuffs are present.

Healing current mana cast at the maximum rank is 21, the same as rank one. Some other ranks in-between are correct and cost more. The proper mana cost should be much higher.

On to the next bug to report. The necromancer pet skeletal zealot’s ability blood spike should have 100% crit chance when necrosis is on the target, this does not work. The duration of the dot is 12 seconds. With the flesh rot soul ability increases necrosis to 18 seconds. The pet only will have the extra crit for 12 seconds, the last 6 seconds of the dot ticking will not get the crit chance.
My best guess is what the coder did is put a hidden debuff on the target that increases the pet’s crit chance by 100% that lasts for 12 second and they did not have this hidden debuff increase its duration when points are added into flesh rot.

This is not a combat ability bug but I will put it here anyways. Flamelord Ereetu is the second to last boss in latern hook. The crystals he spawns grow in damage and radius. The graphic of the spell does not grow to match the actual size of it. Another bug is that the crystal can despawn as immediately, this may be caused or have an increased chance of happening by pulling the boss at range and waiting for him to come to you.

The interpretation of the totality of the number of soul talents that do not do what they say they do, and are easily tested, might lead one to a conclusion. When out of curiosity over a month ago I tested a few soul talents to see if it worked as they claimed and I found out within minutes of testing they did much less than they said. Dark water on the test server was not fixed properly. Draw your own conclusion about whoever in quality assurance is responsible for combat abilities and whoever else is fixing them.

I will not read or respond to this post, I have been trolled too much on forums to do so.
The caveat at the end was perfect. Still, it's pretty impressive someone took the time to do all of this. It does make me wonder what sort of modeling and QC the spell and combat engines have. With Trion's aggressive content generation I'd assume most of the testing is automated. It could be there's some disparity between the test cases and the real world.

Naturally this post spawned numerous, wide-ranging responses that I don't have the patience for—thirty-seven pages as of this morning. Now… will it affect anything…

No comments:

Post a Comment