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

