
QueryEnemies()
**************


FUNKTION
========

   mixed QueryEnemies();


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

   /std/living/combat.c


ARGUMENTE
=========

   keine


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

   Array mit Array aus bekannten Gegnern und Array aus Zeiten


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

   Diese Funktion enthaelt ein Array, das zwei Elemente enthaelt, die
   wiederum Arrays sind:
     1. Array: Die bekannten Gegner als Objektpointer.
     2. Array: Die zugeordneten Zeiten, wie lange ein Gegner noch als
               solcher bekannt sein soll.
   Im Normalfall wird ein Gegner dann bekannt, wenn man gezielt
   jemanden atackiert, oder wenn man einen Angriff abwehren muss.
   Dann wird der Gegner intern abgespeichert, und es wird eine Zeit
   gesetzt, die dann runtergezaehlt wird. Ist die Zeit auf 0, so wird
   der Gegner wieder automatisch ausgetragen.
   (Standardmaessig betraegt diese Zeit 600 Sekunden (300 Heartbeats).)
   Man kann sich die Gegner auch in Form eines Mappings zurueckgeben
   lassen. Dies erreicht man mittels der Funktion GetEnemies().


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

   Kill(), Attack(), Defend(), do_my_heart_beat(), PresentEnemies(),
   GetEnemies(), SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY

29.12.2007, Zesstra
