.

Damage Calculation

Line 1: Line 1:
 
Damage is calculated as:
 
Damage is calculated as:
  
TargetDR = Armor + Perks
+
TargetDR = Armor + Perks<br />
 
TargetDR = (TargetDR* (100 - (10 * HitTheGap) + 30*attacker.Param[TRAIT_FINESSE])) / 100
 
TargetDR = (TargetDR* (100 - (10 * HitTheGap) + 30*attacker.Param[TRAIT_FINESSE])) / 100
  
 
TargetDT = Armor + Perks<br />
 
TargetDT = Armor + Perks<br />
TargetDT = (TargetDT * (100 - (10 * HitTheGap) + changeDT)) / 100
+
TargetDT = (TargetDT * (100 - (10 * HitTheGap) + changeDT)) / 100<br />
  
PartialBypass % = 60 * Decreaed DR WeaponTrait
+
PartialBypass % = 60 * Decreaed DR WeaponTrait<br />
PartialBypass += 30 + (30 * (55 - ((21 - L) * L) / 2)) / 45
+
PartialBypass += 30 + (30 * (55 - ((21 - L) * L) / 2)) / 45<br />
PartialBypass -= target.Perk[PE_ARMOR_EFFICIENCY] * 15
+
PartialBypass -= target.Perk[PE_ARMOR_EFFICIENCY] * 15<br />
PartialBypass += 15 * (weaponPerkEff(attack.WeaponPerks, attack.Skill, WP_PIERCING_STRIKE))
+
PartialBypass += 15 * (weaponPerkEff(attack.WeaponPerks, attack.Skill, WP_PIERCING_STRIKE))<br />
PartialBypass += 15 * weaponLegendaryEff(realWeapon,WP_PIERCING_STRIKE)
+
PartialBypass += 15 * weaponLegendaryEff(realWeapon,WP_PIERCING_STRIKE)<br />
PartialBypass += GetLeadershipBoost(attacker,FTLB_MORE_ARMOR_BYPASS)
+
PartialBypass += GetLeadershipBoost(attacker,FTLB_MORE_ARMOR_BYPASS)<br />
PartialBypass -= GetLeadershipBoost(target,FTLB_LESS_ARMOR_BYPASS)
+
PartialBypass -= GetLeadershipBoost(target,FTLB_LESS_ARMOR_BYPASS)<br />
PartialBypass = CLAMP(partialBypass, 0, 100)
+
PartialBypass = CLAMP(partialBypass, 0, 100)<br />
  
 
if (PartialBypass > 0 )
 
if (PartialBypass > 0 )
Line 21: Line 21:
 
}
 
}
  
TargetDR += Ammo.DRMod
+
TargetDR += Ammo.DRMod<br />
TargetDR = CLAMP(TargetDR , 0, 100)
+
TargetDR = CLAMP(TargetDR , 0, 100)<br />
  
TargetDT = (TargetDT * (100 + Ammo.DTMod)) / 100
+
TargetDT = (TargetDT * (100 + Ammo.DTMod)) / 100<br />
TargetDT = CLAMP(TargetDT , 0, 9999)
+
TargetDT = CLAMP(TargetDT , 0, 9999)<br />
  
DmgMul = DmgMul * Ammo.DmgMul / 100
+
DmgMul = DmgMul * Ammo.DmgMul / 100<br />
DmgMul = (DmgMul * bonusDamage) / 100
+
DmgMul = (DmgMul * bonusDamage) / 100<br />
  
rawMin += BRD - targetDT
+
rawMin += BRD - targetDT<br />
rawMin -= rawMin * targetDR / 100
+
rawMin -= rawMin * targetDR / 100<br />
rawMin *= dmgMul / 100
+
rawMin *= dmgMul / 100<br />
rawMin *= rounds
+
rawMin *= rounds<br />
rawMax += BRD - targetDT
+
rawMax += BRD - targetDT<br />
rawMax -= rawMax * targetDR / 100
+
rawMax -= rawMax * targetDR / 100<br />
rawMax *= dmgMul / 100
+
rawMax *= dmgMul / 100<br />
rawMax *= rounds
+
rawMax *= rounds<br />
  
rawDmg = Random(rawMin, rawMax)
+
rawDmg = Random(rawMin, rawMax)<br />
  
 
if (  rawDmg > 0 )
 
if (  rawDmg > 0 )

Revision as of 12:45, 7 April 2016

Damage is calculated as:

TargetDR = Armor + Perks
TargetDR = (TargetDR* (100 - (10 * HitTheGap) + 30*attacker.Param[TRAIT_FINESSE])) / 100

TargetDT = Armor + Perks
TargetDT = (TargetDT * (100 - (10 * HitTheGap) + changeDT)) / 100

PartialBypass % = 60 * Decreaed DR WeaponTrait
PartialBypass += 30 + (30 * (55 - ((21 - L) * L) / 2)) / 45
PartialBypass -= target.Perk[PE_ARMOR_EFFICIENCY] * 15
PartialBypass += 15 * (weaponPerkEff(attack.WeaponPerks, attack.Skill, WP_PIERCING_STRIKE))
PartialBypass += 15 * weaponLegendaryEff(realWeapon,WP_PIERCING_STRIKE)
PartialBypass += GetLeadershipBoost(attacker,FTLB_MORE_ARMOR_BYPASS)
PartialBypass -= GetLeadershipBoost(target,FTLB_LESS_ARMOR_BYPASS)
PartialBypass = CLAMP(partialBypass, 0, 100)

if (PartialBypass > 0 ) { TargetDR = (TargetDR * (100 - PartialBypass )) / 100; }

TargetDR += Ammo.DRMod
TargetDR = CLAMP(TargetDR , 0, 100)

TargetDT = (TargetDT * (100 + Ammo.DTMod)) / 100
TargetDT = CLAMP(TargetDT , 0, 9999)

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

rawMin += BRD - targetDT
rawMin -= rawMin * targetDR / 100
rawMin *= dmgMul / 100
rawMin *= rounds
rawMax += BRD - targetDT
rawMax -= rawMax * targetDR / 100
rawMax *= dmgMul / 100
rawMax *= rounds

rawDmg = Random(rawMin, rawMax)

if ( rawDmg > 0 ) { BleedCoEff += attack.BleedStr + 20 * weaponPerkEff(attack.WeaponPerks, attack.Skill, WP_BETTER_BLEED); BleedCoEff += 20*weaponLegendaryEff(realWeapon,WP_BETTER_BLEED);

if (BleedCoEff > 0) { BleedCoEff -= GetLeadershipBoost(target,FTLB_LESS_BLEED); if (valid(attacker)) BleedCoEff += GetLeadershipBoost(target,FTLB_MORE_BLEED);

BleedDmg = rawDmg * BleedCoEff / 100; }

int toBleed = target.Param[ST_DAMAGE_TO_BLEED_DR] + 10 * target.Perk[PE_PMS]; int 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