Difference between revisions of "Weapon Damage Formula"
imported>SnakeChomp m (Mark article incomplete pending unarmed damage and sneak damage formulas) |
imported>SnakeChomp (Rename formula components to indicate their intent. Attempt to indicate that game settings are not constants) |
||
Line 1: | Line 1: | ||
{{Incomplete}} | {{Incomplete}} | ||
Gun Damage = PerkModifiers(DamageMultiplier * | Gun Damage = PerkModifiers(DamageMultiplier * GunConditionPenalty * (BaseWeaponDamage + SkillBonus)) + CriticalDamageBonus | ||
Melee Damage = PerkModifiers( | Melee Damage = PerkModifiers(StrengthBonus + DamageMultiplier * MeleeConditionPenalty * (BaseWeaponDamage + SkillBonus)) + CriticalDamageBonus | ||
Unarmed Damage = ''Formula unknown at this time'' | Unarmed Damage = ''Formula unknown at this time'' | ||
Line 10: | Line 10: | ||
'''DamageMultiplier''' = fDamageWeaponMult | '''DamageMultiplier''' = fDamageWeaponMult | ||
:*fDamageWeaponMult | :*fDamageWeaponMult defaults to: 1 | ||
''' | '''StrengthBonus''' = fAVDMeleeDamageStrengthMult * (ActorStrengthValue + fAVDMeleeDamageStrengthOffset) | ||
:*fAVDMeleeDamageStrengthMult | :*fAVDMeleeDamageStrengthMult defaults to: 0.5 | ||
:*fAVDMeleeDamageStrengthOffset | :*fAVDMeleeDamageStrengthOffset defaults to: 0 | ||
:*ActorStrengthValue is the actor's strength value | :*ActorStrengthValue is the actor's strength value | ||
''' | '''GunConditionPenalty''' = fDamageGunWeapCondBase + (fDamageGunWeapCondMult * WeaponCondition) | ||
:*fDamageGunWeapCondMult | :*fDamageGunWeapCondMult defaults to: 0.34 | ||
:*fDamageGunWeapCondBase | :*fDamageGunWeapCondBase defaults to: 0.66 | ||
:*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc | :*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc | ||
''' | '''MeleeConditionPenalty''' = fDamageMeleeWeapCondBase + (fDamageMeleeWeapCondMult * WeaponCondition) | ||
:*fDamageMeleeWeapCondMult | :*fDamageMeleeWeapCondMult defaults to: 0.5 | ||
:*fDamageMeleeWeapCondBase | :*fDamageMeleeWeapCondBase defaults to: 0.5 | ||
:*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc | :*WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc | ||
''' | '''SkillBonus''' = ActorSkillValue * fDamageSkillMult | ||
:*fDamageSkillMult | :*fDamageSkillMult defaults to: 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. | :*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. | ||
''' | '''BaseWeaponDamage''' = WeaponDamage * fDamageSkillBase | ||
:*WeaponDamage is specified on the [[Weapons|weapon form]] | :*WeaponDamage is specified on the [[Weapons|weapon form]] | ||
:*fDamageSkillBase | :*fDamageSkillBase defaults to: 0.5 | ||
''' | '''CriticalDamageBonus''' = IsCriticalHit * PerkCritModifiers(CritDamage) | ||
:*IsCriticalHit is 1 if the attack was critical, 0 otherwise | :*IsCriticalHit is 1 if the attack was critical, 0 otherwise | ||
:*'''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. | :*'''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. | ||
Line 41: | Line 41: | ||
=== 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 | If the value returned by PerkModifiers is 0, the game engine considers the attack to have missed, even if the bullet physically impacts an actor. No blood spatter is made, no hit sound effect is played, and the attack cannot be a critical hit, even if the critical hit chance is 100% or more. | ||
=== Sneak attack damage === | === Sneak attack damage === |
Revision as of 20:11, 24 December 2008
This article is incomplete. You can help by filling in any blank descriptions. Further information might be found in a section of the discussion page. Please remove this message when no longer necessary. |
Gun Damage = PerkModifiers(DamageMultiplier * GunConditionPenalty * (BaseWeaponDamage + SkillBonus)) + CriticalDamageBonus
Melee Damage = PerkModifiers(StrengthBonus + DamageMultiplier * MeleeConditionPenalty * (BaseWeaponDamage + SkillBonus)) + CriticalDamageBonus
Unarmed Damage = Formula unknown at this time
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.
DamageMultiplier = fDamageWeaponMult
- fDamageWeaponMult defaults to: 1
StrengthBonus = fAVDMeleeDamageStrengthMult * (ActorStrengthValue + fAVDMeleeDamageStrengthOffset)
- fAVDMeleeDamageStrengthMult defaults to: 0.5
- fAVDMeleeDamageStrengthOffset defaults to: 0
- ActorStrengthValue is the actor's strength value
GunConditionPenalty = fDamageGunWeapCondBase + (fDamageGunWeapCondMult * WeaponCondition)
- fDamageGunWeapCondMult defaults to: 0.34
- fDamageGunWeapCondBase defaults to: 0.66
- WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc
MeleeConditionPenalty = fDamageMeleeWeapCondBase + (fDamageMeleeWeapCondMult * WeaponCondition)
- fDamageMeleeWeapCondMult defaults to: 0.5
- fDamageMeleeWeapCondBase defaults to: 0.5
- WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc
SkillBonus = ActorSkillValue * fDamageSkillMult
- fDamageSkillMult defaults to: 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.
BaseWeaponDamage = WeaponDamage * fDamageSkillBase
- WeaponDamage is specified on the weapon form
- fDamageSkillBase defaults to: 0.5
CriticalDamageBonus = IsCriticalHit * PerkCritModifiers(CritDamage)
- IsCriticalHit is 1 if the attack was critical, 0 otherwise
- 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 weapon form
Notes
If the value returned by PerkModifiers is 0, the game engine considers the attack to have missed, even if the bullet physically impacts an actor. No blood spatter is made, no hit sound effect is played, and the attack cannot be a critical hit, even if the critical hit chance is 100% or more.
Sneak attack damage
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
- fCombatDamageBonusMeleeSneakingMult
- fDamageSneakAttackMult