The problem with nil is more a problem with @param and values.

@param values used type_nil's low-level type, which is either quaternion
or vector (v6 progs). Thus returning (or passing?) nil through @param
creates a value that has type_param built low-level type quaternion.
Then assigning nil to a quaternion finds the param nil (because the
value and low-level type is checked) which has the wrong type for type
checks.

one solution is to create an ev_param type (convert to quaternion or
vector for v6 progs) that the VM either ignores or can copy around
ev_param data.
