And for "How do I simulate the impact of a ball with a wall a finite number of times (say 5)?"
This code counts bounces, and stops the integration at the top after the 5th bounce:
eqs = {x''[t] == 0, x'[0] == 10, x[0] == 0, y''[t] == -10.,
y'[0] == 50, y[0] == 0};
events = {
WhenEvent[y[t] < 0, {y'[t] -> -.9 y'[t], counter = counter + 1}],
WhenEvent[y'[t] < 0, If[counter >= 5, "StopIntegration"]]
};
counter = 0; {xx, yy} =
NDSolveValue[{eqs, events}, {x, y}, {t, 0, Infinity}];
ParametricPlot[{xx[t], yy[t]}, {t, 0, xx[[1, 1, 2]]}]