AddFixedObject()
****************


FUNKTION
========

   varargs void AddFixedObject(string str, int val, mixed ids);


DEFINIERT IN
============

   /std/room/shop.c


ARGUMENTE
=========

   str
     Der absolute Filename eines Objekts, das in quasi beliebiger Menge
     vom betreffenden Laden verkauft werden soll.
   val
     Sofern angegeben der angenommene Wert des Objekts. Falls val nicht
     angegeben oder 0 ist, wird der Wert aus dem angegebenen Objekt
     selbst ermittelt.
     Der Verkaufspreis ist 3 * Wert des Objekts.
   ids
     String oder Stringarray mit der ID oder den IDs, ueber die man das
     Objekt im Laden ansprechen kann. Falls nicht angegeben, wird die
     ID-Liste aus der blueprint des Objekts ausgelesen.


BESCHREIBUNG
============

   Mit dieser Funktion kann man einem Laden mitteilen, dass ein Objekt
   in ihm in unbegrenzter Anzahl verkauft werden soll.
   WICHTIG: Das zu verkaufende Objekt sollte dies insofern unterstuetzen,
   dass die Blueprint die notwendigen Informationen
   (P_SHORT, P_IDS, P_VALUE, P_LONG, P_NAME) beinhaltet. Dies bedeutet im
   einfachsten Fall, dass im create() auf
     if (!clonep()) return;
   verzichtet wird.


RUeCKGABEWERT
=============

   keiner


BEISPIELE
=========

   AddFixedObject("/obj/fackel", 5000, "fackel");
     Der Laden verkauft Fackeln zum Preis von 3*5000 Goldmuenzen und man
     kann die Fackel (ausser ueber die Inventarnummer) nur mittels der
     id "fackel" kaufen.



   AddFixedObject("/obj/fackel");
     Der Laden verkauft Fackeln zum dreifachen Wert dessen, was im Objekt
     /obj/fackel.c angegeben ist (derzeit sind das 5 Muenzen) und laesst
     alle IDs zu, die in /obj/fackel.c angegeben sind. Derzeit ist das
     auch nur "fackel".


SIEHE AUCH
==========

   RemoveFixedObject(), SetStorageRoom(), /std/store.c
