//// 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); }