blob: 04cf5c15facfcf60832bff7f2ae630b095b7f2ca [file] [log] [blame]
Zesstrabbc000b2020-01-23 21:34:06 +01001environment
2===========
3
4BEMERKUNGEN
5-----------
6
7 Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man sollte
8 daher ueberpruefen, ob ein environment() existiert, wenn man darin oder
9 darauf eine Funktion aufrufen will.
10
11BEISPIELE
12---------
13
14 .. code-block:: pike
15
16 // In der Variable "raum" steht der Raum, in dem sich der Spieler
17 // derzeit aufhaelt - das kann auch 0 sein!
18
19 raum = environment(this_player());
20
21 // Dieses Objekt hat noch kein environment, da es eben erst geclont
22 // wurde. Ergo steht in env eine 0.
23 obj = clone_object("/std/thing");
24 env = environment(obj);
25
26 // alle Methoden die auf Environment arbeiten, sollten das vorher
27 // pruefen - insbesondere tell_room()
28 if(this_player() && environment(this_player()) &&
29 objectp(o=present("schild",environment(this_player()))) {
30
31 write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n");
32 tell_room(environment(this_player()), break_string(
33 this_player()->Name(WER)+" pappt einen Aufkleber auf "
34 +o->name(WEN)+".",78), ({this_player()}));
35 }
36
37 // wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es
38 // komplexer (man kann das natuerlich noch weiter schachteln oder
39 // ueber all_environment() versuchen zu loesen
40 if(environment()) {
41 object ee;
42 ee=environment(environment());
43 if(living(environment()))
44 {
45 tell_object(environment(),Name(WER)+" zerfaellt.\n");
46 if(ee)
47 tell_room(ee, environment()->Name(WESSEN)
48 +" "+name(RAW)+" zerfaellt.\n", ({environment()}));
49 }
50 else if(ee && living(ee))
51 {
52 if(environment()->QueryProp(P_TRANSPARENT))
53 tell_object(ee, Name(WER)+" zerfaellt in Deine"
54 + (environment()->QueryProp(P_PLURAL) ? "n" :
55 (environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))
56 + environment()->name(RAW)+".\n");
57 }
58 else
59 tell_room(environment(),Name(WER)+" zerfaellt.\n");
60 }
61