
RemoveExtraLook()
*****************

RemoveExtraLook()


int RemoveExtraLook(string look);
=================================


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

   /std/living/description.c


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

   Der Extralook erscheint in der Langbeschreibung des Lebewesens.
   Eintraege koennen mit dieser Funktion (vorzeitig) wieder entfernt werden.


ARGUMENTE
=========

   - string look:
     Schluesselwort, unter dem der Eintrag, den man entfernen moechte, von
     AddExtraLook() registriert wurde.


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

   > 0, falls der Eintrag erfolgreich entfernt wurde.
   < 0 sonst.
     -1: keinen (gueltigen) <key> uebergeben.
     -2: kein Eintrag fuer <key> gefunden.


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

   Beim Entfernen mit dieser Funktion wird die "Endemeldung" des entfernten
   Eintrages nicht ausgegeben.


BEISPIELE
=========

   # Extralook registrieren.
   living->AddExtraLook("@WER1 wird von einer Horde Daemonen verfolgt.",
                        "ennox_daemonenhordenverfolgerlook");
   # Nun kann der Eintrag auch wieder entfernt werden:
   living->RemoveExtraLook("ennox_daemonenhordenverfolgerlook");


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

   AddExtraLook(),
   P_INTERNAL_EXTRA_LOOK

14.05.2007, Zesstra
