feat: better auto ricochet check for spaced armor

This commit is contained in:
TrèsAbhi committed 2024-01-16 20:17:19 -06:00
1 parent 3530e8d0f0
commit 3e3ed35fb0
1 file changed
+6 -3
@@ -45,8 +45,13 @@ void main() {
float penetrationChance = -1.0;
float splashChance = -1.0;
bool threeCalibersRule = caliber > 3.0 * thickness;
float normalizedSpacedArmorThickness = spacedArmorMaskColor.g;
float spacedArmorNominalThickness = normalizedSpacedArmorThickness * maxSpacedArmorThickness;
bool spadedArmorThreeCalibersRule = isUnderSpacedArmor && caliber > 3.0 * spacedArmorNominalThickness;
bool ricochetSpacedArmor = isUnderSpacedArmor && !spadedArmorThreeCalibersRule && spacedArmorAngle >= ricochet;
bool ricochetCoreArmor = !ricochetSpacedArmor && !isUnderExternalModule && !isExternalModule && !isExplosive && !threeCalibersRule && angle >= ricochet;
if ((!isUnderExternalModule && !isExternalModule && !isExplosive && !threeCalibersRule && angle >= ricochet) || (isUnderSpacedArmor && spacedArmorAngle >= ricochet)) {
if (ricochetCoreArmor || ricochetSpacedArmor) {
penetrationChance = 0.0;
splashChance = 0.0;
} else {
@@ -59,8 +64,6 @@ void main() {
}
if (isUnderSpacedArmor) {
float normalizedSpacedArmorThickness = spacedArmorMaskColor.g;
float spacedArmorNominalThickness = normalizedSpacedArmorThickness * maxSpacedArmorThickness;
float spacedArmorThickness = spacedArmorNominalThickness / cos(spacedArmorAngle);
piercedPenetration -= spacedArmorThickness;
}