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

