In LUA, it is a very important concept to understand that everything is a variable and all variables may be edited in runtime. This includes functions.
With modding other peoples' LUA files, like Klei's basegame code, you may find yourself wanting to run your code before or after the original function's call. You might want to edit the original function's arguments, or change the return results from the function.
In LUA it is almost trivial to hook a function, but to do it wel