Return Values

Every proc has a return value associated with it. This defaults to a value of null. To call a proc and store its return value in a variable, you can do this:

var/value = foo()

To return specific values from a proc, you use the return keyword along with an optional argument value, (defaulting to null without one).

/proc/foo(arg)
	switch (arg)
		if (1)
			return "good!"
		else
			return "bad!"

There also exists a special variable for each proc called the 'dot variable', accessed via the . symbol. What’s special about the dot variable is that it's automatically return-ed at the end of a proc, provided that the proc does not already manually return, (e.g. return x).

To re-code the above more tersely:

/proc/foo(arg)
	. = "bad!"
	if (arg == 1)
		return "good!"

With . being present in every proc, we use it as a temporary variable. However, the . variable cannot replace a typecasted variable - it can hold data as any other var in DM can, but it just can’t be accessed as one. Although, the . variable is compatible with a few operators that look weird but work perfectly fine, such as: .++ for incrementing .'s value.