blob: 3feee6a906b331f44763cca7a99223d8d59fe9df [file] [log] [blame]
notstrom0d5c1252019-08-01 15:50:00 +02001inherit "/std/room";
2
3#include __PATH__(1)"defs.h"
4
notstrom0d5c1252019-08-01 15:50:00 +02005
6protected void create() {
7 ::create();
8
9 SetProp(P_INT_SHORT, "Eine schummrige Huette");
10 SetProp(P_INT_LONG, BSLF(
11 "Du kannst hier im Raum Krempel hinlegen, der wird bei Raumreset in die "
12 "Kiste verschoben. Das kannst Du mit\n"
13 " xcall $h->reset()\n"
14 "auch provozieren."));
15
16 SetProp(P_LIGHT, 1);
17 SetProp(P_INDOORS, 1);
18 SetProp(P_LIGHT_TYPE, LT_GLOWING);
19
20 AddItem(__PATH__(1)"obj/kiste", REFRESH_REMOVE);
21}
22
23void reset() {
24 ::reset();
25
26 object kiste = present_clone(__PATH__(1)"obj/kiste");
notstrom383051f2019-08-01 16:02:36 +020027 // Sollte nicht passieren, da in :reset() bereits AddItem() gerufen wurde:
28 if (!objectp(kiste)) return;
notstrom0d5c1252019-08-01 15:50:00 +020029
notstrom383051f2019-08-01 16:02:36 +020030 /* Doku zu filter() bitte in "man filter" nachlesen. Wir benutzen hier eine
31 Inline-Closure, so etwas sollte ja aus den bisherigen Beispielen wohl-
32 bekannt sein: */
notstrom23235462019-08-01 15:51:11 +020033 object *zeugs = filter(all_inventory(), function int(object o) {
34 return (!living(o)); });
notstromf20ac892019-08-01 15:52:47 +020035 if (pointerp(zeugs) && sizeof(zeugs)) {
notstrom0d5c1252019-08-01 15:50:00 +020036 tell_room(TO, BSLF(
37 "Der Raum gurgelt, die Kiste ruelpst."));
notstrom383051f2019-08-01 16:02:36 +020038 /*
39 Wie in "man call_other" erlaeutert, muss man nicht durch ein Objekt-
40 Array durchiterieren, wenn man eine Member-Function fuer jedes einzelne
41 Objekt aufrufen moechte, sondern kann die folgende Syntax verwenden:
42 */
notstrom0d5c1252019-08-01 15:50:00 +020043 zeugs->move(kiste, M_PUT);
44 } else {
45 tell_room(TO, BSLF(
46 "Die Kiste geht diesmal leer aus."));
47 }
48}