Start Info Community Spielen
 
 

Morgengrauner Dokumentation

Dateipfad: /home/mud/mudlib/doc//lfun/QuerySkillAttributeModifier

QuerySkillAttributeModifier()
*****************************


FUNKTION
========

   public varargs mapping QuerySkillAttributeModifier(object caster,
                                                   string *atrnames)


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

   /std/living/skill_attributes.c


ARGUMENTE
=========

       object
               Objekt, welches die gesuchten Mods gesetzt hat

     string*
               Array von Skill-Attributen, welche durchsucht werden sollen.


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

   Diese Funktion liefert alle Mods von  auf den Skill-
   Attributen  in einem Mapping zurueck.
   Wird  nicht angegeben oder ist ein leeres Array, werden alle
   Skill-Attribute nach Mods abgesucht.
   Wird  nicht angeben oder ist 0, so werden alle Mods der
   gewuenschten Skill-Attribute geliefert.
   Dementsprechend bekommt man alle Mods aller Skill-Attribute, wenn keins
   von beidem angegeben wird.


RUECKGABEWERT
=============

   ([]), falls keine Modifikatoren gefunden wurden.
   In anderen Faellen ist die Datenstruktur des Mappings wie folgt:
   ([ atrname1: ([ : ;  ]),
      atrname2: ([ : ;  ]) ])
   Die Schluessel im Mapping sind die jeweiligen Skill-Attribute, die Werte
   des Mappings sind erneut Mappings, welche als Schluessel die Objekte
   haben, welche die Mods gesetzt haben. In diesem Mapping gehoeren zu jedem
   Schluessel zwei Werte, den Wert des Modifikators und die Ablaufzeit.
    kann hierbei ein int oder eine closure sein,  ist ein
   int,  ist ein Objekt.
   Ggf. kann das innere Mapping natuerlich auch mehrere Modifikatoren
   enthalten (also caster1, caster2, usw.).


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


BEISPIELE
=========

   Ein Objekt moechte seinen bestehenden Modifikator um 20 und die
   Gueltigkeit um 13 erhoehen.
   mapping res = ob->QuerySkillAttributeModifier(this_object(),
                                                ({SA_DAMAGE}) );
   if (member(res, SA_DAMAGE) && member(res[SA_DAMAGE], this_object())) {
        // alten Mod ueberschreiben und Werte dabei anheben.
        ob->ModifySkillAttributeModifier(SA_DAMAGE,
            res[SA_DAMAGE][this_object(),0] + 20,
            res[SA_DAMAGE][this_object(),1] + 13 );
   }
   else
        // neuen Mod setzen.
        ob->ModifySkilAttributeModifier(SA_DAMAGE, 20, 13);



   Ein Objekt hat den Fluch der unpraezisen Schnelligkeit, welcher SA_DAMAGE
   reduziert, sofern das Lebewesen einen positiven Modifikator auf SA_SPEED
   hat:
   mapping res = ob->QuerySkillAttributeModifier(0, ({SA_SPEED}) );
   if (member(res, SA_SPEED) {
       int val, int dur;
       foreach(object caster, int v, int d: res[SA_SPEED]) {
           // groessten Mod rausfinden, dabei keine closures
           // beruecksichtigen.
           if (intp(v) && v>val) {
               val=v;
               dur=d;
           }
       }
       if (val > 0) {
           // pos. Mod auf SA_SPEED gefunden, entsprechenden neg. Mod auf
           // SA_DAMAGE setzen, der zum gleichen Zeitpunkt ungueltig wird
           // wie der Mod auf SA_SPEED.
           if (ob->ModifySkillAttribute(SA_DAMAGE, -val, dur) == SA_MOD_OK)
              tell_object(ob, "tolle Fluchmeldung.");
       }
   }


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


Skills Lernen: LearnSkill, ModifySkill, LimitAbility * Nutzung: UseSpell, UseSkill * Abfragen: QuerySkill, QuerySkillAbility * Modifikation: ModifySkillAttribute, QuerySkillAttribute, RemoveSkillAttributeModifier * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS * sonstig: spruchermuedung, skill_info_liste * Properties: P_NEWSKILLS

14.08.2008, Zesstra


zurück zur Übersicht

YOUTUBE | FACEBOOK | TWITTER | DISCORD | FEEDBACK | IMPRESSUM | DATENSCHUTZ 1992–2023 © MorgenGrauen.