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.