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
----------

  :doc:`RemoveDefender`, :doc:`QueryDefenders`, 
  :doc:`QueryPresentDefenders`, :doc:`QueryNearDefenders`, 
  :doc:`InformDefend`, :doc:`DefendOther`,
  :doc:`../props/P_DEFENDERS`, /std/living/combat.c

Letzte Aenderung: 28.10.2022, Bugfix
