diff --git a/doc/lfun/Flee b/doc/lfun/Flee
index 6a63d89..995cf26 100644
--- a/doc/lfun/Flee
+++ b/doc/lfun/Flee
@@ -1,57 +1,83 @@
+
 Flee()
+******
 
-FUNKTION:
-        public varargs void Flee( object oldenv, int force )
 
-DEFINIERT IN:
-        /sys/living/combat.h
-        /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-        oldenv
-          Ein Raum oder 0.
-          Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
-          Raum befinden, damit er versucht, zu fluechten, es sei denn, das
-          optionale Flag "force" ist gesetzt.
-        force
-          1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
-          0 sonst.
+   public varargs void Flee( object oldenv, int force )
 
-BESCHREIBUNG:
-        Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
-        um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
-        auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
-        dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
-        Vorsicht fluechtet.
-        Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
-        aber auch, dass man den Raum verlaesst.
-        
-RUeCKGABEWERT:
-        keiner
 
-BEMERKUNGEN:
+DEFINIERT IN
+============
 
-BEISPIELE:
-        this_player()->Flee(0, 1);
-        // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
-        // als seine Vorsicht sind und unabhaengig von seiner Position.
-        
-        this_player()->Flee( find_object("/gilden/abenteurer") );
-        // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
-        // befindet (oder wenn diese nicht existiert)
-        
-        this_player()->Flee( "/gilden/abenteurer" );
-        // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
-        // und dem Raum 0 ergibt.
+   /sys/living/combat.h
+   /std/living/combat.c
 
-        this_player()->Flee( find_object("/gilden/abenteurer"), 1);
-        // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
-        // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.
-        
-        
-        
-SIEHE AUCH:
-        CheckWimpyAndFlee(), Defend(), heart_beat(), 
 
-----------------------------------------------------------------------------
+ARGUMENTE
+=========
+
+   oldenv
+     Ein Raum oder 0.
+     Wird ein Raum angegeben, dann muss sich der Fluechtende in diesem
+     Raum befinden, damit er versucht, zu fluechten, es sei denn, das
+     optionale Flag "force" ist gesetzt.
+   force
+     1, wenn der spieler unabhaengig von seiner Vorsicht fluechten soll.
+     0 sonst.
+
+
+BESCHREIBUNG
+============
+
+   Flee() wird im heart_beat() oder von CheckWimpyAndFlee() aufgerufen,
+   um den Spieler fluechten zu lassen. Man kann die Funktion im Spieler
+   auch "von Hand" aufrufen, beispielsweise in einem Spell. Man sollte
+   dann force auf 1 setzen, damit der Spieler unabhaengig von seiner
+   Vorsicht fluechtet.
+   Hierbei kann die Flucht dazu fuehren, dass man die Teamreihe wechselt,
+   aber auch, dass man den Raum verlaesst.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+
+BEISPIELE
+=========
+
+   this_player()->Flee(0, 1);
+   // Der Spieler soll fluechten, egal, ob seine Lebenspunkte geringer
+   // als seine Vorsicht sind und unabhaengig von seiner Position.
+
+
+
+   this_player()->Flee( find_object("/gilden/abenteurer") );
+   // Der Spieler soll fluechten, wenn er sich in der Abenteurergilde
+   // befindet (oder wenn diese nicht existiert)
+
+
+
+   this_player()->Flee( "/gilden/abenteurer" );
+   // Der Spieler wird nicht fluechten, da der Vergleich von Dateiname
+   // und dem Raum 0 ergibt.
+
+   this_player()->Flee( find_object("/gilden/abenteurer"), 1);
+   // Der Spieler soll auf jeden Fall fluechten, egal ob er sich in der
+   // Abenteurergilde befindet oder nicht. Grund: Gesetztes force-Flag.
+
+
+SIEHE AUCH
+==========
+
+   CheckWimpyAndFlee(), Defend(), heart_beat(),
+
 Last modified: Wed Nov 12 14:44:42 2003 by Bambi
