I also converted most of the every-tick events to every after 0.03 seconds.
This is not a solution. These events will still run approx every 3 out of 5 ticks. If you have lots of such events, you need to change the logic, use more triggers, functions, on timer events etc.
For example (this may not be the case in your game, but I've seen it too many times) - testing if Enemy.health<=0 on every tick. This is unnecessary, you can do this check in the event where the enemy is hit.