public static float DamageReduction(float armor, float damage, ExplosionSourceType sourceType, float caliber = 0, float penetrationfactor = 0) { float _damageReduction; switch (sourceType) { case ExplosionSourceType.Missile: if (BDAMath.Between(armor, 100f, 200f)) { damage *= 0.95f; } else if (BDAMath.Between(armor, 200f, 400f)) { damage *= 0.875f; } else if (BDAMath.Between(armor, 400f, 500f)) { damage *= 0.80f; } break; default: if (!(penetrationfactor >= 1f)) { //if (BDAMath.Between(armor, 100f, 200f)) //{ // damage *= 0.300f; //} //else if (BDAMath.Between(armor, 200f, 400f)) //{ // damage *= 0.250f; //} //else if (BDAMath.Between(armor, 400f, 500f)) //{ // damage *= 0.200f; //} //y=(98.34817*x)/(97.85935+x) _damageReduction = (113 * armor) / (154 + armor); if (BDArmorySettings.DRAW_DEBUG_LABELS) { Debug.Log("[BDArmory]: Damage Before Reduction : " + damage / 100); Debug.Log("[BDArmory]: Damage Reduction : " + _damageReduction / 100); Debug.Log("[BDArmory]: Damage After Armor : " + (damage *= (_damageReduction / 100f))); } damage *= (_damageReduction / 100f); } break; } return(damage); }
public static float DamageReduction(float armor, float damage, bool isMissile, float caliber = 0, float penetrationfactor = 0) { float _damageReduction; if (isMissile) { if (BDAMath.Between(armor, 100f, 200f)) { damage *= 0.95f; } else if (BDAMath.Between(armor, 200f, 400f)) { damage *= 0.875f; } else if (BDAMath.Between(armor, 400f, 500f)) { damage *= 0.80f; } } if (!isMissile && !(penetrationfactor >= 1f)) { //if (BDAMath.Between(armor, 100f, 200f)) //{ // damage *= 0.300f; //} //else if (BDAMath.Between(armor, 200f, 400f)) //{ // damage *= 0.250f; //} //else if (BDAMath.Between(armor, 400f, 500f)) //{ // damage *= 0.200f; //} //y=(98.34817*x)/(97.85935+x) _damageReduction = (113 * armor) / (154 + armor); if (BDArmorySettings.DRAW_DEBUG_LABELS) { Debug.Log("[BDArmory]: Damage Before Reduction : " + Math.Round(damage, 2) / 100); Debug.Log("[BDArmory]: Damage Reduction : " + Math.Round(_damageReduction, 2) / 100); Debug.Log("[BDArmory]: Damage After Armor : " + Math.Round(damage *= (_damageReduction / 100f))); } damage *= (_damageReduction / 100f); } return(damage); }
public static float DamageReduction(float armor, float damage, bool isMissile, float caliber = 0, float penetrationfactor = 0) { if (isMissile) { if (BDAMath.Between(armor, 100f, 200f)) { damage *= 0.95f; } else if (BDAMath.Between(armor, 200f, 400f)) { damage *= 0.875f; } else if (BDAMath.Between(armor, 400f, 500f)) { damage *= 0.80f; } } if (!isMissile && !(penetrationfactor >= 1f)) { if (BDAMath.Between(armor, 100f, 200f)) { damage *= 0.300f; } else if (BDAMath.Between(armor, 200f, 400f)) { damage *= 0.250f; } else if (BDAMath.Between(armor, 400f, 500f)) { damage *= 0.200f; } } ///////////////////////////////// // Caliber Adjustments ///////////////////////////////// if (caliber < 20f && caliber != 0) { damage *= 0.625f; } return(damage); }