diff --git a/std/living/light.c b/std/living/light.c
new file mode 100644
index 0000000..5b12e1f
--- /dev/null
+++ b/std/living/light.c
@@ -0,0 +1,55 @@
+// MorgenGrauen MUDlib
+//
+// living/description.c -- description for living objects
+//
+// $Id: description.c 7340 2009-11-19 21:44:51Z Zesstra $
+#pragma strong_types
+#pragma save_types
+#pragma range_check
+#pragma no_clone
+#pragma pedantic
+
+#define NEED_PROTOTYPES
+#include <living/description.h>
+#include <living/skills.h>
+#undef NEED_PROTOTYPES
+
+#include <player/viewcmd.h>
+#include <new_skills.h>
+#include <container.h>
+#include <player/base.h>
+#include <wizlevels.h>
+
+inherit "/std/container/light";
+
+protected void create() {
+  ::create();
+  SetProp(P_LIGHT_TRANSPARENCY, 0);
+}
+
+static int _query_player_light()
+{
+  if (environment())
+    return environment()->QueryProp(P_INT_LIGHT) + QueryProp(P_LIGHT_MODIFIER);
+}
+
+varargs int CannotSee(int silent)
+{
+   string is_blind;
+   if (is_blind = QueryProp(P_BLIND)) {
+      if (!silent) {
+         if (stringp(is_blind))
+            tell_object(this_object(), is_blind);
+         else tell_object(this_object(), "Du bist blind!\n");
+      }
+      return 2;
+   }
+   if (UseSkill(SK_NIGHTVISION)<=0 &&
+       environment() && QueryProp(P_PLAYER_LIGHT)<=0 &&
+       (!IS_LEARNER(this_object()) || !Query(P_WANTS_TO_LEARN)))
+   {
+       if (!silent) tell_object(this_object(), "Es ist zu dunkel!\n");
+       return 1;
+   }
+   return 0;
+}
