simulated function bool HandleBallisticImpact(
Actor Victim,
vector HitLocation,
vector HitNormal,
vector NormalizedBulletDirection,
Material HitMaterial,
ESkeletalRegion HitRegion,
out float Momentum,
out float KillEnergy,
out int BulletType,
vector ExitLocation,
vector ExitNormal,
Material ExitMaterial
)
{
local float MomentumToPenetrateVictim;
local float MomentumLostToVictim;
local vector MomentumVector;
local bool PenetratesVictim;
local int Damage;
local SkeletalRegionInformation SkeletalRegionInformation;
local ProtectiveEquipment Protection;
local int ArmorLevel;
local int BulletLevel;
local float DamageModifier, ExternalDamageModifier;
local float LimbInjuryAimErrorPenalty;
local IHaveSkeletalRegions SkelVictim;
local Pawn PawnVictim;
local PlayerController OwnerPC;
BulletType = Ammo.GetBulletType();
ArmorLevel = Protection.GetProtectionType(); // <-- `Protection` is always None here
BulletLevel = Ammo.GetPenetrationType();
Looking at the code for armor impacts here:
Protectionisn't assigned at the point where it is at, leading to this call always failing and therefore likely not having any actual effect.