AutoAttack()
************


FUNKTION
========

   int AutoAttack(object ob)


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

   /std/npc/combat


ARGUMENTE
=========

   object ob
      Das ggf. annzugreifende Object. (Achtung, nicht nur Livings)


BESCHREIBUNG
============

   Diese Funktion wird aus heart_beat() heraus aufgerufen. Sie
   bestimmt, ob ein Living automatisch angegriffen werden soll oder
   nicht.


RUeCKGABEWERT
=============

   1 fuer Angriff, sonst 0.


BEMERKUNGEN
===========

   Da diese Funktion aus heart_beat() heraus aufgerufen wird, und zwar
   einmal pro anwesendem Objekt (nicht nur fuer Livings), sollte man
   hier moeglichst wenig Dinge tun. Verzichtet am besten ganz auf die
   Nutzung, falls irgendwie moeglich.

   Da auch NPCs uebergeben werden, kann man hier auch diese
   automatisch angreifen lassen, was normalerweise nicht der Fall ist.
   Dies funktioniert jedoch nur, wenn der heart_beat() eingeschaltet
   ist, also normalerweise nicht in Abwesenheit von Spielern.


BEISPIELE
=========

   inherit "/std/npc";

   #include <npc.h>

   protected void create()
   {
     ...
     SetProp(P_AGGRESSIVE,1);
     ...
   }

   // Keine Leute angreifen, die auf der Freundesliste stehen.
   // Bei dieser Variante wir das P_AGGRESSIVE in ob nicht ausgewertet, falls
   // ob als Freund erkannt wird.
   int AutoAttack(object ob)
   {
     if(member(freunde,ob)!=-1) return 0;
     else return ::AutoAttack(ob);
   }


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

   heart_beat(), P_AGGRESSIVE

Letzte Aenderung: 28.08.2019, Bugfix
