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