Implemented bonus for multiple players repairing #3748

This works by finding the square root of the amount of players repairing, and multiplying the base HP restored by that. The square roots are cached to prevent extraneous calculations. I also changed a  `for(;;)` to `while(true)` to aid code quality. It's all compiled into `GOTO`s anyways
This doesn't look correct. It looks like the repair will pause completely if any one of the repairers runs out of money, and uselessly drain the money of the other players that can afford it at the same time.