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

