The thresholds start at line 667 (search for thresholdRoughing). There is no thresholdMediumRoughing because that falls between roughing and semi-finishing, it uses the semi value for L.
If you want to stop it from posting out the zero return at the bottom, I think that is in the writeRetract()) function. The home positions are set starting at line 3085; after it checks for G28) there are some ternary statements to set the home position by axis. These look like a = thing ? value 1 : value 2) and you can read them as "if thing is true, use value 1; else, use value 2." You could comment these out and replace them with specific values, like this:
// _xHome = machineConfiguration.hasHomePositionX() ? machineConfiguration.getHomePositionX() : toPreciseUnit(0, MM); _xHome = toPreciseUnit(-250, MM);
I am not sure if this is completely safe, but it seemed to do the right thing when I tested it just now
I will of course, use due diligence after modifying the post!