private double damagePerHit(GameData.DataBuddyInformation character, DataEquipmentInformation weapon, DataEquipmentInformation armor, 
            DataEquipmentInformation accessory, DataRecordMateriaInformation recordMateria,
            double atk, double mag, double mnd, GameData.Ability ability)
        {
            if (ability.Name == "Cactuar")
            {
                return 1000;
            }

            double damage = ((ability.Formula == GameData.SchemaConstants.Formulas.Healing ? 0 : 5) + ability.CalculateDamage(atk, Double.Parse(textBoxEnemyEffectiveDef.Text), mag, Double.Parse(textBoxEnemyEffectiveRes.Text), mnd)
                    * ability.Multiplier)
                    * (recordMateria != null ? recordMateria.AbilityModifier(weapon, armor, accessory, ability) : 1);

            if (ability.Formula != GameData.SchemaConstants.Formulas.Healing)
            {
                damage *= (weapon != null ? weapon.ElementalMultiplier(ability.Element) : 1)
                    * (armor != null ? armor.ElementalMultiplier(ability.Element) : 1)
                    * (accessory != null ? accessory.ElementalMultiplier(ability.Element) : 1)
                    * BossElementalMultiplier(ability.Element);
            }

            return damage;
        }