/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** attributes.c -- provide attributes to an object's description ** ** Used internally to map flag values into attributes to display at the ** end of a description. For example: (open) or (providing light) (wielded) */ #include <flags.h> /* ** The key is a flag value (see /include/flags.h) and the values are a ** string or an array of three strings. For the first case, the string will ** be used if the flag is set. For the latter case: if the object responds ** TRUE to the function specified in the third string, then the first ** string (at index 0) will be used if the flag is off, and the second ** string will be used if the flag is on. ** ** This information is kept ONLY in the M_OBJ_ATTRIBUTES object. It will ** be initialized by the various modules that need to have attributes ** displayed. Each object will then use this information to display that ** data. */ private nosave mapping attribute_info = 0; int test_flag(int); //:FUNCTION get_attributes // Get the attributes (a string) for the given object. This will be // built from the object's flag states and the registered attributes. string get_attributes() { string attr = " "; if (!attribute_info) attribute_info = ATTRIBUTES_D->get_global_attributes(); foreach(int flag, mixed info in attribute_info) { if(test_flag(flag)) attr += call_other(this_object(), info); } return attr; }