Esempio n. 1
0
        private static int ComputeSimpleDamage(int attack, int affinity, SharpnessType sharpness, WeaponClass weapon, int element, ElementType elementType, int[] monsterElemZones)
        {
            //var usedAffinity = 1.0f;
            var usedAffinity = 1.0f + (0.25f * affinity / 100.0f);

            var rawDamage = attack * usedAffinity * GetAttackTypeMultiplier(weapon) * GetRawSharpnessMultiplier(sharpness) / GetWeaponClassMultiplier(weapon);

            if (weapon == WeaponClass.Bow)
            {
                rawDamage *= 0.225f;
            }

            var elemDamage = 0.0f;

            if (elementType != ElementType.None)
            {
                elemDamage = element * GetElementalSharpnessMultiplier(sharpness) * (monsterElemZones[(int)elementType] / 100.0f) / 10.0f;
            }

            return((int)(rawDamage + elemDamage));
        }
Esempio n. 2
0
        public static float GetElementalSharpnessMultiplier(SharpnessType sharpness)
        {
            switch (sharpness)
            {
            case SharpnessType.Red: return(SharpnessElementalMultipliers.Red);

            case SharpnessType.Orange: return(SharpnessElementalMultipliers.Orange);

            case SharpnessType.Yellow: return(SharpnessElementalMultipliers.Yellow);

            case SharpnessType.Green: return(SharpnessElementalMultipliers.Green);

            case SharpnessType.Blue: return(SharpnessElementalMultipliers.Blue);

            case SharpnessType.White: return(SharpnessElementalMultipliers.White);

            case SharpnessType.Purple: return(SharpnessElementalMultipliers.Purple);
            }

            return(1.0f);
        }