SetTimedAttrModifier()
**********************


FUNKTION
========

   int SetTimedAttrModifier(string key, mapping modifier,
                            int outdated, object dependent, mixed notify)


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

   /std/living/attributes.c


ARGUMENTE
=========

   key        -       in P_TIMED_ATTR_MOD vorzunehmender oder zu
                      aendernder Eintrag
   modifier   -       Mapping mit den Attributveraenderungen
   outdated   -       Zeitpunkt zu dem die Attributveraenderungen
                      ablaufen sollen in Sekunden seit dem
                      1. Jan 1970, 0.0:0 GMT oder 0
   dependent  -       Objekt dessen Existenz eine Bedingung fuer die
                      Attributveraenderung sein soll oder 0
   notify     -       Objekt oder File das mittels
                      NotifyTimedAttrModExpired ueber
                      den Attributablauf informiert werden soll


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

   Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
   modifiziert und update_max_sp_and_hp aufgerufen.
   Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
   besonderes Augenmerk zu legen.

   Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
   welcher die Attribute des Livings um die in modifier stehenden Offsets
   veraendert.

   Diese Veraenderung ist solange aktiv bis entweder die in outdated
   stehende Zeit ueberschritten ist oder das in dependent uebergebene
   Objekt nicht mehr existiert.
   Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
   und kann durch DeleteTimedAttrModifier geloescht werden.
   Laeuft die Attributveraenderung ab, so wird der in notify angegebene
   Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon
   benachrichtigt.
   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
   der abgelaufenen Attributveraenderung uebergeben.


BEISPIELE
=========

   Ein NPC kann einen Spieler auf die folgende Weise solange die
   Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
   ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
   wurde.

     player->SetTimedAttrModifier( player->query_real_name(),
                                   ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
                                   time()+3600,
                                   this_object(),
                                   this_object()
                                 );

   Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
   durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.

     void NotifyTimedAttrModExpired(string str)
     {
         // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
         // gerade abgelaufen ist. Also Meldungsausgabe an
         // previous_object().
         tell_object(previous_object()
             ,"Da hast Du aber nochmal Glueck gehabt.\n");
     }


RUeCKGABEWERT
=============

   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
                                 eines fehlenden modifier-Arguments oder
                                 eines bereits abgelaufenen
                                 outdatet-Arguments
   TATTR_OK                -     Im Erfolgsfall

   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.


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

   Attribute:  QueryAttribute(), SetAttribute()
               SetRealAttribute(), QueryRealAttribute(),
               QueryAttributeOffset(),
               UpdateAttributes()
   Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
   Callback:   NotifyTimedAttrModExpired()
   Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
               P_X_ATTR_MOD, P_M_ATTR_MOD
               P_TIMED_ATTR_MOD
   Sonstiges:  /std/living/attributes.c

LETZTE Aenderung: 15.02.2009, Zesstra
