I see you got yourself some event sheet there. Great work, but now, let's see where can we improve this:
To be honest, you are generating a world, and that might take some time, no doubt about that. But to be frank, 88 events are quite big, and skimming through this is a little rough for me, if possible, could you just tell us your main procedure?
On the other hand, skimming through your event sheet, I see that you got quite a number of iteration there with arrays especially on Blockload event group. I see you got Array instance with size of 220 x 220 x 1. And you are iterating these arrays in every tick call.
While array allows you to store things neatly up to 3D. Accessing/Manipulating arrays in many dimensions is real performance eater. This holds true, not only in C2, but in every other programming language, game engine, etc.
I also see from event sheet 1, event number 60-64, I see identical actions in those events. I believe you could combine those into just 1 event for that. Why did you do that for? You could use "Is between values" condition right in the General section above "Global & Local variables" section instead, so:
1 = TextStack = 5
Also, no need for "every tick" after those conditions in event 60-64. Remember, events are always called every tick already. You will want to use "every tick" only when there are no conditions to check.
Furthermore, in event 15-39, I believe your intention is that you want these to run only once? Right now, I see that they will run in every tick, as they are not sub-events under "on start layout" event. Because of this, all those events will run every tick, not to mention, you are also iterating your array in there every tick.
Sorry for bad response, but could you elaborate more on what exactly are you doing in several key parts? Or else, what we can suggest you may not help you at all.
In fact, I see that you are having an event sheet logic design problem. Focus on each part separately as of now, and ask the community accordingly for better event sheet design.