Gesammelte Doku-Updates
... die niemand comittet hat...
Change-Id: I60d948e72befe303862e25d63b88cfda72e6f0d7
diff --git a/doc/sphinx/lfun/AddInfo.rst b/doc/sphinx/lfun/AddInfo.rst
index 076dfd8..5db8bef 100644
--- a/doc/sphinx/lfun/AddInfo.rst
+++ b/doc/sphinx/lfun/AddInfo.rst
@@ -18,12 +18,12 @@
string/string* frage
Schluesseltext(e) auf die Informationen gegeben werden sollen.
string/closure meldung
- Information, die gegeben werden soll/Closure
- Bekommt nichts uebergeben.
+ Information, die gegeben werden soll; wenn 'meldung' eine Closure
+ ist, wird der gerufenen Funktion nichts uebergeben.
string indent
Text, der sich bei mehrzeiligen Meldungen wiederholen soll.
int/string silent
- Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
+ Ist silent gesetzt, so erfolgt Antwort nur an Fragenden.
string/closure casebased
Closure mit Returnwert string oder int.
Bekommt nichts uebergeben.
@@ -54,6 +54,7 @@
Bei 'silent'==1 erfolgt keine Textausgabe der Antwortmeldung im Raum,
ist 'silent' ein String, so wird jener an alle anderen Spieler ausser
dem Fragesteller im Raum ausgegeben.
+ Dem ausgegebenen Text wird der Name des NPCs als Indent vorangestellt.
Casebased:
Die als Closure angegebene Methode entscheidet, ob oder wie der NPC
@@ -99,9 +100,9 @@
"Ich habe zwar kein Geld, aber [...] blablabla [...]",
"sagt: ");
AddInfo("muenzen",
- "fluestert: Du willst Geld?",
+ "fluestert: Du willst Geld?\n",
0,
- "fluestert @WEM1 etwas zu.");
+ "fluestert @WEM1 etwas zu.\n");
// "frage monster nach geld": alle im Raum hoeren
// Das Monster sagt: Ich habe zwar kein Geld, aber [...]
@@ -145,7 +146,7 @@
AddInfo(({"keks","kekse"}),
#'query_kekse," // ein Verweis auf die Funktion
- sagt: ",
+ "sagt: ",
0, // nicht silent :)
#'case_fighting); // noch ein Funktionsverweis
@@ -184,50 +185,58 @@
protected string question_gold() {
// wieviel Kohle hat der Spieler
int money = this_player()->QueryMoney();
- string* y = map(deep_inventory(this_player()),
- function string(object o) {
- if(o->QueryMaterial(MAT_GOLD)>0 &&
- strstr(object_name(o),"/items/money")<0 &&
- o->QueryProp(P_NAME))
- return o->name(WER,1);
- })-({0});
+ string* valuables = ({});
+
+ // Wertgegenstaende suchen, d.h. Material kein Gold,
+ // Objekt kein Geld, und auch nicht unsichtbar
+ foreach(object o : deep_inventory(this_player()))
+ {
+ if ( o->QueryMaterial(MAT_GOLD)>0 &&
+ load_name(o) != "/items/money" &&
+ o->QueryProp(P_SHORT) &&
+ !o->QueryProp(P_INVIS) )
+ {
+ valuables += ({o->Name(WER,1)});
+ }
+ }
// das geht an alle anderen im Raum, silent bietet sich hier
// nicht an, weil es mehrere Moeglichkeiten gibt
send_room(environment(),
- (Name(WER,1)+" murmelt "+
- this_player()->name(WEM,1)+
- " etwas zu"+
- ((money || sizeof(y))?
- " und glotzt "+this_player()->QueryPronoun(WEN)+" gierig an.":
- ".")),
+ sprintf("%s murmelt %s etwas zu%s.",
+ Name(WER,1),
+ this_player()->name(WEM,1),
+ (money || sizeof(valuables))?
+ " und glotzt "+this_player()->QueryPronoun(WEN)+
+ " gierig an" : ""),
MT_LOOK|MT_LISTEN,
MA_EMOTE, 0, ({this_player()}));
- // und hier die Antwort an den Spieler selbst, mit vielen
- // Verzweigungen fuer dessen Besitztum
- return("Ich hab kein Gold bei mir."+
- ((money || sizeof(y))?
- " Aber du "+
- (money?
- "hast ja jede Menge Kohle bei dir, so etwa "+money+
- " Muenzen."+
- (sizeof(y)?
- " Ausserdem "+
- ((sizeof(y)==1)?"ist":"sind")+
- " auch noch "+CountUp(y)+" aus Gold.":
- ""):
- (sizeof(y)?"hast ja ein paar Wertsachen dabei: "+
- CountUp(y)+
- (sizeof(y)==1?" ist":" sind")+
- " aus Gold.":"")):
- ""));
+ // Und hier die Antwort an den Spieler selbst, mit diversen
+ // Verzweigungen fuer dessen Besitztum.
+ string reply = "Ich hab kein Gold bei mir.";
+ string verb = sizeof(valuables) ? "ist" : "sind";
+ if ( money )
+ {
+ reply += " Aber Du hast ja jede Menge Kohle bei dir, so etwa "+
+ money+" Muenzen.";
+ if ( sizeof(valuables) )
+ reply += sprintf(" Ausserdem %s auch noch %s aus Gold.",
+ verb, CountUp(valuables));
+ }
+ else if ( sizeof(valuables) )
+ {
+ reply += sprintf(
+ " Aber Du hast ja ein paar Wertsachen dabei: %s %s aus Gold.",
+ CountUp(valuables), verb);
+ }
+ return reply;
}
// "frage monster nach gold"
// - der Fragesteller hoert zB:
- // Das Monster murmelt: Ich hab kein Gold bei mir. Aber du hast ja
- // Das Monster murmelt: jede Menge Kohle bei dir, so etwas <number>
+ // Das Monster murmelt: Ich hab kein Gold bei mir. Aber Du hast ja
+ // Das Monster murmelt: jede Menge Kohle bei Dir, so etwa <number>
// Das Monster murmelt: Muenzen. Ausserdem ist/sind noch <object1>
// Das Monster murmelt: und <object2> aus Gold."
// - die Umstehenden hoeren: