
QueryUser()
***********


FUNKTION
========

   public object QueryUser()


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

   /std/npc/combat.c
   /std/clothing/wear.c
   /std/weapon/combat.c
   alle Objekte, in denen es darueber hinaus noetig ist


ARGUMENTE
=========

   keine


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

   Liefert den aktuellen Nutzer (Lebewesen) eines Items oder NPCs.



   Diese Funktion wird z.B. von get_killing_player() benutzt, um
   herauszufinden, zu welchem Spieler denn das Objekt gehoert, was den
   toedlichen Schaden verursacht hat.

   Im Falle eines NPCs ist dies standardmaessig der Spieler, bei dem der
   NPC als Helfer-NPC eingetragen ist (s. RegisterHelperNPC).
   Im Falle einer Ruestung ist es das Lebewesen, welches sie gerade traegt.
   Im Falle einer Waffe ist es das Lebewesen, welches sie gerade gezueckt
   hat.
   Alle anderen Objekte enthalten keinen Default fuer diese Funktion.


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

   Das nutzende Lebewesen, falls es ermittelt werden konnte, sonst 0.


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

   Sollte in allen Objekten definiert werden, welche Lebewesen Schaden
   zufuegen, ohne dass das verursachende Lebewesen dabei als Feind im
   Defend() angeben wird.
   Der gelieferte Nutzer muss explizit kein Spieler sein. Es waere z.B.
   moeglich, dass von einem Spieler kontrollierter NPC einen Bumerang nutzt.


BEISPIELE
=========

   Ein von einem Spieler beschworenes Wesen wirft einen Bumerang nach einem
   Feind.
   Dann liefert QueryUser() im Bumerang den NPC als Nutzer und
   QueryUser() im NPC wiederum den Spieler.


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

   RegisterHelperNPC(), get_killer_player()
   P_WORN, P_WIELDED

12.11.2013, Zesstra
