diff --git a/doc/sphinx/man/lfun/HitFunc b/doc/sphinx/man/lfun/HitFunc
new file mode 100644
index 0000000..2fb9b79
--- /dev/null
+++ b/doc/sphinx/man/lfun/HitFunc
@@ -0,0 +1,94 @@
+
+HitFunc()
+*********
+
+
+FUNKTION
+========
+
+   int HitFunc(object enemy);
+
+
+DEFINIERT IN
+============
+
+   eigenen Objekten, fuer /std/weapon/combat.c
+
+
+ARGUMENTE
+=========
+
+   enemy
+        Der Gegner, gegen den die Waffe eingesetzt wird.
+
+
+BESCHREIBUNG
+============
+
+   Die Waffe kann anhand des Gegners enemy entscheiden, ob ein
+   Schadensbonus oder auch ein Schadensmalus wirksam wird. Dieser Bonus
+   wird zu dem normalen Schaden der Waffe hinzuaddiert.
+
+
+RUeCKGABEWERT
+=============
+
+   Der Schadensbonus bzw. der Abschlag.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn durch den Bonus die Genehmigungsgrenzen der Balance
+   ueberschritten werden koennen, muss man seinen Regionsmagier und
+   die Objekt-Balance konsultieren!
+
+   Werte der HitFunc sollten immer ueber ein random() zurueckgegeben
+   werden!
+
+   Diese Funktion sollte die Waffe nicht zerstoeren! Falls ihr im Kampf eine
+   Waffe (ggf. in Abhaengigkeit vom Gegner) zerstoeren wollt, nutzt dazu
+   bitte TakeFlaw().
+
+
+BEISPIELE
+=========
+
+   Eine Waffe, die gegen Orks besonders gut wirkt:
+
+   inherit "std/weapon";
+
+   #include <properties.h>
+   #include <combat.h>
+   #include <class.h>
+
+   create(){
+     if(!clonep(this_object())) {
+         set_next_reset(-1);
+         return;
+     }
+     ::create();
+     /*
+     zig SetProp's, um die Waffe zu konfigurieren
+     HitFunc() ist in der Waffe selbst definiert
+     */
+     SetProp(P_HIT_FUNC, this_object());
+   }
+
+   int HitFunc(object enemy)
+   {
+     /* laesst sich der Gegner als Ork ansprechen? */
+     if (enemy->is_class_member(CL_ORC))
+       return random(10+random(50)); /* Ja => Schaden erhoehen */
+
+     return 0;   /* ansonsten keinen zusaetzlichen Schaden anrichten */
+   }
+
+
+SIEHE AUCH
+==========
+
+   QueryDefend(), /std/weapon.c
+   TakeFlaw()
+
+11.08.2007, Zesstra
