GetAquarium()
=============

FUNKTION
--------
::

     varargs public string* GetAquarium(object angel)

ARGUMENTE
---------
::

     Das optionale Argument <angel> ist die Angel selbst.

BESCHREIBUNG
------------
::

     Die Funktion wird beim Angeln in Raeumen gerufen, wenn diese als 
     Gewaessertyp W_USER gesetzt haben (siehe Manpage zu P_WATER).
     Aus der zurueckgegebenen Liste der Pfade wird einer zufaellig aus-
     gewaehlt und das Objekt geclont. 

RUECKGABEWERT
-------------
::

     String-Array mit Pfadnamen zu den in diesem Raum fangbaren Fischen.

BEMERKUNG
---------
::

     Man kann die Fangchancen durch Mehrfachnennung einzelner Eintraege 
     modifizieren. Es muss sich bei den Eintraegen um lad- und clonebare
     Objekte handeln.
     Fuer selbstprogrammierte Fische ist das Basisobjekt 
     /std/items/fishing/fish zu verwenden. Einige vorgefertigte Fische 
     finden sich darueber hinaus in /items/fishing/aquarium/

BEISPIEL
--------
::

     varargs string* GetAquarium(object angel) {
       return ({"/d/dschungel/rikus/q4e/obj/stichling",
                "/d/dschungel/rikus/q4e/obj/karpfen",
                "/p/seher/partymonster/obj/fisch"});
     }

SIEHE AUCH
----------
::

    Properties: P_WATER, P_FISH


zuletzt geaendert: 2014-Sep-02, Arathorn

