/ \      _             Play Now                         Nemesis on fb
          | |     | |  _______   _        _   _______    _______   _    _______
          | |\    | | |   ____| |  \    /  | |   ____|  /   ____| | |  /   ____|
O= Home <=XX|  About  News  Pics  Adventurers  Wizards  Download  Connect     >
          | |   \   | |  |____  | |      | | |  |____   ___ \  \  | |  ___ \  \
          | |     \_| |_______| |_|      |_| |_______| |_______/  |_| |_______/
          \ /

Documentation Area

Document Path: /doc/room2/page20

                                  CHAPTER 1                                     
Extra Objects:

   Addendum: The EXTRA_OBJECTS was rewritten completely on Apr 1, 2015 (no
   April Fools' Day prank) by me, Kiri. The old code with re-implementing
   get/take in the room-coe is not really wise ;-) The player has the code
   for taking things and it's behaviour might change (in obj/player). This
   is also that this page was re-written (almost) completely.

   Imagine you are walking through a meadow full of flowers. Sadly you can't
   take them, because they are only virtual and only mentioned in the
   description. The extra objects feature solves this problem.

   STOP: Kiri says in 2015: What's described below can also be accomplished
   via produce - see 'man room/produce' :-) The feature described below uses
   this, too :-)

   To be able to use it you have to define EXTRA_OBJECTS and EXTD_ROOM before
   the include <room2.h> line. You can use the following two functions then:

   add_extra_object(file, id)         adds an extra object.
   add_extra_object(file, id, count)  adds an extra object.
   remove_extra_object(file)          removes an extra object.

   File is the path where the object is cloned if a player types 'get <item>'
   or 'take <item>' where <item> is one of the id's presented in id. Id is of
   the same type as already shown with normal items.

   The optional new 3rd argument count is the count, the number, of these
   objects can be taken between 2 resets. Default is 1. If you set it to
   -1, players can take as much as they like! Endless! Only for items with
   no value and no special functions like healing etc. The control if there
   are items left, is done in the room!

   The <item> is removed via remove_item(item) if the items is "exhausted".
   Under "standard circumstances" there is no need to fight with
   "notify_item_leave" in the room.

   If the player can't carry anymore the "now object" stays in the room and
   the extra_object is removed. This stays like this until somebody removes
   (takes) the object. After the next reset, the item is fully available
   again (if everything is done right by you ;-)

   Sorry, remapping of an add_action, e.g. pick to the function get_obj in
   the room is no longer possible: "pick apple", "pick apple from tree" etc.
   has to be done by other means. Now the "get item" is done by obj/player
   and not by the room.

   So you could add
	add_extra_object("room/examples/flowers", "flowers#some flowers")
   to your room. Don't forget to reset your extra objects at every reset.

   BUT as said above: have a look at 'man room/produce'! :-) I think it's
   the better way!

   Changed/modified/modernised by Kiri in 2015 and August 2016.

See also:

This page was generated in LPC

Imprint / Impressum