
P_WATER
*******


NAME
====

   P_WATER                       "water"


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

   /sys/fishing.h


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

   Enthaelt den Gewaessertyp. Kann in Raeumen, Angeln und Wasserbehaeltern
   verwendet werden. Die verfuegbaren Optionen und Funktionsweisen sind in
   den nachfolgenden Abschnitten aufgefuehrt.

   Raum:
   *****
     Legt den Typ des Gewaessers fest, das es in diesem Raum gibt. Von
     diesem Typ haengt ab, welche Arten von Fischen es hier standardmaessig
     gibt und welche Arten von Angeln verwendet werden koennen.

     Beispiel:

     SetProp(P_WATER, W_HARBOR);

     Folgende Typen stehen zur Verfuegung, von denen in Raeumen nur einer
     gesetzt werden darf:

     Salzwasser:
       W_BEACH   Strand: Scholle, Flunder, Rochen, Seezunge, Katzenhai
       W_HARBOR  Hafen: Dorsch, Rochen, Seezunge, Hering, Katzenhai
       W_OCEAN   Ozean/Meer: Hai, Thunfisch, Kabeljau, Schwertfisch, Seehase,
                 Seeteufel, Seewolf

     Suesswasser:
       W_RIVER   Fluss: Piranha, Lachs, Forelle, Bachsaibling
       W_POOL    Teich: Stichling, Goldfisch, Schlei, Karpfen, Goldorfe
       W_LAKE    See: Karpfen, Barsch, Hecht, Seesaibling
       W_ROCK    Bergbach: Lachs, Forelle, Bachsaibling
       W_STREAM  Bach: Stichling, Bachforelle, Neuauge, Bachsaibling

     Sonstige:
       W_USER    wenn dieser Gewaessertyp gesetzt wird, MUSS der Raum
                 zusaetzlich die Funktion GetAquarium() definieren, die
                 eine Liste der hier fangbaren Fische zurueckgeben muss.
                 Beispiel:

                 string* GetAquarium(){
                   return ({"/d/ebene/fraggle/angel/fisch"});
                 }
       W_DEAD    Lebloses Wasser. Enthaelt keine Fische, man kann
                 aber die Standardflasche fuellen.

       W_OTHER   1024   // Flasche enthaelt Fluessigkeit!=Wasser


   Angel:
   ******
     Angeln sind ueblicherweise auf bestimmte Anwendungsbereiche ausgelegt.
     Ob eine Angel in einem Gewaesser benutzt werden kann, haengt davon ab,
     ob P_WATER in der Angel den Gewaessertyp des Raumes enthaelt. Von den
     oben genannten Typen koennen mehrere ver-ODER-t gesetzt werden.
     Verwendung einer fuer das oertliche Gewaesser ungeeigneten Angel fuehrt
     zu einer um 60+random(60) Sekunden verlaengerten Wartezeit beim Angeln.

     Beispiel: Setzt man den Gewaessertyp mit

       SetProp(P_WATER, W_HARBOR|W_OCEAN);

     schaltet das die Angel sowohl fuer Haefen, als auch fuer offene Meere
     (Ozeane) frei.

     Folgende kombinierte Gewaessertypen sind fuer einfache Angeln
     vordefiniert:

     Kurze Standardangeln:
       W_SHORT W_HARBOR|W_RIVER|W_POOL|W_LAKE|W_ROCK|W_USER|W_OCEAN|W_STREAM
     Spezielle Strandruten:
       W_LONG  W_BEACH|W_USER
     funktioniert in allen Salzgewaessern:
       W_SALT  W_HARBOR|W_OCEAN|W_BEACH
     funktioniert in allen Suessgewaessern:
       W_SWEET W_RIVER|W_POOL|W_LAKE|W_ROCK|W_STREAM

     Hinweis: W_DEAD ist in diesen Kombinationen nicht enthalten, da es
     in solchen Gewaessern ohnehin keine Fische gibt.
     Die Kombi-Typen enthalten W_USER, um bei entsprechenden Gewaessern
     zu vermeiden, dass es dort standardmaessig einen Malus auf die
     Wartezeit gibt. Standardwert fuer P_WATER in Angeln ist ebenfalls
     W_USER.

   Koeder:
   *******
     Auch Koeder koennen fuer die Verwendung in bestimmten Gewaessern besser
     geeignet sein als in anderen, z.B. eine Seeschnecke fuer Salzwasser,
     ein Mehlwurm hingegen fuer Suesswasser. Gesetzt wird P_WATER hierfuer
     auf die oben aufgefuehrten Werte.
     Verwendung eines ungeeigneten Koeders fuehrt zu einer um 60+random(60)
     Sekunden laengeren Wartezeit beim Angeln. Angeln in Gewaessern des
     Typs W_USER fuehrt nie zu einer verlaengerten Wartezeit.

   Wasserbehaelter:
   ****************
     Die Property gibt an, ob der Behaelter Wasser enthaelt oder nicht.
     Der Wert sollte immer auf den Typ jenes Gewaessers gesetzt sein, aus
     dem der Behaelter aufgefuellt wurde.


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

   Properties: P_FISH
   Methoden:   GetAquarium(L)

Zuletzt geaendert: 2020-Mar-08, Arathorn
