.

Damage Calculation

(Bleed calculation)
(Damage calculation)
Line 33: Line 33:
 
DmgMul = (DmgMul * bonusDamage) / 100<br />
 
DmgMul = (DmgMul * bonusDamage) / 100<br />
  
 +
rawMin = weapon.minDMG<br />
 
rawMin += BRD - targetDT<br />
 
rawMin += BRD - targetDT<br />
 
rawMin -= rawMin * targetDR / 100<br />
 
rawMin -= rawMin * targetDR / 100<br />
 
rawMin *= dmgMul / 100<br />
 
rawMin *= dmgMul / 100<br />
 
rawMin *= rounds<br />
 
rawMin *= rounds<br />
 +
 +
rawMax = weapon.maxDMG<br />
 
rawMax += BRD - targetDT<br />
 
rawMax += BRD - targetDT<br />
 
rawMax -= rawMax * targetDR / 100<br />
 
rawMax -= rawMax * targetDR / 100<br />

Revision as of 19:01, 7 April 2016

At first target's resistances and thresholds are calculated.
After that using this values raw damage is calculated.
If it is higher than zero, bleed value is counted.


Contents

Damage resistance

TargetDR = Armor + Perks
TargetDR = (TargetDR* (100 - (10*HitTheGap) + 30*attacker.Param[TRAIT_FINESSE]))/100
if (PartialBypass > 0 ) { TargetDR = (TargetDR * (100 - PartialBypass )) / 100; } TargetDR += Ammo.DRMod
TargetDR = CLAMP(TargetDR , 0, 100)

Bypass

PartialBypass += 30 + (30 * (55 - ((21 - target.Luck) * target.Luck) / 2)) / 45
PartialBypass -= target.Perk[PE_ARMOR_EFFICIENCY] * 15
PartialBypass += 15 * (weaponPerkEff( WP_PIERCING_STRIKE))
PartialBypass += 15 * weaponLegendaryEff(WP_PIERCING_STRIKE)
PartialBypass += GetLeadershipBoost(attacker,FTLB_MORE_ARMOR_BYPASS)
PartialBypass -= GetLeadershipBoost(target,FTLB_LESS_ARMOR_BYPASS)
PartialBypass = CLAMP(partialBypass, 0, 100)

Damage threshold

TargetDT = Armor + Perks
TargetDT = (TargetDT * (100 - (10 * HitTheGap) + changeDT)) / 100
TargetDT = (TargetDT * (100 + Ammo.DTMod)) / 100
TargetDT = CLAMP(TargetDT , 0, 9999)

Damage calculation

DmgMul = DmgMul * Ammo.DmgMul / 100
DmgMul = (DmgMul * bonusDamage) / 100

rawMin = weapon.minDMG
rawMin += BRD - targetDT
rawMin -= rawMin * targetDR / 100
rawMin *= dmgMul / 100
rawMin *= rounds

rawMax = weapon.maxDMG
rawMax += BRD - targetDT
rawMax -= rawMax * targetDR / 100
rawMax *= dmgMul / 100
rawMax *= rounds

rawDmg = Random(rawMin, rawMax)

Bleed calculation

if rawDmg was higher than zero, Bleed is calculated.

BleedCoEff += attack.BleedStr + 20 * weaponPerkEff(WP_BETTER_BLEED);
BleedCoEff += 20*weaponLegendaryEff(WP_BETTER_BLEED);

if (BleedCoEff > 0) {
BleedCoEff -= GetLeadershipBoost(target,FTLB_LESS_BLEED);
BleedCoEff += GetLeadershipBoost(attacker,FTLB_MORE_BLEED);
BleedDmg = rawDmg * BleedCoEff / 100;
}

toBleed = target.Param[ST_DAMAGE_TO_BLEED_DR] + 10 * target.Perk[PE_PMS];
mitbd = rawDmg * toBleed / 100 + target.Param[ST_DAMAGE_TO_BLEED_DT];
if (mitbd > rawDmg )mitbd = rawDmg ;
rawDmg -= mitbd ;
BleedDmg += mitbd;
if (bd > 0)AffectBleed(target, BleedDmg );

(Difference between revisions)
Jump to: navigation, search