Simple event library for Lua Example usage: -- create generic event handling function for a Cat class function Cat:OnEvent(eventname, ...) if eventname == "MOUSE_SPAWNED" and not self.chasing then local mouse = ... self:ChaseMouse(mouse) end end -- use a regular function to process the event as well function PrintWhenMouseSpawns(eventname, mouse) print("MOUSE SPAWNED! "..tostring(mouse)) end function Mouse:initialize(x, y) self:Spawn(x, y) Event.Trigger("MOUSE_SPAWNED", self) -- trigger the event and pass any arguments you want end -- register the Cat class and function we created with the MOUSE_SPAWNED event Event.Register(Cat, "MOUSE_SPAWNED") Event.Register(PrintWhenMouseSpawns, "MOUSE_SPAWNED") An 'object' (the thing you register) can be either a function or a table. If it is a table, then when the event it's associated with is triggered, it will first look for a function of the same name as the event in the table, and if it doesn't find one it will fall back to the table's "OnEvent" method, if it exists.