AddPlant()
**********


FUNKTION
========

   varargs int AddPlant(string filename, [string|string* npcId])


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

   /std/room/kraeuter.c


ARGUMENTE
=========

   filename
     Der Filename des Krauts das hier gefunden werden soll.
   npcId
     Die ID eines NPCs oder die IDs einer Liste von NPCs, der/die das
     Kraut bewachen soll/en. Befindet sich ein NPC mit einer dieser IDs
     im Raum, kann das Kraut nicht gepflueckt werden. Dieses Argument
     ist optional!


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

   -1 wenn das Objekt nicht geclont werden konnte
   >=0 sonst


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

   Mit Hilfe dieser Funktion koennen Kraeuter fuer den mudweiten
   Kraeuterskill recht einfach eingebaut werden. Alles was man
   noch machen muss, ist den Namen der Pflanze in einem Detail oder
   der Langbeschreibung zu erwaehnen.
   Mit dem Befehl "showplant" in /obj/tools/planttool kann man sich
   bequem anzeigen lassen, was es alles an Kraeutern gibt, die man
   nehmen kann.


BEMERKUNGEN
===========

   Damit die Kraeuter von den Spielern zum Brauen von Traenken benutzt
   werden koennen, muss der Raum erst in einem Master eingetragen werden.
   Derzeit schickt ihr dazu am besten eine kurze Mail an einen Erzmagier,
   gerne nimmt Humni die derzeit entgegen.
   Die Kraeuter wurden von der Balance bereits alle im vorhinein
   abgenommen. Lediglich die Einhaltung der Kategorien ist zu beachten.
   Sind Kraeuter nicht im Master konfiguriert (wie z.B. im Homemud), sind
   alle erzeugten Kraeuter nur "Testkraeuter" mit nur der ID "kraut".


BEISPIELE
=========

   #include <items/kraeuter/kraeuterliste.h>
   inherit "/std/room/kraeuter";
   inherit "/std/room";



   void create()
   {
     ::create();
     SetProp(P_INT_LONG, "Du siehst eine Wiese voller Feldklee.\n");
     AddPlant(FELDKLEE);
   }


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

   AddItem();

18.01.2015, Zesstra
