SYNOPSIS object|lwobject previous_object() object|lwobject previous_object(int i) DESCRIPTION Returns an object pointer to the object that did a call (call_other(), funcall(), etc) to the current object, if any. If that object is destructed, the function returns 0. If the optional arg is given, the call_other()s are followed back i times (i.e. previous_object(1) returns the caller of the caller): 0 <= i < caller_stack_depth(). If is less than 0, the first previous object is returned. There is an important special case: in functions called by the gamedriver in reaction to some external event (e.g. commands added by add_action), previous_object() will return this_object(), but previous_object(0) will return 0. EXAMPLES int security() { object|lwobject prev; if (!(prev=previous_object())); else if (getuid(prev) != getuid(this_object())); else if (geteuid(prev) != geteuid(this_object())); else return 1; return 0; } void highly_sensible_func() { if (!security()) return; ... } This example shows how we can check if the last call to a function of the current object is secure or if we should abort execution. BUGS Values of i < 0 are treated as if i == 0 was passed - this is historic. SEE ALSO call_other(E), this_object(E), this_player(E), caller_stack(E), caller_stack_depth(E), extern_call(E)