
UnregisterHelperNPC()
*********************


FUNKTION
========

   public int UnregisterHelperNPC(object npc);


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

   /std/player/combat.c


ARGUMENTE
=========

   object npc
     Objekt des helfenden NPC, der abgemeldet werden soll.


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

   Mit dieser Funktion wird ein einem Spieler helfender NPC im Spieler
   wieder abgemeldet, wenn dieser dem Spieler ab jetzt nicht mehr hilft.

   Wenn ein Helfer-NPC zerstoert wird, ist der Aufruf nicht noetig.
   Bleibt das Objekt des NPC aber existent, bitte auf jeden Fall wieder
   ordentlich abmelden, da ansonsten ggf. der Spieler unnoetig blockiert
   wird.


RUeCKGABEWERT
=============

   1, wenn die Abmeldung erfolgreich war.
   0 sonst, z.B. wenn der NPC gar nicht als Helfer registriert war.


BEMERKUNGEN
===========

   Diese Funktion setzt bei der Erfolg die Property P_HELPER_NPC in <npc>
   auf 0.


BEISPIELE
=========

   1. Ein NPC, der dem Spieler nicht mehr helfen will und normalerweisen im
      Raum verbleiben soll:
   tell_object(spieler, "Ich mag Dich nicht mehr, Du bist doof!\n");
   if (spieler->UnregisterHelperNPC(this_object()) != 1) {
     // das ist ja bloed...
     remove(0);
   }
   else {
     tell_room(environment(),
         Name()+" dreht " +spieler->Name(WEM) + " schmollend den Ruecken "
         "zu.\n");
   }


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

   UnregisterHelperNPC()
   P_HELPER_NPC
