diff --git a/doc/sphinx/lfun/AddDefender.rst b/doc/sphinx/lfun/AddDefender.rst
index ae5b28b..dc55267 100644
--- a/doc/sphinx/lfun/AddDefender.rst
+++ b/doc/sphinx/lfun/AddDefender.rst
@@ -3,49 +3,38 @@
 
 FUNKTION
 --------
-::
 
-	void AddDefender(object friend);
+  void AddDefender(object friend);
 
 DEFINIERT IN
 ------------
-::
 
-	/std/living/combat.c
+  /std/living/combat.c
 
 ARGUMENTE
 ---------
-::
 
-	friend
-	  Objekt (normal Lebewesen), welches zukuenftig ueber Angriffe
-	  informiert werden soll oder diese sogar abwehrt.
+  friend
+    Objekt (normal Lebewesen), welches zukuenftig ueber Angriffe
+    informiert werden soll oder diese sogar abwehrt.
 
 BESCHREIBUNG
 ------------
-::
 
-	Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
-	einen solchen Angriff per InformDefend() informieren oder ihnen
-	sogar die Moeglichkeit geben, per DefendOther() direkt in den
-	laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
-	Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
-	als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
-	Name der Funktion.
-	Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
-	abgespeichert und koennen dort abgerufen werden. Natuerlich kann
-	man weitere Objekte direkt dort eintragen, jedoch sollte man die
-	hierfuer bereitgestellte Funktionen AddDefender() verwenden.
-	Zum Loeschen von Eintraegen im Array steht ebenfalls eine Funktion
-	bereit: RemoveDefender().
+  Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+  einen solchen Angriff per InformDefend() informieren oder ihnen
+  sogar die Moeglichkeit geben, per DefendOther() direkt in den
+  laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+  Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+  als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+  Name der Funktion.
 
 SIEHE AUCH
 ----------
-::
 
-	RemoveDefender(), InformDefend(), DefendOther(),
-	P_DEFENDERS, /std/living/combat.c
+  :doc:`RemoveDefender`, :doc:`QueryDefenders`, 
+  :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
+  :doc:`InformDefend`, :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
 
-
-Last modified: Thu Jul 29 18:48:45 1999 by Patryn
-
+Letzte Aenderung: 28.10.2022, Bugfix
diff --git a/doc/sphinx/lfun/DefendOther.rst b/doc/sphinx/lfun/DefendOther.rst
index 96c5b08..ba24a05 100644
--- a/doc/sphinx/lfun/DefendOther.rst
+++ b/doc/sphinx/lfun/DefendOther.rst
@@ -3,20 +3,17 @@
 
 FUNKTION
 --------
-::
 
     public <int|string*|mapping|object>* DefendOther(int dam,
                        string* dam_type, int|mapping si_spell, object enemy)
 
 DEFINIERT IN
 ------------
-::
 
     /std/living/combat.c
 
 ARGUMENTE
 ---------
-::
 
     int dam
       Der Schaden, der voraussichtlich beim zu verteidigenden Lebewesen
@@ -46,7 +43,6 @@
 
 BESCHREIBUNG
 ------------
-::
 
     Es ist moeglich, dass Objekte Angriffe auf Lebewesen abwehren oder
     umwandeln, sofern diese Objekte bei dem angegriffenen Lebewesen
@@ -116,7 +112,9 @@
 ----------
 
   Funktionen:
-    :doc:`../lfun/AddDefender`, :doc:`../lfun/RemoveDefender`, :doc:`../lfun/InformDefend`, :doc:`../lfun/Kill`, :doc:`../lfun/IsEnemy`, :doc:`../lfun/Defend`
+    :doc:`AddDefender`, :doc:`RemoveDefender`, :doc:`InformDefend`, :doc:`DefendOther`,
+    :doc:`Kill`, :doc:`IsEnemy`, :doc:`Defend`, :doc:`QueryDefenders`, 
+    :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
   Properties
     :doc:`../props/P_DEFENDERS`
   Objekte:
diff --git a/doc/sphinx/lfun/InformDefend.rst b/doc/sphinx/lfun/InformDefend.rst
index fbc0b12..df3fa9c 100644
--- a/doc/sphinx/lfun/InformDefend.rst
+++ b/doc/sphinx/lfun/InformDefend.rst
@@ -3,80 +3,88 @@
 
 FUNKTION
 --------
-::
 
-	void InformDefend(object enemy);
+  void InformDefend(object enemy);
 
 DEFINIERT IN
 ------------
-::
 
-	/std/living/combat.c
+  /std/living/combat.c
 
 ARGUMENTE
 ---------
-::
 
-	enemy
-	  Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
+  enemy
+    Der Feind, der ein zu verteidigendes Lebewesen angegriffen hat.
 
 BESCHREIBUNG
 ------------
-::
 
-	Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
-	informiert werden, sofern diese Objekte bei dem angegriffenen
-	Lebewesen mittels AddDefender() angemeldet wurden und sich der
-	selben Umgebung befinden.
-	Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
-	andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
-	sind, verteidigen sollen.
-	Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
-	von InformDefend() darueber informiert, wobei der Angreifer als
-	Parameter uebergeben wird.
-	Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
-	wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
+  Es ist moeglich, dass Objekte ueber Angriffe auf Lebewesen
+  informiert werden, sofern diese Objekte bei dem angegriffenen
+  Lebewesen mittels AddDefender() angemeldet wurden und sich der
+  selben Umgebung befinden.
+  Zumeist wird es sich bei den Objekten natuerlich ebenfalls um
+  andere Lebewesen handeln, die das Lebewesen, bei dem sie angemeldet
+  sind, verteidigen sollen.
+  Bei einem Angriff auf das Lebewesen werden alle Objekte per Aufruf
+  von InformDefend() darueber informiert, wobei der Angreifer als
+  Parameter uebergeben wird.
+  Standardmaessig ist diese Funktion in Lebewesen bereits definiert,
+  wobei der Skill SK_INFORM_DEFEND, sofern vorhanden, aufgerufen wird.
 
 BEISPIEL
 --------
-::
 
-	Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
-	verteidigen, z.B. beschworene Daemonen:
-	  inherit "std/npc";
-	  include <properties.h>
-	  object owner;
-	  void create()
-	  { ::create();
-	    SetProp(P_NAME,"Daemon");
-	    ...
-	  }
-	// nach Clonen des Daemons folgende Funktion mit Beschwoerer als
-	// Parameter aufrufen
-	  Identify(object caster)
-	  { if(!objectp(caster))
-	      call_out(#'remove,0);
-	    owner=caster;
-	    owner->AddDefender(this_object());
-	  }
-	// folgende Funktion wird automatisch aufgerufen, wenn der
-	// Beschwoerer angegriffen wird
-	  void InformDefend(object enemy)
-	  { if(!IsEnemy(enemy)&&enemy!=owner)
-	      Kill(enemy);
-	  }
-	Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
-	Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
-	diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
-	uebergeben wird.
+  Sehr beliebt sind in Gilden NPCs, die den Beschwoerer begleiten und
+  verteidigen, z.B. beschworene Daemonen:
+
+.. code-block:: pike
+
+  inherit "/std/npc";
+
+  #include <properties.h>
+
+  object owner;
+
+  protected void create()
+  {
+    ::create();
+    SetProp(P_NAME,"Daemon");
+    ...
+  }
+
+  // nach Clonen des Daemons folgende Funktion mit Beschwoerer als
+  // Parameter aufrufen
+
+  void Identify(object caster)
+  { 
+    if(!objectp(caster))
+      call_out(#'remove,0);
+    owner=caster;
+    owner->AddDefender(this_object());
+  }
+
+  // folgende Funktion wird automatisch aufgerufen, wenn der
+  // Beschwoerer angegriffen wird
+
+  public void InformDefend(object enemy)
+  { 
+    if(!IsEnemy(enemy)&&enemy!=owner)
+      Kill(enemy);
+  }
+
+  Soll der Daemon sich auch in ein Team einordnen, in welchem sich der
+  Beschwoerer eventuell befindet, so ist zusaetzlich AssocMember() in
+  diesem Beschwoerer aufzurufen, wobei der Daemon als Parameter
+  uebergeben wird.
 
 SIEHE AUCH
 ----------
-::
 
-	AddDefender(), RemoveDefender(), DefendOther(), Kill(), IsEnemy(),
-	P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h
+  :doc:`AddDefender`, :doc:`RemoveDefender`, :doc:`QueryDefenders`, 
+  :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
+  :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
 
-
-Last modified: Thu Jul 29 18:48:45 1999 by Patryn
-
+Letzte Aenderung: 28.10.2022, Bugfix
diff --git a/doc/sphinx/lfun/QueryDefenders.rst b/doc/sphinx/lfun/QueryDefenders.rst
new file mode 100644
index 0000000..1269acc
--- /dev/null
+++ b/doc/sphinx/lfun/QueryDefenders.rst
@@ -0,0 +1,32 @@
+QueryDefenders()
+================
+
+FUNKTION
+--------
+
+  public object* QueryDefenders()
+
+DEFINIERT IN
+------------
+
+  /std/living/combat.c
+
+RUECKGABEWERT
+-------------
+
+  Object-Array mit den eingetragenen Defendern.
+
+BESCHREIBUNG
+------------
+
+  Gibt eine um zerstoerte Objekte bereinigte Kopie von P_DEFENDERS zurueck.
+
+SIEHE AUCH
+----------
+
+  :doc:`AddDefender`, :doc:`RemoveDefender`,
+  :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
+  :doc:`InformDefend`, :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
+
+Letzte Aenderung: 29.10.2022, Bugfix
diff --git a/doc/sphinx/lfun/QueryNearDefenders.rst b/doc/sphinx/lfun/QueryNearDefenders.rst
new file mode 100644
index 0000000..7b26903
--- /dev/null
+++ b/doc/sphinx/lfun/QueryNearDefenders.rst
@@ -0,0 +1,42 @@
+QueryNearDefenders()
+====================
+
+FUNKTION
+--------
+
+  public object* QueryNearDefenders(object* defenders)
+
+DEFINIERT IN
+------------
+
+  /std/living/combat.c
+
+ARGUMENTE
+---------
+
+  object* defenders: Ein Object-Array mit Defendern, aus denen ausgewaehlt 
+                     werden soll.
+
+RUeCKGABEWERT
+-------------
+
+  Object-Array mit den nahen Verteidigern (s.u.).
+
+BESCHREIBUNG
+------------
+
+  Gibt ein Object-Array mit den Defendern im Environment von this_object()
+  oder in this_object() zurueck, die in Reihe 1 stehen oder in keinem Team
+  sind.
+  Wird <defenders> nicht uebergeben, wird das Ergebnis von QueryDefenders()
+  benutzt.
+  
+SIEHE AUCH
+----------
+
+  :doc:`AddDefender`, :doc:`RemoveDefender`, :doc:`QueryDefenders`, 
+  :doc:`QueryPresentDefenders`,
+  :doc:`InformDefend`, :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
+
+Letzte Aenderung: 28.10.2022, Bugfix
\ No newline at end of file
diff --git a/doc/sphinx/lfun/QueryPresentDefenders.rst b/doc/sphinx/lfun/QueryPresentDefenders.rst
new file mode 100644
index 0000000..2eabd69
--- /dev/null
+++ b/doc/sphinx/lfun/QueryPresentDefenders.rst
@@ -0,0 +1,42 @@
+QueryPresentDefenders()
+=======================
+
+FUNKTION
+--------
+
+  public object* QueryPresentDefenders(object* defenders)
+
+DEFINIERT IN
+------------
+
+  /std/living/combat.c
+
+ARGUMENTE
+---------
+
+  object* defenders: Ein Object-Array mit Defendern, aus denen ausgewaehlt 
+                     werden soll.
+
+RUeCKGABEWERT
+-------------
+
+  Object-Array mit den eingetragenen Defendern im gleichen Environment oder
+  in this_object().
+
+BESCHREIBUNG
+------------
+
+  Gibt ein Object-Array mit den Defendern im Environment von this_object()
+  oder in this_object() zurueck.
+  Wird <defenders> nicht uebergeben, wird das Ergebnis von QueryDefenders()
+  benutzt.
+  
+SIEHE AUCH
+----------
+
+  :doc:`AddDefender`, :doc:`RemoveDefender`, :doc:`QueryDefenders`, 
+  :doc:`QueryNearDefenders`, 
+  :doc:`InformDefend`, :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
+
+Letzte Aenderung: 28.10.2022, Bugfix
\ No newline at end of file
diff --git a/doc/sphinx/lfun/RemoveDefender.rst b/doc/sphinx/lfun/RemoveDefender.rst
index 911e0c5..3e62b58 100644
--- a/doc/sphinx/lfun/RemoveDefender.rst
+++ b/doc/sphinx/lfun/RemoveDefender.rst
@@ -3,51 +3,40 @@
 
 FUNKTION
 --------
-::
 
-	void RemoveDefender(object friend);
+  void RemoveDefender(object friend);
 
 DEFINIERT IN
 ------------
-::
 
-	/std/living/combat.c
+  /std/living/combat.c
 
 ARGUMENTE
 ---------
-::
 
-	friend
-	  Objekt (normal Lebewesen), welches zukuenftig nicht mehr ueber
-	  Angriffe informiert werden soll und diese auch nicht mehr abwehrt.
+  friend
+    Objekt (normal Lebewesen), welches zukuenftig nicht mehr ueber
+    Angriffe informiert werden soll und diese auch nicht mehr abwehrt.
 
 BESCHREIBUNG
 ------------
-::
 
-	Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
-	einen solchen Angriff per InformDefend() informieren oder ihnen
-	sogar die Moeglichkeit geben, per DefendOther() direkt in den
-	laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
-	Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
-	als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
-	Name der Funktion. Ausserdem besteht die Einschraenkung, dass diese
-	Objekte in der gleichen Umgebung sein muessen, wie das zu
-	verteidigende Lebewesen.
-	Die Objekte sind in Form eines Arrays in der Property P_DEFENDERS
-	abgespeichert und koennen dort abgerufen werden. Natuerlich kann
-	man alte Objekte direkt dort loeschen, jedoch sollte man die
-	hierfuer bereitgestellte Funktionen RemoveDefender() verwenden.
-	Zum Hinzufuegen von Eintraegen im Array steht ebenfalls eine
-	Funktion bereit: AddDefender().
+  Ein Lebewesen, welches angegriffen wird, kann andere Objekte ueber
+  einen solchen Angriff per InformDefend() informieren oder ihnen
+  sogar die Moeglichkeit geben, per DefendOther() direkt in den
+  laufenden Angriff einzugreifen (Schaeden abwehren oder umwandeln).
+  Im Normalfall handelt es sich hierbei um andere Lebewesen, welche
+  als Verteidiger des angegriffenen Lebewesens auftreten: Daher der
+  Name der Funktion. Ausserdem besteht die Einschraenkung, dass diese
+  Objekte in der gleichen Umgebung sein muessen, wie das zu
+  verteidigende Lebewesen.
 
 SIEHE AUCH
 ----------
-::
 
-	AddDefender(), InformDefend(), DefendOther(),
-	P_DEFENDERS, /std/living/combat.c
+  :doc:`AddDefender`, :doc:`QueryDefenders`, 
+  :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
+  :doc:`InformDefend`, :doc:`DefendOther`,
+  :doc:`../props/P_DEFENDER`, /std/living/combat.c
 
-
-Last modified: Thu Jul 29 18:48:45 1999 by Patryn
-
+Letzte Aenderung: 28.10.2022, Bugfix
