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

