environment

BEMERKUNGEN

Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man sollte daher ueberpruefen, ob ein environment() existiert, wenn man darin oder darauf eine Funktion aufrufen will.

BEISPIELE

// In der Variable "raum" steht der Raum, in dem sich der Spieler
// derzeit aufhaelt - das kann auch 0 sein!

raum = environment(this_player());

// Dieses Objekt hat noch kein environment, da es eben erst geclont
// wurde. Ergo steht in env eine 0.
obj = clone_object("/std/thing");
env = environment(obj);

// alle Methoden die auf Environment arbeiten, sollten das vorher
// pruefen - insbesondere tell_room()
if(this_player() && environment(this_player()) &&
   objectp(o=present("schild",environment(this_player()))) {

 write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n");
 tell_room(environment(this_player()), break_string(
       this_player()->Name(WER)+" pappt einen Aufkleber auf "
       +o->name(WEN)+".",78), ({this_player()}));
}

// wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es
// komplexer (man kann das natuerlich noch weiter schachteln oder
// ueber all_environment() versuchen zu loesen
if(environment()) {
 object ee;
 ee=environment(environment());
 if(living(environment()))
 {
   tell_object(environment(),Name(WER)+" zerfaellt.\n");
   if(ee)
     tell_room(ee, environment()->Name(WESSEN)
          +" "+name(RAW)+" zerfaellt.\n", ({environment()}));
 }
 else if(ee && living(ee))
 {
   if(environment()->QueryProp(P_TRANSPARENT))
     tell_object(ee, Name(WER)+" zerfaellt in Deine"
         + (environment()->QueryProp(P_PLURAL) ? "n" :
             (environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))
         + environment()->name(RAW)+".\n");
 }
 else
   tell_room(environment(),Name(WER)+" zerfaellt.\n");
}