
UnregisterHelperObject()
************************


FUNKTION
========

   int UnregisterHelperObject(object helper, int type);


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

   /std/living/helpers.c


ARGUMENTE
=========

   object helper
     Das Objekt, das als Hilfsobjekt deregistriert werden soll.
   int type
     Helfertyp, einer der in /sys/living/helpers.h definierten Typen:
     - HELPER_TYPE_AERIAL fuer die Flug-/Segelunterstuetzung
     - HELPER_TYPE_AQUATIC fuer Tauchunterstuetzung


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

   Das als Hilfsobjekt fuer bestimmte Aktivitaeten wie zum Beispiel Tauchen
   oder Fliegen bei einem Lebewesen registrierte Objekt "helper" meldet
   sich bei diesem ab.
   Hinweis: fuer eine temporaer gueltige "Nicht-Zustaendigkeit" kaeme auch
   in Frage, in dieser Zeit einfach "0" zurueckzugeben, statt sich
   komplett abzumelden.


RUECKGABEWERTE
==============

    1  Objekt wurde erfolgreich ausgetragen (HELPER_SUCCESS)
   -1  angegebenes Hilfsobjekt existiert nicht (HELPER_NO_CALLBACK_OBJECT)
   -3  angegebenes Hilfsobjekt war gar nicht angemeldet
       (HELPER_NOTHING_TO_UNREGISTER)


BEISPIEL
========

   Eine luftgefuellte Blase hatte sich als Tauch-Helfer am Spieler
   angemeldet, ist jetzt aber verbraucht und meldet sich daher ab:

   // Austragen im Spielerobjekt
   void BlaseAustragen() {
     [...]
     if ( TP->UnregisterHelperObject(ME, HELPER_TYPE_AQUATIC)
          == HELPER_SUCCESS )
       remove();
   }


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

   Funktionen:  RegisterHelperObject()
   Properties:  P_HELPER_OBJECTS, P_AERIAL_HELPERS, P_AQUATIC_HELPERS
   Sonstiges:   /sys/living/helpers.h

19.02.2013 Arathorn
