示例#1
0
        public static float ComputeRawDamageOld(
            DamageTypes damageType,
            float magnitude,
            float armorEffectiveness,
            float absorbedDamageRatio)
        {
            float num1 = 0.0f;
            float factorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * factorByDamageType;
            float num3 = num1 + num2 * (float)(100.0 / (100.0 + (double)armorEffectiveness));
            float num4;

            switch (damageType)
            {
            case DamageTypes.Cut:
                num4 = Math.Max(0.0f, magnitude * (float)(1.0 - 0.600000023841858 * (double)armorEffectiveness / (20.0 + 0.400000005960464 * (double)armorEffectiveness)));
                break;

            case DamageTypes.Pierce:
                num4 = Math.Max(0.0f, magnitude * (float)(45.0 / (45.0 + (double)armorEffectiveness)));
                break;

            case DamageTypes.Blunt:
label_5:
                return(num3 * absorbedDamageRatio);

            default:
                return(0.0f);
            }
            num3 += num4 * (1f - factorByDamageType);
            goto label_5;
        }
示例#2
0
        public static float ComputeRawDamageNew(
            DamageTypes damageType,
            float magnitude,
            float armorEffectiveness,
            float absorbedDamageRatio)
        {
            float num1 = 0.0f;
            float factorByDamageType = CombatStatCalculator.GetBluntDamageFactorByDamageType(damageType);
            float num2 = magnitude * factorByDamageType;
            float num3 = (float)(100.0 / (100.0 + (double)armorEffectiveness));
            float num4 = num1 + num2 * num3;
            float num5;

            switch (damageType)
            {
            case DamageTypes.Cut:
                num5 = Math.Max(0.0f, (float)((double)magnitude * (double)num3 - (double)armorEffectiveness * 0.5));
                break;

            case DamageTypes.Pierce:
                num5 = Math.Max(0.0f, (float)((double)magnitude * (double)num3 - (double)armorEffectiveness * 0.330000013113022));
                break;

            case DamageTypes.Blunt:
label_5:
                return(num4 * absorbedDamageRatio);

            default:
                return(0.0f);
            }
            num4 += num5 * (1f - factorByDamageType);
            goto label_5;
        }