
heart_beat()
************


FUNKTION
========

   protected void heart_beat();


DEFINIERT IN
============

   /std/living/life.c
   /std/living/combat.c
   und anderen...
   kann auch in beliebigen Objekten selbst definiert werden.


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

   Diese Funktion wird alle zwei Sekunden vom GameDriver aufgerufen. Sie
   regelt in der MG-MudLib das Heilen von Spielern und Monstern, den
   Ablauf von Kampfrunden, die Verdauung etc.

   Da heart_beat() ziemlich viele Ressourcen des GameDrivers verbraet,
   sollte man Objekte mit heart_beat() nur so selten wie moeglich
   benutzen! Und selbst dann sollte der heart_beat() nicht die ganze Zeit
   ueber laufen, sondern sich so bald wie moeglich abschalten.

   Das Ein- und Ausschalten des heart_beat()s erfolgt mit
   set_heart_beat().


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

   1. Teuer, teuer, teuer!
   2. Soll euer Viech pro "echtem" Heartbeat mehrere Kampfrunden haben,
      benutzt dafuer SA_SPEED und ruft auf gar keinen Fall mehrfach
      ::heart_beat() auf. Also _NICHT_
      void heart_beat() {
          ::heart_beat();
          ::heart_beat(); }
      sondern:
      SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED: 200]) );


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

   Efuns:     set_heart_beat(), absolute_hb_count(), set_next_reset()
   Fehler:    make_immortal(L)

22.3.2008, Zesstra
