InformDefend()

FUNKTION:
	void InformDefend(object enemy);

DEFINIERT IN:
	/std/living/combat.c

ARGUMENTE:
	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.

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.

SIEHE AUCH:
	AddDefender(), RemoveDefender(), DefendOther(), Kill(), IsEnemy(),
	P_DEFENDERS, /std/living/combat.c, /sys/new_skills.h

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