////

        public static float ComputeHitDamage(Tile tile, int baseDamage, int totalHits)
        {
            var    config   = DestructibleTilesConfig.Instance;
            float  dmg      = (float)baseDamage / (float)totalHits;
            float  scale    = 1f;
            string tileName = TileID.GetUniqueKey(tile.type);

            float armor = config.TileArmor.ContainsKey(tileName)
                                ? (float)config.TileArmor[tileName].Amount : 0f;

            if (armor >= dmg)
            {
                return(0);
            }

            if (config.SpecificTileDamageScales.ContainsKey(tileName))
            {
                scale = config.SpecificTileDamageScales[tileName].Amount;
            }

            if (config.UseVanillaTileDamageScalesUnlessOverridden)
            {
                bool isAbsolute;
                scale *= TileHelpers.GetDamageScale(tile, dmg, out isAbsolute);

                if (isAbsolute)
                {
                    return(100f);                       // max
                }
            }

            return((dmg - armor) * scale);
        }