HasExtraLook()
**************


FUNKTION
========

   public int HasExtraLook(string key);


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

   /std/living/description.c


ARGUMENTE
=========

   string key: Schluesselwort, unter dem der Eintrag registriert
   wurde.


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

   Die Funktion kann verwendet werden, um herauszufinden, ob ein
   bestimmter Extralook bei einem Lebewesen eingetragen wurde.

   Es ist hierbei sichergestellt, dass nur solche Extralooks
   ausgegeben werden, die noch nicht abgelaufen sind.


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

   * 1, falls der Key enthalten ist

   * 0 sonst.


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

   Verwandt:
      RemoveExtraLook(), AddExtraLook(), P_INTERNAL_EXTRA_LOOK

   Fuer Spielerobjekte:
      P_EXTRA_LOOK

28. August 2019 Arathorn
