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


