Lfun: search - define search actions everywhere Synopsis: mixed search(string item); Description: The search function is called through the search add_action of the player. Everything can be searched: room items, objects in the room and objects in the inventory of the player (see 'help search'). To make an object searchable a function search has to be defined in the object. The single argument is the item to be searched. It has to be an ID (see 'man id') of the object. The object is identified by this ID. The IDs of a room are set via set_items in room2.h (see 'man set_items'). If a pointer of object is returned, it is moved to the right environment and weight is added, if it is moved to the player's inventory. In this case full messaging is done by the obj/player: "You find an empty bottle." and "<Player> searches the <item> and finds <short>.". If 0 is returned, "You find nothing." and "<Player> searches the <item> but finds nothing." shown. If 1 is returned, the searched object has to do the messaging describing what happend. Also fully living object, monsters, can be made searchable. If 0 is returned (no function search defined, the default), "You can't do that." is displayed. Return value: A pointer of object if searching is successfull and an object is found, or 1 if the search was "successful", or 0 if not successful. Examples: status found; search(str) { if (str == "grass" && !found && !present("rope") { found = 1; return clone_object("lib/obj/rope"); } } search(str) { if (str == "sign" || str == "signpost") { write("Hmmm, somebody has added a note on the "+ str+". Very tiny letters ...\n"); say(this_player()->query_name()+" searches the "+str+ ". Hmm, looks like "+this_player()->query_pronoun()+ " has found something.\n"); return 1; } } Note: Make sure players can only find a limited quantity of objects by storing the status in a global variable and reset it in reset(). Numbered room items are also supported: <item 1> and <item 2> e.g. 2 notes in one room. For other possibilities of "searching" see 'man room/produce' and 'man room/do_dig'. See also: helpdir/search, helpdir/numbering, room/set_items, lib/valid_id, living/find_id, room/produce, room/do_dig