Difference between revisions of "Weapon Damage Formula"

2,446 bytes added ,  19:52, 12 July 2009
no edit summary
imported>SnakeChomp
(MeleeDamage actor value)
imported>Henning
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
__NOTOC__
{{Incomplete}}
{{Incomplete}}


  Gun Damage = PerkModifiers(BaseWeaponDamage * DamageMultiplier * GunConditionPenalty * SkillBonus) + CriticalDamageBonus
  Gun Damage = (PerkModifiers(BaseWeaponDamage * DamageMultiplier * GunConditionPenalty * SkillBonus) + CriticalDamageBonus) - DamageAbsorbedByArmor


  Melee Damage = PerkModifiers(BaseWeaponDamage * DamageMultiplier * MeleeConditionPenalty * SkillBonus + MeleeDamageActorValue) + CriticalDamageBonus
  Melee Damage = PerkModifiers(BaseWeaponDamage * DamageMultiplier * MeleeConditionPenalty * SkillBonus + MeleeDamageActorValue + MeleeArmConditionPenalty) + CriticalDamageBonus


  Unarmed Damage = ''Formula unknown at this time''
  Unarmed Damage = ''Formula unknown at this time''
Line 12: Line 13:


'''DamageMultiplier''' = fDamageWeaponMult
'''DamageMultiplier''' = fDamageWeaponMult
:*fDamageWeaponMult defaults to: 1


'''GunConditionPenalty''' = fDamageGunWeapCondBase + (fDamageGunWeapCondMult * WeaponCondition)
'''DamageAbsorbedByArmor''' = fArmorRatingBase * ''ArmorRatingValue'' * fArmorRatingMult * (ArmorRatingConditionBase * ''ArmorCondition'' * fArmorRatingConditionMult)
:*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)
'''GunConditionPenalty''' = fDamageGunWeapCondBase + fDamageGunWeapCondMult * ''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''' = fDamageSkillBase + (fDamageSkillMult * ActorSkillValue / 100)
'''MeleeConditionPenalty''' = fDamageMeleeWeapCondBase + fDamageMeleeWeapCondMult * ''WeaponCondition''
:*fDamageSkillBase defaults to: 0.5
:*fDamageSkillMult defaults to: 0.5
:*ActorSkillValue is the actor's skill value with the weapon.


'''MeleeDamageActorValue''' = ActorValueBonuses + fAVDMeleeDamageStrengthMult * (ActorStrengthValue + fAVDMeleeDamageStrengthOffset)
'''SkillBonus''' = fDamageSkillBase + fDamageSkillMult * ''ActorSkillValue'' / 100
:*ActorValueBonuses are granted by certain abilities or equipment. For example, the "Takoma Park Little Leaguer Cap" has an enchantment which increases melee damage by 5. Wearing this cap would mean that ActorValueBonuses has a value of 5.
:*fAVDMeleeDamageStrengthMult defaults to: 0.5
:*fAVDMeleeDamageStrengthOffset defaults to: 0
:*ActorStrengthValue is the actor's strength value
:*'''Note:''' you can see the actual number being used for your character in game by typing ''player.getav meleedamage'' into the console.


'''CriticalDamageBonus''' = IsCriticalHit * PerkCritModifiers(CritDamage)
'''MeleeDamageActorValue''' is an [[ActorValue]]. The base value = fAVDMeleeDamageStrengthMult * (fAVDMeleeDamageStrengthOffset + ''ActorStrengthValue'')
:*IsCriticalHit is 1 if the attack was critical, 0 otherwise
:The value of the MeleeDamage actor value can be increased or decreased by certain abilities, effects, perks, enchanted armors, and consumables. For example, the "Takoma Park Little Leaguer Cap" has an enchantment which increases melee damage by 5 while a baseball bat is equipped. Wearing this cap while equiping a baseball bat would mean that the base value calculated from strength is further increased by 5.
 
'''MeleeArmConditionPenalty''' = BaseWeaponDamage * (fDamageArmConditionBase - 1 + fDamageArmConditionMult * ''ArmCondition'') / 2
:With default values, this term reduces melee damage dealt by (up to) 10% of base weapon damage when arms are crippled and does nothing when arms are healthy.
 
'''CriticalDamageBonus''' = PerkCritModifiers(CritDamage) * ''IsCriticalHit''
:*'''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.
:*CritDamage is the "Crit Dmg" value on the [[Weapons|weapon form]]
:*'''CritDamage''' is the "Crit Dmg" value on the [[Weapons|weapon form]]
 
 
''WeaponCondition'' is 1 at 100% condition, 0.5 at 50% condition, and etc.
 
''ActorSkillValue'' is the actor's skill value with the weapon.
 
''ActorStrengthValue'' is the actor's strength value.
 
''ArmCondition'' is the condition of the actor's arm.
:*When using a one handed weapon, ''ArmCondition'' is 1 with a healthy right arm and 0 with a crippled right arm.
:*When using a two handed weapon, ''ArmCondition'' is 1 with both arms healthy, 0.5 with 1 arm crippled, 0 with two arms crippled.
 
''IsCriticalHit'' is 1 if the attack was a critical hit, 0 otherwise. See also the [[Critical Hit Chance Formula]].
 
=== Game settings used in these formulas ===
 
{{SettingGroupHeader}}
{{SettingGroupSetting
|Name = fDamageWeaponMult
|Default = 1
|Description = Scales base weapon damage in the damage formulas.
}}
{{SettingGroupSetting
|Name = fDamageGunWeapCondMult
|Default = 0.34
|Description = Used to calculate ''GunConditionPenalty''
}}
{{SettingGroupSetting
|Name = fDamageGunWeapCondBase
|Default = 0.66
|Description = Used to calculate ''GunConditionPenalty''
}}
{{SettingGroupSetting
|Name = fDamageMeleeWeapCondMult
|Default = 0.5
|Description = Used to calculate ''MeleeConditionPenalty''
}}
{{SettingGroupSetting
|Name = fDamageMeleeWeapCondBase
|Default = 0.5
|Description = Used to calculate ''MeleeConditionPenalty''
}}
{{SettingGroupSetting
|Name = fDamageSkillBase
|Default = 0.5
|Description = Used to calculate ''SkillBonus''
}}
{{SettingGroupSetting
|Name = fDamageSkillMult
|Default = 0.5
|Description = Used to calculate ''SkillBonus''
}}
{{SettingGroupSetting
|Name = fAVDMeleeDamageStrengthMult
|Default = 0.5
|Description = Used to calculate ''MeleeDamageActorValue''
}}
{{SettingGroupSetting
|Name = fAVDMeleeDamageStrengthOffset
|Default = 0
|Description = Used to calculate ''MeleeDamageActorValue''
}}
{{SettingGroupSetting
|Name = fDamageArmConditionBase
|Default = 0.2
|Description = Used to calculate ''MeleeArmConditionPenalty''
}}
{{SettingGroupSetting
|Name = fDamageArmConditionMult
|Default = 0.8
|Description = Used to calculate ''MeleeArmConditionPenalty''
}}
{{SettingGroupFooter}}
 
=== Critical hit damage ===
 
The critical hit bonus damage is special: it ignores the actor's damage resistance. Even if the attack would have done 0 or nearly 0 damage due to damage resistance, the critical hit damage will hit for full affect.


=== Notes ===
=== 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.
If weapon damage is calculated to be 0 before being modified by perks, 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. However, if weapon damage is modified to be zero by a perk, the attack still has a chance to critically hit and any critical hits will do bonus damage.


=== Sneak attack damage ===
=== Sneak attack damage ===
Anonymous user