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.

    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: 2014-Aug-21, Arathorn

