public static float GetCharacterStrength(LogicCharacterData data, int upgLevel)
        {
            if (data.IsProductionEnabled())
            {
                float attackStrength = data.GetHitpoints(upgLevel) * 0.04f +
                                       LogicMath.Abs(data.GetAttackerItemData(upgLevel).GetDamagePerMS(0, false)) * 0.2f;

                if (data.GetUnitsInCamp(upgLevel) > 0 && data.GetUnitsInCamp(0) > 0)
                {
                    attackStrength = (float)data.GetUnitsInCamp(upgLevel) / data.GetUnitsInCamp(0) * attackStrength;
                }

                for (int i = data.GetSpecialAbilityLevel(upgLevel); i > 0; i--)
                {
                    attackStrength *= 1.1f;
                }

                return(attackStrength * 0.01f * data.GetStrengthWeight(upgLevel) / data.GetHousingSpace() * 10f);
            }

            return(0f);
        }