Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }