AddSpell: Defend() nur bei Schaden > 0.

Defend() wird nur gerufen, wenn der eingetragene
Schaden >0 ist. Ist ist nicht der Fall, wird nur
die Funktion/Closure fuer den Spell gerufen. In
diesem Fall ist diese nicht-optional.

Change-Id: I78ac3cfc5fffa8179fd0c53bc4963b60d5f5dc66
diff --git a/std/npc/combat.c b/std/npc/combat.c
index e209967..f49a3c2 100644
--- a/std/npc/combat.c
+++ b/std/npc/combat.c
@@ -193,6 +193,14 @@
     }
   }
   
+  if(damage==0 && !closurep(cl))
+  {
+    catch(raise_error(
+      "AddSpell(): Bei damage=0 muss eine Funktion eingetragen werden.");
+      publish);
+    return 0;
+  }
+
   // Falls vorhanden, alte Syntax auf die von replace_personal() anpassen,
   // die im heart_beat() beim Ausgeben der Meldung verwendet wird.
   if ( strstr(TextForOthers, "@", 0) != -1 )
@@ -345,10 +353,15 @@
         ({ enemy, this_object()}));
     return ;
   }
-  int damage = random(spells[i][SPELL_DAMAGE])+1;
-  enemy->Defend(damage, spells[i][SPELL_DAMTYPE],
-                spells[i][SPELL_ARG],
-                this_object());
+  int damage;
+  // Bei 0 sparen wir uns das Defend() und rufen nur die Funktion auf.
+  if(spells[i][SPELL_DAMAGE])
+  {
+    damage=random(spells[i][SPELL_DAMAGE])+1;
+    enemy->Defend(damage, spells[i][SPELL_DAMTYPE],
+      spells[i][SPELL_ARG],
+      this_object());
+  }
 
   // Falls der Gegner (oder wir) im Defend stirbt, hier abbrechen
   if ( !objectp(ME) || !objectp(enemy)