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
