heal_self()
***********


FUNKTION
========

   void heal_self(int points);


ARGUMENTE
=========

   points: Die dem Lebewesen zukommende Heilung.


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

   Dem Lebewesen werden points Lebens- und Konzentrationspunkte
   gutgeschrieben und auf die aktuellen addiert. Es werden aber nicht
   die maximalen Werte ueberschritten.


RUECKGABEWERT
=============

   Keiner


BEISPIELE
=========

   AddCmd("pflueck&beere","pfluecke_cmd","Was moechtest Du pfluecken?");

   int pfluecke_cmd(string str){
       write("Du pflueckst eine Beere, isst sie und fuehlst Dich gleich "
            +"viel besser.\n");
       this_player()->heal_self(30);
       return 1;
   }

   Der Spieler bekommt hier pro Beere die er pflueckt und isst je 30 LP/KP
   zu seinen momentanen.


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

   heal_self() wird gerne fuer Heilstellen in Gebieten genommen, in denen
   ein Spieler diese Heilung auch wirklich braucht. Dennoch ist der Einsatz
   unbedingt mit der Heilungsbalance abzusprechen und darauf zu achten, dass
   pro reset() nur eine bestimmte Anzahl an Heilungen ausgegeben werden.

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

   Diese Funktion kann nicht verwendet werden, um dem Lebewesen durch
   Uebergabe eines negativen Wertes fuer points Schaden zuzufuegen.


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

   Verwandt:   restore_spell_points, restore_hit_points, buffer_hp
               buffer_sp, check_and_update_timed_key
   Gegenparts: do_damage, reduce_hit_points, reduce_spell_points
   Props:      P_HP, P_SP
   Konzept:    heilung

Last modified: 10.01.2020 by Arathorn
