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