Difference between revisions of "Weapon Damage Formula"

776 bytes added ,  17:33, 24 December 2008
Improved formatting
imported>SnakeChomp
(Note on sneak attack variables)
imported>SnakeChomp
(Improved formatting)
Line 1: Line 1:
=== Variables ===
Gun Damage = PerkModifiers(DamageMultiplier * GunConditionFactor * (WeaponDamageFactor + SkillFactor)) + CriticalDamageFactor
;Weapon damage listed on the [[Weapons|weapon form]] = D


;Weapon crit damage listed on the [[Weapons|weapon form]] = CritD
Melee Damage = PerkModifiers(StrengthFactor + DamageMultiplier * MeleeConditionFactor * (WeaponDamageFactor + SkillFactor)) + CriticalDamageFactor


;[[fDamageWeaponMult]] = DM
Unarmed Damage = ''Formula unknown at this time''


;[[fDamageSkillBase]] = SB
'''PerkModifiers''' is a function that modifies the input value using any perks active on the actor that have a "Calculate Weapon Damage" [[Entry Point]] and returns the result. '''Note:''' consumables which increase damage, such as Yao Guai Meat, are implemented by adding a perk to the actor which has a "Calculate Weapon Damage" entry point for the duration of the effect.


;[[fDamageSkillMult]] = SM
'''DamageMultiplier''' = fDamageWeaponMult
:*fDamageWeaponMult = 1


;Actor skill with the given weapon = S
'''StrengthFactor''' = fAVDMeleeDamageStrengthMult * (ActorStrengthValue + fAVDMeleeDamageStrengthOffset)
:This value is 10 with 100 skill, 9 with 90 skill, and etc
:*fAVDMeleeDamageStrengthMult = 0.5
:*fAVDMeleeDamageStrengthOffset = 0
:*ActorStrengthValue is the actor's strength value


;Weapon condition = C
'''GunConditionFactor''' = fDamageGunWeapCondBase + (fDamageGunWeapCondMult * WeaponCondition)
:100% condition gives a value of 1, 90% a value of 0.9, etc
:*fDamageGunWeapCondMult = 0.34
:*fDamageGunWeapCondBase = 0.66
:*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc


;[[fDamageGunWeapCondMult]] = GunCM
'''MeleeConditionFactor''' = fDamageMeleeWeapCondBase + (fDamageMeleeWeapCondMult * WeaponCondition)
:*fDamageMeleeWeapCondMult = 0.5
:*fDamageMeleeWeapCondBase = 0.5
:*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc


;[[fDamageGunWeapCondBase]] = GunCB
'''SkillFactor''' = ActorSkillValue * fDamageSkillMult
:*fDamageSkillMult = 0.5
:*ActorSkillValue is the actor's skill value with the weapon divided by 10. The value is 10 with 100 skill, 5 with 50 skill, etc.


;[[fDamageMeleeWeapCondMult]] = MeleeCM
'''WeaponDamageFactor''' = WeaponDamage * fDamageSkillBase
:*WeaponDamage is specified on the [[Weapons|weapon form]]
:*fDamageSkillBase = 0.5


;[[fDamageMeleeWeapCondBase]] = MeleeCB
'''CriticalDamageFactor''' = IsCriticalHit * PerkCritModifiers(CritDamage)
 
:*IsCriticalHit is 1 if the attack was critical, 0 otherwise
;[[fAVDMeleeDamageStrengthMult]] = StrM
:*'''PerkCritModifiers''' is a function that modifies the input value using any perks active on the actor that have a "Calculate My Critical Hit Damage" [[Entry Point]] and returns the result.
 
:*CritDamage is the "Crit Dmg" value on the [[Weapons|weapon form]]
;[[fAVDMeleeDamageStrengthOffset]] = StrB
 
;Actor strength value = Str
 
;IsCriticalHit
:This value is 1 if the attack was a critical hit, 0 otherwise
 
;All perks with a "Calculate weapon damage" entry point = PerkModifiers(x) => y
:Note that consumables which increase damage, such as the Yao Guai Meat, are implemented by adding a perk to the actor which has a "Calculate weapon damage" entry point for the duration of the effect.
 
;All perks with a "Calculate my critical hit damage" entry point = PerkCritModifiers(x) => y
 
=== Gun Formula ===
Gun Damage = IsCriticalHit * PerkCritModifiers(CritD) + PerkModifiers(DM * (GunCB + (GunCM * C)) * (D * SB + S * SM))
 
=== Melee Formula ===
Melee Damage = IsCriticalHit * PerkCritModifiers(CritD) + PerkModifiers((StrM * (Str + StrB)) + DM * (MeleeCB + (MeleeCM * C)) * (D * SB + S * SM))
 
=== Unarmed Formula ===
To be determined


=== Notes ===
=== Notes ===
If the value returned by PerkModifiers is 0, the game engine considers the attack to have missed. No blood spatter is made, no hit sound effect is played, and the attack cannot critically hit, even if the critical hit chance is 100% or more.
If the value returned by PerkModifiers is 0, the game engine considers the attack to have missed. No blood spatter is made, no hit sound effect is played, and the attack cannot critically hit, even if the critical hit chance is 100% or more.


=== Sneak damage ===
=== Sneak attack damage ===
It is currently unknown how sneak damage modifiers are applied to the damage formula. The variables involved appear to be:
It is currently unknown how sneak damage modifiers are applied to the damage formula. Further research is needed. The variables involved appear to be:


*[[fCombatDamageBonusSneakingMult]]
*[[fCombatDamageBonusSneakingMult]]
*fCombatDamageBonusMeleeSneakingMult
*fCombatDamageBonusMeleeSneakingMult
*fDamageSneakAttackMult
*fDamageSneakAttackMult
Anonymous user