P_AQUATIC_HELPERS
=================

NAME
----

     P_AQUATIC_HELPERS "lib_p_aquatic_helpers"

DEFINIERT IN
------------

     <living/helpers.h>

BESCHREIBUNG
------------

     Diese Property kann in allen Lebewesen abgefragt werden, um die Objekte
     zu ermitteln, die fuer die Unterstuetzung beim Tauchen bei diesem 
     Lebewesen registriert haben. Die Daten werden als Mapping der folgenden
     Form zurueckgeliefert:
     ([ Objekt : Rueckgabewert von dessen Callback-Methode ])
     Eine Erlaeuterung dazu findet sich in der Dokumentation zu 
     :doc:`../lfun/RegisterHelperObject`.

BEMERKUNGEN
-----------

     Diese Property kann nur abgefragt werden.
     Es ist erwuenscht, dass entsprechende, neu geschaffene Stellen jegliche 
     Helfer akzeptieren, deren Callback-Methode >0 zurueckgibt.

BEISPIEL
--------

     Um zu ermitteln, ob der Spieler mindestens ein Objekt bei sich hat, das 
     beim Tauchen hilft, sucht man alle Objekte aus dem Mapping heraus, die
     einen Wert >0 eingetragen haben und prueft deren Anzahl:

.. code-block:: pike

     mapping aquatic = this_player()->QueryProp(P_AQUATIC_HELPERS);
     object* helpers = filter( m_indices(aquatic), function int (object h) {
                         return (aquatic[h]>0); });
     if ( sizeof(helpers) ) {
       tell_object(this_player(), "Du stuerzt Dich in die Fluten und "
         "stellst ueberrascht fest, dass Du mit Hilfe "+
         helpers[0]->name(WESSEN,1)+" sogar unter Wasser atmen kannst!\n");
     }
     else {
       tell_object(this_player(), "Du hast nichts zum Tauchen bei Dir.\n");
     }

SIEHE AUCH
----------

     Methoden:    :doc:`../lfun/RegisterHelperObject`, :doc:`../lfun/UnregisterHelperObject`
     Properties:  :doc:`P_HELPER_OBJECTS`, :doc:`P_AERIAL_HELPERS`

04.02.2018, Arathorn
