Nice work, not sure If I should have made a separate TAS category ;)
Also some of the variables are in fact more complex than what is presented. For example technique is not just a single threshold on the minimum speed for ‘allowing’ a bounce, there are in fact 2 thresholds, one that says ‘if speed above X, then always bounce’ (proba_bounce:1) and a second one (lower) that says ‘if speed below Y, end the ricochet’(proba_bounce:0). In between these thresholds I interpolate the probability depending on current speed. The stones quality is even more complex: stones have values for each of the existing parameters (speed_bonus, control_bonus, spin_bonus…), and these value are between 1-2 (rank F) and >500 (rank S+). Each of these values increase slightly one of the parameter of the throw, for instance if I remember correctly a stone with >500 spin_bonus will have +10% to the current spin value… So… (And the type of stone found will also have a bonus in one of the characteristic by default).