I don't know how complex you can get with your lua scripts, but you can normalise the zooming by making the the size of the intervals between zooms get larger as you zoom in.
If you half the FOV, you get a 2x zoom, if you quarter the FOV, you get a 4x zoom, you can quickly see that zoom is directly proportional to k/newFOV, in this case k is the base fov, which in our case is 106.26, if you differentiate to find the rate of change of zoom, you can do the opposite of this to get the gap size between intervals