notstrom | 0d5c125 | 2019-08-01 15:50:00 +0200 | [diff] [blame] | 1 | inherit "/std/room"; |
| 2 | |
| 3 | #include __PATH__(1)"defs.h" |
| 4 | |
notstrom | 0d5c125 | 2019-08-01 15:50:00 +0200 | [diff] [blame] | 5 | |
| 6 | protected 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 | |
| 23 | void reset() { |
| 24 | ::reset(); |
| 25 | |
| 26 | object kiste = present_clone(__PATH__(1)"obj/kiste"); |
notstrom | 383051f | 2019-08-01 16:02:36 +0200 | [diff] [blame^] | 27 | // Sollte nicht passieren, da in :reset() bereits AddItem() gerufen wurde: |
| 28 | if (!objectp(kiste)) return; |
notstrom | 0d5c125 | 2019-08-01 15:50:00 +0200 | [diff] [blame] | 29 | |
notstrom | 383051f | 2019-08-01 16:02:36 +0200 | [diff] [blame^] | 30 | /* 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: */ |
notstrom | 2323546 | 2019-08-01 15:51:11 +0200 | [diff] [blame] | 33 | object *zeugs = filter(all_inventory(), function int(object o) { |
| 34 | return (!living(o)); }); |
notstrom | f20ac89 | 2019-08-01 15:52:47 +0200 | [diff] [blame] | 35 | if (pointerp(zeugs) && sizeof(zeugs)) { |
notstrom | 0d5c125 | 2019-08-01 15:50:00 +0200 | [diff] [blame] | 36 | tell_room(TO, BSLF( |
| 37 | "Der Raum gurgelt, die Kiste ruelpst.")); |
notstrom | 383051f | 2019-08-01 16:02:36 +0200 | [diff] [blame^] | 38 | /* |
| 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 | */ |
notstrom | 0d5c125 | 2019-08-01 15:50:00 +0200 | [diff] [blame] | 43 | zeugs->move(kiste, M_PUT); |
| 44 | } else { |
| 45 | tell_room(TO, BSLF( |
| 46 | "Die Kiste geht diesmal leer aus.")); |
| 47 | } |
| 48 | } |