
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
