Jump to content

Recommended Posts

Last I read from 2015, bloody slaughter only kicks in below 10%, rightfully causing many to abandon it. However, I've seen in 2016 trigger above 10% more than once. Yesterday, I killed an enemy with ray of fire and the beam persisted for 8 seconds after death, tethered to the corpse. Naturally, I moved my paladin into the beam and it scored a bloody slaughter hit to crit when his endurance (formerly the word incorrectly typed as health, again) was around 75%.

 

Anyone know what the health thresholds really are for bloody slaughter?

Edited by MasterCipher
Link to comment
Share on other sites

Lol :)

 

I remember I was checking the asset for Bloody Slaughter (either in 2.03 or 3.00). And it was a 10% threshold.

I will be able to check it again later, after work. 

  • Like 1
Link to comment
Share on other sites

hmmm, i dont know the threshholds, however i tested it right now with a chanter (you get many many hit effects in... so easy to see if it proggs) and the enemy had to be "almost dead" for it to trigger... so doesnt look like a simple changed % bug that triggered your 75% bloody slaughter

Edited by Reent
Link to comment
Share on other sites

I thought there was talk of raising the threshold at some point. Certainly won't be 75% of course though, so maybe it's just a strange interaction with Ray of Fire. Could be that it checked the Bloody Slaughter against the Endurance % of the recently deceased target rather than your paladin.

 

(by the way, I'm assuming you meant 75% endurance, rather than health)

Link to comment
Share on other sites

If that's the case then that can be easily exploited. Just drop a Ray on a weakened back row enemy and you get bonus Bloody Sluaghterer output vs healthy opponents. Sounds like a tactic built for Boeroer's Rogue-Mage apprentice build.

No matter which fork in the road you take I am certain adventure awaits.

Link to comment
Share on other sites

If that's the case then that can be easily exploited. Just drop a Ray on a weakened back row enemy and you get bonus Bloody Sluaghterer output vs healthy opponents. Sounds like a tactic built for Boeroer's Rogue-Mage apprentice build.

No matter which fork in the road you take I am certain adventure awaits.

Link to comment
Share on other sites

Ok, have checked the ingame files for 3.02 version.

Short version: the endurance threshold is still 10%.

Long version:
As you can see Bloody Slaughter affects stats 219 and 227:

N9ED3ry.png


These do correspond to the following status effects:
219: BonusHitToCritPercentEnemyBelow10Percent | Tooltip("Converts Value percent (0-100) of the target's hits to crits against enemies with <10% stamina.")
227: BonusCritHitMultiplierEnemyBelow10Percent | Tooltip("The target's critical hit damage multiplier is increased by Value against enemies with <10% stamina.")]

And these are used in:

 

CharacterStats:
if (Object.op_Implicit((Object) health) && (double) health.StaminaPercentage < 0.100000001490116)
  num += this.Bonu****ToCritPercentEnemyBelow10Percent;
        
        
if (component2 != null && component2.StaminaPercentage < 0.1f)
{
  num5 += this.CritHitDamageMultiplierBonusEnemyBelow10Percent; // which was using the bonus
} 

 


Conclusions:
- You don't get benefits of BloodySlaughter talent on enemies that have current/max endurance higher than 10%.
- As for your case: I am not completely sure why it happened, but my guess would be that once your target died, for some reason the attack wasn't properly reset, keeping the old TargetObject. When your paladin has moved into the ray, it used the current/max endurance of that enemy, which was zero/somevalue, hence less than 10%.
- Bonus.Hit written together gets censored

Edited by MaxQuest
Link to comment
Share on other sites

It must indeed have been a glitch with the ray, though it still seems strange that it would use the ray target's endurance at all; wouldn't expect it to do that when the ray target is still alive < 10% Endurence either, after all. But given that it stayed active for 8 more seconds clearly something went awry with it, normally it shuts off pretty quickly after the main target expires. 

 

MaxQuest, if I may ask: does the Death Godlike Death's Usher racial also kick in at 10%? It uses the same "enemies with low endurence" phrasing so I would think so, but it's rather difficult to tell (not sure it even shows up in the combat log when it adds damage).

 

Is that C++ by the way? Or C# perhaps? Has a "C++ ish but not quite" vibe to it.

Edited by Loren Tyr
Link to comment
Share on other sites

MaxQuest, if I may ask: does the Death Godlike Death's Usher racial also kick in at 10%? It uses the same "enemies with low endurence" phrasing so I would think so, but it's rather difficult to tell (not sure it even shows up in the combat log when it adds damage).

That one has a check against 25% of endurance.

AffectStat 71 = BonusDamageMultOnLowStaminaTarget

 

 

 

if (affectsStat == StatusEffect.ModifiedStat.BonusDamageMultOnLowStaminaTarget)
{
  Health component8 = enemy.GetComponent<Health>();
  if (component8 != null && component8.CurrentStamina / component8.MaxStamina < 0.25f)
  {
    damage.DamageMult(currentAppliedValue);
  }
  return;
}

 

 

Is that C++ by the way? Or C# perhaps? Has a "C++ ish but not quite" vibe to it.

It's decompiled C# (via IL Spy) Edited by MaxQuest
Link to comment
Share on other sites

MaxQuest is "this" in the code above the attack or the attack against a specific enemy? For a normal auto attack or cripling strike the difference wouldn't matter. However if you cast a fireball and one target is below the threshold is it possible the bonuses might carry over to all targets?

 

Edit: I was referring to the code in post 7.

Edited by Stasis_Sword
Link to comment
Share on other sites

Cool! Didn't know disassemblers gave such readable code.

 

Logically, the 'this' in that code block refers to an attack against an individual enemy; note that the Tooltip says "the target", singular. And in terms of implementation it makes much more sense to code it that way as well, generating attacks against different enemies as separate objects. All sorts of parameters will vary across enemies after all, depending on all sorts of conditions, so it will tend to be easiest to generate a stack of separate events rather than one big compound one (that's how I'd do it, anyway). Case in point, the 'num' on the third line will presumably be conditinally increased by Minor Threat as well.

Link to comment
Share on other sites

^ True that. The only builds I can think of that would benefit from it, are:

- Inspiring Wayfarer

- [2H] or [1H] barbarian with Bloodlust and Blood Thirst. And even than it's a questionable choice.

 

MaxQuest is "this" in the code above the attack or the attack against a specific enemy? For a normal auto attack or cripling strike the difference wouldn't matter. However if you cast a fireball and one target is below the threshold is it possible the bonuses might carry over to all targets?

"This" is an instance of CharacterStats class.

 

The [bonu****ToCritPercentEnemyBelow10Percent] is added inside of ComputeHitAdjustment(int hitValue, CharacterStats enemyStats, DamageInfo damage) method.

 

The [CritHitDamageMultiplierBonusEnemyBelow10Percent] is added inside of AdjustDamageDealt(GameObject enemy, DamageInfo damage, bool testing) method.

 

What types of attacks are calling these methods I will be able to check later.

But most likely the damage and hit adjustments are calculated against each enemy separately.

Edited by MaxQuest
Link to comment
Share on other sites

Loren Tyr and Max Quest I agree that the attacks should be (and likely are) scoped properly. Improper scoping was the only thing I could think of that might explain the effect described other than the obvious that the attack was super bugged.

 

Side question: Why on earth didn't they just put the threshold at 20% (Near Death)? It would make the ability slightly better and way more intuitive.

Link to comment
Share on other sites

Loren Tyr and Max Quest I agree that the attacks should be (and likely are) scoped properly. Improper scoping was the only thing I could think of that might explain the effect described other than the obvious that the attack was super bugged.

 

Side question: Why on earth didn't they just put the threshold at 20% (Near Death)? It would make the ability slightly better and way more intuitive.

You must be new here

Link to comment
Share on other sites

Loren Tyr and Max Quest I agree that the attacks should be (and likely are) scoped properly. Improper scoping was the only thing I could think of that might explain the effect described other than the obvious that the attack was super bugged.

Have backtraced the AdjustDamageDealt() for AttackAoE. Yeah, the damage is calculated and adjusted for each enemy caught in AoE, one by one.

 

As for beam, it has explicit conditions to end if:

- duration ran out

- owner is dead or unconscious

- enemy is dead or unconscious

And it is hard to be more specific when it comes to ene

 

Side question: Why on earth didn't they just put the threshold at 20% (Near Death)? It would make the ability slightly better and way more intuitive.

It could be that it was written by different programmers while being designed by different designers.

Also it looks like they were in a little rush, not having enough of time to refactor the code, and bring the consistency in all the things.

A lot of stuff was changed since alpha. There are some legacy constant values here and there giving away that some stuff was originally intended to work differently. And when such changes accumulate in big numbers, you might get a mess in your head being unable to keep everything in memory. Ofc there are methodologies to avoid this... but the trade-off is speed of development.

Link to comment
Share on other sites

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...