Lfun: produce - produce an item on action get Synopsis: object produce(string item) Description: This function is called in a room whenever a person attempts to take something. This is currently called before anything else (might change). The purpose is to enable a room to create an item 'on request' by the user (player), usually while also providing description of the 'virtual' item through a room item description. Produce should check if the string is an id of the item to be produced, then clone it and place it in the room (also via PRODUCE macro - see 'man lib/PRODUCE') eventually checking if there isn't one available yet (PROVIDE macro). Finally it should return a pointer to the object, although this is not being used (yet), or null if the is not being offered. Notice that you should _NOT_ transfer the item into the user's inventory. The player takes it via the action 'get'/'take' coded in obj/player. Return value: object or 0 Examples: Various in Nemesis Village ;-) Wizards can 'goto ~kiri/workroom', 'x shelves' and 'get '. // from fictional room int jacket_taken; reset(arg) { if (!present("jacket")) jacket_taken = 0; [...] } produce(str) { if (str == "jacket" && !jacket_taken && !present("jacket")) { jacket_taken = 1; jacket = clone_object("lib/armour/jacket2"); move_object(jacket, this_object()); return jacket; } } Note: In 1993 Junky said: I don't know of this function, so i can't guarantee that it works. In 2015 Kiri says: It works! ;-) Perhaps even before room2.h or perhaps at least before the original add_extra_object of room2.h ... For other possibilities of "searching" see 'man object/search' and 'man room/do_dig'. See also: room/add_extra_object, object/id, object/get, object/search, room/do_dig