The function name is based on the entity name and the event itself; so if an entity with class 'Alien' and a name of 'myAlien' was to be spawned, the game would first look for 'myAlien_OnSpawned' and then the basic 'Alien_OnSpawned' if that isn't found. This allows for a form of inheritance and per-object overrides for event handling.
Last night I spent time working on a flexible event object system. At present, the event functions are just normal functions that don't take a parameter. For simple events this is fine, but what if you need to pass a collision event? You'd need to know about the entity that has just been collided with. To counteract this I've created a ScriptedEvent class that can be used as a base for the various event types. The idea is that when this event is thrown it'll automatically create an event object for the script to consume. Rather than an 'all-in-one' solution, each script event will only have properties that correspond to the relevant game event. So 'OnSpawned' won't have any details about collisions, but 'OnCollided' will.
The basic system is working, I just need to start adding new event classes.