AddDefender()
*************


FUNKTION
========

   void AddDefender(object friend);


DEFINIERT IN
============

   /std/living/combat.c


ARGUMENTE
=========

   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.


SIEHE AUCH
==========

   RemoveDefender(), QueryDefenders(), QueryPresentDefenders(),
   QueryNearDefenders(), InformDefend(), DefendOther(), P_DEFENDERS,
   /std/living/combat.c

Letzte Aenderung: 28.10.2022, Bugfix
