Recent Topics

Ads

Patch Notes 13/10/17

Forum rules
Before posting on this forum, be sure to read the Terms of Use
User avatar
daniilpb
Posts: 591

Re: Patch Notes 13/10/17

Post#171 » Sat Oct 14, 2017 8:31 pm

Feedback:
Spoiler:
So I have tested the recent changes and can say that I feel the loss of my overall damage on SW (since the half of SW's damage comes from dots). Before the changes it was quite irritating to not be able to land your dots in time with already known projectile speed issues but today it looks much worse. Even if you got lucky enough to land your dots just right, it doesn't lead to anything now. Every tick can be dodged/parried/blocked. I've done almost 0 damage to dps SnB Black Orc, same goes with Chosens and Black Guards. Tanks are barely killable now and even dps spec'ed tanks. Almost everyone who specs Deft Defender is a very tough target now because basically you can't do any significant damage to them.
To be honest I can't quite understand why do SHs/Engis/Magi/SWs deserve this kind of indirect nerfs especially after UF removal and HtL fix.
Also WL's/Mara's M1 which makes you rooted and leaves your back unprotected completely since you just can't turn it on them. Just curious if this indirect buff was planned.
Well, the only thing I can do is just wait, hope for better times on the horizon, and maybe write a bit more proposals...
Thanks for your work and time.
Image
<Fusion>
Riphael - Black Guard.
Meridin - Sorcerer.
<FusionII>
Ripliel - Shadow Warrior.
Arfi - Swordmaster.
Very Serious Warhammer Online Montage

Ads
Dabbart
Posts: 2251

Re: Patch Notes 13/10/17

Post#172 » Sat Oct 14, 2017 8:46 pm

I see a lot of dislike to the DoT system. But any alternatives or tweaks besides reverting it? Would the argument that a previously applied DoT should be more difficult to avoid hold water? So, you would avoid at your standard rate due to the new math on the initial cast, then all ticks are at a -10% chance to be defended? Or maybe a cumulative -2% chance to avoid to a max of like -20%? Ie, 7 DoTs applied gives a -14% chance to avoid any of the ticks. Just brain storming.

Anyone running a combat log to see what their actual avoidance % has become in overall battle?
Azarael wrote: It's only a nerf if you're bad.

(see, I can shitpost too!)
Secrets wrote: Kindly adjust your attitude to actually help the community and do not impose your will on it. You aren't as powerful as you think.

User avatar
GodlessCrom
Suspended
Posts: 1297

Re: Patch Notes 13/10/17

Post#173 » Sat Oct 14, 2017 9:57 pm

Will do.
Rush in and die, dogs - I was a man before I was a king!

User avatar
Secrets
Former Staff
Posts: 413

Re: Patch Notes 13/10/17

Post#174 » Sat Oct 14, 2017 9:59 pm

Annaise16 wrote:
Egoish wrote:Correct me.if i am wrong but in the old system my "base" chance to avoid from stats is basically removed by my attackers main stat so only the tactic/rr/other bonuses applied...
Yes. That's why it was changed. The effect of weaponskill or strength on items was virtually worthless, and now it is viable to do a defensive or hybrid build of your base stats where before it wasn't.

I don't know how to explain this any further without actually copy and pasting the code we use, so here you go.

//Parry/Dodge/Disrupt chance from tooltip
double secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5));
//Contestion based on offensive stat.
double removedDefense = (((offensiveStat) * 100) / (((caster.EffectiveLevel * 7.5) + 50) * 7.5));
secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry);
removedDefense += caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);

removedDefense = (removedDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
double baseRoll = 0d;
baseRoll += removedDefense;

if (ability != null)
secondaryDefense += ability.Defensibility;

double finalRoll = (StaticRandom.Instance.NextDouble() * (100d + baseRoll));

if (secondaryDefense >= finalRoll)
{
DoParry();
}

Krima
Posts: 616

Re: Patch Notes 13/10/17

Post#175 » Sat Oct 14, 2017 10:21 pm

Dots breaking stealth!! amazing!!
Krima - WE RR 87
Carnage :ugeek:

User avatar
Secrets
Former Staff
Posts: 413

Re: Patch Notes 13/10/17

Post#176 » Sat Oct 14, 2017 11:11 pm

Krima wrote:Dots breaking stealth!! amazing!!
What a concept, right? I think it's pretty awesome too.

Annaise16
Posts: 341

Re: Patch Notes 13/10/17

Post#177 » Sun Oct 15, 2017 12:44 am

Secrets wrote:
Annaise16 wrote:
Egoish wrote:Correct me.if i am wrong but in the old system my "base" chance to avoid from stats is basically removed by my attackers main stat so only the tactic/rr/other bonuses applied...
Yes. That's why it was changed. The effect of weaponskill or strength on items was virtually worthless, and now it is viable to do a defensive or hybrid build of your base stats where before it wasn't.

I don't know how to explain this any further without actually copy and pasting the code we use, so here you go.

//Parry/Dodge/Disrupt chance from tooltip
double secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5));
//Contestion based on offensive stat.
double removedDefense = (((offensiveStat) * 100) / (((caster.EffectiveLevel * 7.5) + 50) * 7.5));
secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry);
removedDefense += caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);

removedDefense = (removedDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
double baseRoll = 0d;
baseRoll += removedDefense;

if (ability != null)
secondaryDefense += ability.Defensibility;

double finalRoll = (StaticRandom.Instance.NextDouble() * (100d + baseRoll));

if (secondaryDefense >= finalRoll)
{
DoParry();
}

You haven't defined what a number of terms in the code mean, so a simple example with numbers would have been better. I'll try to decode it so you can check if we are interpreting it in the same way. The examples i give will be for level 40 toons and the defence type will be parry.


//Parry/Dodge/Disrupt chance from tooltip
double secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5));


This port is clear. It represents the defensive stat contribution. So if a level 40 toon's weapon skill = 450,

secondaryDefense = 17.14.


//Contestion based on offensive stat.
double removedDefense = (((offensiveStat) * 100) / (((caster.EffectiveLevel * 7.5) + 50) * 7.5));


This port is clear. it represents the strikethrough component due to the attacker's stats. So if level 40 had 1050 Strength,

removedDefense = 40.


secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry);

You haven't defined what "target.StsInterface.GetTotalStat(Stats.Parry)" means, so I'm going to have to make a guess. I guess it is the sum of the + x% bonuses. So if a Witch Elf is getting +10% to parry from dual-wielding, +10% from using the Swift Blades tactic, +10% parry from speccing renown points, and +3% Parry from gear, then the total would be +33% Parry. This is then added to the secondaryDefense value calculated above:

secondaryDefense = 17.14 + 33 = 50.14


removedDefense += caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);

Again, you haven't defined what "caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough)" means. I assume it is the sum of the attacker's strikethrough +x% modifiers. Let's assume a Swordmaster is getting +10% Strikethrough from using the Discerning Offense tactic, and +3% strikethrough from gears. This would give a total of +13 strikethrough which would then be added to the initial removedDefense value:

removedDefefense = 40 + 13 = 53


removedDefense = (removedDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
double baseRoll = 0d;
baseRoll += removedDefense;


Again, you have not defined this term "caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough)" and it seems unsual. I can not think of an example of a percentage modifier that isn't added linearly. Can you give an example of one? For this example I'll assume this term equals 1, and that the baseRoll = removedDefense = 53.


if (ability != null)
secondaryDefense += ability.Defensibility;


This looks like check for the undefendable ability that each tank class has and Sever Blessing on WH/WE, etc.


double finalRoll = (StaticRandom.Instance.NextDouble() * (100d + baseRoll));

if (secondaryDefense >= finalRoll)
{
DoParry();


This part is clear. It is the final contested roll. You have added the baseRoll to 100 and then generated a random number between 0 and (100 + baseRoll). For my example, this would be a number between 0 and 153. You then call this number finalRoll. The defender successfully parries if their secondaryDefense value is larger than the finalRoll value.


The problem with the method you have used is that it makes the strikethrough linear modifiers basically worthless. I outlined why this is the case in my previous post. (I'm not sure what affect it has on the multiplicative modifiers as I can not think of any examples f this as I explained earlier. There are at least two possible ways of fixing this. I'll outline these below.


First Possible Fix
As I explained in an earlier post, the contested check that you do when you generate the random number finalRoll and compare secondaryDefense with the random number is mathematically equivalent to dividing secondaryDefense by (100 + baseRoll) and then comparing this with a random number between 0 and 1. So we can calculate the contested value as a percentage.

We could do the same thing earlier in the sequence of calculations. So instead of having a contested roll after adding all the percentage modifiers, we could simply do the contested roll based on the initial, stat-based defense and strikethrough values. We could then add the linear percentage modifiers and subtract the linear strikethrough modifiers.

defense percentage = 100% x (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5)) / (100 + (((offensiveStat) * 100) / (((caster.EffectiveLevel * 7.5) + 50) * 7.5)) + x% linear defense modifiers - y% linear strikethrough modifiers

This fix would combine the new method of stat-based defense with the old method of adding and subtracting linear modifiers. It has the advantage of restoring the value of strikethrough modifiers, while also improving the value of all of the linear defense modifiers.


Second Possible Fix
The purpose of this fix is to restore the value of the strikethrough modifiers. It assumes that you really want to nerf all of the defense modifiers from abilities such as Eagle's Flight, Suppression, Wall of Darting Steel, etc, as well as all of the parry/dodge/disrupt/block tactics, renown, and gear.

So to restore the value of the strikethrough modifiers, they should be subtracted from the defender's secondaryDefense value instead of being added to the attacker's removedDefense value. So, this would look like:

secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5)) + x% linear defense modifiers - y% strikethrough modifiers

You would then make the contested check as you are currently doing.
Last edited by Annaise16 on Sun Oct 15, 2017 12:58 am, edited 1 time in total.

User avatar
Secrets
Former Staff
Posts: 413

Re: Patch Notes 13/10/17

Post#178 » Sun Oct 15, 2017 12:56 am

Annaise16 wrote:
Secrets wrote:
Annaise16 wrote:
Second Possible Fix
The purpose of this fix is to restore the value of the strikethrough modifiers. It assumes that you really want to nerf all of the defense modifiers from abilities such as Eagle's Flight, Suppression, Wall of Darting Steel, etc, as well as all of the parry/dodge/disrupt/block tactics, renown, and gear.

So to restore the value of the strikethrough modifiers, they should be subtracted from the defender's secondaryDefense value instead of being added to the attacker's removedDefense value. So, this would look like:

secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5)) + linear defense modifiers - strikethrough modifiers

You would then make the contested check as you are currently doing.

I just re-checked and this is what we are doing on the current live build. The code I posted was from the first revision of the changes, and the second revision subtracts strikethrough from secondaryDefense like your secondary fix states. I was looking at the wrong local copy.

The second line of code reads like this in the revision currently on live.

Code: Select all

                            secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry) - caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);
                            secondaryDefense = (secondaryDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
The parry value is from gear. Same with parry strikethrough.

Ads
Annaise16
Posts: 341

Re: Patch Notes 13/10/17

Post#179 » Sun Oct 15, 2017 1:03 am

Secrets wrote:
Annaise16 wrote:
Secrets wrote: Second Possible Fix
The purpose of this fix is to restore the value of the strikethrough modifiers. It assumes that you really want to nerf all of the defense modifiers from abilities such as Eagle's Flight, Suppression, Wall of Darting Steel, etc, as well as all of the parry/dodge/disrupt/block tactics, renown, and gear.

So to restore the value of the strikethrough modifiers, they should be subtracted from the defender's secondaryDefense value instead of being added to the attacker's removedDefense value. So, this would look like:

secondaryDefense = (((defensiveStat) * 100) / ((target.EffectiveLevel * 7.5 + 50) * 7.5)) + linear defense modifiers - strikethrough modifiers

You would then make the contested check as you are currently doing.

I just re-checked and this is what we are doing on the current live build. The code I posted was from the first revision of the changes, and the second revision subtracts strikethrough from secondaryDefense like your secondary fix states. I was looking at the wrong local copy.

The second line of code reads like this in the revision currently on live.

Code: Select all

                            secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry) - caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);
                            secondaryDefense = (secondaryDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
The parry value is from gear. Same with parry strikethrough.

That's good.

Can you check that the +10% to parry from dual-wield is being applied. When I did a statistical check using my WE, it looks like it is being applied by the server, but it wasn't being displayed on the character sheet.

User avatar
Secrets
Former Staff
Posts: 413

Re: Patch Notes 13/10/17

Post#180 » Sun Oct 15, 2017 1:35 am

Annaise16 wrote:
Secrets wrote:
Annaise16 wrote:

I just re-checked and this is what we are doing on the current live build. The code I posted was from the first revision of the changes, and the second revision subtracts strikethrough from secondaryDefense like your secondary fix states. I was looking at the wrong local copy.

The second line of code reads like this in the revision currently on live.

Code: Select all

                            secondaryDefense += target.StsInterface.GetTotalStat(Stats.Parry) - caster.StsInterface.GetStatLinearModifier(Stats.ParryStrikethrough);
                            secondaryDefense = (secondaryDefense * caster.StsInterface.GetStatPercentageModifier(Stats.ParryStrikethrough));
The parry value is from gear. Same with parry strikethrough.

That's good.

Can you check that the +10% to parry from dual-wield is being applied. When I did a statistical check using my WE, it looks like it is being applied by the server, but it wasn't being displayed on the character sheet.
The 10% is being applied but not displayed on the paperdoll. I was mistaken before.

Who is online

Users browsing this forum: No registered users and 1 guest