Yup. I think I get the intentions of this code, but the result is quite different. Getting randomness right is really hard...You're absolutely right and I completely misread the Gitgud code I was reading. Maxing out the stat does help a lot, though, since it and the randomly generated value need to be able to add up above 100 total.
But yeah, events tied to both the home_event_timer and the first RNG check will take precedence, and then hope's high-and-low checks. Which is a little ridiculous in practice, seeing how the low check means it's disadvantageous to keep it in the negatives (since it needs the sum of an RNG and hope to be less than 1). Oof.
This event-pool fork needs a better approach. I have no solution at hand, probability is not one of my favorite subjects. (Maybe because I know enough about it to know WHY it is hard)