/* Do not remove the headers from this file! see /USAGE for more info. */ #include <move.h> #include <hooks.h> #include <setbit.h> mixed call_hooks(string, int); void assign_flag(string, int); int test_flag(string); void set_light(int); //:FUNCTION remove //This function is guaranteed to be called when an object is destructed. //It tidies up some things like updating its environment's capacity and //light level. It also calls the "remove" hook. int remove() { if (environment()) environment()->release_object(this_object(), 1); // Abstract class fix if ( file_name() != __DIR__ "non_object" ) { //:HOOK remove //Called when an object is removed. The return value is ignored call_hooks("remove", HOOK_IGNORE); /* turn off any light we might be providing. bad to leave it on :-) */ set_light(0); } destruct(); } //:FUNCTION receive_object //receive_object(obj, relation) should return 1 if obj can be put ("in", "on", //etc) the object, where 'relation' specifies the relation. By default, //objects cannot contain things so MOVE_NOT_ALLOWED is returned. See also //the container inheritable. mixed receive_object( object target, string relation ) { return MOVE_NOT_ALLOWED; } varargs mixed release_object( object target, int force ) { return 1; } //:FUNCTION set_attached //set_attached(1) or set_attached() sets the ATTACHED flag for this //object, and set_attached(0) removes it. varargs void set_attached(int a) { if (undefinedp(a)) a = 1; assign_flag(ATTACHED, a); } //:FUNCTION is_attached //returns 1 if the ATTACHED flag is set for this object. int is_attached() { return test_flag(ATTACHED); }