Jump to content
  • 1

[4.1.2] DoT damage inconsistent between different abilities


Question

Posted (edited)

Original thread here: https://forums.obsidian.net/topic/109121-how-is-raw-dot-damage-calculated-now-in-v41

 

So I observed that in description both Deep Wounds and Wounding Shot says it deals 20% weapon damage for x seconds, but in fact it only does 10% damage per tick. In contrast, Bleeding Cut and Maiming of gsword Effort works as intended.

 

Based on the code:

 

>Deep Wounds

{
  "StatusEffectType": "Damage",
  "UseStatusEffectValueAs": "None",
  "BaseValue": 0, // it's parent has "BaseValue": 0.2,
  "DurationType": "UseDurationTime",
  "Duration": 6,
  "MaxStackQuantity": 0,
  "ApplicationBehavior": "StackIfAlreadyApplied",
  "ApplicationType": "ApplyOverTime"
}

>Bleeding Cuts

{
  "StatusEffectType": "Damage",
  "UseStatusEffectValueAs": "None",
  "BaseValue": 0, // it's parent has "BaseValue": 0.1,
  "DurationType": "UseDurationTime",
  "Duration": 60,
  "MaxStackQuantity": 0,
  "ApplicationBehavior": "StackIfAlreadyApplied",
  "ApplicationType": "ApplyOnTick"
}

The only difference here is ApplicationType, which Deep Wounds uses ApplyOverTime while Bleeding Cuts is using ApplyOnTick.

 

If it is 20% damage over 6 second, it is still not correct as we get 10% of weapon damage on hit, and 10% on 3rd second and 10% on 6th second so it is 30% weapon damage in total instead of 20%, still not correct... @SChin hope to get any confirmation from the devs.

Edited by dunehunter
  • Like 3

15 answers to this question

Recommended Posts

  • 0
Posted

(speculation) - dots do damage upon initial application, so i wonder if "applyovertime" is incorrectly calculating the damage done because it's ignoring the initial hit.

 

is "applyovertime" the same odd mechanism that yields the weird numbers for disintegration and cleansing flame?

 

i wonder why "applyovertime" even exists, since i know that disintegration and cleansing flame have historically been buggy (and still are a little bit)... best just to switch everything to applyontick (do a find-replace in the json)

  • Like 2
  • 0
Posted (edited)
If it is 20% damage over 6 second, it is still not correct as we get 10% of weapon damage on hit, and 10% on 3rd second and 10% on 6th second so it is 30% weapon damage in total

 

Rubbish. Go and see your tread. The description is correct like a fharmacy recipe. But confusing, i agree.

 

UPDATE. Tested Deep Wounds. Metodology:

Frienfly target, Health 247 vs. Weapon 100-100 dmg. Attacker have 10 pt. in all Attributes

Hit should apply 100 + 20 Raw Damage for 6 sec. Target's Health should be 127 after attack.

 

Test 1: Hit (100 dmg) + 20 pt. (20%) Deep Wounds damage >>> Health = 116.   247 - 116 = 131 total damage.

Test 2: Graze (50 dmg) + 10 pt. (20%) Deep Wounds damage >>> Health = 182.    247 - 182 = 65 total damage.

 

So DW deals ~ 30% of Damage as Raw. Value in statuseffects.gamedatabundle is 0.2. So it's clearly a bug.

Edited by Phenomenum
  • Thanks 1
  • 0
Posted (edited)
dunehunter said:

If it is 20% damage over 6 second, it is still not correct as we get 10% of weapon damage on hit, and 10% on 3rd second and 10% on 6th second so it is 30% weapon damage in total instead of 20%, still not correct... @SChin hope to get any confirmation from the devs.


Yeap. It lists 20% dealt over 6s in tooltip; but actually ticks for 10% (at 0s), 10% (at 3s) and 10% (at 6%).

This is the first problem related to DoTs of ApplyOverTime type.
And I've found why it happens in StatusEffectInstance.cs:

protected void ApplyTick()
{
  this.NotifyEvent(StatusEffectEventType.OnInterval, null);
  if (this.StackedParent == null || this.GameData.StackedChildrenApplyEffects)
  {
    if (this.GameData.ApplicationType == StatusEffectApplyType.ApplyOnTick)
    {
      this.ApplyEffect(1f);
    }
    else if (this.GameData.ApplicationType == StatusEffectApplyType.ApplyOverTime)
    {
      if (this.TotalDuration > 0f)
      {
        float ratio = this.EffectiveIntervalRate / this.GameData.Duration;
        this.ApplyEffect(ratio);
      }
      else
      {
        Debug.LogError("Status effect '" + this.GameData.DebugName + "' with ApplicationType 'ApplyOverTime' must have a duration.");
      }
    }
  }
  this.IntervalTicks++;
}

The ratio is calculated incorrectly.
Using your example it takes duration of 6s and interval of 3s, so it is: ratio = 3 / 6 = 0.5
And this ratio is later used to calculate perTick damage as [ratio * totalDamage]. And that's why each tick deals 10%.

Instead the formula had to be: 
float ratio = this.EffectiveIntervalRate / (this.GameData.Duration + this.EffectiveIntervalRate)

^ This way it would take into account the 0s tick. And it confirms thelee's speculation.

P.S. But be aware that this fix will decrease the effective damage of some ApplyOverTime DoTs (specifically Wounding Shot and Deep Wounds) by up to x1.5.



And the second problem of ApplyOverTime, is why it even exists?
Because at the moment this is just a buggy version of ApplyOnTick with incorrect ratio formula and incorrect tooltip (the total damage value doesn't take into account duration, even through in practice INT DOES increase it).

@SChin, could you please clarify how ApplyOverTime is intended to work?

My speculation would be that it was thought to have a duration that is not affected by INT, PL, graze/crit or any other modifiers. Otherwise what's the difference compared to ApplyOnTick?

Edited by MaxQuest
  • Like 3
  • 0
Posted (edited)

Currently is only 8 abilities uses ApplyOverTime formula:

  1. Disintegration_SE_RawDamage
  2. Taste_of_the_Hunt_SE_RawDOT
  3. Unbending_SE_Health / Unbending_Shield_SE_Health / Unbending_Trunk_SE_Health
  4. Cleansing_Flame_SE_BurnDamage
  5. Wounding_Shot_SE_RawDamage / Accurate_Wounding_Shot_SE_RawDoT / Hobbling_Shot_SE_RawDoT
  6. Deep_Wounds_SE_RawDOT
  7. Combusting_Wounds_SE_BurnDOT
  8. Blightheart_Heartbeat_SE_Health

We can simply change them to use ApplyOnTick. Eg. Deep Wounds 20% for 6 sec. >>> 10% every 3 sec. for 6 sec. Nice and simple. And without bugs. + they can be affected by Int bonus, finally.
 

Edited by Phenomenum
  • Like 2
  • 0
Posted (edited)
9 hours ago, Phenomenum said:

We can simply change them to use ApplyOnTick. Eg. Deep Wounds 20% for 6 sec. >>> 10% every 3 sec. for 6 sec. Nice and simple. And without bugs. 

Exactly! :)

Although the damage of Deep Wounds might need to be a bit toned down. Since they deal same amount as Wounding Shot DoT, but are triggered by a much larger variety of attacks.

P.S. Just realized that Unbending is ApplyOverTime. And it means that it benefits from INT (despite of what tooltip tells you). Oh my...  

Edited by MaxQuest
  • 0
Posted (edited)
1 hour ago, MaxQuest said:

P.S. Just realized that Unbending is ApplyOverTime. And it means that it benefits from INT (despite of what tooltip tells you). Oh my...  

Wait. So ApplyOverTime HAVE benefits from INT? Confirmed? I'm forgot to test it)
I just don't understand - if ApplyOverTime Damage/Health total amount depends of INT, so what's the point of all this s***? Besides of bugs. Mm?

About Deep Wounds: don't see the reason. If we convert it to ApplyOnTick then it will be 10% every 3 sec. for 6 sec. = 20%. And with 20 INT it will be 10% every 3 sec. for 9 sec. = 30% (just like now, in fact). I don't think it will be OP.

It's becose Wounding Shot DoT is s**tty. In PoE 1 WS DoT has much longer duration, givin synergy with pet ability "+N damage to targets affected by DoT's". Now WS DoT have only 6? sec. duration and i see no point in this.

Edited by Phenomenum
  • 0
Posted

^ I was checking Disintegration yesterday. At 10MIG/10INT it was ticking for x raw damage.

I have consoled the INT to 30, and casted it again. It was ticking for the same x amount. But there were almost twice as much ticks.

After that I have also checked Combusting Wounds. And yes, increasing INT, was increasing amount of ticks, while the tick damage was the same.

So yes: at the moment total damage of DoTs of ApplyOverTime does indeed benefit from longer duration.


Also, I have made a few searches on this topic right now, and here's a bit of history:

- on release: ApplyOverTime had higher dps on grazes and on lower INT. This was first mentioned: here (on August 17 2018)

- later it was reported: here (on September 10 2018)

- it was quickly "fixed", and rolled out in the patch v2.1.0 (on September 12 2018). It was mentioned as: "Having higher intellect no longer penalizes effects that apply over time."

 

Now the thing is... it could be a wrong fix.

Why?:

- because "total damage" displayed in tooltip for such ApplyOverTime was not synchronized with this change.

- because what becomes the point of ApplyOverTime, if we have ApplyOnTick? It would make more sense to just switch those 8 ApplyOverTime effects listed by Phenomenum to ApplyOnTick. This would result in correct tooltips, and better consistency.

- and because the [total damage dealt] part of initial bug report could be solved by fixing the ratio. Look:

On 8/17/2018 at 5:21 PM, grasida said:

With 10 might and 1 int, on a graze and with no other damage boosts, I did 175, 175, 65 with a listed duration of 4.5 seconds.

On a crit, I did 70, 70, 70, 70, 31 with a listed duration of 10.3 seconds.

On a hit, I did 87, 87, 87, 65 with a duration of 8.3 seconds.

As I said previously, the problem with ratio is that it doesn't take into account 0-tick.

So, how much damage would Disintegration above deal, if there was no this 0-tick?

graze: 175 + 65 = 240

crit: 70 + 70 + 70 + 31 = 241

hit: 87 + 87 + 65 = 239

And that makes sense, no? I mean I was speculating above that ApplyOverTime is probably for DoTs whose total damage is not affected by change in duration (i.e. INT, PL, graze/crit). 

Although, this still leaves the problem of higher dps, on graze/lower INT. And this could only be solved by having a completely fixed duration. 

TL.DR. What gives? Fix ApplyOverTime ratio and make it's duration fixed (i.e. not affectable by INT/PL/Graze/Crit/Anything)? Or get rid of ApplyOverTime completely and migrate to ApplyOnTick?

 

  • Like 2
  • 0
Posted
1 hour ago, Phenomenum said:

About Deep Wounds: don't see the reason. If we convert it to ApplyOnTick then it will be 10% every 3 sec. for 6 sec. = 20%. And with 20 INT it will be 10% every 3 sec. for 9 sec. = 30% (just like now, in fact). I don't think it will be OP.

It's becose Wounding Shot DoT is s**tty. In PoE 1 WS DoT has much longer duration, givin synergy with pet ability "+N damage to targets affected by DoT's". Now WS DoT have only 6? sec. duration and i see no point in this.

ApplyOnTick with 10% every 3s for 6s means: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) = 30%

And with 20 INT that would be: 10% every 3s for 9s: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) + 10% (on 9s) = 40%

Add here high MIG... and Deep Wounds become really strong, because that's effectively a multiplicative bonus.

---------

As for Wounding Shot...

- first of all it causes confusion. A player doesn't know if it's an ApplyOnTick or ApplyOverTime. For example from tooltip, I was initially thinking that there will be 3 ticks for 20% each. At least in case of Disintegration you know, that a DoT won't be ticking for 240 raw damage every 3s, but in case of Wounding Shot? How do you know without testing and diving into mechanics and gamedatabundles?

- and second: unlike in PoE1... the DoT from Wounding Shot doesn't stack with itself. Why? And there is not even a mentioning of this in tooltip. Would stacking make it OP? There are Deep Wounds that deal same damage and do stack. Not to mention that DW is much more powerful since you can trigger them more times.

  • Thanks 1
  • Hmmm 1
  • 0
Posted (edited)
14 minutes ago, MaxQuest said:

ApplyOnTick with 10% every 3s for 6s means: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) = 30%

And with 20 INT that would be: 10% every 3s for 9s: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) + 10% (on 9s) = 40%

Add here high MIG... and Deep Wounds become really strong, because that's effectively a multiplicative bonus.

Then tooltips for ApplyOnTick is also wrong? Becose...
kZxSlB0.png

With additional "starting" tick at 0 sec. Damage should be obviously 160.

Quote

- and second: unlike in PoE1... the DoT from Wounding Shot doesn't stack with itself. Why? And there is not even a mentioning of this in tooltip. Would stacking make it OP? There are Deep Wounds that deal same damage and do stack. Not to mention that DW is much more powerful since you can trigger them more times. 

Ohh... Agreed. Well, i think we should know how exactly works ApplyOnTick, before doing anything.

Edited by Phenomenum
  • 0
Posted (edited)

Ok, then we can use odd numbers for effect duration: 5% every 3 sec. for 9 sec. = 5*4 = 20. But in this case tooltip will say HELLO Total amount: 15.

BTW. Show me the man, who designed all this things to work in such perverted way. I'm just interested. With his "skills" he shouldn't approach to game development within a cannon shot.

Edited by Phenomenum
  • 0
Posted
On 4/28/2019 at 2:53 PM, MaxQuest said:

ApplyOnTick with 10% every 3s for 6s means: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) = 30%

And with 20 INT that would be: 10% every 3s for 9s: 10% (on 0s) + 10% (on 3s) + 10% (on 6s) + 10% (on 9s) = 40%

Add here high MIG... and Deep Wounds become really strong, because that's effectively a multiplicative bonus.

---------

As for Wounding Shot...

- first of all it causes confusion. A player doesn't know if it's an ApplyOnTick or ApplyOverTime. For example from tooltip, I was initially thinking that there will be 3 ticks for 20% each. At least in case of Disintegration you know, that a DoT won't be ticking for 240 raw damage every 3s, but in case of Wounding Shot? How do you know without testing and diving into mechanics and gamedatabundles?

- and second: unlike in PoE1... the DoT from Wounding Shot doesn't stack with itself. Why? And there is not even a mentioning of this in tooltip. Would stacking make it OP? There are Deep Wounds that deal same damage and do stack. Not to mention that DW is much more powerful since you can trigger them more times.

I tested Deep Wounds and Wounding Shot and they seem to work exactly the same... except that the duration of Wounding Shots benefits from PL so it does a bit more damages overall with comparable INT.

  • 0
Posted (edited)

Currently, in v5.0, Deep Wounds and Wounding Shot DoT are both an an ApplyOverTime effect that takes 20% of dealt weapon damage and tries to apply it over 6s. Although in practice they tick thrice for 10% (at 0s, 3s, 6s). That is at base duration. While their effective duration can be influenced by graze/crit/int. And the longer duration - the higher total damage.

But still, Deep Wounds and Wounding Shot DoT are not completely the same, since the first one stacks with itself, while the second doesn't.

 

P.S. With Community Patch, both are converted to ApplyOnTick type. And:

  • Deep Wounds: ticks 4 times for 5% of weapon damage dealt (at 0s, 3s, 6s, 9s). The duration is fixed. Total: 20% over 9s.
  • Wounding Shot DoT: ticks 3 times for 10% of weapon damage dealt (at 0s, 3s, 6s). The duration is fixed. Total: 30% over 6s. Additionally Wounding Shot DoT stacks with itself (just like DW).

 

 

Edited by MaxQuest
  • Like 1
  • Thanks 2

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...