Manpages als reStructuredText erstellt
Unsere Manpages wurden mit einem LPC-Tool in
reStructuredText konvertiert und liegen jetzt
in diesem Verzeichnis als Quelldaten.
Aus diesen reStructuredText sollen dann per
Script die ASCII-Manpages und per Sphinx HTML u.a.
erzeugt werden.
Change-Id: I75d659a7b3f9863aecb11dbeb0037e6cae227c36
diff --git a/doc/sphinx/lfun/QuerySkillAttributeModifier.rst b/doc/sphinx/lfun/QuerySkillAttributeModifier.rst
new file mode 100644
index 0000000..34615c3
--- /dev/null
+++ b/doc/sphinx/lfun/QuerySkillAttributeModifier.rst
@@ -0,0 +1,118 @@
+QuerySkillAttributeModifier()
+=============================
+
+FUNKTION
+--------
+::
+
+ public varargs mapping QuerySkillAttributeModifier(object caster,
+ string *atrnames)
+
+DEFINIERT IN
+------------
+::
+
+ /std/living/skill_attributes.c
+
+ARGUMENTE
+---------
+::
+
+ <caster> object
+ Objekt, welches die gesuchten Mods gesetzt hat
+
+ <atrnames> string*
+ Array von Skill-Attributen, welche durchsucht werden sollen.
+
+BESCHREIBUNG
+------------
+::
+
+ Diese Funktion liefert alle Mods von <caster> auf den Skill-
+ Attributen <atrnames> in einem Mapping zurueck.
+ Wird <atrnames> nicht angegeben oder ist ein leeres Array, werden alle
+ Skill-Attribute nach Mods abgesucht.
+ Wird <caster> 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: ([ <caster>: <value>; <duration> ]),
+ atrname2: ([ <caster>: <value>; <duration> ]) ])
+ 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.
+ <value> kann hierbei ein int oder eine closure sein, <duration> ist ein
+ int, <caster> 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
+