reduce_hit_points()
===================

FUNKTION
--------
::

    int reduce_hit_points(int damage)

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

    /std/living/life.c

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

    int damage	- der zugefuegte Schaden

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

    Dem Lebewesen werden damage Lebenspunkte abgezogen, aber der
    Wert wird hinterher nicht kleiner als 1 sein und das Lebewesen
    wird dadurch nicht sterben.

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

    Die verbleibenden Lebenspunkte.

BEISPIELE
---------
::

    write("Ploetzlich schiesst eine scheussliche Kreatur aus der Pfuetze "+
          "heraus und\nbeisst Dich ins Bein, sie verschwindet so schnell, "+
          "wie sie gekommen ist.\n");
    this_player()->reduce_hit_points(50);
    (Auszug aus /players/boing/friedhof/room/cat1x9)

BEMERKUNGEN
-----------
::

    damage kann auch ein negativer Wert sein, dann werden dem Lebewesen
    diese Lebenspunkte gutgeschrieben und auf die aktuellen Lebenspunkte
    addiert. Da dies eine Form der Heilung ist, nur nach Ruecksprache mit
    dem Regionsmagier verwenden.

    Bei Heilstellen sollte eine evtl. Heilung des Spielers mit der eigens
    dafuer eingerichteten Funktion check_and_update_timed_key realisiert
    werden.

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

    Gegenpart:	restore_hit_points()
    Verwandt:	do_damage(), Defend(), reduce_spell_points()
    Props:	P_HP
    Konzept:	heilung


Last modified: Sat Dec 13 01:00:47 1999 by Tilly

