Automatisch erzeugte Manpages.
Damit nicht jeder sphinx auf dem Rechner haben muss,
behalten wir bis auf weiteres die aus den .rst
erzeugten Manpoages auch im Repo.
Change-Id: Id556c0d11cf5f79659d8350952ce1c014d81ea44
diff --git a/doc/lfun/ModifySkillAttribute b/doc/lfun/ModifySkillAttribute
index e5b3669..1b4fe40 100644
--- a/doc/lfun/ModifySkillAttribute
+++ b/doc/lfun/ModifySkillAttribute
@@ -1,105 +1,133 @@
+
ModifySkillAttribute()
-FUNKTION:
- public int ModifySkillAttribute(string atrname, mixed value,
- int duration)
+**********************
-DEFINIERT IN:
- /std/living/skill_attributes.c
-ARGUMENTE:
- <atrname> string
- Name des zu veraendernden Attributes
- (Definiert in /sys/living/skill_attributes.h)
+FUNKTION
+========
- <value> int oder closure
- Wert des Modifikators
- oder
- eine Closure, welche bei Abfrage des betreffenden SAs
- abgefragt um den Modifikator zu bestimmen.
+ public int ModifySkillAttribute(string atrname, mixed value,
+ int duration)
- <duration> int
- Dauer in Sekunden
-BESCHREIBUNG:
- Aendert temporaer, d.h. fuer eine bestimmte Zeit, ein Skill-Attribut
- eines Lebewesen, indem ein Modifikator hinzugefuegt wird.
-
- Der Standardwert eines SA wird von P_SKILL_ATTRIBUTE_OFFSETS festgelegt
- oder ist 100, wenn besagte Property leer ist.
- Alle Modifikatoren (negativ wie positiv) werden addiert und bilden
- zusammen mit dem Standardwert eine Gesamtsumme.
- Bei allen SAs ausser SA_QUALITY wird diese Gesamtsumme noch mit
- SA_QUALITY (welches sich damit auf alle anderen Skill-Attribute
- auswirkt) multipliziert und das Ergebnis stellt den Endwert des SA dar.
- (Beispiel s.u.)
+DEFINIERT IN
+============
- Der Wert eines Modifikators muss zwischen -1000 und 1000 liegen. Der
- Gesamtwert eines SA kann 10 nicht unter- und 1000 nicht ueberschreiten.
+ /std/living/skill_attributes.c
- Falle <value> eine Closure ist, wird diese Closure jedesmal
- ausgefuehrt, wenn das entsprechende SA abgefragt wird. Der
- Rueckgabewert dieser Closure stellt dann den Wert des Modifikators
- dar. Auch dieser muss zwischen -1000 und 1000 liegen. Gibt die
- Closure keinen int zurueck, wird der Modifikator geloescht.
- Gueltige Skill-Attribute sind momentan:
- * SA_QUALITY: Allgemeine Qualitaet: wirkt sich auf alle anderen
- Attribute auch aus (multplikativ auf Basis 100)
- * SA_DAMAGE: Schaden, den das Lebewesen macht
- * SA_SPEED: Geschwindigkeit des Lebewesens (zB Angriffe/Runde)
- * SA_DURATION: Spell-/Skilldauer
- * SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
- * SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
- P_NOMAGIC durchzukriegen.
- * SA_RANGE: Reichweite des Lebewesens (eher unbenutzt)
- * SA_EXTENSION: "Ausdehnung" bei Gruppen-/Flaechenspells: FindGroupN/P
+ARGUMENTE
+=========
-RUECKGABEWERT:
- SA_MOD_OK wenn der Modifikator gesetzt wurde
- SA_TOO_MANY_MODS wenn die max. Anzahl an Mods schon erreicht ist.
- SA_MOD_TOO_SMALL wenn der Modifikator zu klein ist
- SA_MOD_TOO_BIG wenn der Modifikator zu gross ist
- SA_MOD_INVALID_ATTR wenn das gewuenschte SA gar nicht existiert
- SA_MOD_INVALID_OBJECT wenn das setzende Objekt ungueltig ist
- SA_MOD_INVALID_VALUE wenn der Modifikator ungueltig ist
- Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt
- es sich, auf == SA_MOD_OK zu pruefen.
+ <atrname> string
+ Name des zu veraendernden Attributes
+ (Definiert in /sys/living/skill_attributes.h)
-BEMERKUNGEN:
- Nachdem ein Objekt, welches Modifikatoren setzte, zerstoert wurde,
- werden die Modifikatoren spaetestens ungueltig, sobald in dem
- manipulierten Lebewesen erneut ModifySkillAttribute() gerufen wird!
- Bei Closures ist der Mod sofort weg.
+ <value> int oder closure
+ Wert des Modifikators
+ oder
+ eine Closure, welche bei Abfrage des betreffenden SAs
+ abgefragt um den Modifikator zu bestimmen.
-BEISPIELE:
- // sei PL ein Spieler, den mein NPC schwaechen will:
- PL->ModifySkillAttribute(SA_QUALITY, -75, 13);
- // Fuer 13s wird SA_QUALITY um 75 reduziert. Dies wirkt sich auf alle
- // anderen SAs aus! (s. drittes Beispiel)
+ <duration> int
+ Dauer in Sekunden
- // sei PL ein Lebewesen, welchem ich fuer 11s 2 Schlaege pro Kampfrunde
- // zusaetzlich geben moechte:
- PL->ModifySkillAttribute(SA_SPEED, 200, 11);
- // wenn keine weiteres Modifikatoren wirken, hat PL jetzt 3 Schlaege
- // pro Kampfrunde (Basiswert 100 + 200 == 300 => 3).
- Angenommen, ein Lebewesen hat einen Basiswert von 130 auf SA_SPEED und
- 100 auf SA_QUALITY (P_SKILL_ATTRIBUTE_OFFSETS) und nun 3 Modifikatoren
- gesetzt: SA_SPEED +100, SA_SPEED -30 und SA_QUALITY von -10:
- Zunaechst wird SA_QUALITY bestimmt: 100 - 10 = 90 => 0.9
- Anschliessend wird SA_SPEED bestimmt: 130 + 100 - 30 = 200 => 2
- Nun wird SA_SPEED noch mit SA_QUALITY multipliziert: 2 * 0.9 = 1.8
- Das Lebewesen hat nun also im Endeffekt 1.8 Schlaege pro Kampfrunde.
+BESCHREIBUNG
+============
-
-SIEHE AUCH:
- Skills Lernen: LearnSkill, ModifySkill, LimitAbility
- * Nutzung: UseSpell, UseSkill
- * Abfragen: QuerySkill
- * Modifikation: QuerySkillAttribute,
- QuerySkillAttributeModifier, RemoveSkillAttributeModifier
- * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
- * sonstig: spruchermuedung, skill_info_liste
- * Properties: P_NEWSKILLS
+ Aendert temporaer, d.h. fuer eine bestimmte Zeit, ein Skill-Attribut
+ eines Lebewesen, indem ein Modifikator hinzugefuegt wird.
+
+
+
+ Der Standardwert eines SA wird von P_SKILL_ATTRIBUTE_OFFSETS festgelegt
+ oder ist 100, wenn besagte Property leer ist.
+ Alle Modifikatoren (negativ wie positiv) werden addiert und bilden
+ zusammen mit dem Standardwert eine Gesamtsumme.
+ Bei allen SAs ausser SA_QUALITY wird diese Gesamtsumme noch mit
+ SA_QUALITY (welches sich damit auf alle anderen Skill-Attribute
+ auswirkt) multipliziert und das Ergebnis stellt den Endwert des SA dar.
+ (Beispiel s.u.)
+
+ Der Wert eines Modifikators muss zwischen -1000 und 1000 liegen. Der
+ Gesamtwert eines SA kann 10 nicht unter- und 1000 nicht ueberschreiten.
+
+ Falle <value> eine Closure ist, wird diese Closure jedesmal
+ ausgefuehrt, wenn das entsprechende SA abgefragt wird. Der
+ Rueckgabewert dieser Closure stellt dann den Wert des Modifikators
+ dar. Auch dieser muss zwischen -1000 und 1000 liegen. Gibt die
+ Closure keinen int zurueck, wird der Modifikator geloescht.
+
+ Gueltige Skill-Attribute sind momentan:
+ * SA_QUALITY: Allgemeine Qualitaet: wirkt sich auf alle anderen
+ Attribute auch aus (multplikativ auf Basis 100)
+ * SA_DAMAGE: Schaden, den das Lebewesen macht
+ * SA_SPEED: Geschwindigkeit des Lebewesens (zB Angriffe/Runde)
+ * SA_DURATION: Spell-/Skilldauer
+ * SA_ENEMY_SAVE: identisch zu SA_SPELL_PENETRATION (OBSOLET!)
+ * SA_SPELL_PENETRATION: Chance des _Casters_, einen Spell durch ein
+ P_NOMAGIC durchzukriegen.
+ * SA_RANGE: Reichweite des Lebewesens (eher unbenutzt)
+ * SA_EXTENSION: "Ausdehnung" bei Gruppen-/Flaechenspells: FindGroupN/P
+
+
+RUECKGABEWERT
+=============
+
+ SA_MOD_OK wenn der Modifikator gesetzt wurde
+ SA_TOO_MANY_MODS wenn die max. Anzahl an Mods schon erreicht ist.
+ SA_MOD_TOO_SMALL wenn der Modifikator zu klein ist
+ SA_MOD_TOO_BIG wenn der Modifikator zu gross ist
+ SA_MOD_INVALID_ATTR wenn das gewuenschte SA gar nicht existiert
+ SA_MOD_INVALID_OBJECT wenn das setzende Objekt ungueltig ist
+ SA_MOD_INVALID_VALUE wenn der Modifikator ungueltig ist
+ Wenn man nur wissen will, ob die Operation erfolgreich war, empfiehlt
+ es sich, auf == SA_MOD_OK zu pruefen.
+
+
+BEMERKUNGEN
+===========
+
+ Nachdem ein Objekt, welches Modifikatoren setzte, zerstoert wurde,
+ werden die Modifikatoren spaetestens ungueltig, sobald in dem
+ manipulierten Lebewesen erneut ModifySkillAttribute() gerufen wird!
+ Bei Closures ist der Mod sofort weg.
+
+
+BEISPIELE
+=========
+
+ // sei PL ein Spieler, den mein NPC schwaechen will:
+ PL->ModifySkillAttribute(SA_QUALITY, -75, 13);
+ // Fuer 13s wird SA_QUALITY um 75 reduziert. Dies wirkt sich auf alle
+ // anderen SAs aus! (s. drittes Beispiel)
+
+ // sei PL ein Lebewesen, welchem ich fuer 11s 2 Schlaege pro Kampfrunde
+ // zusaetzlich geben moechte:
+ PL->ModifySkillAttribute(SA_SPEED, 200, 11);
+ // wenn keine weiteres Modifikatoren wirken, hat PL jetzt 3 Schlaege
+ // pro Kampfrunde (Basiswert 100 + 200 == 300 => 3).
+
+ Angenommen, ein Lebewesen hat einen Basiswert von 130 auf SA_SPEED und
+ 100 auf SA_QUALITY (P_SKILL_ATTRIBUTE_OFFSETS) und nun 3 Modifikatoren
+ gesetzt: SA_SPEED +100, SA_SPEED -30 und SA_QUALITY von -10:
+ Zunaechst wird SA_QUALITY bestimmt: 100 - 10 = 90 => 0.9
+ Anschliessend wird SA_SPEED bestimmt: 130 + 100 - 30 = 200 => 2
+ Nun wird SA_SPEED noch mit SA_QUALITY multipliziert: 2 * 0.9 = 1.8
+ Das Lebewesen hat nun also im Endeffekt 1.8 Schlaege pro Kampfrunde.
+
+
+SIEHE AUCH
+==========
+
+ Skills Lernen: LearnSkill, ModifySkill, LimitAbility
+ * Nutzung: UseSpell, UseSkill
+ * Abfragen: QuerySkill
+ * Modifikation: QuerySkillAttribute,
+ QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+ * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+ * sonstig: spruchermuedung, skill_info_liste
+ * Properties: P_NEWSKILLS
5. Okt 2011 Gloinson