AddHpHook()
===========

********************* OBSOLETE LFUN ***********************************
* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
* Hooks (s. /doc/std/hooks).                                          *
***********************************************************************
AddHpHook()

FUNKTION
--------
::

     int AddHpHook(object ob)

DEFINIERT IN
------------
::

     /std/player/life.c

ARGUMENTE
---------
::

     ob - das Objekt, das sich eintragen moechte.

BESCHREIBUNG
------------
::

     Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.

     Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
     an allen eingetragenen Objekten NotifyHpChange() gerufen.

RUECKGABEWERT
-------------
::

     1, wenn Erfolg, 0 sonst

SIEHE AUCH
----------
::

     Gegenpart:	RemoveHpHook()
     Props:	P_HP_HOOKS, P_HP
     Verwandt:	reduce_hit_points(), do_damage(), buffer_hp()

23.Feb.2004 Gloinson

