Merge branch 'master' of ssh://mgg/mudlib-public
diff --git a/std/spellbook.c b/std/spellbook.c
index 24f824f..cda78bb 100644
--- a/std/spellbook.c
+++ b/std/spellbook.c
@@ -390,12 +390,12 @@
     // Spruch ausfuehren.
     res=(int)call_other(this_object(),fname,caster,ski);
   }
-  // TODO: Wenn die ausgefuehrte Spellfunktion eine 0 zurueckgibt, sollen jetzt
-  // noch notify_fails zum Zuge kommen koennen. Daher in diesem Fall auch 0
-  // zurueckgeben.
   if (!res || !caster)
     return 1;
 
+  if(res==NICHT_ZUSTAENDIG)
+    return 0;
+
   if (!(ski[SI_NO_ATTACK_BUSY]&NO_ATTACK_BUSY_QUERY))
   	{
 	if (!ski[SI_ATTACK_BUSY_AMOUNT])  
diff --git a/std/thing/light.c b/std/thing/light.c
index 36411b4..d02f579 100644
--- a/std/thing/light.c
+++ b/std/thing/light.c
@@ -46,7 +46,7 @@
       light = 100;
     else if (light < -100)
       light = -100;
-   
+
     while ( objectp(env = environment(env)) )
         // Ja. Man ruft die _set_xxx()-Funktionen eigentlich nicht direkt auf.
         // Aber das Lichtsystem ist schon *so* rechenintensiv und gerade der
@@ -56,7 +56,35 @@
         //
         // Tiamak
         env->_set_last_content_change();
-    
+
     return Set( P_LIGHT, light, F_VALUE);
 }
 
+
+//                       ##############
+//######################## Lichttypen ############################
+//                       ##############
+
+// Lichttypen pruefen
+varargs int CheckLightType(int lighttype, int mode)
+{
+  int my_light_type = QueryProp(P_LIGHT_TYPE);
+
+  switch( mode )
+  {
+    // mind. alle angegebenen muessen vertreten sein
+    case LT_CHECK_ALL:
+      return ((lighttype & my_light_type) == lighttype);
+     // Genau diese Typen muessen vertreten sein.
+    case LT_CHECK_MATCH:
+      return (lighttype == my_light_type);
+    // Es darf kein Typ vertreten sein.
+    case LT_CHECK_NONE:
+      return !(lighttype & my_light_type);
+    // mind. einer der uebergebenen Typen muss vertreten sein
+    case LT_CHECK_ANY:
+    default:
+      return (lighttype & my_light_type);
+  }
+  return 0;
+}
diff --git a/sys/new_skills.h b/sys/new_skills.h
index 6af5cbc..808d16d 100644
--- a/sys/new_skills.h
+++ b/sys/new_skills.h
@@ -30,6 +30,7 @@
 #define ERFOLG                      1
 #define MISSERFOLG                  -1
 #define ABGEWEHRT                   2
+#define NICHT_ZUSTAENDIG            -2
 
 // ===== Properties des Gilden-Masters: =====