feat: armor gradient

This commit is contained in:
TrèsAbhi committed 2024-01-10 15:27:14 -06:00
1 parent 232fc3140c
commit dd8875e951
2 files changed
+25 -11

No files matched your search

+16 -2
View File
@@ -15,13 +15,27 @@ void main() {
bool twoCaliberRule = caliber > 2.0 * thickness;
bool threeCaliberRule = caliber > 3.0 * thickness;
float finalNormalization = twoCaliberRule ? (normalization * 1.4 * caliber) / (2.0 * thickness) : normalization;
float finalPenetration = penetration;
float effectiveArmor = thickness / cos(angle - finalNormalization);
if(angle < ricochet) {
// no auto-ricochet, resume checks
if(effectiveArmor <= penetration || threeCaliberRule) {
if(threeCaliberRule) {
penetrationChance = 1.0;
} else {
float maxRandomPenetrationBuff = finalPenetration * 0.05;
float penetrationDifference = effectiveArmor - finalPenetration;
if(penetrationDifference > maxRandomPenetrationBuff) {
// even with a +5% buff, can't penetrate
penetrationChance = 0.0;
} else if(penetrationDifference < -maxRandomPenetrationBuff) {
// event with a -5% nerf, can penetrate
penetrationChance = 1.0;
} else {
// penetration gradiant
penetrationChance = 1.0 - (penetrationDifference + maxRandomPenetrationBuff) / (2.0 * maxRandomPenetrationBuff);
}
}
}