I think this line is wrong:
FVector BouncingVector = EndTrace.MirrorByVector(Hit.ImpactNormal);
You are mirroring the EndTrace vector which is just the end location of your weaponrange which is a vector from (0,0,0) to the EndTrace.
Instead you should mirror the remaining vector from the impact point to endtrace (which should be parallel with ShootDir):
FVector BouncingVector = (EndTrace - Hit.ImpactPoint).MirrorByVector(Hit.ImpactNormal);