Beispiel um sauberes moven ergaenzt
Change-Id: I7031e54908fd5271ecec194c38aa1fdce04aa054
diff --git a/doc/beispiele/AddCmd/busch.c b/doc/beispiele/AddCmd/busch.c
index da3c5b3..a28eb41 100644
--- a/doc/beispiele/AddCmd/busch.c
+++ b/doc/beispiele/AddCmd/busch.c
@@ -30,29 +30,44 @@
// "pfluecke beeren von busch" etc.
AddCmd("pfluecke|ernte&fruechte|beeren&@ID","cmd_pfluecken",
"Was willst Du denn @verben?|Wo willst Du denn die Beeren @verben?");
+ // ^- Fehler fuer 'fruechte' ^- Fehler fuer '@ID'
// suchen gibt nur eine Meldung aus. Dafuer braucht man kuenftig keine
// Funktionen mehr.
AddCmd("such|suche|durchsuch|durchsuche&@ID&\nimpossible",0,
- "Wo willst Du @VERBen?|Du durchsuchst das Gebuesch, findest aber nichts.^"
- "@WER1 durchsucht ein Gebuesch, findet aber nichts.");
+ "Wo willst Du @VERBen?|Du durchsuchst das Gebuesch, findest aber nichts."
+ // ^- Fehler fuer '@ID' ^- Fehler fuer unerfuellbare Regel '\nimpossible'
+ "^@WER1 durchsucht ein Gebuesch, findet aber nichts.");
+ // ^- return 1-Flag, mit Raummeldung
// Graben geht eh nicht. Daher nur Fehlermeldungen.
// Das ^ sagt, dass hier ein return1 zurueckgegeben wird. Es gibt aber keine
// Raummeldung.
AddCmd("grab|grabe&@ID&aus@\nimpossible",0,
"Was willst Du graben?|Du willst das Gebuesch ausgraben?|"
+ // ^- Fehler fuer '@ID' ^- Fehler fuer 'aus'
"Die Wurzeln scheinen tief zu rechen. Das wird nichts.^");
+ // ^- Fehler fuer unerfuellbare Regel '\nimpossible' ^- return 1-Flag
+ // keine Raum
}
int cmd_pfluecken(string arg, mixed *param)
{
- object obj;
- obj=clone_object(__DIR__"obst");
- write("Verwundert pflueckst Du "+(obj->name())+" vom Busch. Komisch.\n");
+ object obj = clone_object(__DIR__"obst");
+ string msg = "Verwundert pflueckst Du "+(obj->name())+" vom Busch. "
+ "Komisch.";
- // Das hier ist ein Beispiel fuer AddCmd, daher mach ich mir nich
- // die Muehe das richtig zu machen. Is eh nur fuer Magier!
- obj->move(this_player(),M_GET|M_NOCHECK);
+ this_player()->ReceiveMsg(msg, MT_NOTIFICATION);
+ if(this_player()->pick(obj))
return 1;
+
+ if(obj->move(environment(), M_PUT) == MOVE_OK)
+ this_player()->ReceiveMsg(obj->Name(WER)+" faellt zu Boden.",
+ MT_LOOK|MT_LISTEN);
+ else {
+ this_player()->ReceiveMsg(obj->Name(WER, 1)+" zerplatzt.",
+ MT_LOOK|MT_LISTEN);
+ obj->remove(1);
+ }
+ return 1;
}