private float CalculateAbsorbDamaged(Vector3Int cellPos, AttackType attackType, MetaDataNode data, BasicTile tile = null) { if (tile == null) { tile = metaTileMap.GetTile(cellPos, Layer.LayerType) as BasicTile; } float currentDamage = data.Damage; if (tile.MaxHealth < data.Damage) { currentDamage = tile.MaxHealth; data.ResetDamage(); } if (tile.Armor.GetRatingValue(attackType) > 0 && (currentDamage - data.GetPreviousDamage()) > 0) { return((currentDamage - data.GetPreviousDamage()) / tile.Armor.GetRatingValue(attackType)); } else { return(0); } }