I'm a bit obsessive about refactoring (which is not always a good thing). In this case though, there are certain obvious tangible benefits to compacting your event sheet. So I thought I'd like to share some tips that may or may not already be common knowledge regarding this matter. Note that some of these go against traditional refactoring objectives in terms of losing readability and making things more complicated, but the goal here is to minimize event usage.
1. Verify your e-mail address on your profile. You now have 10 more events! Easiest way to get a 25% event limit increase.
2. Avoid using global/local variables to store and manipulate data. Use instance variables instead. Or data objects like arrays and dictionaries. Or instance variables in array and dictionary objects. Bonus (in C2 at least) - you get boolean variables for toggling! It may take an action to reset a variable after using it if you're using it in place of a local variable, but actions are free anyways.
3. Focus on minimizing and grouping your conditions rather than actions. Conditions are the real limit, as you can have as many actions per event as you please. Avoid functions - again, actions are free, so just copy and paste them where needed rather than have multiple events call one function. Unless your functions have a lot of sub-events going on. In that case, utilize functions!
4. Use conditional operators. Instead of having a set of If/Then events, you can often condense them into one action/expression. Note that you can use conditional operators in conditional operators. I would normally never recommend this due to the readability being crap, but it can save a ton of events in certain situations! Common use case - looping/repeating counters (cooldowns, ammo, score...).
5. Alternative compact toggles - Use inverse math to swap any two numbers. Simple - Set x to 1-x will swap between 0 and 1. Advanced - Set x to 15-x where X is anything between 0 and 15 will swap between that number and its inverse. Can be used for animation frame shenanigans.
6. Loops and loopindexes are your friend, especially for positioning objects dynamically. Note uneccessary use of sub events.
7. Don't position objects dynamically if you can avoid it, as that takes events. Do as much as you can in the layout editor.
I'm sure there are more but that's about it off the top of my head for now. I'm sure others can add to this list