diff --git a/doc/sphinx/man/lfun/DefendFunc b/doc/sphinx/man/lfun/DefendFunc
new file mode 100644
index 0000000..1683b3f
--- /dev/null
+++ b/doc/sphinx/man/lfun/DefendFunc
@@ -0,0 +1,107 @@
+
+DefendFunc()
+************
+
+
+DefendFunc(L)
+=============
+
+
+FUNKTION
+========
+
+   int DefendFunc(string|string *dtyp, int|mappingspell, object enemy);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten; fuer /std/armour/combat.c
+
+
+ARGUMENTE
+=========
+
+   dtyp
+        Schadenstypen der Angriffsart.
+        Sollte heute ein string* sein.
+   spell
+        0 bei veralteten konventionellen Angriffen im Regelfall jedoch
+        ein Mapping mit weiteren Infos.
+        Bei einem konventionellen Angriff ist spell[SP_PHYSICAL_ATTACK] gleich
+        1.
+   enemy
+        Der angreifende Gegner
+
+
+BESCHREIBUNG
+============
+
+   Anhand der uebergebenen Parameter kann hier ein Ruestungsbonus (oder
+   auch ein Ruestungsmalus) errechnet werden, der zu dem normalen
+   Ruestungswert (abhaengig von der Angriffsart) hinzuaddiert wird.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Ruestungsbonus, der zur Ruestungsklasse addiert werden soll.
+
+
+BEMERKUNGEN
+===========
+
+   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
+   zusammen mit der P_AC insgesamt nur in sehr seltenen, wohldurch-
+   dachten Ausnahmefaellen die maximal zulaessige P_AC fuer diesen
+   Ruestungstyp ueberschreiten. In solchen Ausnahmefaellen duerfen
+   die DefendFuncs nicht konstant wirken.
+
+   Bei aktivem Zurueckschlagen IMMER auf Flags wie SP_RECURSIVE und
+   SP_NO_ACTIVE_DEFENSE pruefen und ggf. abbrechen.
+
+
+BEISPIELE
+=========
+
+   Eine Ruestung, die bei Angriffen mit Feuer ihre volle Staerke entfaltet
+   und bei Angriffen durch Geister geschwaecht wird:
+
+   void create()
+   {
+     ::create();
+
+     SetProp(P_ARMOUR_TYPE, AT_ARMOUR);
+     SetProp(P_AC, 20);
+     ...
+     // Die DefendFunc() ist in der Ruestung selbst definiert
+     SetProp(P_DEFEND_FUNC, this_object());
+   }
+
+   int DefendFunc(string *dtyp, mixed spell, object enemy)
+   {
+     int prot;
+
+     // Zuerst fragen wir den Angriff durch Feuer ab:
+     if (member(dtyp, DT_FIRE) >= 0)  // Feuer gehoert zu den Schadenstypen
+       prot = 5 + random(10); // Das ergibt maximal 14. Zusammen mit P_AC
+                              // kommt man also maximal auf 14+20 = 34,
+                              // liegt also unter der fuer AT_ARMOUR
+                              // geltenden Obergrenze
+
+     // Und jetzt der Geistertest
+     if (enemy->QueryProp(P_RACE) == "Geist" ||
+         enemy->is_class_member(CL_GHOST))
+       prot -= random(10);
+
+     // Der Rueckgabewert wird auf den aus P_AC errechneten Wert draufgeschlagen
+     return prot;
+   }
+
+
+SIEHE AUCH
+==========
+
+   P_DEFEND_FUNC, QueryDefend(), /std/armour/combat.c
+
+Last modified: 18.Jul 2006 Muadib
