mob
proc
block()
world << "[src] blocks the attack!"
This doesn't compile since block is a reserved word, but this doesn't seem like a necessary restriction. You might want to avoid this:
proc
block()
return "Not what you expected!"
If this did compile it would cause problems. There'd be no way to differentiate between the built-in block() proc and the one we defined. In the first example, the proc would always be referred to as mob.block() or /mob/proc/block. It would only be referred to as just block() if called from another mob proc, but naming conflicts like this aren't new to the interpreter. This is no more a problem than this: (which does compile)
var
test = 1
mob
var
test = 2
proc
something()
world << test
Another one I noticed was "length". If I create a custom data structure I cannot define a length() proc that returns the number of elements it contains. "text" is another one, but that gives a "duplicate definition (conflicts with built-in proc)" error instead of "invalid proc name: reserved word".
It seems unnecessary to prohibit so many proc names for all object types. By giving built-in procs intuitive names (most of the time) they're easy to remember, but the built-in procs end up hogging all of the good names. This forces programmers to use obscure, less intuitive names for their own functions.
Who gives a ****? Open up a dictionary, there are thousands to choose from
Not only that, you could avoid it altogether by naming it _block().
Sheesh seriously? Complaining about 30 or so reserved words? That's hilarious