Difference between revisions of "Weapon Damage Formula"

From the Fallout3 GECK Wiki
Jump to navigation Jump to search
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

Revision as of 16:33, 24 December 2008

Gun Damage = PerkModifiers(DamageMultiplier * GunConditionFactor * (WeaponDamageFactor + SkillFactor)) + CriticalDamageFactor
Melee Damage = PerkModifiers(StrengthFactor + DamageMultiplier * MeleeConditionFactor * (WeaponDamageFactor + SkillFactor)) + CriticalDamageFactor
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 = 1

StrengthFactor = fAVDMeleeDamageStrengthMult * (ActorStrengthValue + fAVDMeleeDamageStrengthOffset)

  • fAVDMeleeDamageStrengthMult = 0.5
  • fAVDMeleeDamageStrengthOffset = 0
  • ActorStrengthValue is the actor's strength value

GunConditionFactor = fDamageGunWeapCondBase + (fDamageGunWeapCondMult * WeaponCondition)

  • fDamageGunWeapCondMult = 0.34
  • fDamageGunWeapCondBase = 0.66
  • WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc

MeleeConditionFactor = fDamageMeleeWeapCondBase + (fDamageMeleeWeapCondMult * WeaponCondition)

  • fDamageMeleeWeapCondMult = 0.5
  • fDamageMeleeWeapCondBase = 0.5
  • WeaponCondition is 1 at 100% condition, 0.5 at 50% condition, and etc

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.

WeaponDamageFactor = WeaponDamage * fDamageSkillBase

  • WeaponDamage is specified on the weapon form
  • fDamageSkillBase = 0.5

CriticalDamageFactor = 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. 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 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: