diff --git a/doc/sphinx/lfun/HasExtraLook.rst b/doc/sphinx/lfun/HasExtraLook.rst
new file mode 100644
index 0000000..4cd4b7d
--- /dev/null
+++ b/doc/sphinx/lfun/HasExtraLook.rst
@@ -0,0 +1,46 @@
+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:
+     :doc:`RemoveExtraLook`, :doc:`AddExtraLook`, :doc:`../props/P_INTERNAL_EXTRA_LOOK`
+   Fuer Spielerobjekte:
+     :doc:`../props/P_EXTRA_LOOK`
+
+28. August 2019 Arathorn
diff --git a/std/living/description.c b/std/living/description.c
index af3bd94..04e65e2 100644
--- a/std/living/description.c
+++ b/std/living/description.c
@@ -188,6 +188,14 @@
   return XL_OK;
 }
 
+// Ist ein bestimmter, nicht bereits abgelaufener Eintrag in den
+// Extralooks vorhanden?
+public int HasExtraLook(string key) {
+  // abgelaufene Extralooks austragen
+  QueryProp(P_INTERNAL_EXTRA_LOOK);
+  return member(Query(P_INTERNAL_EXTRA_LOOK) || ([]), key);
+}
+
 void create()
 { 
   ::create();
