Gesammelte Doku-Update unbekannter Herkunft
Mal wieder ein Sammel-Commit von Dingen, die niemand
committet hat.
Change-Id: I6564091f0f3c0a708247c85973bfcf5c0e23f1da
diff --git a/doc/sphinx/lfun/AddCmd.rst b/doc/sphinx/lfun/AddCmd.rst
index ba298eb..001778f 100644
--- a/doc/sphinx/lfun/AddCmd.rst
+++ b/doc/sphinx/lfun/AddCmd.rst
@@ -1,25 +1,19 @@
AddCmd()
========
-AddCmd(L)
----------
-::
-
FUNKTION
--------
-::
varargs void AddCmd(mixed cmd, mixed func, [mixed flag, [mixed id]]);
DEFINIERT IN
------------
-::
+
/std/thing/commands.c
ARGUMENTE
---------
-::
cmd
Verben, auf die reagiert werden soll
@@ -41,14 +35,14 @@
BESCHREIBUNG
------------
-::
Wenn ein Spieler im Einflussbereich des Objektes das Verb benutzt,
wird die entsprechende Funktion im Objekt aufgerufen:
- - die Verben sollten Imperative sein
- - die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
+
+ * die Verben sollten Imperative sein
+ * die Funktion muss 1 fuer ERFOLG (und FPs!) und 0 sonst zurueckgeben
(sonst werden evtl. weitere Funktionen mit diesem Kommandoverb gerufen)
- - innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
+ * innerhalb der Funktionen koennen Fehlermeldungen fuer den totalen
Misserfolg des Kommandos mit notify_fail gesetzt werden
(anstatt "Wie bitte?")
@@ -57,140 +51,153 @@
Kommandos hinzugefuegt werden.
AddCmd kann das Leben einfacher machen mit:
+
### REGELN: ###
- Bei komplexen Syntaxen kann ein String angegeben werden, der die
- _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
- zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
- Teil eigener Auswertung ersparen.
+
+ Bei komplexen Syntaxen kann ein String angegeben werden, der die
+ _notwendigen_ (nicht die erlaubten!) Schluesselworte und deren
+ zulaessige Synonyme beschreibt. Damit kann man sich einen grossen
+ Teil eigener Auswertung ersparen.
- Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
- Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
- die zugehoerige Funktion ausgefuehrt.
+ Nur wenn in richtiger Reihenfolge aus JEDER der durch & getrennten
+ Synonymgruppen ein Wort im Spielerkommando enthalten ist, wird
+ die zugehoerige Funktion ausgefuehrt.
- Trenner sind: | fuer Alternativen
- & fuer Konjunktionen
+ Trenner sind: | fuer Alternativen
+ & fuer Konjunktionen
- Beispiel:
- "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
- "herz|herzchen&rinde|baumrinde"
- wuerde z.B. durch
- "ritz mit dem Messer ein Herz in die Rinde des Baumes"
- "schnitz mit Messer Herzchen Baumrinde"
- "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
- erfuellt werden.
+.. code-block:: pike
- Spezialregelteile sind:
- - @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
- - @ID: entspricht der ID des kommandobesitzenden Objektes
- (wo die Kommandomethode definiert ist, ist noch unwichtig)
- - @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
- entsprechend den Filteroptionen fuer find_obs()
- ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
- sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
- Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
- interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
- Teil des Objekt-ID-Strings.
- Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
- 5 fuer @PUT... ("kristall 2 in beutel 3")
+ Beispiel:
+ "ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+ "herz|herzchen&rinde|baumrinde"
+ wuerde z.B. durch
+ "ritz mit dem Messer ein Herz in die Rinde des Baumes"
+ "schnitz mit Messer Herzchen Baumrinde"
+ "schnitz mit meinem Messer Herzchen in die harte Baumrinde"
+ erfuellt werden.
+
+
+ Spezialregelteile sind:
+
+ * @PRESENT: entspricht einem Objekt in Inv oder Env des Spielers
+ * @ID: entspricht der ID des kommandobesitzenden Objektes
+ (wo die Kommandomethode definiert ist, ist noch unwichtig)
+ * @PUT_GET_DROP, @PUT_GET_TAKE, @PUT_GET_NONE:
+ entsprechend den Filteroptionen fuer find_obs()
+ ACHTUNG: Zusaetzliche Ziffern in Verbindung mit den @-Spezialregeln
+ sind schlecht. @-Regeln versuchen gierig, Objekte exakt im
+ Inventory zu matchen ("objekt 3" anstatt "objekt") und miss-
+ interpretieren daher zB die 4 in "stopf objekt 3 in loch 4" als
+ Teil des Objekt-ID-Strings.
+ Interna: 3 Substrings fuer @PRESENT/@ID ("gruener kristall 2")
+ 5 fuer @PUT... ("kristall 2 in beutel 3")
### FEHLERMELDUNGEN (bei Anwendung von Regeln): ###
- Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
- fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
- angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
- Synonymgruppen angegeben.
+
+ Als dritter Parameter koennen auch Fehlermeldungen fuer jeweils
+ fehlende Synonymgruppen (ausser der ersten - den Kommandoverben)
+ angegeben werden. Sie werden in derselben Reihenfolge (!) wie die
+ Synonymgruppen angegeben.
- Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
- kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
- und Umgebung ausgeben. Siehe dazu AddCmd_bsp.
+ Mit nicht von Spielern erfuellbaren Regeln und ^-Fehlermeldungen
+ kann man auch ohne Ausfuehrung einer Funktion Texte an Spieler
+ und Umgebung ausgeben. Siehe dazu AddCmd_bsp.
- Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
- ^ um
- - die Auswertung (ab dieser Fehlermeldung!) mit
- "return 1;" zu beenden und
- - eine write^say-Meldung zu trennen und
- - (fuer funktionslose AddCmd auch FPs zu vergeben!)
+ Trenner sind: | zum Trennen der einzelnen Fehlermeldungen
+ ^ um
+ - die Auswertung (ab dieser Fehlermeldung!) mit
+ "return 1;" zu beenden und
+ - eine write^say-Meldung zu trennen und
+ - (fuer funktionslose AddCmd auch FPs zu vergeben!)
- Beispielfehlermeldungen fuer obige Regel:
- "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
- "Wohinein willst Du das schnitzen?"
+ Beispielfehlermeldungen fuer obige Regel:
+ "Womit willst Du schnitzen?|Was willst Du schnitzen?|"
+ "Wohinein willst Du das schnitzen?"
- Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
- werden:
- - @verb (ersetzt durch query_verb() ohne beendendes 'e')
- - @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
- - @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
- - @WE..1 ist immer der aktive Spieler
- - alle folgenden sind die matchenden Parameter der Spielereingabe
- - (x-1)<=Fehlermeldung (da x=1 Spieler und
- (x-1)>Fehlermeldungsobjekt nicht existent)
+ Es koennen in den Fehlermeldungen folgende Platzhalter benutzt
+ werden:
- Ausfuehrungsbeispiel:
- AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
- "herz|herzchen&rinde|baumrinde",#'fun,
- "Willst Du mit etwas @verben?|Womit willst du @verben?|"
- "Was willst du mit dem @WEM3 @verben?|"
- "Wohinein willst Du das @WEN4 schnitzen?");
- 1. "ritze" == "Willst Du mit etwas ritzen?"
- 2. "schnitz mit" == "Womit willst du schnitzen?"
- 3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
- 4. "ritze mit dem messer ein herz" ==
- "Wohinein willst Du das herz schnitzen?"
- 5. "ritze mit dem messer ein herzchen in die baumrinde"
- == Erfolg!
+ * @verb (ersetzt durch query_verb() ohne beendendes 'e')
+ * @VERB (ersetzt durch capitalize(query_verb()) ohne beendendes 'e')
+ * @WERx, @WESSENx, @WEMx, @WENx: siehe alles aus replace_personal()
+ * @WE..1 ist immer der aktive Spieler
+ * alle folgenden sind die matchenden Parameter der Spielereingabe
+ * (x-1)<=Fehlermeldung (da x=1 Spieler und
+ (x-1)>Fehlermeldungsobjekt nicht existent)
+
+ Ausfuehrungsbeispiel:
+ AddCmd("ritz|ritze|schnitz|schnitze&mit&messer|schnitzmesser&"
+ "herz|herzchen&rinde|baumrinde",#'fun,
+ "Willst Du mit etwas @verben?|Womit willst du @verben?|"
+ "Was willst du mit dem @WEM3 @verben?|"
+ "Wohinein willst Du das @WEN4 schnitzen?");
+ 1. "ritze" == "Willst Du mit etwas ritzen?"
+ 2. "schnitz mit" == "Womit willst du schnitzen?"
+ 3. "ritz mit messer" == "Was willst du mit dem messer ritzen?"
+ 4. "ritze mit dem messer ein herz" ==
+ "Wohinein willst Du das herz schnitzen?"
+ 5. "ritze mit dem messer ein herzchen in die baumrinde"
+ == Erfolg!
### UNSCHARFER AUSFUEHRUNG: ###
- Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
- ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
- bisher noch nicht behandelt wurde.
- Dieses Verhalten sollte nur beim generellen Abfangen von
- Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
- entsprich add_action("fun","kommando",1).
+
+ Bei unscharfer Ausfuehrung wird die zugehoerige Methode auch dann
+ ausgefuehrt, wenn das verwendete Verb ein Superstring ist und
+ bisher noch nicht behandelt wurde.
+ Dieses Verhalten sollte nur beim generellen Abfangen von
+ Befehlsgruppen benutzt werden und ist ansonsten veraltet. Es
+ entsprich add_action("fun","kommando",1).
- Beispiel:
- 1. AddCmd("klett","fun",1);
- 2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");
+ Beispiel:
+ 1. AddCmd("klett","fun",1);
+ 2. AddCmd("kletter|klettere&hoch",#'fun2,"Wohin klettern?");
- a) "klett"
- b) "kletter"
- c) "klettere hoch"
+ a) "klett"
+ b) "kletter"
+ c) "klettere hoch"
- Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
- (1 wuerde also immer ausgefuehrt)
- Fehlermeldung bei: 2b ("Wohin klettern?")
+ Ausgefuehrte Funktion bei: 1a, 1b, 1c; 2c
+ (1 wuerde also immer ausgefuehrt)
+ Fehlermeldung bei: 2b ("Wohin klettern?")
BEMERKUNGEN
-----------
-::
- - Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
+ * Methoden der put_and_get (nimm/nehme) sollten so nicht versucht
werden zu ueberschreiben - dazu sind invis Container da
- - benutzt man fuer <function> eine Closure, kann man die Fkt. auch
+ * benutzt man fuer <function> eine Closure, kann man die Fkt. auch
protected oder private deklarieren _und_ sie kann in einem
anderen Objekt sein
- - bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
+ * bei Regeln wird an die ggf. gerufene Methode als zweiter Parameter
ein Array der erfuellenden Eingabeteile uebergeben:
"steck&@PRESENT&in&loch" bei Erfuellung -> ({<Objekt>,"in","loch})
- - bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
- Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
- - juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
+
+ ** bei Nutzung von @PUT_GET_XXX koennen die Parameter wiederum
+ Arrays sein ("jede Hose" -> mehrere gueltige Objekte)
+ * juengere AddCmd ueberschreiben aeltere, bzw. werden vor diesen
ausgewertet
- - @PUT_GET_XXX kosten sehr viel Auswertungszeit
+ * @PUT_GET_XXX kosten sehr viel Auswertungszeit
BEISPIELE (SIEHE AUCH ADDCMD_BSP):
+----------------------------------
+
+.. code-block:: pike
+
// SIMPEL: ganz simpel, beinahe wie add_action
AddCmd("befiehl","action_befehlen");
...
int action_befehlen(string str) {
- if(!str || !strlen(str))
- // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
- notify_fail("Was willst du befehlen?!\n");
- else {
- write("Du befiehlst \""+str+"\", und alle folgen!\n");
- say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
- return 1; // ERFOLG - Abbruch der Kommandoauswertung
- }
- return 0; // MISSERFOLG - Fehlermeldung oben gesetzt
+ if(!str || !strlen(str))
+ // Fehlermeldung, falls gar keine Funktion 1 dafuer zurueckgibt
+ notify_fail("Was willst du befehlen?!\n");
+ else {
+ write("Du befiehlst \""+str+"\", und alle folgen!\n");
+ say(TP->Name(WER)+" befiehlt \""+str+"\", und du folgst!\n");
+ return 1; // ERFOLG - Abbruch der Kommandoauswertung
+ }
+ return 0; // MISSERFOLG - Fehlermeldung oben gesetzt
}
// SIMPEL .. weitere Beispiele
@@ -225,9 +232,9 @@
"Du springst vom Baum und kommst hart auf.^"
"@WER1 springt vom Baum und kommt hart auf.");
+
SIEHE AUCH
----------
-::
AddCmd_bsp, RemoveCmd(L), init(E)
Fehlermeldungen: notify_fail(E), _notify_fail(E)
diff --git a/doc/sphinx/lfun/DefendOther.rst b/doc/sphinx/lfun/DefendOther.rst
index 855d2b8..e18c9c7 100644
--- a/doc/sphinx/lfun/DefendOther.rst
+++ b/doc/sphinx/lfun/DefendOther.rst
@@ -5,7 +5,8 @@
--------
::
- mixed DefendOther(int dam,mixed dam_type,mixed spell,object enemy);
+ public <int|string*|mapping>* DefendOther(int dam, string|string* dam_type,
+ int|mapping spell, object enemy)
DEFINIERT IN
------------