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.
	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().

SIEHE AUCH
----------
::

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


Last modified: Thu Jul 29 18:48:45 1999 by Patryn

