I use Construct since 2014, I remember when I confused and try to configure why my functions not working properly for a few days.
Then I search in the forum, I see someone post to put "Wait 0 second" between it's function, and it's work.
It's a weird bug and solution, but working, sadly this bug still happened even now on Construct 3. I never had similar problem when developing JS game.
If I remove "Wait 0 second", "generate_road" and "fix_road" will be called even Events above is not completed.
And if I remove "Wait 0 second" between "generate_road" and "fix_road", "fix_road" will be called even "generate_road" is not completed.
I'm obsessed to create a clean & simple code or blocks, since it will be easy to maintenance, "Wait 0 second" between functions is not a clean structure, I bet it's also create confusion for new user when create a bit complex looping events.
Note: there is no wait or call another functions inside "generate_road" and "fix_road" function, so it's just a straight looping array to spawn sprite at specific coordinate.
This type of bug can break game logic, without error reporting.
Don't get me wrong, I love Construct