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
