diff --git a/doc/lfun/AssocMember b/doc/lfun/AssocMember
index 349157b..139a670 100644
--- a/doc/lfun/AssocMember
+++ b/doc/lfun/AssocMember
@@ -1,52 +1,74 @@
 
 AssocMember()
+*************
 
 
-FUNKTION:
-        int AssocMember(object npc)
+FUNKTION
+========
 
-DEFINIERT IN:
-        /std/living/team.c
+   int AssocMember(object npc)
 
-ARGUMENTE:
-        Der zuzuordnende NPC.
 
-BESCHREIBUNG:
-        Ordnet einen NPC einem Spieler zu. Dieser ist dann
-        immer im Team des Spielers, moeglichst in der gleichen Reihe.
+DEFINIERT IN
+============
 
-RUECKGABEWERT:
-        1, falls Zuordnung erfolgreich, sonst 0.
+   /std/living/team.c
 
-BEISPIEL:
-        void fun(object pl)
-        {
-          if ( pl && pl->AssocMember(this_object()) )
-            tell_object(pl,break_string(
-              "Ich kaempfe nun auf Deiner Seite!\n",78,"Ein Feuerteufel "
-              "teilt Dir mit:");
-         ...
-        }
 
-BEMERKUNGEN:
-        1. Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
-           zuzuordnenden NPC aufgerufen werden.
-        2. Einem NPC, der selber einem Spieler zugeordnet ist, kann kein
-           NPC zugeordnet werden.
+ARGUMENTE
+=========
 
-SIEHE AUCH:
-        Uebersicht: teamkampf
-        Properties: P_TEAM, P_TEAM_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
-                    P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
-                    P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
-        Bewegung:   IsTeamMove, TeamFlee
-        Mitglieder: IsTeamLeader, TeamMembers
-        Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
-                    SelectFarEnemy
-        Positionen: PresentPosition, PresentRows, PresentEnemyRows,
-                    PresentTeamPosition, SwapRows
-        Sonstiges:  TeamPrefix, teamkampf_intern
+   Der zuzuordnende NPC.
 
-----------------------------------------------------------------------------
+
+BESCHREIBUNG
+============
+
+   Ordnet einen NPC einem Spieler zu. Dieser ist dann
+   immer im Team des Spielers, moeglichst in der gleichen Reihe.
+
+
+RUECKGABEWERT
+=============
+
+   1, falls Zuordnung erfolgreich, sonst 0.
+
+
+BEISPIEL
+========
+
+   void fun(object pl)
+   {
+     if ( pl && pl->AssocMember(this_object()) )
+       tell_object(pl,break_string(
+         "Ich kaempfe nun auf Deiner Seite!\n",78,"Ein Feuerteufel "
+         "teilt Dir mit:");
+    ...
+   }
+
+
+BEMERKUNGEN
+===========
+
+   1. Kann nur von Gilden, Spellbooks, vom Objekt selber und vom
+      zuzuordnenden NPC aufgerufen werden.
+   2. Einem NPC, der selber einem Spieler zugeordnet ist, kann kein
+      NPC zugeordnet werden.
+
+
+SIEHE AUCH
+==========
+
+   Uebersicht: teamkampf
+   Properties: P_TEAM, P_TEAM_ASSOC_MEMBERS, P_TEAM_ATTACK_CMD,
+               P_TEAM_AUTOFOLLOW, P_TEAM_COLORS, P_TEAM_LEADER,
+               P_TEAM_NEWMEMBER, P_TEAM_WANTED_ROW, P_TEAM_WIMPY_ROW
+   Bewegung:   IsTeamMove, TeamFlee
+   Mitglieder: IsTeamLeader, TeamMembers
+   Kampf:      DeAssocMember, InsertEnemyTeam, SelectNearEnemy,
+               SelectFarEnemy
+   Positionen: PresentPosition, PresentRows, PresentEnemyRows,
+               PresentTeamPosition, SwapRows
+   Sonstiges:  TeamPrefix, teamkampf_intern
+
 Last modified: 04.10.2011, Zesstra
-
